/* ============================================================
   Jorge Gabín — site styles
   Shared by index.html, publications.html and cv.html
   ============================================================ */

:root{
  --bg:#FBFBFA;
  --fg:#1C2522;
  --muted:#6A7873;
  --soft:#8B9994;
  --rule:#E2E6E3;
  --card:#FFFFFF;
  --accent:#14594C;
  --accent-soft:#E6F0EC;
  --nav:rgba(251,251,250,.85);
  --shadow:0 1px 2px rgba(28,37,34,.04),0 6px 20px rgba(28,37,34,.06);
  --w:50rem;
}
html[data-theme="dark"]{
  --bg:#131716;
  --fg:#E6EAE8;
  --muted:#98A5A0;
  --soft:#7C8A85;
  --rule:#262D2B;
  --card:#1A201E;
  --accent:#63C0A8;
  --accent-soft:#1B2C28;
  --nav:rgba(19,23,22,.85);
  --shadow:0 1px 2px rgba(0,0,0,.3),0 6px 20px rgba(0,0,0,.25);
}

*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}

body{
  margin:0;
  background:var(--bg);
  color:var(--fg);
  font-family:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  font-size:1.0625rem;
  line-height:1.7;
  transition:background-color .2s ease,color .2s ease;
}

h1,h2,h3,.slab{font-family:"Zilla Slab",Georgia,"Times New Roman",serif;}

a{color:var(--accent);text-decoration:none;}
a:hover{text-decoration:underline;text-underline-offset:.2em;}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px;}

.wrap{max-width:var(--w);margin-inline:auto;padding-inline:1.5rem;}
.wrap-wide{max-width:60rem;margin-inline:auto;padding-inline:1.5rem;}

.skip{position:absolute;left:-9999px;}
.skip:focus{left:1rem;top:1rem;z-index:20;background:var(--card);padding:.5rem .9rem;border-radius:6px;}

/* ---------------- navbar ---------------- */

.nav{
  position:sticky;top:0;z-index:10;
  background:var(--nav);
  -webkit-backdrop-filter:saturate(1.8) blur(12px);
  backdrop-filter:saturate(1.8) blur(12px);
  border-bottom:1px solid var(--rule);
}
.nav > div{display:flex;align-items:center;gap:1rem;height:3.5rem;}
.brand{
  font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:1.0625rem;
  color:var(--fg);margin-right:auto;letter-spacing:-.005em;
}
.brand:hover{text-decoration:none;color:var(--accent);}
.nav ul{display:flex;gap:1.15rem;list-style:none;margin:0;padding:0;font-size:.9375rem;overflow-x:auto;scrollbar-width:none;}
.nav ul::-webkit-scrollbar{display:none;}
.nav ul a{color:var(--muted);white-space:nowrap;padding-block:.4rem;}
.nav ul a:hover{color:var(--accent);text-decoration:none;}
.nav ul a[aria-current="page"]{color:var(--fg);box-shadow:inset 0 -2px 0 var(--accent);}

.toggle{
  flex:none;display:grid;place-items:center;width:2rem;height:2rem;
  border:0;background:transparent;color:var(--muted);cursor:pointer;border-radius:50%;
}
.toggle:hover{color:var(--accent);background:var(--accent-soft);}
.toggle svg{width:1.1rem;height:1.1rem;display:none;}
html[data-mode="system"] .i-system,
html[data-mode="light"] .i-light,
html[data-mode="dark"] .i-dark{display:block;}

/* ---------------- shared page furniture ---------------- */

main{padding-top:3rem;}
section{margin-bottom:3.25rem;scroll-margin-top:4.75rem;}

h1{
  margin:0 0 .15rem;
  font-size:clamp(2.25rem,7vw,3.1rem);
  font-weight:600;line-height:1.05;letter-spacing:-.02em;
}
.tagline{margin:0 0 1.5rem;color:var(--muted);font-size:1.0625rem;}

h2{
  margin:0 0 1.1rem;font-size:1.5rem;font-weight:600;letter-spacing:-.01em;
  padding-bottom:.4rem;border-bottom:1px solid var(--rule);
}

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

footer{
  margin-top:1rem;padding:1.75rem 0 3rem;border-top:1px solid var(--rule);
  font-size:.875rem;color:var(--soft);text-align:center;
}

