:root{
  --accent:#2b6777;
  --accent-dark:#1c4750;
  --text:#222;
  --muted:#6b6b6b;
  --bg:#ffffff;
  --bg-alt:#f7f7f5;
  --border:#e2e2e0;
  --pdf:#b3261e;
  --html:#1a5fb4;
  --slides:#8f5902;
  --gretl:#1e7d32;
  --notebook:#6a3d9a;
  --radius:6px;
  --maxw:880px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  font-family:-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--text);
  background:var(--bg);
  line-height:1.55;
}
#content, .container{max-width:var(--maxw);margin:0 auto;padding:0 1.2rem;}
h1,h2,h3{line-height:1.25;}
a{color:var(--accent-dark);}
code{background:var(--bg-alt);padding:.05rem .3rem;border-radius:3px;font-size:.9em;}

/* --- header / hero --- */
.hero{padding:2.2rem 0 1.4rem;border-bottom:1px solid var(--border);}
.hero-top{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap;}
.ucm-logo{height:105px;width:auto;}
.hero h1{font-size:1.9rem;margin:0 0 .15rem;}
.hero .subtitle{color:var(--muted);font-size:1rem;margin:0;}
.hero .meta{color:var(--muted);font-size:.92rem;margin:.3rem 0 0;}
.quote-box{
  margin:1.1rem 0 0;
  padding:.7rem 1rem;
  border-left:3px solid var(--accent);
  background:var(--bg-alt);
  font-style:italic;
  color:#444;
}
.mantra{margin:.6rem 0 0;font-weight:600;color:var(--accent-dark);}

/* --- sticky nav --- */
nav.blocknav{
  position:sticky;top:0;
  background:rgba(255,255,255,.96);
  border-bottom:1px solid var(--border);
  backdrop-filter:blur(2px);
  z-index:10;
  overflow-x:auto;
  white-space:nowrap;
}
nav.blocknav .container{padding-top:.5rem;padding-bottom:.5rem;}
nav.blocknav a{
  color:var(--text);
  text-decoration:none;
  font-size:.85rem;
  margin-right:1.1rem;
  padding:.15rem 0;
  border-bottom:2px solid transparent;
}
nav.blocknav a:hover{border-bottom-color:var(--accent);}

/* --- how-to section --- */
.howto{
  background:var(--bg-alt);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:1rem 1.2rem;
  margin:1.6rem 0;
  font-size:.93rem;
}
.howto h2{margin-top:0;font-size:1.05rem;}
.legend{list-style:none;margin:.5rem 0 0;padding:0;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.35rem .8rem;}
.legend li{font-size:.87rem;color:#444;}
.license-note{font-size:.83rem;color:var(--muted);margin-top:.7rem;}

/* --- progress --- */
.progress-wrap{margin:1.2rem 0;}
.progress-label{font-size:.85rem;color:var(--muted);margin-bottom:.3rem;}
.progress-bar{height:8px;background:var(--bg-alt);border:1px solid var(--border);border-radius:99px;overflow:hidden;}
.progress-fill{height:100%;background:var(--accent);}

/* --- calendar table --- */
.calendar-table{width:100%;border-collapse:collapse;font-size:.9rem;margin-top:.6rem;}
.calendar-table th,.calendar-table td{padding:.4rem .6rem;border-bottom:1px solid var(--border);text-align:left;}
.calendar-table th{color:var(--muted);font-weight:600;font-size:.82rem;}
.calendar-table td:last-child,.calendar-table th:last-child{white-space:nowrap;}
.calendar-table a{font-weight:700;text-decoration:none;}
.calendar-table a:hover{text-decoration:underline;}
.calendar-table tbody tr:hover{background:var(--bg-alt);}

/* --- blocks --- */
section.block{margin:2.4rem 0;scroll-margin-top:3.2rem;}
section.block h2{
  font-size:1.3rem;
  border-bottom:2px solid var(--accent);
  padding-bottom:.25rem;
  margin-bottom:.4rem;
}
section.block .block-range{color:var(--muted);font-weight:400;font-size:.85rem;}
section.block .block-intro{color:#333;font-size:.95rem;margin:.4rem 0 1.1rem;}

/* --- session card --- */
.session{border-top:1px solid var(--border);padding:.75rem 0;scroll-margin-top:3.2rem;}
.session:last-child{border-bottom:1px solid var(--border);}
.session-row{
  display:grid;
  grid-template-columns:auto auto 1fr auto;
  align-items:baseline;
  gap:.6rem;
  column-gap:.7rem;
}
.session-code{font-weight:700;color:var(--accent-dark);font-size:.85rem;}
.session-date{color:var(--muted);font-size:.8rem;white-space:nowrap;}
.session-title{font-weight:600;font-size:.98rem;}
.badges{display:flex;gap:.35rem;flex-wrap:wrap;justify-self:end;}
.badge{
  display:inline-block;
  font-size:.72rem;
  font-weight:600;
  padding:.12rem .5rem;
  border-radius:99px;
  text-decoration:none;
  color:#fff;
  white-space:nowrap;
}
.badge.pdf{background:var(--pdf);}
.badge.html{background:var(--html);}
.badge.slides{background:var(--slides);}
.badge.gretl{background:var(--gretl);}
.badge.notebook{background:var(--notebook);}
.badge.pending{background:#b9b9b9;color:#fff;}

.session-room{margin:.3rem 0 0;font-size:.82rem;color:var(--muted);}
.session-room strong{color:var(--accent-dark);font-weight:600;}
.session-summary{margin:.4rem 0 0;font-size:.92rem;color:#333;}
.session-detail{margin:.35rem 0 0;}
.session-detail summary{cursor:pointer;font-size:.82rem;color:var(--accent-dark);outline:none;}
.session-detail[open] summary{margin-bottom:.35rem;}
.session-detail p{font-size:.88rem;color:#444;margin:.2rem 0 0;}

.session.pending{opacity:.65;}
.session.pending .session-title{font-style:italic;}

/* subsesiones (prácticas A/B/C/D) */
.subsession{margin-left:1rem;border-top:1px dashed var(--border);padding:.55rem 0;}
.subsession:first-of-type{border-top:none;}

/* nota de calendario (evaluación/repaso) */
.calendar-extra{
  background:var(--bg-alt);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:.8rem 1.1rem;
  font-size:.88rem;
  margin:1.2rem 0 2rem;
}

/* --- footer --- */
footer{
  border-top:1px solid var(--border);
  margin-top:3rem;
  padding:1.4rem 0 2.4rem;
  font-size:.82rem;
  color:var(--muted);
}
footer a{color:var(--accent-dark);}

@media (max-width:600px){
  .session-row{grid-template-columns:1fr;row-gap:.25rem;}
  .badges{justify-self:start;}
  .ucm-logo{height:40px;}
}
