:root{
  --bg:#0c0c0e;
  --bg-2:#141417;
  --card:#161619;
  --card-2:#1c1c20;
  --line:#26262b;
  --text:#e9e9ec;
  --muted:#8a8a92;
  --muted-2:#6a6a72;
  --gold:#e3b23f;
  --gold-soft:#f0cd7a;
  --radius:20px;
  --sidebar-w:300px;
  --rail-w:64px;
  --maxw:760px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--text);
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
::selection{background:var(--gold);color:#111}

.layout{
  display:grid;
  grid-template-columns:var(--sidebar-w) 1fr var(--rail-w);
  gap:26px;
  max-width:1280px;
  margin:0 auto;
  padding:26px;
  min-height:100vh;
}

/* ===================== SIDEBAR ===================== */
.sidebar{position:sticky;top:26px;height:calc(100vh - 52px)}
.card{
  background:linear-gradient(180deg,var(--card) 0%,#101012 100%);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:26px 24px;
  height:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}
.card-top{display:flex;align-items:center;gap:10px;align-self:flex-start;margin-bottom:22px}
.logo{
  width:34px;height:34px;border-radius:9px;
  background:linear-gradient(135deg,var(--gold),#b98a1f);
  color:#161619;font-weight:700;font-size:14px;
  display:grid;place-items:center;font-family:'Sora',sans-serif;
}
.card-name{font-weight:600;font-size:15px}
.card-flags{font-size:16px;line-height:1;letter-spacing:1px}

.avatar{
  width:224px;height:224px;border-radius:50%;overflow:hidden;
  background:var(--card-2);
  position:relative;display:grid;place-items:center;
  border:2px solid var(--line);
  box-shadow:0 0 0 5px rgba(227,178,63,.09);
}
.avatar img{width:100%;height:100%;object-fit:cover;object-position:center top}
.avatar-mono{
  display:none;font-family:'Sora',sans-serif;font-weight:700;
  font-size:52px;color:var(--gold);letter-spacing:2px;
}
.avatar--fallback{background:radial-gradient(circle at 50% 35%,#232327,#111)}
.avatar--fallback .avatar-mono{display:block}

.card-role{margin-top:20px;font-size:14px;color:var(--text);font-weight:500}
.card-copy{color:var(--muted-2);font-size:12px;margin-top:4px}

.socials{display:flex;gap:12px;margin-top:20px}
.socials a{
  width:40px;height:40px;border-radius:11px;
  border:1px solid var(--line);background:var(--card-2);
  display:grid;place-items:center;color:var(--muted);
  transition:.22s;
}
.socials a:hover{color:var(--gold);border-color:var(--gold);transform:translateY(-2px)}

.btn-talk{
  margin-top:auto;width:100%;
  background:linear-gradient(135deg,var(--gold),#cf9d2c);
  color:#161619;font-weight:700;font-size:14px;
  padding:14px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;gap:9px;
  transition:.22s;
}
.btn-talk:hover{filter:brightness(1.08);transform:translateY(-2px)}

/* ===================== CONTENT ===================== */
.content{max-width:var(--maxw);width:100%}
.section{padding:56px 0;border-bottom:1px solid var(--line)}
.section:first-child{padding-top:20px}
.section:last-child{border-bottom:0}

.pill{
  display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--line);border-radius:30px;
  padding:6px 14px;font-size:12px;color:var(--muted);
  letter-spacing:1px;margin-bottom:26px;
}
.eyebrow{
  display:inline-block;color:var(--gold);font-size:12px;
  letter-spacing:2.5px;font-weight:600;margin-bottom:16px;
}
.muted{color:var(--muted)}

.hero-title{
  font-family:'Sora',sans-serif;font-weight:300;
  font-size:clamp(40px,7vw,72px);line-height:1.05;letter-spacing:-1px;
}
.hero-title .accent{color:var(--gold);font-weight:600}
.hero-sub{
  color:var(--muted);font-size:17px;max-width:560px;margin-top:22px;
  text-align:justify;hyphens:auto;
}

.stats{display:flex;gap:48px;margin-top:44px;flex-wrap:wrap}
.stat-num{
  font-family:'Sora',sans-serif;font-weight:700;
  font-size:clamp(38px,6vw,60px);color:var(--gold);line-height:1;
  display:block;
}
.stat-label{color:var(--muted);font-size:13px;letter-spacing:1px;margin-top:8px;display:block}

.section-title{
  font-family:'Sora',sans-serif;font-weight:600;
  font-size:clamp(26px,4vw,38px);line-height:1.15;letter-spacing:-.5px;
}
.prose{color:var(--muted);font-size:16px;margin-top:18px;max-width:600px;text-align:justify;hyphens:auto}

/* tags */
.tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.tags span{
  border:1px solid var(--line);background:var(--card);
  padding:9px 16px;border-radius:30px;font-size:14px;color:var(--text);
  transition:.2s;
}
.tags span:hover{border-color:var(--gold);color:var(--gold)}

/* timeline */
.timeline{margin-top:30px;position:relative}
.tl-item{
  display:grid;grid-template-columns:150px 1fr;gap:22px;
  padding:22px 0;border-top:1px solid var(--line);
}
.tl-item:first-child{border-top:0}
.tl-when{color:var(--gold);font-size:13px;font-weight:600;padding-top:3px}
.tl-body h3{font-size:18px;font-weight:600;font-family:'Sora',sans-serif}
.tl-co{color:var(--muted);font-weight:400}
.tl-place{color:var(--muted-2);font-size:13px;display:block;margin:2px 0 8px}
.tl-body p{color:var(--muted);font-size:15px;text-align:justify;hyphens:auto}

/* creds */
.creds-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.cred-list{list-style:none;display:flex;flex-direction:column;gap:14px}
.cred-list li{display:flex;flex-direction:column;border-left:2px solid var(--gold);padding-left:14px}
.cred-list strong{font-weight:600;font-size:15px}
.cred-list span{color:var(--muted-2);font-size:13px}
.cred-list em{color:var(--muted);font-size:13px;font-style:normal;margin-top:2px}

/* projects */
.projects{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin-top:28px}
.project{
  background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:22px;display:flex;flex-direction:column;transition:.24s;
}
.project:hover{border-color:var(--gold);transform:translateY(-4px)}
.proj-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.proj-tags span{font-size:11px;color:var(--gold);border:1px solid rgba(227,178,63,.35);border-radius:20px;padding:3px 10px}
.project h3{font-family:'Sora',sans-serif;font-size:19px;font-weight:600;margin-bottom:8px}
.project p{color:var(--muted);font-size:14px;flex:1;text-align:justify;hyphens:auto}
.proj-link{color:var(--gold);font-size:14px;font-weight:600;margin-top:16px}
.proj-link:hover{color:var(--gold-soft)}
.project--ghost{border-style:dashed;opacity:.75}

/* proyecto destacado con doble link (sitio + código) */
.proj-note{color:var(--gold);font-size:12px;font-weight:600;letter-spacing:.3px;margin-bottom:8px}
.proj-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.proj-btn{
  display:inline-flex;align-items:center;gap:7px;
  font-size:13px;font-weight:600;padding:9px 15px;border-radius:11px;transition:.2s;
}
.proj-btn--primary{background:linear-gradient(135deg,var(--gold),#cf9d2c);color:#161619}
.proj-btn--primary:hover{filter:brightness(1.08);transform:translateY(-2px)}
.proj-btn--ghost{border:1px solid var(--line);color:var(--text);background:var(--card-2)}
.proj-btn--ghost:hover{border-color:var(--gold);color:var(--gold)}
.project--feature{grid-column:1 / -1}
@media (min-width:721px){.project--feature{grid-column:span 2}}

/* contact */
.contact-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:26px}
.btn-primary{
  background:linear-gradient(135deg,var(--gold),#cf9d2c);color:#161619;
  font-weight:700;padding:14px 26px;border-radius:13px;transition:.2s;
}
.btn-primary:hover{filter:brightness(1.08);transform:translateY(-2px)}
.btn-outline{
  border:1px solid var(--line);padding:14px 26px;border-radius:13px;
  color:var(--text);transition:.2s;
}
.btn-outline:hover{border-color:var(--gold);color:var(--gold)}
.foot{color:var(--muted-2);font-size:13px;margin-top:46px}

/* ===================== RIGHT RAIL ===================== */
.rail{
  position:sticky;top:26px;height:calc(100vh - 52px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
}
.rail a{
  width:44px;height:44px;border-radius:12px;
  display:grid;place-items:center;color:var(--muted-2);
  border:1px solid transparent;transition:.2s;
}
.rail a:hover{color:var(--gold);background:var(--card)}
.rail a.active{color:var(--gold);background:var(--card);border-color:var(--line)}

/* ===================== REVEAL ANIM ===================== */
.section{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease}
.section.in{opacity:1;transform:none}

/* ===================== RESPONSIVE ===================== */
@media (max-width:1080px){
  .layout{grid-template-columns:260px 1fr;gap:22px}
  .rail{display:none}
}
@media (max-width:820px){
  .layout{grid-template-columns:1fr;padding:16px}
  .sidebar{position:relative;top:0;height:auto}
  .card{flex-direction:row;flex-wrap:wrap;align-items:center;gap:18px;text-align:left;height:auto}
  .card-top{margin-bottom:0}
  .avatar{width:84px;height:84px}
  .card-role{margin-top:0}
  .btn-talk{margin-top:0;width:auto;flex:1}
  .tl-item{grid-template-columns:1fr;gap:6px}
  .creds-grid{grid-template-columns:1fr;gap:28px}
  .stats{gap:30px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .section{opacity:1;transform:none;transition:none}
}
