:root{font-family:Avenir Next,Avenir,Segoe UI,sans-serif;color:#482139;background:#f8ecd7;font-synthesis:none;--paper: #fff4df;--ink: #482139;--plum: #57243f;--muted: #775b65;--rule: #b39a82;--display: "Baskerville", "Palatino Linotype", "Book Antiqua", Georgia, serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:1px solid var(--ink);border-radius:9px;background:transparent;padding:12px 18px;color:inherit;min-height:46px;font-weight:600;transition:background .18s,transform .18s}button:active:not(:disabled){transform:translateY(1px)}button:disabled{cursor:default;opacity:.5}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible,summary:focus-visible{outline:3px solid #a26393;outline-offset:4px}@media(hover:hover){button:hover:not(:disabled){background:#eedbc8}.primary:hover:not(:disabled){background:#713b58}}#root{position:relative;isolation:isolate;max-width:620px;min-height:100dvh;margin:auto;background-color:var(--paper);box-shadow:0 0 80px #4821390b;padding-top:1px}#root:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.1;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23774e34' filter='url(%23n)' opacity='.45' d='M0 0h160v160H0z'/%3E%3C/svg%3E")}.curtain{position:absolute;top:0;left:0;width:100%;height:70px;pointer-events:none;z-index:-1}header{text-align:center;padding:40px 18px 6px}header a{text-decoration:none;font-family:var(--display);font-style:italic;font-weight:700;font-size:clamp(22px,5.9vw,31px);letter-spacing:-.9px}.wordmark-rule{display:flex;justify-content:center;align-items:center;gap:8px;color:#b58a43;font-size:12px;margin-top:7px}.wordmark-rule:before,.wordmark-rule:after{content:"";height:1px;width:36px;background:var(--rule)}main{padding:14px 22px 24px;margin:auto}h1,h2{font-family:var(--display)}h1{font-size:clamp(40px,11vw,64px);line-height:1.02;letter-spacing:-1.8px;margin:18px 0 12px;font-weight:700}h1 i{font-weight:400}h2{font-size:26px;font-weight:400;margin:0 0 14px}p{line-height:1.5}small{font-size:12px;line-height:1.5;color:var(--muted)}section{margin:22px 0}.eyebrow{font-size:10px;letter-spacing:2.5px;font-weight:700;text-align:center}.ornament{display:flex;gap:12px;align-items:center;justify-content:center}.ornament:before,.ornament:after{content:"";width:25px;height:1px;background:var(--rule)}.primary{background:var(--plum);color:var(--paper);border-color:var(--plum);border-radius:12px}.primary span{margin-left:12px}.quiet,footer .text{border:0;background:transparent;text-decoration:underline;text-underline-offset:4px;font-size:12px;font-weight:400}label{display:block;font-size:12px;font-weight:600;line-height:1.6}input,select{display:block;width:100%;padding:12px;border:1px solid #a88c7a;border-radius:7px;background:#fffbf2;color:var(--ink);margin-top:6px;min-height:46px;font-size:16px}select{text-overflow:ellipsis}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.musician{display:block;background-image:url(/art/musicians.jpg);background-size:300% 200%;background-repeat:no-repeat;aspect-ratio:1;flex:none}.musician-strings{background-position:0 0}.musician-brass{background-position:50% 0}.musician-woodwind{background-position:100% 0}.musician-piano{background-position:0 100%}.musician-harp{background-position:50% 100%}.musician-percussion{background-position:100% 100%}.ensemble-art{display:block;width:100%;height:auto;mix-blend-mode:multiply}.landing{text-align:center}.landing h1{font-size:clamp(52px,14vw,78px);margin-top:20px}.intro{font-size:15px;line-height:1.5;margin:14px 0 0}.landing-art{margin:0 -12px;width:calc(100% + 24px)}.landing-caption{font-family:var(--display);font-style:italic;margin:0;font-size:17px}.entry{max-width:400px;margin:24px auto 16px;text-align:left}.entry>.primary{width:100%;margin:14px 0 18px;font-family:var(--display);font-size:25px}.entry>.primary span{float:right}.join{display:flex;gap:10px;align-items:end}.join label{flex:1;min-width:0}.join input{letter-spacing:2px}.join button{flex:1.4;padding:12px 8px;font-size:12px}.steps{font-size:11px;line-height:1.8;margin-top:24px}.notice{position:relative;margin:8px 16px;padding:12px;background:#efdfbd;border:1px solid #b59463;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;line-height:1.5;overflow-wrap:anywhere}.notice button{flex:none;padding:8px;min-width:44px}.notice-error{background:#f5ded8;border-color:#b9756b}.notice-success{background:#e8ecdc;border-color:#9ba584}.room-ticket{display:flex;align-items:center;justify-content:center;gap:15px;margin:12px 0 18px}.code{font-family:var(--display);font-size:27px;font-weight:700;letter-spacing:4px;border-block:1px solid var(--rule);padding:4px 16px}.invite-toggle{padding:8px 12px;min-height:44px;font-size:12px}.lobby-title{text-align:center}.lobby-title h1{margin:8px 0 5px}.lobby-title p{margin:0;font-size:14px}.instrument-section{margin:20px 0 14px}.instruments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.instrument{border:1px solid #b59b87;border-radius:11px;position:relative;overflow:hidden;background:var(--paper);transition:border-color .18s,box-shadow .18s}.instrument.selected{border-color:#733c66;box-shadow:0 0 0 2px #733c66;background:#e4cbe5}.instrument>button:first-child{display:flex;align-items:start;position:relative;width:100%;aspect-ratio:1.16;padding:10px;border:0;border-radius:0;text-align:left;overflow:hidden}.instrument .musician{position:absolute;width:100%;left:0;top:15px;mix-blend-mode:multiply;pointer-events:none}.instrument b{position:relative;display:inline;background:var(--paper);box-shadow:3px 0 var(--paper),-3px 0 var(--paper);font-family:var(--display);font-size:clamp(18px,5vw,25px);line-height:1;vertical-align:top}.instrument.selected b{background:#e4cbe5;box-shadow:3px 0 #e4cbe5,-3px 0 #e4cbe5}.selection-check{position:absolute;right:7px;top:7px;display:grid;place-items:center;background:var(--plum);color:var(--paper);width:23px;height:23px;border-radius:50%;font-size:14px}.instrument .hear{position:absolute;right:5px;bottom:5px;width:44px;min-height:44px;height:44px;padding:10px;border-radius:50%;background:var(--paper);border:1px solid #8f6e79;display:grid;place-items:center}.readiness{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:15px 0;border-block:1px solid var(--rule);font-size:12px}.avatar-stack{display:flex;padding-right:8px}.avatar{width:39px;height:39px;border:1px solid #9b7d83;border-radius:50%;position:relative;margin-right:-8px;background:var(--paper)}.avatar .musician{width:100%;border-radius:50%}.avatar b{position:absolute;bottom:-2px;right:-3px;border:1px solid var(--paper);background:var(--plum);color:var(--paper);border-radius:50%;width:15px;height:15px;display:grid;place-items:center;font-size:9px}.avatar-placeholder{display:grid;place-items:center;height:100%;font-family:var(--display);font-size:24px}.sound{margin:14px 0 24px;text-align:center}.sound>button:first-child{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border-color:#b69e8b;font-size:13px}.sound p{font-size:11px;margin:8px 0 14px;color:var(--muted)}.sound .primary{width:100%;font-family:var(--display);font-size:24px;padding:14px 8px}.ensemble-members{margin:24px 0}.ensemble-members h2{display:flex;justify-content:space-between;align-items:center}.member{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #c7b49d;font-size:14px}.member>span{min-width:0;overflow-wrap:anywhere}.member small{display:block}.member>b{font-size:11px;flex:none}.programme{border-block:1px solid var(--rule);padding:18px 0}.programme>small{display:block;margin-top:8px}summary{cursor:pointer;min-height:48px;padding:14px 0;font-size:13px;font-weight:600}summary span{float:right}.invite{display:flex;align-items:center;justify-content:space-between;gap:12px}.invite p{font-family:var(--display);font-style:italic;font-size:20px}.invite img{border:1px solid var(--rule);border-radius:6px}.inviteLink{display:block;overflow-wrap:anywhere;font-size:12px;margin:14px 0}.start{position:relative;background:var(--paper);padding:12px 0 calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--rule);z-index:2;margin-top:16px}.start button{width:100%;font-family:var(--display);font-size:24px}.start small{display:block;margin-top:8px;text-align:center}.leave{display:block;margin:0 auto}footer{text-align:center;padding:8px 22px 24px}footer section{text-align:left;font-size:12px;border-top:1px solid var(--rule)}footer label{margin:14px 0}.results{text-align:center}.results h1{font-style:italic;font-weight:400;font-size:clamp(39px,10.5vw,60px);margin:24px 0 4px}.results .ensemble-art{margin:0 -12px;width:calc(100% + 24px)}.resultHero{font-size:clamp(92px,25vw,142px);font-family:var(--display);font-weight:700;line-height:.9;letter-spacing:-7px;margin:8px 0 24px}.resultHero small{display:block;font-family:Avenir Next,sans-serif;font-size:10px;font-weight:700;letter-spacing:3px;color:var(--ink);line-height:1.5;margin-top:14px}.personal-result{display:grid;grid-template-columns:1.4fr 1fr 1fr;align-items:center;padding:14px 0;border-block:1px solid var(--rule);gap:8px}.personal-result>span+span{border-left:1px solid var(--rule)}.personal-result strong{display:block;font-family:var(--display);font-size:30px;line-height:1.15}.personal-result small{display:block;font-size:9px}.personal-part{display:flex;align-items:center;font-family:var(--display);font-size:17px;text-align:left}.personal-part .musician{width:32px;border-radius:50%;margin-right:4px;mix-blend-mode:multiply}.review-line{font-family:var(--display);font-size:19px;font-style:italic;margin:22px 0 18px}.result-actions{display:flex;flex-direction:column;gap:4px}.encore{font-family:var(--display);font-size:38px;font-style:italic;padding:10px}.encore span{font-size:23px;color:#ddba78}.ensemble-results{text-align:left;border-top:1px solid var(--rule);margin-top:12px}.result{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;border-bottom:1px solid #c7b49d;padding:14px 0;margin:0;font-size:13px;overflow-wrap:anywhere}.result small{width:100%}body:has(.game){background:#261322;overscroll-behavior:none}body:has(.game) #root{background:#35182d;color:#ffedd2;min-height:100dvh}body:has(.game) #root:before{opacity:.16}body:has(.game) header{display:none}body:has(.game) #root>.curtain{opacity:.28;height:100px}.game{position:relative;padding:max(18px,env(safe-area-inset-top)) 16px max(12px,env(safe-area-inset-bottom));max-width:620px;min-height:100dvh;overflow:hidden;touch-action:none}.gamehead{display:flex;align-items:center;gap:14px;height:68px}.gamehead .musician{width:62px;border-radius:50%;border:1px solid #bd9d88}.gamehead>div{min-width:0}.gamehead b{display:block;font-family:var(--display);font-size:22px;text-transform:uppercase;font-weight:400;letter-spacing:3px}.game-song{display:block;font-family:var(--display);font-style:italic;font-size:16px;margin-top:6px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game progress{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:5px;border:1px solid #a787a0;border-radius:8px;background:#61374f;color:#efdbb9;margin:18px 0 20px;overflow:hidden}.game progress::-webkit-progress-bar{background:#61374f}.game progress::-webkit-progress-value{background:#efdbb9;border-radius:8px}.game progress::-moz-progress-bar{background:#efdbb9;border-radius:8px}.game-score{display:block;text-align:center;font-size:12px;color:#e1cbd7}.feedback{height:60px;display:flex;align-items:center;justify-content:center;font-family:var(--display);font-style:italic;font-size:clamp(22px,7vw,34px);text-align:center;line-height:1.1}.game canvas{width:100%;height:max(310px,calc(100dvh - 310px));display:block;touch-action:none;user-select:none;-webkit-user-select:none;background:transparent}.stage-ensemble{display:flex;justify-content:center;gap:8px;height:58px;overflow:hidden;opacity:.85;margin-top:-4px;pointer-events:none}.stage-ensemble .musician{width:48px;border-radius:50%;border:1px solid #d1b096}.game>small{display:block;color:#e1cbd7;font-size:11px}.offline{font-size:12px;background:#f0d8a8;color:#482139;padding:10px;border-radius:8px}@media(min-width:540px){main{padding-inline:36px}header{padding-top:45px}.instrument>button:first-child{aspect-ratio:1.35}.instrument .musician{top:0}.landing-art{max-height:280px;object-fit:contain}}@media(max-width:359px){main{padding-inline:16px}.eyebrow{font-size:9px;letter-spacing:2px}.room-ticket{gap:10px}.instrument>button:first-child{padding:8px}.instrument b{font-size:18px}.selection-check{width:19px;height:19px;right:5px}.instrument .hear{right:3px;bottom:3px}.personal-part .musician{display:none}.game{padding-inline:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}.next-step{display:block;margin-top:9px;font-family:var(--display);font-style:italic;font-size:14px}.sound .ready-undo{width:100%;border-color:#b69e8b;font-size:13px}.start{margin:-9px 0 22px;border-top:0;padding-top:0}.invite-dialog{width:min(360px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #9a7481;border-radius:16px;background:var(--paper);color:var(--ink);padding:56px 24px 24px;text-align:center;box-shadow:0 16px 90px #21101e40}.invite-dialog::backdrop{background:#281023b8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.invite-dialog h2{margin:18px 0 8px;font-size:33px;font-style:italic}.invite-dialog p{font-size:13px}.invite-dialog>img{display:block;margin:20px auto;border:1px solid var(--rule);border-radius:8px}.invite-dialog .invitation-code{font-size:30px}.invite-dialog>.primary{width:100%}.dialog-close{position:absolute;right:10px;top:10px;width:44px;padding:6px;font-size:24px;border:0}.invitation-code{font-family:var(--display);letter-spacing:4px;border-block:1px solid var(--rule);padding:8px}
