/* Ludus — monochrome editorial layout. Colour belongs to game artwork. */
:root { --void:#090909; --well:#050505; --slab:#121212; --slab-2:#1b1b1b; --bone:#f3f3f0; --ash:#b0b0ad; --dim:#949491; --edge:rgba(255,255,255,.18); --edge-soft:rgba(255,255,255,.10); --wrap:1360px; --r:8px; --r-sm:5px; --display:'Instrument Sans',system-ui,sans-serif; }
body { background:var(--void); }
.site-header { background:rgba(9,9,9,.94); border-bottom:1px solid var(--edge); backdrop-filter:blur(18px); }
.site-header::before { display:none; }
.site-header .wrap { height:84px; }
.brand-name { font-size:1.5rem; letter-spacing:-.06em; }
.brand-mark { width:32px; height:32px; }
.nav { margin-left:auto; margin-right:32px; gap:12px; }
.nav a { font-size:.82rem; }
.nav a.active::after { height:1px; }
.btn { min-height:50px; border-radius:4px; padding:14px 23px; font-size:.86rem; box-shadow:none; }
.btn-primary { background:#f3f3f0; color:#111; }
.btn-primary:hover { background:#d8d8d5; box-shadow:none; }
.btn-ghost { border-color:#ffffff35; }
.hero { padding:62px 0 0; }
.hero::before { display:none; }
.hero .wrap { display:block; }
.hero-copy { display:grid; grid-template-columns:1.55fr 1fr; column-gap:70px; text-align:left; }
.tag { grid-column:1 / -1; justify-self:start; padding:0; border:0; border-radius:0; background:none; color:#b9b9b5; font-size:10px; letter-spacing:.17em; }
.tag .dot { background:#f3f3f0; animation:none; width:5px; height:5px; }
.hero h1 { margin-top:30px; font-size:clamp(3.8rem,7.6vw,7.2rem); line-height:.96; letter-spacing:-.075em; font-weight:600; }
.hero h1 .soft { color:#92928f; }
.hero-intro { align-self:end; padding-bottom:5px; }
.hero-sub { margin:0; max-width:35ch; font-size:1.02rem; line-height:1.8; }
.hero-actions { margin-top:27px; gap:10px; align-items:start; flex-direction:column; }
.hero-actions .btn { min-width:230px; }
.hero-actions .btn-ghost { padding-left:0; min-height:36px; border:0; color:#c1c1be; background:none; justify-content:flex-start; }
.hero-actions .btn-ghost::after { content:'↗'; margin-left:12px; }
.stats { grid-column:1 / -1; display:grid; grid-template-columns:repeat(3,1fr); margin-top:40px; padding:20px 0; gap:20px; border-top:1px solid var(--edge); }
.stats > div { display:flex; align-items:baseline; gap:12px; }
.stat-num { font-family:var(--font); font-size:1rem; }
.stat-label { max-width:none; text-transform:none; letter-spacing:0; font-size:.74rem; }
.hero-stage { margin-top:6px; width:100%; padding:0; }
.wash { display:none; }
.window { transform:none!important; animation:none!important; border-radius:6px; box-shadow:none; border-color:#ffffff25; }
.window-bar { height:34px; background:#151515; }
.window-title { color:#979794; font-size:9px; }
.window img { max-height:610px; object-fit:cover; object-position:top; }
.window-dots i { width:6px; height:6px; }
.stage-note { display:flex; justify-content:space-between; margin:0; padding:15px 0; font-size:9px; letter-spacing:.13em; }
.wall { margin:70px auto; max-width:1280px; border:0; }
.wall img { height:280px; opacity:.65; }
.wall-copy { inset:0; display:flex; align-items:center; padding:0; }
.wall-copy .h2 { font-size:clamp(2.2rem,4vw,3.8rem); max-width:20ch; }
.wall-copy p { font-size:.95rem; }
.section { padding-block:85px; }
.section + .section { padding-top:35px; }
.eyebrow { font-size:9px; color:#aeaeaa; letter-spacing:.17em; }
.eyebrow::before { width:20px; }
.h2 { font-size:clamp(2.4rem,4.3vw,4rem); line-height:1.04; font-weight:500; letter-spacing:-.065em; }
#install { background:#eeeee9; color:#151515; padding-block:70px; margin-bottom:85px; }
#install .head { max-width:none; display:grid; grid-template-columns:1fr 1fr; column-gap:60px; margin-bottom:50px; }
#install .eyebrow { grid-column:1 / -1; color:#595957; }
#install .h2 { color:#111; }
#install .lead { color:#555552; margin:0; align-self:end; max-width:37ch; }
.steps { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:28px; background:none; border:0; }
.step { display:block; background:none; border-top:1px solid #b8b8b3; padding:20px 0 0; }
.step:hover { background:none; }
.step-n { color:#6b6b67; font-size:11px; padding:0; margin-bottom:30px; }
#install .step-body { display:block; }
.step-body h3 { color:#161616; font-size:1.12rem; font-weight:600; letter-spacing:-.03em; }
.step-body p { color:#535350; font-size:.85rem; margin-top:15px; line-height:1.75; }
.step-body code { background:#deded8; color:#222; }
.look .head { max-width:none; }
.look-grid { grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); gap:45px; align-items:center; }
.shot { border-radius:5px; }
.shot:hover { transform:none; }
.look-note { padding:0; border:0; background:none; }
.look-note .h3 { font-size:2rem; font-weight:500; }
.look-note p { font-size:.95rem; }
.whatsnew { margin-top:20px; }
.whatsnew-head { padding-top:28px; border-top:1px solid var(--edge); }
.whatsnew-head .h2 { font-size:clamp(1.8rem,3vw,2.7rem); }
.systems { grid-template-columns:repeat(4,minmax(0,1fr)); gap:25px; background:none; border:0; }
.systems li { background:none; padding:0; }
.systems li:hover { background:none; }
.systems .h3 { font-size:1.13rem; font-weight:500; }
.systems p { font-size:.87rem; }
.download .wrap { border-block:1px solid var(--edge); padding-block:55px; grid-template-columns:.8fr 1.2fr; gap:80px; }
.download-art { background:#141414; border:0; border-radius:50%; aspect-ratio:1; min-height:0; padding:50px; max-width:370px; justify-self:center; }
.download-art img { width:100%; margin:0; }
.download .h2 { font-size:clamp(3rem,5.5vw,5rem); }
.platform { background:#eeeeeb; color:#141414; border:0; border-radius:4px; }
.platform svg { color:#141414; }
.platform-sub { color:#575754; }
.platform:hover { background:#d9d9d5; }
.download-note { max-width:62ch; font-size:.78rem; }
.faq .wrap { display:grid; grid-template-columns:.8fr 1.2fr; gap:70px; }
.faq-list { width:100%; }
.faq-q { font-size:.96rem; }
.community-box { position:relative; display:grid; grid-template-columns:auto 1fr auto; gap:24px 35px; align-items:center; padding:50px 0; border:0; border-block:1px solid var(--edge); border-radius:0; background:none; text-align:left; justify-items:start; }
.community-mark { grid-row:1 / 3; width:80px; height:80px; }
.community-box .h2 { font-size:clamp(2rem,3.3vw,3rem); }
.community-box p { grid-column:2; font-size:.9rem; }
.community-actions { grid-column:3; grid-row:1 / 3; flex-direction:column; margin:0; }
.site-footer { background:#090909; border-top:0; }
.page-head { max-width:100%; border-bottom:1px solid var(--edge); margin-bottom:45px; padding-block:70px 45px; }
.page-head .h2 { font-size:clamp(3rem,5.5vw,5rem); max-width:20ch; }
.timeline { padding-left:0; gap:0; }
.timeline::before,.release::after,.release.latest::before { display:none; }
.release { border:0; border-bottom:1px solid var(--edge); border-radius:0; padding:40px 0; background:none; }
.release:hover { background:none; }
.release h3 { font-size:1.8rem; max-width:36ch; line-height:1.2; font-weight:500; }
.change { border:0; border-left:1px solid var(--edge); background:none; border-radius:0; }
.src-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; border-top:1px solid var(--edge); border-left:1px solid var(--edge); }
.src-card { background:none; border:0; border-bottom:1px solid var(--edge); border-right:1px solid var(--edge); border-radius:0; padding:28px; }
.src-card:hover { transform:none; background:#151515; }
.src-card.verified::before { display:none; }
.src-top { flex-wrap:wrap; }
.src-name { font-size:1.2rem; }
.badge { border-radius:3px; }
.copy-btn { border-radius:3px; }
@media(max-width:1000px) {
 .hero-copy { column-gap:35px; grid-template-columns:1.2fr 1fr; }
 .hero h1 { font-size:clamp(3.5rem,7.6vw,6rem); }
 .hero-sub { font-size:.92rem; }
 .stats > div { display:block; }
 .wall { margin-inline:var(--gut); }
 .steps { grid-template-columns:repeat(2,minmax(0,1fr)); gap:35px; }
 .download .wrap { gap:40px; }
 .community-box { grid-template-columns:1fr auto; }
 .community-mark { display:none; }
 .community-box p { grid-column:1; }
 .community-actions { grid-column:2; }
 .src-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:860px) {
 .site-header .wrap { height:72px; gap:15px; }
 .header-cta { margin-left:auto; }
 .nav { top:72px; margin:0; background:#101010; }
 .hero { padding-top:38px; }
 .hero-copy { display:block; }
 .hero h1 { font-size:clamp(3.6rem,11vw,6.5rem); margin-top:24px; }
 .hero-intro { margin-top:25px; }
 .hero-sub { max-width:50ch; }
 .hero-actions { flex-direction:row; align-items:center; }
 .hero-actions .btn { min-width:0; }
 .hero-actions .btn-ghost { padding-left:12px; }
 .stats { margin-top:28px; }
 .look-grid,.faq .wrap { grid-template-columns:1fr; gap:30px; }
 .systems { grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px; }
 .section { padding-block:55px; }
 #install { margin-bottom:50px; }
 .download .wrap { grid-template-columns:1fr; }
 .download-art { display:none; }
 .download-text { width:100%; }
 .head { margin-bottom:30px; }
}
@media(max-width:560px) {
 .site-header .btn { min-height:42px; padding:10px 14px; font-size:.8rem; }
 .hero h1 { font-size:clamp(3.2rem,13vw,4.6rem); }
 .hero-actions { display:grid; grid-template-columns:1fr; }
 .hero-actions .btn { width:100%; }
 .hero-actions .btn-ghost { justify-content:center; padding:6px; }
 .stats { grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
 .stats > div:last-child { grid-column:auto; }
 .stat-num { font-size:.83rem; white-space:normal; }
 .stat-label { font-size:.65rem; line-height:1.6; }
 .stage-note { font-size:8px; letter-spacing:.03em; }
 .window-bar { height:25px; }
 .window-title { font-size:8px; }
 .wall { margin-block:40px; }
 .wall img { height:300px; }
 .wall-copy .wrap { padding-inline:20px; }
 #install { padding-block:45px; }
 #install .head { display:block; margin-bottom:35px; }
 #install .lead { margin-top:20px; }
 .steps { grid-template-columns:1fr; gap:25px; }
 .step { display:grid; grid-template-columns:28px 1fr; gap:15px; }
 .step-n { margin:4px 0 0; }
 .step-body p { margin-top:10px; }
 .systems { grid-template-columns:1fr; }
 .systems li { border-top:1px solid var(--edge); padding-top:20px; }
 .community-box { display:flex; flex-direction:column; align-items:start; gap:22px; }
 .community-actions { width:100%; }
 .community-actions .btn { width:100%; }
 .src-grid { grid-template-columns:1fr; }
 .src-card { padding:24px; }
 .page-head { padding-top:45px; }
}

/* Version 1.7 */
.window img { max-height:none; height:auto; }
.release-intro { max-width:72ch; margin:24px 0 32px; }
.release-gallery { display:grid; grid-template-columns:1.25fr 1fr; gap:28px; align-items:center; margin-bottom:46px; }
.release-shot { margin:0; overflow:hidden; border:1px solid var(--edge); border-radius:6px; background:var(--well); }
.release-shot a { display:block; }
.release-shot img { display:block; width:100%; height:auto; }
.release-shot figcaption { padding:16px 20px; border-top:1px solid var(--edge-soft); font-size:.82rem; line-height:1.6; color:var(--ash); }
.release-shot figcaption span { display:block; font-family:var(--mono); font-size:.64rem; letter-spacing:.12em; margin-bottom:5px; color:var(--bone); }
.controls-shot img { max-height:360px; object-fit:contain; }
.feature-number { display:block; font-family:var(--mono); font-size:.7rem; color:var(--dim); margin-bottom:16px; }
.whatsnew .systems { row-gap:38px; }
.whatsnew .systems li { padding-top:20px; border-top:1px solid var(--edge); }
.release-details { display:inline-flex; gap:16px; margin-top:34px; padding-bottom:7px; border-bottom:1px solid var(--edge); font-size:.9rem; }
.release-details:hover { color:var(--bone); border-color:var(--bone); }
.release-nav { display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
.release-nav a { padding:8px 13px; border:1px solid var(--edge); border-radius:4px; font-size:.78rem; }
.release-nav a:hover { background:var(--slab-2); }
.release-group { padding-top:34px; margin-top:32px; border-top:1px solid var(--edge); scroll-margin-top:110px; }
.release-group h4 { font-size:1.35rem; font-weight:500; letter-spacing:-.035em; line-height:1.3; }
.release-group > p { max-width:75ch; margin:14px 0 24px; color:var(--ash); }
.release-group .release-shot { max-width:100%; margin-top:24px; }
.release-group .keyboard-shot { max-width:820px; }
.release-group .change span { line-height:1.65; }
#version-1-7 { scroll-margin-top:105px; }
@media(max-width:860px) {
    .release-gallery { grid-template-columns:1fr; gap:24px; }
    .controls-shot img { max-height:460px; }
}
@media(max-width:560px) {
    .release-shot figcaption { padding:12px 14px; font-size:.76rem; }
    .release-nav { gap:8px; }
    .release-nav a { font-size:.72rem; padding:7px 10px; }
    .release-group h4 { font-size:1.2rem; }
    .release-intro { font-size:.95rem; }
}

/* Public repository shortcut, including narrow screens. */
.header-cta .github-btn { min-width:44px; min-height:42px; padding:10px 12px; flex-shrink:0; }
