/* ============================================================================
 *  Portafolio Jhon Supelano — Sistema multi-tema
 *
 *  Arquitectura: [data-theme="X"] en <html> activa un tema.
 *  Temas:
 *    - Papel   (default): cálido tipo microsoft.ai · Instrument Serif + Red Hat Mono
 *    - Aurora  (oscuro):  azul/violeta · Inter
 *
 *  Cada tema redefine solo las --vars. El resto del CSS es tema-agnóstico.
 *  El cambio es instantáneo (sin recarga) y se persiste en localStorage.
 * ============================================================================ */

/* ---------- Fuentes autohospedadas (privacidad: sin Google) ---------- */
@font-face{
  font-family:"Instrument Serif";
  src:url("../fonts/display.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Red Hat Mono";
  src:url("../fonts/interfaz.woff2") format("woff2");
  font-weight:300 700; font-style:normal; font-display:swap;
}

/* ============================================================================
 *  TEMA PAPEL  (default — microsoft.ai medido)
 *  Fondo crema, acento bronce, serif de titular, mono de interfaz
 * ============================================================================ */
:root,
[data-theme="papel"]{
  --bg:#f7f1e3;
  --bg-soft:#fffdf7;
  --surface:#fffdf7;
  --surface-hover:#f2ead9;
  --hundido:#f2ead9;
  --border:#e5dbc8;
  --border-strong:#d4c7ac;

  --tinta:#241f1b;          /* titulares */
  --fuerte:#4a4139;
  --texto:#5d524b;          /* cuerpo */
  --apagado:#71675d;        /* secundario 4.9:1 */
  --apoyo:#8e8070;          /* no esencial 3.4:1 */
  --muted:#8e8070;

  --bronce:#8c5a31;         /* acento */
  --bronce-hover:#73492a;
  --bronce-suave:#f6e9dc;
  --melocoton:#fbd3be;
  --accent:#8c5a31;
  --accent-2:#a76f3e;
  --accent-3:#8c5a31;

  /* Tipografía: serif en display, mono en interfaz, sistema en prosa */
  --font-display:"Instrument Serif", Georgia, serif;
  --font-ui:"Red Hat Mono", ui-monospace, monospace;
  --font-prosa:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --tracking-display:-0.035em;
  --tracking-ui:-0.018em;

  --radio:3px;
  --radio-caja:6px;
  --radio-boton:999px;
  --shadow:0 1px 2px rgba(93,82,75,.06);
  --shadow-elev:0 4px 16px -4px rgba(93,82,75,.14);
  --ambient-opacity:0;
  --selection-bg:#fbd3be;
  color-scheme:light;
}

/* ============================================================================
 *  TEMA AURORA  (oscuro — Inter, azul/violeta)
 * ============================================================================ */
[data-theme="aurora"]{
  --bg:#0a0b14;
  --bg-soft:#10121f;
  --surface:rgba(255,255,255,.035);
  --surface-hover:rgba(255,255,255,.06);
  --hundido:#10121f;
  --border:rgba(255,255,255,.08);
  --border-strong:rgba(255,255,255,.14);

  --tinta:#e8eaf2;
  --fuerte:#c4c8da;
  --texto:#aeb2c8;
  --apagado:#8a8fa8;
  --apoyo:#6b7088;
  --muted:#6b7088;

  --bronce:#6e8cff;
  --bronce-hover:#5a78f0;
  --bronce-suave:rgba(110,140,255,.12);
  --melocoton:#9d7cff;
  --accent:#6e8cff;
  --accent-2:#9d7cff;
  --accent-3:#5fd0c3;

  --font-display:"Inter", "Segoe UI", system-ui, sans-serif;
  --font-ui:"Inter", "Segoe UI", system-ui, sans-serif;
  --font-prosa:"Inter", "Segoe UI", system-ui, sans-serif;

  --tracking-display:-0.025em;
  --tracking-ui:0;

  --radio:12px;
  --radio-caja:18px;
  --radio-boton:999px;
  --shadow:0 20px 60px -20px rgba(0,0,0,.6);
  --shadow-elev:0 20px 50px -22px rgba(20,30,80,.4);
  --ambient-opacity:1;
  --selection-bg:#9d7cff;
  color-scheme:dark;
}

/* ============================================================================
 *  Base (tema-agnóstica)
 * ============================================================================ */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--bg);color:var(--texto);
  font-family:var(--font-ui);
  font-size:13px;line-height:1.65;letter-spacing:var(--tracking-ui);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overflow-x:hidden;
  transition:background .4s ease, color .4s ease;
}
@media (min-width:760px){body{font-size:14px}}

a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
::selection{background:var(--selection-bg);color:var(--tinta)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radio)}

