/* ── Tokens ─────────────────────────────────────────────────────────────────── */
:root {
  --bg:           #0e0c0a;
  --surface:      #181614;
  --border:       #272320;
  --accent:       #00ff87;   /* green  — live, wins, positive */
  --accent-red:   #ff4444;   /* red    — losses, errors */
  --accent-amber: #f59e0b;   /* amber  — pending, in progress */
  --accent-blue:  #0066ff;   /* blue   — informational */
  --text:         #edebe8;
  --muted:        #5c5450;
  --muted2:       #9a9390;

  --font-heading: 'Syne', sans-serif;
  --font-body:    'Inter', sans-serif;
  --font-mono:    'DM Mono', monospace;

  --nav-h:      64px;
  --ticker-h:   30px;
  --section-gap: 120px;
  --max-w:      1100px;
  --radius:     6px;
  --t:          0.2s ease;
}

/* ── Reset ──────────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background-color: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  background-image:
    repeating-linear-gradient(0deg,  transparent, transparent 59px, rgba(255,180,80,.018) 59px, rgba(255,180,80,.018) 60px),
    repeating-linear-gradient(90deg, transparent, transparent 59px, rgba(255,180,80,.018) 59px, rgba(255,180,80,.018) 60px);
}
a { color: inherit; text-decoration: none; }
ul { list-style: none; }

/* ── Noise ──────────────────────────────────────────────────────────────────── */
.noise {
  position: fixed; inset: 0; z-index: 999; pointer-events: none; opacity: .04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' 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)'/%3E%3C/svg%3E");
  background-size: 200px 200px;
}

/* ── Semantic color utilities ────────────────────────────────────────────────── */
.accent    { color: var(--accent); }
.ti-green  { color: var(--accent); }
.ti-red    { color: var(--accent-red); }
.ti-amber  { color: var(--accent-amber); }

/* ── Layout helpers ──────────────────────────────────────────────────────────── */
.section-inner { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }

section { scroll-margin-top: calc(var(--nav-h) + var(--ticker-h) + 12px); }

.section-title {
  font-family: var(--font-heading);
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: 700; letter-spacing: -.02em;
  color: var(--text); margin-bottom: 40px;
}

/* ── Animations ──────────────────────────────────────────────────────────────── */
@keyframes fadeInUp  { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:translateY(0); } }
@keyframes pulse     { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:.35; transform:scale(.75); } }
@keyframes ticker-scroll { 0% { transform:translateX(0); } 100% { transform:translateX(-50%); } }
@keyframes stat-flash { 0%,100% { opacity:1; } 40% { opacity:.4; } }

.reveal { opacity:0; transform:translateY(18px); transition:opacity .55s ease, transform .55s ease; }
.reveal.visible { opacity:1; transform:translateY(0); }

.projects-featured .project-card:nth-child(2) { transition-delay: .1s; }
.projects-standard .project-card:nth-child(2) { transition-delay: .1s; }
.projects-standard .project-card:nth-child(3) { transition-delay: .2s; }
.skills-grid .skill-group:nth-child(2) { transition-delay: .05s; }
.skills-grid .skill-group:nth-child(3) { transition-delay: .1s; }
.skills-grid .skill-group:nth-child(4) { transition-delay: .05s; }
.skills-grid .skill-group:nth-child(5) { transition-delay: .1s; }
.skills-grid .skill-group:nth-child(6) { transition-delay: .15s; }

.fade-in { opacity:0; animation:fadeInUp .7s ease forwards; animation-delay:var(--delay,0s); }

.live-dot {
  width:7px; height:7px; border-radius:50%;
  background:var(--accent);
  animation:pulse 2s ease-in-out infinite;
  display:inline-block; flex-shrink:0;
}

/* ── Buttons ─────────────────────────────────────────────────────────────────── */
.btn {
  display:inline-flex; align-items:center; gap:8px;
  padding:11px 22px; border-radius:var(--radius);
  font-family:var(--font-mono); font-size:12px;
  cursor:pointer; transition:all var(--t); white-space:nowrap;
}
.btn-primary { background:var(--accent); color:#000; border:1px solid var(--accent); }
.btn-primary:hover { background:transparent; color:var(--accent); }
.btn-ghost { background:transparent; color:var(--text); border:1px solid var(--border); }
.btn-ghost:hover { border-color:var(--accent); color:var(--accent); }

/* ── Nav ─────────────────────────────────────────────────────────────────────── */
#nav {
  position:fixed; top:0; left:0; right:0; z-index:100;
  height:var(--nav-h);
  display:flex; align-items:center; justify-content:space-between;
  padding:0 32px;
  background:rgba(14,12,10,.88);
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
}
.nav-logo { font-family:var(--font-heading); font-size:20px; font-weight:800; letter-spacing:-.03em; }
.nav-links { display:flex; align-items:center; gap:32px; }
.nav-links a {
  font-family:var(--font-mono); font-size:11px; color:var(--muted2);
  letter-spacing:.05em; text-transform:uppercase; transition:color var(--t);
}
.nav-links a:hover { color:var(--text); }