/* ---------------- about (index) ---------------- */

.about{display:grid;grid-template-columns:1fr 13rem;gap:2.5rem;align-items:start;}
.about p:last-of-type{margin-bottom:0;}

.figure{position:sticky;top:5rem;}
.portrait{
  width:100%;aspect-ratio:1;border-radius:50%;overflow:hidden;
  background:var(--accent-soft);box-shadow:var(--shadow);
}
.portrait img{width:100%;height:100%;object-fit:cover;display:block;}
.portrait .initials{
  width:100%;height:100%;display:grid;place-items:center;
  font-family:"Zilla Slab",Georgia,serif;font-size:3.5rem;font-weight:600;color:var(--accent);
}
.figure .meta{margin:.9rem 0 0;font-size:.875rem;line-height:1.55;color:var(--soft);text-align:center;}

.social{margin:1.75rem 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.9rem;}
.social a{color:var(--soft);display:grid;place-items:center;}
.social a:hover{color:var(--accent);}
.social svg{width:1.3rem;height:1.3rem;fill:currentColor;display:block;}
/* brand logos (dblp, UDC, Linknovate): the file is used as a mask and painted
   in currentColor, so they match the other icons in both themes. Source files
   need a transparent background. */
.social .logo{
  width:1.3rem;height:1.3rem;display:block;background:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
}
.social .logo-dblp{-webkit-mask-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAACACAYAAAD5whz9AAAI1UlEQVR42u2du48cRRDGfzO7h3VgLPBLgpCHECIjsIVkATK2bCxhEiIgAomEhIxHwDlBZPwHIBHwBwACbEvY2BZCRoKI1AhEhI15CMxxvt0dgqnmevtmZ2dmu3v6jipptd69vfN019b3fV3VUw0woLSTwCpwE7gEHGfDBqj1YrcD60ABjOX5H+BNYI98JlMHxbUc2AF8BkyAkeWcArgOPGV9fkmcpBbYbpHnU+KINXmeCKwZB50Gjiq8xTMzwU8Cf0u0TCyHTKzXI2BF4S2OZVbk2NFSOI+R9e9fFN7iOCYHloFPK5xQONGj8NYDz6w4PFPUOEjhLTLP3HRUWd1D4S0SzwyBn2t4RuEtcqSYb3gB3AkckmgYNHTqQH4X4D7gWXn/O+BGxWfUWtiSPL9aEQVtHgpvgeBsH/BnSzhTeIvgmJ3A1QUdo+otAJxlwNsymTcXdIzCW0fLK94rgN9FMvsUGQVlBnsP8JEFbyarrdHTAM72WxM28RQ1Cm8eomipQXpG4S3x9Myi0aPqreWi8zjVZYBQDlJ4a8gz88oACm89OKZpGUDhLUKuzF3PrEne6/EWeTNfX4wmubf/Nc+0LQPEhrcsUcTJQv5x6FYGiAFvH0nqKE/EORkbSeAmiNQZygycdSkDhIa3EfCgLIAvyvuTHq9raKlKgF2U28HWrIxG63JHPufnY0nPFAnBhHHEy/J6vYeoMQ4xX5S9wOsiVH4CfgTOAEdkDvMQcOajDBCCd9YstTaI7BBjuyn3412vuc5Dvq8xRBnA18PwzTs1+O5bDGWOQ1Ych6yLIwysGSi7KEuPgc/IDlUG8CEGChEmOwMqNHcy985wyKTmGletNFfja2yCfSHKAL7sVvk2hnKIWSYco9zbfUWga7cl44c1E25+/9EW890KzkKWARaBswnlHgU8wFlWMcnGIUWDCIkOubHKAF155u0FB+0SepVDJhZ/JAO5McsAXQZ9teOgXYfsBd4Qyes6ZNFr/FPUrVfH9FEGaDvo/S0G3UTyTjwig2/ITaIM0HTQrzQYdBvJmyLkJlcGaJLgPFuzVlhE8qYAuVuaZ9Yq1gqDGQrrj0gOWRRyW/HMCTbfo9m3Y8bCfcdlwDs8S97YkNtJMgP8wPTdzX0/TPSuBJK8sSB3IY2/DzifKM98AtwNvOZZ8oaG3NbQNZyjYFJ83EjMIbMgt3W2uYmkHCfqlHFAyRsCcm+pc8TQ4pDCSlQek8TbSyIvsSqYXos+nlNHRUV6JRUzEXJQeGZNgqCY9wupKJjt+ujEM0ekFGr/EXWIf8eMhGeOzOOZAeW+sTPA/Vb1LSedHSjbxUx9Z4dw9llqNpJkwDfAwxIhSzp/Qa2QOb8K3Av8NYtnMivUNDriOeYv4B7g2izH5L5zN2pz4WwduA14wVHGmxyzqvPVi4PuqAuIHHjfWqeohTcTIS9K5FRuWMyBDyWVkaOdK2LaMuUun5kRc86Sx2pxeebZWTyTi5Y+J68nOm/R0kcZZX1rWeY9qyL/r+X1WOcsmmMAHpM5H8/6wGVx0FB5JpqZUsBhxxdTL86JU5Rn4vHMSGDsoLw3qOKYIXBBeSaquWWAkc0zucUzZmuSOiYuzzzBxibKqR+aheUHsp5ZUp6JZob4N90NYHPK32h6JjbPTATGTrCxsfI/xxQSJTeAd+V9Tc/EMbOwfA4nPWNHjLlBSWEsvm26ASt3IuQ95ZnocFZZBnDXLavCNWrxHXSHK5dxeOYD5ZleeGaqDJA7KYJC1jOraBkgtk2VAVzHwEYbEG3eFp9nnjNRlFesRgfA546z1MJnAabKAK5cHgqMXbZWpmpxHANlGWAEjPOKFAFoGaAPMzs1D1fJZQNd50h7A/l25JmpMkDVxBvi1zJAXDNi6wCw7DqmQMsAffPMYWCczQirgvIO2yuUt0DrFtrwZrYqrwLP1HGIlgHi88xE1jNPz2vvu5v++2H+H+HsoXxOaP2ucrkXW85qwqqgvH38e+WZ6FyTzVunaBkgrpkK5rfz+i6vAXcBjyjPBDWTcRnKPD+fz0kRaBkgLGSZfgQmy3KWsm3/F/PkG6TZp2yr37287rz3GeWt/G4WYKZjUu1TVncf/VZxyDXgLcchGQ3zk6n2KZs14NTbqRSUt5KvyBrRdkjr3jKQXj9ME732tdxIPGKqHDLsKqhS5BnXIdcom43eTdkaK8WWXefZ6CJrHLJwv7KB8MzZngftOuS04PMu63pTg1wDYT9YSxBvNS7TLeMVFju1fBH+mNQoGNhot5gi5I7lS3WiieLqAmf7iXdcSRNJaaI5S1zat+pT1sUxMY4raSopBwlD7iye+VSuz2vzpNDHlbgO6SIp+4TcKP0w6wb9qudBu4S+iKTsA3Kj9MNsMmhfx2LNkry7F5CUKZ8QFYVnFjl+sYnkXUTjp3pClM0zXiWzPeh3Wg66qeQdesBeG3JHCfLMOgHbyB8RvJzX9but5PUt7VM8IWpE4ONKVmsG3VXy+rLtfkJUbXrmokVqpsHpyIPk9WHb9YSoRnB2qOabeH2GwopVlrYP8F4jrZM7gh2LhaUoTK/m3yjPZDlNeaztXs+E3hVyhwKj44ScE+xYrKrS5y5H7vblEFedDSRy7QlJiWcGBGqnPKiR1H2bKdHupDxivkjEQfbxi8MQcOZOQoobAe1regr4pWLB11cZ4KZw4Mz0jI8VqPkPU7PCctDHwAMCbWOZjL6ueyTIcsB33mwrmj34o0yfyBQb3oKWAbaiuYu6vuAtaBlgq0ePmYg9shAdWZMWozobrAyg8JZoGUDhLeEygMJbwDKAYtu0tB5Q7ui8AHwlk3YfG/1efCko++/9CnwpkaN3iCcAb8HKAApvCZcBVL11d1DwMoDCW3d4m1kGUJnWXBysW/DmM/dm+mGqEEsI3qKWARTe2sFbozKAWnz1pumZROFNywCJwpuWARKFN7sMoDyTGLwZnjmlPNMvvF1n8z2aE8q93Tt0fdkvvL0J/MP03c3rwO06Vf3D23HgksDaKnDSfOZf/db0rr0WrSkAAAAASUVORK5CYII=");mask-image:url("data:image/png;base64,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");}
.social .logo-udc{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%22369.5%20308.5%20457.4%20231.8%22%20style%3D%22enable-background%3Anew%200%200%201190.6%20841.9%3B%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cstyle%20type%3D%22text%2Fcss%22%3E%20.st0%7Bfill%3A%23B53784%3B%7D%20%3C%2Fstyle%3E%20%3Cg%20id%3D%22_x31_00%22%3E%20%3C%2Fg%3E%20%3Cg%20id%3D%22Capa_1%22%3E%20%3Cg%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M598.2%2C422.9L759.8%2C350c-40.7-20.6-98-33.5-161.6-33.5c-63.6%2C0-121%2C12.9-161.6%2C33.5L598.2%2C422.9z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M818.4%2C406.5c-4.5-13-13.8-25.2-27.1-36.2l-180.7%2C51.8L818.4%2C406.5z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M792.4%2C477.6c13.1-11.1%2C22.3-23.5%2C26.5-36.6l-208.5-14.6L792.4%2C477.6z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M598.2%2C425.8l-162.8%2C72.5c40.7%2C20.9%2C98.6%2C34%2C162.8%2C34c64.2%2C0%2C122-13.1%2C162.8-34L598.2%2C425.8z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M377.5%2C441c4.2%2C13.2%2C13.4%2C25.5%2C26.5%2C36.6l182-51.2L377.5%2C441z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M585.7%2C422.1L405%2C370.3c-13.2%2C11-22.6%2C23.2-27.1%2C36.2L585.7%2C422.1z%22%2F%3E%20%3C%2Fg%3E%20%3C%2Fg%3E%20%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%22369.5%20308.5%20457.4%20231.8%22%20style%3D%22enable-background%3Anew%200%200%201190.6%20841.9%3B%22%20xml%3Aspace%3D%22preserve%22%3E%20%3Cstyle%20type%3D%22text%2Fcss%22%3E%20.st0%7Bfill%3A%23B53784%3B%7D%20%3C%2Fstyle%3E%20%3Cg%20id%3D%22_x31_00%22%3E%20%3C%2Fg%3E%20%3Cg%20id%3D%22Capa_1%22%3E%20%3Cg%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M598.2%2C422.9L759.8%2C350c-40.7-20.6-98-33.5-161.6-33.5c-63.6%2C0-121%2C12.9-161.6%2C33.5L598.2%2C422.9z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M818.4%2C406.5c-4.5-13-13.8-25.2-27.1-36.2l-180.7%2C51.8L818.4%2C406.5z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M792.4%2C477.6c13.1-11.1%2C22.3-23.5%2C26.5-36.6l-208.5-14.6L792.4%2C477.6z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M598.2%2C425.8l-162.8%2C72.5c40.7%2C20.9%2C98.6%2C34%2C162.8%2C34c64.2%2C0%2C122-13.1%2C162.8-34L598.2%2C425.8z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M377.5%2C441c4.2%2C13.2%2C13.4%2C25.5%2C26.5%2C36.6l182-51.2L377.5%2C441z%22%2F%3E%20%3Cpath%20class%3D%22st0%22%20d%3D%22M585.7%2C422.1L405%2C370.3c-13.2%2C11-22.6%2C23.2-27.1%2C36.2L585.7%2C422.1z%22%2F%3E%20%3C%2Fg%3E%20%3C%2Fg%3E%20%3C%2Fsvg%3E");}
.social .logo-lkn{-webkit-mask-image:url("data:image/png;base64,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");mask-image:url("data:image/png;base64,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");}

/* the UDC and Linknovate marks are wide, so their boxes are wider than the
   square icons to give them the same optical weight */
.social .logo-udc{width:1.75rem;}
.social .logo-lkn{width:1.5rem;}

/* ---------------- news ---------------- */

.news{width:100%;border-collapse:collapse;font-size:.9688rem;}
.news td{padding:.55rem .75rem .55rem 0;border-bottom:1px solid var(--rule);vertical-align:top;}
.news tr:last-child td{border-bottom:0;}
.news .when{width:6.5rem;color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap;}
.news .embed{display:block;width:100%;max-width:34rem;margin:.75rem 0 .25rem;border:1px solid var(--rule);border-radius:8px;background:var(--card);}

/* ---------------- positions (index) ---------------- */

.position{
  display:grid;grid-template-columns:1fr auto;gap:.25rem 1.5rem;align-items:baseline;
  padding:.95rem 0;border-bottom:1px solid var(--rule);
}
.position:last-of-type{border-bottom:0;padding-bottom:0;}
.position h3{margin:0;font-size:1.125rem;font-weight:600;line-height:1.35;}
.position .org{margin:.05rem 0 0;color:var(--muted);font-size:.9688rem;grid-column:1;}
.position .since{font-size:.875rem;color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap;grid-row:1;grid-column:2;}

/* ---------------- publications ---------------- */

.year-group{display:grid;grid-template-columns:4.5rem 1fr;gap:0 1.5rem;margin-bottom:1.5rem;}
.year-group > .year{
  font-family:"Zilla Slab",Georgia,serif;font-size:1.75rem;font-weight:600;
  color:var(--soft);line-height:1.2;padding-top:1.05rem;
  position:sticky;top:4.75rem;align-self:start;
}

.pub{
  display:grid;grid-template-columns:7rem 1fr;gap:1.1rem;
  padding:1.05rem 0;border-bottom:1px solid var(--rule);align-items:start;
}
.pub:last-child{border-bottom:0;}
.thumb{
  aspect-ratio:4/3;border-radius:6px;overflow:hidden;
  background:var(--accent-soft);display:grid;place-items:center;
  border:1px solid var(--rule);
}
.thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.venue-badge{
  font-family:"Zilla Slab",Georgia,serif;font-weight:600;font-size:.9375rem;
  color:var(--accent);text-align:center;padding:.2rem;line-height:1.2;
}
.pub h3{margin:0 0 .2rem;font-size:1.125rem;font-weight:600;line-height:1.35;}
.pub .authors{margin:0;font-size:.9375rem;color:var(--muted);}
.pub .authors b{color:var(--fg);font-weight:600;}
.pub .venue{margin:.2rem 0 0;font-size:.9375rem;font-style:italic;color:var(--muted);}
.pub .award{margin:.25rem 0 0;font-size:.875rem;font-weight:600;color:var(--accent);}
.links{margin:.6rem 0 0;display:flex;flex-wrap:wrap;gap:.45rem;}
.links a{
  font-size:.8125rem;padding:.16rem .55rem;border:1px solid var(--accent);
  border-radius:4px;line-height:1.5;
}
.links a:hover{background:var(--accent);color:var(--bg);text-decoration:none;}
.note-line{margin:0 0 2rem;font-size:.9688rem;color:var(--muted);}

/* ---------------- repos ---------------- */

.repo{
  display:grid;grid-template-columns:7rem 1fr;gap:1.1rem;
  padding:1.05rem 0;border-bottom:1px solid var(--rule);align-items:start;
}
.repo:last-of-type{border-bottom:0;}
.repo h3{margin:0 0 .2rem;font-size:1.125rem;font-weight:600;line-height:1.35;}
.repo h3 a{color:var(--fg);}
.repo h3 a:hover{color:var(--accent);}
.repo h3 .owner{color:var(--soft);font-weight:400;}
.repo .desc{margin:0;font-size:.9375rem;color:var(--muted);}
.repo .paper{margin:.2rem 0 0;font-size:.9375rem;font-style:italic;color:var(--muted);}
.repo .facts{
  margin:.55rem 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:.25rem 1.1rem;
  font-size:.8125rem;color:var(--soft);font-variant-numeric:tabular-nums;
}
.repo .facts li{display:inline-flex;align-items:center;gap:.35rem;}
.repo .dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--accent);flex:none;}
.repo .facts svg{width:.9rem;height:.9rem;fill:currentColor;display:block;}
.repo .links a{display:inline-flex;align-items:center;gap:.35rem;}
.repo .links .gh{width:.85rem;height:.85rem;fill:currentColor;flex:none;}