/* Fondo ambiental (orbes) — solo visible en Aurora */
.ambient{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;opacity:var(--ambient-opacity);transition:opacity .4s}
.ambient::before,.ambient::after{content:"";position:absolute;border-radius:50%;filter:blur(110px);opacity:.5}
.ambient::before{width:620px;height:620px;background:radial-gradient(circle,var(--accent),transparent 70%);top:-180px;right:-120px}
.ambient::after{width:540px;height:540px;background:radial-gradient(circle,var(--accent-2),transparent 70%);bottom:-200px;left:-140px;opacity:.35}

.wrap{max-width:1080px;margin:0 auto;padding:0 32px}
@media (max-width:720px){.wrap{padding:0 20px}}

/* ---------- Nav ---------- */
.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(18px);
  background:color-mix(in srgb,var(--bg) 78%,transparent);
  border-bottom:1px solid var(--border)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:var(--tracking-ui);font-size:14px}
.brand .mark{width:28px;height:28px;border-radius:var(--radio);background:var(--tinta);color:var(--bg-soft);display:grid;place-items:center;font-family:var(--font-display);font-size:16px;line-height:1}
[data-theme="aurora"] .brand .mark{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff}
.nav-links{display:flex;gap:24px;font-size:12.5px;color:var(--apagado)}
.nav-links a{transition:color .2s}
.nav-links a:hover{color:var(--tinta)}
.nav-right{display:flex;align-items:center;gap:10px}

/* Selector de tema */
.theme-select{position:relative}
.theme-btn{display:flex;align-items:center;gap:7px;padding:7px 14px;border-radius:var(--radio-boton);
  background:var(--surface);border:1px solid var(--border-strong);font-family:inherit;font-size:12px;
  font-weight:500;letter-spacing:var(--tracking-ui);color:var(--texto);cursor:pointer;transition:.2s}
.theme-btn:hover{background:var(--surface-hover)}
.theme-swatch{width:12px;height:12px;border-radius:50%;border:1px solid var(--border-strong)}
.theme-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:var(--bg-soft);
  border:1px solid var(--border);border-radius:var(--radio-caja);box-shadow:var(--shadow-elev);padding:6px;
  opacity:0;transform:translateY(-6px);pointer-events:none;transition:.2s;z-index:60}
.theme-menu.open{opacity:1;transform:none;pointer-events:auto}
.theme-opt{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:var(--radio);cursor:pointer;
  font-size:12.5px;color:var(--texto);transition:background .15s}
.theme-opt:hover{background:var(--surface-hover)}
.theme-opt.active{background:var(--bronce-suave);color:var(--bronce)}
.theme-opt-swatch{width:22px;height:22px;border-radius:var(--radio);border:1px solid var(--border-strong);flex-shrink:0}
.theme-opt-txt b{display:block;font-weight:600;color:var(--tinta)}
.theme-opt-txt span{font-size:10.5px;color:var(--apoyo)}
.theme-opt.active .theme-opt-txt b{color:var(--bronce)}

.nav-cta{padding:7px 16px;border-radius:var(--radio-boton);background:var(--tinta);color:var(--bg);
  font-size:12px;font-weight:600;border:none;cursor:pointer;transition:.2s}
.nav-cta:hover{opacity:.85}
[data-theme="aurora"] .nav-cta{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff}
@media (max-width:760px){.nav-links{display:none}.theme-btn span.theme-name{display:none}}

/* ---------- Hero ---------- */
.hero{padding:96px 0 80px;text-align:center;position:relative}
.eyebrow{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:var(--radio);
  background:var(--surface);border:1px solid var(--border);font-family:var(--font-ui);font-size:11px;
  font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--apagado);margin-bottom:28px}
.eyebrow .pulse{width:6px;height:6px;border-radius:50%;background:var(--accent-3);box-shadow:0 0 10px var(--accent-3);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

.hero h1{font-family:var(--font-display);font-weight:400;color:var(--tinta);
  font-size:clamp(2.6rem,7vw,4.8rem);letter-spacing:var(--tracking-display);line-height:1.02;margin-bottom:20px;text-wrap:balance}
.hero h1 .grad{color:var(--bronce)}
[data-theme="aurora"] .hero h1 .grad{background:linear-gradient(120deg,var(--accent),var(--accent-2),var(--accent-3));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(110,140,255,.4))}

.hero .lead{max-width:62ch;margin:0 auto 34px;font-family:var(--font-prosa);font-size:clamp(1rem,2vw,1.15rem);
  color:var(--apagado);line-height:1.62;letter-spacing:0}
#roleRotator{color:var(--bronce);font-weight:600}
[data-theme="aurora"] #roleRotator{color:var(--accent)}
.typed-cursor{color:var(--bronce);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

.hero-cta{display:flex;gap:11px;justify-content:center;flex-wrap:wrap;margin-bottom:50px}

.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 22px;border-radius:var(--radio-boton);
  font-family:var(--font-ui);font-weight:500;font-size:12.5px;letter-spacing:var(--tracking-ui);
  cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,transform .2s}