.nav-hamburger {
  display:none; flex-direction:column; justify-content:center;
  gap:5px; width:36px; height:36px; background:none; border:none;
  cursor:pointer; padding:4px; flex-shrink:0;
}
.nav-hamburger span { display:block; width:22px; height:2px; background:var(--text); border-radius:2px; transition:transform .25s ease, opacity .25s ease; }
.nav-hamburger.open span:nth-child(1) { transform:translateY(7px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2) { opacity:0; transform:scaleX(0); }
.nav-hamburger.open span:nth-child(3) { transform:translateY(-7px) rotate(-45deg); }

/* ── Ticker ──────────────────────────────────────────────────────────────────── */
.ticker-wrap {
  position:fixed; top:var(--nav-h); left:0; right:0; z-index:99;
  height:var(--ticker-h); overflow:hidden;
  background:rgba(10,9,8,.97); border-bottom:1px solid var(--border);
}
.ticker-wrap:hover .ticker-track { animation-play-state:paused; }

.ticker-track {
  display:flex; width:max-content; height:100%; align-items:center;
  animation:ticker-scroll 32s linear infinite;
}
.ticker-content { display:flex; align-items:center; padding:0 32px; white-space:nowrap; }

.ti-label {
  font-family:var(--font-mono); font-size:9px;
  text-transform:uppercase; letter-spacing:.1em; color:var(--muted); margin-right:7px;
}
.ti-val {
  font-family:var(--font-mono); font-size:11px; font-weight:500;
  color:var(--text); margin-right:20px;
}
.ti-sep { font-family:var(--font-mono); font-size:10px; color:var(--muted); margin-right:20px; }

/* ── Hero ────────────────────────────────────────────────────────────────────── */
#hero {
  min-height:100svh;
  padding-top:calc(var(--nav-h) + var(--ticker-h));
  display:flex; align-items:center;
}
.hero-inner {
  max-width:var(--max-w); margin:0 auto;
  padding:60px 24px;
  display:grid; grid-template-columns:1fr 420px; gap:64px; align-items:center; width:100%;
}
.hero-tag { font-family:var(--font-mono); font-size:11px; color:var(--muted2); letter-spacing:.1em; text-transform:uppercase; margin-bottom:20px; }

#hero h1 {
  font-family:var(--font-heading);
  font-size:clamp(2.2rem, 4.5vw, 3.6rem);
  font-weight:800; line-height:1.05; letter-spacing:-.03em;
  color:var(--text); margin-bottom:20px;
}
.hero-sub { font-size:16px; color:var(--muted2); line-height:1.8; margin-bottom:36px; max-width:460px; }
.hero-ctas { display:flex; flex-wrap:wrap; gap:12px; }

/* Hero chart panel */
.chart-panel {
  background:var(--surface); border:1px solid var(--border);
  border-radius:8px; padding:20px; overflow:hidden;
}
.chart-panel-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.chart-panel-label { font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.12em; color:var(--muted2); }
.chart-panel-live { font-family:var(--font-mono); font-size:9px; color:var(--accent); display:flex; align-items:center; gap:6px; letter-spacing:.08em; }

.hero-chart-svg { width:100%; height:160px; display:block; }

.chart-panel-footer { display:flex; gap:28px; margin-top:14px; border-top:1px solid var(--border); padding-top:14px; }
.chart-stat-label { display:block; font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.1em; color:var(--muted); margin-bottom:4px; }
.chart-stat-value { font-family:var(--font-heading); font-size:1.1rem; font-weight:700; letter-spacing:-.01em; color:var(--text); }

/* ── Stats bar ───────────────────────────────────────────────────────────────── */
#stats { padding:60px 0 var(--section-gap); }
.stats-grid { max-width:var(--max-w); margin:0 auto; padding:0 24px; display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }

