/* ===============================
   Victory Eze — Static Portfolio
   =============================== */

:root{
  --bg: #0b1220;
  --bg2:#0d162a;
  --card:#121c33;
  --text:#e8eefc;
  --muted:#a9b4d6;
  --line: rgba(255,255,255,.08);
  --accent:#76a8ff;
  --accent2:#53f0c6;
  --shadow: 0 14px 30px rgba(0,0,0,.28);
  --radius: 18px;
  --radius2: 28px;
  --container: 1100px;
  --ease: cubic-bezier(.2,.8,.2,1);
}

[data-theme="light"]{
  --bg:#f7f8fc;
  --bg2:#eef1fb;
  --card:#ffffff;
  --text:#0b1020;
  --muted:#41507a;
  --line: rgba(10, 16, 32, .10);
  --accent:#2a6cff;
  --accent2:#0bbd9a;
  --shadow: 0 14px 30px rgba(10,16,32,.12);
}

*{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
body{
  margin:0;
  font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background: radial-gradient(1200px 800px at 15% 10%, rgba(118,168,255,.18), transparent 55%),
              radial-gradient(900px 600px at 85% 30%, rgba(83,240,198,.14), transparent 55%),
              linear-gradient(180deg, var(--bg), var(--bg2));
  color: var(--text);
}

a{ color: inherit; text-decoration: none; }
a:hover{ text-decoration: underline; }
code{
  padding: .12rem .35rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255,255,255,.04);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: .9em;
}

.container{
  width: min(100% - 2rem, var(--container));
  margin-inline:auto;
}

.skip-link{
  position:absolute;
  left:-9999px;
  top:auto;
  width:1px;height:1px;
  overflow:hidden;
}
.skip-link:focus{
  left: 1rem;
  top: 1rem;
  width:auto;height:auto;
  padding:.7rem 1rem;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 12px;
  z-index: 9999;
}

/* Header */
.site-header{
  position: sticky;
  top:0;
  z-index: 50;
  backdrop-filter: blur(10px);
  background: rgba(10, 16, 32, .45);
  border-bottom: 1px solid var(--line);
}
[data-theme="light"] .site-header{ background: rgba(247, 248, 252, .72); }

.header-inner{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 1rem;
  padding: .8rem 0;
}

.brand{
  display:flex;
  align-items:center;
  gap:.75rem;
}
.brand-mark{
  width: 42px;
  height: 42px;
  border-radius: 14px;
  display:grid;
  place-items:center;
  font-weight: 800;
  letter-spacing: .5px;
  background: linear-gradient(135deg, rgba(118,168,255,.8), rgba(83,240,198,.75));
  color:#071025;
}
.brand-text{
  display:flex;
  flex-direction:column;
  line-height: 1.1;
}
.brand-name{ font-weight: 700; }
.brand-role{ font-size: .86rem; color: var(--muted); }

.nav{ position: relative; }
.nav-panel{
  display:flex;
  align-items:center;
  gap: .9rem;
}
.nav-link{
  padding: .55rem .75rem;
  border-radius: 12px;
  color: var(--muted);
  font-weight: 500;
}
.nav-link:hover{
  color: var(--text);
  text-decoration: none;
  background: rgba(255,255,255,.05);
}
.nav-link-cta{
  color: var(--text);
  background: linear-gradient(135deg, rgba(118,168,255,.35), rgba(83,240,198,.22));
  border: 1px solid var(--line);
}
.nav-link-cta:hover{ background: rgba(118,168,255,.20); }

.theme-toggle{
  display:flex;
  align-items:center;
  gap:.5rem;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
  color: var(--text);
  border-radius: 14px;
  padding: .55rem .75rem;
  cursor: pointer;
}
.theme-toggle:hover{ background: rgba(255,255,255,.08); text-decoration:none; }
.theme-text{ font-weight: 600; font-size: .92rem; }

.nav-toggle{
  display:none;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
  border-radius: 14px;
  width: 44px;
  height: 44px;
  cursor: pointer;
}
.nav-toggle-lines{
  display:block;
  width: 18px;
  height: 2px;
  background: var(--text);
  position: relative;
  margin: 0 auto;
}
.nav-toggle-lines::before,
.nav-toggle-lines::after{
  content:"";
  position:absolute;
  left:0;
  width: 18px;
  height: 2px;
  background: var(--text);
  transition: transform .25s var(--ease);
}
.nav-toggle-lines::before{ top: -6px; }
.nav-toggle-lines::after{ top: 6px; }

/* Hero */
.hero{
  position: relative;
  padding: 4.2rem 0 2.4rem;
  overflow:hidden;
}
.hero-bg{
  position:absolute;
  inset:-50% -20%;
  background: radial-gradient(500px 350px at 40% 30%, rgba(118,168,255,.22), transparent 55%),
              radial-gradient(460px 340px at 70% 55%, rgba(83,240,198,.18), transparent 55%);
  filter: blur(10px);
  pointer-events:none;
}
.hero-grid{
  position: relative;
  display:grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 1.4rem;
  align-items: start;
}
.badge{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding: .4rem .7rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  background: rgba(255,255,255,.04);
  margin: 0 0 1rem;
}
.badge::before{
  content:"";
  width:8px; height:8px;
  border-radius: 50%;
  background: var(--accent2);
  box-shadow: 0 0 0 3px rgba(83,240,198,.14);
}