/* ---------------- projects ---------------- */

.project{
  display:grid;grid-template-columns:7rem 1fr;gap:1.1rem;
  padding:1.05rem 0;border-bottom:1px solid var(--rule);align-items:start;
}
.project:last-of-type{border-bottom:0;}
.project h3{margin:0 0 .2rem;font-size:1.125rem;font-weight:600;line-height:1.35;}
.project .funder{margin:0;font-size:.9375rem;color:var(--muted);}
.project .ref{color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap;}
.project .role{margin:.2rem 0 0;font-size:.9375rem;font-style:italic;color:var(--muted);}
.project .desc{margin:.45rem 0 0;font-size:.9375rem;color:var(--muted);}

/* ---------------- cv ---------------- */

.cv-layout{display:grid;grid-template-columns:11rem 1fr;gap:3rem;align-items:start;}
.toc{position:sticky;top:5rem;font-size:.9375rem;}
.toc ol{list-style:none;margin:0;padding:0;border-left:1px solid var(--rule);}
.toc li a{display:block;padding:.3rem 0 .3rem .9rem;color:var(--muted);margin-left:-1px;border-left:2px solid transparent;}
.toc li a:hover{color:var(--accent);text-decoration:none;}
.toc li a.active{color:var(--fg);border-left-color:var(--accent);}

