:root{--bg: #f4f6f9;--surface: #ffffff;--fg: #18202b;--muted: #687385;--line: #dfe3ea;--accent: #2a5fab;--accent-fg: #ffffff;--accent-soft: #e6eefa;--chip: #eef1f5;--radius: 12px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--fg);background:var(--bg)}*{box-sizing:border-box}body{margin:0}a{color:var(--accent)}h1{font-size:1.35rem;margin:.2rem 0;letter-spacing:-.01em}h2{font-size:1.1rem}.page{padding:1rem;max-width:46rem;margin:0 auto}.narrow{max-width:26rem;padding-top:3.5rem;text-align:center}.hint{color:var(--muted);font-size:.92rem}.error{color:#c2362f}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.narrow .row{justify-content:center}button,.button{font:inherit;padding:.6rem 1rem;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);color:var(--fg);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px}button:disabled{opacity:.4;cursor:default}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);font-weight:600}button.link{border:none;background:none;color:var(--accent);padding:.2rem;min-height:auto}.brand{display:flex;justify-content:center;color:var(--accent)}.narrow h1{font-size:1.9rem}.choirs{list-style:none;padding:0;display:grid;gap:.6rem;margin:1.5rem 0}.choirs .button{width:100%;font-size:1.1rem;padding:1rem 1.2rem;box-shadow:0 1px 3px #0000000f}.bar{display:flex;flex-direction:column;gap:.1rem}.home-link{font-size:.9rem;text-decoration:none;color:var(--accent)}.songlist .bar h1{font-size:1.7rem}.search{width:100%;font:inherit;padding:.8rem 1rem;border:1px solid var(--line);border-radius:var(--radius);margin:.8rem 0;background:var(--surface);color:var(--fg)}.continue{margin-top:.8rem;width:100%;justify-content:flex-start}.songs{list-style:none;padding:0;margin:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.songs li{display:flex;align-items:center;gap:.5rem;border-bottom:1px solid var(--line)}.songs li:last-child{border-bottom:none}.songs a{flex:1;padding:.95rem 1.1rem;text-decoration:none;color:var(--fg);font-weight:500}.badge{font-size:.72rem;font-weight:700;background:var(--accent-soft);color:var(--accent);border-radius:1rem;padding:.15rem .55rem;margin-right:.9rem;text-transform:uppercase;letter-spacing:.04em}.segmented.order{margin:0 0 .8rem auto}.segmented.order button{min-height:0;border:none;background:none;padding:0;color:var(--fg);font-size:14px;border-radius:999px}.songs .date{color:var(--muted);font-size:.85rem;margin-right:1.1rem;white-space:nowrap}.songs .badge+.date{margin-left:-.5rem}footer{margin-top:1.5rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:.4rem 1rem 1rem;margin:1rem 0}.card textarea,.card input[type=text]{width:100%;font:inherit;padding:.5rem;border:1px solid var(--line);border-radius:.4rem;margin-bottom:.4rem}.card .row input[type=text]{width:auto;flex:1;margin:0}.join{background:var(--accent-soft);border-color:var(--accent-soft);padding:.2rem 1rem 1rem}.members{list-style:none;padding:0}.members li{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:.3rem 0}.score-wrap{position:relative;background:#fff;margin:0 auto;max-width:70rem}.score{min-height:40vh}.cursor{position:absolute;left:0;top:0;width:0;height:0;background:#2a5fab2e;pointer-events:none;will-change:transform}.score .highlights{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;will-change:transform}.score-pieces{position:absolute;inset:0;overflow:hidden;pointer-events:none}.score-pieces canvas{position:absolute;left:0;top:0}.movers{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none}.movers .lit-note{position:absolute;overflow:visible}.movers .lit-focus,.movers .lit-focus *{fill:#2a5fab!important;stroke:#2a5fab!important}.movers .lit-other,.movers .lit-other *{fill:#9fb7da!important;stroke:#9fb7da!important}.score .lit-focus,.score .lit-focus *{fill:#2a5fab!important;stroke:#2a5fab!important}.score .lit-other,.score .lit-other *{fill:#9fb7da!important;stroke:#9fb7da!important}.player.one-line{height:100dvh;overflow:hidden;display:flex;flex-direction:column}.player.one-line .score-scroll{flex:1;min-height:0}.score-scroll.single-line{overflow:hidden;background:#fff;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.score-scroll.single-line .score-wrap{max-width:none;width:max-content;margin:0;will-change:transform}.player:not(.one-line) .score-wrap{margin-top:.6rem;padding-bottom:2rem;overflow:hidden}.dock{position:fixed;left:0;right:0;bottom:0;z-index:4;background:var(--surface);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.dock button,.sheet button,.picker button{min-height:0;border:none;background:none;padding:0;color:var(--fg);border-radius:0;font:inherit}.dock .progress{-webkit-appearance:none;appearance:none;display:block;width:100%;height:22px;margin:-11px 0 -9px;background:transparent;position:relative;z-index:1}.dock .progress::-webkit-slider-runnable-track{height:4px;background:linear-gradient(to right,var(--accent) var(--fill, 0%),var(--line) var(--fill, 0%))}.dock .progress::-moz-range-track{height:4px;background:var(--line)}.dock .progress::-moz-range-progress{height:4px;background:var(--accent)}.dock .progress::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);margin-top:-6px;border:2px solid #fff;box-shadow:0 1px 3px #00000040}.dock .progress::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid #fff;box-shadow:0 1px 3px #00000040}.dock-row{display:flex;align-items:center;gap:6px;height:62px;padding:0 10px 0 6px;max-width:46rem;margin:0 auto}.dock .back{width:40px;height:44px;flex:none;display:flex;align-items:center;justify-content:center;color:var(--muted);text-decoration:none}.dock .info{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:0 4px}.info-title{font-size:15px;font-weight:600;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info-meta{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.dock .own{height:44px;flex:none;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 12px;line-height:1.05}.own-tag{font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.own-name{font-size:16px;font-weight:700}.dock .play{width:52px;height:52px;flex:none;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #2a5fab59}.dock .settings{width:44px;height:44px;flex:none;border-radius:50%;color:var(--muted);display:flex;align-items:center;justify-content:center}.dock .settings:hover{background:var(--chip)}.dock .settings.on{background:var(--accent-soft);color:var(--accent)}.backdrop{position:fixed;inset:0;z-index:2;background:#0f141e29}.sheet{position:fixed;left:0;right:0;z-index:3;background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -10px 30px #141e321f;padding:8px 20px 6px;max-width:40rem;margin:0 auto}.handle{width:36px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}.section-label{font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.divider{height:1px;background:var(--line);margin:6px 0 12px}.divider+.section-label{margin-bottom:2px}.row-label{font-size:15px;white-space:nowrap}.segmented{display:grid;gap:2px;background:var(--chip);border-radius:999px;padding:3px}.segmented.modes{grid-template-columns:repeat(4,1fr)}.segmented.modes button{height:34px;font-size:13.5px;white-space:nowrap;padding:0 2px;border-radius:999px}.segmented.two{grid-template-columns:1fr 1fr;width:180px;height:40px}.segmented.two button{font-size:14px;border-radius:999px}.segmented button.on{background:#fff;color:var(--accent);font-weight:600;box-shadow:0 1px 3px #141e3226}.mode-hint{font-size:12.5px;color:var(--muted);text-align:center;margin:7px 0 2px}.others-row{display:flex;align-items:center;gap:14px;min-height:46px}.others-row input{flex:1;min-width:0;accent-color:var(--accent);margin:0}.others-value{width:40px;text-align:right;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.setting{display:flex;align-items:center;justify-content:space-between;min-height:50px}.stepper{width:180px;height:40px;display:grid;grid-template-columns:42px 1fr 42px;background:var(--chip);border-radius:999px;padding:3px}.stepper button{border-radius:999px;font-size:20px}.stepper button:hover:not(:disabled){background:#fff}.stepper button:disabled{opacity:.35}.stepper .value{display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.stepper button.value:hover{background:none}.picker-backdrop{position:fixed;inset:0;z-index:5;background:#0f141e66}.picker{position:fixed;left:0;right:0;bottom:0;z-index:6;background:#fff;border-radius:24px 24px 0 0;padding:10px 20px calc(36px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:6px;max-width:40rem;margin:0 auto}.picker h2{margin:0;font-size:21px;letter-spacing:-.01em}.picker p{margin:0 0 12px;font-size:14.5px;line-height:1.45;color:var(--muted)}.picker-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.picker-grid button{height:56px;border-radius:14px;background:var(--chip);font-size:18px;font-weight:600}.picker-grid button:hover{background:var(--accent-soft)}.picker-grid button.mine{background:var(--accent);color:#fff;font-weight:700}.hint-card{position:fixed;left:12px;right:12px;z-index:3;max-width:26rem;margin:0 auto;display:flex;align-items:center;gap:12px;padding:12px 12px 12px 16px;background:#fff;border-radius:16px;box-shadow:0 6px 24px #141e3229,0 0 0 1px var(--line)}.hint-card ul{flex:1;min-width:0;list-style:none;margin:0;padding:0;display:grid;gap:8px}.hint-card li{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.35;color:var(--muted)}.hint-card li .icon{flex:none;color:var(--accent);margin-top:-1px}.hint-card b{color:var(--fg);font-weight:600}.hint-card button{flex:none;height:36px;padding:0 16px;border:none;border-radius:999px;background:var(--accent-soft);color:var(--accent);font:inherit;font-size:14px;font-weight:600;min-height:0}.home h2{font-size:1.3rem;margin:1.6rem 0 .3rem}.open-songs{text-align:left;margin:1rem 0 0}.members{margin-top:2rem;padding-top:1.2rem;border-top:1px solid var(--line)}
