:root{--bg:#f7f5f0;--card:#fff;--ink:#1d1d1f;--muted:#6e6e73;--line:#e6e2d9;--accent:#3d5afe;--accent-ink:#fff;--soft:#eef0ff;--g:#1f9d55;--y:#d99a00;--r:#d93025;--radius:18px;--safe-b:env(safe-area-inset-bottom);--safe-t:env(safe-area-inset-top);color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;height:100%;margin:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0}input,select{font:inherit}.hidden{display:none!important}.home{max-width:640px;padding:calc(24px + var(--safe-t)) 20px calc(40px + var(--safe-b));margin:0 auto}.brand{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.brand h1{letter-spacing:-.02em;margin:0;font-size:30px}.brand h1 span{color:var(--accent)}.icon-btn{border-radius:50%;place-items:center;width:44px;height:44px;font-size:20px;display:grid}.icon-btn:active{background:var(--line)}.actions{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:28px;display:grid}.action{background:var(--card);border-radius:var(--radius);text-align:left;box-shadow:0 1px 0 var(--line), 0 6px 20px #0000000a;flex-direction:column;justify-content:space-between;min-height:116px;padding:20px 16px;display:flex}.action.primary{background:var(--accent);color:var(--accent-ink)}.action .ic{font-size:28px}.action b{font-size:18px}.action small{opacity:.75;margin-top:2px;display:block}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 4px 10px;font-size:13px}.list{flex-direction:column;gap:8px;display:flex}.item{background:var(--card);text-align:left;border-radius:14px;align-items:center;gap:12px;width:100%;min-height:64px;padding:14px 16px;display:flex}.item .t{flex:1;min-width:0}.item .t b{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.item .t small{color:var(--muted)}.empty{color:var(--muted);text-align:center;background:var(--card);border-radius:14px;padding:28px 10px}.link{color:var(--accent);padding:10px 4px;font-weight:600}.screen{flex-direction:column;display:flex;position:fixed;inset:0}.topbar{padding:calc(6px + var(--safe-t)) 8px 6px;background:var(--bg);border-bottom:1px solid var(--line);align-items:center;gap:4px;display:flex}.topbar .title{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:16px;font-weight:600;overflow:hidden}.topbar .sub{color:var(--muted);font-size:12px;font-weight:400;display:block}.paper{-webkit-overflow-scrolling:touch;background:#fff;flex:1;overflow-y:auto}.paper #osmd{padding-bottom:20px}.paper.editing{outline:3px solid var(--soft);outline-offset:-3px}.pill{left:50%;top:calc(64px + var(--safe-t));background:var(--ink);color:#fff;z-index:5;border-radius:999px;padding:8px 16px;font-size:14px;position:absolute;transform:translate(-50%);box-shadow:0 4px 14px #0000002e}.dock{background:var(--card);border-top:1px solid var(--line);padding:10px 14px calc(10px + var(--safe-b));flex-direction:column;gap:10px;display:flex;box-shadow:0 -6px 20px #0000000a}.row{align-items:center;gap:10px;display:flex}.play{background:var(--accent);color:#fff;border-radius:50%;flex:none;place-items:center;width:60px;height:60px;font-size:24px;display:grid;box-shadow:0 6px 16px #3d5afe59}.play:active{transform:scale(.96)}.tempo{flex-direction:column;flex:1;gap:2px;display:flex}.tempo label{color:var(--muted);justify-content:space-between;font-size:12px;display:flex}.tempo label b{color:var(--ink);font-variant-numeric:tabular-nums}input[type=range]{width:100%;height:36px;accent-color:var(--accent)}.chips{scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.chip{background:var(--bg);border-radius:999px;flex:none;align-items:center;gap:6px;height:44px;padding:0 16px;font-size:15px;font-weight:600;display:flex}.chip.on{background:var(--soft);color:var(--accent)}.chip.solid{background:var(--accent);color:#fff}.chip.danger{color:var(--r)}.chip:disabled{opacity:.4}.stepper{background:var(--bg);border-radius:999px;align-items:center;gap:4px;padding:2px;display:flex}.stepper button{border-radius:50%;width:40px;height:40px;font-size:20px}.stepper span{text-align:center;font-variant-numeric:tabular-nums;min-width:34px;font-weight:600}.lbl{color:var(--muted);font-size:13px}.grid-btns{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.grid-btns .chip{justify-content:center;padding:0 6px}.dur .chip{padding:0 12px;font-size:22px}.scrim{z-index:20;background:#00000047;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:86vh;padding:10px 18px calc(22px + var(--safe-b));border-radius:22px 22px 0 0;overflow-y:auto}.sheet .grab{background:var(--line);border-radius:3px;width:40px;height:5px;margin:0 auto 12px}.sheet h2{margin:4px 0 14px;font-size:20px}.sheet p{color:var(--muted);margin:6px 0 14px;line-height:1.4}.opt{background:var(--card);border-radius:14px;align-items:center;gap:12px;margin-bottom:8px;padding:14px;display:flex}.opt input[type=checkbox]{width:24px;height:24px;accent-color:var(--accent)}.opt div{flex:1}.opt small{color:var(--muted);display:block}.big{background:var(--accent);color:#fff;border-radius:16px;width:100%;height:54px;margin-top:8px;font-size:17px;font-weight:700}.big.ghost{background:var(--card);color:var(--ink)}.field{margin-bottom:12px;display:block}.field span{color:var(--muted);margin-bottom:4px;font-size:13px;display:block}.field input{border:1px solid var(--line);background:#fff;border-radius:12px;width:100%;height:48px;padding:0 12px}.vrow{background:var(--card);border-radius:14px;margin-bottom:8px;padding:12px 14px}.vrow.cur{outline:2px solid var(--accent)}.vrow .h{justify-content:space-between;gap:8px;display:flex}.vrow small{color:var(--muted)}.vrow .chips{margin-top:10px}.vrow .chip{height:38px;font-size:14px}.busy{z-index:30;text-align:center;background:#f7f5f0eb;place-items:center;padding:30px;display:grid;position:fixed;inset:0}.spinner{border:4px solid var(--soft);border-top-color:var(--accent);border-radius:50%;width:46px;height:46px;margin:0 auto 16px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{left:50%;bottom:calc(150px + var(--safe-b));background:var(--ink);color:#fff;z-index:40;border-radius:14px;max-width:90vw;padding:12px 18px;font-size:15px;position:fixed;transform:translate(-50%)}.meter{background:var(--bg);border-radius:14px;justify-content:space-between;align-items:center;min-height:48px;padding:8px 14px;display:flex}.meter b{font-variant-numeric:tabular-nums;font-size:20px}.score-big{letter-spacing:-.03em;font-size:44px;font-weight:800}.mchips{flex-wrap:wrap;gap:6px;display:flex}.mchip{color:#fff;border-radius:10px;min-width:46px;height:40px;font-size:14px;font-weight:700}.mchip.g{background:var(--g)}.mchip.y{background:var(--y)}.mchip.r{background:var(--r)}.stats{color:var(--muted);gap:16px;display:flex}.stats b{color:var(--ink)}.brand-btns{align-items:center;gap:4px;display:flex}.acct-btn{background:var(--card);height:40px;color:var(--accent);border-radius:20px;padding:0 14px;font-weight:600;box-shadow:0 1px 3px #0000000f}.acct-btn:has(.avatar){box-shadow:none;background:0 0;padding:0}.avatar{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:40px;height:40px;font-weight:700;display:grid}.section-title .sync{text-transform:none;letter-spacing:0;opacity:.7;margin-left:6px;font-weight:500}.or{text-align:center;color:#888;margin:18px 0 2px;font-size:14px}.muted{color:#777;font-size:14px}.link.danger{color:#c62828;margin:14px auto 0;display:block}.link-row{background:var(--card);width:100%;color:var(--accent);border-radius:14px;justify-content:center;align-items:center;gap:8px;margin:12px 0 14px;padding:12px;font-weight:600;display:flex;box-shadow:0 1px 3px #0000000f}.preview{border:1px solid var(--line);background:#fff;border-radius:14px;place-items:center;height:340px;display:grid;overflow:hidden}.preview iframe{border:0;width:100%;height:100%}.preview img{object-fit:contain;max-width:100%;max-height:100%}.file-meta{word-break:break-word}