.entry{
  display:grid;grid-template-columns:6.5rem 1fr;gap:0 1.25rem;
  padding:.95rem 0;border-bottom:1px solid var(--rule);
}
.entry:last-of-type{border-bottom:0;}
.years{font-size:.875rem;color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap;padding-top:.3rem;}
.entry h3{margin:0;font-size:1.0938rem;font-weight:600;line-height:1.35;}
.org{margin:.05rem 0 0;color:var(--muted);font-size:.9375rem;}
.note{margin:.35rem 0 0;font-size:.9375rem;color:var(--muted);}
.note ul{margin:.2rem 0 0;padding-left:1.1rem;}
.note li{margin-bottom:.15rem;}
.award{color:var(--accent);}

.courses{margin:0;padding:0;list-style:none;}
.courses li{padding:.65rem 0;border-bottom:1px solid var(--rule);}
.courses li:last-child{border-bottom:0;}
.courses b{font-family:"Zilla Slab",Georgia,serif;font-size:1.0938rem;font-weight:600;}
.courses span{display:block;font-size:.9063rem;color:var(--soft);}

.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;}
.tags li{
  font-size:.875rem;padding:.2rem .65rem;border:1px solid var(--rule);
  border-radius:999px;color:var(--muted);background:var(--card);
}

