:root{--color-bg: #f7f7f9;--color-surface: #ffffff;--color-border: #e5e7eb;--color-text: #1f2937;--color-text-muted: #6b7280;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-contrast: #ffffff;--radius: 10px;--shadow-sm: 0 1px 2px rgba(17, 24, 39, .05);--shadow-md: 0 4px 12px rgba(17, 24, 39, .08);--max-width: 1100px;--spacing: 1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;color-scheme:light;--skill-drums: #a16207;--skill-bass: #9f1239;--skill-electric_guitar:#1e40af;--skill-acoustic_guitar:#854d0e;--skill-piano: #5b21b6;--skill-cajon: #b45309;--skill-voice_lead: #0f766e;--skill-voice_terz: #9d174d;--skill-voice_alto: #3730a3}:root[data-theme=dark]{--color-bg: #111827;--color-surface: #1f2937;--color-border: #374151;--color-text: #f9fafb;--color-text-muted: #9ca3af;--color-primary: #818cf8;--color-primary-hover: #6366f1;--color-primary-contrast: #ffffff;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);color-scheme:dark;--skill-drums: #d4a520;--skill-bass: #e06080;--skill-electric_guitar:#7096d4;--skill-acoustic_guitar:#c49a5c;--skill-piano: #a07ad4;--skill-cajon: #d4844a;--skill-voice_lead: #4ab5ae;--skill-voice_terz: #d48aa0;--skill-voice_alto: #8b84d4}*{box-sizing:border-box}:root{--tt: 0s}html.theme-transitioning{--tt: .25s}*{transition:background-color var(--tt) ease,color 0s,border-color var(--tt) ease}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);line-height:1.5}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100%;display:flex;flex-direction:column}.app__main{flex:1;width:100%;max-width:var(--max-width);margin:0 auto;padding:2rem 1.25rem}.navbar{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:50}.navbar__brand{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:1.05rem}.navbar__logo{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--color-primary);color:#fff;font-size:.95rem}.navbar__links{display:flex;gap:1rem;flex:1}.navbar__link{color:var(--color-text);padding:.25rem .5rem;border-radius:6px;text-decoration:none;font-weight:500;min-width:7rem;text-align:center;display:inline-block;white-space:nowrap}.navbar__link:hover{background:var(--color-bg);text-decoration:none}.navbar__link.active{color:var(--color-primary)}.navbar__link--disabled{color:var(--color-text-muted);cursor:not-allowed}.lang-slider{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:2px;cursor:pointer;gap:0}.lang-slider__opt{padding:.25rem .65rem;border-radius:999px;font-size:.8rem;font-weight:600;color:var(--color-text-muted);transition:background .18s,color .18s,box-shadow .18s}.lang-slider__opt--active{background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-sm)}.theme-slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:3.25rem;height:1.75rem;background:var(--color-border);border:none;border-radius:999px;cursor:pointer;padding:3px;transition:background .4s cubic-bezier(.4,0,.2,1);flex-shrink:0}.theme-slider--on{background:var(--color-primary)}.theme-slider__thumb{display:flex;align-items:center;justify-content:center;width:1.375rem;height:1.375rem;background:#fff;border-radius:50%;box-shadow:var(--shadow-sm);transition:transform .4s cubic-bezier(.4,0,.2,1)}.theme-slider--on .theme-slider__thumb{transform:translate(1.5rem)}.theme-slider__icon{font-size:.7rem;line-height:1;transition:opacity .25s ease .1s;display:block}.page__header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.page__title{margin:0;font-size:1.75rem}.page__actions{display:flex;gap:.5rem}.back-link{display:inline-block;margin-bottom:.5rem;font-size:.9rem}.muted{color:var(--color-text-muted)}.input{padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-size:.95rem}.input:disabled{background:var(--color-bg);cursor:not-allowed}.btn{padding:.5rem .95rem;border-radius:var(--radius);border:1px solid transparent;font-weight:600;cursor:pointer;font-size:.95rem;white-space:nowrap;min-width:8.5rem;text-align:center}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.empty-state{padding:3rem 1rem;text-align:center;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);color:var(--color-text-muted)}.table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}.table th,.table td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--color-border)}.table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);background:var(--color-bg)}.table tr:last-child td{border-bottom:0}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;margin-top:2rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem 1.75rem;box-shadow:var(--shadow-sm)}.card--wide{grid-column:1 / -1}.card__title{margin:0 0 1rem;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);padding-bottom:.75rem;border-bottom:1px solid var(--color-border)}.definition-list{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.75rem 1.75rem;font-size:.975rem}.definition-list dt{color:var(--color-text-muted);font-weight:500}.definition-list dd{margin:0;font-weight:500;color:var(--color-text)}.navbar__actions{display:flex;align-items:center;gap:.75rem}.navbar__actions .btn{min-width:8rem;text-align:center}.user-menu{display:flex;align-items:center;gap:.5rem}.user-menu__info{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.user-menu__name{font-size:.85rem;font-weight:600}.badge{display:inline-block;font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;padding:.1rem .45rem;border-radius:999px;font-weight:700;margin-top:.15rem}.badge--admin{background:#fee2e2;color:#b91c1c}.badge--worship_leader{background:#e0e7ff;color:#3730a3}.badge--member{background:#d1fae5;color:#065f46}.btn--ghost{background:transparent;border:1px solid var(--color-border);color:var(--color-text)}.btn--ghost:hover:not(:disabled){background:var(--color-bg)}.btn--sm{padding:.3rem .6rem;font-size:.8rem;min-width:unset}.btn--block{width:100%;display:block;min-width:unset}.auth{display:flex;justify-content:center;padding-top:2rem}.auth__card{width:100%;max-width:420px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:2rem}.auth__title{margin:0 0 .35rem;font-size:1.5rem}.auth__subtitle{margin:0 0 1.25rem;color:var(--color-text-muted);font-size:.95rem}.auth__footer{margin:1.25rem 0 0;text-align:center;color:var(--color-text-muted);font-size:.9rem}.form{display:flex;flex-direction:column;gap:.9rem}.form--inline{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:.75rem}.form__field{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500}.form__field .input,.form__field select.input{font-size:1rem}.form__field:has(.song-lyrics-input){flex:1;min-height:0;width:95%}.alert{padding:.75rem .9rem;border-radius:var(--radius);font-size:.9rem;line-height:1.4}.alert--warn{background:#fef3c7;color:#92400e;border:1px solid #fde68a}.alert--error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.alert--success{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.token-box{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;padding:.5rem .75rem;background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);word-break:break-all}.token-box code{flex:1;font-size:.85rem}.token-mini{font-size:.8rem;margin-right:.5rem;color:var(--color-text-muted)}.skills-editor{display:flex;flex-direction:column;gap:1rem}.skills-editor__group{border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem 1rem}.skills-editor__group legend{padding:0 .4rem;font-weight:600;font-size:.85rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.skills-editor__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.4rem .75rem;margin-top:.25rem}.skills-editor__item{display:flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border-radius:8px;cursor:pointer;font-size:.95rem;transition:background .1s}.skills-editor__item:hover{background:var(--color-bg)}.skills-editor__item.is-checked{background:#eef2ff;color:var(--color-primary)}.skills-editor__item.is-locked{opacity:.85;cursor:not-allowed}.skills-editor__item.is-locked:after{content:"🔒";font-size:.75rem;margin-left:auto}.skills-editor__hint{margin:.5rem 0 0;font-size:.85rem}.skill-badges{display:flex;flex-wrap:wrap;gap:.3rem}.skill-badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;border:1.5px solid var(--skill-color, var(--color-border));color:var(--skill-color, var(--color-text));background:transparent;line-height:1.4}.skill-badge--drums{--skill-color: var(--skill-drums)}.skill-badge--bass{--skill-color: var(--skill-bass)}.skill-badge--electric_guitar{--skill-color: var(--skill-electric_guitar)}.skill-badge--acoustic_guitar{--skill-color: var(--skill-acoustic_guitar)}.skill-badge--piano{--skill-color: var(--skill-piano)}.skill-badge--cajon{--skill-color: var(--skill-cajon)}.skill-badge--voice_lead{--skill-color: var(--skill-voice_lead)}.skill-badge--voice_terz{--skill-color: var(--skill-voice_terz)}.skill-badge--voice_alto{--skill-color: var(--skill-voice_alto)}.form.card{display:flex;flex-direction:column;padding:1.5rem;height:85vh;gap:.5rem}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182766;display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem}.dialog{background:var(--color-surface);border-radius:var(--radius);padding:1.5rem;max-width:560px;width:100%;box-shadow:var(--shadow-md);max-height:90vh;overflow:auto}.dialog__title{margin:0 0 1rem;font-size:1.2rem}.dialog__footer{margin-top:1rem;display:flex;justify-content:flex-end;gap:.5rem}.dialog--tall{display:flex;flex-direction:column;gap:.75rem;max-height:92vh;height:92vh;max-width:860px}.song-library-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1;border:1px solid var(--color-border);border-radius:var(--radius)}.song-library-list__empty{padding:1.25rem;color:var(--color-text-muted);font-size:.9rem}.song-library-list__item{display:flex;align-items:center;padding:.75rem 1rem;cursor:pointer;border-bottom:1px solid var(--color-border);gap:.75rem}.song-library-list__item:last-child{border-bottom:none}.song-library-list__item:hover{background:var(--color-bg)}.song-library-list__title{flex:1;font-size:1rem}.song-library-list__meta{display:flex;gap:.75rem;flex-shrink:0}.song-library-list__key,.song-library-list__bpm{font-size:.8rem;color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;padding:.1rem .4rem}.user-menu__info{text-decoration:none;color:inherit;display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;cursor:pointer;padding:.25rem .5rem;border-radius:6px}.user-menu__info:hover{background:var(--color-bg);text-decoration:none}.stack-lg{display:flex;flex-direction:column;gap:1.25rem;margin-top:1rem}.card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.card__header .card__title{margin:0}.hint{color:var(--color-text-muted);font-size:.85rem;margin:.5rem 0 0}.btn-group{display:flex;gap:.5rem}.slot-add-row{display:flex;align-items:center;gap:.5rem;margin-top:.75rem}.filter-label{color:var(--color-text-muted);font-size:.8rem}.link{color:var(--color-primary);text-decoration:none}.link:hover{text-decoration:underline}.link--quiet{color:var(--color-text-muted);font-size:.85rem}.input--sm{max-width:7rem}.empty-state--ok{border-style:solid;border-color:#a7f3d0;background:#ecfdf5;color:#065f46}.badge--drums{border:1.5px solid var(--skill-drums);color:var(--skill-drums)}.badge--bass{border:1.5px solid var(--skill-bass);color:var(--skill-bass)}.badge--electric_guitar{border:1.5px solid var(--skill-electric_guitar);color:var(--skill-electric_guitar)}.badge--acoustic_guitar{border:1.5px solid var(--skill-acoustic_guitar);color:var(--skill-acoustic_guitar)}.badge--piano{border:1.5px solid var(--skill-piano);color:var(--skill-piano)}.badge--cajon{border:1.5px solid var(--skill-cajon);color:var(--skill-cajon)}.badge--voice_lead{border:1.5px solid var(--skill-voice_lead);color:var(--skill-voice_lead)}.badge--voice_terz{border:1.5px solid var(--skill-voice_terz);color:var(--skill-voice_terz)}.badge--voice_alto{border:1.5px solid var(--skill-voice_alto);color:var(--skill-voice_alto)}.setlist{list-style:decimal;padding-left:1.25rem;margin:0;display:flex;flex-direction:column;gap:.5rem}.setlist__item{display:flex;flex-direction:column;align-items:stretch;gap:.4rem}.setlist__row{display:flex;align-items:center;gap:.5rem;min-width:0}.setlist__main{display:flex;gap:.5rem;flex:1;min-width:0}.setlist__main .input{flex:1}.song-picker{position:relative;flex:1}.song-picker .input{width:100%}.song-picker__dropdown{position:absolute;top:calc(100% + 2px);left:0;right:0;z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);list-style:none;margin:0;padding:.25rem 0;max-height:14rem;overflow-y:auto}.song-picker__option{display:flex;justify-content:space-between;align-items:center;padding:.45rem .75rem;cursor:pointer;font-size:.9rem;gap:.5rem}.song-picker__option:hover{background:var(--color-bg)}.song-picker__key{font-size:.8rem;color:var(--color-text-muted);flex-shrink:0}.setlist__actions{display:flex;gap:.25rem;flex-shrink:0}.song-lyrics{white-space:pre-wrap;font-family:inherit;font-size:.975rem;line-height:1.85;margin:0;color:var(--color-text)}.song-lyrics-input{flex:1;width:100%;padding:.75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-family:inherit;font-size:.95rem;line-height:1.6;resize:none;min-height:0;overflow:hidden}.card textarea.input{width:100%;resize:none;overflow:hidden;min-height:3em}.setlist__notes{width:100%;resize:none;overflow:hidden;min-height:2em}.toggle-row{display:flex;align-items:flex-start;gap:.6rem;cursor:pointer}.toggle-row input[type=checkbox]{margin-top:.15rem;flex-shrink:0;width:1rem;height:1rem;cursor:pointer}.toggle-row__label{display:block;font-size:.9rem}.toggle-row__hint{display:block;font-size:.78rem;color:var(--color-text-muted);margin-top:.15rem}.profile__actions{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.table__cell--reminder{white-space:nowrap;width:1%}.reminder-sent{font-size:.75rem;color:var(--color-text-muted)}.calendar{width:100%}.calendar__nav{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.calendar__month-label{font-weight:600;font-size:1.15rem;flex:1;text-align:center}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar__dow{text-align:center;font-size:.8rem;font-weight:600;color:var(--color-text-muted);padding:.35rem 0;text-transform:uppercase;letter-spacing:.04em}.calendar__cell{min-height:5.5rem;border-radius:6px;padding:.5rem .55rem;background:var(--color-surface, #1e1e1e);border:1px solid transparent}.calendar__cell--empty{background:transparent;border-color:transparent}.calendar__cell--sunday{border-color:var(--color-border, #333)}.calendar__cell--saturday{border-color:var(--color-border, #333);opacity:.85}.calendar__cell--event{border-color:var(--color-primary, #7c6af7);border-style:dashed}.calendar__cell--today{border-color:var(--color-primary, #7c6af7);border-style:solid}.calendar__cell--past{opacity:.5}.calendar__day-link{display:flex;flex-direction:column;gap:.25rem;text-decoration:none;color:inherit;height:100%}.calendar__day-link:hover .calendar__day-num{color:var(--color-primary, #7c6af7)}.calendar__day-num{font-size:.85rem;font-weight:500}.calendar__meta{font-size:.7rem;color:var(--color-text-muted)}.badge--sm{font-size:.65rem;padding:.1rem .4rem}.my-assignments{margin-bottom:1.5rem}.my-assignment-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border);text-decoration:none;color:inherit;margin-bottom:.5rem;box-shadow:var(--shadow-sm)}.my-assignment-item:last-child{margin-bottom:0}.my-assignment-item:hover{background:var(--color-bg);text-decoration:none}.my-assignment-item__date{flex:1;font-weight:600;font-size:.95rem}.my-assignment-item__skill{color:var(--color-text-muted);font-size:.85rem}.service-tabs{display:none}.service-tab{flex:1;padding:.65rem .5rem;font-size:.875rem;font-weight:600;text-align:center;border:none;background:none;cursor:pointer;color:var(--color-text-muted);border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;touch-action:manipulation}.service-tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.navbar__menu-wrap{display:none;position:relative}.navbar__hamburger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:7px;background:none;border:none;cursor:pointer;border-radius:var(--radius);touch-action:manipulation}.navbar__hamburger span{display:block;width:100%;height:2px;background:var(--color-text);border-radius:2px;transition:transform var(--tt, .2s),opacity var(--tt, .2s)}.navbar__hamburger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.navbar__hamburger.is-open span:nth-child(2){opacity:0}.navbar__hamburger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.navbar__dropdown{position:absolute;top:calc(100% + .5rem);left:0;min-width:180px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);z-index:300;overflow:hidden}.navbar__dropdown-item{display:block;padding:.75rem 1rem;color:var(--color-text);text-decoration:none;font-size:.95rem;font-weight:500;border-bottom:1px solid var(--color-border);transition:background .1s,color .1s}.navbar__dropdown-item:last-child{border-bottom:none}.navbar__dropdown-item:hover{background:var(--color-bg);text-decoration:none}.navbar__dropdown-item.active{color:var(--color-primary)}.btn,.song-library-list__item,.calendar__day-link{touch-action:manipulation}@media (max-width: 768px){.app__main{padding:.875rem .75rem}.navbar{padding:.5rem .75rem;gap:.5rem}.navbar__menu-wrap{display:block}.navbar__links,.navbar__brand-text,.user-menu__info{display:none}.navbar__actions .btn{min-width:unset;padding:.35rem .6rem;min-height:36px}.page__title{font-size:1.3rem}.page__actions{flex-wrap:wrap}.btn{min-height:44px}.btn--sm{min-height:36px}.input,select.input{font-size:1rem;min-height:44px}textarea.input{font-size:1rem;min-height:unset}.card{padding:1rem}.service-tabs{display:flex;border-bottom:2px solid var(--color-border);margin-bottom:.75rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.service-tabs::-webkit-scrollbar{display:none}.service-section--hidden{display:none!important}.assignments-table thead{display:none}.assignments-table tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.6rem 0;border-bottom:1px solid var(--color-border)}.assignments-table tbody tr:last-child{border-bottom:none}.assignments-table td{padding:.1rem 0;border-bottom:none}.assignments-table td:nth-child(2){flex:1;min-width:0}.assignments-table td:nth-child(2) select{width:100%}.assignments-table .table__cell--reminder{width:auto}.setlist__main{flex-direction:column;gap:.35rem}.setlist__main .input--sm{max-width:100%}.songs-table{background:transparent;box-shadow:none;border-radius:0;overflow:visible}.songs-table thead{display:none}.songs-table tbody{display:flex;flex-direction:column;gap:.5rem}.songs-table tbody tr{display:flex;align-items:center;background:var(--color-surface);border-radius:var(--radius);border:1px solid var(--color-border);padding:.75rem 1rem;gap:.75rem;box-shadow:var(--shadow-sm)}.songs-table td{border-bottom:none;padding:0}.songs-table td:first-child{flex:1;font-weight:500}.songs-table td:not(:first-child){color:var(--color-text-muted);font-size:.82rem}.calendar__cell{min-height:3.25rem;padding:.2rem .25rem}.calendar__dow{font-size:.62rem;padding:.1rem 0;letter-spacing:0}.calendar__day-num{font-size:.75rem}.calendar__meta{font-size:.55rem}.badge--sm{font-size:.5rem;padding:.05rem .25rem}.auth__card{padding:1.25rem;margin:0 .25rem}.dialog{max-height:95vh;padding:1rem}.dialog--tall{height:95vh;max-height:95vh;padding:1rem}.dialog__footer{flex-wrap:wrap}.dialog__footer .btn{flex:1;min-width:7rem}}@media (max-width: 480px){.app__main{padding:.625rem .5rem;padding-bottom:calc(4.5rem + env(safe-area-inset-bottom,0px))}.page__title{font-size:1.1rem}.card{padding:.75rem}.calendar__cell{min-height:2.25rem}.lang-slider{display:none}}
