:root{
  --bg:#0b3b2e;
  --text:#0f172a;
  --muted:#475569;
  --card:#ffffff;
  --alt:#f4f7f6;
  --border:rgba(15,23,42,.12);
  --accent:#1f8a70;
  --shadow:0 10px 30px rgba(2,6,23,.12);
  --radius:18px;
  --max:1120px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text);background:#fff;line-height:1.55}
a{color:inherit} a:hover{text-decoration:underline}
.container{max-width:var(--max);margin:0 auto;padding:0 20px}
.skip-link{position:absolute;left:-999px;top:10px;background:#fff;border:1px solid var(--border);padding:10px 14px;border-radius:12px;z-index:999}
.skip-link:focus{left:10px}
.muted{color:var(--muted)} .small{font-size:.92rem}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 16px;border-radius:999px;background:var(--accent);color:#fff;text-decoration:none;border:1px solid transparent;font-weight:700;box-shadow:0 8px 20px rgba(31,138,112,.22);cursor:pointer}
.btn:hover{filter:brightness(.97);text-decoration:none}
.btn--ghost{background:transparent;color:var(--text);border-color:var(--border);box-shadow:none}
.btn--small{padding:10px 14px;font-size:.95rem}
.btn--block{width:100%}
.header{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.header__inner{display:flex;align-items:center;justify-content:space-between;height:70px;gap:14px}
.brand{display:flex;align-items:center;gap:12px}
.brand__logo{width:44px;height:44px;object-fit:contain;border-radius:12px;background:#fff;border:1px solid rgba(15,23,42,.10)}
.brand__text strong{display:block;font-size:.98rem}
.brand__text span{display:block;font-size:.88rem;color:var(--muted)}
.nav{display:flex;align-items:center;gap:14px}
.nav a{padding:10px 10px;border-radius:12px;text-decoration:none}
.nav a:hover{background:rgba(15,23,42,.05);text-decoration:none}
.nav__toggle{display:none;border:1px solid var(--border);background:#fff;border-radius:12px;padding:10px 12px}
.burger{width:22px;height:2px;background:var(--text);display:block;position:relative}
.burger::before,.burger::after{content:"";width:22px;height:2px;background:var(--text);position:absolute;left:0}
.burger::before{top:-7px} .burger::after{top:7px}
.hero{position:relative;overflow:hidden;padding:70px 0 40px}
.hero__bg{position:absolute;inset:0;background:radial-gradient(900px 500px at 15% 5%,rgba(31,138,112,.22),transparent 60%),radial-gradient(900px 500px at 85% 15%,rgba(14,165,165,.18),transparent 60%),linear-gradient(180deg,rgba(11,59,46,.06),transparent 40%);pointer-events:none}
.hero__grid{position:relative;display:grid;grid-template-columns:1.2fr .8fr;gap:22px;align-items:start}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-weight:700;color:var(--bg);background:rgba(11,59,46,.08);padding:8px 12px;border-radius:999px;border:1px solid rgba(11,59,46,.12)}
.hero h1{font-size:clamp(2rem,3vw,3rem);line-height:1.08;margin:14px 0 10px}
.lead{font-size:1.08rem;color:var(--muted);max-width:75ch}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0}
.hero__tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.tag{font-size:.9rem;color:var(--bg);background:rgba(31,138,112,.10);border:1px solid rgba(31,138,112,.18);padding:8px 10px;border-radius:999px}
.section{padding:70px 0}
.section--alt{background:var(--alt)}
.section__head{max-width:78ch;margin-bottom:24px}
.section__head h2{margin:0 0 10px;font-size:1.9rem}
.section__head p{margin:0;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}
.card h2,.card h3{margin:0 0 10px}
.divider{height:1px;background:rgba(15,23,42,.10);margin:14px 0}
.checklist{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.checklist li{position:relative;padding-left:26px;color:var(--muted)}
.checklist li::before{content:"✓";position:absolute;left:0;top:0;color:var(--accent);font-weight:900}
.plain{list-style:none;padding:0;margin:0;display:grid;gap:8px;color:var(--muted)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.feature{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:0 10px 25px rgba(2,6,23,.06)}
.feature h3{margin:0 0 8px}
.feature p{margin:0;color:var(--muted)}
.steps{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.step{display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:start;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.step__num{width:38px;height:38px;border-radius:12px;background:rgba(31,138,112,.14);color:var(--bg);display:grid;place-items:center;font-weight:900}
.step h3{margin:0 0 6px}
.step p{margin:0;color:var(--muted)}
.callout{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px;border-radius:var(--radius);border:1px solid rgba(11,59,46,.18);background:rgba(11,59,46,.06)}
.note{margin-top:16px;padding:14px 16px;border-radius:16px;border:1px solid rgba(15,23,42,.12);background:#fff;color:var(--muted)}
.contact{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;align-items:start}
.form{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:18px}
.field{display:grid;gap:8px;margin-bottom:12px}
label{font-weight:700}
input,select,textarea{width:100%;padding:12px 12px;border-radius:12px;border:1px solid rgba(15,23,42,.16);font:inherit}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(14,165,165,.22);border-color:rgba(14,165,165,.55)}
.hidden{display:none}
.footer{border-top:1px solid var(--border);padding:26px 0}
.footer__inner{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
@media (max-width:920px){.hero__grid{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr}.contact{grid-template-columns:1fr}.callout{flex-direction:column;align-items:flex-start}}
@media (max-width:760px){.nav__toggle{display:inline-flex}.nav{position:absolute;right:20px;top:72px;background:#fff;border:1px solid var(--border);border-radius:16px;padding:10px;display:none;flex-direction:column;width:min(340px,calc(100vw - 40px));box-shadow:var(--shadow)}.nav.is-open{display:flex}}


/* === Timeline (Proyectos) === */
.timeline-toolbar{margin:18px 0;padding:16px}
.timeline-toolbar__row{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:14px;align-items:end}
.timeline-toolbar .field{margin:0}
.timeline{position:relative;margin-top:16px;display:grid;gap:14px}
.timeline::before{content:"";position:absolute;left:22px;top:0;bottom:0;width:2px;background:rgba(15,23,42,.10)}
.tl-item{position:relative;padding-left:54px}
.tl-dot{position:absolute;left:14px;top:18px;width:18px;height:18px;border-radius:999px;background:rgba(31,138,112,.16);border:2px solid rgba(31,138,112,.7)}
.tl-card{padding:16px}
.tl-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:8px}
.tl-year{font-weight:900;color:var(--bg);background:rgba(11,59,46,.08);border:1px solid rgba(11,59,46,.14);padding:6px 10px;border-radius:999px}
.tl-line{font-weight:700;color:var(--muted)}
.tl-title{margin:0 0 8px}
.tl-summary{margin:0;color:var(--muted)}
.tl-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.tl-tags .tag{padding:6px 10px}
.tl-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.timeline-modal{position:fixed;inset:0;display:none;z-index:50}
.timeline-modal.is-open{display:block}
.timeline-modal__backdrop{position:absolute;inset:0;background:rgba(2,6,23,.55)}
.timeline-modal__panel{position:relative;max-width:min(920px,calc(100vw - 40px));margin:6vh auto;padding:18px}
.timeline-modal__head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.timeline-modal__kicker{margin:0 0 6px;color:var(--muted);font-weight:700}
.timeline-modal__body p{margin:0 0 10px;color:var(--muted)}
.timeline-modal__body ul{margin:0 0 10px;padding-left:18px;color:var(--muted)}
@media (max-width:920px){
  .timeline-toolbar__row{grid-template-columns:1fr;align-items:stretch}
  .timeline::before{left:16px}
  .tl-item{padding-left:44px}
  .tl-dot{left:8px}
}


/* TEAM GRID */
#equipo .team-grid{
  display:grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 18px;
}
#equipo .team-card{
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 16px;
  padding: 18px 18px;
  box-shadow: 0 8px 22px rgba(0,0,0,0.10);
  height: 100%;
}
#equipo .team-card h3{
  margin: 0 0 6px 0;
  font-size: 1.05rem;
  line-height: 1.25;
}
#equipo .team-card .muted{
  margin: 0 0 10px 0;
  opacity: 0.85;
}
#equipo .team-card p{
  margin: 0;
  line-height: 1.55;
}
/* Responsive */
@media (max-width: 980px){
  #equipo .team-grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px){
  #equipo .team-grid{ grid-template-columns: 1fr; gap: 14px; }
  #equipo .team-card{ padding: 16px; border-radius: 14px; }
}


/* Fotos institucionales */
.section-photo{
  display: block;
  margin: 10px 0 14px;
}
.section-photo img{
  width: 100%;
  height: auto;
  border-radius: 14px;
  display: block;
  object-fit: cover;
}
.section-photo--inicio img{
  aspect-ratio: 16 / 9;
}

/* Galería en Herramientas */
.photo-grid{
  margin-top: 18px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.photo-grid picture, .photo-grid img{
  width: 100%;
  display: block;
}
.photo-grid img{
  border-radius: 14px;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

/* Responsive fotos */
@media (max-width: 980px){
  .section-photo--inicio img{ aspect-ratio: 16 / 10; }
  .photo-grid{ grid-template-columns: 1fr; }
  .photo-grid img{ aspect-ratio: 16 / 9; }
}




/* Responsive images */
.section-image, .responsive-img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 12px;
}

/* Team grid responsiveness */
.team-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

@media (max-width: 1024px) {
  .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 640px) {
  .team-grid { grid-template-columns: 1fr; }
  .team-member p { margin-bottom: 0; }
}



/* UX: clickable brand (logo + nombre) */
.brand { display: flex; gap: 12px; align-items: center; text-decoration: none; color: inherit; cursor: pointer; }
.brand:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; border-radius: 10px; }
.brand__logo { flex: 0 0 auto; }
