:root{color-scheme:light;--paper:#f7f6f2;--white:#fff;--ink:#161a1d;--muted:#5d6468;--line:#d9dcd9;--accent:#a63d2b;--max:1220px;--copy:#41484b;--prose:#434b4e;--row-hover:#eeefea;--soft:#e8e8e2;--button-hover:#343c3f;--subtle:#e8e9e4;--header:rgba(247,246,242,.96);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);line-height:1.55}a{color:inherit}a:hover{text-decoration-color:var(--accent)}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:4px}img{max-width:100%;height:auto}.skip{position:absolute;left:-9999px;top:1rem;background:var(--ink);color:#fff;padding:.7rem 1rem;z-index:20}.skip:focus{left:1rem}.wrap{width:min(calc(100% - 48px),var(--max));margin-inline:auto}.masthead{border-bottom:1px solid var(--line);background:var(--header);position:sticky;top:0;z-index:10;backdrop-filter:blur(14px)}.masthead-inner{min-height:74px;display:flex;align-items:center;gap:3rem}.brand{text-decoration:none;font-size:1rem;font-weight:750;letter-spacing:-.035em;white-space:nowrap}.brand-mark{display:inline-grid;place-items:center;width:30px;height:30px;background:var(--ink);color:#fff;margin-right:.8rem;font-size:.75rem;letter-spacing:-.08em}.nav{display:flex;align-items:center;gap:1.5rem;margin-left:auto}.nav a,.lang-link{font-size:.83rem;text-decoration:none;color:var(--muted);font-weight:600}.nav a[aria-current=page],.nav a:hover,.lang-link:hover{color:var(--ink)}.lang-link{border-left:1px solid var(--line);padding-left:1.5rem}.menu-button{display:none;background:none;border:0;padding:.4rem;color:var(--ink);font:inherit;font-weight:650}.eyebrow{font-size:.72rem;font-weight:750;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.hero{padding:clamp(5rem,10vw,9.5rem) 0 5.5rem;border-bottom:1px solid var(--line)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);gap:4rem;align-items:end}.hero h1{font-size:clamp(3.8rem,8.7vw,8rem);line-height:.93;letter-spacing:-.075em;font-weight:650;margin:1.5rem 0 2rem;max-width:11ch}.hero h1 span{color:var(--accent)}.hero p{font-size:clamp(1.1rem,1.65vw,1.35rem);max-width:38rem;color:var(--copy);margin:0}.hero-aside{border-top:2px solid var(--ink);padding-top:1rem;color:var(--muted);font-size:.95rem}.hero-aside strong{display:block;color:var(--ink);font-size:.85rem;margin-bottom:.5rem}.actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.5rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:.8rem;padding:.88rem 1.15rem;border:1px solid var(--ink);background:var(--ink);color:#fff;text-decoration:none;font-weight:650;font-size:.88rem;transition:transform .18s,background .18s}.button:hover{background:var(--button-hover);transform:translateY(-2px)}.button.secondary{background:transparent;color:var(--ink)}.button.secondary:hover{background:var(--subtle)}.section{padding:5.6rem 0;border-bottom:1px solid var(--line)}.section-head{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-bottom:3rem;align-items:end}.section h2,.page-title{font-size:clamp(2.5rem,5.2vw,5rem);line-height:1.02;letter-spacing:-.065em;font-weight:650;margin:.8rem 0 0}.section-head p{max-width:32rem;color:var(--muted);font-size:1.03rem;margin:0}.project-list{border-top:1px solid var(--line)}.project-row{display:grid;grid-template-columns:4.5rem minmax(0,1fr) minmax(0,.72fr) 2rem;align-items:start;gap:1.3rem;padding:2rem .2rem;border-bottom:1px solid var(--line);text-decoration:none;transition:padding-left .2s,background .2s}.project-row:hover{padding-left:.8rem;background:var(--row-hover)}.project-no{font-size:.75rem;color:var(--accent);font-weight:750;letter-spacing:.06em;padding-top:.5rem}.project-name{font-size:clamp(1.6rem,3vw,2.5rem);letter-spacing:-.055em;font-weight:640;line-height:1.08}.project-kind{display:block;color:var(--muted);font-size:.85rem;font-weight:450;letter-spacing:0;margin-top:.55rem}.project-copy{font-size:.92rem;color:var(--prose);margin:.35rem 0 0;max-width:29rem}.project-arrow{font-size:1.6rem;line-height:1}.feature{display:grid;grid-template-columns:1fr 1fr;gap:4rem}.feature-visual{background:var(--soft);border:1px solid var(--line);min-height:430px;display:grid;place-items:center;padding:3rem}.feature-visual img{max-height:310px;object-fit:contain}.feature-copy{align-self:center}.feature-copy h2{margin:.8rem 0 1.2rem}.feature-copy p{font-size:1.07rem;color:var(--muted);max-width:30rem}.text-link{font-weight:700;text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:.2rem}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}.principle{border-top:2px solid var(--ink);padding-top:1rem}.principle small{color:var(--accent);font-weight:750}.principle h3{font-size:1.3rem;letter-spacing:-.035em;margin:.6rem 0}.principle p{color:var(--muted);font-size:.94rem;margin:0}.page-intro{padding:5.5rem 0 3.5rem}.page-intro p{font-size:1.16rem;color:var(--muted);max-width:43rem}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 15rem;gap:5rem}.prose{font-size:1rem;max-width:48rem}.prose h2{font-size:1.55rem;line-height:1.2;letter-spacing:-.04em;margin:2.5rem 0 .8rem}.prose h3{font-size:1.1rem;margin:1.7rem 0 .5rem}.prose p,.prose li{color:var(--prose)}.prose li{margin:.45rem 0}.prose a{text-decoration-color:var(--accent);text-underline-offset:3px}.side-note{font-size:.85rem;color:var(--muted);border-top:1px solid var(--ink);padding-top:1rem}.download-list{border-top:1px solid var(--line)}.download-item{padding:2rem 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:2rem}.download-item h2{font-size:2rem;letter-spacing:-.05em;margin:0}.download-item p{color:var(--muted);margin:.5rem 0}.download-links{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.download-links a{font-size:.83rem;font-weight:650;padding:.65rem .8rem;border:1px solid var(--line);text-decoration:none;background:var(--white)}.download-links a:hover{border-color:var(--ink)}.contact-list{border-top:1px solid var(--line)}.contact-item{display:grid;grid-template-columns:12rem 1fr;gap:2rem;border-bottom:1px solid var(--line);padding:1.4rem 0}.contact-item strong{font-size:.85rem}.contact-item p{margin:0;color:var(--muted)}.footer{padding:2.5rem 0 3rem}.footer-inner{display:flex;justify-content:space-between;gap:2rem;align-items:start}.footer-brand{font-weight:700;letter-spacing:-.03em}.footer small{display:block;color:var(--muted);margin-top:.6rem}.footer-links{display:flex;flex-wrap:wrap;gap:1rem 1.4rem}.footer-links a{font-size:.8rem;color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--ink)}
@media(max-width:850px){.hero-grid,.section-head,.feature,.content-grid{grid-template-columns:1fr}.hero-grid{gap:3rem}.hero{padding:5rem 0 4rem}.section{padding:4rem 0}.project-row{grid-template-columns:2rem 1fr 2rem}.project-copy{grid-column:2;grid-row:2;margin:0}.project-arrow{grid-column:3;grid-row:1}.principles{grid-template-columns:1fr 1fr}.feature-visual{min-height:280px}.side-note{display:none}}
@media(max-width:620px){.wrap{width:min(calc(100% - 32px),var(--max))}.masthead-inner{min-height:64px;gap:1rem}.menu-button{display:block;margin-left:auto}.nav{display:none;position:absolute;left:0;right:0;top:64px;background:var(--paper);padding:1.2rem 16px 1.5rem;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:1rem}.nav[data-open=true]{display:flex}.lang-link{border-left:0;padding-left:0}.hero h1{font-size:clamp(3.6rem,14vw,5.5rem)}.principles,.download-item,.contact-item{grid-template-columns:1fr}.footer-inner{display:block}.footer-links{margin-top:1.5rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.button,.project-row{transition:none}}

:root[data-theme=dark]{color-scheme:dark;--paper:#15191a;--white:#1d2324;--ink:#f2f2ee;--muted:#b0bcbd;--line:#394245;--accent:#ec8f78;--copy:#cad2d1;--prose:#c5cfce;--row-hover:#202829;--soft:#222b2d;--button-hover:#303b3d;--subtle:#273134;--header:rgba(21,25,26,.96)}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#15191a;--white:#1d2324;--ink:#f2f2ee;--muted:#b0bcbd;--line:#394245;--accent:#ec8f78;--copy:#cad2d1;--prose:#c5cfce;--row-hover:#202829;--soft:#222b2d;--button-hover:#303b3d;--subtle:#273134;--header:rgba(21,25,26,.96)}}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.theme-toggle{position:relative;display:block;width:40px;height:22px;padding:0;border:1px solid var(--line);border-radius:11px;background:rgba(101,117,133,.16);color:var(--muted);font:inherit;cursor:pointer;transition:border-color .18s,background .18s}.theme-toggle:hover{border-color:var(--ink);background:var(--soft)}.theme-toggle:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.theme-check{position:absolute;top:1px;left:1px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--paper);color:var(--muted);box-shadow:0 1px 2px rgba(0,0,0,.12);transition:transform .22s cubic-bezier(.2,.8,.2,1),color .18s}.theme-toggle[aria-checked=true] .theme-check{transform:translateX(18px);color:var(--accent)}.theme-sun,.theme-moon{grid-area:1/1;display:grid;place-items:center}.theme-sun{opacity:1}.theme-moon{opacity:0}.theme-toggle[aria-checked=true] .theme-sun{opacity:0}.theme-toggle[aria-checked=true] .theme-moon{opacity:1}.theme-sun svg,.theme-moon svg{display:block;width:12px;height:12px}
:root[data-theme=dark] .brand-mark{background:var(--ink);color:var(--paper)}:root[data-theme=dark] .button{color:var(--paper)}:root[data-theme=dark] .button.secondary{color:var(--ink)}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .brand-mark{background:var(--ink);color:var(--paper)}:root:not([data-theme=light]) .button{color:var(--paper)}:root:not([data-theme=light]) .button.secondary{color:var(--ink)}}

:root{--accent:#826346;--tint:#eae5dc}
.product-hero{padding:6rem 0 5rem;border-bottom:1px solid var(--line)}.product-hero-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:5rem;align-items:center}.product-hero h1{font-size:clamp(3.9rem,8vw,7.3rem);line-height:.94;letter-spacing:-.075em;font-weight:650;margin:1.5rem 0 1.8rem;max-width:11ch}.product-hero p{font-size:1.17rem;color:var(--copy);max-width:37rem}.product-art{min-height:440px;background:var(--tint);border:1px solid var(--line);display:grid;place-items:center;position:relative;padding:4rem}.product-art img{width:min(66%,270px);max-height:300px;object-fit:contain;filter:none}.product-art .caption{position:absolute;left:1.3rem;bottom:1.3rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;font-weight:750}.fact-strip{display:flex;gap:3rem;flex-wrap:wrap;padding:1.3rem 0;border-bottom:1px solid var(--line)}.fact-strip div{font-size:.82rem;color:var(--muted)}.fact-strip strong{color:var(--ink);display:block}.note-panel{background:var(--tint);padding:2rem 2.3rem;border-left:3px solid var(--accent);max-width:54rem}.note-panel p{margin:0;color:var(--copy)}.product-links{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2rem}.product-links a{font-weight:650;font-size:.87rem;text-decoration:none;border-bottom:1px solid var(--accent);padding:.4rem 0;margin-right:1.5rem}@media(max-width:850px){.product-hero-grid{grid-template-columns:1fr;gap:3rem}.product-art{min-height:300px}.product-hero{padding:4rem 0}}

:root[data-theme=dark]{--accent:#dab58b;--tint:#223033}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--accent:#dab58b;--tint:#223033}}


.github-link{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:34px;color:var(--muted)}.github-link:hover{color:var(--ink)}.github-link svg{display:block}
.error-page{min-height:clamp(540px,68vh,780px);display:flex;align-items:center;padding:clamp(4rem,9vw,8rem) 0}.error-page .wrap{width:min(calc(100% - 48px),var(--max))}.error-page h1{max-width:12ch;font-size:clamp(3.8rem,9vw,8rem);line-height:.95;letter-spacing:-.075em;font-weight:650;margin:1.2rem 0 1.4rem}.error-page p{max-width:52ch;color:var(--muted);font-size:clamp(1.05rem,1.6vw,1.3rem);line-height:1.6}.error-page .actions{margin-top:2.5rem}
@media(max-width:620px){.github-link{justify-content:flex-start}.error-page .wrap{width:min(calc(100% - 32px),var(--max))}}

.jb-preferences{position:fixed;right:0;bottom:0;left:0;z-index:100;padding:16px;background:color-mix(in srgb,var(--paper) 94%,transparent);border-top:1px solid var(--line);box-shadow:0 -10px 30px rgba(0,0,0,.12);backdrop-filter:blur(16px)}.jb-preferences-card{width:min(100%,1120px);margin:0 auto;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(230px,.75fr) auto;align-items:end;gap:20px}.jb-preferences-kicker{margin:0 0 5px;color:var(--accent);font-size:.68rem;font-weight:750;letter-spacing:.13em;text-transform:uppercase}.jb-preferences-card h2{margin:0;font-size:1.15rem;letter-spacing:-.035em}.jb-preferences-copy{margin:5px 0 0;max-width:58ch;color:var(--muted);font-size:.84rem;line-height:1.45}.jb-preferences-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.jb-preferences-fields label{display:grid;gap:5px;color:var(--muted);font-size:.72rem;font-weight:700}.jb-preferences-fields select{width:100%;border:1px solid var(--line);border-radius:4px;padding:8px 9px;background:var(--white);color:var(--ink);font:inherit;font-size:.8rem}.jb-preferences-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end}.jb-preferences-actions button{border:1px solid var(--ink);padding:9px 12px;background:transparent;color:var(--ink);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;white-space:nowrap}.jb-preferences-actions button:hover{background:var(--subtle)}.jb-preferences-actions .jb-preferences-accept{background:var(--ink);color:var(--paper)}.jb-preferences-actions .jb-preferences-accept:hover{background:var(--button-hover)}@media(max-width:850px){.jb-preferences-card{grid-template-columns:1fr;gap:12px}.jb-preferences-actions{justify-content:flex-start}}@media(max-width:520px){.jb-preferences{padding:12px}.jb-preferences-fields{grid-template-columns:1fr 1fr}.jb-preferences-actions{display:grid;grid-template-columns:1fr 1fr}.jb-preferences-actions button{width:100%}}
