/* Jugami Music: concert-hall palette. Swap the whole theme by editing these custom properties. */
:root{--ink:#1e1b2e;--ink-2:#2c2742;--paper:#faf4e6;--cream:#f3e7cc;--card:#fffdf7;--brass:#b07d22;--brass-dk:#7a5414;--gold:#e2b552;
--velvet:#8e1f2f;--velvet-dk:#6a1522;--sage:#2f6b4f;--line:#dccfb0;--mute:#5a5160;--good:#22663f;--bad:#a12a2a;
--radius:14px;--serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:#221d27;font:18px/1.65 var(--sans)}
a{color:var(--velvet)}a:hover{color:var(--velvet-dk)}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px;box-shadow:0 0 0 6px var(--ink)}
.skip{position:absolute;left:-999px;top:0;background:#fff;color:var(--ink);padding:.5rem 1rem;z-index:9}.skip:focus{left:8px;top:8px}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}
.wrap{max-width:1060px;margin:0 auto;padding:0 1.1rem}
/* header: five brass staff lines run under the bar */
.site-head{background:var(--ink);color:#fff;background-image:repeating-linear-gradient(to bottom,transparent 0 9px,rgba(226,181,82,.18) 9px 10px);background-size:100% 50px;background-repeat:no-repeat;background-position:0 6px}
.bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1rem;padding:.65rem 1.1rem;max-width:1060px;margin:0 auto}
.brand{display:flex;align-items:center;gap:.55rem;color:#fff;text-decoration:none;font:700 1.15rem var(--serif);letter-spacing:.01em}
.brand:hover{color:var(--gold)}
.head-nav{display:flex;flex-wrap:wrap;gap:.2rem 1rem}.head-nav a{color:#efe6d2;text-decoration:none;font-size:.95rem;padding:.35rem 0}.head-nav a:hover,.head-nav a[aria-current]{color:var(--gold)}
.head-nav a[aria-current]{text-decoration:underline;text-underline-offset:5px}
.crumbs{font-size:.92rem;color:var(--mute);margin:1rem 0 0}.crumbs a{color:var(--mute)}
h1,h2,h3{font-family:var(--serif);color:var(--ink);line-height:1.18}
h1{font-size:clamp(2.2rem,6vw,3.4rem);margin:.2rem 0 .3rem}
h2{font-size:clamp(1.55rem,3.6vw,2rem);margin:2.6rem 0 .7rem}
h3{font-size:1.25rem;margin:1.6rem 0 .4rem}
.kicker{font:700 .82rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-dk);margin:0}
.tagline{font:italic 1.3rem/1.4 var(--serif);color:var(--velvet);margin:.2rem 0 .9rem}
.prose{max-width:68ch}.prose p,.prose li{max-width:68ch}
h2 .num{display:inline-block;font:700 .9rem var(--sans);color:var(--paper);background:var(--velvet);border-radius:999px;padding:.12rem .55rem;margin-right:.6rem;vertical-align:.3em}
.hero{display:grid;gap:1.4rem;align-items:center;padding:.6rem 0 .4rem}
@media(min-width:820px){.hero{grid-template-columns:1.05fr 1fr}}
.hero figure,.fig{margin:1.2rem 0}.hero figure{margin:0}
.frame{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:.6rem;box-shadow:0 10px 24px -18px rgba(30,27,46,.6)}
.frame svg,.fig svg{display:block;width:100%;height:auto}
.fig figcaption{font-size:.93rem;color:var(--mute);margin-top:.45rem;max-width:68ch}
.btns{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0}
.btn,.game button.primary{display:inline-flex;align-items:center;gap:.4rem;background:var(--velvet);color:#fff;font:700 1rem var(--sans);padding:.72rem 1.15rem;border-radius:999px;text-decoration:none;border:2px solid var(--velvet);cursor:pointer;min-height:44px}
.btn:hover,.game button.primary:hover{background:var(--velvet-dk);color:#fff}
.btn.ghost{background:transparent;color:var(--velvet)}
.btn.ghost:hover{background:var(--cream);color:var(--velvet-dk)}
.toc{background:var(--cream);border-radius:var(--radius);padding:.9rem 1.2rem;margin:1.6rem 0;max-width:68ch}
.toc h2{font-size:1.1rem;margin:0 0 .3rem}.toc ol{margin:0;padding-left:1.3rem;columns:2 15rem;column-gap:2rem}.toc li{break-inside:avoid}
.cards{list-style:none;padding:0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin:1rem 0}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.15rem;position:relative;display:flex;flex-direction:column}
.card svg{width:100%;max-width:220px;height:auto;display:block;margin:0 0 .5rem}
.card h3{margin:.2rem 0 .3rem}.card p{margin:.2rem 0 .6rem}.card .meta{font-size:.9rem;color:var(--mute);margin-top:auto}
.tag{display:inline-block;font:700 .75rem var(--sans);padding:.15rem .6rem;border-radius:999px;background:#d9ecdf;color:#1d4d33;margin-bottom:.3rem}
.callout{background:var(--cream);border-left:6px solid var(--brass);border-radius:10px;padding:.85rem 1.1rem;margin:1.2rem 0;max-width:68ch}
.callout h3{margin:.1rem 0 .3rem;font-size:1.1rem}.callout p{margin:.3rem 0}
.callout.dyk{border-left-color:var(--velvet)}.callout.how{border-left-color:var(--sage)}
.mnemo{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:1rem 0;max-width:68ch}
.mnemo div{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem}
.mnemo b{font:700 1.35rem var(--serif);letter-spacing:.12em;color:var(--velvet);display:block}
table{border-collapse:collapse;width:100%;max-width:68ch;margin:1rem 0;background:var(--card);border-radius:10px;overflow:hidden}
th,td{border-bottom:1px solid var(--line);padding:.5rem .6rem;text-align:left;vertical-align:middle}th{background:var(--cream);font-size:.95rem}
td svg{width:44px;height:56px;display:block}
.tablewrap{overflow-x:auto}
/* games */
.game{background:var(--ink);color:#f6eedb;border-radius:18px;padding:1rem;margin:1rem 0;box-shadow:0 18px 36px -24px rgba(30,27,46,.9)}
.game .help{margin:.2rem 0 .8rem;color:#e7dcc4;max-width:68ch}
.game .stage{background:var(--paper);border-radius:12px;padding:.4rem;color:var(--ink)}
.game .stage svg{display:block;width:100%;height:auto;max-height:280px}
.tools{display:flex;flex-wrap:wrap;gap:.5rem .9rem;align-items:center;margin:.2rem 0 .8rem}
.tools .seg{display:inline-flex;border:2px solid var(--gold);border-radius:999px;overflow:hidden}
.game button{font:600 1rem var(--sans);cursor:pointer;min-height:44px;border-radius:10px;border:2px solid #5d5574;background:var(--ink-2);color:#fff;padding:.45rem .8rem}
.game button:hover:not(:disabled){border-color:var(--gold)}
.game .seg button{border:0;border-radius:0;background:transparent;color:#f6eedb;padding:.4rem .9rem}
.game .seg button[aria-pressed="true"]{background:var(--gold);color:var(--ink)}
.game label.chk{display:inline-flex;gap:.45rem;align-items:center;cursor:pointer;min-height:44px}
.game label.chk input{width:20px;height:20px;accent-color:var(--gold)}
.letters{display:grid;grid-template-columns:repeat(7,1fr);gap:.4rem;margin:.8rem 0}
.letters button{font:700 1.35rem var(--serif);padding:.4rem 0}
.game button.right{background:var(--good);border-color:#8fe0ad}.game button.wrong{background:var(--bad);border-color:#ffb3b3}
.game button:disabled{cursor:default;opacity:1}
.feedback,.find-feedback,.tune-feedback{min-height:3.2em;margin:.5rem 0;font-size:1.05rem;color:#fff}
.feedback.good,.find-feedback.good{color:#a8f0c2}.feedback.bad,.find-feedback.bad{color:#ffc9b8}
.status,.find-status{font-size:.95rem;color:var(--gold);margin:.3rem 0}
.game .row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.game kbd{font:600 .8rem ui-monospace,Menlo,Consolas,monospace;background:#fff2;border-radius:4px;padding:0 .3rem}
.sl{stroke:currentColor;stroke-width:1.2}.sl.faint{opacity:.35}.barline{stroke:currentColor;stroke-width:1.6}
.ts{font:700 22px var(--serif);text-anchor:middle;fill:currentColor}.q{font:700 22px var(--serif);text-anchor:middle;fill:var(--velvet)}
.gap{fill:#f3e2c0;stroke:var(--velvet);stroke-width:1.5;stroke-dasharray:4 3}
.ev.lit{color:var(--velvet)}
.choices{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin:.8rem 0}
@media(min-width:720px){.choices{grid-template-columns:repeat(4,1fr)}}
.choices button{display:flex;align-items:center;gap:.5rem;text-align:left;background:var(--paper);color:var(--ink);border-color:var(--line);padding:.3rem .6rem}
.choices button svg{flex:none;width:34px;height:60px;color:var(--ink)}
.choices button.right{color:#fff}.choices button.right svg,.choices button.wrong svg{color:#fff}.choices button.wrong{color:#fff}
/* keyboard */
.kb-scroll{overflow-x:auto;padding-bottom:.4rem}
.keyboard{position:relative;height:190px;min-width:560px;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.key{position:absolute;top:0;margin:0;padding:0;border-radius:0 0 8px 8px!important;min-height:0!important}
.key.white{height:100%;background:#fffdf6!important;border:1px solid #9b917d!important;color:var(--ink)!important;z-index:1}
.key.black{height:60%;background:#17141f!important;border:1px solid #000!important;z-index:2}
.key .kl{position:absolute;bottom:8px;left:0;right:0;text-align:center;font:700 .95rem var(--serif);visibility:hidden}
.key .kl small{font-size:.7rem}
.show-names .key .kl{visibility:visible}
.key.mid-c::after{content:"";position:absolute;left:50%;bottom:34px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--velvet)}
.key.down.white,.key.white:active{background:var(--gold)!important}.key.down.black,.key.black:active{background:var(--brass)!important}
.key.hint.white{background:#ffe7a6!important;box-shadow:inset 0 -10px 0 var(--velvet)}.key.hint.black{background:var(--velvet)!important}
.key:focus-visible{outline:3px solid var(--velvet);outline-offset:-4px;box-shadow:none}
.readout{font-size:1rem;color:#efe6d2;margin:.6rem 0;min-height:1.6em}
.panel{border-top:1px solid #4a4360;margin-top:1rem;padding-top:.6rem}
.panel h3{color:#fff;margin:.6rem 0 .3rem;font-size:1.15rem}
/* counting */
.syls{display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:2px;margin:.6rem 0;font:700 1.05rem var(--serif);text-align:center}
.syl{background:var(--ink-2);border-radius:6px;padding:.45rem 0;color:#cfc4ad}.syl.beat{color:#fff}
.syl.on{background:#5d5574}.syl.hit{background:var(--gold);color:var(--ink)}
@media(max-width:480px){.syls{grid-template-columns:repeat(8,minmax(0,1fr))}}
/* quiz */
form[data-quiz] fieldset{border:1px solid var(--line);background:var(--card);border-radius:12px;margin:0 0 1rem;padding:.8rem 1rem;max-width:68ch}
form[data-quiz] legend{font-weight:700;padding:0 .3rem;font-family:var(--serif);font-size:1.1rem}
form[data-quiz] label{display:flex;gap:.6rem;align-items:flex-start;padding:.35rem .4rem;border-radius:8px;cursor:pointer;min-height:44px}
form[data-quiz] input{margin-top:.35rem;width:18px;height:18px;accent-color:var(--velvet);flex:none}
form[data-quiz] label.is-key{background:#dcefe2}form[data-quiz] label.is-wrong{background:#f7dad4}
.why{font-size:.95rem;color:#3d3443;margin:.4rem .4rem 0;border-left:3px solid var(--brass);padding-left:.6rem}
.quiz-score{font-weight:700;font-size:1.1rem;margin:.6rem 0}
.talk li{margin:.45rem 0}
.sources li{margin:.4rem 0}
.pager{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:space-between;margin:2.4rem 0 1rem;padding:1rem 0;border-top:2px solid var(--line)}
.pager a{font-weight:600;text-decoration:none;padding:.5rem .8rem;border-radius:999px;background:var(--cream)}.pager a:hover{background:var(--gold);color:var(--ink)}
.noscript{background:#fff1d6;border:2px dashed var(--brass);border-radius:10px;padding:.8rem 1rem;color:#3a2d12}
.needs-js{display:none}.js .needs-js{display:block}
.site-foot{background:var(--ink);color:#e7dcc4;margin-top:3rem;padding:1.6rem 0 2rem;font-size:.95rem}
.site-foot a{color:var(--gold)}.site-foot p{max-width:75ch}
.jugami-more{margin-top:.9rem;padding-top:.8rem;border-top:1px solid #4a4360;line-height:2}
.jugami-more span:first-child{font-weight:700;margin-right:.3rem}
.lesson-list{counter-reset:l;list-style:none;padding:0;margin:1rem 0}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* diagram text + highlights */
.frame svg,.fig svg{color:var(--ink)}
.lbl{font:600 13px var(--sans);fill:var(--mute)}.big{font:700 18px var(--serif);fill:var(--velvet)}.cap{font:700 12px var(--sans);fill:var(--brass-dk);letter-spacing:.06em}
.hl{stroke:var(--velvet);stroke-width:3}.hlc{color:var(--velvet)}.brass{color:var(--brass)}
.arrow{stroke:var(--brass);stroke-width:1.6;fill:none}
.wkey{fill:#fffdf6;stroke:#9b917d}.bkey{fill:#17141f}.wkey.mark{fill:#ffe7a6}
.bklbl{font:600 10px var(--sans);fill:#f3e7cc}
.play-row{margin:.4rem 0 0}.play-row .btn{font-size:.95rem;padding:.5rem .95rem;min-height:44px}
.unit-card{border-top:4px solid var(--brass)}.unit-card>h3{font-size:1.5rem}
.unit-card .cards{counter-reset:les;margin:.6rem 0 1rem}.unit-card .cards .card{background:var(--paper);counter-increment:les}
.unit-card .cards h4{margin:.1rem 0 .3rem;font-family:var(--serif);font-size:1.15rem}
.unit-card .cards h4::before{content:"Lesson " counter(les);display:block;font:700 .75rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--brass-dk)}
.card .tag{align-self:flex-start}
.game a{color:var(--gold)}.game a:hover{color:#fff}

/* ---- Round 1 review (Mandy) ---- */
/* quiz feedback words, not colour alone */
form[data-quiz] label.is-key::after{content:" ✓ Correct";font-weight:700;color:#1d6b3a}
form[data-quiz] label.is-wrong::after{content:" ✗ Your answer";font-weight:700;color:#9b1c1c}
/* game answer buttons: symbol as well as colour */
.game button.right::after{content:"✓";margin-left:.2em;font:700 .8em var(--sans)}
.game button.wrong::after{content:"✗";margin-left:.2em;font:700 .8em var(--sans)}
/* tap targets ≥44px */
.head-nav a,.brand,.crumbs a,.site-foot a{min-height:44px;min-width:44px;display:inline-flex;align-items:center}
.brand{display:flex}
.head-nav{gap:0 .9rem}.head-nav a{padding:0 .1rem;justify-content:center}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;column-gap:.4rem;margin:.4rem 0 0;line-height:1.3}
.jugami-more{display:flex;flex-wrap:wrap;align-items:center;column-gap:.5rem;row-gap:0;line-height:1.35}
.jugami-more span:first-child{flex-basis:100%;margin:0 0 .1rem}
@media(min-width:720px){.jugami-more span:first-child{flex-basis:auto}}
.jugami-more a{padding:.2rem 0}
/* Name That Note letters: keep 7 across, each ≥44px */
.letters{gap:.25rem;grid-template-columns:repeat(7,minmax(44px,1fr))}
.letters button{min-width:44px;min-height:48px;padding:.3rem 0}
@media(max-width:480px){.game{padding:.8rem .6rem}}
@media(max-width:420px){.wrap>.game,.game{margin-left:-.5rem;margin-right:-.5rem}}
/* piano: wide enough that black keys stay ≥44px; scroll sideways when narrower */
.kb-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scroll-padding:0 1rem}
.keyboard{min-width:900px}
.key.black{transform:translateX(-50%)}
.kb-tip{display:none;font-size:.9rem;color:#d9ccae;margin:.3rem 0}
@media(max-width:960px){.kb-tip{display:block}}
form[data-quiz] label.is-key,form[data-quiz] label.is-wrong{flex-wrap:wrap;row-gap:0}
form[data-quiz] label.is-key>span,form[data-quiz] label.is-wrong>span{flex:1 1 0;min-width:0}
form[data-quiz] label.is-key::after,form[data-quiz] label.is-wrong::after{flex-basis:100%;padding-left:1.85rem}
@media(max-width:719px){.jugami-more .sep{display:none}.jugami-more a{flex-basis:100%;width:max-content;max-width:100%}}
.crumbs{margin-bottom:.5rem;row-gap:0}
