﻿/* ============================================================
   aleixbafl.com — base.css
   Tema: Terminal / Linux / Dev — dark, minimal, clean
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;700&family=Inter:wght@300;400;500;600&display=swap');

/* ── Variables ─────────────────────────────────────────────── */
:root {
  --bg-page:        #0d0f11;
  --bg-surface:     #111418;
  --bg-card:        #161b22;
  --bg-card-hover:  #1c2128;

  --border:         #21262d;
  --border-accent:  #30363d;

  --green:          #4ade80;
  --green-dim:      #22c55e;
  --green-faint:    rgba(74, 222, 128, 0.08);
  --green-glow:     rgba(74, 222, 128, 0.15);

  --text-primary:   #e6edf3;
  --text-secondary: #8b949e;
  --text-muted:     #484f58;
  --text-accent:    #4ade80;

  --font-mono:      'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
  --font-sans:      'Inter', system-ui, sans-serif;

  --radius-sm:      4px;
  --radius-md:      8px;
  --radius-lg:      12px;
}

/* ── Reset base ─────────────────────────────────────────────── */
*, *::before, *::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

body {
  display: grid;
  min-height: 100dvh;
  grid-template-rows: auto 1fr auto;
  background-color: var(--bg-page);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* ── Scrollbar ──────────────────────────────────────────────── */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: var(--bg-page); }
::-webkit-scrollbar-thumb { background: var(--border-accent); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }

