:root{--bg:#F7F3EC;--paper:#FFFDF8;--tint:#EFE7DA;--ink:#1E1B17;--ink-2:#5B544A;--line:#E5DCCD;--line-2:#D3C6B1;--accent:#17666D;--accent-ink:#FFFFFF;--accent-soft:#E0EDEB;--doum:#A8572A;--tek:#17666D;--ka:#6D5596;--on-stroke:#FFFFFF;--serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--measure:44rem;--wide:72rem;--radius:14px}@media(prefers-color-scheme:dark){:root{--bg:#14120F;--paper:#1C1915;--tint:#221E19;--ink:#EFE8DC;--ink-2:#ADA392;--line:#2F2A23;--line-2:#423A2F;--accent:#6CB8BD;--accent-ink:#0D1F21;--accent-soft:#1A2C2D;--doum:#DB8A56;--tek:#6CB8BD;--ka:#AE98D8;--on-stroke:#14120F}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem}body{margin:0;background:var(--bg);color:var(--ink);font:1.0625rem/1.65 var(--sans);-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}::selection{background:var(--accent-soft)}.skip{position:absolute;left:-999px;top:.5rem;z-index:20;background:var(--ink);color:var(--bg);padding:.5rem 1rem;border-radius:8px}.skip:focus{left:1rem}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.wrap{width:min(100% - 2.5rem,var(--wide));margin-inline:auto}.narrow{max-width:var(--measure)}h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.15;letter-spacing:-.01em;text-wrap:balance}h1{font-size:clamp(2.1rem,1.4rem + 3vw,3.2rem);margin:.25em 0 .4em}h2{font-size:clamp(1.45rem,1.2rem + 1vw,1.85rem);margin:2.2em 0 .6em}h3{font-size:1.22rem;margin:1.8em 0 .45em}.eyebrow{font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:0}.eyebrow a{color:inherit}.lede{font-size:1.2rem;line-height:1.55;color:var(--ink-2);margin:0 0 1rem;text-wrap:pretty}.section-lede{color:var(--ink-2);margin-top:-.25rem}main{display:block;padding-bottom:5rem}.site-header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:.5rem 1rem;min-height:3.75rem;flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:.5rem;color:var(--ink);text-decoration:none;font-family:var(--serif);font-size:1.2rem;font-weight:600}.brand em{font-style:italic;font-weight:500;color:var(--doum)}.mark{width:1.55rem;height:1.55rem;color:var(--doum);flex:none}.site-nav{display:flex;gap:.15rem;flex-wrap:wrap}.site-nav a{color:var(--ink);text-decoration:none;padding:.38rem .75rem;border-radius:999px;font-size:.95rem}.site-nav a:hover{background:var(--tint)}.site-nav a[aria-current]{background:var(--ink);color:var(--bg)}@media(max-width:36rem){.header-inner{padding:.55rem 0 .45rem}.site-nav{width:100%;justify-content:space-between}.site-nav a{padding:.32rem .6rem}}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.72rem 1.2rem;border-radius:999px;border:1px solid var(--line-2);background:var(--paper);color:var(--ink);font:600 1rem/1.1 var(--sans);text-decoration:none;cursor:pointer}.btn:hover{border-color:var(--ink)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{border-color:var(--accent);filter:brightness(1.08)}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.6rem}.linklike{background:0 0;border:0;padding:0;color:var(--accent);font:inherit;text-decoration:underline;text-underline-offset:.18em;cursor:pointer}.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line)}.hero::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.9;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56' viewBox='0 0 56 56'%3E%3Cg fill='none' stroke='%23A8572A' stroke-opacity='.16'%3E%3Crect x='17' y='17' width='22' height='22'/%3E%3Crect x='17' y='17' width='22' height='22' transform='rotate(45 28 28)'/%3E%3C/g%3E%3C/svg%3E");-webkit-mask-image:linear-gradient(100deg,transparent 30%,#000 75%);mask-image:linear-gradient(100deg,transparent 30%,#000 75%)}.hero-inner{display:grid;grid-template-columns:minmax(0,1.3fr)minmax(0,.7fr);gap:2rem;align-items:center;padding:3.5rem 0 3rem}.hero h1{font-size:clamp(2.4rem,1.4rem + 3.8vw,4rem);margin-top:.35em}.hero-small{color:var(--ink-2);margin:0}.hero-art img{max-height:30rem;width:auto;margin-inline:auto;filter:drop-shadow(0 28px 32px rgb(40 30 15/.28))}@media(max-width:52rem){.hero-inner{grid-template-columns:1fr;padding-top:2rem;gap:1rem}.hero-art{order:-1}.hero-art img{max-height:15rem}}.band{background:var(--tint);border-block:1px solid var(--line);padding:.5rem 0 2.5rem;margin:0 0 1rem}.band h2{margin-top:1.6em}.strokes,.path-section,.guide-teaser{padding-top:1rem}.stroke-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem}.stroke-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:1.25rem 1.25rem 1.1rem}.stroke-card h3{margin:.8rem 0 .3rem}.stroke-card p{margin:0 0 .6rem;color:var(--ink-2)}.stroke-card a{font-weight:600;text-decoration:none}.stroke-btn{width:3.4rem;height:3.4rem;border-radius:50%;border:0;cursor:pointer;font:700 1.35rem/1 var(--mono);display:grid;place-items:center;transition:transform .12s ease}.stroke-btn:hover{transform:scale(1.06)}.stroke-btn.is-hit{animation:hit .35s ease-out}@keyframes hit{0%{transform:scale(.88)}60%{transform:scale(1.08)}100%{transform:scale(1)}}.quote-band{margin-top:3rem}.pull{margin:2rem 0 0;font-family:var(--serif);font-size:clamp(1.25rem,1.1rem + .8vw,1.6rem);line-height:1.4}.pull p{margin:0 0 .75rem}.pull footer{font-family:var(--sans);font-size:.95rem;color:var(--ink-2)}.path{margin-top:1.25rem}.stage{margin-top:1.5rem}.stage-title{font-size:1.05rem;font-family:var(--sans);font-weight:700;margin:0 0 .5rem;display:flex;gap:.6rem;align-items:baseline}.stage-num{font-family:var(--mono);font-size:.74rem;font-weight:400;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.stage-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.path-extra{margin-top:1rem}.path-item{display:grid;grid-template-columns:2.4rem 1fr auto;gap:.9rem;align-items:center;padding:.8rem 1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-decoration:none}.path-item:hover{border-color:var(--line-2);box-shadow:0 2px 0 var(--line)}.path-num{width:2.4rem;height:2.4rem;border-radius:50%;display:grid;place-items:center;font:700 .95rem/1 var(--mono);background:var(--tint);color:var(--ink-2)}.path-title{display:block;font-weight:650}.path-desc{display:block;color:var(--ink-2);font-size:.93rem;line-height:1.45;margin-top:.1rem}.path-done{opacity:0;color:var(--accent);font-weight:700}.path-item.is-done .path-num{background:var(--accent);color:var(--accent-ink)}.path-item.is-done .path-done{opacity:1}.progress-note{font-size:.9rem;color:var(--ink-2);margin-top:1.25rem}.cards{list-style:none;margin:1rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.75rem}.card{display:flex;flex-direction:column;gap:.3rem;height:100%;padding:1rem 1.1rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);color:var(--ink);text-decoration:none}.card:hover{border-color:var(--line-2);box-shadow:0 2px 0 var(--line)}.card-title{font-family:var(--serif);font-weight:600;font-size:1.12rem}.card-desc{color:var(--ink-2);font-size:.93rem;line-height:1.45}.page-head{padding-top:2.5rem}.page-head .lede{max-width:38rem}.dots{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem;margin:1.2rem 0 0;padding:0}.dots a{display:block;width:.8rem;height:.8rem;border-radius:50%;border:1.5px solid var(--line-2)}.dots a:hover{border-color:var(--accent)}.dots a.is-done{background:var(--accent);border-color:var(--accent)}.dots a[aria-current]{background:var(--ink);border-color:var(--ink);transform:scale(1.2)}.goals{margin:1.5rem 0 .5rem;padding:1rem 1.2rem;background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--doum);border-radius:10px}.goals-title{margin:0 0 .3rem;font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.goals ul{margin:0;padding-left:1.15rem}.goals li{margin:.15rem 0}.lesson-foot{margin-top:3rem;display:grid;gap:1.25rem}.practised{justify-self:start}.practised .when-on{display:none}.practised[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink)}.practised[aria-pressed=true] .when-on{display:inline}.practised[aria-pressed=true] .when-off{display:none}.pager{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.pager-link{display:flex;flex-direction:column;gap:.15rem;padding:.9rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);text-decoration:none;color:var(--ink)}.pager-link:hover{border-color:var(--line-2)}.pager-link.next{text-align:right;grid-column:2}.pager-dir{font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.pager-title{font-weight:650;color:var(--accent)}@media(max-width:34rem){.pager{grid-template-columns:1fr}.pager-link.next{grid-column:auto}}.prose{font-size:1.0625rem}.prose>:first-child{margin-top:1.5rem}.prose p,.prose ul,.prose ol{margin:0 0 1.05em}.prose li{margin:.25em 0}.prose li>ul,.prose li>ol{margin:.25em 0}.prose h2{padding-top:.25rem}.prose h2:first-child,.prose h3:first-child{margin-top:1.5rem}.prose strong{font-weight:650}.prose blockquote{margin:1.4em 0;padding:.2em 0 .2em 1.1em;border-left:3px solid var(--line-2);color:var(--ink-2);font-family:var(--serif);font-size:1.12rem}.prose code{font-family:var(--mono);font-size:.9em;background:var(--tint);border:1px solid var(--line);border-radius:6px;padding:.12em .4em;overflow-wrap:anywhere}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5em 0}.anchor{color:var(--line-2);text-decoration:none;font-weight:400;margin-left:.2em;opacity:0;transition:opacity .15s}h2:hover .anchor,h3:hover .anchor,.anchor:focus{opacity:1}.table-wrap{overflow-x:auto;margin:1.3em 0;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.table-wrap table{border-collapse:collapse;width:100%;font-size:.97rem}.table-wrap th,.table-wrap td{padding:.55rem .85rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table-wrap th{background:var(--tint);font-weight:650;font-size:.88rem}.table-wrap tr:last-child td{border-bottom:0}.fig{margin:1.8em 0}.fig img{width:100%;border-radius:10px;background:#fff;border:1px solid var(--line)}.fig-tall img{width:auto;max-width:100%;max-height:34rem;margin-inline:auto}.fig figcaption{margin-top:.5rem;font-size:.9rem;color:var(--ink-2);text-align:center}.callout{margin:1.5em 0;padding:.9rem 1.1rem;border-radius:10px;background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--accent)}.callout>:last-child{margin-bottom:0}.callout-title{margin:0 0 .25rem;font-family:var(--mono);font-size:.74rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2)}.callout-tip{border-left-color:var(--doum)}.callout-warning{border-left-color:#b3261e}@media(prefers-color-scheme:dark){.callout-warning{border-left-color:#f2837a}}.tab{margin:1.8rem 0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.tab-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem 1rem;background:var(--ink);color:var(--bg)}.tab-title{font-weight:650;letter-spacing:.01em}.tab-ts{font-family:var(--mono);font-size:.8rem;opacity:.75}.tab-scroll{overflow-x:auto}.tab-grid{min-width:calc(var(--beats) * 5.2rem)}.tab-bar{display:grid;grid-template-columns:repeat(var(--beats),minmax(0,1fr))}.tab-bar+.tab-bar{border-top:1px solid var(--line-2)}.tab-beat+.tab-beat{border-left:1px solid var(--line-2)}.tab-num{text-align:center;font:600 .78rem/1 var(--mono);color:var(--ink-2);padding:.45rem 0;background:var(--tint);border-bottom:1px solid var(--line)}.tab-cells{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:color-mix(in srgb,var(--tint) 45%,var(--paper))}.c{display:flex;align-items:center;justify-content:center;height:2.75rem;font:700 1rem/1 var(--mono);transition:background-color .08s,color .08s}.c+.c{border-left:1px dashed var(--line)}.n-D{background:var(--doum);color:var(--on-stroke)}.n-T{background:var(--tek);color:var(--on-stroke)}.n-k{color:var(--ka);box-shadow:inset 0 0 0 2px var(--ka);border-radius:8px}.n-t{color:var(--tek);box-shadow:inset 0 0 0 2px var(--tek);border-radius:8px}.n-X{color:var(--ink-2);font-weight:400;font-size:1.15rem}.c.is-now{outline:3px solid var(--ink);outline-offset:-3px}.c.is-now:not([class*=n-]){background:var(--tint)}.c.n-k.is-now{background:var(--ka);color:var(--on-stroke)}.c.n-t.is-now{background:var(--tek);color:var(--on-stroke)}.tab-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1.1rem;padding:.7rem 1rem;border-top:1px solid var(--line)}.tab-play{flex:none;width:2.6rem;height:2.6rem;border-radius:50%;border:0;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;cursor:pointer}.tab-play:hover{filter:brightness(1.1)}.tab-tempo{display:flex;align-items:center;gap:.45rem;font-family:var(--mono);font-size:.85rem}.tab-tempo input{width:7.5rem;accent-color:var(--accent)}.tab-tempo output{min-width:2ch;text-align:right;font-weight:700}.tab-metro{display:flex;align-items:center;gap:.35rem;font-size:.9rem;cursor:pointer}.tab-metro input{accent-color:var(--accent);width:1rem;height:1rem}.tab-key{display:flex;flex-wrap:wrap;gap:.25rem .75rem;margin-left:auto;font-size:.82rem;color:var(--ink-2)}.key-item b{display:inline-grid;place-items:center;width:1.35rem;height:1.35rem;margin-right:.15rem;border-radius:5px;font:700 .75rem/1 var(--mono)}.tab-note{margin:0;padding:.6rem 1rem;border-top:1px solid var(--line);font-size:.9rem;color:var(--ink-2)}.tab-source{margin:-1.1rem 0 1.8rem;font-size:.9rem;color:var(--ink-2)}@media(max-width:34rem){.tab-key{margin-left:0}}.jump{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.jump a{padding:.35rem .8rem;border:1px solid var(--line-2);border-radius:999px;text-decoration:none;font-size:.92rem;color:var(--ink);background:var(--paper)}.jump a:hover{border-color:var(--ink)}.book-toc ol{padding-left:1.3rem;columns:2 16rem;column-gap:2rem}.book-toc li{margin:.2rem 0;break-inside:avoid}.book-chapter{border-top:1px solid var(--line);margin-top:3rem;padding-top:1rem}.book-title{font-size:clamp(1.8rem,1.3rem + 2vw,2.5rem);margin-top:.3em}.site-footer{border-top:1px solid var(--line);background:var(--tint);padding:2.5rem 0 1.5rem;font-size:.95rem}.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1.5rem 3rem}.footer-about{max-width:26rem}.footer-about p{margin:0 0 .5rem;color:var(--ink-2)}.footer-brand{display:flex;align-items:center;gap:.5rem;font-family:var(--serif);font-weight:600;font-size:1.1rem;color:var(--ink)!important}.footer-nav{display:grid;gap:.35rem;align-content:start}.footer-nav a{color:var(--ink);text-decoration:none}.footer-nav a:hover{text-decoration:underline}.footer-legal{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--line);color:var(--ink-2);font-size:.85rem}.footer-legal p{margin:0}@media print{:root{--bg:#fff;--paper:#fff;--tint:#f3f3f3;--ink:#000;--ink-2:#444;--line:#ccc;--line-2:#999;--on-stroke:#fff}body{font-size:11pt}.site-header,.site-footer,.no-print,.tab-controls,.lesson-foot,.dots,.anchor,.skip{display:none!important}.wrap{width:auto;max-width:none}.book-chapter{break-before:page;border:0}.tab,.fig,.callout,.table-wrap{break-inside:avoid}.tab-scroll{overflow:visible}.tab-grid{min-width:0}.n-D,.n-T,.tab-head{-webkit-print-color-adjust:exact;print-color-adjust:exact}a{color:inherit;text-decoration:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}