:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#19171f;background:#f7f7fa;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}a{color:inherit}img,svg{display:block}[hidden]{display:none!important}:focus-visible{outline:3px solid #8c52ff;outline-offset:3px}.site-header{background:#000;color:#fff}.header-inner,.page-shell,.play-shell,.footer-inner{width:min(1160px,calc(100% - 40px));margin:auto}.header-inner{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{text-decoration:none;display:inline-flex;align-items:center;gap:10px;font-weight:850;font-size:1.3rem;letter-spacing:-.055em;white-space:nowrap}.brand small{font-size:.59em;letter-spacing:-.035em;color:#b6b2c1}.brand-accent{color:#ac80ff}.brand-icon{width:46px;height:50px;overflow:hidden;display:grid;place-items:center}.brand-icon img{height:48px;width:auto;object-fit:contain}.site-header nav{display:flex;gap:28px}.site-header nav a{font-size:.92rem;font-weight:650;text-decoration:none;color:#e9e6f0}.site-header nav a:hover{color:#b89aff}.intro{padding:60px 0 45px;display:flex;justify-content:space-between;align-items:center;gap:24px}.eyebrow{font-size:.75rem;letter-spacing:.135em;font-weight:850;margin:0 0 17px;color:#6f38de}.eyebrow-spark{font-size:1.2rem;line-height:0;vertical-align:-.1em;margin-right:6px}.intro h1{font-size:clamp(2.6rem,6vw,5.3rem);line-height:1.03;letter-spacing:-.07em;margin:0;font-weight:850}.intro h1 span{color:#8c52ff}.intro-copy{max-width:500px;font-size:1.1rem;line-height:1.5;color:#5a5661;margin:21px 0 0}.intro-stamp{width:136px;height:136px;flex:none;border:2px solid #19171f;border-radius:50%;transform:rotate(12deg);display:flex;justify-content:center;align-items:center;gap:7px;color:#19171f}.intro-stamp span{font-size:3rem;line-height:1}.intro-stamp small{font-size:.71rem;font-weight:900;line-height:1.23;letter-spacing:.1em}.game-library{scroll-margin-top:20px}.section-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #19171f;padding-bottom:11px;margin-bottom:27px}.section-head h2{font-size:1.45rem;margin:0;letter-spacing:-.045em}.section-head span{font-size:.85rem;color:#64606c;font-weight:650}.category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.category{min-width:0}.category-heading{display:flex;align-items:center;gap:10px;margin-bottom:12px}.category-number{color:#7141d2;font-size:.81rem;font-weight:850}.category h3{margin:0;font-size:.96rem;font-weight:750}.game-card{display:flex;flex-direction:column;height:100%;border:1px solid #d9d6df;border-radius:20px;background:#fff;text-decoration:none;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.game-card:hover,.game-card:focus-visible{transform:translateY(-4px);border-color:#8c52ff;box-shadow:0 12px 28px #281a4d16}.card-art{height:142px;display:flex;justify-content:center;align-items:center;overflow:hidden;color:#1c1725}.card-art svg{width:210px;height:106px}.art-text span{font-size:clamp(2.2rem,4vw,3.5rem);font-weight:800;letter-spacing:-.065em;white-space:nowrap}.art-text i{font-style:normal;color:#7744d1}.card-reading .card-art{background:#d9f58b}.card-theory .card-art{background:#ddccff}.card-transpose .card-art{background:#ffd89c}.card-content{padding:22px 22px 23px;display:flex;flex-direction:column;flex:1}.card-meta{font-size:.72rem;letter-spacing:.08em;color:#7351b5;font-weight:850}.card-content h4{margin:12px 0 7px;font-size:1.5rem;line-height:1.15;letter-spacing:-.05em}.card-content p{margin:0;line-height:1.45;color:#595664;font-size:.95rem}.card-action{margin-top:auto;padding-top:23px;display:flex;align-items:center;justify-content:space-between;font-weight:800;color:#6933d4;font-size:.94rem}.card-action span{font-size:1.35rem;line-height:1}.how-section{margin:75px 0 100px;padding:32px 0;border-top:1px solid #d6d3dc;border-bottom:1px solid #d6d3dc;display:grid;grid-template-columns:1fr 1fr;gap:40px;scroll-margin-top:30px}.how-section .eyebrow{margin-bottom:6px}.how-section h2{font-size:1.9rem;letter-spacing:-.055em;margin:0}.how-section>p{max-width:520px;color:#56515f;line-height:1.6;margin:6px 0 0}.site-footer{background:#000;color:#c1bbc9}.footer-inner{display:flex;align-items:center;justify-content:space-between;min-height:82px;gap:20px;font-size:.84rem}.footer-inner span:first-child{font-weight:800;color:#fff}
/* Games */
.play-shell{max-width:900px;padding:34px 0 90px}.back-link{display:inline-flex;align-items:center;gap:8px;margin-bottom:24px;text-decoration:none;color:#584f69;font-weight:750;font-size:.92rem}.back-link:hover{color:#6c32e7}.back-link span{font-size:1.25rem}.play-panel{background:#fff;border:1px solid #d8d3e1;border-radius:24px;overflow:hidden;box-shadow:0 15px 40px #281a4d0c}.play-heading{padding:30px 34px 28px;background:#17131f;color:#fff;display:flex;justify-content:space-between;align-items:center;gap:20px}.play-heading .eyebrow{color:#cbb1ff;margin-bottom:11px}.play-heading h1{font-size:clamp(1.95rem,4vw,3rem);line-height:1.1;letter-spacing:-.06em;margin:0}.play-heading p:last-child{color:#cec9d8;line-height:1.45;margin:10px 0 0}.heading-symbol{color:#ac80ff;font-size:4.5rem;font-weight:700;line-height:1}.play-body{padding:30px 34px 38px}.choice-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:26px}.choice,.option{border:1px solid #d7d2df;background:#fff;color:#211c2a;text-align:left;border-radius:14px;font-weight:750}.choice{padding:10px 18px;min-height:48px}.choice:hover,.option:hover{border-color:#8c52ff}.choice.selected,.option.selected{border:2px solid #8c52ff;background:#f5efff;color:#5424b7;padding:9px 17px}.scoreboard{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.scoreboard span{display:inline-flex;align-items:baseline;gap:5px;background:#f5f3f9;border-radius:9px;padding:8px 13px;font-size:.85rem;color:#5b5662;font-weight:650}.scoreboard strong{font-size:1.1rem;color:#1c1725}.timer-track{height:6px;background:#e9e3f1;border-radius:10px;overflow:hidden;margin-bottom:18px}.timer-track>div{width:100%;height:100%;background:#8c52ff;border-radius:inherit}.staff-frame{background:#fff;border:2px solid #d7d4df;border-radius:16px;overflow:hidden;max-width:650px;margin:0 auto}.staff-frame svg{width:100%;height:auto}.letter-answers,.multiple-answers{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:22px auto 10px}.letter-answers button,.multiple-answers button{border:2px solid #cfc6df;border-radius:12px;background:#fff;min-width:58px;min-height:55px;font-weight:800;font-size:1.25rem;color:#201a2d}.letter-answers button:hover:not(:disabled),.multiple-answers button:hover:not(:disabled){border-color:#8c52ff;background:#f3edff}.letter-answers button.wrong,.multiple-answers button.wrong{background:#ffe5e2;border-color:#e36759}.feedback{color:#635d6a;line-height:1.4;min-height:23px;text-align:center;margin:17px 0}.feedback.good{color:#4e24ac;font-weight:750}.feedback.error{color:#ad3829;font-weight:750}.primary-button,.secondary-button{border:0;border-radius:12px;min-height:49px;padding:12px 20px;font-weight:800}.primary-button{background:#8c52ff;color:#fff}.primary-button:hover:not(:disabled){background:#6f34e7}.secondary-button{background:#f0ebf9;color:#5b2bbe}.secondary-button:hover{background:#e4d8fb}#staff-start{display:block;margin:20px auto 0}.difficulty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:22px}.difficulty-grid .option:first-child{grid-column:1/-1}.option{min-height:83px;padding:16px 18px}.option.selected{padding:15px 17px}.option strong,.option small{display:block}.option strong{font-size:1rem}.option small{font-size:.85rem;line-height:1.3;color:#6a6274;margin-top:5px;font-weight:500}.option.selected small{color:#674a9d}.instrument-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px}.question-label{text-align:center;font-weight:750;margin:20px 0 14px;color:#3d3450}.big-note{background:#faf9ff;border:2px solid #d7d4df;border-radius:16px;min-height:210px;display:grid;place-items:center;font-size:clamp(4.5rem,10vw,7rem);font-weight:800;line-height:1;color:#241b35}.multiple-answers button{min-width:78px;font-size:1.3rem}.note-form{max-width:440px;margin:23px auto 0}.note-form label{display:block;margin-bottom:8px;font-weight:750}.input-row{display:flex;gap:8px}.input-row input{min-width:0;flex:1;border:2px solid #cfc8dc;border-radius:12px;padding:11px 14px;font-size:1.1rem;font-weight:700;color:#201a2b}.input-row input:focus{outline:2px solid #8c52ff;outline-offset:2px}.input-row input.wrong{border-color:#d8564a;background:#fff5f3}.accidentals{display:flex;gap:7px;margin-top:10px}.accidentals button{background:#f3f0f7;border:1px solid #dcd6e5;border-radius:8px;min-width:42px;min-height:40px;font-size:1.25rem}.accidentals button:hover{background:#e8dcfa}.hint{font-size:.88rem;color:#655e6c;line-height:1.5;margin:16px 0 20px}.round-label{font-size:.76rem;font-weight:850;letter-spacing:.09em;color:#6f38de;margin-bottom:13px}.results{text-align:center;padding:36px 12px}.result-icon{width:70px;height:70px;border-radius:50%;background:#e8ddff;color:#6d37d5;font-size:2.5rem;display:grid;place-items:center;margin:0 auto 18px}.results h2{font-size:2rem;letter-spacing:-.055em;margin:0 0 12px}.results p{font-size:1.05rem;color:#554f60;line-height:1.5}.results .result-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:22px}#transpose-between .primary-button{margin-top:10px}
@media(max-width:800px){.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intro-stamp{width:105px;height:105px}.card-art{height:130px}.instrument-grid{grid-template-columns:1fr}}@media(max-width:580px){.header-inner,.page-shell,.play-shell,.footer-inner{width:min(100% - 30px,1160px)}.header-inner{min-height:66px}.brand{font-size:1.15rem}.brand-icon{height:43px;width:35px}.brand-icon img{height:42px}.site-header nav{gap:15px}.site-header nav a{font-size:.82rem}.intro{padding:38px 0 34px}.intro-stamp{display:none}.intro h1{font-size:clamp(2.5rem,11vw,3.8rem)}.intro-copy{font-size:1rem;margin-top:15px}.category-grid{grid-template-columns:1fr;gap:26px}.category-heading{margin-bottom:10px}.game-card{flex-direction:row;min-height:184px}.card-art{height:auto;width:33%;min-width:98px}.card-art svg{width:100%;height:100%}.art-text span{font-size:clamp(1.4rem,6vw,2.2rem);transform:rotate(-90deg)}.card-content{padding:19px 17px}.card-content h4{font-size:1.3rem;margin:9px 0 6px}.card-content p{font-size:.87rem}.card-meta{font-size:.65rem}.card-action{padding-top:14px}.how-section{grid-template-columns:1fr;gap:10px;margin:58px 0 65px}.how-section h2{font-size:1.7rem}.footer-inner{min-height:78px;flex-wrap:wrap;padding:18px 0;gap:5px}.play-shell{padding:22px 0 60px}.play-heading{padding:25px 20px}.heading-symbol{display:none}.play-body{padding:24px 17px 30px}.difficulty-grid{grid-template-columns:1fr}.difficulty-grid .option:first-child{grid-column:auto}.scoreboard{justify-content:space-between;gap:5px}.scoreboard span{font-size:.75rem;padding:7px 8px}.scoreboard strong{font-size:.95rem}.letter-answers{gap:5px}.letter-answers button{min-width:0;flex:1;padding:0;font-size:1.08rem;min-height:50px}.multiple-answers button{min-width:calc(50% - 9px)}.big-note{min-height:170px}.input-row .primary-button{padding:10px 14px}.question-label{font-size:.94rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.game-card{transition:none}}

/* Growing game library */
.header-inner{position:relative}.site-header .main-nav{display:flex;align-items:center;gap:5px}.nav-group{position:relative}.nav-group summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;color:#eeeaf5;font-size:.94rem;font-weight:750;padding:10px 14px;border-radius:10px;white-space:nowrap}.nav-group summary::-webkit-details-marker{display:none}.nav-group summary:hover,.nav-group[open] summary{background:#211b2d;color:#c7aaff}.nav-group summary span{font-size:1.2rem;line-height:.7;color:#ae8ce8}.menu-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:30;min-width:202px;max-height:min(72vh,540px);overflow:auto;background:#fff;color:#211b2b;padding:7px;border:1px solid #dcd6e5;border-radius:15px;box-shadow:0 16px 35px #150d2c30}.nav-instruments .menu-panel{left:auto;right:0}.menu-panel a,.menu-panel button{display:block;text-align:left;width:100%;min-height:40px;border:0;border-radius:9px;background:transparent;padding:9px 12px;text-decoration:none;color:#2c2538;font-size:.9rem;font-weight:650;white-space:nowrap}.menu-panel a:hover,.menu-panel button:hover,.menu-panel a:focus-visible,.menu-panel button:focus-visible{background:#f2eafd;color:#5f2ac9}.menu-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));min-width:310px;gap:2px}.intro{padding-bottom:47px}.home-section{margin-bottom:62px}.home-section .section-head{margin-bottom:20px}.section-link{font-size:.87rem;font-weight:800;text-decoration:none;color:#6d38d9;white-space:nowrap}.section-link:hover{text-decoration:underline}.skill-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.skill-card{min-height:190px;border-radius:20px;padding:18px 20px;text-decoration:none;color:#191720;display:flex;flex-direction:column;position:relative;overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}.skill-card:hover,.skill-card:focus-visible{transform:translateY(-3px);box-shadow:0 10px 25px #281a4d16}.skill-lime{background:#d9f58b}.skill-peach{background:#ffcaad}.skill-blue{background:#bfe7ff}.skill-yellow{background:#ffdc92}.skill-lavender{background:#ddccff}.skill-mint{background:#b4ebd9}.skill-motif{font-size:1.9rem;line-height:1;font-weight:850;letter-spacing:-.06em;min-height:43px}.skill-title{font-size:1.25rem;line-height:1.15;letter-spacing:-.04em;font-weight:850}.skill-prompt{font-size:.86rem;line-height:1.4;margin-top:7px;max-width:240px;color:#34303a}.skill-foot{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:auto;padding-top:16px;font-size:.78rem;font-weight:800;color:#4b3869}.skill-foot span{font-size:1.25rem;line-height:1}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.game-grid .card-content h3{margin:12px 0 7px;font-size:1.5rem;line-height:1.15;letter-spacing:-.05em}.instrument-section{margin-bottom:30px}.instrument-links{display:flex;flex-wrap:wrap;gap:10px}.instrument-pill{text-decoration:none;background:#fff;border:1px solid #d7d1e0;border-radius:12px;padding:12px 18px;min-height:48px;font-weight:750;font-size:.95rem;display:inline-flex;align-items:center;justify-content:center}.instrument-pill:hover,.instrument-pill:focus-visible{border-color:#8c52ff;background:#f2eafd;color:#5725bb}.home-end{text-align:center;padding:8px 0 86px}.home-end .primary-button{display:inline-flex;align-items:center;gap:18px;text-decoration:none}.directory-shell{width:min(1160px,calc(100% - 40px));margin:auto;padding:34px 0 100px;min-height:70vh}.directory-heading{margin:10px 0 30px}.directory-heading .eyebrow{margin-bottom:9px}.directory-heading h1{font-size:clamp(2.2rem,5vw,3.8rem);letter-spacing:-.065em;line-height:1.05;margin:0}.directory-heading>p:last-child{color:#5d5865;line-height:1.5;font-size:1.05rem;margin:13px 0 0}.directory-tools{background:#fff;border:1px solid #dcd7e4;border-radius:18px;padding:20px;margin-bottom:24px}.search-label{display:block;color:#312b3b;font-weight:750;font-size:.9rem}.search-label input{display:block;width:100%;margin-top:9px;min-height:48px;border:2px solid #d5cfdf;border-radius:11px;padding:10px 14px;color:#211b2b;font-size:1rem;font-weight:500}.search-label input:focus,.filter-grid select:focus{outline:2px solid #8c52ff;outline-offset:2px}.filter-details{margin-top:14px;border-top:1px solid #e6e2ec;padding-top:11px}.filter-details summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:7px;width:max-content;min-height:36px;font-size:.91rem;font-weight:800;color:#6530d0}.filter-details summary::-webkit-details-marker{display:none}.filter-chevron{margin-left:5px;font-size:1.3rem;line-height:.7}.filter-badge{display:grid;place-items:center;min-width:21px;height:21px;border-radius:50%;background:#8c52ff;color:#fff;font-size:.72rem}.filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 13px;margin:17px 0}.filter-grid label{font-size:.82rem;font-weight:750;color:#544c5e}.filter-grid select{display:block;width:100%;margin-top:7px;min-height:43px;border:1px solid #d4cddd;border-radius:9px;padding:8px 10px;background:#fff;color:#241d30;font-size:.92rem}.clear-filters{border:0;background:transparent;padding:6px 0;color:#6c36d5;font-size:.88rem;font-weight:800}.clear-filters:hover{text-decoration:underline}.directory-results-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:15px}.directory-results-head p{margin:0;font-size:.86rem;font-weight:750;color:#655e6f}.directory-results-head a{text-decoration:none;color:#6c36d5;font-size:.86rem;font-weight:800}.directory-results-head a:hover{text-decoration:underline}.empty-state{text-align:center;min-height:250px;background:#fff;border:1px dashed #cfc6da;border-radius:18px;padding:42px 22px}.empty-state h2{font-size:1.5rem;letter-spacing:-.04em;margin:0 0 10px}.empty-state p{color:#625a6b;line-height:1.5}.empty-state button{margin-top:12px}
@media(max-width:800px){.skill-grid,.game-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.header-inner{flex-wrap:wrap;gap:0;padding:9px 0 4px}.site-header .main-nav{width:100%;justify-content:space-between;gap:2px}.nav-group summary{padding:9px 11px;font-size:.9rem}.nav-group .menu-panel{position:fixed;top:108px;left:15px;right:15px;min-width:0;max-height:calc(100dvh - 120px)}.menu-columns{min-width:0}.intro{padding-top:35px}.skill-card{min-height:172px}}
@media(max-width:580px){.directory-shell{width:min(100% - 30px,1160px);padding-top:22px}.home-section{margin-bottom:48px}.home-section .section-head h2{font-size:1.34rem}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.skill-card{min-height:183px;padding:15px}.skill-title{font-size:1.04rem}.skill-prompt{font-size:.79rem}.skill-foot{font-size:.7rem}.game-grid{grid-template-columns:1fr;gap:13px}.game-grid .card-content h3{font-size:1.3rem;margin:9px 0 6px}.instrument-links{gap:8px}.instrument-pill{padding:9px 13px;min-height:43px;font-size:.85rem}.home-end{padding-bottom:60px}.directory-heading{margin-bottom:24px}.directory-tools{padding:15px}.filter-grid{grid-template-columns:1fr;gap:11px}.directory-heading>p:last-child{font-size:.97rem}.menu-panel a,.menu-panel button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.skill-card{transition:none}}
.site-header .menu-panel a,.site-header .menu-panel button{color:#2c2538}.site-header .menu-panel a:hover,.site-header .menu-panel a:focus-visible,.site-header .menu-panel button:hover,.site-header .menu-panel button:focus-visible{color:#5f2ac9}

/* Brass Trainer */
.card-brass .card-art{background:#bfe7ff}.card-brass .art-text span{letter-spacing:.08em}
#brass-panel .heading-symbol{font-size:2.5rem;letter-spacing:.06em}.setup-group{border:0;padding:0;margin:0 0 24px;min-width:0}.setup-group legend{font-weight:850;font-size:.88rem;color:#40364e;margin-bottom:10px}.brass-instrument-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.brass-instrument-grid .option,.brass-difficulty-grid .option,.brass-mode-grid .option{min-height:68px}.brass-difficulty-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.brass-mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.brass-start{display:block;margin:8px auto 0}.brass-play-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:10px}.brass-play-top .round-label{margin:0}.brass-staff{max-width:560px}.brass-answer-area{margin:15px auto 0;text-align:center}.valve-controls{display:flex;justify-content:center;gap:20px}.valve-controls button{display:grid;justify-items:center;gap:5px;border:0;background:transparent;color:#332a3f;min-width:76px;min-height:91px;padding:3px 5px;border-radius:12px}.valve-controls button:hover:not(:disabled){background:#f4effd}.valve-circle{width:64px;height:64px;border:4px solid #32293e;border-radius:50%;background:#fff;transition:background .12s ease,border-color .12s ease}.valve-controls button.selected .valve-circle{background:#8c52ff;border-color:#6432c7;box-shadow:inset 0 0 0 5px #b999ff}.valve-controls small{font-size:.9rem;font-weight:850}.slide-controls{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;max-width:560px;margin:0 auto}.slide-controls button{min-width:0;min-height:58px;border:2px solid #cfc6df;border-radius:12px;background:#fff;color:#251c32;font-size:1.25rem;font-weight:850}.slide-controls button:hover:not(:disabled){border-color:#8c52ff;background:#f3edff}.slide-controls button.selected{border-color:#6e35dc;background:#8c52ff;color:#fff}.brass-check{display:block;margin:13px auto 0;min-width:190px}.brass-final-stats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:22px 0}.brass-final-stats span{display:flex;flex-direction:column;min-width:125px;padding:14px;background:#f5f1fc;border-radius:13px;color:#62596d;font-size:.8rem;font-weight:750}.brass-final-stats strong{color:#251b33;font-size:1.55rem;margin-bottom:3px}.review-section{max-width:560px;margin:28px auto 0;text-align:left;border-top:1px solid #ddd7e5;padding-top:20px}.review-section h3{text-align:center;margin:0 0 12px}.review-section ul{list-style:none;padding:0;margin:0;display:grid;gap:7px}.review-section li{display:flex;justify-content:space-between;align-items:center;gap:15px;background:#faf8fd;border:1px solid #e3ddeb;border-radius:11px;padding:10px 13px}.review-section li span{display:flex;flex-direction:column}.review-section li strong{font-size:1.05rem}.review-section li small{color:#726978;margin-top:2px}.review-section li b{color:#5f29c9;text-align:right;font-size:.91rem}
@media(max-width:800px){.brass-instrument-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){.brass-instrument-grid,.brass-difficulty-grid,.brass-mode-grid{grid-template-columns:1fr}.setup-group{margin-bottom:20px}.brass-play-top{align-items:flex-start}.brass-play-top .round-label{font-size:.68rem}.brass-staff{width:100%}.valve-controls{gap:9px}.valve-controls button{min-width:70px}.valve-circle{width:60px;height:60px}.slide-controls{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.slide-controls button{min-height:52px}.brass-final-stats span{min-width:90px;flex:1}.review-section li{align-items:flex-start}}
.skill-motif img{width:38px;height:38px;object-fit:contain;opacity:.82}

/* Key Signature Trainer */
#key-panel .heading-symbol{font-size:2.8rem;letter-spacing:.1em}
#key-setup .option{min-height:78px}
#key-setup .brass-mode-grid:first-child{grid-template-columns:repeat(3,minmax(0,1fr))}
.key-staff{max-width:550px;margin:8px auto 14px}
#key-question{margin:15px auto 4px;text-align:center}
.key-choices{max-width:580px;margin:9px auto 0}
.key-choices button{font-size:1.08rem;min-height:53px;min-width:calc(50% - 10px)}
.key-choices button.selected{border-color:#6232cc;background:#e8dcff;color:#3a197c}
.key-teaching{max-width:610px;margin:13px auto 0;padding:16px 20px;text-align:center;background:#f7f3ff;border:1px solid #d9c9fa;border-radius:16px;color:#261f33}
.key-teaching p{line-height:1.45;margin:9px 0;font-size:1rem}
.key-teaching strong{color:#5d2ac3}
.key-teaching .key-rule{font-weight:650}
.key-order{display:flex;justify-content:center;gap:clamp(5px,2vw,16px);margin:5px auto 14px;flex-wrap:nowrap}
.key-order span{color:#b5b1be;font-size:clamp(1.5rem,6vw,2.35rem);line-height:1.25;font-weight:850;min-width:1em;transition:color .22s ease}
.key-order span.active{color:#211b2b}
.key-order span.target{text-decoration:underline;text-decoration-color:#8c52ff;text-decoration-thickness:4px;text-underline-offset:6px;color:#5f2ac9}
.key-teaching.animate .key-order span.active{animation:key-reveal .2s ease both;animation-delay:calc(var(--order)*.12s)}
@keyframes key-reveal{from{color:#b5b1be;transform:translateY(3px)}to{color:#211b2b;transform:translateY(0)}}
.key-derivation{font-size:1.13rem!important;font-weight:800}
.key-derivation span{color:#6f38de;margin:0 6px}
.key-continue{display:block;margin:13px auto 0}
.key-order-input{text-align:center;max-width:580px;margin:7px auto}
.key-order-input p{font-weight:750;margin:8px}
.key-order-progress{min-height:42px;border:1px dashed #ba9af1;border-radius:10px;background:#f9f6ff;color:#5f2ac9;font-size:1.35rem;font-weight:850;letter-spacing:.22em;padding:6px}
#key-order-buttons{margin-top:10px}
#key-learn{text-align:center}
#key-learn h2{font-size:1.5rem;letter-spacing:-.04em;margin:7px 0}
.key-lesson-count{font-size:.85rem;color:#6b6077;font-weight:750}
.key-actions{display:flex;gap:10px;justify-content:center;margin-top:18px}
@media(max-width:700px){#key-setup .brass-mode-grid:first-child{grid-template-columns:1fr}}
@media(max-width:580px){.key-teaching{padding:13px 10px}.key-teaching p{font-size:.94rem}.key-choices button{font-size:1rem}.key-order span{min-width:.85em}.key-derivation span{margin:0 2px}}
@media(prefers-reduced-motion:reduce){.key-teaching.animate .key-order span.active{animation:none}.key-order span{transition:none}}
/* Complete the Measure */
.card-rhythm .card-art{background:#ffcaad}
.measure-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.measure-difficulty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#measure-panel .play-heading{padding:20px 30px}
#measure-panel .play-heading h1{font-size:clamp(1.7rem,3.4vw,2.5rem)}
#measure-panel .play-heading p:last-child{margin-top:5px}
#measure-panel .play-body{padding:18px 28px 28px}
.measure-prompt{text-align:center;font-weight:800;margin:7px 0}
.measure-frame{border:2px solid #d7d4df;border-radius:14px;overflow-x:auto;max-width:760px;margin:0 auto;background:#fff}
.measure-frame svg{width:100%;height:118px;min-width:460px;color:#241b32}
.measure-grouping{text-align:center;color:#6131bd;font-weight:750;font-size:.88rem;margin:5px 0;min-height:1.2em}
.measure-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:760px;margin:8px auto}
.measure-choice{border:2px solid #cec6dc;border-radius:12px;background:#fff;min-height:83px;position:relative;padding:4px 10px;display:grid;place-items:center;color:#211b2b}
.measure-choice:hover:not(:disabled),.measure-choice.selected{border-color:#8c52ff;background:#f6f0ff}
.measure-choice.correct{border-color:#6a35d8;background:#ede4ff}
.measure-choice.wrong{border-color:#d8564a;background:#fff0ed}
.measure-choice svg{width:min(90%,190px);height:73px;color:#211b2b}
.measure-choice-number{position:absolute;top:5px;left:9px;font-size:.76rem;font-weight:850;color:#6b6078}
.measure-check{display:block;min-width:170px;margin:10px auto}
#measure-play .feedback{margin:8px auto;min-height:20px;font-size:.92rem}
.measure-explanation{max-width:760px;margin:10px auto;border:1px solid #d9c9fa;border-radius:15px;background:#f8f4ff;padding:15px 18px;text-align:center;animation:measure-reveal .3s ease}
.measure-explanation h3{margin:0 0 10px}
.measure-breakdown{display:flex;flex-wrap:wrap;justify-content:center;gap:7px}
.measure-value{background:#fff;border:1px solid #dfd6eb;border-radius:9px;padding:7px 10px;display:flex;flex-direction:column;gap:2px;font-size:.82rem;animation:measure-reveal .25s ease both}
.measure-value:nth-child(2){animation-delay:.12s}.measure-value:nth-child(3){animation-delay:.24s}.measure-value:nth-child(4){animation-delay:.36s}
.measure-value small{color:#6e38db;font-size:1rem;font-weight:850}
.measure-math{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;align-items:center;margin:12px 0}
.measure-math>*{background:#fff;border-radius:8px;padding:7px 10px}
.measure-math strong{background:#ddccff;color:#45208e}
.measure-complete{background:white;border-radius:9px;overflow-x:auto}
.measure-complete svg{width:100%;min-width:460px;max-height:180px}
.measure-lesson-art{border:1px solid #dcd4e8;border-radius:16px;padding:20px;background:#faf8ff}
.measure-lesson-meter{display:flex;align-items:center;justify-content:center;gap:20px}
.measure-lesson-meter>b{font-size:2.3rem;line-height:.86}
.measure-beat-tiles{display:flex;gap:7px;flex-wrap:wrap}
.measure-beat-tiles span{min-width:70px;background:#e5d9fc;border-radius:10px;padding:8px;display:grid;text-align:center}
.measure-beat-tiles strong{font-size:1.3rem}
.measure-beat-tiles small{font-size:.75rem}
.measure-lesson-notes{display:flex;justify-content:center;gap:18px;margin-top:12px}
.measure-lesson-notes svg{width:110px;height:80px}
#measure-learn h2{font-size:1.6rem;margin:10px 0}
#measure-lesson-copy{font-size:1.05rem;line-height:1.5;max-width:650px}
@keyframes measure-reveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:700px){.measure-mode-grid{grid-template-columns:1fr}}
@media(max-width:580px){#measure-panel .play-body{padding:15px 12px 22px}.measure-difficulty-grid{grid-template-columns:1fr}.measure-choices{gap:6px}.measure-choice{min-height:76px;padding:3px}.measure-choice svg{width:96%;height:68px}.measure-frame svg{min-width:380px}.measure-explanation{padding:12px 8px}.measure-math{font-size:.85rem}.measure-value{font-size:.77rem}.measure-complete svg{min-width:380px}}
@media(prefers-reduced-motion:reduce){.measure-explanation,.measure-value{animation:none}}
/* Tuning Trainer */
.card-tuning .card-art{background:#b4ebd9}
#tuning-panel .play-heading{padding:19px 30px}
#tuning-panel .play-heading h1{font-size:clamp(1.8rem,3.5vw,2.6rem)}
#tuning-panel .play-heading p:last-child{margin-top:5px}
#tuning-panel .play-body{padding:14px 26px 26px}
.tuning-headphones{margin:0 0 11px;color:#60586c;font-size:.84rem;font-weight:650}
.tuning-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tuning-level-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.tuning-ensemble-option{display:flex;align-items:center;gap:9px;font-weight:800;padding:7px 0 14px}
.tuning-ensemble-option input{width:20px;height:20px;accent-color:#8c52ff}
.tuning-ensemble-option small{font-size:.83rem;font-weight:500;color:#655d70}
.tuning-ensemble-option.unavailable{opacity:.55}
.tuning-audio-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:8px 0}
.tuning-audio-bar button{min-height:44px;padding:8px 13px;font-size:.89rem}
.tuning-reference{border:2px solid #8c52ff}
.tuning-prompt{text-align:center;margin:8px 0;font-size:.9rem;font-weight:700;color:#453a54}
.tuning-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.tuning-player{background:#fff;border:2px solid #d9d3e1;border-radius:14px;padding:10px 12px;transition:box-shadow .16s ease,border-color .16s ease}
.tuning-player-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.tuning-player-head strong{font-size:1.05rem}
.tuning-player-head button{min-height:41px;padding:7px 12px}
.tuning-classifications{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.tuning-classifications button{border:1px solid #d2c9df;border-radius:9px;background:#fff;color:#32283e;min-height:42px;padding:6px 4px;font-size:.83rem;font-weight:800}
.tuning-classifications button:hover:not(:disabled),.tuning-classifications button.selected{border:2px solid #8c52ff;background:#f1e8ff;color:#5124a8}
.tuning-player.tuning-wrong{border-color:#d8564a;background:#fff7f5}
.tuning-player.tuning-correct{border-color:#7950cc;background:#faf7ff}
#tuning-panel .tuning-sounding{box-shadow:0 0 0 3px #a680f8,0 0 17px #8c52ff66}
.tuning-reveal{margin:7px 0 0;font-size:.78rem;font-weight:850;color:#51309b}
.tuning-check{display:block;min-width:170px;margin:10px auto 0}
#tuning-play .feedback{margin:8px auto;min-height:20px;font-size:.9rem}
.tuning-explanation{background:#f8f4ff;border:1px solid #d9c9fa;border-radius:15px;padding:14px;max-width:740px;margin:10px auto}
.tuning-explanation h3{margin:0 0 5px}
.tuning-explanation>p{margin:0 0 12px;line-height:1.4}
.tuning-review-row{background:#fff;border:1px solid #ddd5e7;border-radius:10px;padding:9px 12px;margin:7px 0}
.tuning-review-row.needs-review{border-color:#ce9e99}
.tuning-review-row strong{font-size:.91rem}
.tuning-review-actions{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 0}
.tuning-review-actions button{min-height:42px;padding:8px 12px;font-size:.82rem}
.tuning-meter{display:flex;align-items:center;gap:10px;max-width:460px;margin:9px auto 0;font-size:.72rem;font-weight:850;color:#695d75}
.tuning-meter-track{height:14px;flex:1;position:relative;border-radius:10px;background:linear-gradient(90deg,#e5d9fb,#ece6f6 50%,#e5d9fb)}
.tuning-meter-track b{position:absolute;left:50%;top:-5px;height:24px;border-left:2px solid #231b31}
.tuning-meter-track i{position:absolute;top:-5px;width:8px;height:24px;border-radius:5px;background:#6e37d2;transform:translateX(-50%);z-index:1;transition:left .25s ease}
.tuning-meter-reading{text-align:center;margin:3px 0;font-size:.82rem;color:#6334c3;font-weight:850}
#tuning-learn h2{font-size:1.5rem;margin:10px 0}
#tuning-lesson-copy{line-height:1.5;max-width:660px;margin:8px 0 15px}
.tuning-learn-controls{display:flex;flex-wrap:wrap;gap:8px}
.tuning-learn-controls button{min-height:46px;padding:9px 13px}
#tuning-learn-meter{max-width:600px;margin:18px auto}
@media(max-width:700px){.tuning-mode-grid{grid-template-columns:1fr}}
@media(max-width:580px){#tuning-panel .play-body{padding:14px 12px 24px}.tuning-level-grid,.tuning-players{grid-template-columns:1fr}.tuning-ensemble-option{align-items:flex-start;flex-wrap:wrap}.tuning-ensemble-option small{width:100%;margin-left:28px}.tuning-audio-bar button{flex:1;min-width:calc(50% - 6px)}.tuning-player{padding:9px}.tuning-classifications button{min-height:44px}.tuning-review-row{padding:9px}}
@media(prefers-reduced-motion:reduce){.tuning-player,.tuning-meter-track i{transition:none}}
/* Rhythm Dictation */
.card-dictation .card-art{background:#cdebc7}
#dictation-panel .play-heading{padding:19px 30px}
#dictation-panel .play-heading h1{font-size:clamp(1.8rem,3.5vw,2.6rem)}
#dictation-panel .play-heading p:last-child{margin-top:5px}
#dictation-panel .play-body{padding:17px 26px 28px}
.dictation-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.dictation-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.dictation-levels .option{min-height:64px;padding:11px 13px}
.dictation-levels .option.selected{padding:10px 12px}
.dictation-levels .option strong{font-size:.9rem}
.dictation-levels .option small{font-size:.76rem;margin-top:3px}
#dictation-setup .choice small{display:block;font-size:.7rem;font-weight:550}
.dictation-prompt{display:flex;align-items:center;justify-content:center;gap:12px;margin:6px 0;font-weight:750;color:#5d5268}
.dictation-prompt strong{background:#eadcff;color:#5023aa;padding:7px 13px;border-radius:9px;font-size:1.18rem}
.dictation-count{display:flex;justify-content:center;gap:5px;min-height:27px;margin:6px 0}
.dictation-count span{min-width:25px;min-height:25px;text-align:center;border-radius:7px;background:#f2eff7;color:#665a72;padding:2px 5px;font-size:.82rem;font-weight:850}
.dictation-count span.main-beat{border-bottom:3px solid #ac87ed}
.dictation-count span.active{background:#8c52ff;color:#fff}
.dictation-playback{border:1px dashed #d5cae7;background:#faf8fd;border-radius:10px;min-height:31px;display:grid;place-items:center;color:#62576e;font-size:.83rem;font-weight:750}
.dictation-playback.active{background:#f1e9ff;border-color:#9b6be8;box-shadow:0 0 0 3px #8c52ff20}
.dictation-audio-controls,.dictation-edit,.dictation-feedback-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:7px;margin:9px auto}
.dictation-audio-controls button,.dictation-edit button,.dictation-feedback-actions button{min-height:43px;padding:8px 13px;font-size:.86rem}
.dictation-entry-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin:9px 0 5px}
.dictation-entry-head span{font-size:.83rem;color:#6842a3;font-weight:750}
.dictation-entry,.dictation-learn-visual{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:8px}
.dictation-bar{border:2px solid #d7d4df;border-radius:11px;background:#fff;padding:2px 6px;overflow-x:auto}
.dictation-bar-label{font-size:.67rem;letter-spacing:.09em;color:#645a70;font-weight:850;display:block;padding:3px 4px}
.dictation-bar svg{width:100%;height:104px;min-width:270px;color:#231d2d}
.dictation-entry.dictation-shake{animation:dictation-shake .25s ease}
@keyframes dictation-shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.dictation-bank-label{font-weight:800;color:#4f415f;margin:10px 0 6px;font-size:.87rem}
.dictation-bank{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}
.dictation-unit{border:1px solid #d3cadf;background:#fff;color:#251d31;border-radius:10px;padding:3px 6px 7px;min-height:79px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.dictation-unit:hover,.dictation-unit:focus-visible{border:2px solid #8c52ff;background:#f6f0ff}
.dictation-unit.would-overfill{opacity:.56}
.dictation-unit svg{width:100%;height:47px;max-width:125px}
.dictation-unit span{font-size:.7rem;font-weight:750;line-height:1.15;text-align:center}
.dictation-submit{display:block;min-width:180px;margin:10px auto}
#dictation-play .feedback{font-size:.88rem;margin:7px auto}
.dictation-explanation{border:1px solid #d9c9fa;background:#f8f4ff;border-radius:15px;padding:13px;margin:10px auto}
.dictation-explanation h3{margin:0 0 8px}
.dictation-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dictation-compare h4{margin:4px 0 7px}
.dictation-compare .dictation-bar{margin-bottom:8px}
.dictation-difference{color:#c04b3d}
.dictation-playing-note{color:#6a32dc;filter:drop-shadow(0 0 3px #9e73e9)}
#dictation-learn h2{font-size:1.5rem;margin:10px 0}
#dictation-lesson-copy{line-height:1.5;max-width:680px}
.dictation-learn-visual{margin:12px 0}
@media(max-width:800px){.dictation-bank{grid-template-columns:repeat(4,minmax(0,1fr))}.dictation-levels{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){#dictation-panel .play-body{padding:14px 12px 24px}.dictation-mode-grid{grid-template-columns:1fr}.dictation-levels{grid-template-columns:repeat(2,minmax(0,1fr))}.dictation-levels .option{min-height:70px}.dictation-bank{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.dictation-unit{min-height:80px}.dictation-unit span{font-size:.68rem}.dictation-compare{grid-template-columns:1fr}.dictation-audio-controls button{flex:1;min-width:46%}.dictation-prompt{font-size:.82rem}}
@media(prefers-reduced-motion:reduce){.dictation-entry.dictation-shake{animation:none}}
/* Shared layouts for the new BandGames activities. */
.ng-levels{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.ng-levels .option{min-height:68px}.ng-tools,.ng-choice-grid{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.ng-tools button,.ng-choice-grid button,.ng-tools select{min-height:48px}.ng-tools .selected,.ng-key.selected{background:#8150db;color:white;border-color:#8150db}.ng-choice-grid button{flex:1 1 120px}.ng-staff{overflow:auto;background:white;border:1px solid #e0d6ec;border-radius:14px;padding:6px}.ng-staff-svg{width:100%;min-width:360px;height:auto;display:block;touch-action:manipulation}.ng-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin:16px 0}.ng-compare>div{padding:12px;border-radius:14px;background:#f8f4ff}.ng-large-meter{font-size:clamp(48px,9vw,86px);font-weight:800;text-align:center;margin:10px 0;color:#49239b}.ng-hint{color:#665770;font-size:.94rem}.ng-meter-option{max-width:460px}.ng-meter-option .dictation-bar{margin:0}.ng-continue{margin-top:16px}.ng-note-staff{max-width:550px}.ng-fingering{display:grid;grid-template-columns:repeat(4,minmax(88px,1fr));gap:10px;margin:14px 0}.ng-key{border:2px solid #aa97c7;border-radius:14px;background:#fff;color:#281935;min-height:74px;padding:7px;cursor:pointer}.ng-key span{display:block;border-radius:50%;border:2px solid currentColor;width:34px;height:34px;line-height:30px;margin:auto;font-weight:800}.ng-key small{display:block;font-size:11px;line-height:1.2;margin-top:4px}.ng-key:disabled{cursor:default;opacity:1}.ng-rudiment-score{position:relative;overflow:auto;background:white;border:1px solid #ddd1ee;border-radius:14px;padding:15px;min-height:120px}.ng-rudiment-notes{display:flex;position:relative;z-index:1;gap:4px;min-width:max-content}.ng-rudiment-unit{width:44px;text-align:center;display:flex;flex-direction:column;align-items:center}.ng-accent,.ng-grace{height:19px;font-weight:800;color:#7641c4}.ng-head{font-size:25px;color:#25192e;line-height:30px}.ng-stick{font-weight:800;margin-top:14px}.ng-rudiment-staff{position:absolute;top:60px;left:0;right:0;border-top:1px solid #bbb;pointer-events:none}.ng-entry{min-height:86px}.ng-tools select{border-radius:9px;padding:8px;border:1px solid #9984b6;background:white}.ng-key:focus-visible,.ng-tools button:focus-visible,.ng-choice-grid button:focus-visible{outline:3px solid #e68834;outline-offset:3px}
@media(max-width:600px){.ng-fingering{grid-template-columns:repeat(3,minmax(82px,1fr))}.ng-key{min-height:70px}.ng-staff-svg{min-width:300px}.ng-compare{grid-template-columns:1fr}.ng-levels{grid-template-columns:repeat(2,minmax(0,1fr))}}

.ng-level-nav{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.ng-level-nav .secondary-button{min-height:38px;padding:7px 10px}.ng-rudiment-staff{top:58px;box-shadow:0 7px #bbb,0 14px #bbb,0 21px #bbb,0 28px #bbb}.ng-head{position:relative}.ng-head::after{content:'';position:absolute;border-right:2px solid #25192e;height:28px;right:-3px;top:-21px}@media(max-width:600px){.ng-level-nav{width:100%;justify-content:flex-start}}
.card-keybuilder .card-art{background:#ddccff}
.card-detective .card-art{background:#ffcaad}
.card-flute .card-art{background:#b4ebd9}
.card-clarinet .card-art{background:#bfe7ff}.card-saxophone .card-art{background:#bee8fa}
.card-rudiment .card-art{background:#ffd89c}
.card-key .card-art{background:#ddccff}
.ng-fingering-stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,280px);align-items:start;gap:20px;margin:12px 0 18px}.ng-fingering-stage .ng-note-staff{width:100%;max-width:none;grid-column:1;grid-row:1}.ng-fingering-stage>.ng-diagram-wrap{grid-column:2;grid-row:1 / span 2}.ng-fingering-actions{grid-column:1;grid-row:2;align-self:start}.ng-diagram-wrap{background:#fff;border:1px solid #e0d6ec;border-radius:16px;padding:8px;text-align:center}.ng-instrument-diagram{width:100%;max-width:245px;height:auto;margin:0 auto}.ng-diagram-caption{font:700 9px system-ui,sans-serif;fill:#705d84;letter-spacing:.04em}.ng-diagram-legend{font-size:.75rem;line-height:1.45;color:#675676;margin:2px 0 5px}.ng-diagram-key{cursor:pointer;outline:none}.ng-diagram-key:focus-visible{filter:drop-shadow(0 0 5px #8c52ff)}.ng-diagram-key:hover>circle,.ng-diagram-key:hover>path,.ng-diagram-key:hover>rect:first-of-type{stroke:#8c52ff;stroke-width:4}.ng-reverse-diagram{max-width:280px;margin:12px auto}.ng-compare .ng-diagram-wrap{max-width:260px;margin:8px auto}.ng-compare .ng-instrument-diagram{max-height:370px}.ng-compare .ng-diagram-key{cursor:default}
@media(max-width:670px){.ng-fingering-stage{grid-template-columns:1fr}.ng-fingering-stage .ng-note-staff{max-width:100%;grid-column:1;grid-row:1}.ng-fingering-stage>.ng-diagram-wrap{grid-column:1;grid-row:2}.ng-fingering-actions{grid-column:1;grid-row:3}.ng-diagram-wrap{width:min(100%,285px);margin:0 auto}}


/* Individual game artwork, shared by Popular Games and every directory view. */
.game-card{--art-bg:#d9f58b;--art-accent:#5d3aac;--art-rotate:-9deg}
.card-reading{--art-bg:#d9f58b;--art-accent:#537b19;--art-rotate:-12deg}
.card-theory{--art-bg:#ddccff;--art-accent:#6b39ba;--art-rotate:11deg}
.card-key{--art-bg:#e8d7ff;--art-accent:#7741bf;--art-rotate:-7deg}
.card-transpose{--art-bg:#ffdc92;--art-accent:#a45a1b;--art-rotate:12deg}
.card-brass{--art-bg:#ffd1ac;--art-accent:#b55628;--art-rotate:-14deg}
.card-rhythm{--art-bg:#ffc6ac;--art-accent:#b64f40;--art-rotate:8deg}
.card-tuning{--art-bg:#b9ebdf;--art-accent:#217e73;--art-rotate:-8deg}
.card-dictation{--art-bg:#c5e7ff;--art-accent:#3168a5;--art-rotate:10deg}
.card-keybuilder{--art-bg:#d7c3ff;--art-accent:#6d38ae;--art-rotate:9deg}
.card-detective{--art-bg:#f9dc98;--art-accent:#966522;--art-rotate:-11deg}
.card-flute{--art-bg:#c4eafa;--art-accent:#28799a;--art-rotate:-15deg}
.card-clarinet{--art-bg:#c4eddf;--art-accent:#2d7561;--art-rotate:12deg}.card-saxophone{--art-bg:#c3e6f7;--art-accent:#29718c;--art-rotate:8deg}
.card-rudiment{--art-bg:#f6c9bd;--art-accent:#a74743;--art-rotate:-8deg}
.game-card .card-art{position:relative;isolation:isolate;background:var(--art-bg);color:#211b2b;min-height:142px}
.art-grid{position:absolute;inset:0;opacity:.17;background-image:radial-gradient(var(--art-accent) 1.4px,transparent 1.4px);background-size:19px 19px;mask-image:linear-gradient(90deg,transparent,#000 25%,#000 80%,transparent)}
.art-orbit{position:absolute;width:148px;height:148px;border:2px solid var(--art-accent);border-radius:36px;opacity:.25;transform:rotate(var(--art-rotate));transition:transform .25s ease}
.game-card:hover .art-orbit,.game-card:focus-visible .art-orbit{transform:rotate(0deg) scale(1.08)}
.art-icon{position:relative;z-index:1;width:92px;height:92px;display:grid;place-items:center;background:#ffffffc9;border:2px solid #ffffffd9;border-radius:26px;box-shadow:0 12px 20px #2716371a;transform:rotate(var(--art-rotate));transition:transform .25s ease}
.game-card:hover .art-icon,.game-card:focus-visible .art-icon{transform:rotate(0deg) translateY(-3px)}
.art-icon img{width:68px;height:68px;object-fit:contain}
.art-detail{position:absolute;z-index:2;left:calc(50% + 48px);top:calc(50% + 15px);width:43px;height:43px;border-radius:14px;background:#fff;display:grid;place-items:center;box-shadow:0 5px 12px #27163726;transform:rotate(12deg)}
.art-detail img{width:29px;height:29px;object-fit:contain}
.art-label{position:absolute;z-index:2;top:12px;left:14px;border:1px solid #211b2b25;border-radius:99px;padding:4px 9px;background:#ffffffb8;font-size:.61rem;letter-spacing:.11em;font-weight:900}
.art-mark{position:absolute;right:15px;bottom:9px;color:var(--art-accent);font-size:1.03rem;font-weight:900;letter-spacing:-.03em}
.card-flute .art-icon img,.card-clarinet .art-icon img,.card-saxophone .art-icon img,.card-brass .art-icon img{width:76px;height:76px}
.card-flute .art-icon img{transform:rotate(-24deg)}
.card-clarinet .art-icon img{transform:rotate(-25deg)}
.card-rudiment .art-icon img{width:78px;height:78px}
@media(max-width:580px){
  .game-card .card-art{min-height:184px;min-width:116px}
  .art-orbit{width:110px;height:110px}
  .art-icon{width:68px;height:68px;border-radius:20px}
  .art-icon img,.card-flute .art-icon img,.card-clarinet .art-icon img,.card-saxophone .art-icon img,.card-brass .art-icon img,.card-rudiment .art-icon img{width:52px;height:52px}
  .art-detail{width:30px;height:30px;border-radius:9px;left:calc(50% + 24px);top:calc(50% + 15px)}
  .art-detail img{width:20px;height:20px}
  .art-label{top:10px;left:8px;font-size:.51rem;padding:3px 6px}
  .art-mark{right:7px;bottom:9px;font-size:.8rem}
}
@media(prefers-reduced-motion:reduce){.art-icon,.art-orbit{transition:none}}

/* Alpha label and About page */
.header-branding{display:flex;align-items:center;gap:14px;min-width:0}.alpha-badge{display:inline-block;flex:none;padding:6px 11px;border:2px solid #19171f;border-radius:8px;background:#d9f58b;color:#19171f;font-size:.75rem;font-weight:850;line-height:1;letter-spacing:.12em;transform:rotate(-7deg);box-shadow:3px 3px 0 #8c52ff;white-space:nowrap}
.site-header .nav-about{display:inline-flex;align-items:center;border-radius:10px;padding:10px 14px;white-space:nowrap}
.site-header .nav-about:hover,.site-header .nav-about:focus-visible{background:#211b2d;color:#c7aaff}
.site-footer a{color:#d7c5ff;font-weight:750;text-decoration:none}
.site-footer a:hover{text-decoration:underline}
.about-shell{width:min(900px,calc(100% - 40px));margin:auto;padding:34px 0 90px}
.about-card{overflow:hidden;border:1px solid #d8d3e1;border-radius:24px;background:#fff;box-shadow:0 15px 40px #281a4d0c}
.about-heading{padding:38px 42px;background:#17131f;color:#fff}
.about-heading .eyebrow{color:#cbb1ff}
.about-heading h1{font-size:clamp(2.2rem,5vw,3.5rem);line-height:1.08;letter-spacing:-.06em;margin:0}
.about-lead{color:#d7d0e1;font-size:1.15rem;line-height:1.5;margin:15px 0 0}
.about-copy{padding:32px 42px 6px;max-width:790px}
.about-copy p{font-size:1.04rem;line-height:1.75;color:#403a48;margin:0 0 22px}
.about-cta{display:inline-flex;align-items:center;gap:10px;text-decoration:none;margin:0 42px 40px}
@media(max-width:680px){.site-header .nav-about{font-size:.9rem;padding:9px 11px}}
@media(max-width:580px){.about-shell{width:min(100% - 30px,900px);padding:22px 0 60px}.about-heading{padding:28px 22px}.about-copy{padding:24px 22px 4px}.about-copy p{font-size:1rem;line-height:1.65}.about-cta{margin:0 22px 30px}}
@media(max-width:360px){.nav-group summary,.site-header .nav-about{font-size:.78rem;padding:9px 6px}}

@media(max-width:580px){.header-branding{gap:9px}.alpha-badge{font-size:.65rem;padding:5px 8px}}

/* Supplied clarinet key layout and larger touch controls for its small pinky keys. */
.ng-clarinet-diagram{max-width:270px}
.ng-clarinet-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:8px auto 0;max-width:280px}
.ng-clarinet-controls button{min-height:44px;border:1px solid #cfc6df;border-radius:9px;background:#fff;color:#372846;font-size:.7rem;font-weight:800;padding:4px 2px}
.ng-clarinet-controls button.selected{background:#272031;color:#fff;border-color:#272031}
.ng-clarinet-controls button:hover{border-color:#8c52ff}

/* Alto saxophone vector and full-size auxiliary touch targets. */
.ng-saxophone-diagram{max-width:270px;max-height:430px}
.ng-saxophone-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:8px auto 0;max-width:320px}
.ng-saxophone-controls button{min-height:44px;border:1px solid #cfc6df;border-radius:9px;background:#fff;color:#372846;font-size:.67rem;font-weight:800;line-height:1.15;padding:5px 3px;touch-action:manipulation}
.ng-saxophone-controls button.selected{background:#272031;color:#fff;border-color:#272031}
.ng-saxophone-controls button:hover,.ng-saxophone-controls button:focus-visible{border-color:#8c52ff}
@media(max-width:670px){.ng-fingering-stage:has(.ng-saxophone-diagram)>.ng-diagram-wrap{width:min(100%,360px)}}

/* Horizontal flute key chart derived from the supplied six-ring reference. */
.ng-fingering-stage:has(.ng-flute-diagram){grid-template-columns:minmax(0,1fr)}
.ng-fingering-stage:has(.ng-flute-diagram) .ng-note-staff{grid-column:1;grid-row:1;max-width:650px}
.ng-fingering-stage:has(.ng-flute-diagram)>.ng-diagram-wrap{grid-column:1;grid-row:2;width:min(100%,790px);margin:0 auto}
.ng-fingering-stage:has(.ng-flute-diagram) .ng-fingering-actions{grid-column:1;grid-row:3}
.ng-flute-diagram{max-width:740px;max-height:none}
.ng-flute-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;max-width:740px;margin:10px auto 0}
.ng-flute-controls button{min-height:44px;border:1px solid #cfc6df;border-radius:10px;background:#fff;color:#372846;font-size:.75rem;font-weight:800;padding:6px 4px;touch-action:manipulation}
.ng-flute-controls button.selected{background:#272031;color:#fff;border-color:#272031}
.ng-flute-controls button:hover,.ng-flute-controls button:focus-visible{border-color:#8c52ff}
.ng-reverse-diagram:has(.ng-flute-diagram){max-width:760px}
.ng-compare:has(.ng-flute-diagram){grid-template-columns:1fr}
.ng-compare:has(.ng-flute-diagram) .ng-diagram-wrap{max-width:760px}
@media(max-width:580px){.ng-flute-controls{grid-template-columns:repeat(3,minmax(0,1fr))}.ng-flute-controls button{font-size:.7rem}}


/* Homepage refresh: a compact learning arcade rather than oversized navigation. */
.intro{padding:58px 0 48px;gap:42px}
.intro-main{flex:1;min-width:0}
.intro h1{font-size:clamp(2.8rem,5.5vw,4.8rem)}
.intro-copy{max-width:540px}
.intro-cta{display:inline-flex;align-items:center;gap:18px;margin-top:25px;text-decoration:none}
.hero-music{flex:0 0 min(39%,430px);height:276px;overflow:hidden;position:relative;border:2px solid #24202b;border-radius:24px;background:#d9f58b;box-shadow:10px 10px 0 #ddccff;transform:rotate(1.5deg);display:flex;flex-direction:column;justify-content:space-between;padding:20px 24px}
.hero-music::after{content:'✳';position:absolute;right:24px;top:54px;font-size:4rem;color:#77a63c;opacity:.33}
.hero-music-top,.hero-music-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;z-index:1;font-weight:850}
.hero-music-top{font-size:.72rem;letter-spacing:.13em}
.hero-music-top span:last-child{font-size:1.3rem;color:#7945d2}
.hero-music-bottom{font-size:.82rem;color:#4c4d36}
.hero-music-bottom span:last-child{color:#6239b5;font-size:1.12rem}
.hero-staff{height:124px;position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent 17px,#312c38 18px,#312c38 20px,transparent 21px,transparent 25px);background-size:100% 102px;background-position:center center;background-repeat:no-repeat;transform:rotate(-3deg)}
.hero-note{position:absolute;color:#4e269e;font-size:4rem;font-weight:800;line-height:1;text-shadow:3px 3px 0 #fff9}
.note-one{left:12%;top:17px}.note-two{left:42%;top:-9px;color:#1d5966}.note-three{right:10%;top:35px;color:#7e3193}
.home-section{margin-bottom:48px}
.skill-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:11px}
.skill-card{min-height:110px;padding:14px 15px;border-radius:15px;justify-content:space-between;gap:7px}
.skill-motif{min-height:0;font-size:1.5rem;line-height:1}
.skill-motif img{width:29px;height:29px;object-fit:contain}
.skill-title{font-size:1.02rem;line-height:1.16}
.skill-foot{padding-top:0;font-size:.73rem}
.skill-foot span{font-size:1rem}
.instrument-level{margin:20px 0 43px}
.instrument-level-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;padding-bottom:13px;margin-bottom:19px;border-bottom:2px solid #24202b}
.instrument-level-heading .eyebrow{font-size:.67rem;margin:0 0 5px}
.instrument-level-heading h2{font-size:1.8rem;letter-spacing:-.055em;margin:0}
.instrument-level-heading p:not(.eyebrow){color:#605969;line-height:1.45;margin:5px 0 0}
.instrument-level-heading>span{white-space:nowrap;font-weight:800;font-size:.82rem;color:#6a3bb5}
.game-card-unavailable{cursor:default;border-style:dashed;border-color:#b9aec6;background:#f7f5fa}
.game-card-unavailable:hover{transform:none;box-shadow:none;border-color:#b9aec6}
.game-card-unavailable .card-art{filter:saturate(.65)}
.game-card-unavailable .card-action{color:#60516e}
.coming-soon-body p{font-size:1.05rem;line-height:1.55;color:#61596c;margin:0 0 22px}
.coming-soon-body .primary-button{display:inline-flex;gap:12px;text-decoration:none}
@media(max-width:1050px){.skill-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hero-music{flex-basis:36%;height:250px}}
@media(max-width:800px){.intro{gap:25px}.hero-music{flex-basis:35%;height:215px;padding:17px}.hero-staff{height:95px}.hero-note{font-size:3rem}.skill-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.intro{padding:34px 0 37px;display:block}.hero-music{margin:27px 9px 0 0;height:170px;transform:rotate(1deg)}.hero-staff{height:78px;background-size:100% 85px}.hero-note{font-size:2.7rem}.note-one{top:5px}.note-two{top:-11px}.note-three{top:14px}.hero-music::after{top:36px;font-size:2.9rem}.skill-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-card{min-height:103px;padding:12px}.skill-title{font-size:.98rem}.instrument-level-heading h2{font-size:1.55rem}.instrument-level-heading p:not(.eyebrow){font-size:.87rem}}
@media(max-width:380px){.hero-music{height:150px}.skill-title{font-size:.9rem}.skill-foot{font-size:.66rem}.instrument-level-heading>span{font-size:.7rem}}
@media(max-width:580px){.site-header .main-nav{gap:0}.nav-group summary{padding:9px 6px;font-size:.82rem;gap:3px}.site-header .nav-about{padding:9px 6px;font-size:.82rem}}
@media(max-width:350px){.nav-group summary,.site-header .nav-about{padding-inline:3px;font-size:.75rem}}