/* ── Header ─────────────────────────────────────────────────── */
header {
  padding: 1.5rem 5%;
  background-color: var(--bg-surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

header::before {
  content: '>';
  font-family: var(--font-mono);
  font-size: 1.1rem;
  color: var(--green);
  flex-shrink: 0;
}

header h1 {
  font-family: var(--font-mono);
  font-size: clamp(1rem, 3vw, 1.35rem);
  font-weight: 500;
  color: var(--text-primary);
  letter-spacing: -0.01em;
}

header h1 strong {
  font-weight: 700;
  color: var(--text-primary);
}

/* Cursor parpadeante al final del nombre */
header h1::after {
  content: '_';
  color: var(--green);
  animation: blink 1.1s step-end infinite;
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ── Nav (si existe) ─────────────────────────────────────────── */
nav {
  display: flex;
  gap: 1.5rem;
  padding: 0.75rem 5%;
  background-color: var(--bg-surface);
  border-bottom: 1px solid var(--border);
}

nav a {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--text-secondary);
  text-decoration: none;
  letter-spacing: 0.03em;
  transition: color 0.15s;
}

nav a::before { content: './'; color: var(--text-muted); }
nav a:hover   { color: var(--text-accent); }
nav a.active  { color: var(--green); }

/* ── Main ───────────────────────────────────────────────────── */
main {
  padding: 2.5rem 5%;
  max-width: 1100px;
  width: 100%;
  margin: 0 auto;
}

/* ── Sections / columnas ─────────────────────────────────────── */
.row, section.row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin-bottom: 2rem;
}

/* ── Cards / article ─────────────────────────────────────────── */
article, .card {
  background-color: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  transition: border-color 0.2s, background-color 0.2s;
}

article:hover, .card:hover {
  border-color: var(--border-accent);
  background-color: var(--bg-card-hover);
}

/* ── Headings ────────────────────────────────────────────────── */
h1, h2, h3, h4 {
  color: var(--text-primary);
  line-height: 1.25;
}

h2 {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--green);
  margin-bottom: 1.25rem;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

h2::before {
  content: '#';
  color: var(--text-muted);
}

h3 {
  font-size: 1rem;
  font-weight: 500;
  margin-bottom: 0.5rem;
}

p {
  color: var(--text-secondary);
  margin-bottom: 0.75rem;
}

p:last-child { margin-bottom: 0; }

/* ── Listas de skills ─────────────────────────────────────────── */
ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

li {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--text-secondary);
  padding: 0.4rem 0.75rem;
  border-radius: var(--radius-sm);
  border-left: 2px solid var(--border);
  background-color: rgba(255,255,255,0.02);
  transition: border-color 0.15s, color 0.15s, background-color 0.15s;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

li::before {
  content: '';
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: var(--text-muted);
  flex-shrink: 0;
  transition: background-color 0.15s;
}

li:hover {
  border-color: var(--green-dim);
  color: var(--text-primary);
  background-color: var(--green-faint);
}

li:hover::before {
  background-color: var(--green);
}

/* Iconos de Font Awesome dentro de li */
li i, li .fa, li [class*="fa-"] {
  font-size: 0.85rem;
  color: var(--text-muted);
  width: 14px;
  text-align: center;
  flex-shrink: 0;
  transition: color 0.15s;
}

li:hover i,
li:hover .fa,
li:hover [class*="fa-"] {
  color: var(--green);
}

/* Ocultar el separador "|" que viene en el HTML original */
li::after {
  display: none;
}

/* ── Imagen de perfil ─────────────────────────────────────────── */
.aleixr {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 1.5rem auto 0;
}

.aleixr img,
img[alt="Aleix Bautista"] {
  width: clamp(120px, 40%, 180px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border-accent);
  filter: grayscale(20%) brightness(0.9);
  transition: filter 0.3s, border-color 0.3s;
  display: block;
}

.aleixr img:hover,
img[alt="Aleix Bautista"]:hover {
  filter: grayscale(0%) brightness(1);
  border-color: var(--green-dim);
}

/* ── Footer ──────────────────────────────────────────────────── */
footer {
  background-color: var(--bg-surface);
  border-top: 1px solid var(--border);
  padding: 1.25rem 5%;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 1rem;
}

footer a {
  color: var(--text-muted);
  font-size: 1.1rem;
  transition: color 0.2s;
  text-decoration: none;
}

footer a:hover { color: var(--green); }

/* ── Links generales ─────────────────────────────────────────── */
a {
  color: var(--text-accent);
  text-decoration: none;
  transition: color 0.15s;
}

a:hover { color: var(--green); }

/* ── Alertas ─────────────────────────────────────────────────── */
.alert-danger {
  text-align: center;
  background-color: rgba(248, 81, 73, 0.1);
  border: 1px solid rgba(248, 81, 73, 0.3);
  color: #f85149;
  border-radius: var(--radius-md);
  padding: 0.75rem 1rem;
  font-family: var(--font-mono);
  font-size: 0.82rem;
}

.alert-success {
  text-align: center;
  background-color: var(--green-faint);
  border: 1px solid rgba(74, 222, 128, 0.25);
  color: var(--green);
  border-radius: var(--radius-md);
  padding: 0.75rem 1rem;
  font-family: var(--font-mono);
  font-size: 0.82rem;
}

/* ── Utilidades ──────────────────────────────────────────────── */
.ocultar { display: none !important; }

/* ── Formularios (contacto, etc.) ────────────────────────────── */
input, textarea, select {
  background-color: var(--bg-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 0.9rem;
  padding: 0.6rem 0.9rem;
  width: 100%;
  transition: border-color 0.2s;
  outline: none;
}

input:focus, textarea:focus, select:focus {
  border-color: var(--green-dim);
  box-shadow: 0 0 0 3px var(--green-glow);
}

label {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
  display: block;
  margin-bottom: 0.35rem;
}

button, .btn {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--bg-page);
  background-color: var(--green);
  border: none;
  border-radius: var(--radius-md);
  padding: 0.6rem 1.25rem;
  cursor: pointer;
  transition: background-color 0.2s, transform 0.1s;
}

button:hover, .btn:hover { background-color: var(--green-dim); }
button:active, .btn:active { transform: scale(0.97); }

/* ── Tags / badges ───────────────────────────────────────────── */
.badge, .tag {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.04em;
  color: var(--green);
  background-color: var(--green-faint);
  border: 1px solid rgba(74, 222, 128, 0.2);
  border-radius: var(--radius-sm);
  padding: 0.15rem 0.5rem;
  display: inline-block;
}

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width: 768px) {
  main { padding: 1.5rem 4%; }
  header { padding: 1rem 4%; }
  nav { padding: 0.6rem 4%; gap: 1rem; }
  footer { padding: 1rem 4%; }

  h2 { font-size: 0.7rem; }

  article, .card { padding: 1.1rem; }
}

@media (max-width: 480px) {
  header h1 { font-size: 0.95rem; }
  main { padding: 1rem 3%; }
}