/* reset */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background: #0A0E14;
  color: #E6EDF3;
  font-family: 'Space Grotesk', sans-serif;
  -webkit-font-smoothing: antialiased;
}
::selection { background: #FF8A4C; color: #0A0E14; }
a { color: inherit; text-decoration: none; }

/* keyframes */
@keyframes bootline {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: .4; transform: scale(.85); }
}
@keyframes floaty {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-8px); }
}
@keyframes traceflow { to { stroke-dashoffset: -24; } }
@keyframes sigpulse { 0%,100% { opacity: .6; } 50% { opacity: 1; } }
@keyframes ping { 0% { transform: scale(1); opacity: .7; } 80%,100% { transform: scale(4.6); opacity: 0; } }
@keyframes scanx { 0% { transform: translateX(0); opacity: .8; } 80% { opacity: .5; } 100% { transform: translateX(266px); opacity: 0; } }
@keyframes subband { 0%,100% { opacity: .1; } 50% { opacity: .5; } }
@keyframes nudge { 0%,100% { transform: translateX(0); opacity: .8; } 50% { transform: translateX(5px); opacity: 1; } }

/* page wrapper */
.page-wrap { position: relative; min-height: 100vh; overflow-x: hidden; background: #0A0E14; }

/* fixed backdrop layers */
.grid-bg {
  position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background-image:
    linear-gradient(rgba(86,197,208,0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(86,197,208,0.045) 1px, transparent 1px);
  background-size: 40px 40px;
}
.glow-bg {
  position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background:
    radial-gradient(ellipse 80% 50% at 70% 0%, rgba(255,138,76,0.10), transparent 60%),
    radial-gradient(ellipse 70% 50% at 10% 100%, rgba(86,197,208,0.08), transparent 60%);
}

/* two-col responsive grid */
.two-col { display: grid; }
@media (max-width: 820px) {
  .two-col { grid-template-columns: 1fr !important; gap: 36px !important; }
  .two-col .order-first { order: -1; }
}

/* nav responsive */
.nav-links { display: flex; }
.nav-toggle { display: none; }
@media (max-width: 860px) {
  .nav-links  { display: none !important; }
  .nav-toggle { display: inline-flex !important; }
}

/* nav component */
.site-nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px clamp(18px,4vw,32px);
  background: rgba(10,14,20,0.72);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(86,197,208,0.12);
}

.nav-logo { display: flex; align-items: center; gap: 12px; }
.nav-logo-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px;
  border: 1px solid #FF8A4C; color: #FF8A4C;
  font-family: 'IBM Plex Mono', monospace; font-weight: 600; font-size: 14px;
}
.nav-logo-text {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 13px; letter-spacing: .08em; color: #8593A6;
}
.nav-logo-dev { color: #FF8A4C; }

.nav-link {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 12px; letter-spacing: .1em; color: #8593A6; text-transform: uppercase;
}
.nav-link--cta {
  color: #0A0E14; background: #FF8A4C;
  padding: 9px 16px; font-weight: 600;
}

.nav-toggle {
  align-items: center; justify-content: center;
  width: 40px; height: 40px;
  background: transparent; border: 1px solid #2A3645;
  color: #FF8A4C; cursor: pointer;
  flex-direction: column; gap: 5px;
}
.nav-bar { display: block; width: 18px; height: 2px; background: #FF8A4C; }

/* mobile menu */
.mobile-menu {
  position: fixed; top: 67px; left: 0; right: 0; z-index: 49;
  background: rgba(10,14,20,0.97); backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(86,197,208,0.14);
  flex-direction: column; padding: 8px 0;
}
.mobile-menu:not([hidden]) { display: flex; }
.mobile-link {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 14px; letter-spacing: .1em; color: #B7C2D0; text-transform: uppercase;
  padding: 15px 26px; border-bottom: 1px solid rgba(86,197,208,0.08);
}
.mobile-link--cta { color: #FF8A4C; font-weight: 600; border-bottom: none; }

/* ===== HERO ===== */
.hero-grid {
  position: relative; z-index: 1;
  max-width: 1240px; margin: 0 auto;
  padding: clamp(118px,20vw,150px) clamp(20px,5vw,32px) 90px;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 56px; align-items: center;
}

.hero-status { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; }
.status-dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  background: #6FCF97; box-shadow: 0 0 10px #6FCF97;
  animation: pulse 2s infinite;
}
.status-label {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 12px; letter-spacing: .18em; color: #56C5D0; text-transform: uppercase;
}

.hero-h1 {
  font-size: clamp(46px,11vw,72px); line-height: 0.98;
  font-weight: 700; letter-spacing: -0.02em; margin-bottom: 22px;
}
.hero-dot { color: #FF8A4C; }

.hero-subtitle {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 15px; letter-spacing: .02em; color: #8593A6; margin-bottom: 26px;
}

.hero-body {
  font-size: 19px; line-height: 1.6; color: #B7C2D0;
  max-width: 480px; margin-bottom: 38px; text-wrap: pretty;
}
.hero-body strong { color: #E6EDF3; font-weight: 600; }

.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; }

/* shared button styles */
.btn {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: 'IBM Plex Mono', monospace; font-weight: 600;
  font-size: 13px; letter-spacing: .06em; padding: 14px 22px; text-transform: uppercase;
}
.btn--solid  { background: #FF8A4C; color: #0A0E14; }
.btn--solid:hover { background: #FFA068; }
.btn--outline { border: 1px solid #2A3645; color: #E6EDF3; font-weight: 500; }
.btn--outline:hover { border-color: #56C5D0; color: #56C5D0; }

/* ===== TERMINAL WINDOW ===== */
.term-window {
  position: relative;
  border: 1px solid #233040; background: #0C1119;
  box-shadow: 0 30px 80px -30px rgba(0,0,0,0.8);
  animation: floaty 7s ease-in-out infinite;
}

/* corner brackets */
.corner { position: absolute; width: 14px; height: 14px; }
.corner--tl { top: -1px; left: -1px;   border-top: 2px solid #FF8A4C; border-left:  2px solid #FF8A4C; }
.corner--tr { top: -1px; right: -1px;  border-top: 2px solid #FF8A4C; border-right: 2px solid #FF8A4C; }
.corner--bl { bottom: -1px; left: -1px;  border-bottom: 2px solid #FF8A4C; border-left:  2px solid #FF8A4C; }
.corner--br { bottom: -1px; right: -1px; border-bottom: 2px solid #FF8A4C; border-right: 2px solid #FF8A4C; }

/* title bar */
.term-titlebar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 0 0 16px; border-bottom: 1px solid #1B2531; background: #0E141D;
}
.term-title-label {
  font-family: 'IBM Plex Mono', monospace; font-size: 12px; color: #8593A6;
}
.term-winbtns { display: flex; }
.term-winbtn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 34px; color: #8593A6; font-size: 14px; cursor: default;
}
.term-winbtn:hover { background: #161D28; }
.term-winbtn--sq { font-size: 11px; }
.term-winbtn--x  { font-size: 13px; }
.term-winbtn--x:hover { background: #E81123; color: #ffffff; }

/* terminal body */
.term-body {
  padding: 22px 20px;
  font-family: 'IBM Plex Mono', monospace; font-size: 13.5px; line-height: 1.85;
  cursor: text;
}

/* boot lines */
.boot-line { animation: bootline .4s both; }

/* log */
.term-log { max-height: 170px; overflow-y: auto; margin-top: 2px; }
.term-log div { white-space: pre-wrap; word-break: break-word; margin-top: 2px; }

/* input row */
.term-form { display: flex; align-items: center; gap: 7px; margin-top: 4px; }
.term-input {
  flex: 1; min-width: 0;
  background: transparent; border: none; outline: none;
  color: #E6EDF3; font-family: 'IBM Plex Mono', monospace; font-size: 13.5px;
  caret-color: #FF8A4C; padding: 0;
}

/* color utilities */
.t-green  { color: #6FCF97; }
.t-cyan   { color: #56C5D0; }
.t-orange { color: #FF8A4C; }
.t-faint  { color: #5A6675; }
.t-body   { color: #B7C2D0; }
.t-dim    { color: #5A6675; }
.t-error  { color: #FF5F56; }

/* ===== SHARED SECTION STYLES ===== */
.section {
  position: relative; z-index: 1;
  max-width: 1240px; margin: 0 auto;
  padding: 70px clamp(20px,5vw,32px);
  border-top: 1px solid rgba(86,197,208,0.10);
}

.section-eyebrow { display: flex; align-items: baseline; gap: 16px; margin-bottom: 44px; }
.eyebrow-num  { font-family: 'IBM Plex Mono', monospace; font-size: 13px; color: #FF8A4C; letter-spacing: .1em; }
.eyebrow-label { font-size: 14px; font-family: 'IBM Plex Mono', monospace; letter-spacing: .22em; text-transform: uppercase; color: #56C5D0; }
.eyebrow-rule { flex: 1; height: 1px; background: rgba(86,197,208,0.14); }

/* ===== ABOUT ===== */
.about-grid { grid-template-columns: 1.4fr 1fr; gap: 56px; align-items: start; }
.about-lead {
  font-size: clamp(21px,3.6vw,26px); line-height: 1.5;
  font-weight: 500; letter-spacing: -0.01em; margin-bottom: 24px; text-wrap: pretty;
}
.about-body { font-size: 17px; line-height: 1.7; color: #9AA7B8; text-wrap: pretty; }

/* spec sheet */
.spec-sheet { border: 1px solid #233040; background: #0C1119; padding: 4px; }
.spec-sheet-header {
  background: #0E141D; padding: 14px 18px; border-bottom: 1px solid #1B2531;
  font-family: 'IBM Plex Mono', monospace; font-size: 11px;
  letter-spacing: .18em; color: #5A6675; text-transform: uppercase;
}
.spec-sheet-body { padding: 8px 18px; }
.spec-row {
  display: flex; justify-content: space-between;
  padding: 11px 0; border-bottom: 1px dashed #1B2531;
  font-family: 'IBM Plex Mono', monospace; font-size: 13px;
}
.spec-row--last { border-bottom: none; }
.spec-key { color: #5A6675; }
.spec-val { color: #E6EDF3; }
.spec-val--green { color: #6FCF97; }

/* ===== SKILLS ===== */
.skills-grid { grid-template-columns: repeat(2,1fr); gap: 18px; }
.skill-card { border: 1px solid #233040; background: #0C1119; padding: 24px; }
.skill-card--orange:hover { border-color: #FF8A4C; }
.skill-card--cyan:hover   { border-color: #56C5D0; }
.skill-card-label {
  font-family: 'IBM Plex Mono', monospace; font-size: 12px;
  letter-spacing: .16em; text-transform: uppercase; margin-bottom: 18px;
}
.skill-card-label--orange { color: #FF8A4C; }
.skill-card-label--cyan   { color: #56C5D0; }
.chips { display: flex; flex-wrap: wrap; gap: 9px; }
.chip {
  font-family: 'IBM Plex Mono', monospace; font-size: 13px;
  color: #C6D0DC; border: 1px solid #2A3645; padding: 7px 13px;
}

/* ===== WORK TIMELINE ===== */
.timeline { position: relative; padding-left: 42px; }
.timeline-track {
  position: absolute; left: 7px; top: 6px; bottom: 6px;
  width: 2px; background: linear-gradient(#FF8A4C, #56C5D0);
}

.timeline-entry { position: relative; margin-bottom: 44px; }
.timeline-entry--last { margin-bottom: 0; }

.timeline-node {
  position: absolute; left: -42px; top: 4px;
  width: 16px; height: 16px; border-radius: 50%; background: #0A0E14; border-width: 2px; border-style: solid;
}
.timeline-node--orange { border-color: #FF8A4C; box-shadow: 0 0 0 4px rgba(255,138,76,0.12); }
.timeline-node--cyan   { border-color: #56C5D0; box-shadow: 0 0 0 4px rgba(86,197,208,0.12); }
.timeline-node--gray   { border-color: #5A6675; }

.timeline-header { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin-bottom: 6px; }
.timeline-title  { font-size: 22px; font-weight: 600; }
.timeline-title--dim { color: #C6D0DC; }
.timeline-date   { font-family: 'IBM Plex Mono', monospace; font-size: 12px; letter-spacing: .05em; }
.timeline-date--orange { color: #FF8A4C; }
.timeline-date--cyan   { color: #56C5D0; }
.timeline-date--gray   { color: #5A6675; }

.timeline-company { font-family: 'IBM Plex Mono', monospace; font-size: 13px; color: #5A6675; margin-bottom: 6px; }
.timeline-promo   { font-family: 'IBM Plex Mono', monospace; font-size: 12px; color: #56C5D0; margin-bottom: 14px; }
.timeline-edu     { font-family: 'IBM Plex Mono', monospace; font-size: 13px; color: #8593A6; line-height: 1.6; margin-top: 10px; }

.timeline-bullets { list-style: none; display: flex; flex-direction: column; gap: 9px; margin-top: 14px; }
.timeline-bullet  { position: relative; padding-left: 20px; color: #9AA7B8; font-size: 16px; line-height: 1.55; }
.bullet-arrow {
  position: absolute; left: 0;
  font-family: 'IBM Plex Mono', monospace;
}

/* ===== GAMES ===== */
.games-card {
  grid-template-columns: 1.15fr 1fr;
  gap: 0; border: 1px solid #233040; background: #0C1119;
}
.games-img-wrap { position: relative; }
.games-img { width: 100%; height: 100%; min-height: 340px; object-fit: cover; display: block; }
.games-badge {
  position: absolute; top: 14px; left: 14px;
  font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: .16em;
  color: #0A0E14; background: #FF8A4C; padding: 5px 10px; text-transform: uppercase;
}
.games-content {
  padding: 40px clamp(24px,5vw,36px);
  display: flex; flex-direction: column; justify-content: center;
}
.games-title {
  font-size: clamp(28px,6vw,34px); font-weight: 700;
  letter-spacing: -0.01em; line-height: 1.05; margin-bottom: 16px;
}
.games-desc { font-size: 16px; line-height: 1.65; color: #9AA7B8; margin-bottom: 24px; text-wrap: pretty; }
.games-desc strong { color: #E6EDF3; font-weight: 600; }

.chip--cyan { color: #56C5D0; }

/* ===== PROJECTS ===== */
.projects-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px,1fr));
  gap: 18px;
}

.project-card { display: block; border: 1px solid #233040; background: #0C1119; }
.project-card--orange:hover { border-color: #FF8A4C; }
.project-card--cyan:hover   { border-color: #56C5D0; }

.project-thumb {
  position: relative; width: 100%; height: 180px;
  background: #0A0E14; overflow: hidden;
}
.project-thumb--orange-grid {
  background-image: linear-gradient(rgba(255,138,76,0.07) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255,138,76,0.07) 1px, transparent 1px);
  background-size: 22px 22px;
}
.project-thumb--cyan-grid {
  background-image: linear-gradient(rgba(86,197,208,0.07) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(86,197,208,0.07) 1px, transparent 1px);
  background-size: 22px 22px;
}
.project-thumb--orange-grid-faint {
  background-image: linear-gradient(rgba(255,138,76,0.06) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255,138,76,0.06) 1px, transparent 1px);
  background-size: 22px 22px;
}

.thumb-badge {
  position: absolute; top: 11px; right: 13px;
  font-family: 'IBM Plex Mono', monospace; font-size: 10px; letter-spacing: .1em;
  padding: 3px 7px;
}
.thumb-badge--orange { color: #FF8A4C; background: rgba(255,138,76,0.12); }
.thumb-badge--cyan   { color: #56C5D0; background: rgba(86,197,208,0.12); }

.thumb-label {
  position: absolute; bottom: 10px; left: 13px;
  font-family: 'IBM Plex Mono', monospace; font-size: 10px;
  letter-spacing: .12em; color: #5A6675; text-transform: uppercase;
}

.project-body { padding: 22px; }
.project-cat  { font-family: 'IBM Plex Mono', monospace; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 10px; }
.project-cat--orange { color: #FF8A4C; }
.project-cat--cyan   { color: #56C5D0; }
.project-title { font-size: 19px; font-weight: 600; margin-bottom: 8px; }
.project-desc  { font-size: 14.5px; line-height: 1.6; color: #8593A6; margin-bottom: 14px; }
.project-link  { font-family: 'IBM Plex Mono', monospace; font-size: 12px; }
.project-link--orange { color: #FF8A4C; }
.project-link--cyan   { color: #56C5D0; }

/* ===== CONTACT ===== */
.contact-section { padding-top: 90px; }
.contact-grid { grid-template-columns: 1fr 1.05fr; gap: 56px; align-items: start; }

.contact-heading {
  font-size: clamp(34px,8vw,48px); font-weight: 700;
  letter-spacing: -0.02em; line-height: 1.02; margin-bottom: 20px;
}
.contact-body {
  font-size: 17px; line-height: 1.65; color: #9AA7B8;
  max-width: 380px; text-wrap: pretty; margin-bottom: 32px;
}
.contact-links { display: flex; flex-direction: column; gap: 10px; }
.contact-link {
  display: flex; align-items: center; justify-content: space-between;
  border: 1px solid #233040; background: #0C1119; padding: 15px 20px;
}
.contact-link--cyan:hover   { border-color: #56C5D0; }
.contact-link--orange:hover { border-color: #FF8A4C; }
.contact-link-inner { display: flex; align-items: center; gap: 13px; }
.contact-link-num   { font-family: 'IBM Plex Mono', monospace; font-size: 12px; }
.contact-link-label { font-size: 16px; font-weight: 600; }

/* form card */
.form-card { border: 1px solid #233040; background: #0C1119; padding: 4px; }
.form-titlebar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 0 0 18px; border-bottom: 1px solid #1B2531; background: #0E141D;
}
.form-title-label { font-family: 'IBM Plex Mono', monospace; font-size: 12px; color: #8593A6; }
.form-body { padding: 26px 22px; display: flex; flex-direction: column; gap: 18px; }
.form-field { display: flex; flex-direction: column; gap: 8px; }
.form-label {
  font-family: 'IBM Plex Mono', monospace; font-size: 11px;
  letter-spacing: .14em; text-transform: uppercase; color: #56C5D0;
}
.form-input, .form-textarea {
  width: 100%; background: #0A0E14; border: 1px solid #233040;
  color: #E6EDF3; font-family: 'IBM Plex Mono', monospace; font-size: 14px;
  padding: 12px 14px; outline: none;
}
.form-input:focus, .form-textarea:focus { border-color: #56C5D0; }
.form-textarea { resize: vertical; line-height: 1.6; }
.form-status {
  font-family: 'IBM Plex Mono', monospace; font-size: 12px;
}
.form-status--error   { color: #FF5F56; }
.form-status--success { color: #6FCF97; }
.form-submit { align-self: flex-start; border: none; cursor: pointer; }

/* ===== FOOTER ===== */
.site-footer {
  position: relative; z-index: 1;
  max-width: 1240px; margin: 0 auto;
  padding: 26px clamp(20px,5vw,32px);
  border-top: 1px solid rgba(86,197,208,0.10);
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 12px;
}
.footer-copy, .footer-clock {
  font-family: 'IBM Plex Mono', monospace; font-size: 12px; color: #5A6675;
}