.langs{margin:0;padding:0;list-style:none;}
.langs li{display:flex;justify-content:space-between;gap:1rem;padding:.45rem 0;border-bottom:1px solid var(--rule);font-size:.9688rem;}
.langs li:last-child{border-bottom:0;}
.langs span{color:var(--soft);}

/* ---------------- responsive ---------------- */

@media (max-width:44rem){
  .about{grid-template-columns:1fr;gap:1.75rem;}
  .figure{position:static;max-width:11rem;}
  .cv-layout{grid-template-columns:1fr;gap:1.5rem;}
  .toc{position:static;}
  .toc ol{display:flex;flex-wrap:wrap;gap:.25rem 1rem;border-left:0;}
  .toc li a{padding:.15rem 0;border-left:0;}
  .toc li a.active{box-shadow:inset 0 -2px 0 var(--accent);}
  .year-group{grid-template-columns:1fr;gap:.25rem;}
  .year-group > .year{position:static;padding-top:.5rem;font-size:1.4rem;}
  .pub{grid-template-columns:1fr;gap:.75rem;}
  .repo{grid-template-columns:1fr;gap:.75rem;}
  .project{grid-template-columns:1fr;gap:.75rem;}
  .thumb{max-width:9rem;}
  .entry{grid-template-columns:1fr;gap:.15rem;}
  .years{padding-top:0;}
  .position{grid-template-columns:1fr;}
  .position .since{grid-row:auto;grid-column:1;}
  .news .when{width:5rem;}
  .brand{display:none;}
  .nav ul{margin-right:auto;}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{transition:none !important;}
}

@media print{
  .nav,.toc,footer,.social{display:none;}
  body{background:#fff;color:#000;font-size:10.5pt;}
  .cv-layout{grid-template-columns:1fr;}
  a{color:#000;}
}
