:root{--bg:#f5f6f1;--surface:#fff;--text:#1c3029;--muted:#5d6d64;--accent:#32654b;--dark:#173e36;--soft:#e5eddf;--line:#d8e0d4;--radius:26px;--shadow:0 18px 60px #1b362810}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--bg);color:var(--text);font-family:'Quicksand',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;line-height:1.7}a{color:inherit}a:focus-visible{outline:3px solid #668c2d;outline-offset:6px;border-radius:3px}img{display:block;max-width:100%;height:auto}svg{display:block}h1,h2,h3,p{overflow-wrap:break-word}p{margin:0 0 18px}.shell,.site-bar,.footer{width:min(1180px,calc(100% - 48px));margin-inline:auto}.site-bar{padding:25px 0 12px;display:flex;align-items:center;justify-content:space-between;gap:24px}.site-bar a{text-decoration:none;font-weight:700}.site-name{font-weight:700;font-size:1.18rem;letter-spacing:.02em;text-decoration:none}.site-bar nav{display:flex;gap:27px;align-items:center;font-size:.9rem;color:var(--muted)}.back-link{color:var(--accent)}.skip-link{position:fixed;left:16px;top:-100px;background:var(--dark);color:#fff;padding:10px 18px;z-index:10}.skip-link:focus{top:12px}.archive-hero{padding:72px 0 58px}.eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 18px;text-transform:uppercase;letter-spacing:.14em;font-size:.75rem;line-height:1.5;font-weight:700;color:var(--accent)}.eyebrow svg{width:26px;height:26px;stroke:currentColor;stroke-width:1.8;flex-shrink:0}h1{margin:0;font-size:clamp(3.2rem,7.5vw,6.4rem);font-weight:700;letter-spacing:-.055em;line-height:1.03}h1 span{color:var(--accent)}.intro{font-size:clamp(1.04rem,2vw,1.23rem);color:var(--muted);max-width:680px;margin:25px 0 0;line-height:1.8}.section-heading{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:23px 0}.section-heading h2{font-size:1rem;margin:0}.section-heading>span{font-size:.79rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.project-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);box-shadow:var(--shadow);transition:box-shadow .2s,transform .2s}.project-card:hover{transform:translateY(-3px);box-shadow:0 24px 65px #1b36281b}.card-link{display:grid;grid-template-columns:1.12fr 1fr;text-decoration:none}.card-art{background:var(--dark);display:flex;align-items:center;min-height:430px}.card-art img{width:100%;height:100%;object-fit:cover}.card-body{padding:38px 42px;position:relative}.card-body .eyebrow{margin:0 0 19px}.status{display:inline-flex;align-items:center;gap:8px;background:var(--soft);font-size:.75rem;font-weight:700;border-radius:30px;padding:4px 10px;white-space:nowrap}.status>span{width:6px;height:6px;background:var(--accent);border-radius:50%}.card-body h2{font-size:clamp(1.85rem,3vw,2.6rem);line-height:1.12;letter-spacing:-.035em;margin:18px 0}.card-body p:not(.eyebrow){color:var(--muted);font-size:1rem}.tag-list{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}.tag-list>span{border:1px solid var(--line);border-radius:20px;padding:3px 10px;font-size:.72rem;color:var(--muted)}.card-cta{display:flex;justify-content:space-between;font-weight:700;font-size:.92rem;border-top:1px solid var(--line);padding-top:17px;color:var(--accent)}.card-cta span{font-size:1.4rem;line-height:1}.collection{padding-bottom:80px}.footer{border-top:1px solid var(--line);padding:29px 0 40px;display:flex;align-items:center;justify-content:space-between;gap:25px;color:var(--muted);font-size:.8rem}.footer .site-name{font-size:1rem;color:var(--text)}.footer>a:last-child{text-decoration:none}.project-header{padding:62px 0 36px}.project-header h1{font-size:clamp(3.1rem,7vw,6rem)}.meta-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:27px;font-size:.8rem}.meta-row>span:not(.status){padding:3px 13px;border:1px solid var(--line);border-radius:30px;color:var(--muted)}.project-hero{margin:0;border-radius:var(--radius);overflow:hidden;background:var(--dark)}.project-hero>img{width:100%;max-height:550px;object-fit:cover;object-position:center}.project-hero figcaption{font-size:.74rem;color:#d4e0d1;padding:16px 24px;text-align:center;border-top:1px solid #ffffff16}.project-content{display:grid;grid-template-columns:245px minmax(0,1fr);gap:65px;padding:64px 0 30px}.project-sidebar{align-self:start;position:sticky;top:30px}.page-nav{display:grid;gap:11px}.page-nav .eyebrow{font-size:.69rem;margin-bottom:6px}.page-nav>a{text-decoration:none;color:var(--muted);font-size:.91rem}.page-nav>a:hover{color:var(--accent);text-decoration:underline}.setup-note{border-top:1px solid var(--line);margin-top:30px;padding-top:23px;display:grid;gap:7px;font-size:.75rem;color:var(--muted)}.setup-note strong{color:var(--text);font-weight:700}.project-body{max-width:820px;min-width:0}.project-body section{padding-bottom:45px;margin-bottom:42px;border-bottom:1px solid var(--line)}.project-body section:last-child{border:0;margin-bottom:0}.project-body h2{font-size:clamp(1.85rem,3vw,2.7rem);line-height:1.2;letter-spacing:-.04em;margin:0 0 24px}.project-body h3{font-size:1.12rem;line-height:1.45;margin:0 0 10px}.project-body p{color:var(--muted)}.project-body .eyebrow{color:var(--accent)}.callout{background:var(--soft);border-radius:18px;padding:22px 25px;margin:25px 0 0}.callout strong{display:block;margin-bottom:5px}.callout p{margin:0}.parts-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:30px}.part{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:25px}.part-number{font-size:.76rem;letter-spacing:.12em;color:var(--accent);font-weight:700;display:block;margin-bottom:22px}.part p{font-size:.9rem;margin:0}.plain-list{padding-left:20px;color:var(--muted);margin:0 0 20px}.plain-list li{padding:5px 0}.small-note{font-size:.82rem;line-height:1.7}.stack{display:grid;gap:14px}.stack article{border:1px solid var(--line);background:var(--surface);padding:25px;border-radius:19px}.stack-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;font-weight:700;color:var(--accent)}.stack h3{margin-top:7px}.stack p{margin-bottom:0;font-size:.94rem}.source-note{font-size:.76rem;margin:16px 0 0}.source-note a{text-underline-offset:3px}.build-steps{padding:0;list-style:none;counter-reset:step}.build-steps li{counter-increment:step;position:relative;padding:0 0 22px 56px;margin:26px 0 0;border-bottom:1px solid var(--line)}.build-steps li:last-child{border:0;padding-bottom:0}.build-steps li:before{content:counter(step,decimal-leading-zero);position:absolute;top:1px;left:0;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--soft);color:var(--accent);font-size:.8rem;font-weight:700}.build-steps p{font-size:.96rem;margin-bottom:0}.lesson{margin-bottom:26px}.lesson>p:last-child{margin-bottom:0}.result{margin-top:32px;background:var(--dark);color:#edf3e5;border-radius:22px;padding:30px}.result .eyebrow{color:#b6d4a8}.result h3{font-size:1.65rem;letter-spacing:-.03em;margin-bottom:15px}.result p{color:#d4e0d1;margin:0}.references ul{list-style:none;padding:0}.references li{border-bottom:1px solid var(--line)}.references li a{display:flex;justify-content:space-between;gap:18px;text-decoration:none;padding:14px 0;color:var(--accent);font-size:.94rem}.references li a:hover{text-decoration:underline}.references .small-note{margin-top:26px}
@media(max-width:900px){.card-body{padding:30px}.card-art{min-height:400px}.project-content{grid-template-columns:190px minmax(0,1fr);gap:32px}.project-hero>img{max-height:480px}.parts-grid{grid-template-columns:1fr}.part{padding:23px}.part-number{margin-bottom:12px}}
@media(max-width:680px){.shell,.site-bar,.footer{width:calc(100% - 36px)}.site-bar{gap:18px;align-items:flex-start;padding-top:20px}.site-bar nav{gap:10px 18px;justify-content:flex-end;flex-wrap:wrap;font-size:.75rem;max-width:240px}.site-name{font-size:1.05rem;white-space:nowrap}.archive-hero{padding:49px 0 42px}.archive-hero h1{font-size:clamp(3.1rem,12vw,4.7rem)}.card-link{grid-template-columns:1fr}.card-art{min-height:0}.card-art img{aspect-ratio:960/700}.card-body{padding:28px}.card-body h2{font-size:2rem}.collection{padding-bottom:52px}.footer{align-items:flex-start;flex-wrap:wrap;gap:12px;font-size:.75rem}.footer>span{width:100%;order:3}.project-header{padding:48px 0 28px}.project-header h1{font-size:clamp(2.8rem,10vw,4.5rem)}.project-hero>img{max-height:none;aspect-ratio:960/700;object-fit:contain}.project-hero figcaption{font-size:.65rem;padding:12px 16px}.project-content{grid-template-columns:1fr;gap:35px;padding-top:36px}.project-sidebar{position:static}.page-nav{display:flex;flex-wrap:wrap;gap:9px}.page-nav .eyebrow{width:100%;margin-bottom:5px}.page-nav>a{border:1px solid var(--line);border-radius:30px;padding:5px 12px;font-size:.72rem}.setup-note{display:flex;flex-wrap:wrap;gap:6px 15px;padding-top:18px;margin-top:22px;font-size:.7rem}.setup-note strong{width:100%}.project-body section{padding-bottom:30px;margin-bottom:32px}.project-body h2{font-size:1.9rem}.parts-grid{grid-template-columns:1fr 1fr;gap:12px}.part{padding:18px}.part h3{font-size:1rem}.part p{font-size:.82rem}.build-steps li{padding-left:46px}.result{padding:25px}.eyebrow{font-size:.67rem}.intro{font-size:1rem}}
@media(max-width:360px){.parts-grid{grid-template-columns:1fr}.site-bar nav{gap:8px 12px}.card-body{padding:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-card{transition:none}.project-card:hover{transform:none}}
@media print{body{background:#fff;color:#000}.site-bar,.project-sidebar,.footer,.skip-link{display:none}.shell{width:100%}.project-content{display:block;padding-top:24px}.project-header{padding-top:0}.project-header h1{font-size:40pt}.project-hero>img{max-height:300px;object-fit:contain}.project-body{max-width:none}.project-body section{break-inside:avoid}.project-body p{color:#222}.callout,.part,.stack article,.result{background:#fff;border:1px solid #aaa;box-shadow:none;color:#000}.result p,.result .eyebrow{color:#222}a{text-decoration:underline}}
/* Keep the keyboard focus indicator inside the clipped project card. */
.card-link:focus-visible{outline:3px solid var(--accent);outline-offset:-6px;border-radius:var(--radius)}
