:root{--bg: #f2f2f7;--bg-elevated: #ffffff;--text: #1c1c1e;--text-secondary: #636366;--separator: rgba(60, 60, 67, .12);--accent: #10b981;--accent-pressed: #059669;--danger: #dc2626;--card-shadow: 0 4px 24px rgba(0, 0, 0, .06);--nav-h: 56px;--font: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--display: "Playfair Display", Georgia, serif}html[data-theme=dark]{--bg: #000000;--bg-elevated: #1c1c1e;--text: #f5f5f7;--text-secondary: #98989d;--separator: rgba(84, 84, 88, .65);--card-shadow: 0 4px 24px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}#app{min-height:100dvh;padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px))}a{color:var(--accent)}.config-error{padding:2rem;max-width:36rem;margin:0 auto}.config-error h1{font-family:var(--display);font-size:1.5rem}.auth-screen{min-height:100dvh;display:flex;flex-direction:column;align-items:stretch;justify-content:center;padding:1.5rem;background:linear-gradient(145deg,#241c3d,#141029 45%,#1a1233);color:#fff}.auth-card{max-width:400px;margin:0 auto;width:100%}.auth-brand{text-align:center;margin-bottom:2rem}.auth-brand h1{font-family:var(--display);font-size:1.75rem;font-weight:700;margin:.5rem 0 0}.auth-brand p{margin:.35rem 0 0;opacity:.75;font-size:.95rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:1rem 1.25rem;border:none;border-radius:14px;font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer;transition:transform .15s ease,opacity .15s ease}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-google{background:#ffffff24;color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12)}.btn-primary{background:var(--accent);color:#fff}.btn-ghost{background:var(--bg-elevated);color:var(--text);border:1px solid var(--separator)}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.auth-divider{display:flex;align-items:center;gap:1rem;margin:1.25rem 0;color:#ffffff73;font-size:.8rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#ffffff26}.auth-form input{width:100%;padding:.9rem 1rem;margin-bottom:.65rem;border-radius:12px;border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#fff;font-size:1rem}.auth-form input::placeholder{color:#ffffff73}.auth-error{color:#fca5a5;font-size:.85rem;text-align:center;margin-top:.75rem}.consent-screen{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg)}.consent-scroll{flex:1;overflow-y:auto;padding:1.25rem 1.25rem 1rem;-webkit-overflow-scrolling:touch}.consent-scroll h1{font-family:var(--display);font-size:1.5rem;margin:0 0 .75rem}.consent-scroll p,.consent-scroll li{color:var(--text-secondary);line-height:1.55;font-size:.95rem}.consent-scroll ul{padding-left:1.2rem}.consent-links{display:flex;flex-wrap:wrap;gap:1rem;margin:.75rem 0 1rem}.consent-footer{padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom));border-top:1px solid var(--separator);background:var(--bg-elevated)}.screen{max-width:720px;margin:0 auto;min-height:calc(100dvh - var(--nav-h) - env(safe-area-inset-bottom))}.screen-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem .5rem;position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:1px solid var(--separator)}.screen-header h1{font-size:1.15rem;font-weight:700;margin:0}.screen-body{padding:.75rem 1rem 1.5rem}.bottom-nav{position:fixed;left:0;right:0;bottom:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;justify-content:space-around;align-items:flex-start;padding-top:6px;background:var(--bg-elevated);border-top:1px solid var(--separator);z-index:20}.bottom-nav button{flex:1;max-width:88px;border:none;background:none;padding:4px 4px 0;font-size:.65rem;color:var(--text-secondary);font-family:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px}.bottom-nav button.active{color:var(--accent);font-weight:600}.bottom-nav .nav-icon{font-size:1.35rem;line-height:1}.card{background:var(--bg-elevated);border-radius:16px;overflow:hidden;margin-bottom:1rem;box-shadow:var(--card-shadow)}.card-header{padding:.9rem 1rem;border-bottom:1px solid var(--separator)}.card-header h2{margin:0;font-size:1.05rem;font-weight:700}.card-header .sub{margin:.2rem 0 0;font-size:.85rem;color:var(--text-secondary)}.card-body{padding:.35rem 0}.row{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;gap:.75rem;border-bottom:1px solid var(--separator)}.row:last-child{border-bottom:none}.badge{font-size:.72rem;font-weight:700;padding:.25rem .6rem;border-radius:999px;text-transform:capitalize;background:var(--separator);color:var(--text)}.badge.accepted{background:var(--accent);color:#fff}.badge.declined{opacity:.7}.pill-you{font-size:.65rem;font-weight:700;padding:.15rem .45rem;border-radius:6px;background:var(--accent);color:#fff;margin-left:.35rem}.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--text-secondary)}.empty-state h2{color:var(--text);font-size:1.1rem;margin:0 0 .5rem}.toolbar-btn{border:none;background:none;color:var(--accent);font-weight:600;font-size:.95rem;font-family:inherit;cursor:pointer;padding:.35rem .5rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:100;display:flex;align-items:flex-end;justify-content:center}@media(min-width:540px){.modal-backdrop{align-items:center}}.modal{background:var(--bg-elevated);color:var(--text);width:100%;max-width:480px;max-height:90dvh;overflow:hidden;display:flex;flex-direction:column;border-radius:16px 16px 0 0}@media(min-width:540px){.modal{border-radius:16px}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1rem;border-bottom:1px solid var(--separator)}.modal-head h2{margin:0;font-size:1.05rem}.modal-body{padding:1rem;overflow-y:auto;flex:1}.modal-body label{display:block;font-size:.8rem;font-weight:600;color:var(--text-secondary);margin:.65rem 0 .25rem}.modal-body input,.modal-body select,.modal-body textarea{width:100%;padding:.65rem .75rem;border-radius:10px;border:1px solid var(--separator);background:var(--bg);color:var(--text);font-size:1rem;font-family:inherit}.modal-footer{padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));border-top:1px solid var(--separator);display:flex;gap:.5rem}.modal-footer .btn{flex:1}.chat-wrap{display:flex;flex-direction:column;height:calc(100dvh - var(--nav-h) - env(safe-area-inset-bottom) - 52px);max-height:640px}.chat-msgs{flex:1;overflow-y:auto;padding:.75rem;-webkit-overflow-scrolling:touch}.chat-group{margin-bottom:1rem}.chat-group-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}.chat-avatar{width:32px;height:32px;border-radius:50%;background:var(--separator);object-fit:cover;flex-shrink:0}.chat-bubble{background:var(--bg-elevated);padding:.55rem .75rem;border-radius:14px;margin-bottom:.35rem;max-width:92%;box-shadow:var(--card-shadow);font-size:.95rem;line-height:1.45;word-break:break-word}.chat-bubble.me{margin-left:auto;background:var(--accent);color:#fff}.chat-bubble .meta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.35rem;font-size:.72rem;opacity:.85}.chat-bubble.me .meta{opacity:.9}.reaction-row{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}.reaction-chip{border:none;background:#0000000f;border-radius:999px;padding:.15rem .45rem;font-size:.8rem;cursor:pointer;font-family:inherit}html[data-theme=dark] .reaction-chip{background:#ffffff1a}.chat-input-bar{display:flex;gap:.5rem;padding:.5rem .75rem;padding-bottom:calc(.5rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--separator);background:var(--bg-elevated);align-items:flex-end}.chat-input-bar textarea{flex:1;min-height:40px;max-height:120px;padding:.55rem .75rem;border-radius:12px;border:1px solid var(--separator);background:var(--bg);color:var(--text);font-family:inherit;font-size:.95rem;resize:none}.emoji-bar{display:flex;gap:.35rem;padding:.25rem .75rem .35rem;overflow-x:auto;background:var(--bg-elevated);border-top:1px solid var(--separator)}.emoji-bar button{border:none;background:none;font-size:1.35rem;padding:.15rem;cursor:pointer;flex-shrink:0}.search-input{width:100%;padding:.65rem .85rem;border-radius:12px;border:1px solid var(--separator);background:var(--bg-elevated);color:var(--text);font-size:1rem;margin-bottom:.75rem}.lyrics-block{white-space:pre-wrap;font-size:.95rem;line-height:1.55;color:var(--text-secondary)}.lyrics-section{margin-bottom:1rem}.lyrics-section h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin:0 0 .35rem}.profile-top{display:flex;gap:1rem;align-items:center;padding:1rem 0}.profile-photo-btn{width:72px;height:72px;border-radius:50%;border:2px solid var(--separator);overflow:hidden;padding:0;cursor:pointer;background:var(--bg);flex-shrink:0}.profile-photo-btn img{width:100%;height:100%;object-fit:cover}.section-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin:1.25rem 0 .5rem;padding:0 .25rem}.list-link{display:block;width:100%;text-align:left;padding:.85rem 1rem;border:none;background:var(--bg-elevated);color:var(--text);font-size:1rem;font-family:inherit;border-bottom:1px solid var(--separator);cursor:pointer;border-radius:0}.list-link:first-of-type{border-radius:12px 12px 0 0}.list-link:last-of-type{border-radius:0 0 12px 12px;border-bottom:none}.setlist-song{padding:.6rem 1rem;border-bottom:1px solid var(--separator);display:flex;align-items:baseline;gap:.65rem}.setlist-song:last-child{border-bottom:none}.setlist-song .pos{font-weight:800;color:var(--accent);min-width:1.5rem}.spinner{display:inline-block;width:1.25rem;height:1.25rem;border:2px solid var(--separator);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.font-loading{font-family:var(--font)}
