/* Caiet de pian — telefonul este pagina, portativul este drumul. */
:root, :root[data-theme="dark"] {
  color-scheme: light;
  --bg:#f6f2e9; --surface:#fcfaf5; --surface-2:#eae5d9;
  --ink:#282923; --ink-soft:#68685c; --line:#c9c5b8;
  --sun:#b74432; --sun-d:#913526; --sun-ink:#fffaf1;
  --coral:#b74432; --coral-d:#913526;
  --mint:#353e32; --mint-d:#222c20; --on-mint:#fffaf1;
  --sky:#485e69; --berry:#795767;
  --good:#3b6245; --good-bg:#e6ecdf; --bad:#a93629; --bad-bg:#f5e5df;
  --gold:#e8b74c; --gold-ink:#6b4814; --gold-paper:#f7e7b7; --sage-paper:#e3ebdd; --rose-paper:#f2dfd6;
  --f-display:"Cormorant Garamond",Georgia,serif;
  --f-body:"DM Sans",system-ui,sans-serif;
}
[hidden]{display:none!important}
body{background:var(--bg);font-size:15px}
button,a,input{touch-action:manipulation}
a{color:inherit;text-underline-offset:4px}
a:focus-visible{outline:2px solid var(--coral);outline-offset:4px}
h1,h2,h3{font-weight:600;letter-spacing:-.025em;text-wrap:pretty}
.app{padding:0 22px 110px;max-width:520px}
.app.full{padding-bottom:28px}
.top{min-height:76px;gap:10px;border-bottom:1px solid var(--line);margin-bottom:22px;padding-block:12px;background:var(--bg);top:0;padding-top:max(12px,env(safe-area-inset-top))}
.brand{font-family:var(--f-body);font-size:14px;font-weight:600;letter-spacing:-.025em;line-height:1.25}
.brand small{font-size:10px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;margin-top:5px}
.brand-mark{font-family:var(--f-music);font-size:30px;line-height:1;color:var(--coral);margin-right:3px}
.chip{border:0;background:transparent;padding:4px 0;font-size:12px;gap:4px;white-space:nowrap}
.chip svg{width:16px;height:16px}
.iconbtn{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent}
.iconbtn svg{width:19px;height:19px}
.eyebrow{font-size:10px;letter-spacing:.16em;font-weight:500}
.section-title{font-size:38px;margin-block:0 8px}
.lead{font-size:14px;line-height:1.65}
.btn{border-radius:12px;font-family:var(--f-body);font-size:15px;font-weight:600;letter-spacing:0;min-height:52px;padding:15px 18px;box-shadow:0 4px 0 var(--mint-d);transition:transform .12s,box-shadow .12s}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--mint-d)}
.btn.sun{box-shadow:0 4px 0 var(--coral-d)}
.btn.sun:active{box-shadow:0 1px 0 var(--coral-d)}
.btn.ghost{border:1px solid var(--line);background:var(--surface);box-shadow:0 3px 0 var(--line)}
.btn.ghost:active{box-shadow:0 1px 0 var(--line)}
.play{min-height:44px;border:1px solid var(--line);border-radius:3px;font-size:13px;background:transparent;box-shadow:none}
.play:active{box-shadow:none}
.play svg{width:20px;height:20px}
.tabs{border-top:1px solid var(--line);background:var(--bg);padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px))}
.tabs>div{max-width:476px;gap:20px}
.tab{min-height:52px;border-radius:0;font-size:11px;font-weight:500;gap:5px;position:relative}
.tab svg{width:22px;height:22px;stroke-width:1.5}
.tab[aria-current="page"]{background:var(--rose-paper);color:var(--coral);border-radius:12px 12px 8px 8px}
.tab[aria-current="page"]::before{content:"";position:absolute;top:-9px;width:30px;height:2px;background:var(--coral)}
/* La couverture */
.cover{min-height:calc(100svh - 28px);display:flex;flex-direction:column;padding-top:max(24px,env(safe-area-inset-top))}
.cover-meta{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--ink);padding-bottom:12px;font-size:10px;text-transform:uppercase;letter-spacing:.16em}
.cover-number{font-family:var(--f-display);font-style:italic;font-size:17px;letter-spacing:0;text-transform:none}
.cover-title{font-size:clamp(54px,16vw,76px);line-height:.87;font-weight:500;margin:39px 0 0;letter-spacing:-.055em}
.cover-title em{color:var(--coral);font-weight:500}
.cover-sub{font-size:13px;line-height:1.65;max-width:240px;margin-top:20px;color:var(--ink-soft)}
.cover-art{width:100%;height:145px;display:block;margin:6px 0 0;overflow:visible}
.cover-actions{margin-top:auto;padding-top:12px}
.cover-actions .btn{text-align:left;display:flex;justify-content:space-between;align-items:center}
.cover-actions .btn span:last-child{font-size:23px;line-height:1;font-weight:400}
.cover-secondary{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:62px;background:none;border:0;border-bottom:1px solid var(--line);padding:12px 0;text-align:left;font-size:14px}
.cover-secondary small{display:block;color:var(--ink-soft);font-size:11px;margin-top:3px}
.cover-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:20px 0 4px;font-size:10px;color:var(--ink-soft)}
.cover-foot a{min-height:44px;display:inline-flex;align-items:center}
/* La carte */
.map-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px}
.map-heading h1{font-size:40px}
.annotation{font-family:var(--f-display);font-size:20px;font-style:italic;color:var(--coral);white-space:nowrap}
.journey-progress{display:flex;align-items:center;gap:12px;margin:12px 0 20px;font-size:11px;color:var(--ink-soft)}
.journey-progress .rule{height:7px;flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.journey-progress .rule i{display:block;height:100%;background:var(--mint);border-radius:8px}
.chapter-note{border-left:2px solid var(--coral);padding:2px 0 2px 12px;margin-bottom:20px}
.chapter-note p{font-size:14px;margin-top:4px}
.map{margin:18px -6px 0;overflow:hidden}
.road path{stroke:#a6a391;stroke-width:.8}
.node{width:66px;height:48px;scroll-margin-top:110px}
.node::before{left:calc(50% + 26px);width:2px;height:56px;background:var(--ink);opacity:1}
.nbtn,.node.done .nbtn,.node.current .nbtn,.node.locked .nbtn{box-shadow:none;background:var(--ink);border:1px solid var(--ink)}
.nbtn:active{box-shadow:none;transform:rotate(-20deg) scale(.95)}
.nbtn>span,.node.done .nbtn>span,.node.current .nbtn>span{color:var(--bg);font-family:var(--f-body);font-size:13px;font-weight:500}
.node.done .nbtn{background:var(--sage-paper);border-color:#809274;box-shadow:0 3px 0 #a1b393}
.node.done .nbtn>span{color:var(--mint);font-size:20px}
.node.locked .nbtn{background:var(--surface-2);border:1px dashed #999987}
.node.locked .nbtn>span{color:#747665;font-size:12px}
.node.locked::before{background:#999987}
.node.current .nbtn{background:var(--coral);border-color:var(--coral);box-shadow:0 4px 0 var(--coral-d)}
.node.current .nbtn>span{font-size:18px;font-weight:700}
.node.current .nbtn:active{box-shadow:0 1px 0 var(--coral-d);transform:rotate(-20deg) translateY(3px)}
.node.current::before{background:var(--coral)}
.node.current::after{inset:-12px -10px;border:1.5px solid var(--coral);border-radius:49% 44% 48% 43%;transform:rotate(-27deg);animation:none}
.nlabel{max-width:min(35vw,170px);font-size:14px;font-weight:500;line-height:1.3}
.nlabel.l{right:calc(100% + 17px)}
.nlabel.r{left:calc(100% + 17px)}
.nlabel small{font-size:10px;margin-top:5px;font-weight:400}
.wkchip{display:block;background:transparent;color:var(--coral);padding:0;border-radius:0;font-family:var(--f-display);font-style:italic;font-size:17px;font-weight:500;line-height:1.2;margin-bottom:5px}
.stars{gap:3px}.stars svg{width:15px;height:15px}
.st-on{fill:var(--gold);stroke:#ab7b22}
.map-end{font-family:var(--f-display);font-style:italic;font-size:20px;text-align:center;color:var(--ink-soft);padding:14px 0 0}
/* Une page, un exercice */
.lesson{gap:20px;padding-top:0}
.lesson h2{font-size:36px}
.lesson .txt{font-size:17px;line-height:1.7}
.lesson .txt b{font-weight:600}
.vis{background:transparent;border:0;border-radius:0;padding:18px 0;gap:16px;width:100%;min-width:0}
.lesson>.vis{border-block:1px solid var(--line)}
.q-prompt{font-size:30px;font-weight:600}
.progress{height:8px;border-radius:8px;background:var(--surface-2);border:1px solid var(--line)}
.progress i{background:var(--coral);border-radius:8px;box-shadow:none}
.app[data-screen="lesson"]{min-height:100svh;display:flex;flex-direction:column}
.app[data-screen="lesson"]>.lesson{flex:1;padding-bottom:12px}
.app[data-screen="lesson"] .lesson>.opts,.app[data-screen="lesson"] .lesson>.vis:last-child{margin-top:auto}
.footer{padding-block:16px max(16px,env(safe-area-inset-bottom));background:var(--bg)}
.opts{gap:10px}
.opt{border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 3px 0 var(--line);min-height:60px;font-size:16px;padding:14px 10px}
.opt:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}
.opt.good,.opt.bad{box-shadow:none}
.sheet{border-top-width:1px;border-radius:20px 20px 0 0;padding:22px 22px calc(18px + env(safe-area-inset-bottom,0px))}
.sheet h3{font-size:32px}.sheet p{font-size:14px;font-weight:400}
.sheet:not(.bad) h3::before{content:"✓";font-family:var(--f-display);font-style:italic}
.bubble{border:0;border-left:2px solid var(--line);border-radius:0;background:transparent;font-size:15px;padding:4px 0 4px 16px}
.say>.mascot{display:none}
.bounce{animation:none}
.notebtns{gap:8px}
.nb{background:var(--surface)!important;border:1px solid var(--line);border-radius:10px;box-shadow:0 3px 0 var(--line);min-height:56px;font-family:var(--f-display);font-size:26px;color:var(--ink)}
.nb:active{background:var(--surface-2)!important;box-shadow:none;transform:translateY(1px)}
.nb.flash-bad{background:var(--bad-bg)!important}
.seg{background:transparent;padding:0;border:1px solid var(--line);border-radius:3px;gap:0}
.seg button{min-height:46px;min-width:0;font-size:12px;border-radius:0;padding:8px 6px;font-weight:500}
.seg button+button{border-left:1px solid var(--line)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg);box-shadow:none}
.freeset{gap:8px;margin:18px 0}
.freescore{border-bottom:1px solid var(--line);gap:18px;padding-bottom:12px}
.freescore .chip{font-size:11px;font-weight:500}
.app[data-screen="free"] .top{margin-bottom:16px}
.app[data-screen="free"] .lesson{gap:14px}
.app[data-screen="free"] .vis{padding-block:10px;gap:6px}
.app[data-screen="free"] .freeset{margin-block:12px}
.app[data-screen="free"] .q-prompt{font-size:27px}
.bigmsg{font-size:25px}
.placectl .iconbtn{border-radius:3px;width:54px;height:52px;font-size:16px}
.hint{font-size:11px}
.weak{border-top:1px solid var(--line);padding-top:20px;margin-top:32px}
.weak h3{font-size:28px}
.weakgrid .stk{background:transparent}
.practice-link{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;min-height:64px;border:0;border-block:1px solid var(--line);background:transparent;font-size:14px;margin-top:30px;padding:12px 0}
.practice-link small{display:block;font-size:11px;color:var(--ink-soft);margin-top:4px}
.piano{border-radius:3px;height:170px}
.wk{border-radius:0 0 2px 2px}.bk{border-radius:0 0 2px 2px}
.gcards{gap:0;border-top:1px solid var(--line);margin-top:24px}
.gcard{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;box-shadow:none;padding:22px 0;gap:16px}
.gcard:active{box-shadow:none;background:var(--surface-2);transform:none}
.gcard .art{background:transparent!important;color:var(--coral)!important;border:1px solid var(--line);border-radius:50%;width:58px;height:58px}
.gcard .art .staff{color:var(--ink)!important}
.gcard .art .mascot{display:none}
.gcard[data-game="free"] .art::after{content:"♬";font-size:30px;font-family:var(--f-display)}
.gcard h3{font-size:27px}.gcard p{font-size:13px;line-height:1.6;margin-top:4px}
.gcard .best{font-size:11px;font-weight:400}
.album{gap:12px;margin-top:22px;grid-template-columns:repeat(2,minmax(0,1fr))}
.stk{border:1px solid var(--line);border-radius:7px;box-shadow:2px 3px 0 var(--surface-2);background:var(--surface);padding:12px 8px}
.stk b{font-size:12px;font-weight:500}
.stk.lock{background:transparent;border-style:solid}
.stk.lock .mini{filter:grayscale(1);opacity:.2}
.detail{border:1px solid var(--line);border-radius:2px;background:transparent}
.detail h2{font-size:32px}
.parent{border:0;border-top:1px solid var(--line);border-radius:0;padding:24px 0 0;font-size:13px}
.parent strong{font-family:var(--f-display);font-size:25px;font-weight:600}
.linkbtn{min-height:44px;font-size:12px;font-weight:500}
.edition-link{display:inline-flex;min-height:44px;align-items:center;font-size:12px;color:var(--ink-soft)}
.result{gap:24px;padding-top:50px}.result h2{font-size:44px}
.bigstars{gap:12px}.bigstars svg{width:48px;height:48px}.bigstars svg:nth-child(2){width:64px;height:64px}
.reward{border:1px dashed #b99c60;border-radius:12px;background:var(--gold-paper);font-size:14px}
.timer{height:3px;border-radius:0}.timer i{background:var(--coral)}
/* Petites récompenses, comme des autocollants dans le cahier. */
.star-bank{border:1px solid #d6bd83;background:var(--gold-paper);border-radius:10px;padding:6px 8px;gap:5px;color:var(--gold-ink);transform:rotate(-3deg)}
.cover-stickers{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.paper-sticker{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:5px 9px;border:1px solid #d6bd83;border-radius:5px;font-size:11px;font-weight:500;box-shadow:1px 2px 0 #2829230d;transform:rotate(-4deg)}
.paper-sticker svg{width:16px;height:16px}
.sticker-gold{background:var(--gold-paper);color:var(--gold-ink)}
.sticker-sage{background:var(--sage-paper);border-color:#bdc8b2;color:var(--mint);transform:rotate(3deg)}
.sticker-sage>span{font-size:19px;line-height:1}
.quest-button{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}
.quest-button small{display:block;font-size:11px;font-weight:400;margin-top:5px;color:#fff2df}
.quest-arrow{display:grid;place-items:center;width:34px;height:34px;flex:none;border:1px solid #ffffff66;border-radius:50%;font-size:22px}
.node.current .wkchip{font-family:var(--f-body);font-size:10px;font-weight:600;font-style:normal;background:var(--gold-paper);border:1px solid #d6bd83;color:var(--gold-ink);padding:4px 7px;border-radius:4px;transform:rotate(-4deg);margin-bottom:8px}
.node.current::after{animation:pencil-ring 2.8s ease-in-out infinite}
@keyframes pencil-ring{0%,100%{transform:rotate(-27deg) scale(1);opacity:.65}50%{transform:rotate(-24deg) scale(1.06);opacity:1}}
.notebtns .nb:nth-child(3n+1){background:#f7ecd1!important;border-color:#d6bd83;box-shadow:0 3px 0 #d6bd83}
.notebtns .nb:nth-child(3n+2){background:var(--sage-paper)!important;border-color:#b2c0a4;box-shadow:0 3px 0 #b2c0a4}
.notebtns .nb:nth-child(3n){background:var(--rose-paper)!important;border-color:#cfb1a2;box-shadow:0 3px 0 #cfb1a2}
.notebtns .nb:active{transform:translateY(3px);box-shadow:none}
.notebtns .nb.flash-bad{background:var(--bad-bg)!important}
.gcard .art{border:1px solid #d6bd83;background:var(--gold-paper)!important;transform:rotate(-5deg)}
.gcard:nth-child(2) .art{border-color:#b2c0a4;background:var(--sage-paper)!important;transform:rotate(4deg)}
.gcard:nth-child(3) .art{border-color:#cfb1a2;background:var(--rose-paper)!important}
.album .stk:not(.lock){border-color:#b8c5aa;background:linear-gradient(var(--sage-paper) 5px,var(--surface) 5px)}
.album .stk.earned::after{content:"✓ învățat";font-size:10px;color:var(--good);padding-top:4px}
.completion-stamp{font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--good);border:2px solid var(--good);padding:7px 12px;border-radius:5px;transform:rotate(-6deg)}
.result .bigstars{padding:20px 26px;background:var(--gold-paper);border-radius:50%;border:1px solid #d6bd83}
/* Colecția are propriile cartonașe; simbolurile nu împart spațiul cu setările. */
.collection-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:4px}
.collection-title .section-title{font-size:36px;margin:0}
.collection-count{flex:none;font-family:var(--f-display);font-size:32px;font-weight:600;color:var(--coral);white-space:nowrap}
.collection-count small{font-family:var(--f-body);font-size:12px;color:var(--ink-soft);font-weight:400}
.collection-intro{font-size:13px;line-height:1.6;color:var(--ink-soft);margin:10px 0 16px;max-width:280px}
.collection-progress{height:6px;background:var(--surface-2);border-radius:8px;overflow:hidden;margin-bottom:26px}
.collection-progress i{display:block;height:100%;border-radius:8px;background:var(--gold)}
.collection-section-label{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.collection-section-label h2{font-family:var(--f-body);font-size:13px;font-weight:600;letter-spacing:0}
.collection-section-label>span{font-size:10px;color:var(--ink-soft);white-space:nowrap}
.collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}
.collection-card{display:flex;flex-direction:column;align-items:stretch;min-width:0;padding:10px 12px 12px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 0 var(--surface-2);position:relative;transition:transform .12s}
.collection-card:active{transform:translateY(2px)}
.collection-card-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.06em;color:var(--ink-soft)}
.collection-seal{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--surface-2);color:var(--ink-soft);font-size:12px}
.is-earned .collection-seal{background:var(--sage-paper);color:var(--good)}
.collection-card-art{display:flex;align-items:center;justify-content:center;height:104px;min-width:0;margin:8px 0 12px;border-radius:6px;background:#f1eee5;padding:8px}
.collection-card:nth-child(3n+2) .collection-card-art{background:#eaf0e3}
.collection-card:nth-child(3n) .collection-card-art{background:#f5e8df}
.collection-card-art>svg{display:block;width:auto;max-width:100%;max-height:88px;height:88px}
.collection-card-art .mascot{width:64px;height:64px}
.collection-card-art .legend{display:block;text-align:center}
.collection-card-name{font-family:var(--f-display);font-size:23px;line-height:1.05;font-weight:600;min-height:49px;overflow-wrap:anywhere}
.collection-card-open{display:flex;justify-content:space-between;font-size:10px;color:var(--ink-soft);margin-top:auto;padding-top:12px}
.collection-card-open>span{font-size:15px;line-height:1}
.collection-next{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;gap:16px 14px;background:var(--gold-paper);border:1px solid #d6bd83;border-radius:14px;padding:18px;margin-top:26px}
.collection-next-art{position:relative;display:flex;align-items:center;justify-content:center;min-height:84px;background:var(--surface);border:1px solid #d6bd83;border-radius:9px;transform:rotate(-5deg);padding:7px}
.collection-next-art>svg{width:100%;height:76px;max-width:100%}
.collection-next-art .mascot{height:64px}
.collection-gift{position:absolute;right:-5px;bottom:-7px;display:grid;place-items:center;width:26px;height:26px;background:var(--gold);border:2px solid var(--gold-paper);border-radius:50%;color:var(--gold-ink)}
.collection-gift svg{width:13px;height:13px}
.collection-next h2{font-size:28px;margin-top:5px}
.collection-next p{font-size:12px;line-height:1.55;margin-top:7px;color:var(--gold-ink)}
.collection-next .eyebrow{font-size:9px;color:var(--gold-ink);letter-spacing:.1em}
.collection-next>.btn{grid-column:1/-1;font-size:14px}
.collection-next.is-first{margin-top:4px;padding:24px 20px;grid-template-columns:90px minmax(0,1fr);gap:22px 16px}
.is-first .collection-next-art{height:110px}
.collection-upcoming{margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.collection-upcoming summary{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:62px;font-size:13px;font-weight:500;cursor:pointer;list-style:none}
.collection-upcoming summary::-webkit-details-marker{display:none}
.collection-upcoming summary>span:last-child{font-size:11px;color:var(--ink-soft);display:flex;align-items:center;gap:12px}
.collection-upcoming[open] summary>span:last-child>span{transform:rotate(45deg)}
.collection-locked-row{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:16px 0}
.collection-lock{display:grid;place-items:center;flex:none;width:32px;height:38px;border:1px dashed var(--line);border-radius:6px;color:var(--ink-soft)}
.collection-lock svg{width:14px;height:14px}
.collection-locked-row>div{min-width:0;flex:1}
.collection-locked-row h3{font-family:var(--f-body);font-size:13px;font-weight:500;letter-spacing:0;margin-top:4px;line-height:1.35}
.collection-locked-row p{font-size:11px;color:var(--ink-soft);margin-top:4px;line-height:1.5}
.collection-locked-count{font-size:11px;color:var(--ink-soft);flex:none}
.collection-settings{margin-top:22px}
.collection-settings summary{cursor:pointer;min-height:48px;padding-block:14px;font-size:12px;color:var(--ink-soft)}
.collection-settings .parent{margin:0;padding:8px 0;border:0}
.collection-complete{display:flex;align-items:center;justify-content:center;gap:10px;font-size:14px;color:var(--gold-ink);padding:20px 0;margin-top:20px}
.collection-complete svg{width:24px;height:24px;flex:none}
.collection-back{border:0;background:none;padding:0 0 12px;min-height:44px;font-size:13px;color:var(--ink-soft);text-align:left}
.collection-detail{border:1px solid var(--line);background:var(--surface);border-radius:14px;padding:20px;margin:8px 0 22px;text-align:center}
.collection-detail-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:10px;color:var(--ink-soft)}
.collection-detail-art{display:flex;align-items:center;justify-content:center;min-height:180px;margin:20px 0;background:#f1eee5;border-radius:8px;padding:16px}
.collection-detail-art>svg{max-height:180px;max-width:100%;width:auto}
.collection-detail-art .mascot{width:90px;height:90px}
.collection-detail-art .piano{height:130px}
.collection-detail-art .legend{display:block;text-align:center}
.collection-detail .section-title{font-size:36px;margin:0 0 12px;outline-offset:5px}
.collection-detail>p{font-size:15px;line-height:1.65;color:var(--ink-soft)}
.collection-detail .plays{margin-top:20px}
.collection-source{display:flex;flex-direction:column;gap:5px;border-top:1px solid var(--line);margin-top:24px;padding-top:16px;font-size:12px;color:var(--ink-soft)}
summary:focus-visible{outline:2px solid var(--sky);outline-offset:3px}
@media(max-width:359px){.collection-title .section-title{font-size:31px}.collection-count{font-size:28px}.collection-card{padding-inline:10px}.collection-card-name{font-size:21px}.collection-next.is-first{grid-template-columns:72px minmax(0,1fr);padding:20px 14px;gap:18px 12px}.collection-next h2{font-size:26px}}
.practice-shortcuts{display:flex;gap:6px;margin:12px 0 18px;flex-wrap:wrap}
.practice-shortcuts button{flex:1;min-width:80px;min-height:44px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:8px 6px;font-size:11px}
.practice-shortcuts button:first-child{background:var(--gold-paper);border-color:#d6bd83}
.practice-settings{margin-bottom:16px;border-bottom:1px solid var(--line)}
.practice-settings summary{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:48px;cursor:pointer;list-style:none;font-size:12px;color:var(--ink-soft)}
.practice-settings summary::-webkit-details-marker{display:none}
.practice-settings summary>span:last-child{color:var(--coral);white-space:nowrap}
.practice-settings[open] summary{border-bottom:1px dashed var(--line)}
.piano-register{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;font-size:11px;color:var(--ink-soft)}
.piano-register button{min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:12px;padding:8px 12px}
.piano-register button:disabled{opacity:.4;cursor:default}
.piano .wk{font-size:12px}
.sheet{max-height:80svh;overflow-y:auto;overscroll-behavior:contain}
.sheet .answer-explanation{font-size:13px;line-height:1.5;font-weight:400}
.answer-note{display:flex;justify-content:center}
.answer-note .staff{width:180px;height:100px}
.reward-open{display:block;min-height:44px;border:0;background:none;padding:10px 0 0;font-size:13px;font-weight:600;color:var(--coral);text-decoration:underline;text-underline-offset:4px;text-align:left}
@media(prefers-reduced-motion:reduce){.node.current::after{animation:none}.btn,.opt,.nb,.collection-card{transition:none}}
@media(min-width:700px){body{background:#e7e3d9}.app{background:var(--bg);min-height:100svh;padding-inline:28px;box-shadow:0 0 0 1px #d5d0c4}.tabs{left:50%;right:auto;transform:translateX(-50%);width:520px}.cover-title{font-size:80px}.cover-art{height:180px}.cover{min-height:calc(100svh - 28px)}}
@media(max-width:359px){.app{padding-inline:16px}.brand{font-size:12px}.brand small{font-size:9px}.top{gap:8px}.map-heading h1{font-size:35px}.annotation{font-size:18px}.nlabel{font-size:12px}.nlabel.l{right:calc(100% + 12px)}.nlabel.r{left:calc(100% + 12px)}.cover-title{margin-top:28px}.cover-art{height:120px}.seg button{font-size:11px}.freescore{gap:14px}}
@media(max-height:700px){.cover-title{margin-top:26px;font-size:58px}.cover-sub{margin-top:14px}.cover-art{height:100px}.cover-foot{padding-top:8px}}