.hero-title{
  font-size: clamp(2rem, 3.6vw, 3.2rem);
  letter-spacing: -0.02em;
  margin: 0 0 .9rem;
  line-height: 1.08;
}
.hero-subtitle{
  font-size: 1.05rem;
  color: var(--muted);
  line-height: 1.6;
  margin: 0 0 1.4rem;
}

.hero-actions{
  display:flex;
  gap:.8rem;
  flex-wrap: wrap;
  margin-bottom: 1.2rem;
}

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.55rem;
  padding: .8rem 1rem;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
  font-weight: 600;
  cursor:pointer;
  box-shadow: none;
  transition: transform .18s var(--ease), background .18s var(--ease);
}
.btn:hover{
  text-decoration:none;
  transform: translateY(-1px);
  background: rgba(255,255,255,.08);
}
.btn:active{ transform: translateY(0); }
.btn-primary{
  background: linear-gradient(135deg, rgba(118,168,255,.7), rgba(83,240,198,.55));
  border-color: transparent;
  color: #061023;
}
.btn-primary:hover{ background: linear-gradient(135deg, rgba(118,168,255,.82), rgba(83,240,198,.66)); }
.btn-ghost{
  background: transparent;
}

.hero-meta{
  list-style:none;
  display:flex;
  flex-wrap:wrap;
  gap:.9rem 1.2rem;
  padding:0;
  margin:0;
  color: var(--muted);
}
.hero-meta .dot{
  display:inline-block;
  width:7px;height:7px;
  border-radius:50%;
  background: var(--accent);
  margin-right: .55rem;
  box-shadow: 0 0 0 3px rgba(118,168,255,.14);
}

/* Cards */
.card{
  border-radius: var(--radius2);
  background: rgba(255,255,255,.04);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}
[data-theme="light"] .card{ background: rgba(255,255,255,.86); }

.portrait{
  padding: 1.2rem;
  margin-bottom: 1rem;
}
.portrait-inner{
  position: relative;
  border-radius: 22px;
  padding: 1.3rem;
  min-height: 210px;
  display:grid;
  place-items:center;
  background: radial-gradient(400px 220px at 30% 20%, rgba(118,168,255,.22), transparent 55%),
              radial-gradient(300px 220px at 70% 70%, rgba(83,240,198,.18), transparent 55%),
              rgba(255,255,255,.03);
  overflow:hidden;
}
.portrait-ring{
  position:absolute;
  inset:-35%;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.12);
  filter: blur(.2px);
}
.portrait-initials{
  width: 92px;
  height: 92px;
  border-radius: 28px;
  display:grid;
  place-items:center;
  font-weight: 800;
  letter-spacing: .5px;
  font-size: 2rem;
  color:#071025;
  background: linear-gradient(135deg, rgba(118,168,255,.85), rgba(83,240,198,.75));
}
.portrait-caption{
  margin: .8rem 0 0;
  color: var(--muted);
  font-weight: 600;
  font-size: .95rem;
}

.highlight{ padding: 1.2rem 1.2rem 1.25rem; }
.card-title{ margin: 0 0 .6rem; font-size: 1.15rem; }

.section{
  padding: 3.4rem 0;
}
.section.alt{
  background: linear-gradient(180deg, transparent, rgba(255,255,255,.03), transparent);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
[data-theme="light"] .section.alt{
  background: linear-gradient(180deg, transparent, rgba(10,16,32,.03), transparent);
}
.section-head{
  display:flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1.2rem;
  margin-bottom: 1.3rem;
  flex-wrap: wrap;
}
.section-head h2{
  margin:0;
  font-size: 1.9rem;
  letter-spacing: -0.01em;
}
.section-head p{
  margin: 0;
  color: var(--muted);
  max-width: 56ch;
  line-height: 1.6;
}

.grid{
  display:grid;
  gap: 1rem;
}
.cards-3{ grid-template-columns: repeat(3, 1fr); }
.cards-2{ grid-template-columns: repeat(2, 1fr); }

.service{ padding: 1.15rem 1.15rem 1.2rem; }
.service h3{ margin: 0 0 .5rem; }
.service p{ margin: 0 0 .85rem; color: var(--muted); line-height: 1.6; }
.service.span-2{ grid-column: span 2; }

.project{ padding: 1.25rem; }
.project-top{ margin-bottom: .75rem; }
.project h3{ margin: 0 0 .25rem; }
.muted{ color: var(--muted); }
.small{ font-size: .92rem; }
.tick-list{
  list-style:none;
  padding:0;
  margin:0;
  display:grid;
  gap: .55rem;
}
.tick-list li{
  position: relative;
  padding-left: 1.55rem;
  line-height: 1.5;
}
.tick-list li::before{
  content:"✓";
  position:absolute;
  left:0;
  top:0;
  color: var(--accent2);
  font-weight: 800;
}

.bullets{
  margin: 0;
  padding-left: 1.1rem;
  color: var(--muted);
  line-height: 1.6;
  display:grid;
  gap:.35rem;
}
.bullets.columns-2{
  columns: 2;
  column-gap: 1.4rem;
  display:block;
}
.bullets.columns-2 li{ break-inside: avoid; margin-bottom:.35rem; }

.callout{ padding: 1.15rem; margin-top: 1rem; }
.callout-inner{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}

.skill-grid{ grid-template-columns: repeat(3, 1fr); }
.skill{ padding: 1.1rem; }
.skill h3{ margin: 0 0 .7rem; }
.skill-list{
  margin: 0;
  padding-left: 1.15rem;
  color: var(--muted);
  line-height: 1.6;
  display: grid;
  gap: .25rem;
}
.pill-row{ display:flex; flex-wrap: wrap; gap: .55rem; }
.pill{
  font-weight: 600;
  font-size: .9rem;
  padding: .45rem .65rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.04);
}

