@font-face{font-family:Montserrat;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/montserrat-latin-variable.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Montserrat;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/montserrat-latin-ext-variable.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--gh-green:#05ad5d;--gh-red:#ed242a;--gh-blue:#395ba9;--gh-yellow:#f3cc15;--gh-aqua:#0fc0df;--gh-pink:#d686aa;--gh-orange:#db4103;--gh-orange-bright:#ff7a00;--gh-bright-green:#05e577;--gh-purple:#c984ff;--gh-ink:#111;--gh-white:#fff;--gh-paper:#fafaf7;--gh-gray-100:#f1f1ee;--gh-gray-300:#d4d4cf;--gh-gray-600:#5c5c58;--gh-green-deep:#04804a;--gh-green-hover:#049e55;--gh-yellow-hover:#e0bc12;--gh-ink-hover:#000;--gh-green-tint:#05ad5d26;--gh-red-tint:#ed242a26;--gh-blue-tint:#395ba926;--gh-yellow-tint:#f3cc1526;--gh-aqua-tint:#0fc0df26;--gh-pink-tint:#d686aa26;--gh-orange-tint:#db410326;--gh-purple-tint:#c984ff26;--text-body:var(--gh-ink);--text-secondary:var(--gh-gray-600);--text-on-dark:var(--gh-white);--text-link:var(--gh-green-deep);--text-brand:var(--gh-green-deep);--surface-page:var(--gh-white);--surface-soft:var(--gh-paper);--surface-card:var(--gh-white);--surface-muted:var(--gh-gray-100);--surface-brand:var(--gh-green);--border-default:var(--gh-gray-300);--border-strong:var(--gh-ink);--action-primary:var(--gh-green);--action-primary-hover:var(--gh-green-hover);--action-accent:var(--gh-yellow);--focus-ring:var(--gh-blue);--state-error:var(--gh-red);--state-success:var(--gh-bright-green);--accent-trust:var(--gh-blue);--accent-alert:var(--gh-red);--accent-joy:var(--gh-yellow);--solfege-do:var(--gh-red);--solfege-re:var(--gh-orange-bright);--solfege-mi:var(--gh-yellow);--solfege-fa:var(--gh-green);--solfege-so:var(--gh-aqua);--solfege-la:var(--gh-blue);--solfege-ti:var(--gh-pink);--program-mommy-and-me:var(--gh-pink);--program-kids-jam:var(--gh-yellow);--program-private:var(--gh-green);--gh-font:"Montserrat",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;--gh-font-legacy:"Glacial Indifference","Montserrat",sans-serif;--font-sans:var(--gh-font);--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--fs-display:56px;--lh-display:1.05;--ls-display:-.02em;--fs-h1:40px;--lh-h1:1.1;--ls-h1:-.015em;--fs-h2:30px;--lh-h2:1.2;--ls-h2:-.01em;--fs-h3:22px;--lh-h3:1.3;--fs-h4:18px;--lh-h4:1.4;--fs-body-lg:18px;--lh-body-lg:1.6;--fs-body:16px;--lh-body:1.6;--fs-small:14px;--lh-small:1.5;--fs-eyebrow:13px;--lh-eyebrow:1.2;--ls-eyebrow:.12em;--fs-button:16px;--ls-button:.01em;--type-display:800 var(--fs-display)/var(--lh-display) var(--gh-font);--type-h1:800 var(--fs-h1)/var(--lh-h1) var(--gh-font);--type-h2:700 var(--fs-h2)/var(--lh-h2) var(--gh-font);--type-h3:700 var(--fs-h3)/var(--lh-h3) var(--gh-font);--type-h4:600 var(--fs-h4)/var(--lh-h4) var(--gh-font);--type-body-lg:400 var(--fs-body-lg)/var(--lh-body-lg) var(--gh-font);--type-body:400 var(--fs-body)/var(--lh-body) var(--gh-font);--type-small:500 var(--fs-small)/var(--lh-small) var(--gh-font);--type-eyebrow:700 var(--fs-eyebrow)/var(--lh-eyebrow) var(--gh-font);--type-button:700 var(--fs-button)/1 var(--gh-font);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;--layout-max:1200px;--layout-content:720px;--gutter-mobile:16px;--gutter-desktop:32px;--section-pad-desktop:64px;--section-pad-mobile:48px;--bp-sm:640px;--bp-md:960px;--bp-lg:1200px;--card-pad:24px;--btn-pad-y:14px;--btn-pad-x:28px;--input-pad-y:12px;--input-pad-x:14px;--gh-radius-sm:8px;--gh-radius-md:14px;--gh-radius-lg:24px;--gh-radius-pill:999px;--radius-input:var(--gh-radius-sm);--radius-card:var(--gh-radius-md);--radius-image:var(--gh-radius-lg);--radius-button:var(--gh-radius-pill);--gh-shadow-sm:0 1px 2px #1111110f,0 1px 3px #11111114;--gh-shadow-md:0 4px 12px #11111114;--gh-shadow-lg:0 12px 32px #1111111f;--shadow-card:var(--gh-shadow-sm);--shadow-card-hover:var(--gh-shadow-md);--focus-outline:3px solid var(--gh-blue);--focus-offset:2px;--input-focus-glow:0 0 0 4px #05ad5d2e;--border-input:1.5px solid var(--gh-gray-300);--border-button:2px solid var(--gh-ink);--card-strip:6px;--overlay-max-opacity:.3;--ease-out:cubic-bezier(.2,.7,.3,1);--dur-fast:.12s;--dur-base:.18s}body{font-family:var(--gh-font);color:var(--gh-ink);background:var(--gh-white);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.6}a{color:var(--gh-green-deep);font-weight:600;text-decoration:none}a:hover{color:var(--gh-ink);text-decoration:underline}
:root{--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--sp-9:96px;--sp-10:128px;--r-input:8px;--r-card:14px;--r-img:24px;--r-pill:999px;--sh-sm:0 1px 2px #11111114,0 1px 3px #1111110f;--sh-md:0 4px 12px #1111111a;--ease:cubic-bezier(.2,.7,.3,1);--t:.15s;--gutter:32px}@media (max-width:640px){:root{--gutter:16px}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{color:var(--text-body);background:var(--surface-page);margin:0;font-family:Montserrat,system-ui,sans-serif;font-size:16px;font-weight:400;line-height:1.6}img,svg{max-width:100%;display:block}a{color:var(--text-link);text-underline-offset:3px;transition:color var(--t) var(--ease);text-decoration-thickness:1px}a:hover{color:var(--gh-ink)}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;border-radius:4px}.skip{background:var(--gh-ink);color:#fff;border-radius:var(--r-pill);z-index:100;padding:8px 16px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}h1,h2,h3,h4{margin:0 0 var(--sp-4);letter-spacing:-.01em;color:var(--gh-ink)}h1{letter-spacing:-.02em;font-size:40px;font-weight:800;line-height:1.1}h2{font-size:30px;font-weight:700;line-height:1.2}h3{font-size:22px;font-weight:700;line-height:1.3}h4{font-size:18px;font-weight:600;line-height:1.4}p{margin:0 0 var(--sp-4)}.display{letter-spacing:-.02em;font-size:56px;font-weight:800;line-height:1.05}@media (max-width:640px){.display{font-size:40px}h1{font-size:34px}h2{font-size:26px}}.hl{color:var(--gh-green-deep)}.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--gh-green-deep);margin:0 0 var(--sp-3);font-size:13px;font-weight:700}.lead{color:var(--text-secondary);max-width:720px;font-size:18px;line-height:1.6}.small{color:var(--text-secondary);font-size:14px;font-weight:500}.wrap{max-width:1200px;padding:0 var(--gutter);margin:0 auto}.text{max-width:720px}.section.soft{background:var(--surface-soft)}.section.muted{background:var(--surface-muted)}@media (max-width:640px){.section{padding:var(--sp-7) 0}}.stack>*+*{margin-top:var(--sp-4)}.grid{gap:var(--sp-5);display:grid}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}@media (max-width:960px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}.staging{background:var(--gh-yellow);color:var(--gh-ink);text-align:center;padding:8px var(--gutter);font-size:14px;font-weight:600}.top{z-index:50;background:var(--gh-white);border-bottom:1px solid var(--border-default);position:sticky;top:0}.bar{align-items:center;gap:var(--sp-5);min-height:72px;display:flex}.brand{align-items:center;gap:var(--sp-3);color:var(--gh-ink);letter-spacing:-.01em;font-size:18px;font-weight:800;text-decoration:none;display:flex}.brand:hover{color:var(--gh-ink)}.nav{gap:var(--sp-5);align-items:center;margin-left:auto;display:flex}.nav a{color:var(--gh-ink);padding:var(--sp-2) 0;transition:border-color var(--t) var(--ease);border-bottom:2px solid #0000;font-size:15px;font-weight:600;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{border-color:var(--gh-green)}.nav .lang{color:var(--gh-green-deep);font-weight:700}.menu{margin-left:auto;display:none}.menu summary{cursor:pointer;padding:var(--sp-2) var(--sp-4);border:2px solid var(--gh-ink);border-radius:var(--r-pill);font-weight:700;list-style:none}.menu summary::-webkit-details-marker{display:none}.menu .panel{border-bottom:1px solid var(--border-default);padding:var(--sp-4) var(--gutter) var(--sp-5);gap:var(--sp-3);background:#fff;display:grid;position:absolute;top:100%;left:0;right:0}.menu .panel a{color:var(--gh-ink);padding:var(--sp-2) 0;font-size:18px;font-weight:600;text-decoration:none}@media (max-width:1100px){.nav{display:none}.menu{display:block}.bar{position:relative}.top .bar>.btn{display:none}}.btn{justify-content:center;align-items:center;gap:var(--sp-2);border-radius:var(--r-pill);font:inherit;cursor:pointer;transition:background var(--t) var(--ease),box-shadow var(--t) var(--ease),transform var(--t) var(--ease),color var(--t) var(--ease);border:2px solid #0000;padding:14px 28px;font-size:16px;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}.btn.p{background:var(--action-primary);color:#fff}.btn.p:hover{background:var(--action-primary-hover);color:#fff}.btn.s{border-color:var(--gh-ink);color:var(--gh-ink);background:0 0}.btn.s:hover{background:var(--gh-ink);color:#fff}.btn.a{background:var(--action-accent);color:var(--gh-ink)}.btn.a:hover{background:var(--gh-yellow-hover);color:var(--gh-ink)}.btn[disabled]{opacity:.45;pointer-events:none}.btn.sm{padding:10px 20px;font-size:14px}.row{gap:var(--sp-3);flex-wrap:wrap;align-items:center;display:flex}.hero .wrap{gap:var(--sp-7);grid-template-columns:1.15fr .85fr;align-items:center;display:grid}@media (max-width:960px){.hero .wrap{grid-template-columns:1fr}}.facts{margin:var(--sp-5) 0 var(--sp-6);gap:var(--sp-3);padding:0;list-style:none;display:grid}.facts li{gap:var(--sp-3);font-weight:600;display:flex}.facts li:before{content:"";background:var(--gh-green);border-radius:50%;flex:none;width:10px;height:10px;margin-top:9px}.hero-art{background:var(--gh-green-tint);border:2px solid var(--gh-ink);border-radius:var(--r-img);padding:var(--sp-7);place-items:center;min-height:340px;display:grid;position:relative}.hero-art .dot{border:2px solid var(--gh-ink);border-radius:50%;position:absolute}.hero-art .d1{background:var(--gh-yellow);width:56px;height:56px;top:24px;right:32px}.hero-art .d2{background:var(--gh-white);width:32px;height:32px;bottom:32px;left:32px}.card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-card);box-shadow:var(--sh-sm);transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease);flex-direction:column;display:flex;overflow:hidden}a.card{color:inherit;text-decoration:none}a.card:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}.card .body{padding:var(--sp-5);gap:var(--sp-2);flex-direction:column;flex:1;display:flex}.card h3{margin:0}.band{padding:var(--sp-3) var(--sp-5);letter-spacing:.12em;text-transform:uppercase;font-size:13px;font-weight:800}.c-aqua{background:var(--gh-aqua);color:var(--gh-ink)}.c-yellow{background:var(--gh-yellow);color:var(--gh-ink)}.c-blue{background:var(--gh-blue);color:#fff}.c-green{background:var(--gh-green);color:var(--gh-ink)}.c-pink{background:var(--gh-pink);color:var(--gh-ink)}.more{padding-top:var(--sp-3);color:var(--gh-green-deep);margin-top:auto;font-weight:700}.step{gap:var(--sp-4);display:flex}.step .n{border:2px solid var(--gh-ink);background:#fff;border-radius:50%;flex:none;place-items:center;width:44px;height:44px;font-weight:800;display:grid}.tick{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.tick li{gap:var(--sp-3);display:flex}.tick li:before{content:"";background:var(--gh-green);border-radius:50%;flex:none;width:10px;height:10px;margin-top:9px}.price{align-items:baseline;gap:var(--sp-2);flex-wrap:wrap;display:flex}.price b{color:var(--gh-ink);font-size:40px;font-weight:800;line-height:1}.price span{color:var(--text-secondary);font-weight:600}.price-line+.price-line{margin-top:var(--sp-2)}.faq details{border-bottom:1px solid var(--border-default);padding:var(--sp-4) 0}.faq summary{cursor:pointer;justify-content:space-between;gap:var(--sp-4);font-size:18px;font-weight:700;list-style:none;display:flex}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";color:var(--gh-green-deep);font-weight:800}.faq details[open] summary:after{content:"–"}.faq p{margin:var(--sp-3) 0 0;color:var(--text-secondary)}.form{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.form .full{grid-column:1/-1}@media (max-width:640px){.form{grid-template-columns:1fr}}.field label{margin-bottom:var(--sp-1);font-size:14px;font-weight:700;display:block}.field input,.field select{width:100%;font:inherit;border:1px solid var(--gh-gray-600);border-radius:var(--r-input);color:var(--gh-ink);background:#fff;min-height:48px;padding:12px 14px}.field input:focus,.field select:focus{outline:3px solid var(--focus-ring);outline-offset:2px}.field .hint{color:var(--text-secondary);margin-top:var(--sp-1);font-size:14px}.field .err{color:var(--gh-red);margin-top:var(--sp-1);font-size:14px;font-weight:600}.check{gap:var(--sp-3);align-items:flex-start;font-size:14px;display:flex}.check input{width:20px;height:20px;accent-color:var(--gh-green);margin-top:3px}.notice{border-radius:var(--r-card);padding:var(--sp-4) var(--sp-5);font-weight:600}.notice.ok{background:var(--gh-green-tint);border:2px solid var(--gh-green-deep)}.notice.bad{background:var(--gh-red-tint);border:2px solid var(--gh-red)}.notice.draft{background:var(--gh-yellow-tint);border:2px solid var(--gh-yellow)}.solfege{gap:var(--sp-3);grid-template-columns:repeat(7,1fr);display:grid}@media (max-width:960px){.solfege{grid-template-columns:repeat(4,1fr)}}@media (max-width:640px){.solfege{grid-template-columns:repeat(2,1fr)}}.note{border-radius:var(--r-card);border:2px solid var(--gh-ink);text-align:center;background:#fff;overflow:hidden}.note .nm{padding:var(--sp-2);font-weight:800}.note img{aspect-ratio:1;object-fit:contain;width:100%;padding:var(--sp-3);background:#fff}.s-do{background:var(--gh-red);color:#fff}.s-re{background:var(--gh-orange-bright);color:var(--gh-ink)}.s-mi{background:var(--gh-yellow);color:var(--gh-ink)}.s-fa{background:var(--gh-green);color:var(--gh-ink)}.s-sol{background:var(--gh-aqua);color:var(--gh-ink)}.s-la{background:var(--gh-blue);color:#fff}.s-ti{background:var(--gh-pink);color:var(--gh-ink)}.prose{max-width:720px}.prose h2{margin-top:var(--sp-7)}.prose h3{margin-top:var(--sp-6)}.prose p,.prose li{font-size:18px;line-height:1.7}.prose ul,.prose ol{padding-left:24px}.prose table{border-collapse:collapse;width:100%;font-size:16px}.prose th,.prose td{border-bottom:1px solid var(--border-default);text-align:left;padding:8px}.chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.chip{border-radius:var(--r-pill);background:var(--gh-gray-100);color:var(--gh-ink);padding:6px 14px;font-size:14px;font-weight:700;text-decoration:none}.chip[aria-current=true]{background:var(--gh-green-tint);color:var(--gh-green-deep)}.band-cta{background:var(--gh-green);color:var(--gh-ink);border-radius:var(--r-img);padding:var(--sp-8) var(--sp-7);text-align:center;border:2px solid var(--gh-ink)}.band-cta h2{color:var(--gh-ink)}.band-cta .btn.p{background:var(--gh-ink);color:#fff}.band-cta .btn.p:hover{background:#000}.foot{background:var(--gh-gray-100);padding:var(--sp-8) 0 var(--sp-6);margin-top:var(--sp-9)}.foot .cols{gap:var(--sp-6);grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;display:grid}@media (max-width:1100px){.foot .cols{grid-template-columns:1fr 1fr 1fr}}@media (max-width:760px){.foot .cols{grid-template-columns:1fr 1fr}}@media (max-width:640px){.foot .cols{grid-template-columns:1fr}}.foot h4{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);font-size:13px;font-weight:700}.foot ul{gap:var(--sp-2);margin:0;padding:0;list-style:none;display:grid}.foot a{color:var(--gh-ink);font-weight:500;text-decoration:none}.foot a:hover{color:var(--gh-green-deep);text-decoration:underline}.foot .legal{margin-top:var(--sp-7);padding-top:var(--sp-5);border-top:1px solid var(--border-default);color:var(--text-secondary);font-size:14px}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.btn:hover,a.card:hover{transform:none}}.loginlink{color:var(--gh-ink);padding:10px 6px;font-size:15px;font-weight:700;text-decoration:none}.loginlink:hover{text-decoration:underline}@media (max-width:1100px){.top .bar>.loginlink{display:none}}.oauth{gap:12px;display:grid}.oauth .btn{width:100%}.divider{color:var(--text-muted,#5c5c58);align-items:center;gap:12px;font-size:14px;display:flex}.divider:before,.divider:after{content:"";opacity:.3;background:currentColor;flex:1;height:1px}.top{transition:box-shadow var(--t) var(--ease)}.top[data-scrolled]{box-shadow:var(--sh-md)}.bar{min-height:76px}.menu .panel{box-shadow:var(--sh-md);max-height:calc(100vh - 96px);overflow:auto}.menu .panel .btn{justify-self:start}.menu .panel .loginlink,.menu .panel a:not(.btn){padding:var(--sp-3) 0;border-bottom:1px solid var(--border-default)}.menu .panel a.btn{margin-top:var(--sp-2)}html{scroll-padding-top:96px}.sec-head{max-width:720px;margin-bottom:var(--sp-7)}.sec-head h2{margin-bottom:var(--sp-3)}.sec-head .lead{margin:0}.section{padding:var(--sp-9) 0}@media (max-width:640px){.section{padding:var(--sp-8) 0}}.hero{padding:var(--sp-8) 0 var(--sp-8)}.hero .lead{max-width:560px}.hero-art{min-height:420px}.hero-art img{width:min(100%,360px)}@media (max-width:960px){.hero-art{min-height:280px}}.programs{gap:var(--sp-5);grid-template-columns:repeat(6,1fr);display:grid}.programs>*{grid-column:span 2}.programs>:nth-child(4){grid-column:2/span 2}.programs>:nth-child(5){grid-column:4/span 2}@media (max-width:960px){.programs{grid-template-columns:repeat(2,1fr)}.programs>*,.programs>:nth-child(n){grid-column:auto}.programs>:last-child{grid-column:1/-1}}@media (max-width:640px){.programs{grid-template-columns:1fr}.programs>:last-child{grid-column:auto}}.card .body h3{font-size:22px}.card .body p{color:var(--text-secondary)}.how{gap:var(--sp-5);counter-reset:none;grid-template-columns:repeat(3,1fr);margin:0;padding:0;list-style:none;display:grid}@media (max-width:960px){.how{grid-template-columns:1fr}}.how li{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-card);padding:var(--sp-6);box-shadow:var(--sh-sm)}.how .n{border:2px solid var(--gh-ink);width:48px;height:48px;margin-bottom:var(--sp-5);background:#fff;border-radius:50%;place-items:center;font-size:20px;font-weight:800;display:grid}.how h3{margin-bottom:var(--sp-3)}.how p{color:var(--text-secondary);margin:0}.why{gap:var(--sp-6);grid-template-columns:repeat(4,1fr);display:grid}@media (max-width:960px){.why{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.why{grid-template-columns:1fr}}.why>div{border-top:3px solid var(--gh-ink);padding-top:var(--sp-4)}.why h4{font-size:18px;font-weight:700}.why p{color:var(--text-secondary);margin:0}.split{gap:var(--sp-8);grid-template-columns:1fr 1fr;align-items:center;display:grid}@media (max-width:960px){.split{gap:var(--sp-6);grid-template-columns:1fr}}.split .card .body{padding:var(--sp-6)}.auth{padding:var(--sp-8) 0 var(--sp-9);background:var(--surface-soft)}.auth-grid{gap:var(--sp-8);grid-template-columns:minmax(0,480px) 1fr;justify-content:center;align-items:center;display:grid}.auth-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-img);box-shadow:var(--sh-sm);padding:var(--sp-7) var(--sp-6)}.auth-card>img{margin-bottom:var(--sp-5);border-radius:var(--r-card)}.auth-card h1{margin-bottom:var(--sp-3);font-size:34px}.auth-card .lead{margin-bottom:var(--sp-6);font-size:16px}.auth-art{min-height:520px}@media (max-width:960px){.auth-grid{grid-template-columns:1fr}.auth-art{display:none}.auth{padding:var(--sp-6) 0 var(--sp-8)}}@media (max-width:640px){.auth-card{padding:var(--sp-6) var(--sp-5)}}.auth-card .field input{min-height:52px}.auth-card .btn.p{width:100%}.menu .panel a.btn.p{color:#fff;border-bottom:2px solid #0000}.auth-card .oauth{justify-items:stretch}.menu .panel a.btn{padding:14px 28px;font-size:16px}.wrap.wide{max-width:1480px}.admin h2{font-size:24px}.stats{gap:var(--sp-4);margin-bottom:var(--sp-7);grid-template-columns:repeat(4,1fr);display:grid}@media (max-width:760px){.stats{grid-template-columns:repeat(2,1fr)}}.stats>div{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-5);gap:2px;display:grid}.stats b{color:var(--gh-ink);font-size:32px;font-weight:800;line-height:1.1}.stats span{color:var(--text-secondary);font-size:14px;font-weight:600}.stats .warn{background:var(--gh-yellow-tint);border-color:var(--gh-yellow)}.filters{gap:var(--sp-3);margin:var(--sp-4) 0;flex-wrap:wrap;align-items:center;display:flex}.filters input,.filters select,.sel,.tbl input,.tbl select,.addform input,.addform select{font:inherit;border:1px solid var(--gh-gray-300);border-radius:var(--r-input);color:var(--gh-ink);background:#fff;min-height:38px;padding:8px 10px;font-size:14px}.filters input{min-width:240px}.tbl-wrap{border:1px solid var(--border-default);border-radius:var(--r-card);background:#fff;overflow-x:auto}.tbl{border-collapse:collapse;width:100%;min-width:1180px;font-size:14px}.tbl th{background:var(--gh-gray-100);text-align:left;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);padding:var(--sp-3);border-bottom:1px solid var(--border-default);white-space:nowrap;font-size:12px;font-weight:700}.tbl td{padding:var(--sp-3);border-bottom:1px solid var(--gh-gray-100);vertical-align:top}.tbl tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:var(--surface-soft)}.tbl tr.dim{opacity:.6}.tbl td.unassigned{background:var(--gh-yellow-tint)}.tbl .w-sm{width:56px}.tbl a{font-weight:600}.tag{margin-left:var(--sp-2);border-radius:var(--r-pill);background:var(--gh-green-tint);color:var(--gh-green-deep);padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.addbox{margin-top:var(--sp-5);border:1px solid var(--border-default);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-5);background:#fff}.addbox summary{cursor:pointer;font-weight:700}.addform{gap:var(--sp-4);margin-top:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;display:grid}.addform .field input,.addform .field select{width:100%}.brand{gap:var(--sp-2);font-size:16px}.brand span{white-space:nowrap}.nav{gap:clamp(12px,1.5vw,22px)}.nav a,.loginlink{white-space:nowrap;font-size:14px}.bar{gap:clamp(12px,1.6vw,24px);min-height:68px}.menu summary{padding:6px 14px;font-size:14px}.top .btn.sm{white-space:nowrap;padding:9px 18px;font-size:13px}@media (max-width:640px){.brand{font-size:14px}.brand img{width:36px;height:36px}}@media (max-width:380px){.brand{font-size:13px}}.admin-head{padding-top:var(--sp-7);padding-bottom:0}.admin-head h1{margin-bottom:var(--sp-2);font-size:34px}.admin-head .lead{margin:0;font-size:16px}.section.admin{padding-top:var(--sp-6)}.tbl{min-width:0}.tbl th,.tbl td{padding:var(--sp-2) var(--sp-3)}.tbl input[name=notes]{width:150px}.tbl input[name=instrument]{width:90px}.tbl select{max-width:135px}.tbl td:last-child{white-space:nowrap}body:has(.admin) .top .wrap{max-width:1480px}@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transform:none!important}}.tbl tr.flag td{background:var(--gh-yellow-tint)}.brand img{width:auto;height:40px}@media (max-width:640px){.brand img{height:34px}}.hero-art img,.auth-art img{width:min(100%,380px);height:auto}.auth-card>img{border-radius:0;width:auto;height:56px}.foot img{width:auto;height:44px}.tag.ok{margin-left:0}.tag.wait{background:var(--gh-yellow-tint);color:var(--gh-ink);border:1px solid var(--gh-yellow);margin-left:0}.hn-strip{z-index:40;background:var(--surface-page);border-bottom:1px solid var(--border-default);position:sticky;top:69px}.hn-bar{align-items:center;gap:var(--sp-5);min-height:64px;display:flex}.hn-now{align-items:baseline;gap:var(--sp-2);white-space:nowrap;flex:none;display:flex}.hn-now-label{letter-spacing:.12em;text-transform:uppercase;color:var(--gh-green-deep);font-size:12px;font-weight:700}.hn-now b{letter-spacing:-.02em;color:var(--gh-ink);font-size:28px;font-weight:800}.hn-now-of{color:var(--text-secondary);font-size:14px;font-weight:600}.hn-steps{align-items:center;gap:var(--sp-2);flex:1;min-width:0;display:flex}.hn-arrow{border:2px solid var(--gh-ink);width:36px;height:36px;color:var(--gh-ink);transition:background var(--t) var(--ease),color var(--t) var(--ease);border-radius:50%;flex:none;place-items:center;padding-bottom:3px;font-size:22px;font-weight:700;line-height:1;text-decoration:none;display:grid}.hn-arrow:hover{background:var(--gh-ink);color:#fff}.hn-arrow[aria-disabled=true]{opacity:.45;pointer-events:none}.hn-list{scrollbar-width:none;scroll-snap-type:x proximity;flex:1;gap:4px;min-width:0;margin:0;padding:8px 2px;list-style:none;display:flex;overflow-x:auto}.hn-list::-webkit-scrollbar{display:none}.hn-list li{scroll-snap-align:center;flex:none}.hn-list a{border-radius:var(--r-pill);min-width:40px;height:40px;color:var(--gh-ink);transition:background var(--t) var(--ease);place-items:center;padding:0 4px;font-size:15px;font-weight:700;text-decoration:none;display:grid;position:relative}.hn-list a:hover{background:var(--gh-gray-100)}.hn-list a[aria-current=page]{background:0 0}.hn-pill{border-radius:var(--r-pill);background:var(--gh-green);position:absolute;inset:0}.hn-n{z-index:1;position:relative}.hn-lock{z-index:1;color:var(--gh-gray-600);opacity:.8;position:absolute;bottom:3px;right:2px}@media (max-width:640px){.hn-now-label,.hn-now-of{display:none}.hn-now b{font-size:22px}.hn-bar{gap:var(--sp-3)}}.hn-head{padding:var(--sp-7) 0 var(--sp-5)}.hn-head h1{margin-bottom:var(--sp-3);font-size:56px}@media (max-width:640px){.hn-head h1{font-size:40px}}.hn-head .lead{margin-bottom:0}.hn-moves{gap:var(--sp-3);margin:var(--sp-5) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.hn-moves li{align-items:center;gap:var(--sp-2);border:2px solid var(--gh-ink);border-radius:var(--r-pill);background:#fff;padding:6px 16px 6px 10px;font-size:14px;font-weight:700;display:inline-flex}.hn-main{padding-bottom:var(--sp-8)}.hn-wait{min-height:240px;color:var(--text-secondary);place-items:center;font-weight:600;display:grid}.hn-credit{padding-bottom:var(--sp-8)}.hn-sections{gap:var(--sp-4);margin:0;padding:0;list-style:none;display:grid}.hn-sections>li{border:1px solid var(--border-default);border-radius:var(--r-card);box-shadow:var(--sh-sm);transition:box-shadow var(--t) var(--ease),border-color var(--t) var(--ease);background:#fff;overflow:hidden}.hn-sections>li.open{box-shadow:var(--sh-md);border-color:var(--gh-ink)}.hn-sections h2{font-size:inherit;margin:0;scroll-margin-top:150px}.hn-sections h2 button{all:unset;box-sizing:border-box;align-items:center;gap:var(--sp-4);width:100%;padding:var(--sp-4) var(--sp-5);cursor:pointer;display:flex}.hn-sections h2 button:focus-visible{outline:3px solid var(--focus-ring);outline-offset:-3px}.hn-num{border:2px solid var(--gh-ink);width:40px;height:40px;color:var(--gh-ink);background:#fff;border-radius:50%;flex:none;place-items:center;font-weight:800;display:grid}.hn-sections li.open .hn-num{background:var(--gh-green)}.hn-ttl{flex:1;gap:2px;min-width:0;display:grid}.hn-ttl b{color:var(--gh-ink);font-size:20px;line-height:1.25}.hn-ttl span{color:var(--text-secondary);font-size:14px;font-weight:500;line-height:1.4}.hn-chev{border-right:2px solid var(--gh-ink);border-bottom:2px solid var(--gh-ink);width:10px;height:10px;transition:transform var(--t) var(--ease);flex:none;transform:rotate(45deg)translateY(-2px)}.hn-sections li.open .hn-chev{transform:rotate(225deg)translateY(-2px)}.hn-body{overflow:hidden}.hn-inner{padding:0 var(--sp-5) var(--sp-5)}@media (max-width:640px){.hn-inner{padding:0 var(--sp-3) var(--sp-4)}.hn-sections h2 button{padding:var(--sp-3) var(--sp-4)}}.hn-embed{background:0 0;border:0;width:100%;display:block}.hn-next{margin-top:var(--sp-5);justify-content:flex-end;display:flex}.hn-tabs{margin-bottom:var(--sp-4);flex-wrap:wrap;gap:6px;display:flex}.hn-tabs button{border-radius:var(--r-pill);background:var(--gh-gray-100);font:inherit;color:var(--gh-ink);cursor:pointer;border:0;padding:10px 18px;font-size:14px;font-weight:700;position:relative}.hn-tabs button span{z-index:1;position:relative}.hn-tab-pill{border-radius:var(--r-pill);background:var(--gh-green);position:absolute;inset:0}.hn-glyphs{gap:var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));display:grid}@media (max-width:760px){.hn-glyphs{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}.hn-glyphs figure{text-align:center;margin:0}.hn-glyphs img{width:100%;max-width:200px;height:auto;margin:0 auto}.hn-glyphs figcaption{margin-top:var(--sp-2);gap:4px;display:grid}.hn-glyphs code{color:var(--text-secondary);word-break:break-word;font-size:12px}.hn-locked{gap:var(--sp-7);grid-template-columns:1.1fr 1fr;align-items:center;display:grid}@media (max-width:900px){.hn-locked{gap:var(--sp-5);grid-template-columns:1fr}}.hn-locked-art img{border:2px solid var(--gh-ink);border-radius:var(--r-img);width:100%;height:auto;display:block}.hn-locked-body h2{font-size:30px}.hn-locked .notice{grid-column:1/-1}.hn-buy{display:inline-block}.hn-outline{gap:var(--sp-3);grid-column:1/-1;margin:0;padding:0;list-style:none;display:grid}.hn-outline li{gap:var(--sp-3);align-items:flex-start;display:flex}.hn-outline li div{gap:2px;display:grid}.hn-outline li b{color:var(--gh-ink)}.hn-outline li span:not(.hn-num){color:var(--text-secondary);font-size:14px}.hn-outline-wide{gap:var(--sp-5);grid-template-columns:repeat(5,1fr)}.hn-outline-wide li{flex-direction:column}@media (max-width:960px){.hn-outline-wide{grid-template-columns:1fr}.hn-outline-wide li{flex-direction:row}}.hn-hero .wrap{grid-template-columns:1fr}.hn-vocab{gap:var(--sp-5);grid-template-columns:repeat(4,1fr);display:grid}@media (max-width:960px){.hn-vocab{grid-template-columns:repeat(2,1fr)}}@media (max-width:560px){.hn-vocab{grid-template-columns:1fr}}.hn-icon{margin-bottom:var(--sp-2);display:block}.hn-icon svg{width:44px;height:44px}.stu h2{margin-top:0}.stu-head h1{margin-bottom:var(--sp-3);font-size:40px}.stu-nav{gap:var(--sp-5);margin:var(--sp-4) 0 var(--sp-6);flex-wrap:wrap;display:flex}.stu-nav a{color:var(--gh-ink);border-bottom:2px solid var(--gh-green);padding-bottom:2px;font-size:14px;font-weight:700;text-decoration:none}.stu-card{border:1px solid var(--border-default);border-radius:var(--r-card);padding:var(--sp-4) var(--sp-5);box-shadow:var(--sh-sm);background:#fff}.stu-form{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;display:grid}.stu-form .full{grid-column:1/-1}.stu .field input,.stu .field select,.stu .field textarea{font-size:15px}.field textarea{width:100%;font:inherit;border:1px solid var(--gh-gray-600);border-radius:var(--r-input);color:var(--gh-ink);background:#fff;padding:12px 14px}.field input:disabled,.field select:disabled{background:var(--gh-gray-100);color:var(--text-secondary);cursor:not-allowed}.hp-grid{gap:var(--sp-2);margin:var(--sp-3) 0;grid-template-columns:repeat(10,1fr);display:grid}@media (max-width:640px){.hp-grid{grid-template-columns:repeat(5,1fr)}}.hp-chip{border:2px solid var(--gh-gray-300);height:48px;color:var(--gh-ink);transition:box-shadow var(--t) var(--ease),transform var(--t) var(--ease);background:#fff;border-radius:12px;place-items:center;font-weight:800;text-decoration:none;display:grid}a.hp-chip:hover{box-shadow:var(--sh-md);color:var(--gh-ink);transform:translateY(-1px)}.hp-chip.s-introduced{background:var(--gh-yellow-tint);border-color:var(--gh-yellow)}.hp-chip.s-practicing{background:var(--gh-yellow);border-color:var(--gh-ink)}.hp-chip.s-mastered{background:var(--gh-green);border-color:var(--gh-ink)}.hp-chip.sel{outline:3px solid var(--focus-ring);outline-offset:2px}.hp-legend{gap:var(--sp-4);color:var(--text-secondary);flex-wrap:wrap;font-size:14px;font-weight:600;display:flex}.hp-legend .hp-chip{vertical-align:-4px;border-width:2px;border-radius:5px;width:18px;height:18px;display:inline-block}.lg{margin:var(--sp-4) 0 0;border:1px solid var(--border-default);border-radius:var(--r-card);background:#fff;padding:0;list-style:none;overflow:hidden}.lg li{gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--gh-gray-100);grid-template-columns:110px 1fr auto;align-items:start;display:grid}.lg li:last-child{border-bottom:0}@media (max-width:640px){.lg li{grid-template-columns:1fr auto}.lg-date{grid-column:1/-1}}.lg-date{color:var(--text-secondary);font-size:14px;font-weight:700}.lg-del{all:unset;cursor:pointer;color:var(--text-secondary);font-size:13px;font-weight:600;text-decoration:underline}.lg-del:hover{color:var(--gh-red)}.lg-del:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.c-purple{background:var(--gh-purple);color:var(--gh-ink)}.rubric+.rubric{margin-top:var(--sp-8)}.rubric-head{max-width:720px;margin-bottom:var(--sp-5)}.rubric-head h3{margin-bottom:var(--sp-2);font-size:26px}.rubric-head .lead{margin:0;font-size:16px}.programs-row{gap:var(--sp-5);grid-template-columns:repeat(4,1fr);display:grid}.programs-row.one{grid-template-columns:minmax(0,420px)}@media (max-width:1100px){.programs-row{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.programs-row,.programs-row.one{grid-template-columns:1fr}}.drafts{margin:var(--sp-3) 0 0;gap:var(--sp-2);padding:0;list-style:none;display:grid}.drafts li{gap:var(--sp-4);border:1px solid var(--border-default);border-radius:var(--r-card);padding:var(--sp-3) var(--sp-4);background:#fff;align-items:center;display:flex}.draft-body h1{font-size:34px}.draft-body h2{margin-top:var(--sp-6);font-size:24px}.draft-body hr{border:0;border-top:1px solid var(--border-default);margin:var(--sp-5) 0}.art-wrap{max-width:760px;padding:0 var(--gutter);margin:0 auto}.art-head{background:var(--surface-soft);border-bottom:1px solid var(--border-default);padding:var(--sp-7) 0 var(--sp-7)}.art-back{color:var(--gh-green-deep);font-size:14px;font-weight:700;text-decoration:none}.art-back:hover{text-decoration:underline}.art-eyebrow{align-items:center;gap:var(--sp-3);margin:var(--sp-5) 0 var(--sp-4);flex-wrap:wrap;display:flex}.art-pill{border-radius:var(--r-pill);background:var(--gh-green-tint);color:var(--gh-green-deep);letter-spacing:.12em;text-transform:uppercase;padding:5px 14px;font-size:12px;font-weight:800;display:inline-block}.art-meta{color:var(--text-secondary);font-size:14px;font-weight:600}.art-title{letter-spacing:-.02em;margin:0 0 var(--sp-5);text-wrap:balance;font-size:48px;font-weight:800;line-height:1.08}.art-deck{margin:0 0 var(--sp-6);padding-left:var(--sp-4);border-left:4px solid var(--gh-green);color:var(--gh-ink);max-width:640px;font-size:21px;font-weight:500;line-height:1.5}.art-byline{align-items:center;gap:var(--sp-3);display:flex}.art-byline img{width:auto;height:36px}.art-byline span{line-height:1.3;display:grid}.art-byline b{color:var(--gh-ink);font-size:15px}.art-byline span span{color:var(--text-secondary);font-size:14px;font-weight:500}@media (max-width:640px){.art-title{font-size:34px}.art-deck{font-size:18px}.art-head{padding:var(--sp-6) 0}}.art-body{padding:var(--sp-8) 0 var(--sp-7)}.art{color:var(--text-body);font-size:19px;line-height:1.75}.art>:first-child{margin-top:0}.art p{margin:0 0 1.25em}.art h2{letter-spacing:-.01em;padding-top:var(--sp-4);margin:2.3em 0 .7em;font-size:29px;line-height:1.2;position:relative}.art h2:before{content:"";background:var(--gh-green);border-radius:2px;width:40px;height:4px;position:absolute;top:0;left:0}.art h3{margin:1.8em 0 .5em;font-size:22px}.art strong{color:var(--gh-ink);font-weight:700}.art a{color:var(--gh-ink);text-decoration:underline;-webkit-text-decoration-color:var(--gh-green);text-decoration-color:var(--gh-green);text-underline-offset:3px;font-weight:600;text-decoration-thickness:2px}.art a:hover{color:var(--gh-green-deep)}.art ul{gap:.7em;margin:0 0 1.5em;padding:0;list-style:none;display:grid}.art ul li{padding-left:30px;position:relative}.art ul li:before{content:"";background:var(--gh-green);border-radius:50%;width:10px;height:10px;position:absolute;top:.72em;left:5px}.art ol{gap:.7em;margin:0 0 1.5em;padding-left:1.5em;display:grid}.art ol li::marker{color:var(--gh-green-deep);font-weight:800}.art blockquote{padding:var(--sp-4) var(--sp-5);border-left:4px solid var(--gh-ink);background:var(--gh-gray-100);border-radius:0 var(--r-card) var(--r-card) 0;margin:1.8em 0}.art blockquote p:last-child{margin:0}.art hr{display:none}.art code{background:var(--gh-gray-100);border-radius:6px;padding:2px 6px;font-size:.9em}.art table{border-collapse:collapse;width:100%;margin:0 0 1.5em;font-size:16px}.art th,.art td{border-bottom:1px solid var(--border-default);text-align:left;padding:8px}.art-try{padding:var(--sp-4) var(--sp-5);border:2px solid var(--gh-ink);border-radius:var(--r-card);box-shadow:var(--sh-sm);background:#fff;margin:2em 0}.art-try-label{margin-bottom:var(--sp-2);border-radius:var(--r-pill);background:var(--gh-yellow);color:var(--gh-ink);letter-spacing:.1em;text-transform:uppercase;padding:3px 12px;font-size:12px;font-weight:800;display:inline-block}.art-try p{margin:0;font-size:18px;line-height:1.6}.art-cta{padding:var(--sp-6) var(--sp-5);border:2px solid var(--gh-ink);border-radius:var(--r-img);background:var(--gh-green-tint);text-align:center;gap:var(--sp-4);justify-items:center;margin:2.4em 0 0;display:grid}.art-cta p{margin:0;font-weight:600}.art-cta .btn{color:#fff;text-decoration:none}.art-author{padding:var(--sp-5);border-radius:var(--r-card);background:var(--gh-gray-100);color:var(--text-secondary);margin:2.4em 0 0;font-size:16px;font-style:normal;line-height:1.6}.art-pager{gap:var(--sp-3);margin-top:var(--sp-6);flex-wrap:wrap;justify-content:space-between;display:flex}@media (max-width:640px){.art{font-size:18px}.art h2{font-size:25px}}.art-pager{gap:var(--sp-3);grid-template-columns:1fr 1fr;display:grid}.art-pager .btn{white-space:normal;text-align:left;justify-content:flex-start;line-height:1.3}.art-pager .btn:last-child{text-align:right;justify-content:flex-end}@media (max-width:640px){.art-pager{grid-template-columns:1fr}.art-pager .btn,.art-pager .btn:last-child{text-align:left;justify-content:flex-start}}.class-panel{margin-top:var(--sp-6);padding:var(--sp-7);background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--r-card);box-shadow:var(--sh-sm);gap:var(--sp-5);flex-direction:column;display:flex}.class-panel h2{margin:0}.class-panel ul{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;font-size:18px;list-style:none;display:flex}.class-panel li{padding-bottom:var(--sp-3);border-bottom:1px solid var(--border-default)}.class-panel li:last-child{border-bottom:0;padding-bottom:0}.class-panel .hn-buy{display:block}.class-panel .hn-buy .row{gap:var(--sp-4)}.class-panel .small{margin:0}.class-panel [role=status]{padding:var(--sp-4) var(--sp-5);border-radius:var(--r-card);background:var(--surface-soft);margin:0}@media (max-width:600px){.class-panel{padding:var(--sp-5)}.class-panel .hn-buy .btn{width:100%}}.dd{position:relative}.dd>a{display:inline-block}.ddp{border:1px solid var(--border-default);border-radius:var(--r-card);min-width:230px;box-shadow:var(--sh-md);padding:var(--sp-2);z-index:30;background:#fff;display:none;position:absolute;top:100%;left:-14px}.dd:hover .ddp,.dd:focus-within .ddp{display:grid}.nav .ddp a{border-bottom:0;border-radius:8px;padding:10px 14px;font-size:14px}.nav .ddp a:hover{background:var(--surface-soft);border-bottom:0}.mgroup{gap:0;display:grid}.mhead{margin:var(--sp-2) 0 0;letter-spacing:.08em;text-transform:uppercase;color:var(--gh-green-deep);font-size:12px;font-weight:800}.menu .panel .mgroup a{padding-left:var(--sp-3);font-size:16px}.resgrid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
