:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1115;--bg-raised:#171a21;--bg-card:#1c2029;--bg-input:#11141a;--border:#2a2f3a;--border-light:#353b48;--text:#e6e8ee;--text-dim:#9aa1b1;--text-faint:#6b7280;--accent:#7c5cff;--accent-2:#b06bff;--accent-bg:#7c5cff29;--good:#3fb27f;--warn:#e0a64b;--danger:#e5604d;--always:#b06bff;--radius:10px;--radius-sm:7px;--shadow:0 6px 24px #00000059;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:15px/1.5 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1{letter-spacing:-.4px;margin:0;font-size:26px}h2{margin:0;font-size:18px}p{margin:0}.muted{color:var(--text-dim)}.spacer{flex:1}.btn{font:inherit;border:1px solid var(--border-light);background:var(--bg-raised);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;padding:8px 14px;font-weight:600;transition:border-color .15s,background .15s,transform 50ms}.btn:hover{border-color:var(--accent)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-2)}.btn.ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--bg-raised);border-color:var(--border);color:var(--text)}.btn.wide{width:100%}.btn.tiny{border-radius:6px;padding:3px 8px;font-size:12px}.icon-btn{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 7px;font-size:15px;line-height:1}.icon-btn:hover{background:var(--bg-raised);color:var(--text)}.icon-btn.danger:hover{color:var(--danger);background:#e5604d1f}.app{flex-direction:column;max-width:980px;min-height:100svh;margin:0 auto;display:flex}.app-loading{min-height:100svh;color:var(--text-dim);place-items:center;display:grid}.boot-overlay{z-index:100;background:var(--bg);position:fixed;inset:0}.boot-screen{flex-direction:column;justify-content:center;align-items:center;gap:26px;min-height:100svh;display:flex;position:relative}.boot-maker{bottom:calc(28px + env(safe-area-inset-bottom));letter-spacing:.4px;color:var(--text-faint);justify-content:center;align-items:center;gap:8px;font-size:12px;font-weight:600;animation:.35s ease-out boot-in;display:flex;position:absolute;left:0;right:0}.boot-maker img{width:18px;height:18px}.boot-logo{width:140px;height:140px;animation:.35s ease-out boot-in;overflow:hidden}.boot-logo.shape-wide{width:220px;height:124px}.boot-logo img{object-fit:cover;width:100%;height:100%}.boot-spinner{border:2px solid var(--border-light);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite boot-spin}@keyframes boot-in{0%{opacity:0;transform:scale(.94)}}@keyframes boot-spin{to{transform:rotate(360deg)}}.app-bar{z-index:10;padding:12px 18px;padding-top:calc(12px + env(safe-area-inset-top));background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;display:flex;position:sticky;top:0}.brand{font:inherit;letter-spacing:-.3px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:9px;margin:-3px;padding:3px;font-weight:700;display:flex}.brand:hover{background:var(--bg-raised)}.brand-logo{background:linear-gradient(135deg, var(--accent), var(--accent-2));flex:none;place-items:center;width:30px;height:30px;display:grid;overflow:hidden}.brand-logo img{object-fit:cover;width:100%;height:100%}.brand-mark{color:#fff;font-size:16px}.brand-wrap{position:relative}.brand-caret{color:var(--text-dim);margin-left:1px;font-size:13px}.menu-backdrop{z-index:40;position:fixed;inset:0}.band-menu{z-index:41;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);min-width:230px;max-width:320px;box-shadow:var(--shadow);flex-direction:column;gap:1px;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);left:0}.band-menu-item{font:inherit;text-align:left;color:var(--text);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:8px 10px;font-size:14px;display:flex}.band-menu-item:hover{background:var(--bg-raised)}.band-menu-item.active{font-weight:600}.band-menu-logo{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;border-radius:6px;flex:none;place-items:center;width:26px;height:26px;font-size:13px;display:grid;overflow:hidden}.band-menu-logo img{object-fit:cover;width:100%;height:100%}.band-menu-name{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.band-menu-check{color:var(--accent);font-weight:700}.band-menu-sep{background:var(--border);height:1px;margin:5px 4px}.band-menu-account{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;padding:4px 10px 2px;font-size:12px;overflow:hidden}.shape-circle{border-radius:50%}.shape-square{border-radius:7px}.shape-wide{border-radius:7px;width:52px}.backend{text-transform:uppercase;letter-spacing:.5px;border:1px solid var(--border-light);color:var(--text-dim);border-radius:20px;padding:2px 7px;font-size:10px;font-weight:700}.backend.cloud{color:var(--good);border-color:#3fb27f66}.tabs{background:var(--bg-raised);border:1px solid var(--border);border-radius:9px;gap:2px;padding:3px;display:flex}.tab{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:7px;align-items:center;gap:7px;padding:6px 13px;font-weight:600;display:inline-flex}.tab-icon{flex:none;width:15px;height:15px}.tab.active{background:var(--accent-bg);color:var(--text)}.app-main{flex:1;padding:22px 18px 60px}.error-banner{border-radius:var(--radius-sm);color:#f0b4aa;background:#e5604d1f;border:1px solid #e5604d66;justify-content:space-between;align-items:center;gap:12px;margin:10px 18px 0;padding:10px 14px;display:flex}.view-head{align-items:center;gap:12px;margin-bottom:18px;display:flex}.view-head h1{margin-bottom:2px}.view-head>.btn,.view-head>.icon-btn{margin-left:auto}.view-head>.btn~.btn,.view-head>.btn~.icon-btn{margin-left:0}.toolbar{gap:10px;margin-bottom:14px;display:flex}.search{flex:1}.sort{color:var(--text-dim);align-items:center;gap:6px;font-size:13px;display:flex}input,select,textarea{font:inherit;color:var(--text);background:var(--bg-input);border:1px solid var(--border-light);border-radius:var(--radius-sm);padding:8px 11px}select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%239aa1b1' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:34px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}input.invalid{border-color:var(--danger)}textarea{resize:vertical}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);overflow-x:auto}.songs-table{border-collapse:collapse;width:100%;font-size:14px}.songs-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px;font-size:11px;font-weight:700}.songs-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 12px}.songs-table tr:last-child td{border-bottom:none}.songs-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.col-title{width:100%;min-width:180px}.link-title{color:var(--text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-weight:600}.link-title:hover{color:var(--accent-2)}.artist{color:var(--text-faint);font-size:12px;display:block}.benched{opacity:.5}.col-actions{white-space:nowrap;text-align:right}.col-actions .btn{margin-right:4px}.empty{text-align:center;color:var(--text-faint);padding:24px}.legend{margin-top:10px;font-size:12px}.score{font-variant-numeric:tabular-nums;background:var(--bg-raised);border-radius:5px;padding:1px 7px;font-weight:700}.score-always{color:var(--always);background:#b06bff24}.score-never{color:var(--text-faint)}.priority-control{gap:3px;display:inline-flex}.priority-control .pri{border:1px solid var(--border-light);background:var(--bg-input);width:26px;height:26px;color:var(--text-faint);cursor:pointer;border-radius:6px;font-size:12px;font-weight:700}.priority-control.sm .pri{width:22px;height:22px}.priority-control .pri:hover{border-color:var(--accent)}.priority-control .pri.active{color:#fff;border-color:#0000}.pri-0.active{background:var(--text-faint)}.pri-1.active{background:#4b6bb0}.pri-2.active{background:#3f8db2}.pri-3.active{background:var(--always)}.pri-badge{background:var(--bg-raised);color:var(--text-dim);white-space:nowrap;border-radius:20px;padding:2px 8px;font-size:11px;font-weight:700}.pri-badge.pri-3{color:var(--always);background:#b06bff24}.pri-badge.pri-0{color:var(--text-faint)}.practice-stepper{background:var(--bg-card);border:1px solid var(--border);border-radius:30px;align-items:center;gap:8px;margin-left:auto;padding:5px 10px;display:flex}.stepper-label{color:var(--text-dim);font-size:12px}.practice-num{font-variant-numeric:tabular-nums;text-align:center;min-width:28px;font-size:20px}.practice-stepper .icon-btn{border:1px solid var(--border-light);border-radius:50%;width:28px;font-size:18px}.plan-bar{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:12px 14px;display:flex}.plan-size{color:var(--text-dim);align-items:center;gap:8px;font-size:13px;display:flex}.plan-size input{text-align:center;width:64px}.plan-actions{gap:8px;display:flex}.ranked tr.below-cut{opacity:.42}.ranked tr.in-plan .rank-num{color:var(--accent-2);font-weight:700}.ranked tr.in-plan{border-left:2px solid var(--accent)}.setlist-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.setlist-card{text-align:left;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;color:var(--text);padding:14px 16px}.setlist-card:hover{border-color:var(--accent)}.card-title{margin-bottom:3px;font-size:16px;font-weight:700}.card-sub{font-size:12px}.card-stats{color:var(--text-dim);gap:12px;margin-top:10px;font-size:13px;display:flex}.empty-state{text-align:center;border:1px dashed var(--border-light);border-radius:var(--radius);padding:60px 20px}.setlist-meta{flex-direction:column;gap:12px;margin-bottom:14px;display:flex}.setlist-title-input{background:0 0;border:1px solid #0000;width:100%;padding:6px 8px;font-size:22px;font-weight:700}.setlist-title-input:hover{border-color:var(--border)}.setlist-summary{color:var(--text-dim);margin-bottom:14px;font-size:14px}.setlist-summary strong{color:var(--text)}.setlist-items{flex-direction:column;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.setlist-row{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:8px 10px;display:flex}.setlist-row.dragging{border-color:var(--accent);box-shadow:var(--shadow)}.drag-handle{cursor:grab;color:var(--text-faint);-webkit-user-select:none;user-select:none;font-size:18px;line-height:1}.drag-handle:active{cursor:grabbing}.row-num{font-variant-numeric:tabular-nums;color:var(--text-faint);text-align:right;width:22px;font-weight:700}.row-main{flex:1;min-width:0}.row-title{font-weight:600}.row-note{width:100%;color:var(--text-dim);background:0 0;border:1px solid #0000;margin-top:4px;padding:2px 4px;font-size:12px}.row-note:hover{border-color:var(--border)}.row-note:focus{background:var(--bg-input)}.row-meta{flex-wrap:wrap;justify-content:flex-end;gap:5px;display:flex}.chip{font-variant-numeric:tabular-nums;background:var(--bg-raised);color:var(--text-dim);white-space:nowrap;border-radius:5px;padding:2px 7px;font-size:11px}.add-songs{margin-top:6px}.picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);overflow:hidden}.picker-head{border-bottom:1px solid var(--border);gap:8px;padding:10px;display:flex}.picker-head .search{flex:1}.picker-list{max-height:300px;margin:0;padding:6px;list-style:none;overflow-y:auto}.picker-item{width:100%;color:var(--text);cursor:pointer;font:inherit;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 9px;display:flex}.picker-item:hover{background:var(--bg-raised)}.picker-item .plus{color:var(--accent-2);font-weight:700}.picker-item span:nth-child(2){flex:1}.pad{padding:12px}.modal-backdrop{z-index:100;background:#0000008c;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{background:var(--bg-raised);border:1px solid var(--border-light);border-radius:var(--radius);width:100%;max-width:460px;box-shadow:var(--shadow);flex-direction:column;max-height:90svh;display:flex}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.modal-body{padding:16px;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.form{flex-direction:column;gap:12px;display:flex}.field{flex-direction:column;gap:5px;display:flex}.field>span{color:var(--text-dim);font-size:12px;font-weight:600}.field-row{gap:12px;display:flex}.field-row .field{flex:1;min-width:0}.hint{color:var(--text-faint);font-size:11px}.summary-line{text-align:center;margin-bottom:18px;font-size:13px}.tonight-list,.tonight-block{flex-direction:column;display:flex}.tonight-song{text-align:center;padding:11px 4px}.t-title{font-size:clamp(30px,5.5vw,42px);font-weight:700;line-height:1.15}.t-meta{color:var(--text-faint);margin-top:3px;font-size:13px}.tonight-sep{text-align:center;color:var(--text-faint);padding:14px 0;font-style:italic}.live-overlay{z-index:200;padding:calc(26px + env(safe-area-inset-top)) 16px calc(40px + env(safe-area-inset-bottom));background:#000;position:fixed;inset:0;overflow-y:auto}.live-exit{top:calc(6px + env(safe-area-inset-top));z-index:201;color:#555;cursor:pointer;background:0 0;border:none;padding:10px;font-size:22px;position:fixed;right:8px}.live-overlay .t-title{color:#fff;font-size:clamp(34px,7vw,54px)}.live-overlay .t-meta{color:#6e6e6e;font-size:14px}.live-overlay .tonight-sep{color:#5a5a5a}.live-overlay .tonight-song{padding:14px 4px}.log-rehearsal{text-align:center;flex-direction:column;align-items:center;gap:8px;margin-top:30px;display:flex}.log-rehearsal .btn{max-width:420px}.rehearsal-strip{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;padding:10px 12px;display:flex}.from-ranking{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;font-size:13px;display:flex}.fr-controls{align-items:center;gap:8px;display:flex}.fr-top{color:var(--text-dim);align-items:center;gap:6px;display:inline-flex}.from-ranking input{text-align:center;width:58px}.setlist-card.is-tonight{border-color:var(--accent)}.setlist-card-wrap{display:flex;position:relative}.setlist-card .card-title{padding-right:50px}.card-star{position:absolute;top:8px;right:8px}.card-del{position:absolute;bottom:8px;right:8px}.setlist-card .card-stats{padding-right:40px}.card-action{background:var(--bg-raised);border:1px solid var(--border-light);width:28px;height:28px;color:var(--text-faint);cursor:pointer;opacity:.85;border-radius:6px;place-items:center;font-size:14px;display:grid}.card-action:hover{opacity:1;border-color:var(--accent);color:var(--text)}.card-action.on{color:var(--accent-2);border-color:var(--accent);opacity:1}.card-action.danger:hover{color:var(--danger);border-color:var(--danger)}.tonight-chip{color:var(--accent-2);white-space:nowrap;font-size:12px;font-weight:700}.ripe-toggle{color:var(--text-dim);cursor:pointer;align-items:center;gap:8px;margin:8px 0;font-size:14px;font-weight:700;display:flex}.ripe-toggle.on{color:var(--accent-2)}.ripe-toggle input{width:16px;height:16px;accent-color:var(--accent)}.ripe-toggle .hint{font-weight:400}.gate{place-items:center;min-height:100svh;padding:24px;display:grid}.gate-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);text-align:center;flex-direction:column;gap:14px;width:100%;max-width:380px;padding:28px 24px;display:flex}.gate-card h1{font-size:24px}.gate-card .form{text-align:left}.gate-install:empty{display:none}.gate-install{border-top:1px solid var(--border);justify-content:center;padding-top:14px;display:flex}.install-btn{width:100%}.song-play{width:24px;height:24px;color:var(--text-dim);background:var(--bg-input);border:1px solid var(--border-light);vertical-align:middle;border-radius:50%;place-items:center;margin-left:6px;font-size:10px;text-decoration:none;display:inline-grid}.song-play:hover{color:var(--accent);border-color:var(--accent)}.find-links{flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.find-links a{color:var(--accent-2);text-decoration:none}.find-links a:hover{text-decoration:underline}.install-callout{text-align:left;background:var(--accent-bg);border:1px solid var(--accent);border-radius:var(--radius-sm);flex-direction:column;gap:6px;width:100%;padding:12px 14px;display:flex}.install-title{font-size:14px;font-weight:700}.install-body{color:var(--text-dim);font-size:13px;line-height:1.5}.install-body strong{color:var(--text)}.gate-mark{background:linear-gradient(135deg, var(--accent), var(--accent-2));border-radius:12px;place-items:center;width:44px;height:44px;margin:0 auto;font-size:22px;display:grid}.gate-mark-img{width:54px;height:54px;margin:0 auto}.onboard-toggle{margin:4px 0}.account{align-items:center;gap:8px;display:flex}.account-email{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:12px;overflow:hidden}.invite-row{align-items:stretch;gap:8px;display:flex}.invite-row input{flex:1;min-width:0}.invite-row .btn{flex-shrink:0}.reset-code{align-self:flex-start;margin-top:2px}.hint.ok{color:var(--accent)}.hint code{letter-spacing:1px;background:var(--bg-input);border:1px solid var(--border-light);color:var(--text);border-radius:4px;padding:1px 5px;font-size:12px}.cal-legend{color:var(--text-dim);flex-wrap:wrap;gap:14px;margin-bottom:12px;font-size:12px;display:flex}.cal-legend-item{align-items:center;gap:6px;display:inline-flex}.evt-dot{border-radius:50%;flex-shrink:0;width:9px;height:9px;display:inline-block}.evt-show .evt-dot,.evt-dot.evt-show{background:var(--accent)}.evt-session .evt-dot,.evt-dot.evt-session{background:var(--good)}.evt-practice .evt-dot,.evt-dot.evt-practice{background:var(--warn)}.evt-unavailable .evt-dot,.evt-dot.evt-unavailable{background:var(--danger)}.evt-other .evt-dot,.evt-dot.evt-other{background:var(--text-faint)}.cal-grid{grid-template-columns:repeat(7,1fr);display:grid}.cal-weekday{text-align:center;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);padding:4px 0;font-size:11px}.cal-days{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);gap:1px;overflow:hidden}.cal-day{background:var(--bg-card);outline:1px solid var(--border);cursor:pointer;flex-direction:column;gap:3px;min-height:86px;padding:5px 5px 4px;display:flex}.cal-day:hover{background:var(--bg-raised)}.cal-day.outside{background:var(--bg);color:var(--text-faint)}.cal-day-num{color:var(--text-dim);font-size:12px}.cal-day.outside .cal-day-num{color:var(--text-faint)}.cal-day.today .cal-day-num{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;font-weight:600;display:inline-grid}.cal-day-events{flex-direction:column;gap:2px;display:flex;overflow:hidden}.cal-chip{font:inherit;text-align:left;color:var(--text);background:var(--bg-input);border:0;border-left:3px solid var(--text-faint);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;padding:2px 5px;font-size:11px;line-height:1.3;overflow:hidden}.cal-chip.evt-show{border-left-color:var(--accent)}.cal-chip.evt-session{border-left-color:var(--good)}.cal-chip.evt-practice{border-left-color:var(--warn)}.cal-chip.evt-unavailable{border-left-color:var(--danger)}.cal-upcoming-head{margin:22px 0 8px}.cal-upcoming{flex-direction:column;gap:6px;display:flex}.cal-upcoming-row{font:inherit;text-align:left;color:var(--text);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:9px 12px;display:flex}.cal-upcoming-row:hover{border-color:var(--border-light)}.cal-upcoming-title{font-weight:600}.cal-upcoming-meta{color:var(--text-dim);text-align:right;margin-left:auto;font-size:13px}.evt-select{--evt-color:var(--text-faint);border-color:var(--evt-color);background-color:var(--bg-input);background-image:linear-gradient(to right, var(--bg-input) 30%, color-mix(in srgb, var(--evt-color) 38%, var(--bg-input))), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23e6e8ee' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:0,right 12px center;background-repeat:no-repeat,no-repeat;background-size:100% 100%,12px 8px}.evt-select.evt-show{--evt-color:var(--accent)}.evt-select.evt-session{--evt-color:var(--good)}.evt-select.evt-practice{--evt-color:var(--warn)}.evt-select.evt-unavailable{--evt-color:var(--danger)}input[type=date],input[type=time]{cursor:pointer}.btn.danger{color:var(--danger);border-color:var(--danger);margin-right:auto}@media (width<=600px){.cal-day{min-height:58px;padding:4px}.cal-chip{color:#0000;height:8px;padding:0}.cal-upcoming-meta{font-size:12px}}.builder{grid-template-columns:1fr 280px;align-items:start;gap:16px;display:grid}.builder-blocks{flex-direction:column;gap:12px;display:flex}.block-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);overflow:hidden}.block-card.target{border-color:var(--accent)}.block-target-tag{color:var(--accent);margin-left:8px;font-size:11px;font-weight:600}.block-head{border-bottom:1px solid var(--border);background:var(--bg-raised);align-items:center;gap:10px;padding:9px 12px;display:flex}.block-title{font-size:14px;font-weight:700}.block-count{font-variant-numeric:tabular-nums;color:var(--text-dim);font-size:12px}.block-size-field{color:var(--text-dim);align-items:center;gap:6px;margin-left:auto;font-size:12px;display:flex}.block-size-field input{text-align:center;width:56px;padding:4px 6px}.block-slots{flex-direction:column;gap:6px;min-height:44px;margin:0;padding:8px;list-style:none;transition:background .15s;display:flex}.block-slots.over{background:var(--accent-bg)}.slot{border-radius:var(--radius-sm);align-items:center;gap:9px;padding:7px 9px;display:flex}.slot.filled{background:var(--bg-raised);border:1px solid var(--border)}.slot.filled.dragging{border-color:var(--accent);box-shadow:var(--shadow)}.slot.empty{border:1px dashed var(--border-light);color:var(--text-faint);justify-content:center;padding:9px;font-size:12px}.slot.empty.open{font-style:italic}.slot .row-title{flex-wrap:wrap;align-items:center;gap:7px;font-weight:600;display:flex}.add-block{border:1px dashed var(--border-light)}.slot.add-row{border:1px dashed var(--border-light);width:100%;color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;justify-content:flex-start;font-size:13px;font-weight:600}.slot.add-row:hover{border-color:var(--accent);color:var(--accent)}.slot.adder{padding:0;display:block}.song-search{position:relative}.song-search-input{width:100%}.song-search-list{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-input);flex-direction:column;gap:1px;max-height:260px;margin:6px 0 0;padding:4px;list-style:none;display:flex;overflow-y:auto}.song-search-opt{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:5px;align-items:center;gap:8px;padding:7px 8px;display:flex}.song-search-opt:hover,.song-search-opt.hi{background:var(--bg-raised)}.song-search-opt .row-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden}.song-search-opt .artist{color:var(--text-faint);font-weight:400}.song-search-empty{margin:6px 0 0;padding:4px 2px;font-size:12px}.builder-pool{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;max-height:calc(100svh - 90px);display:flex;position:sticky;top:70px}.pool-head{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:10px;display:flex}.pool-target{align-items:center;gap:8px;font-size:13px;display:flex}.pool-target select{flex:1}.pool-toggle{background:var(--bg-input);border:1px solid var(--border-light);border-radius:7px;padding:2px;display:flex}.seg{font:inherit;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:5px;flex:1;padding:5px;font-size:13px;font-weight:600}.seg.active{background:var(--accent-bg);color:var(--text)}.pool-list{flex-direction:column;gap:5px;margin:0;padding:6px;list-style:none;display:flex;overflow-y:auto}.pool-item{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:7px 9px;display:flex}.pool-item.dragging{border-color:var(--accent);box-shadow:var(--shadow)}.pool-grip{cursor:grab;flex:1;align-items:center;gap:8px;min-width:0;display:flex}.pool-grip:active{cursor:grabbing}.pool-item .row-title{flex:1;min-width:0;font-size:13px;font-weight:600}.pool-add{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-input);width:28px;height:28px;color:var(--text);cursor:pointer;flex:none;font-size:18px;line-height:1}.pool-add:hover{border-color:var(--accent);color:var(--accent)}@media (width<=760px){.builder{grid-template-columns:1fr}.builder-pool{max-height:340px;position:static}}.logo-editor{align-items:center;gap:16px;display:flex}.logo-preview{background:linear-gradient(135deg, var(--accent), var(--accent-2));border:1px solid var(--border-light);flex:none;place-items:center;width:84px;height:84px;display:grid;overflow:hidden}.logo-preview.shape-wide{width:130px}.logo-preview img{object-fit:cover;width:100%;height:100%}.logo-placeholder{color:#fff;font-size:34px}.logo-actions{flex-direction:column;gap:8px;display:flex}.shape-picker{gap:8px;display:flex}.shape-opt{font:inherit;color:var(--text-dim);background:var(--bg-input);border:1px solid var(--border-light);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:7px;padding:6px 10px;font-size:13px;display:flex}.shape-opt.active{color:var(--text);border-color:var(--accent)}.shape-swatch{background:var(--text-faint);width:18px;height:18px}.shape-opt.active .shape-swatch{background:var(--accent)}.shape-swatch.shape-wide{width:24px;height:15px}.form-error{color:var(--danger);font-size:13px}.check{color:var(--text);cursor:pointer;align-items:center;gap:8px;font-size:14px;display:flex}.check input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.block-tools{align-items:center;gap:6px;margin-bottom:12px;font-size:13px;display:flex}.block-tools .btn.tiny{min-width:26px}.divider-btn{font-weight:700}.divider-btn.on{color:var(--accent-2);background:var(--accent-bg)}.setlist-row.block-end{border-bottom:2px solid var(--accent);margin-bottom:10px}.dash-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;display:grid}.dash-card{font:inherit;text-align:left;color:var(--text);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-direction:column;align-items:flex-start;gap:6px;min-height:110px;padding:14px 16px;display:flex}.dash-card:hover{border-color:var(--border-light)}.dash-card.dash-warn{border-color:#e0a64b8c}.dash-label{text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);font-size:11px;font-weight:700}.dash-big{font-size:22px;font-weight:700;line-height:1.2}.dash-sub{color:var(--text-dim);font-size:12px}.dash-flag{color:var(--warn);font-size:12px;font-weight:600}.dash-list{flex-direction:column;gap:3px;width:100%;display:flex}.dash-line{align-items:center;gap:7px;font-size:13px;font-weight:600;display:flex}.dash-line em{color:var(--text-faint);margin-left:auto;font-size:12px;font-style:normal;font-weight:400}.advance-block{border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:10px;margin:0;padding:10px 12px 12px;display:flex}.advance-block legend{color:var(--text-dim);padding:0 6px;font-size:12px;font-weight:600}.gap-nudge{border-radius:var(--radius-sm);color:var(--warn);background:#e0a64b1a;border:1px solid #e0a64b73;margin-bottom:12px;padding:9px 13px;font-size:13px}.wide-search{width:100%;margin-bottom:12px}.contact-list,.ledger-list{flex-direction:column;gap:6px;display:flex}.contact-row,.ledger-row{font:inherit;text-align:left;color:var(--text);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:10px 12px;display:flex}.contact-row:hover,.ledger-row:hover{border-color:var(--border-light)}.contact-main,.ledger-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.contact-name,.ledger-desc{font-weight:600}.contact-meta,.ledger-meta{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.contact-actions{flex:none;gap:6px;display:flex}.icon-link{border-radius:var(--radius-sm);border:1px solid var(--border-light);background:var(--bg-input);width:30px;height:30px;color:var(--text-dim);place-items:center;font-size:14px;text-decoration:none;display:inline-grid}.icon-link:hover{color:var(--accent);border-color:var(--accent)}.ledger-summary{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:12px;padding:10px 13px;display:flex}.ledger-total{align-items:baseline;gap:8px;font-size:18px;display:flex}.ledger-payers{color:var(--text-dim);flex-wrap:wrap;gap:14px;font-size:13px;display:flex}.ledger-amount{font-variant-numeric:tabular-nums;flex:none;font-weight:700}.ledger-pos{color:var(--good)}.ledger-neg{color:var(--danger)}.ledger-split{font-size:12px}.bio-section{flex-direction:column;gap:12px;max-width:720px;display:flex}.bio-text{width:100%;font-size:14px;line-height:1.6}.bio-actions{gap:8px;display:flex}.bio-ai{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);flex-direction:column;gap:12px;padding:14px;display:flex}.bio-ai .btn{align-self:flex-start}.bio-write-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.scan-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.songs-cards{flex-direction:column;gap:8px;display:none}.song-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:7px;padding:9px 11px;display:flex}.song-card.benched{opacity:.55}.sc-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.sc-top .link-title{text-align:left;flex-direction:column;align-items:flex-start;gap:1px;display:flex}.sc-actions{flex:none;align-items:center;gap:6px;display:flex}.sc-bottom{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.sc-meta{color:var(--text-dim);font-size:12px}@media (width<=640px){.app-bar{padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top))}.account{display:none}.tabs{z-index:30;border:none;border-top:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:6px 10px calc(6px + env(safe-area-inset-bottom));background:#0f1115eb;border-radius:0;gap:4px;position:fixed;bottom:0;left:0;right:0}.tab{letter-spacing:0;flex-direction:column;flex:1;align-items:center;gap:3px;padding:7px 0 5px;font-size:10px;display:flex}.tab-icon{width:22px;height:22px;display:block}.tab.active .tab-icon{stroke-width:2.4px}.tab.active{color:var(--accent-2);background:0 0}.app-main{padding:14px 14px calc(78px + env(safe-area-inset-bottom))}h1{font-size:21px}h2{font-size:16px}.view-head{flex-wrap:wrap;margin-bottom:12px}.cal-legend{gap:10px;margin-bottom:8px;font-size:11px}.row-meta,.table-wrap{display:none}.songs-cards{display:flex}.view-head .pool-toggle{flex-basis:100%;order:3}.modal-body{padding:13px}.form{gap:10px}.modal-head{padding:12px 13px}.modal-foot{padding:10px 13px}}
