:root{--grey-1:#2c2c2c;--grey-2:#505050;--grey-3:#5d5d5d;--grey-4:#7e7e7e;--grey-5:#939094;--grey-6:#b6b6b6;--grey-7:#d2d2d2;--grey-8:#eaeaea;--grey-9:#fafafc;--mauve-1:#2a1f2e;--mauve-2:#3b2c45;--mauve-3:#483653;--mauve-4:#5f4a6a;--mauve-5:#806e8b;--mauve-6:#a69aae;--mauve-7:#c4b9ca;--mauve-8:#f2ecf4;--mauve-9:#fafafc;--purple-1:#260a28;--purple-2:#4b274f;--purple-3:#5e3462;--purple-4:#824e86;--purple-5:#8f5793;--purple-6:#b78bb9;--purple-7:#c4a3c7;--purple-8:#e3cde4;--purple-9:#fdeffd;--red-1:#4b2e2f;--red-2:#6b4242;--red-3:#7c4c4d;--red-4:#945b5a;--red-5:#ae696a;--red-6:#c28e8d;--red-7:#d2a6a7;--red-8:#e4c6c7;--red-9:#fcfafa;--green-1:#163220;--green-2:#2a4d38;--green-3:#3f674e;--green-4:#4e7c5f;--green-5:#619676;--green-6:#7faf91;--green-7:#9ec4ac;--green-8:#bddcc8;--green-9:#e8fcf0;--blue-1:#193b5b;--blue-2:#294d6c;--blue-3:#365878;--blue-4:#496a8c;--blue-5:#517393;--blue-6:#7a95b1;--blue-7:#8ca6bd;--blue-8:#adc0d3;--blue-9:#d6e4ef;--yellow-1:#484a13;--yellow-2:#4f5216;--yellow-3:#85832e;--yellow-4:#aeaa43;--yellow-5:#c4c04e;--yellow-6:#dbe37c;--yellow-7:#e3eb9d;--yellow-8:#f4f8c5;--yellow-9:#fcfde6;--bar:var(--mauve-1);--primary:var(--purple-4);--primary-strong:var(--purple-3);--action-ask:var(--purple-5);--action-open:var(--blue-5);--action-edit:var(--yellow-4);--accept:var(--green-4);--decline:var(--red-4);--page-bg:var(--grey-9);--card-bg:#fff;--text:var(--grey-1);--text-muted:var(--grey-4);--on-bar:var(--grey-9);--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/1.45 var(--sans);color:var(--text);background:var(--page-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}#root{background:var(--card-bg);max-width:480px;min-height:100svh;margin:0 auto}.hint-bubble{visibility:hidden;z-index:100;border:1px solid var(--mauve-5);background:var(--mauve-1);max-width:min(260px,100vw - 16px);color:var(--on-bar);pointer-events:none;border-radius:6px;padding:6px 10px;font-size:.8125rem;line-height:1.35;position:fixed;top:0;left:0;box-shadow:0 2px 8px #0003}.appbar{background:var(--bar);color:var(--on-bar)}.appbar-top{opacity:.85;justify-content:space-between;align-items:center;padding:6px 12px;font-size:12px;display:flex}.appbar-signout{color:var(--on-bar);font:inherit;cursor:pointer;background:0 0;border:0;padding:2px 4px}.appbar-title-row{align-items:center;gap:8px;padding:4px 12px 14px;display:flex}.appbar-back{color:var(--on-bar);font-size:28px;line-height:1;text-decoration:none}.appbar-title{margin:0;font-size:22px;font-weight:500}.song-meta{flex-wrap:wrap;align-items:baseline;column-gap:12px;display:flex}.song-tempo{white-space:nowrap;font-variant-numeric:tabular-nums}.detail{padding:0 0 24px}.detail-head{background:var(--mauve-2);color:var(--grey-9);text-align:center;padding:16px 12px}.detail-title{margin:0;font-size:20px;font-weight:500}.detail-type{opacity:.8;margin:2px 0 0}.detail-toggle{justify-content:center;gap:2px;padding:16px;display:flex}.toggle-btn{border:1px solid var(--grey-7);background:var(--grey-9);max-width:160px;color:var(--text-muted);font:inherit;cursor:pointer;flex:1 1 0;padding:10px}.toggle-btn:first-child{border-radius:20px 0 0 20px}.toggle-btn:last-child{border-radius:0 20px 20px 0}.toggle-btn.is-on{background:var(--purple-4);color:var(--grey-9);border-color:var(--purple-4)}.toggle-btn.is-on-block{background:var(--grey-4);color:var(--grey-9);border-color:var(--grey-4)}.detail-partner{text-align:center;padding:24px}.detail-partner-name{margin:10px 0 0;font-size:20px;font-weight:500}.detail-requests{padding:0 12px}.detail-subhead{color:var(--text-muted);font-size:15px}.detail-empty{text-align:center;color:var(--text-muted);padding:16px}.request-list{margin:0;padding:0;list-style:none}.request-item{border-bottom:1px solid var(--grey-8);align-items:center;gap:10px;padding:10px 0;display:flex}.request-body{flex-direction:column;flex:auto;min-width:0;display:flex}.request-name{font-weight:500}.request-actions{gap:6px;display:flex}.btn-accept,.btn-decline{font:inherit;color:var(--grey-9);cursor:pointer;border:0;border-radius:6px;padding:8px 12px}.btn-accept{background:var(--accept)}.btn-decline{background:var(--decline)}.find-partner{text-align:center;background:var(--primary);max-width:260px;color:var(--grey-9);border-radius:24px;margin:20px auto 0;padding:12px;font-weight:500;text-decoration:none;display:block}.detail-meta{justify-content:center}.partner-card-link{color:var(--primary);margin-top:6px;display:inline-block}.cancel-dance{border:1px solid var(--decline);color:var(--decline);font:inherit;cursor:pointer;background:0 0;border-radius:24px;margin:24px auto 0;padding:10px 18px;display:block}.cancel-confirm{margin-top:24px}.cancel-q{margin:0 0 12px}.cancel-actions{justify-content:center;gap:8px;display:flex}.btn-keep{border:1px solid var(--grey-6);background:var(--card-bg);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:8px 12px}.cancel-notice{background:var(--mauve-8);border-radius:6px;margin:16px 0 0;padding:12px}.cancel-notice-text{margin:0 0 6px}.cancel-notice a{color:var(--primary)}.login{background:var(--bar);min-height:100svh;color:var(--on-bar);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.login-title{margin:0;font-size:40px;font-weight:500}.login-event{opacity:.85;margin:0}.login-google{background:var(--primary);color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:24px;margin-top:16px;padding:12px 20px;font-weight:500}.search{padding:12px}.search-song{color:var(--text-muted);margin:0 0 12px;font-weight:500}.people-list{margin:0 0 24px;padding:0;list-style:none}.person-card{border-bottom:1px solid var(--grey-8);align-items:center;gap:10px;padding:10px 0;display:flex}.person-meta{flex-direction:column;flex:auto;min-width:0;display:flex}.person-name{font-weight:500}.person-actions{flex:none;align-items:center;gap:6px;display:flex}.person-open{background:var(--action-open);width:36px;height:36px;color:var(--grey-9);cursor:pointer;border:0;border-radius:50%;flex:none;font-size:18px}.person-ask{background:var(--action-ask);color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:20px;padding:8px 14px}.invite{border-top:2px dotted var(--purple-6);padding-top:16px}.invite-head{margin:0 0 8px;font-size:16px}.invite-row{gap:6px;margin-top:6px;display:flex}.invite-row input{border:1px solid var(--grey-7);font:inherit;border-radius:6px;flex:auto;padding:10px}.invite-row button{background:var(--primary);color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:6px;padding:10px 14px}.dance-row{border-bottom:1px solid var(--grey-8);align-items:center;gap:10px;padding:8px 12px;display:flex}.dance-row.is-blocked{opacity:.45}.dance-num{background:var(--mauve-2);width:28px;height:28px;color:var(--grey-9);border-radius:4px;flex:none;place-items:center;font-size:14px;display:grid}.dance-marker{text-align:center;width:16px;color:var(--purple-4);flex:none}.dance-main{min-width:0;color:var(--text);flex-direction:column;flex:auto;text-decoration:none;display:flex}.dance-title{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.dance-type{color:var(--text-muted);font-size:13px}.dance-action{flex:none}.dance-icon{width:32px;height:32px;color:var(--grey-9);border-radius:50%;place-items:center;font-size:16px;text-decoration:none;display:grid}.dance-icon.is-open{background:var(--action-open)}.dance-icon.is-sent{background:var(--action-ask)}.dance-icon.is-blocked{background:var(--grey-5)}.dance-partner{color:var(--text);align-items:center;gap:6px;text-decoration:none;display:flex}.dance-partner-name{text-align:right;font-size:13px;font-weight:500}.profile-header{border-bottom:1px solid var(--grey-8);align-items:center;gap:12px;padding:14px 12px;display:flex}.profile-link{color:var(--text);text-decoration:none}.profile-chevron{color:var(--text-muted);font-size:28px}.profile-meta{flex:auto;min-width:0}.profile-name{margin:0;font-size:22px;font-weight:500}.dance-list,.dance-block-rows{margin:0;padding:0;list-style:none}.dance-break{border-top:2px dotted var(--purple-6);height:0;margin:10px 24px}.ask-btn{background:var(--action-ask);color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:20px;padding:8px 14px}.taken-tag{background:var(--grey-7);color:var(--grey-2);border-radius:20px;padding:6px 12px;font-size:13px;display:inline-block}.accounts{padding:0 12px 24px}.accounts-head{color:var(--text-muted);font-size:15px}.account-list{margin:0;padding:0;list-style:none}.account-row{border-bottom:1px solid var(--grey-8);align-items:center;gap:12px;padding:12px 0;display:flex}.account-meta{flex-direction:column;flex:auto;min-width:0;display:flex}.account-name{font-weight:500}.account-status{color:var(--text-muted);font-size:13px}.account-row.is-connected .account-status{color:var(--accept)}.account-why{color:var(--text-muted);font-size:13px}.account-connect,.account-disconnect{font:inherit;cursor:pointer;border-radius:20px;flex:none;padding:8px 14px}.account-connect{background:var(--primary);color:var(--grey-9);border:0}.account-disconnect{border:1px solid var(--grey-6);background:var(--card-bg);color:var(--text)}.account-disconnect:disabled{color:var(--grey-6);border-color:var(--grey-7);cursor:not-allowed}.welcome{background:var(--mauve-8);padding:16px 12px}.welcome-head{margin:0 0 6px;font-size:20px;font-weight:500}.welcome-text{margin:0}.welcome-done{padding:0 12px 32px}.welcome-continue{background:var(--blue-2);width:100%;color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:24px;padding:14px;font-weight:500;display:block}.request{padding:16px 12px}.request-head{border-bottom:1px solid var(--grey-8);align-items:center;gap:12px;padding-bottom:16px;display:flex}.request-name{margin:0;font-size:20px;font-weight:500}.request-song{color:var(--text-muted);margin:2px 0 0}.request-form{flex-direction:column;gap:8px;padding-top:16px;display:flex}.send-btn{background:var(--blue-2);color:var(--grey-9);font:inherit;cursor:pointer;border:0;border-radius:24px;margin-top:8px;padding:14px;font-weight:500}.request-confirm{text-align:center;padding:24px 0}.request-confirm:focus{outline:none}.confirm-text{color:var(--green-3);font-size:20px;font-weight:500}.confirm-links{flex-direction:column;gap:10px;margin-top:16px;display:flex}.confirm-links a{color:var(--primary-strong)}
