/* Theme variables (light + dark). We toggle by setting data-theme on <html> */
:root{--bg:#0b0b0d;--surface:#111214;--muted:#9aa0a6;--accent:#7dd3fc;--back-start: rgba(0,0,0,0.12);--back-end: rgba(255,255,255,0.02)}
html[data-theme="light"]{--bg:#f6f7f9;--surface:#ffffff;--muted:#485059;--accent:#0ea5e9;--back-start: rgba(255,255,255,0.12);--back-end: rgba(0,0,0,0.02)}
html[data-theme="dark"]{--bg:#0b0b0d;--surface:#111214;--muted:#9aa0a6;--accent:#7dd3fc;--back-start: rgba(0,0,0,0.12);--back-end: rgba(255,255,255,0.02)}
html,body{height:100%}
body{
  background: radial-gradient(1200px 600px at 10% 10%, rgba(255,255,255,0.02), transparent),
              linear-gradient(180deg, #060607 0%, var(--bg) 100%);
  color:var(--muted);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
}
/* In light theme use a solid background (no gradients) for a clean tan look */
html[data-theme="light"] body{background: var(--bg)}

/* Profile glossy twinkle */
.profile-wrap{position:relative;display:inline-block;z-index:0}
.profile-pic{border-radius:9999px;overflow:hidden;display:block}
/* purple pulsing glow around profile picture */
.profile-wrap::after{
  /* larger, pinker purple glow sitting outside (behind) the profile picture */
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  /* increase radius so glow extends further out */
  width: calc(100% + 96px);
  height: calc(100% + 96px);
  transform: translate(-50%, -50%);
  border-radius: 50%;
  pointer-events: none;
  /* pinker purple: #c084fc (192,132,252) and a slightly warmer pink tint */
  background: radial-gradient(circle at 50% 38%, rgba(208,108,255,0.36), rgba(192,132,252,0.18) 28%, rgba(192,132,252,0.08) 50%, transparent 66%);
  filter: blur(18px);
  z-index: -1; /* place behind the profile so it appears outside */
  animation: pulse-glow 3.2s ease-in-out infinite;
}
@keyframes pulse-glow{
  0%{transform:translate(-50%,-50%) scale(0.94);opacity:0.65}
  50%{transform:translate(-50%,-50%) scale(1.12);opacity:1}
  100%{transform:translate(-50%,-50%) scale(0.94);opacity:0.65}
}
@media (prefers-reduced-motion: reduce){
  .profile-wrap::after{animation:none;opacity:0.9}
}

/* Coin flip / glossy effect */
.coin{width:100%;height:100%;display:block;position:relative;perspective:900px}
.coin-inner{width:100%;height:100%;border-radius:9999px;transform-style:preserve-3d;transition:transform 400ms ease;box-shadow:0 6px 18px rgba(2,6,23,0.6);} 
.coin-inner img{width:100%;height:100%;object-fit:cover;border-radius:9999px;display:block;backface-visibility:hidden}
/* backside for subtle thickness effect (uses theme-aware vars) */
.coin-inner .back{position:absolute;inset:0;border-radius:9999px;background:linear-gradient(180deg,var(--back-start, rgba(0,0,0,0.12)),var(--back-end, rgba(255,255,255,0.02)));transform:rotateY(180deg);backface-visibility:hidden}
/* spinning animation: fast -> slow -> stop over 8s */
.coin-inner.spin-once{animation:spin-decel 8s cubic-bezier(.22,.9,.35,1) forwards}
@keyframes spin-decel{0%{transform:rotateY(0deg)}10%{transform:rotateY(1080deg)}50%{transform:rotateY(2880deg)}90%{transform:rotateY(3240deg)}100%{transform:rotateY(3240deg)}}
/* glossy sheen (static) - removed moving orb animation per user request */
.coin-gloss::after{content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:9999px;mix-blend-mode:screen;pointer-events:none;background:linear-gradient(120deg, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0.04) 30%, rgba(255,255,255,0) 60%);} 
/* paused state */
.coin-inner.paused{animation-play-state:paused;animation:none}
.coin.paused .coin-inner{animation-play-state:paused}
/* respect reduced motion */
@media (prefers-reduced-motion: reduce){.coin-spin, .coin-gloss::after{animation:none}}
.glossy::after{content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:9999px;background: linear-gradient(120deg, rgba(255,255,255,0.06) 0%, rgba(255,255,255,0.02) 30%, rgba(255,255,255,0.0) 60%);mix-blend-mode: screen;pointer-events:none}

/* small twinkle sparkles */
.twinkles{position:absolute;inset:0;pointer-events:none}
.twinkles span{position:absolute;width:8px;height:8px;border-radius:9999px;background:radial-gradient(circle at 30% 30%, #fff, rgba(255,255,255,0.6) 20%, rgba(255,255,255,0.0) 70%);opacity:0;transform:scale(0.6);filter:drop-shadow(0 0 6px rgba(125,211,252,0.7));}
.twinkles span.t1{left:10%;top:20%;animation:tw 3.5s ease-in-out infinite 0s}
.twinkles span.t2{left:70%;top:15%;animation:tw 4.5s ease-in-out infinite 0.6s}
.twinkles span.t3{left:50%;top:70%;animation:tw 5.2s ease-in-out infinite 1.3s}
.twinkles span.t4{left:85%;top:55%;animation:tw 4.2s ease-in-out infinite 0.2s}
.twinkles span.t5{left:25%;top:65%;animation:tw 6.0s ease-in-out infinite 0.9s}
@keyframes tw{0%{opacity:0;transform:scale(0.4)}35%{opacity:1;transform:scale(1.05)}70%{opacity:0.2;transform:scale(0.6)}100%{opacity:0;transform:scale(0.4)}}

/* subtle card glass */
.card{background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));backdrop-filter: blur(6px);border:1px solid rgba(255,255,255,0.03);} 

/* small utilities */
.muted{color:var(--muted)}
/* social buttons (round) */
.social-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:9999px;background:var(--surface);border:1px solid rgba(255,255,255,0.04);cursor:pointer;transition:transform .18s ease,box-shadow .18s ease;position:relative;overflow:visible}
.social-btn svg{width:20px;height:20px;display:block;position:relative;z-index:1}
.social-btn:hover{transform:translateY(-2px)}
/* per-service tweaks */
.social-github{box-shadow:0 10px 30px rgba(24,23,23,0.06), 0 0 0 6px rgba(24,23,23,0.04)}
.social-linkedin{box-shadow:0 10px 30px rgba(10,102,194,0.10), 0 0 0 6px rgba(10,102,194,0.06)}
.social-gmail{box-shadow:0 10px 30px rgba(209,72,54,0.10), 0 0 0 6px rgba(209,72,54,0.04)}
/* inner colored circle behind the svg */
.social-github::before, .social-linkedin::before{content:'';position:absolute;border-radius:9999px;inset:7px;z-index:0}
.social-github::before{background:#181717}
.social-linkedin::before{background:#0A66C2}
.social-gmail::before{background:#D14836}
/* GitHub logo: invert depending on light/dark preference for good contrast */
.social-github svg{fill:currentColor}
/* LinkedIn uses brand blue fill */
.social-linkedin svg{fill:currentColor}
.social-gmail svg{fill:currentColor}
/* Theme-aware overrides: prefer site theme via html[data-theme] but keep system preference fallback */
@media (prefers-color-scheme: light){.social-btn{background:var(--surface);border-color:rgba(0,0,0,0.06)}}
/* Ensure icons are white over their colored inner circles for contrast */
.social-github{color:#ffffff}
.social-linkedin{color:#ffffff}
.social-gmail{color:#ffffff}
html[data-theme="light"] .social-btn{background:var(--surface);border-color:rgba(0,0,0,0.06)}
/* make resume description visible in light theme */
html[data-theme="light"] #resume-section .muted{color:#ffffff}

/* In light theme, make the card surface a warm eggshell for slight contrast */
html[data-theme="light"] .card{
  background: #f6f5f2; /* gentle eggshell */
  border: 1px solid rgba(0,0,0,0.06);
  color: var(--muted);
}

  /* make the topbar match the card eggshell in light theme (desktop sidebar + mobile topbar) */
  html[data-theme="light"] #topbar{
    background: #f6f5f2 !important;
    border-color: rgba(0,0,0,0.06) !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
  }
.social-btn:focus{outline:3px solid rgba(59,130,246,0.18);outline-offset:3px}
.tag-btn{background:transparent;border:1px solid rgba(255,255,255,0.04);color:var(--muted);padding:6px 10px;border-radius:999px;font-size:13px}
.tag-btn.active{background:var(--accent);color:#081018;border-color:transparent}
.project-card{transition:transform .12s ease, box-shadow .12s ease}
.project-card:hover{transform:translateY(-6px);box-shadow:0 12px 30px rgba(2,6,23,0.5)}
/* topbar / left-side sidebar (desktop by default) */
#topbar{background:linear-gradient(180deg, rgba(0,0,0,0.18), rgba(0,0,0,0.06)); display:flex; flex-direction:column; align-items:center; padding:0.75rem 0;}
#topbar .topbar-button{border:1px solid rgba(255,255,255,0.04);background:transparent}
@media (prefers-color-scheme: light){#topbar{background:linear-gradient(180deg, rgba(255,255,255,0.85), rgba(255,255,255,0.95));}}

/* Small screens: convert sidebar back into a top sticky bar for space efficiency */
@media (max-width:640px){
  #topbar{position:sticky; top:0; left:0; right:0; bottom:auto; width:100%; flex-direction:row; justify-content:space-between; padding:0.4rem 0.75rem; border-right:none; border-bottom:1px solid rgba(255,255,255,0.03);}
  /* ensure buttons appear inline on small screens */
  #topbar .w-full{width:auto}
  #topbar .topbar-button{padding:0.35rem 0.6rem}
  /* make the bottom action container lay out horizontally on mobile so buttons sit side-by-side */
  #topbar > div:last-child{flex-direction:row;gap:0.5rem;align-items:center;justify-content:flex-end;padding-right:0.5rem}
  /* ensure individual buttons don't expand full width on small screens */
  #topbar .topbar-button{width:auto}
}

/* ensure main content is centered on small screens (remove sidebar margin) */
@media (max-width:640px){
  main{margin-left:0 !important; margin-right:0 !important; padding-left:0.75rem; padding-right:0.75rem}
}
/* timeline styles for Professional Work Experience */
.timeline{position:relative;padding-left:28px}
.timeline::before{content:'';position:absolute;left:9px;top:0;bottom:0;width:2px;background:linear-gradient(180deg, rgba(255,255,255,0.04), rgba(255,255,255,0.02));border-radius:2px}
.timeline-item{position:relative;margin:18px 0;padding:12px 16px;border-radius:8px;background:linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0.005));border:1px solid rgba(255,255,255,0.03);opacity:1;transform:none}
.timeline-dot{position:absolute;left:-2px;top:18px;width:18px;height:18px;border-radius:50%;background:var(--accent);box-shadow:0 6px 12px rgba(0,0,0,0.45);border:3px solid var(--surface)}
.timeline-item .meta{font-size:12px;color:var(--muted)}
/* animation (slide in from left + fade) */
@keyframes tl-slide{0%{opacity:0;transform:translateX(-18px)}100%{opacity:1;transform:translateX(0)}}
.timeline.play .timeline-item{opacity:0;transform:translateX(-18px)}
.timeline.play .timeline-item[data-i]{animation:tl-slide .52s cubic-bezier(.22,.9,.35,1) forwards;animation-delay:calc(var(--i) * 120ms)}
.timeline.no-anim .timeline-item{opacity:1;transform:none}
/* Film strip styles */
/* larger highlight reel: more room for thumbnails and clearer images */
.film-strip{position:relative;display:flex;gap:1.25rem;overflow-x:auto;padding:1.25rem 0.75rem;align-items:center;-webkit-overflow-scrolling:touch;border-radius:12px}
/* subtle perforation / sprocket look */
.film-strip::before,.film-strip::after{display:none}
.film-strip::-webkit-scrollbar{height:10px}
.film-strip::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.04);border-radius:9999px}
/* larger film-card for better visibility */
.film-card{
  min-width:20rem;
  flex:0 0 auto;
  border-radius:10px;
  padding:0;
  background:transparent;
  border:0;
  color:var(--muted);
  display:flex;
  flex-direction:column;
  gap:8px;
  position:relative; /* allow overlays like featured badge */
}
.film-card .thumb{width:100%;height:140px;border-radius:8px;overflow:hidden}
.film-card .thumb img{width:100%;height:100%;object-fit:cover;display:block}
.film-card .content{padding:8px 6px}
.film-card .title{font-weight:600}
.film-card .tags{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.film-card .tag{font-size:11px;padding:6px 8px;border-radius:999px;background:rgba(255,255,255,0.03);color:var(--muted)}

/* Project hero image: consistent aspect ratio + responsive width
   Use this class on project images (e.g. in `projects/*.html`) so all
   project images display the same size while remaining responsive.
*/
.project-hero{
  width:100%;
  display:block;
  aspect-ratio:16/9; /* keeps consistent height relative to width */
  height:auto; /* allow aspect-ratio to control height */
  object-fit:cover; /* crop to fill the area without distortion */
  border-radius:10px; /* match other rounded elements */
  overflow:hidden;
}

/* work section icon sizing */
.work-icon{width:18px;height:18px;display:inline-block;vertical-align:middle;color:var(--accent)}
@media (max-width:640px){.work-icon{width:16px;height:16px}}

/* link wrapper for linkedin center row */
.linkedin-link{color:var(--accent);text-decoration:none;padding:6px 10px;border-radius:8px;background:transparent;font-weight:600}
.linkedin-link:hover{opacity:0.95}

/* featured modifier simplified */
.featured-badge{position:absolute;right:10px;top:10px;background:linear-gradient(90deg,var(--accent), rgba(125,211,252,0.9));color:#041020;padding:6px 10px;border-radius:999px;font-weight:700;font-size:12px;box-shadow:0 8px 18px rgba(2,6,23,0.35);z-index:12;display:inline-flex;align-items:center;gap:8px}
.featured-badge::before{content:'★';}
.film-card.no-film .thumb{height:140px}
@media (max-width:640px){
  .film-strip{gap:0.75rem;padding:0.75rem}
  /* slightly narrower cards on small screens but images take up more vertical space */
  .film-card{min-width:16rem;padding:0.5rem}
  .film-card .thumb{width:100%;height:180px}
  .film-card .content{padding:6px 8px}
  .film-card.no-film .thumb{height:160px}
}
/* ensure the sentinel is visible for observation but not intrusive */
.sentinel{width:4px;min-width:4px;height:60%;opacity:0}
/* controls for film strip */
.strip-controls{display:none}

/* Portfolio timeline (Canva-like) */
.portfolio{position:relative;display:flex;gap:1.25rem;overflow-x:auto;padding:1.25rem 0 2.5rem;align-items:flex-start;-webkit-overflow-scrolling:touch}
.portfolio::before{content:'';position:absolute;left:16px;right:16px;top:44px;height:6px;background:linear-gradient(90deg,var(--accent), rgba(125,211,252,0.25));border-radius:9999px;opacity:0.9}
.pt-card{min-width:240px;flex:0 0 auto;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.008));border:1px solid rgba(255,255,255,0.03);padding:14px;border-radius:14px;position:relative;box-shadow:0 10px 30px rgba(2,6,23,0.35)}
.pt-card h3{font-size:15px;margin-bottom:6px}
.pt-card p{font-size:13px;color:var(--muted);margin-bottom:8px}
.pt-card .tags{display:flex;gap:8px;flex-wrap:wrap}
.pt-dot{position:absolute;left:50%;transform:translateX(-50%);top:-16px;width:20px;height:20px;border-radius:50%;background:var(--surface);border:4px solid var(--accent);box-shadow:0 6px 18px rgba(2,6,23,0.45)}
.pt-thumb{width:100%;height:96px;border-radius:10px;object-fit:cover;margin-bottom:8px}
@media (max-width:640px){.portfolio{padding-bottom:1rem}.portfolio::before{top:56px}.pt-card{min-width:200px;padding:10px}.pt-thumb{height:72px}}

/* Story section photo: circular crop and responsive placement */
.story-photo-wrapper{width:180px;height:180px;flex-shrink:0;border-radius:9999px;overflow:hidden;display:inline-block;border:4px solid rgba(15,20,25,0.7)}
@media (min-width:640px){.story-photo-wrapper{width:250px;height:250px}}
.story-photo{width:100%;height:100%;object-fit:cover;display:block;border-radius:9999px;box-shadow:0 10px 30px rgba(2,6,23,0.45)}
.story-content{flex:1}
.story-content p{margin:0}

/* light theme: soften the border so it isn't too harsh on bright backgrounds */
html[data-theme="light"] .story-photo-wrapper{border-color:rgba(0,0,0,0.12)}

@media (max-width:640px){
  /* center the photo when stacked on small screens */
  .story-photo-wrapper{margin-left:auto;margin-right:auto}
  .story-content{text-align:left}
}