.contact-grid{ grid-template-columns: .9fr 1.1fr; }
.cards-2 > .card{
  padding: 1.35rem;
}
.cards-2 > .card h3{
  margin: 0 0 .75rem;
}
.cards-2 > .card .bullets{
  padding-left: 1.2rem;
}
.contact-grid > .card{
  padding: 1.35rem;
}
.contact-grid > .card h3{
  margin: 0 0 .85rem;
}
.contact-list{
  list-style:none;
  padding:0;
  margin:0 0 1rem;
  display:grid;
  gap: .85rem;
}
.contact-label{
  display:block;
  font-size: .82rem;
  color: var(--muted);
  margin-bottom: .15rem;
}
.divider{
  height: 1px;
  background: var(--line);
  margin: 1rem 0;
}

.contact-form{
  display:grid;
  gap: .85rem;
  margin-top: .95rem;
}
.field label{
  display:block;
  font-weight: 600;
  margin-bottom: .35rem;
}
input, textarea{
  width:100%;
  padding: .85rem .9rem;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.03);
  color: var(--text);
  outline: none;
  transition: border-color .18s var(--ease), background .18s var(--ease);
}
[data-theme="light"] input, [data-theme="light"] textarea{ background: rgba(10,16,32,.03); }
input:focus, textarea:focus{
  border-color: rgba(118,168,255,.65);
  background: rgba(118,168,255,.07);
}

.site-footer{
  margin-top: 1.2rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.back-to-top{
  padding: .55rem .75rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.04);
}
.back-to-top:hover{ text-decoration:none; background: rgba(255,255,255,.08); }

/* Responsive */
@media (max-width: 980px){
  .hero-grid{ grid-template-columns: 1fr; }
  .cards-3{ grid-template-columns: repeat(2, 1fr); }
  .skill-grid{ grid-template-columns: repeat(2, 1fr); }
  .contact-grid{ grid-template-columns: 1fr; }
  .cards-2 > .card, .contact-grid > .card{ padding: 1.2rem; }
  .service.span-2{ grid-column: auto; }
}
@media (max-width: 700px){
  .hero{ padding: 3.2rem 0 2rem; }
  .hero-title{ font-size: clamp(1.75rem, 9vw, 2.25rem); line-height: 1.12; }
  .hero-subtitle{ font-size: 1rem; line-height: 1.55; margin-bottom: 1.15rem; }
  .section{ padding: 2.6rem 0; }
  .section-head{ margin-bottom: 1rem; }
  .section-head h2{ font-size: 1.55rem; }
  .section-head p{ line-height: 1.5; }
  .service h3, .project h3, .skill h3, .cards-2 > .card h3, .contact-grid > .card h3{ font-size: 1.05rem; }
  .nav-toggle{ display:block; }
  .nav-panel{
    position:absolute;
    right: 0;
    top: calc(100% + .7rem);
    width: min(320px, 90vw);
    padding: .7rem;
    border-radius: 18px;
    background: rgba(10, 16, 32, .75);
    border: 1px solid var(--line);
    backdrop-filter: blur(10px);
    flex-direction: column;
    align-items: stretch;
    gap: .2rem;
    transform: translateY(-8px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s var(--ease), transform .18s var(--ease);
  }
  [data-theme="light"] .nav-panel{ background: rgba(247,248,252,.85); }
  .nav-panel.open{
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  .nav-link, .theme-toggle{ width: 100%; justify-content: space-between; }
  .cards-3{ grid-template-columns: 1fr; }
  .cards-2{ grid-template-columns: 1fr; }
  .skill-grid{ grid-template-columns: 1fr; }
  .cards-2 > .card, .contact-grid > .card{ padding: 1rem; }
  .cards-2 > .card .bullets, .skill-list{ padding-left: 1rem; }
  .contact-list{ gap: .7rem; margin: 0 0 .85rem; }
  .contact-form{ gap: .75rem; margin-top: .8rem; }
  .bullets.columns-2{ columns: 1; }
}