.stat-card {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:22px;
  position:relative; overflow:hidden; transition:border-color var(--t);
}
.stat-card::before { content:''; position:absolute; top:0; left:0; height:2px; width:0; background:var(--accent); transition:width .35s ease; }
.stat-card:hover::before { width:100%; }
.stat-card:hover { border-color:rgba(0,255,135,.2); }

.stat-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.stat-label { font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.1em; color:var(--muted2); }
.stat-value { font-family:var(--font-heading); font-size:clamp(1.5rem,2.8vw,2rem); font-weight:700; line-height:1.1; margin-bottom:8px; letter-spacing:-.02em; }
.stat-value.flash { animation:stat-flash .5s ease; }
.stat-unit { font-family:var(--font-mono); font-size:.85rem; color:var(--muted2); margin-left:2px; }
.stat-sub { font-family:var(--font-mono); font-size:10px; color:var(--muted); letter-spacing:.02em; }

/* ── About ───────────────────────────────────────────────────────────────────── */
#about { padding-bottom:var(--section-gap); }
.about-block { background:var(--surface); border:1px solid var(--border); border-left:3px solid var(--accent); border-radius:var(--radius); padding:32px 36px; max-width:820px; }
.about-eyebrow { display:block; font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.12em; color:var(--accent); margin-bottom:14px; }
.about-text { font-size:16px; line-height:1.85; color:var(--muted2); }

/* ── Projects ────────────────────────────────────────────────────────────────── */
#projects { padding-bottom:var(--section-gap); }