.btn-primary{background:var(--tinta);color:var(--bg)}
.btn-primary:hover{background:var(--fuerte);transform:translateY(-1px)}
[data-theme="aurora"] .btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;box-shadow:0 12px 30px -10px var(--accent)}
.btn-ghost{background:transparent;color:var(--fuerte);border-color:var(--border-strong)}
.btn-ghost:hover{background:var(--surface);border-color:var(--apoyo)}

.stats{display:flex;gap:44px;justify-content:center;flex-wrap:wrap}
.stat .num{font-family:var(--font-display);font-size:clamp(1.8rem,4vw,2.6rem);color:var(--bronce);line-height:1;letter-spacing:var(--tracking-display)}
[data-theme="aurora"] .stat .num{background:linear-gradient(120deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .lbl{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--apoyo);margin-top:6px;font-family:var(--font-ui)}

/* ---------- Sections ---------- */
section{padding:72px 0}
.section-head{margin-bottom:42px}
.section-head .kicker{font-family:var(--font-ui);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--bronce);font-weight:500;margin-bottom:10px}
.section-head h2{font-family:var(--font-display);font-size:clamp(1.8rem,4vw,2.6rem);font-weight:400;
  color:var(--tinta);letter-spacing:var(--tracking-display);line-height:1.06;text-wrap:balance}
.section-head p{color:var(--apagado);margin-top:10px;max-width:560px;font-family:var(--font-prosa);font-size:14px;line-height:1.6}

/* ---------- About ---------- */
.about-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:44px;align-items:start}
@media (max-width:860px){.about-grid{grid-template-columns:1fr}}
.about-bio p{color:var(--apagado);margin-bottom:14px;font-family:var(--font-prosa);font-size:14px;line-height:1.65}
.about-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radio-caja);padding:26px;box-shadow:var(--shadow)}
.about-card h3{font-family:var(--font-ui);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--bronce);margin-bottom:16px;font-weight:500}
.about-card ul{list-style:none;display:flex;flex-direction:column;gap:12px}
.about-card li{display:flex;gap:11px;font-size:12.5px;color:var(--texto);font-family:var(--font-prosa);line-height:1.5}
.about-card li::before{content:"✦";color:var(--bronce);flex-shrink:0}
.social-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px}
.social-row a{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radio);
  background:var(--surface);border:1px solid var(--border);transition:.2s;color:var(--apagado)}
.social-row a:hover{background:var(--surface-hover);color:var(--bronce);transform:translateY(-2px);border-color:var(--border-strong)}

/* ---------- Skills ---------- */
.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.skill{background:var(--surface);border:1px solid var(--border);border-radius:var(--radio-caja);padding:15px 17px;transition:.25s}
.skill:hover{background:var(--surface-hover);border-color:var(--border-strong)}
.skill-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px}
.skill-name{font-weight:500;font-size:12.5px;color:var(--tinta)}
.skill-pct{font-size:11px;color:var(--apoyo);font-variant-numeric:tabular-nums}
.skill-group{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--bronce);margin-bottom:7px;font-family:var(--font-ui)}
.skill-bar{height:3px;border-radius:99px;background:var(--border);overflow:hidden}
.skill-fill{height:100%;border-radius:99px;background:var(--bronce);width:0;transition:width 1.2s cubic-bezier(.22,.61,.36,1)}
[data-theme="aurora"] .skill-fill{background:linear-gradient(90deg,var(--accent),var(--accent-2))}

/* ---------- Projects ---------- */
.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:20px}
.project{background:var(--surface);border:1px solid var(--border);border-radius:var(--radio-caja);overflow:hidden;display:flex;flex-direction:column;transition:.3s}
.project:hover{transform:translateY(-5px);border-color:var(--border-strong);box-shadow:var(--shadow-elev)}
.project-img{aspect-ratio:16/9;background:var(--hundido);overflow:hidden;position:relative}
.project-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.project:hover .project-img img{transform:scale(1.04)}
.project-cat{position:absolute;top:12px;left:12px;padding:4px 11px;border-radius:var(--radio);font-size:10.5px;
  font-weight:500;letter-spacing:.04em;background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(8px);
  border:1px solid var(--border-strong);color:var(--bronce);font-family:var(--font-ui)}
.project-body{padding:20px;display:flex;flex-direction:column;flex:1}
.project-body h3{font-family:var(--font-display);font-size:1.35rem;font-weight:400;color:var(--tinta);
  letter-spacing:var(--tracking-display);margin-bottom:5px}
