:root{color-scheme:light;--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:40px;--space-2xl:64px;--space-3xl:96px;--space-4xl:144px;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.2rem;--text-xl:1.44rem;--text-2xl:1.728rem;--text-3xl:2.074rem;--text-display-s:1.44rem;--text-display:2.074rem;--text-section:1.728rem;--text-title:1rem;--text-lead:1rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.7, 0, .84, 0);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--color-error:oklch(52% .19 27);--color-success:oklch(50% .12 150);--container:1440px;--gutter:64px;--gap-columns:32px;--section-gap-s:120px;--section-gap:144px;--section-gap-l:176px;--z-base:1;--z-raised:10;--z-dropdown:100;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600;--color-paper:oklch(41% .1 154);--color-paper-2:oklch(47% .105 154);--color-paper-3:oklch(34% .09 156);--color-ink:oklch(99% .005 90);--color-ink-2:oklch(94% .02 120);--color-muted:oklch(90% .03 150);--color-rule:oklch(55% .1 154);--color-accent:oklch(83% .115 56);--color-accent-2:oklch(74% .15 46);--color-accent-ink:oklch(30% .07 40);--color-focus:oklch(88% .14 85);--color-card:oklch(97% .012 85);--color-card-ink:oklch(24% .05 160);--font-display:"Nunito", ui-rounded, ui-sans-serif, system-ui, sans-serif;--font-body:"Manrope", ui-sans-serif, system-ui, sans-serif;--font-outlier:var(--font-display);--radius-card:24px;--radius-control:16px;--radius-pill:999px;--rule-hair:1px;--rule-bar:2px;--shadow-card:0 14px 32px -16px oklch(22% .05 160/.5);--tracking-display:-.025em;--display-weight:800;--color-wood:oklch(78% .075 68);--color-wood-grain:oklch(73% .08 64);--color-wood-edge:oklch(60% .085 56);--color-wood-kenya:oklch(64% .09 52);--color-wood-kenya-grain:oklch(58% .09 48);--color-wood-mbira:oklch(44% .06 45);--color-wood-mbira-grain:oklch(39% .055 42);--color-hole:oklch(24% .035 55);--color-steel:oklch(88% .01 250);--color-steel-shine:oklch(97% .005 250);--color-steel-deep:oklch(66% .012 250);--color-tine-ink:oklch(24% .05 160)}*,:before,:after{box-sizing:border-box}html{scrollbar-color:var(--color-muted) var(--color-paper);scroll-padding-top:var(--space-3xl)}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.55}::selection{background:color-mix(in oklab, var(--color-accent) 45%, transparent);color:var(--color-card-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}a{color:inherit;text-underline-offset:.16em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight,700);font-synthesis:none;letter-spacing:var(--tracking-display);overflow-wrap:break-word;text-wrap:balance;min-width:0;margin:0;line-height:1.05}h1{max-width:20ch;font-size:var(--text-display)}h2{max-width:30ch;font-size:var(--text-section)}h3{max-width:40ch;font-size:var(--text-title);line-height:1.2}.lead{font-size:var(--text-lead);max-width:52ch;line-height:1.45}p{text-wrap:pretty;margin:0}p:not([class]){max-width:65ch}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);box-sizing:border-box;margin-inline:auto}.num,.figure,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}[data-slot]{background:linear-gradient(160deg, var(--color-paper-2,var(--color-paper)), var(--color-paper-3,var(--color-paper)));position:relative;overflow:hidden}[data-slot]>img{object-fit:cover;z-index:1;width:100%;height:100%;position:absolute;inset:0}[data-slot]:has(>img)>:not(img):not([data-keep]){display:none!important}@media (width<=60rem){:root{--gutter:24px;--section-gap-s:80px;--section-gap:96px;--section-gap-l:120px}}@media (width<=40rem){:root{--gutter:16px;--section-gap-s:56px;--section-gap:72px;--section-gap-l:96px;--gap-columns:16px}}@media (prefers-reduced-motion:reduce){:not(.keep-motion),:not(.keep-motion):before,:not(.keep-motion):after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}[data-slot]>img{filter:saturate(1.06)contrast(1.04)}body{color:var(--color-ink);font-weight:500}h1,h2,h3{line-height:1.04}h3{font-size:var(--text-lg)}p{color:var(--color-muted)}a{font-weight:700}a:hover{text-decoration-color:var(--color-accent);text-decoration-thickness:2px}.topbar{justify-content:space-between;align-items:center;gap:var(--space-md);padding-block:var(--space-md);display:flex}.wordmark{white-space:nowrap;align-items:center;gap:var(--space-xs);font-family:var(--font-display);font-weight:800;font-size:var(--text-lg);letter-spacing:var(--tracking-display);color:var(--color-ink);text-decoration:none;display:inline-flex}.wordmark svg{flex:none;width:28px;height:28px}.wordmark-body{fill:var(--color-wood)}.wordmark-tines{fill:none;stroke:var(--color-steel-shine);stroke-width:1.6px;stroke-linecap:round}.wordmark:hover{text-decoration:none}.lang{position:relative}.lang summary{align-items:center;gap:var(--space-xs);min-height:40px;padding:0 var(--space-md);border-radius:var(--radius-control);box-shadow:inset 0 0 0 2px var(--color-ink);font-weight:700;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);list-style:none;display:inline-flex}.lang summary::-webkit-details-marker{display:none}.lang summary svg{fill:none;stroke:currentColor;stroke-width:1.3px;width:16px;height:16px}.lang summary:hover{background:var(--color-paper-2)}.lang summary:active{translate:0 1px}.lang[open] summary{background:var(--color-paper-3)}.lang ul{right:0;top:calc(100% + var(--space-xs));z-index:var(--z-dropdown);padding:var(--space-xs);background:var(--color-paper-3);border-radius:var(--radius-control);min-width:200px;box-shadow:var(--shadow-card);margin:0;list-style:none;position:absolute}.lang a{padding:var(--space-xs) var(--space-sm);border-radius:10px;text-decoration:none;display:block}.lang a:hover{background:var(--color-paper-2)}.lang a[aria-current=page]{box-shadow:inset 0 0 0 2px var(--color-accent)}.stage{padding-block:var(--space-xs) var(--space-xl)}.stage-head{align-items:baseline;gap:var(--space-2xs) var(--space-lg);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.stage-head h1{max-width:none}.controls{align-items:center;gap:var(--space-sm) var(--space-lg);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.ctl{align-items:center;gap:var(--space-xs);min-width:0;display:flex}.ctl-label{font-size:var(--text-sm);color:var(--color-muted);font-weight:700}.select{position:relative}.select select{-webkit-appearance:none;appearance:none;height:40px;padding:0 36px 0 var(--space-md);border-radius:var(--radius-control);background:var(--color-paper-3);color:var(--color-ink);box-shadow:inset 0 0 0 2px var(--color-ink);font-weight:700;font-size:var(--text-md);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);border:0}.select select:hover{background:var(--color-paper-2)}.select select:active{translate:0 1px}.select select:disabled{opacity:.5;cursor:not-allowed}.select option{background:var(--color-paper-3);color:var(--color-ink)}.select-caret{fill:none;width:12px;height:12px;stroke:var(--color-ink);stroke-width:1.8px;pointer-events:none;position:absolute;top:50%;right:14px;translate:0 -50%}.fader{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:112px;height:44px;margin:0}.fader::-webkit-slider-runnable-track{border-radius:var(--radius-pill);background:linear-gradient(to right, var(--color-ink) var(--level), var(--color-paper-3) var(--level));height:8px}.fader::-moz-range-track{border-radius:var(--radius-pill);background:linear-gradient(to right, var(--color-ink) var(--level), var(--color-paper-3) var(--level));height:8px}.fader::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:calc(-1 * var(--space-xs));background:var(--color-accent);box-shadow:0 0 0 3px var(--color-paper);transition:translate var(--dur-micro) var(--ease-out);border:0;border-radius:50%}.fader::-moz-range-thumb{background:var(--color-accent);width:22px;height:22px;box-shadow:0 0 0 3px var(--color-paper);border:0;border-radius:50%}.fader:hover::-webkit-slider-thumb{background:var(--color-accent-2)}.fader:active::-webkit-slider-thumb{translate:0 1px}.fader:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-control)}.fader:disabled{opacity:.5;cursor:not-allowed}.seg{padding:var(--space-2xs);gap:var(--space-3xs);border-radius:var(--radius-control);background:var(--color-paper-3);display:inline-flex}.seg-btn{height:34px;padding:0 var(--space-sm);color:var(--color-ink);font-weight:700;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out);background:0 0;border:0;border-radius:12px}.seg-btn:hover{background:var(--color-paper-2)}.seg-btn:active{translate:0 1px}.seg-btn[aria-checked=true]{background:var(--color-accent);color:var(--color-accent-ink)}.seg-btn:disabled{opacity:.5;cursor:not-allowed}.chip{height:40px;padding:0 var(--space-md);border-radius:var(--radius-control);color:var(--color-ink);box-shadow:inset 0 0 0 2px var(--color-ink);font-weight:700;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--dur-micro) var(--ease-out), translate var(--dur-micro) var(--ease-out);background:0 0;border:0;align-items:center;text-decoration:none;display:inline-flex}.chip:hover{background:var(--color-paper-2);text-decoration:none}.chip:active{translate:0 1px}.chip[aria-pressed=true]{background:var(--color-accent);color:var(--color-accent-ink);box-shadow:none}.chip:disabled{opacity:.5;cursor:not-allowed}.link-btn{color:inherit;font:inherit;text-decoration:underline;text-decoration-color:var(--color-accent);cursor:pointer;background:0 0;border:0;padding:0;font-weight:700}.link-btn:hover{text-decoration-thickness:2px}.kalimba{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;--wood:var(--color-wood);--grain:var(--color-wood-grain);position:relative;container:kalimba/inline-size}.kalimba[data-body=kalimba-kenya]{--wood:var(--color-wood-kenya);--grain:var(--color-wood-kenya-grain)}.kalimba[data-body^=mbira]{--wood:var(--color-wood-mbira);--grain:var(--color-wood-mbira-grain)}.kalimba-body{aspect-ratio:1.9;background:var(--wood);width:min(100%,190svh - 570px);min-width:min(100%,640px);box-shadow:inset 0 -10px 0 var(--grain), inset 0 0 0 3px var(--color-wood-edge), var(--shadow-card);border-radius:28px 28px 48px 48px;margin-inline:0;position:relative}.kalimba[data-body^=mbira] .kalimba-body{box-shadow:inset 0 0 0 3px var(--grain), var(--shadow-card);border-radius:22px}.kalimba-hole{aspect-ratio:1;background:var(--color-hole);width:13%;box-shadow:0 0 0 4px var(--grain);border-radius:50%;position:absolute;top:66%;left:50%;translate:-50% -50%}.kalimba[data-body^=mbira] .kalimba-hole{display:none}.kalimba-bridge{border-radius:var(--radius-pill);background:var(--color-steel-deep);height:3.4%;box-shadow:inset 0 2px 0 var(--color-steel);position:absolute;top:9%;left:7%;right:7%}.tines{grid-template-columns:repeat(17,minmax(0,1fr));gap:.5%;display:grid;position:absolute;inset:10% 7.5% 7%}.tine{cursor:pointer;position:relative}.tine-steel{height:calc(var(--len) * 100%);background:var(--color-steel);box-shadow:inset 2px 0 0 var(--color-steel-shine), inset -2px 0 0 var(--color-steel-deep);transition:transform var(--dur-short) var(--ease-out);border-radius:3px 3px 999px 999px;position:absolute;top:0;left:20%;right:20%}.tine.is-c .tine-steel:after{content:"";background:var(--color-steel-deep);height:3px;position:absolute;top:calc(100% - 46px);left:0;right:0}.tine.is-down .tine-steel{background:var(--color-steel-shine);box-shadow:0 0 0 3px var(--color-accent);transition:none;transform:translateY(3px)}.tine.is-out{opacity:.32;cursor:not-allowed}.tine-label{left:50%;top:calc(var(--len) * 100% - 34px);z-index:1;min-width:1.6em;padding:0 var(--space-2xs);color:var(--color-tine-ink);font-family:var(--font-display);font-weight:800;font-size:var(--text-md);text-align:center;white-space:nowrap;pointer-events:none;border-radius:8px;line-height:1.6;position:absolute;translate:-50%}.tab{font-family:var(--font-display);font-variant-numeric:lining-nums;font-weight:800;line-height:1;display:inline-block;position:relative}.tab-dots{justify-items:center;gap:var(--space-3xs);padding-bottom:var(--space-3xs);display:grid;position:absolute;bottom:100%;left:50%;translate:-50%}.tab-dots i{background:currentColor;border-radius:50%;width:4px;height:4px}.kalimba-status{left:50%;top:var(--space-sm);z-index:3;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-card-ink);box-shadow:var(--shadow-card);font-size:var(--text-sm);white-space:nowrap;pointer-events:none;margin:0;font-weight:700;position:absolute;translate:-50%}.kalimba-status:empty{display:none}.kalimba-status.is-error{pointer-events:auto;white-space:normal;text-align:center}.kalimba-status :focus-visible{outline-color:var(--color-card-ink)}.kalimba-hint{width:fit-content;margin:var(--space-sm) 0 0;max-width:100%;padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-pill);background:var(--color-card);color:var(--color-card-ink);box-shadow:var(--shadow-card);font-size:var(--text-sm);text-align:center;pointer-events:none;font-weight:700}@container kalimba (width<=560px){.kalimba-body{aspect-ratio:auto;width:100%;min-width:0;padding:var(--space-sm) var(--space-md) var(--space-sm) 44px;border-radius:28px 48px 48px 28px}.kalimba[data-body^=mbira] .kalimba-body{border-radius:22px}.kalimba-bridge{left:22px;right:auto;top:var(--space-sm);bottom:var(--space-sm);width:10px;height:auto;box-shadow:inset 2px 0 0 var(--color-steel)}.kalimba-hole{width:22%;top:50%;left:74%}.tines{gap:var(--space-3xs);grid-template-rows:repeat(17,28px);grid-template-columns:minmax(0,1fr);position:relative;inset:auto}.tine-steel{height:auto;width:calc(var(--len) * 100%);box-shadow:inset 0 2px 0 var(--color-steel-shine), inset 0 -2px 0 var(--color-steel-deep);border-radius:3px 999px 999px 3px;inset:18% auto 18% 0}.tine.is-c .tine-steel:after{width:3px;height:auto;inset:0 40px 0 auto}.tine.is-down .tine-steel{transform:translate(3px)}.tine-label{top:50%;left:calc(var(--len) * 100% - 26px);font-size:var(--text-sm);line-height:1.4;translate:-50% -50%}.tab-dots{padding:0 var(--space-2xs) 0 0;display:flex;inset:50% 100% auto auto;translate:0 -50%}.kalimba-hint{margin-top:var(--space-xs)}}.section{padding-block:var(--section-gap-s) 0}.section--band{margin-top:var(--section-gap-s);padding-block:var(--space-2xl);background:var(--color-paper-3);color:var(--color-ink)}.section-intro{margin-top:var(--space-sm);max-width:62ch}.howto-grid{gap:var(--space-xl);display:grid}@media (width>=60rem){.howto-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}}.steps{counter-reset:step;margin:var(--space-lg) 0 0;gap:var(--space-sm);max-width:60ch;padding:0;list-style:none;display:grid}.steps li{counter-increment:step;gap:var(--space-sm);color:var(--color-muted);grid-template-columns:2.25rem minmax(0,1fr);align-items:start;display:grid}.steps li:before{content:counter(step);background:var(--color-paper-2);width:2.25rem;height:2.25rem;color:var(--color-ink);font-family:var(--font-display);border-radius:50%;place-items:center;font-weight:800;display:grid}.keymap{min-width:0;margin:0}.keyboard{gap:var(--space-xs);padding:var(--space-md);border-radius:var(--radius-card);background:var(--color-paper-2);display:grid}.keyboard-row{gap:var(--space-xs);grid-template-columns:repeat(16,minmax(0,1fr));display:grid}.keyboard-row>.keycap{grid-column:span 2}.keyboard-row--1>.keycap:first-child{grid-column:2/span 2}.keyboard-row--2>.keycap:first-child{grid-column:3/span 2}.keycap{justify-items:start;gap:var(--space-xs);min-width:0;padding:var(--space-xs);background:var(--color-paper-3);border-radius:12px;display:grid}.keycap b{font-family:var(--font-display);font-weight:800;font-size:var(--text-lg);line-height:1.1}.keycap .tab{margin-top:var(--space-2xs);font-size:var(--text-md);color:var(--color-ink-2)}.keymap-legend{margin:var(--space-md) 0 0;gap:var(--space-2xs);font-size:var(--text-sm);color:var(--color-muted);padding:0;list-style:none;display:grid}.song-list{margin:var(--space-xl) 0 0;gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));align-items:start;padding:0;list-style:none;display:grid}.song{padding:var(--space-lg);border-radius:var(--radius-card);background:var(--color-paper-2)}.song-tab{margin-top:var(--space-md);gap:var(--space-sm);display:grid}.song-line{gap:var(--space-xs) var(--space-sm);padding-top:var(--space-2xs);color:var(--color-ink);font-size:var(--text-xl);flex-wrap:wrap;display:flex}.song-line .tab{text-align:center;min-width:.7em}.sound-list{margin:var(--space-xl) 0 0;gap:var(--space-md);grid-template-columns:minmax(0,1fr);padding:0;list-style:none;display:grid}@media (width>=40rem){.sound-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.sound-list{grid-template-columns:repeat(4,minmax(0,1fr))}}.sound{align-content:start;justify-items:start;gap:var(--space-sm);padding:var(--space-lg);border-radius:var(--radius-card);background:var(--color-paper-2);transition:background-color var(--dur-short) var(--ease-out);display:grid}.sound:has([aria-pressed=true]){background:var(--color-paper-3);box-shadow:inset 0 0 0 3px var(--color-accent)}.sound h3{font-size:var(--text-xl)}.about-cols{margin-top:var(--space-lg);gap:var(--space-md) var(--gap-columns);display:grid}@media (width>=60rem){.about-cols{grid-template-columns:repeat(3,minmax(0,1fr))}}.faq-list{margin:var(--space-lg) 0 0;padding:0;list-style:none}.faq-list li{gap:var(--space-xs) var(--gap-columns);padding-block:var(--space-md);border-top:var(--rule-hair) solid var(--color-rule);display:grid}.faq-list li:last-child{border-bottom:var(--rule-hair) solid var(--color-rule)}.faq-list h3{font-size:var(--text-lg);max-width:28ch}@media (width>=60rem){.faq-list li{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}.ad{margin-top:var(--section-gap-s)}.ad-box{min-height:280px}.ad:has(ins[data-ad-status=unfilled]){display:none}.ad iframe:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.footer{margin-top:var(--section-gap-s);padding-block:var(--space-2xl) var(--space-xl);background:var(--color-paper-3);color:var(--color-ink)}.footer-grid{gap:var(--space-lg);display:grid}.footer-langs{gap:var(--space-xs) var(--space-md);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.footer a{text-decoration:none}.footer a:hover{text-decoration:underline;text-decoration-color:var(--color-accent)}.footer a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--color-accent);font-weight:800;text-decoration-thickness:2px}.footer-bottom{gap:var(--space-lg);font-size:var(--text-sm);color:var(--color-muted);flex-wrap:wrap;display:flex}.prose{padding-block:var(--space-xl) var(--space-3xl)}.prose h1{margin-bottom:var(--space-md)}.prose h2{margin-top:var(--space-xl);margin-bottom:var(--space-sm);font-size:var(--text-xl)}.prose p+p{margin-top:var(--space-sm)}@media (width<=40rem){.topbar{padding-block:var(--space-sm)}.stage-head{margin-bottom:var(--space-sm)}h1{font-size:var(--text-xl)}.stage-head .lead{font-size:var(--text-sm)}.controls{gap:var(--space-2xs) var(--space-md);margin-bottom:var(--space-sm)}.fader{width:84px}.keyboard{padding:var(--space-xs);gap:var(--space-2xs)}.keyboard-row{gap:var(--space-2xs);grid-template-columns:repeat(7,minmax(0,1fr))}.keyboard-row>.keycap,.keyboard-row--1>.keycap:first-child,.keyboard-row--2>.keycap:first-child{grid-column:auto}.keycap{padding:var(--space-2xs);border-radius:8px}.keycap b{font-size:var(--text-md)}.song-line{font-size:var(--text-lg)}}html,body{overflow-x:clip}
