.concert:fullscreen{background:#f7f4eb;width:100%;max-width:none;overflow:auto;padding:20px}.concert:fullscreen .stage-wrap{max-width:1200px;margin:auto}.concert:fullscreen .player{max-width:1200px;margin:auto}
.keyboard-panel{margin:25px auto 0;max-width:900px}.keyboard-panel p{font-size:12px;color:#738178}#manual-keys{display:flex;gap:4px;overflow-x:auto;padding:6px 3px 20px}#manual-keys button{flex:0 0 42px;height:88px;border:1px solid #a5afa5;border-radius:0 0 6px 6px;font-size:10px;touch-action:manipulation}.white-key{background:#fffdf4}.black-key{background:#243a31;color:#f8edcf;height:63px!important}#manual-keys button:active{background:#d9b578;transform:translateY(3px)}
:root{color-scheme:light;--ink:#203d35;--paper:#f7f4eb;--gold:#b79550}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}button,a,input,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font:inherit;color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #b79550;outline-offset:5px}header{height:95px;max-width:1380px;margin:auto;padding:0 4%;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:3px}header button{background:none;border:1px solid #d9d9cb;border-radius:50%;width:42px;height:42px;font-size:24px}.brand{font:italic 37px Georgia;color:var(--ink);text-decoration:none}.brand span{font-size:19px;color:var(--gold)}.intro{text-align:center;padding:43px 20px 45px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:3px;color:#8e7952}h1,h2{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;line-height:.98;margin:27px 0}h1{font-size:clamp(60px,7vw,100px)}em{font-weight:400;color:#a08047}.dedication{font-size:13px;line-height:1.9;color:#718078}.concert{max-width:1280px;margin:auto;padding:0 32px}.stage-wrap{position:relative;background:#20372e;overflow:hidden;border-radius:180px 180px 8px 8px}canvas{display:block;width:100%;aspect-ratio:16/8.7}.stage-caption{position:absolute;top:30px;left:0;right:0;text-align:center;font-size:9px;letter-spacing:2.5px;color:#eee2c2}.dot{display:inline-block;width:5px;height:5px;background:#d5b573;border-radius:100%;margin-right:9px}#celebrate{position:absolute;bottom:20px;right:22px;background:#ffffff14;color:#f6e5bb;border:1px solid #ffffff33;border-radius:50%;width:44px;height:44px;font-size:28px}.player{display:flex;align-items:center;gap:22px;position:relative;padding:25px 0 30px}.play{display:flex;align-items:center;gap:10px;background:var(--ink);color:white;border:0;border-radius:30px;padding:15px 23px;font-size:11px;white-space:nowrap}.play:disabled{opacity:.5}.track{display:flex;flex:1;flex-direction:column;gap:6px}.track strong{font-size:12px}.track span{font-size:10px;color:#819087}#time{font-size:10px;font-variant-numeric:tabular-nums}.volume{display:flex;align-items:center;gap:8px}.volume input{width:70px}input[type=range]{accent-color:#a88b53;cursor:pointer}#seek{position:absolute;bottom:0;left:0;width:100%;height:3px;margin:0}#caption{text-align:center;font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;min-height:38px;margin:27px 0;color:#83714d}.letter{max-width:660px;margin:100px auto 90px;text-align:center;padding:0 24px}h2{font-size:64px}.letter>p:not(.eyebrow){font-size:14px;line-height:2.1;color:#738178}.signature{font-size:12px;line-height:1.9;margin-top:30px}.signature span{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:25px;color:#a08047;margin-top:16px}details{margin-top:45px;text-align:left;border-top:1px solid #dcded1;border-bottom:1px solid #dcded1}summary{padding:20px 0;cursor:pointer;font-size:12px;list-style:none;display:flex;justify-content:space-between}#lyrics{white-space:pre-line;line-height:1.9;font-size:14px;padding:0 0 25px;color:#687c71}footer{margin:0 4%;padding:27px 0;display:flex;justify-content:space-between;border-top:1px solid #dcded1;font-size:9px;letter-spacing:1px;color:#859087}@media(max-width:650px){header{height:70px}.intro{padding:25px 18px 30px}h1{font-size:64px}.concert{padding:0 12px}.stage-wrap{border-radius:70px 70px 5px 5px}canvas{aspect-ratio:16/8.7}.stage-caption{top:20px;font-size:7px}.player{gap:12px;flex-wrap:wrap;padding:20px 2px 24px}.play{padding:13px 17px}.track{min-width:150px}.track span{font-size:9px}.volume{display:none}#time{margin-left:auto}#caption{font-size:21px;padding:0 10px}.letter{margin-top:65px}h2{font-size:54px}footer span:nth-child(2){max-width:145px;text-align:center}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
/* The concert is the first screen, with local system fonts and no blocking font requests. */
body{font-family:Arial,sans-serif}h1,h2,#caption,.signature span{font-family:Georgia,serif}header{height:60px}.intro{padding:12px 20px 25px}h1{font-size:clamp(32px,5vw,70px);line-height:1.1;margin:15px 0}.intro .eyebrow{margin:5px 0}.concert{max-width:1280px}.stage-wrap{border-radius:90px 90px 8px 8px;isolation:isolate}.stage-caption{top:24px}.media-source{position:fixed;bottom:0;left:0;width:1px;height:1px;opacity:.001;pointer-events:none;z-index:-1}.sound-prompt{position:absolute;z-index:3;bottom:18px;left:50%;transform:translateX(-50%);border:1px solid #f0ddb3;background:#f6e6bf;color:#193d31;border-radius:30px;min-height:48px;padding:12px 24px;font-weight:bold;box-shadow:0 4px 24px #0004;white-space:nowrap}.sound-prompt[hidden]{display:none}.keyboard-panel{margin:20px auto;max-width:900px;padding:0 20px}#caption{line-height:1.25}.buffering .stage-caption::after{content:' · ЗАГРУЗКА';color:#d8bb83}.stage-wrap:not(.ready)::before{content:'Собираем семью…';position:absolute;z-index:2;left:0;right:0;top:50%;text-align:center;color:#e6d7ae;font:italic 22px Georgia}.concert:fullscreen{height:100dvh;display:flex;flex-direction:column;padding:0 16px}.concert:fullscreen .stage-wrap{flex:1;min-height:0;width:100%;max-width:none}.concert:fullscreen canvas{height:100%;aspect-ratio:auto}.concert:fullscreen .player{width:100%}.concert:fullscreen #caption{margin:14px 0}.play{min-height:46px}#seek{height:20px;bottom:-9px;background:transparent;touch-action:pan-x}
@media(max-width:650px){
 body{background:#163b32;color:#f0e3c4}header{display:none}.intro{height:64px;padding:calc(8px + env(safe-area-inset-top)) 12px 8px;text-align:center}.intro .eyebrow{display:none}h1{font:normal clamp(19px,5.4vw,28px) Georgia;margin:8px 0;line-height:1.1;white-space:nowrap}h1 em{color:#e2c48d}
 .concert{height:calc(100svh - 64px);height:calc(100dvh - 64px);min-height:390px;display:flex;flex-direction:column;padding:0 8px}.stage-wrap{flex:1;min-height:0;border-radius:32px 32px 6px 6px;width:100%;box-shadow:inset 0 0 0 1px #d8c49422}canvas{width:100%;height:100%;aspect-ratio:auto}.stage-caption{top:14px;font-size:8px;letter-spacing:1.6px}#celebrate{right:12px;bottom:12px;width:44px;height:44px}.sound-prompt{bottom:12px;min-height:44px;font-size:13px;padding:10px 18px}
 .player{flex:0 0 76px;flex-wrap:nowrap;gap:10px;padding:12px 4px 18px}.play{background:#e7c994;color:#173a2f;padding:11px 16px;font-size:12px;min-height:44px}.track{min-width:0}.track strong{font-size:11px}.track span{font-size:9px;color:#b6c8ba}.volume{display:none}#time{font-size:10px;white-space:nowrap;color:#dfd3b6}#seek{bottom:0;height:20px}#caption{flex:0 0 58px;margin:0;min-height:0;display:flex;align-items:center;justify-content:center;padding:6px 12px calc(8px + env(safe-area-inset-bottom));font-size:clamp(17px,4.7vw,22px);color:#ead7ad}
 .keyboard-panel{margin:20px 16px;padding:0;border-color:#ffffff25}.keyboard-panel p{color:#c1cebd}.letter{margin:50px auto 65px}.letter>p:not(.eyebrow){color:#bfcebe}.signature span,h2 em{color:#ddbb7e}.eyebrow{color:#cab383}details{border-color:#ffffff25}#lyrics{color:#d4ddcf}footer{color:#b4c3b5;border-color:#ffffff25}
}
@media(max-height:500px) and (orientation:landscape){header,.intro{display:none}.concert{height:100dvh;display:flex;flex-direction:column;padding:0 12px}.stage-wrap{flex:1;min-height:0;border-radius:20px}.stage-wrap canvas{height:100%;aspect-ratio:auto}.player{flex:0 0 60px;padding:7px 0 17px}.concert #caption{flex:0 0 35px;margin:0;font-size:18px;min-height:0}.stage-caption{top:10px}.play{padding:8px 16px;min-height:40px}}

#scene-size{position:absolute;top:12px;left:12px;z-index:2;min-width:44px;min-height:44px;border:1px solid #e6d6ac55;background:#173c32d9;color:#f0ddb1;border-radius:50%;font-size:25px;line-height:1;touch-action:manipulation}#scene-size[aria-pressed=true]{background:#e7c994;color:#173a2f}
.stage-wrap.large-cast .stage-caption{display:none}
@media(min-width:651px){#scene-size{top:80px;left:24px}}