.project-tag{color:var(--apagado);font-size:13px;margin-bottom:13px;font-family:var(--font-prosa)}
.project-desc{color:var(--texto);font-size:12.5px;margin-bottom:15px;flex:1;font-family:var(--font-prosa);line-height:1.55}
.project-tech{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:15px}
.chip{font-size:10.5px;padding:3px 9px;border-radius:var(--radio);background:var(--hundido);border:1px solid var(--border);color:var(--apagado);font-family:var(--font-ui)}
.project-link{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:500;color:var(--bronce);transition:gap .2s;font-family:var(--font-ui)}
.project-link:hover{gap:11px}

/* ---------- Experience ---------- */
.timeline{position:relative;padding-left:30px}
.timeline::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:1px;background:var(--border-strong)}
.tl-item{position:relative;padding-bottom:32px}
.tl-item:last-child{padding-bottom:0}
.tl-item::before{content:"";position:absolute;left:-27px;top:6px;width:11px;height:11px;border-radius:50%;
  background:var(--bg);border:2px solid var(--bronce);box-shadow:0 0 0 4px var(--bronce-suave)}
.tl-role{font-family:var(--font-display);font-weight:400;font-size:1.15rem;color:var(--tinta);letter-spacing:var(--tracking-display)}
.tl-org{color:var(--bronce);font-weight:500;font-size:12.5px;font-family:var(--font-ui)}
.tl-period{font-size:11px;color:var(--apoyo);margin-bottom:6px;font-variant-numeric:tabular-nums;font-family:var(--font-ui)}
.tl-desc{color:var(--texto);font-size:13px;font-family:var(--font-prosa);line-height:1.55}

/* ---------- Estudios (timeline académica) ---------- */
.study-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:7px 0 9px}
.study-status{display:inline-block;padding:2px 9px;border-radius:var(--radio);font-size:10.5px;font-weight:500;
  letter-spacing:.04em;background:var(--bronce-suave);color:var(--bronce);border:1px solid rgba(140,90,49,.2);font-family:var(--font-ui)}
.study-status.ongoing{background:rgba(63,107,71,.12);color:#3f6b47;border-color:rgba(63,107,71,.25)}
[data-theme="aurora"] .study-status.ongoing{background:rgba(95,208,195,.12);color:var(--accent-3);border-color:rgba(95,208,195,.3)}
.study-note{font-size:11px;color:var(--apoyo);font-family:var(--font-prosa)}
.study-skills{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.study-skills .chip{font-size:10px;background:var(--hundido)}

/* ---------- Constelación de certificaciones ---------- */
.constellation-wrap{position:relative;width:100%;height:min(640px,82vw);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radio-caja);
  overflow:hidden;box-shadow:var(--shadow)}
[data-theme="aurora"] .constellation-wrap{background:radial-gradient(ellipse at center, rgba(110,140,255,.04), transparent 70%)}
#certCanvas{display:block;width:100%;height:100%;cursor:default}
.cert-tooltip{display:none;position:absolute;pointer-events:none;max-width:200px;padding:8px 11px;
  background:var(--bg-soft);border:1px solid var(--border-strong);border-radius:var(--radio);
  box-shadow:var(--shadow-elev);font-family:var(--font-ui);font-size:11px;z-index:5}
.cert-tooltip b{display:block;color:var(--tinta);font-weight:600;margin-bottom:3px;line-height:1.3}
.cert-tooltip span{color:var(--apoyo);font-size:10px}
.constellation-legend{display:flex;flex-wrap:wrap;gap:7px 14px;padding:14px 18px;border-top:1px solid var(--border);
  background:var(--bg-soft)}
.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--texto);font-family:var(--font-ui)}
.legend-item em{font-style:normal;color:var(--apoyo);font-size:10px;font-variant-numeric:tabular-nums}
.legend-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;box-shadow:0 0 6px currentColor}
.constellation-hint{font-size:11.5px;color:var(--apoyo);margin-top:14px;text-align:center;font-family:var(--font-ui)}

/* ---------- Contact ---------- */
.contact{text-align:center;padding:90px 0}
.contact h2{font-family:var(--font-display);font-size:clamp(2rem,5vw,3rem);font-weight:400;
  color:var(--tinta);letter-spacing:var(--tracking-display);margin-bottom:16px;text-wrap:balance}
.contact .grad{color:var(--bronce)}
[data-theme="aurora"] .contact .grad{background:linear-gradient(120deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.contact p{color:var(--apagado);max-width:520px;margin:0 auto 30px;font-family:var(--font-prosa);font-size:14px}

/* ---------- Footer ---------- */
footer{border-top:1px solid var(--border);padding:28px 0;text-align:center;color:var(--apoyo);font-size:11.5px;font-family:var(--font-ui)}
footer a{color:var(--apagado)}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s,transform .7s}
.reveal.in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none}
}
