@import url("fonts.css");
:root{--ink:#22232a;--muted:#666870;--paper:#faf9f6;--line:#dededc;--site-accent:#7952b3;--site-accent-contrast:#fff}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.7 "Inter Tight",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}a:hover{color:var(--site-accent)}a:focus-visible,summary:focus-visible{outline:3px solid var(--site-accent);outline-offset:6px}p{margin:0 0 20px}h1,h2,h3{line-height:1.15;letter-spacing:-.045em;margin:0 0 24px}h1{font-size:clamp(52px,6.6vw,94px);font-weight:650}h1 em{font-family:"Inter Tight",sans-serif;font-weight:400;color:var(--site-accent)}h2{font-size:clamp(32px,4vw,50px);font-weight:550}h3{font-size:22px;letter-spacing:-.025em;font-weight:600}main,.project-header,footer{width:min(1180px,calc(100% - 96px));margin:auto}.project-header{padding:30px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.wordmark{display:flex;align-items:center;gap:16px;font-size:30px;line-height:1;font-weight:650}.wordmark span{font-size:10px;letter-spacing:.13em;font-weight:600}nav{display:flex;gap:28px;font-size:13px}.back{margin-left:12px;color:var(--muted)}.intro{padding:96px 0;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:72px}.eyebrow{font-size:11px;font-weight:650;letter-spacing:.15em;text-transform:uppercase;color:var(--site-accent);margin-bottom:26px}.lead{font-size:18px;color:var(--muted);max-width:540px}.actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin:32px 0 18px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;padding:14px 20px;background:var(--site-accent);color:var(--site-accent-contrast);font-size:14px;font-weight:600;border-radius:4px;min-height:48px}.button:hover{color:var(--site-accent-contrast);filter:brightness(.9)}.text-link{font-size:13px}.quiet{color:var(--muted);font-size:12px}.blueprint{padding:30px;background:#f0eeeb;border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 70px #24233108}.diagram-label{font-size:9px;letter-spacing:.15em;color:var(--muted)}.diagram-top{display:flex;align-items:center;gap:18px;padding:30px 0;border-bottom:1px solid #d5d3d1;line-height:1.2}.aperture{font-size:54px;line-height:1;color:var(--site-accent)}.diagram-top strong{font-size:24px;font-weight:500;letter-spacing:-.04em}.status{display:inline-block;font-size:10px;letter-spacing:.09em;color:var(--site-accent);font-weight:650}.diagram-top .status{margin-left:auto}.diagram-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:30px 0}.diagram-grid div{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:8px}.diagram-grid small{font-size:9px;letter-spacing:.08em}.diagram-grid b{color:var(--ink);font-size:15px;font-weight:600;margin-bottom:6px}.diagram-bottom{display:flex;flex-wrap:wrap;gap:8px}.diagram-bottom span{font-size:10px;padding:5px 8px;border:1px solid #d5d3d1;border-radius:3px}.blueprint p{font-size:11px;color:var(--muted);margin:20px 0 0}.feature-section,.admin-section,.technical,.download-section,.installation{border-top:1px solid var(--line);padding:72px 0}.section-heading{max-width:650px;margin-bottom:44px}.section-heading>p:last-child{color:var(--muted)}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}.feature-number{display:block;color:var(--site-accent);font-size:12px;margin-bottom:20px}.feature-grid h3{font-size:21px;line-height:1.3;margin-bottom:14px}.feature-grid p,.technical p,.technical li,.download-section p,.installation>p:last-child{color:var(--muted);font-size:15px}.admin-section{display:grid;grid-template-columns:1fr 1.25fr;gap:80px}.admin-list{border-top:1px solid var(--line)}details{border-bottom:1px solid var(--line)}summary{display:flex;align-items:center;gap:18px;list-style:none;cursor:pointer;min-height:64px;line-height:1.4;font-size:17px;padding:12px 0}summary::-webkit-details-marker{display:none}summary span{font-size:11px;color:var(--site-accent)}summary b{margin-left:auto;font-size:23px;font-weight:400;color:var(--muted)}details[open] summary b{transform:rotate(45deg)}details p{padding-left:32px;color:var(--muted);font-size:14px}.technical,.download-section{display:grid;grid-template-columns:1fr 1fr;gap:80px}.technical ul{padding-left:18px}.technical-notes{padding:28px;border-left:2px solid var(--site-accent);background:#f0eeeb}.technical-notes p{font-size:14px}.technical-notes p:last-child{margin-bottom:0}.download-section .button{margin:12px 0 15px}.release-card{border:1px solid var(--line);border-radius:8px;padding:32px;background:#fff}.release-card h3{font-size:30px;margin:18px 0}.release-card p{font-size:14px}dl{margin:24px 0}dt{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:20px}dd{margin:6px 0 0;font-size:13px}.checksum{overflow-wrap:anywhere;font-family:ui-monospace,monospace;font-size:11px}.release-card .quiet{font-size:12px}.installation ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:40px;counter-reset:step}.installation li{counter-increment:step;display:flex;flex-direction:column;gap:10px}.installation li:before{content:"0" counter(step);font-size:12px;color:var(--site-accent)}.installation li b{font-size:20px;font-weight:500}.installation li span{color:var(--muted);font-size:14px}.installation>p:last-child{margin-top:32px;max-width:800px}footer{padding:30px 0 40px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:24px;font-size:12px;color:var(--muted)}footer span{margin-right:auto}.skip{position:absolute;top:-100px;left:20px;background:white;padding:10px;z-index:5}.skip:focus{top:10px}@media(max-width:950px){.intro{gap:36px}.admin-section,.technical,.download-section{gap:36px}.feature-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){main,.project-header,footer{width:calc(100% - 40px)}.project-header{align-items:flex-start;flex-direction:column;padding:24px 0;gap:22px}nav{width:100%;gap:20px;flex-wrap:wrap;font-size:12px}.back{margin-left:auto}.intro{grid-template-columns:1fr;padding:54px 0;gap:30px}.lead{font-size:16px}.blueprint{padding:22px}.feature-section,.admin-section,.technical,.download-section,.installation{padding:48px 0}.feature-grid,.admin-section,.technical,.download-section,.installation ol{grid-template-columns:1fr;gap:26px}.feature-number{margin-bottom:10px}.feature-grid p{margin-bottom:0}.section-heading{margin-bottom:28px}.admin-section .section-heading{margin-bottom:0}.release-card{padding:24px}.technical-notes{padding:22px}.installation ol{gap:28px}.quiet{line-height:1.7}footer{gap:18px}footer span{width:100%;margin:0}h1{font-size:clamp(45px,12vw,72px)}.actions{gap:16px}.button{max-width:100%}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.project-examples{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:38px;grid-column:1/-1}.project-examples figure{margin:0;min-width:0}.example-open{display:block;position:relative;padding:0;width:100%;border:1px solid var(--line);border-radius:6px;background:#fff;overflow:hidden;cursor:zoom-in;text-align:left}.example-open img{display:block;width:100%;height:auto;aspect-ratio:1280/900;object-fit:contain}.example-open>span{position:absolute;right:8px;bottom:8px;padding:4px 8px;background:#fffef9ed;border:1px solid var(--line);border-radius:3px;font:11px/1.4 "Inter Tight",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}.example-open:focus-visible,.example-close:focus-visible{outline:3px solid var(--site-accent);outline-offset:4px}.project-examples figcaption{display:flex;flex-direction:column;gap:5px;font-size:12px;line-height:1.6;margin-top:14px;color:var(--muted)}.project-examples figcaption strong{color:var(--ink);font-size:15px;font-weight:550}#example-dialog{width:min(1400px,96vw);max-width:96vw;max-height:94dvh;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:16px;background:var(--paper);color:var(--ink)}#example-dialog::backdrop{background:#13131bba}#example-dialog img{display:block;max-width:100%;width:auto;max-height:77dvh;height:auto;margin:auto;object-fit:contain}#example-dialog p{margin:12px 0 0;font-size:14px}.example-close{display:block;margin:0 0 12px auto;min-height:44px;border:1px solid var(--line);border-radius:4px;background:#fff;color:var(--ink);padding:8px 14px;font:inherit;cursor:pointer}@media(max-width:950px){.project-examples{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.project-examples{grid-template-columns:1fr;gap:28px;margin-top:28px}#example-dialog{padding:10px}#example-dialog img{max-height:72dvh}}

@media(min-width:701px){.admin-section .project-examples{grid-template-columns:repeat(2,minmax(0,1fr))}}

.project-start-access{margin:0 0 36px;padding:24px;border:1px solid var(--site-accent);border-left-width:4px;border-radius:6px;background:#fff}.project-start-access h3{margin-bottom:16px}.project-start-access p{font-size:15px;color:var(--muted)}.project-start-access code{display:block;width:fit-content;max-width:100%;overflow-wrap:anywhere;margin:0 0 20px;padding:12px 16px;background:var(--paper);font-size:clamp(16px,3vw,21px);font-weight:600}.project-start-access p:last-child{margin:0}

.improvement-form{max-width:840px}.improvement-form label{display:flex;flex-direction:column;gap:8px;font-size:14px;font-weight:550;margin:0 0 22px}.improvement-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.improvement-form input:not([type=checkbox]),.improvement-form textarea{box-sizing:border-box;width:100%;min-width:0;min-height:48px;border:1px solid var(--line);border-radius:5px;background:white;padding:12px;font:16px/1.5 "Inter Tight",sans-serif;color:var(--ink)}.improvement-form textarea{resize:vertical}.improvement-form .improvement-challenge{max-width:260px}.improvement-form .improvement-consent{display:flex;flex-direction:row;align-items:flex-start;font-weight:400;color:var(--muted)}.improvement-consent input{width:20px;height:20px;flex:0 0 20px;margin:3px 0 0;accent-color:var(--site-accent)}.improvement-consent a{text-decoration:underline}.improvement-form .button,.improvement-confirm .button{font-family:inherit;border:0;cursor:pointer}.improvement-notice{padding:18px;border-left:3px solid var(--site-accent);background:#fff}.improvement-confirm{max-width:720px;padding:64px 0}.improvement-confirm h1{font-size:clamp(32px,6vw,52px)}.improvement-confirm form{margin:24px 0}.improvement-form :focus-visible{outline:3px solid var(--site-accent);outline-offset:3px}@media(max-width:700px){.improvement-grid{grid-template-columns:1fr;gap:0}.improvement-form .button{width:100%}}

/* Compact chapters for the project documentation. */
.intro{padding-top:56px;padding-bottom:56px}.project-header nav{flex-wrap:wrap;justify-content:flex-end;gap:14px 20px}.chapter-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:8px 0 18px}.chapter-toolbar>p{margin:0;font-size:15px;font-weight:600}.chapter-toolbar>div{display:flex;gap:8px}.chapter-toolbar [hidden]{display:none}.chapter-toolbar button{font:inherit;font-size:13px;min-height:44px;padding:8px 14px;border:1px solid var(--line);border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}.chapter-toolbar button:hover{color:var(--ink);background:#fff}.project-chapter{border:1px solid var(--line);border-radius:9px;background:#fff;margin:0 0 12px;scroll-margin-top:20px;min-width:0}.project-chapter>summary{display:flex;align-items:center;gap:20px;padding:22px 26px;min-height:94px;list-style:none}.project-chapter>summary:hover{background:#24233103;border-radius:9px}.project-chapter .chapter-number{font-size:12px;letter-spacing:.08em;font-weight:600;color:var(--site-accent);flex:0 0 26px}.project-chapter .chapter-label{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}.project-chapter .chapter-label strong{font-size:21px;font-weight:550;line-height:1.35;letter-spacing:-.025em;color:var(--ink)}.project-chapter .chapter-label>span{font-size:14px;line-height:1.5;color:var(--muted)}.project-chapter .chapter-toggle{margin-left:auto;color:var(--site-accent);font-size:26px;line-height:1;flex:0 0 20px;text-align:center;transition:transform .15s}.project-chapter[open]>summary .chapter-toggle{transform:rotate(45deg)}.chapter-body{padding:8px 26px 30px;min-width:0}.chapter-body>.feature-section,.chapter-body>.admin-section,.chapter-body>.technical,.chapter-body>.download-section,.chapter-body>.installation{padding:24px 0 0;border-top:1px solid var(--line)}.chapter-body>.release-history{margin:12px 0 0;border:0;padding:0}.chapter-body>.improvement-section{margin:0}.chapter-body .section-heading h2,.chapter-body .technical h2,.chapter-body .download-section h2,.chapter-body .improvement-section h2{font-size:32px}.project-chapter p{padding-left:0}.chapter-body .admin-list details p{padding-left:32px}.chapter-toolbar button:focus-visible{outline:3px solid var(--site-accent);outline-offset:3px}.chapter-body .technical,.chapter-body .download-section{gap:40px}.chapter-body .project-examples{margin-top:28px}.chapter-body>.installation .eyebrow{margin-bottom:20px}@media(max-width:700px){.intro{padding-top:38px;padding-bottom:38px}.project-header nav{justify-content:flex-start}.chapter-toolbar{align-items:flex-start;flex-direction:column;gap:8px}.project-chapter>summary{padding:18px 16px;gap:12px;min-height:94px}.project-chapter .chapter-label strong{font-size:18px}.project-chapter .chapter-label>span{font-size:13px}.project-chapter .chapter-number{flex-basis:20px}.chapter-body{padding:4px 16px 22px}.chapter-body .technical,.chapter-body .download-section{gap:26px}.chapter-body .section-heading h2,.chapter-body .technical h2,.chapter-body .download-section h2,.chapter-body .improvement-section h2{font-size:27px}.chapter-body .release-card{padding:20px}}@media(prefers-reduced-motion:reduce){.project-chapter .chapter-toggle{transition:none}}

.project-chapter .admin-list details:not([open])>summary b{transform:none}

/* Live demo is visible immediately beside the introduction. */
.demo-nav{font-weight:650;color:var(--site-accent)}
.demo-spotlight{min-width:0;padding:28px;background:#15232c;color:#f4f5f7;border-radius:12px;box-shadow:0 20px 60px #15232c14;scroll-margin-top:24px}
.demo-kicker{display:flex;align-items:center;gap:9px;font-size:11px;font-weight:650;letter-spacing:.12em;margin-bottom:20px;color:var(--site-accent-on-dark,#c7b2e5)}
.demo-kicker>span:last-child{margin-left:auto;color:#b7c2c9;font-size:10px;font-weight:400;letter-spacing:0}
.demo-dot{width:7px;height:7px;border-radius:50%;background:#9bc4a3;flex-shrink:0}
.demo-spotlight h2{font-size:clamp(27px,3vw,36px);margin-bottom:14px;letter-spacing:-.035em}
.demo-description{font-size:14px;line-height:1.65;color:#c4cdd3;margin-bottom:22px}
.demo-preview{display:block;overflow:hidden;border:1px solid #ffffff24;border-radius:7px;background:#f4f5f7;transition:transform .15s}
.demo-preview:hover{transform:translateY(-2px)}
.demo-preview:focus-visible{outline:3px solid var(--site-accent-on-dark,#c7b2e5)}
.demo-preview-bar{display:flex;align-items:center;gap:5px;padding:9px 11px;background:#23333e}
.demo-preview-bar i{width:5px;height:5px;border-radius:50%;background:#8a99a3}
.demo-preview-bar>span{margin-left:7px;color:#c4cdd3;font-size:10px;line-height:1.3}
.demo-preview img{display:block;width:100%;height:auto}
.demo-actions{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin:22px 0 14px}
.demo-actions .button{gap:18px;padding:12px 16px}
.demo-gallery-link{font-size:13px;color:#e1e7eb;text-decoration:underline;text-underline-offset:4px}
.demo-gallery-link:hover{color:var(--site-accent-on-dark,#c7b2e5)}
.demo-access{font-size:11px;color:#b7c2c9;display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:0 0 12px}
.demo-access code{font:500 12px/1.5 "Inter Tight",sans-serif;color:#f4f5f7;padding:4px 8px;background:#ffffff0d;border:1px solid #ffffff20;border-radius:4px;overflow-wrap:anywhere}
.demo-footnote{font-size:10px;line-height:1.7;color:#a7b6c0;margin:0}
@media(max-width:700px){.demo-spotlight{padding:22px}.demo-actions .button{flex:1;justify-content:space-between}.demo-gallery-link{padding:10px 0}.demo-spotlight h2{font-size:29px}}
@media(prefers-reduced-motion:reduce){.demo-preview{transition:none}}
