/* One column, quiet type, generous space. */
.masthead__inner{padding-block:3rem 2rem;display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.6rem 1rem;}
.masthead__mark{justify-self:start;font:400 1.3rem/1.4 var(--serif);color:var(--text);text-decoration:none;padding:.08em .18em .14em;margin-inline-start:-.18em;background-image:linear-gradient(var(--highlight),var(--highlight));background-repeat:no-repeat;background-position:0 100%;background-size:100% 6px;transition:background-size .45s cubic-bezier(.2,.75,.25,1);}
/* The bar floods upward into a full highlighter sweep. Nothing resizes. */
.masthead__mark:hover,.masthead__mark:focus-visible{background-size:100% 10px;}
.masthead__description{grid-column:1 / -1;margin:0;color:var(--text-2);font-size:1rem;line-height:1.5;}
.home__intro{margin:0 0 3.5rem;padding-bottom:2.5rem;border-bottom:1px solid var(--rule);}
.home__intro .intro__hello{font-size:1.35rem;margin:0 0 1.5rem;}
.home__intro .intro__more{margin:1.5rem 0 0;}
.intro__more a{font:400 1rem var(--sans-text);color:var(--text);text-decoration:none;padding:.08em .18em .14em;margin-inline-start:-.18em;background-image:linear-gradient(var(--highlight),var(--highlight));background-repeat:no-repeat;background-position:0 100%;background-size:100% 4px;transition:background-size .45s cubic-bezier(.2,.75,.25,1);}
.intro__more a:hover,.intro__more a:focus-visible{background-size:100% 7px;}
.entry{margin:0 0 3rem;}
.entry .deck{font-size:1.2rem;}
.byline{display:flex;gap:.4rem 1rem;flex-wrap:wrap;margin:1rem 0;}
.home__rail{margin-top:4rem;}
.section-title{font:400 .8rem var(--sans-text);letter-spacing:.12em;text-transform:uppercase;color:var(--text-2);margin:0 0 2rem;}
.rail__title{font:400 1rem var(--sans-text);margin:0 0 2rem;color:var(--text-2);}
.rail__item{margin-bottom:2.5rem;}
.rail__body{font-size:1.15rem;}
.rail__more{font:400 .8rem var(--sans-text);}
.home__rail--oss .rail__more{margin-top:2.5rem;font-size:.95rem;line-height:1.6;color:var(--text-2);max-width:34rem;}
.article-head{padding-block:1rem 2rem;row-gap:.8rem;}
.article-head > *{margin:0;}
.article-head .deck{font-size:1.25rem;}
.article-contents{font:400 .95rem/1.6 var(--sans-text);margin-bottom:1rem;color:var(--text-2);}
.article-contents summary{cursor:pointer;}
.article-contents ol{padding-left:1.25rem;list-style:none;}
.site-footer__inner{margin-top:4rem;padding-block:2rem 3rem;display:flex;justify-content:space-between;align-items:baseline;gap:1rem;flex-wrap:wrap;font:400 .8rem/1.5 var(--sans-text);color:var(--text-2);}
.site-footer p{margin:0;}
.site-footer__links{display:flex;gap:1.25rem;align-items:baseline;flex-wrap:wrap;}
.site-footer__links a,.theme-toggle{text-decoration:none;color:var(--text-2);background-image:linear-gradient(var(--highlight),var(--highlight));background-repeat:no-repeat;background-position:0 100%;background-size:0 4px;transition:background-size .35s cubic-bezier(.2,.75,.25,1),color .2s ease;}
.site-footer__links a:hover,.site-footer__links a:focus-visible,.theme-toggle:hover,.theme-toggle:focus-visible{background-size:100% 4px;}
.theme-toggle{padding:0;background-color:transparent;border:0;font:inherit;cursor:pointer;}
.wrap--reading{padding-top:1rem;}
@media(max-width:35rem){.masthead__inner{padding-top:2rem;}}
@media(prefers-reduced-motion:reduce){.masthead__mark,.site-footer__links a,.theme-toggle{transition:none;}}

/* Quiet bottom rail, same type and rule as the footer it sits over. */
.cookie-notice{position:fixed;left:0;right:0;bottom:0;z-index:10;background:var(--surface);border-top:1px solid var(--rule);}
.cookie-notice__inner{display:flex;gap:.75rem 1.5rem;align-items:baseline;justify-content:space-between;flex-wrap:wrap;padding-block:1rem;font:400 .8rem/1.5 var(--sans-text);color:var(--text-2);}
.cookie-notice p{margin:0;max-width:62ch;}
.cookie-notice button{font:inherit;color:var(--highlight-ink);background:var(--highlight);border:0;padding:.45rem .9rem;align-self:center;cursor:pointer;white-space:nowrap;}
.cookie-notice button:hover,.cookie-notice button:focus-visible{background:var(--text);color:var(--surface);}

/* Libraries. The footer strip rides on every page; the homepage rail and the
   about page's list annotate the same eight entries from src/_data/libraries.json. */
.site-footer__oss{margin-top:4rem;padding-top:2rem;border-top:1px solid var(--rule);font:400 .8rem/1.5 var(--sans-text);color:var(--text-2);}
.oss__nav{display:flex;gap:.6rem 1.5rem;flex-wrap:wrap;align-items:baseline;}
.site-footer .oss__note{margin:.6rem 0 1.3rem;color:var(--text-2);max-width:42rem;}
.site-footer__oss + .site-footer__inner{margin-top:1.25rem;padding-top:0;}
.oss__label{text-transform:uppercase;letter-spacing:.08em;}
.oss__list{display:flex;gap:.5rem 1.25rem;flex-wrap:wrap;margin:0;padding:0;list-style:none;}
.oss__list a{text-decoration:none;color:var(--text-2);background-image:linear-gradient(var(--highlight),var(--highlight));background-repeat:no-repeat;background-position:0 100%;background-size:0 4px;transition:background-size .35s cubic-bezier(.2,.75,.25,1),color .2s ease;}
.oss__list a:hover,.oss__list a:focus-visible{background-size:100% 4px;}
.home__rail--oss{padding-top:2.5rem;border-top:1px solid var(--rule);}
.rail__lede{font:400 1rem/1.6 var(--sans-text);color:var(--text-2);margin:0 0 2rem;max-width:34rem;}
.oss__name{font:400 1.05rem var(--sans-text);margin:0 0 .35rem;}
.oss__name a{text-decoration:none;}
.oss__ns{color:var(--text-2);}
.prose .oss{margin:1.5rem 0;}
.prose .oss dt{font:400 1.05rem var(--sans-text);margin-top:1.5rem;}
.prose .oss dd{margin:.35rem 0 0;color:var(--text-2);}