.projects-featured { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.projects-standard { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }

.project-card {
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius);
  padding:24px; display:flex; flex-direction:column; gap:14px;
  transition:background var(--t), border-color var(--t);
}
.project-card:hover { background:#201d1a; border-color:rgba(255,255,255,.08); }
.project-card:hover .card-link { color:var(--accent); }
.project-card:active { background:#231f1c; }
.project-card--featured { padding:28px; gap:18px; }

.card-top { display:flex; align-items:center; justify-content:space-between; min-height:24px; gap:8px; }
.card-link { color:var(--muted); transition:color var(--t); display:flex; align-items:center; flex-shrink:0; }
.card-private { font-family:var(--font-mono); font-size:10px; color:var(--muted); letter-spacing:.04em; margin-left:auto; }

.card-title { font-family:var(--font-heading); font-size:1.1rem; font-weight:700; color:var(--text); letter-spacing:-.02em; }
.project-card--featured .card-title { font-size:1.25rem; }

.card-desc { font-size:13px; color:var(--muted2); line-height:1.75; flex:1; }
.project-card--featured .card-desc { font-size:14px; }

/* Sparkline area */
.card-chart-area {
  background:rgba(0,0,0,.25); border:1px solid var(--border); border-radius:4px;
  padding:12px 14px; display:flex; flex-direction:column; gap:10px;
}
.sparkline { width:100%; height:52px; display:block; overflow:visible; }
.card-mini-stats { display:flex; gap:24px; }
.mini-label { display:block; font-family:var(--font-mono); font-size:9px; text-transform:uppercase; letter-spacing:.1em; color:var(--muted); margin-bottom:3px; }
.mini-value { font-family:var(--font-heading); font-size:.95rem; font-weight:700; color:var(--text); letter-spacing:-.01em; }

/* Tags & badges */
.card-tags { display:flex; flex-wrap:wrap; gap:6px; }
.tag { font-family:var(--font-mono); font-size:10px; padding:3px 9px; border-radius:3px; border:1px solid; letter-spacing:.04em; }
.tag-accent { color:var(--accent); border-color:rgba(0,255,135,.25); background:rgba(0,255,135,.05); }
.tag-muted  { color:var(--muted2); border-color:var(--border); background:transparent; }

.badge { font-family:var(--font-mono); font-size:10px; padding:3px 9px; border-radius:3px; letter-spacing:.06em; text-transform:uppercase; flex-shrink:0; }
.badge-live       { background:rgba(0,255,135,.1);   color:var(--accent);       border:1px solid rgba(0,255,135,.3); }
.badge-inprogress { background:rgba(245,158,11,.1);  color:var(--accent-amber); border:1px solid rgba(245,158,11,.3); }
.badge-production { background:rgba(255,255,255,.04); color:var(--muted2);      border:1px solid var(--border); }

/* ── Skills ──────────────────────────────────────────────────────────────────── */
#skills { padding-bottom:var(--section-gap); }
.skills-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.skill-group { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:22px 24px; }
.skill-group--wide { grid-column:span 2; }

.skill-category { font-family:var(--font-mono); font-size:10px; color:var(--accent); text-transform:uppercase; letter-spacing:.1em; margin-bottom:16px; }

.skill-tags { display:flex; flex-direction:column; gap:9px; }
.skill-tags li { font-size:13px; color:var(--muted2); padding-left:14px; position:relative; line-height:1.4; }
.skill-tags li::before { content:'—'; position:absolute; left:0; color:var(--muted); font-size:10px; top:3px; font-family:var(--font-mono); }

.skill-tags--inline { flex-direction:row; flex-wrap:wrap; gap:8px; }
.skill-tags--inline li { padding-left:0; background:rgba(255,255,255,.03); border:1px solid var(--border); padding:4px 12px; border-radius:3px; font-size:12px; }
.skill-tags--inline li::before { display:none; }

/* ── Contact ─────────────────────────────────────────────────────────────────── */
#contact { padding-bottom:var(--section-gap); }
.contact-grid { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.contact-headline { font-family:var(--font-heading); font-size:clamp(1.8rem,4vw,2.8rem); font-weight:800; letter-spacing:-.03em; color:var(--text); margin-bottom:14px; line-height:1.1; }
.contact-sub { font-size:15px; color:var(--muted2); margin-bottom:32px; line-height:1.7; }
.contact-links { display:flex; flex-direction:column; }
.contact-link { display:flex; align-items:center; gap:8px; font-family:var(--font-mono); font-size:13px; color:var(--muted2); padding:14px 0; border-bottom:1px solid var(--border); transition:color var(--t); }
.contact-link:hover { color:var(--accent); }

/* ── Footer ──────────────────────────────────────────────────────────────────── */
footer { border-top:1px solid var(--border); padding:32px 24px; text-align:center; font-family:var(--font-mono); font-size:11px; color:var(--muted); letter-spacing:.04em; }

/* ── Responsive: tablet ──────────────────────────────────────────────────────── */
@media (max-width: 960px) {
  .hero-inner { grid-template-columns:1fr; gap:48px; }
  .hero-right { max-width:520px; }
  .projects-standard { grid-template-columns:1fr 1fr; }
  .skills-grid { grid-template-columns:repeat(2,1fr); }
  .skill-group--wide { grid-column:span 2; }
}

/* ── Responsive: mobile ──────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  :root { --section-gap:80px; --nav-h:56px; --ticker-h:28px; }

  #nav { padding:0 20px; }
  .nav-hamburger { display:flex; }
  .nav-links {
    display:none; position:absolute; top:var(--nav-h); left:0; right:0;
    flex-direction:column; align-items:stretch;
    background:rgba(14,12,10,.98); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
    border-bottom:1px solid var(--border); padding:8px 0; gap:0;
  }
  .nav-links.open { display:flex; }
  .nav-links li { border-bottom:1px solid var(--border); }
  .nav-links li:last-child { border-bottom:none; }
  .nav-links a { display:block; padding:15px 20px; font-size:13px; color:var(--text); }

  #hero { min-height:auto; padding-top:calc(var(--nav-h) + var(--ticker-h)); padding-bottom:60px; }
  .hero-inner { grid-template-columns:1fr; padding:40px 20px; }
  .hero-right { display:none; }
  #hero h1 { font-size:clamp(1.9rem,8vw,2.6rem); }
  .hero-sub { font-size:14px; }
  .hero-ctas { flex-direction:column; align-items:stretch; }
  .hero-ctas .btn { justify-content:center; }

  #stats { padding-top:40px; }
  .stats-grid { grid-template-columns:repeat(2,1fr); padding:0 16px; }

  .section-inner { padding:0 16px; }
  .about-block { padding:24px 20px; }

  .projects-featured { grid-template-columns:1fr; }
  .projects-standard { grid-template-columns:1fr; }

  .skills-grid { grid-template-columns:1fr; }
  .skill-group--wide { grid-column:span 1; }
  .skill-tags--inline { flex-direction:column; gap:9px; }
  .skill-tags--inline li { background:none; border:none; padding:0; padding-left:14px; font-size:13px; border-radius:0; }
  .skill-tags--inline li::before { display:block; }

  .contact-grid { grid-template-columns:1fr; gap:48px; }
}

@media (max-width: 440px) {
  .stats-grid { grid-template-columns:1fr; }
}
