:root{--wa-bg:#fbf8f2;--wa-surface:#fff;--wa-surface-alt:#f6f1e6;--wa-muted:#f1e9d9;--wa-border:#e9e0cb;--wa-border-strong:#d8c9a6;--wa-ink:#3d362b;--wa-ink-soft:#6e6152;--wa-ink-faint:#b4a88f;--wa-accent:#7b5239;--wa-accent-hover:#63412d;--wa-accent-soft:#efdcc8;--wa-moss:#87976a;--wa-moss-hover:#5b6845;--wa-moss-soft:#ecf0df;--wa-gold:#c99a3e;--wa-gold-soft:#f8edd0;--wa-clay-red:#b15d46;--wa-clay-red-hover:#82402f;--wa-clay-red-soft:#f7e3da;--wa-shadow-sm:0 1px 3px #3b342a0f;--wa-shadow:0 6px 20px #3b342a14;--wa-radius-sm:6px;--wa-radius:10px;--wa-font:"Noto Sans TC",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fbf8f2;background-color:var(--wa-bg);color:#3d362b;color:var(--wa-ink);font-family:Noto Sans TC,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;font-family:var(--wa-font);margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{align-items:center;background:radial-gradient(circle at 50% 0,var(--wa-surface-alt) 0,var(--wa-bg) 55%) var(--wa-bg);color:var(--wa-ink);justify-content:center;min-height:100dvh;min-height:100vh;padding:24px 16px}.App,.login-box{box-sizing:border-box;display:flex;flex-direction:column}.login-box{animation:floatUp .45s ease-out forwards;background:var(--wa-surface);border:1px solid var(--wa-border);border-radius:18px;box-shadow:var(--wa-shadow);gap:18px;margin:0 auto;max-width:360px;opacity:0;padding:36px 28px 32px;width:100%}@media (prefers-reduced-motion:reduce){.login-box{animation:none;opacity:1}}@keyframes floatUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.login-brand{align-items:center;background:var(--wa-accent-soft);border-radius:50%;color:var(--wa-accent);display:flex;height:52px;justify-content:center;margin:0 auto 2px;width:52px}.login-box h1{color:var(--wa-ink);font-size:21px;font-weight:700;line-height:1.4;margin:0;text-align:center}.login-subtitle{color:var(--wa-ink-soft);font-size:14px;line-height:1.5;margin:-8px 0 4px;text-align:center}.login-field{display:flex;flex-direction:column;gap:6px}.login-field label{color:var(--wa-ink);font-size:13px;font-weight:600;letter-spacing:.02em}.login-field input{background-color:var(--wa-surface-alt);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);box-sizing:border-box;color:var(--wa-ink);font-family:inherit;font-size:16px;min-height:46px;padding:12px 14px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.login-field input::placeholder{color:var(--wa-ink-faint)}.login-field input:focus-visible{border-color:var(--wa-accent);box-shadow:0 0 0 3px var(--wa-accent-soft);outline:none}.login-button{background:var(--wa-accent);border:none;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;font-size:16px;font-weight:600;min-height:46px;padding:12px;transition:background-color .2s ease,transform .1s ease,opacity .2s ease}.login-button:hover:not(:disabled){background:var(--wa-accent-hover)}.login-button:active:not(:disabled){transform:scale(.98)}.login-button:focus-visible{box-shadow:0 0 0 3px var(--wa-accent-soft);outline:none}.login-button:disabled{cursor:not-allowed;opacity:.65}@media (min-width:480px){.login-box{padding:40px 36px 36px}}.admin-container{align-items:center;background-color:var(--wa-bg);box-sizing:border-box;display:flex;flex-direction:column;height:100%;justify-content:space-between;padding:40px 20px;width:100%}.admin-content{margin:0 auto;width:80%}.admin-header-row{align-items:center;display:flex;gap:16px;justify-content:center;margin-bottom:30px}.admin-title{color:var(--wa-ink);font-size:26px;font-weight:700;text-align:center}.loading-text{color:var(--wa-ink-soft);font-size:16px;text-align:center}.user-table{background-color:var(--wa-surface);border-collapse:collapse;border-radius:var(--wa-radius);border-spacing:0;box-shadow:var(--wa-shadow-sm);margin:0 auto;min-width:560px;overflow:hidden;width:100%}.user-table th{background-color:var(--wa-surface-alt);border-bottom:2px solid var(--wa-border);font-size:15px;font-weight:600;padding:14px}.user-table td,.user-table th{color:var(--wa-ink);text-align:center}.user-table td{border-bottom:1px solid var(--wa-border);font-size:14px;padding:12px}.user-table tr:hover{background-color:var(--wa-surface-alt)}.no-data{color:var(--wa-ink-soft);font-style:italic;padding:20px 0;text-align:center}.modal-overlay{align-items:center;background-color:#3b342a73;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:999}.modal-box{background-color:var(--wa-surface);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);color:var(--wa-ink);display:flex;flex-direction:column;justify-self:center;padding:20px;text-align:center}.modal-actions button{border-radius:var(--wa-radius-sm);cursor:pointer;font-size:16px;margin:10px;padding:8px 16px}.context-menu{background:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);min-width:160px;padding:6px;position:fixed;z-index:9999}.context-menu-item{background:#0000;border:none;border-radius:var(--wa-radius-sm);color:var(--wa-ink);cursor:pointer;display:block;font-size:14px;padding:10px 12px;text-align:left;width:100%}.context-menu-item:hover{background:var(--wa-surface-alt)}.context-menu-item.danger{color:var(--wa-clay-red);font-weight:600}@media (max-width:640px){.admin-content{width:100%}.admin-header-row{align-items:stretch;flex-direction:column;gap:12px}}.playlist-page{background-color:var(--wa-bg);box-sizing:border-box;min-height:100vh;padding:40px 20px;width:100%}.playlist-container{background:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);box-sizing:border-box;color:var(--wa-ink);margin:40px auto;max-width:900px;padding:24px 32px;width:100%}.playlist-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.playlist-header h2{color:var(--wa-ink);margin:0}.add-button-container{display:flex;flex-direction:row;flex-wrap:wrap;gap:10px}.add-button{background-color:var(--wa-accent);border:none;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;font-size:14px;padding:8px 14px;transition:background-color .2s ease;white-space:nowrap}.add-button:hover{background-color:var(--wa-accent-hover)}.playlist-tabs{-webkit-overflow-scrolling:touch;cursor:grab;display:flex;gap:10px;margin:10px 0;overflow-x:auto;padding-bottom:4px;scrollbar-color:var(--wa-border-strong) #0000;scrollbar-width:thin;-webkit-user-select:none;user-select:none}.playlist-tabs:active{cursor:grabbing}.playlist-tabs::-webkit-scrollbar{height:6px}.playlist-tabs::-webkit-scrollbar-thumb{background-color:var(--wa-border-strong);border-radius:3px}.tab-button{background-color:var(--wa-muted);border:none;border-radius:var(--wa-radius-sm);color:var(--wa-ink-soft);cursor:pointer;flex:none;font-size:15px;font-weight:600;padding:8px 14px;transition:background-color .2s ease,color .2s ease;white-space:nowrap}.tab-button:hover{background-color:var(--wa-border);color:var(--wa-ink)}.tab-button.active{background-color:var(--wa-accent);color:#fff}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.song-table{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-collapse:initial;border-radius:var(--wa-radius);border-spacing:0;min-width:640px;width:100%}.song-table td,.song-table th{border-bottom:1px solid var(--wa-border);color:var(--wa-ink);font-size:14px;padding:12px 16px;text-align:left}.song-table th{background-color:var(--wa-surface-alt);color:var(--wa-ink);font-weight:600}.song-table tr:last-child td{border-bottom:none}.song-table thead tr:first-child th:first-child{border-top-left-radius:var(--wa-radius)}.song-table thead tr:first-child th:last-child{border-top-right-radius:var(--wa-radius)}.song-table tbody tr:last-child td:first-child{border-bottom-left-radius:var(--wa-radius)}.song-table tbody tr:last-child td:last-child{border-bottom-right-radius:var(--wa-radius)}.song-table tbody tr:hover{background-color:var(--wa-surface-alt);cursor:pointer;transition:background-color .15s ease}.playlist-footer{color:var(--wa-ink-soft);font-size:13px;font-style:italic;margin-top:12px;text-align:left}.dialog-overlay,.song-action-overlay{align-items:center;background:#3b342a73;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding:20px;position:fixed;top:0;width:100%;z-index:1000}.dialog-box,.song-action-modal{animation:scaleIn .2s ease;background:var(--wa-surface);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);color:var(--wa-ink);max-height:85vh;max-width:100%;overflow-y:auto;padding:24px 20px;text-align:center;width:340px}.dialog-box h3,.song-action-title{color:var(--wa-ink);font-size:18px;font-weight:700;margin-bottom:12px}.dialog-box input[type=file],.dialog-box input[type=text],.song-action-input{background-color:var(--wa-surface-alt);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);box-sizing:border-box;color:var(--wa-ink);font-size:14px;margin:10px 0;padding:8px 10px;width:95%}.dialog-box input::file-selector-button{background-color:var(--wa-muted);border:none;border-radius:var(--wa-radius-sm);color:var(--wa-ink);cursor:pointer;margin-right:10px;padding:6px 10px}.dialog-box p{color:var(--wa-ink-soft);font-size:14px;margin-top:8px}.dialog-actions,.song-action-buttons{display:flex;gap:12px;justify-content:space-between;margin-top:16px}.cancel-button,.dialog-actions button,.song-action-btn,.submit-button{border:none;border-radius:var(--wa-radius-sm);cursor:pointer;flex:1 1;font-size:15px;font-weight:600;padding:8px 14px;transition:background-color .2s ease}.dialog-actions button:first-child{background-color:var(--wa-clay-red);color:#fff}.dialog-actions button:first-child:hover{background-color:var(--wa-clay-red-hover)}.dialog-actions button:last-child{background-color:var(--wa-muted);color:var(--wa-ink)}.dialog-actions button:last-child:hover{background-color:var(--wa-border)}.song-action-detail{color:var(--wa-ink-soft);font-size:14px;margin:6px 0;text-align:left}.file-preview{margin-top:16px;max-height:40vh;overflow-y:auto}.file-preview progress{-webkit-appearance:none;appearance:none;height:16px;margin-top:4px;width:100%}.file-preview span{color:var(--wa-ink-soft);font-size:.9em}.file-item{background-color:var(--wa-surface-alt);border:1px dashed var(--wa-border-strong);border-radius:var(--wa-radius-sm);cursor:grab;margin-bottom:8px;padding:8px;text-align:left}.file-item:active{cursor:grabbing}.remove-btn{color:var(--wa-clay-red);cursor:pointer;font-weight:700;margin-right:8px}.progress-bar{margin-top:4px;width:100%}.submit-button{background-color:var(--wa-moss);color:#fff}.submit-button:hover{background-color:var(--wa-moss-hover)}.cancel-button{background-color:var(--wa-muted);color:var(--wa-ink)}.cancel-button:hover{background-color:var(--wa-border)}.cancel-button:disabled,.submit-button:disabled{cursor:not-allowed;opacity:.5}.song-action-btn.rename{background-color:var(--wa-accent);color:#fff}.song-action-btn.rename:hover{background-color:var(--wa-accent-hover)}.song-action-btn.delete{background-color:var(--wa-clay-red);color:#fff}.song-action-btn.delete:hover{background-color:var(--wa-clay-red-hover)}.song-action-btn.cancel{background-color:var(--wa-muted);color:var(--wa-ink)}.song-action-btn.cancel:hover{background-color:var(--wa-border)}.group-select{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);box-sizing:border-box;color:var(--wa-ink);font-size:14px;margin-bottom:10px;margin-top:6px;max-width:240px;outline:none;padding:6px 10px;transition:border-color .2s ease;width:100%}.group-select:focus{border-color:var(--wa-accent)}.audio-player-bar{background:var(--wa-ink);bottom:0;box-shadow:0 -4px 16px #3b342a26;color:#fff;display:flex;flex-direction:column;gap:8px;left:0;padding:12px 20px;position:fixed;right:0;z-index:1000}.player-header{align-items:center;display:flex;justify-content:space-between}.close-player-btn{background:#0000;border:none;color:#fff;cursor:pointer;font-size:20px;padding:0}.audio-player-bar .info{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-player-bar input[type=range]{-webkit-appearance:none;appearance:none;background:#ffffff40;border-radius:2px;cursor:pointer;height:4px;outline:none;width:100%}.audio-player-bar input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:var(--wa-gold);border-radius:50%;cursor:pointer;height:12px;margin-top:-4px;width:12px}.audio-player-bar input[type=range]::-moz-range-thumb{background:var(--wa-gold);border:none;border-radius:50%;cursor:pointer;height:12px;width:12px}.audio-player-bar .controls{align-items:center;display:flex;justify-content:center}.audio-player-bar .controls button{background:#0000;border:none;color:#fff;cursor:pointer;font-size:16px;padding:4px 12px}.audio-player-bar .controls button:hover{color:var(--wa-gold)}.audio-icon{cursor:pointer;height:32px;object-fit:contain;vertical-align:middle;width:32px}.edit-group-tabs{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));max-height:200px;overflow-y:auto;padding:5px}.edit-group-tab-item{display:flex}.edit-group-tabs .tab-button{padding:8px 14px;width:100%}.danger-button{background:#0000;border:none;color:var(--wa-clay-red);cursor:pointer;font-size:14px}@media (max-width:640px){.playlist-container{margin:20px auto;padding:20px 16px}.playlist-header{align-items:stretch}.add-button-container,.playlist-header{flex-direction:column}.add-button{text-align:center;width:100%}}.upload-size-hint{color:var(--wa-ink-soft);font-size:13px;margin:4px 0 8px}.file-picker{align-items:center;display:flex;gap:10px;justify-content:center}.file-picker-button{background-color:var(--wa-accent);border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;display:inline-block;font-size:14px;padding:6px 14px}.file-picker-button:hover{background-color:var(--wa-accent-hover)}.file-picker-button input[type=file]{display:none}.file-picker-status{color:var(--wa-ink-soft);font-size:14px}.admin-header{background:var(--wa-accent);box-shadow:var(--wa-shadow-sm);color:#fff;padding:16px 0;position:sticky;top:0;width:100%;z-index:100}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;padding:0 50px}.admin-header-title{cursor:pointer;font-size:20px;font-weight:600;letter-spacing:1px}.logout-modal-actions{display:flex;gap:20px;justify-content:center}.logout-button{background-color:initial;border:1px solid #fff6;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:8px 14px;transition:background-color .2s ease,border-color .2s ease}.logout-button:hover{background-color:var(--wa-clay-red);border-color:var(--wa-clay-red);color:#fff}.logout-modal-overlay{background:#3b342a73;height:100%;left:0;position:fixed;top:0;width:100%;z-index:999}.logout-modal-box,.logout-modal-overlay{align-items:center;display:flex;justify-content:center}.logout-modal-box{animation:scaleIn .2s ease;background-color:var(--wa-surface);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);color:var(--wa-ink);flex-direction:column;font-size:15px;gap:16px;max-width:90vw;padding:24px;width:320px}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.menu-container{align-items:center;display:flex;position:relative}.dropdown-menu{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);box-shadow:var(--wa-shadow);min-width:120px;padding:8px 0;position:absolute;right:-10px;top:60px;z-index:1000}.dropdown-menu button{background:none;border:none;color:var(--wa-ink);cursor:pointer;font-size:14px;padding:10px 16px;text-align:left;transition:background-color .2s;width:100%}.dropdown-menu button:hover{background-color:var(--wa-surface-alt)}.cancel-btn,.confirm-btn{border:none;border-radius:var(--wa-radius-sm);cursor:pointer;font-size:16px;padding:8px 16px;transition:background-color .2s ease}.confirm-btn{background-color:var(--wa-clay-red);color:#fff}.cancel-btn{background-color:var(--wa-muted);color:var(--wa-ink)}.confirm-btn:hover{background-color:var(--wa-clay-red-hover)}.cancel-btn:hover{background-color:var(--wa-border)}.menu-button{background:none;border:none;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;font-size:22px;padding:8px 12px;transition:background-color .2s ease}.menu-button:hover{background-color:#ffffff26}.export-dialog-box{max-height:85vh;max-width:90%;overflow-y:auto;text-align:left;width:420px}.export-section{margin:16px 0}.export-section-title{color:var(--wa-ink);font-weight:700;margin-bottom:8px}.export-tree{border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);max-height:220px;overflow-y:auto;padding:8px}.export-tree-row{align-items:center;color:var(--wa-ink);cursor:pointer;display:flex;font-size:14px;gap:6px;padding:4px 0}.export-tree-row-root{border-bottom:1px solid var(--wa-border);font-weight:700;margin-bottom:4px;padding-bottom:8px}.export-tree-row-label{align-items:center;cursor:pointer;display:flex;gap:6px}.export-tree-toggle{background:none;border:none;color:inherit;cursor:pointer;font-size:11px;padding:0;width:18px}.export-tree-children{margin-left:26px}.export-empty-hint{color:var(--wa-clay-red);font-size:13px;padding:4px 0}.export-date-row{display:flex;flex-wrap:wrap;gap:16px}.export-date-row label{color:var(--wa-ink-soft);display:flex;flex-direction:column;font-size:13px;gap:4px}.react-calendar{background:#fff;border:1px solid #a0a096;font-family:Arial,Helvetica,sans-serif;line-height:1.125em;max-width:100%;width:350px}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{display:flex;margin:-.5em}.react-calendar--doubleView .react-calendar__viewContainer>*{margin:.5em;width:50%}.react-calendar,.react-calendar *,.react-calendar :after,.react-calendar :before{box-sizing:border-box}.react-calendar button{border:0;margin:0;outline:none}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{display:flex;height:44px;margin-bottom:1em}.react-calendar__navigation button{background:none;min-width:44px}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:focus,.react-calendar__navigation button:enabled:hover{background-color:#e6e6e6}.react-calendar__month-view__weekdays{font:inherit;font-size:.75em;font-weight:700;text-align:center;text-transform:uppercase}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{align-items:center;display:flex;font:inherit;font-size:.75em;font-weight:700;justify-content:center}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__century-view__decades__decade--neighboringCentury,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__month-view__days__day--neighboringMonth{color:#757575}.react-calendar__century-view .react-calendar__tile,.react-calendar__decade-view .react-calendar__tile,.react-calendar__year-view .react-calendar__tile{padding:2em .5em}.react-calendar__tile{background:none;font:inherit;font-size:.833em;max-width:100%;padding:10px 6.6667px;text-align:center}.react-calendar__tile:disabled{background-color:#f0f0f0;color:#ababab}.react-calendar__century-view__decades__decade--neighboringCentury:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__month-view__days__day--neighboringMonth:disabled{color:#cdcdcd}.react-calendar__tile:enabled:focus,.react-calendar__tile:enabled:hover{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:focus,.react-calendar__tile--now:enabled:hover{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:focus,.react-calendar__tile--hasActive:enabled:hover{background:#a9d4ff}.react-calendar__tile--active{background:#006edc;color:#fff}.react-calendar__tile--active:enabled:focus,.react-calendar__tile--active:enabled:hover{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.user-calendar-container{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);height:100%;margin:50px auto;max-height:50%;max-width:50%;padding:20px;text-align:center;width:100%}.user-calendar-container .react-calendar,.user-calendar-container .user-calendar-component{background-color:initial!important;border:none!important;color:var(--wa-ink)!important;font-family:var(--wa-font)!important;height:100%;width:100%!important}.user-calendar-container .react-calendar__navigation{background-color:var(--wa-surface-alt);border-radius:var(--wa-radius-sm);display:flex;justify-content:space-between;margin-bottom:8px;padding:4px}.user-calendar-container .react-calendar__navigation button{background:none!important;border:none;border-radius:4px;color:var(--wa-ink)!important;cursor:pointer;font-size:16px;font-weight:700;padding:6px 10px;transition:background .2s ease}.user-calendar-container .react-calendar__navigation button:hover{background-color:var(--wa-border)!important}.user-calendar-container .react-calendar__month-view__weekdays{border-bottom:1px solid var(--wa-border);color:var(--wa-ink-soft);font-size:12px;font-weight:700;padding-bottom:4px;text-transform:uppercase}.user-calendar-container .react-calendar__tile{background-color:initial!important;border:none!important;border-radius:var(--wa-radius-sm);color:var(--wa-ink)!important;padding:12px 0!important;position:relative;transition:background-color .2s ease}.user-calendar-container .react-calendar__tile:hover{background-color:var(--wa-surface-alt)!important;cursor:pointer}.user-calendar-container .react-calendar__tile--active{background-color:var(--wa-accent)!important;color:#fff!important;font-weight:700!important}.user-calendar-container .react-calendar__tile--now{border:2px solid var(--wa-gold)!important;color:var(--wa-ink)!important;font-weight:700!important}.user-calendar-container .react-calendar__tile--now:enabled:focus,.user-calendar-container .react-calendar__tile--now:enabled:hover{background-color:var(--wa-gold-soft)!important;color:var(--wa-ink)!important}.user-calendar-container .react-calendar__tile:disabled{background-color:var(--wa-muted)!important;color:var(--wa-ink-faint)!important;cursor:not-allowed}.user-calendar-container .calendar-dot:after{border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:85%;transform:translate(-50%,-50%);width:8px}.user-calendar-container .calendar-dot.danger:after{background-color:var(--wa-clay-red)!important}.user-calendar-container .calendar-dot.warning:after{background-color:var(--wa-gold)!important}.user-calendar-container .calendar-dot.normal:after{background-color:var(--wa-moss)!important}.user-calendar-container .user-calendar-group-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:16px}.user-calendar-container .user-calendar-group-label{color:var(--wa-ink-soft);font-weight:700}.user-calendar-container .user-calendar-group-badges{display:flex;flex-wrap:wrap;gap:6px}.user-calendar-container .user-calendar-badge{background-color:var(--wa-muted);border-radius:var(--wa-radius-sm);color:var(--wa-ink);font-size:12px;padding:4px 8px}.user-calendar-container .user-calendar-badge-empty{color:var(--wa-ink-soft)}.user-calendar-container .user-calendar-edit-btn{background-color:var(--wa-accent);border:none;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;padding:4px 10px}.user-calendar-container .user-calendar-edit-btn:hover{background-color:var(--wa-accent-hover)}.user-calendar-dialog-overlay{align-items:center;background:#3b342a73;box-sizing:border-box;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.user-calendar-dialog-box{animation:uc-scaleIn .2s ease;background:var(--wa-surface);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow);color:var(--wa-ink);max-height:85vh;max-width:90%;overflow-y:auto;padding:24px 20px;width:340px}.user-calendar-dialog-box h3{color:var(--wa-ink);font-size:18px;font-weight:700;margin-bottom:12px}.user-calendar-checkbox-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr;margin:16px 0;text-align:left}.user-calendar-checkbox-item{align-items:center;color:var(--wa-ink);display:flex;font-size:14px;gap:6px}.user-calendar-dialog-actions{display:flex;gap:12px;justify-content:space-between;margin-top:16px}.user-calendar-dialog-actions button{border:none;border-radius:var(--wa-radius-sm);cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .2s ease}.user-calendar-dialog-actions button:first-child{background-color:var(--wa-clay-red);color:#fff}.user-calendar-dialog-actions button:first-child:hover{background-color:var(--wa-clay-red-hover)}.user-calendar-dialog-actions .primary{background-color:var(--wa-moss);color:#fff}.user-calendar-dialog-actions .primary:hover{background-color:var(--wa-moss-hover)}@keyframes uc-scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}.calendar-icon-group{display:flex;gap:6px;position:relative}.calendar-icon-rating,.calendar-icon-survey{background:#ffffffe6;border-radius:50%;box-shadow:var(--wa-shadow-sm);font-size:10px;height:16px;position:absolute;right:2px;width:16px}.calendar-icon-survey{bottom:15px}.calendar-icon-rating{bottom:0}.survey-summary{background-color:var(--wa-surface-alt);border-left:4px solid var(--wa-accent);border-radius:var(--wa-radius-sm);box-shadow:var(--wa-shadow-sm);margin-top:20px;padding:16px;width:100%}.survey-summary h4{color:var(--wa-ink);font-size:16px;font-weight:600}.survey-symptoms{margin-bottom:12px}.symptom-item{color:var(--wa-ink-soft);font-size:14px;line-height:1.4;padding:4px 0}.view-details-btn{background-color:var(--wa-accent);border:none;border-radius:var(--wa-radius-sm);color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background-color .2s ease}.view-details-btn:hover{background-color:var(--wa-accent-hover)}.survey-dialog{max-height:80vh;max-width:90%!important;overflow-y:auto;width:600px!important}.survey-meta-info{background-color:var(--wa-surface-alt);border-radius:var(--wa-radius-sm);margin-bottom:16px;padding:12px}.survey-meta-info p{color:var(--wa-ink);font-size:14px;margin:4px 0}.survey-details{margin:16px 0;text-align:left}.survey-question{background-color:var(--wa-surface-alt);border-left:3px solid var(--wa-border-strong);border-radius:var(--wa-radius-sm);margin-bottom:20px;padding:16px}.survey-question strong{color:var(--wa-ink);display:block;font-size:15px;margin-bottom:12px}.answer{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.answer-badge{border-radius:20px;font-size:12px;font-weight:600;padding:4px 12px;text-transform:uppercase}.answer-badge.yes{background-color:var(--wa-clay-red);color:#fff}.answer-badge.no{background-color:var(--wa-moss);color:#fff}.severity{background-color:var(--wa-gold-soft);border-radius:12px;color:var(--wa-ink);font-size:12px;font-weight:600;padding:4px 8px}.other-description{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);color:var(--wa-ink);font-size:14px;margin-top:8px;padding:8px;width:100%}.other-description strong{font-weight:600;margin-right:8px}.survey-brief{color:var(--wa-ink-soft);font-size:14px;font-style:italic;margin:8px 0}.selected-date-info{align-items:start;display:flex;flex-direction:column;gap:5px;margin-bottom:5px;max-width:800px}.selected-date-row{align-items:center;display:flex;flex-wrap:wrap;font-size:17px;padding:12px 0}.selected-date-label{color:var(--wa-accent);font-weight:600}.selected-date-value{background:var(--wa-surface-alt);border-radius:var(--wa-radius-sm);color:var(--wa-ink);font-size:16px;font-weight:500;margin-left:8px;padding:3px 12px;transition:background .2s}.selected-date-value.rating-value{background:var(--wa-gold-soft);border:1px solid var(--wa-gold);color:#6b5220}.selected-date-value.rating-value.empty{background:var(--wa-clay-red-soft);border:1px solid var(--wa-clay-red);color:#6b342a}@media (max-width:640px){.user-calendar-container{margin:24px auto;max-height:none;max-width:92%}}.alert-indicator{align-items:center;display:flex;gap:12px;justify-content:center;margin-top:30px}.light{border-radius:50%;box-shadow:var(--wa-shadow-sm);height:16px;width:16px}.alert-message{color:var(--wa-ink);font-size:16px}.ef-toolbar{flex-wrap:wrap;gap:20px;justify-content:center;margin-bottom:20px}.ef-toolbar,.ef-toolbar-label{align-items:center;display:flex}.ef-toolbar-label{color:var(--wa-ink);font-size:15px;gap:8px}.ef-date-input,.ef-select{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);color:var(--wa-ink);font-size:14px;padding:6px 10px}.ef-toolbar-range{color:var(--wa-ink-soft);font-size:13px}.ef-toolbar-tab{margin-bottom:0}.ef-tabs,.ef-toolbar-tab{justify-content:flex-start}.ef-tabs{-webkit-overflow-scrolling:touch;border-bottom:2px solid var(--wa-border);cursor:grab;display:flex;gap:24px;margin-bottom:24px;overflow-x:auto;scrollbar-color:var(--wa-border-strong) #0000;scrollbar-width:thin;-webkit-user-select:none;user-select:none}.ef-tabs:active{cursor:grabbing}.ef-tabs::-webkit-scrollbar{height:6px}.ef-tabs::-webkit-scrollbar-thumb{background-color:var(--wa-border-strong);border-radius:3px}.ef-tab-btn{background:none;border:none;color:var(--wa-ink-soft);cursor:pointer;font-size:15px;font-weight:600;padding:10px 4px;position:relative;transition:color .2s ease;white-space:nowrap}.ef-tab-btn:after{background:#0000;border-radius:2px 2px 0 0;bottom:-2px;content:"";height:2px;left:0;position:absolute;right:0}.ef-tab-btn:hover{color:var(--wa-ink)}.ef-tab-btn.active{color:var(--wa-accent)}.ef-tab-btn.active:after{background:var(--wa-accent)}.ef-panel{display:flex;flex-direction:column;gap:24px}.ef-panel-split{align-items:flex-start;flex-direction:row;gap:20px}.ef-card{background-color:var(--wa-surface);border:1px solid var(--wa-border);border-radius:var(--wa-radius);box-shadow:var(--wa-shadow-sm);padding:22px 24px}.ef-card-title{color:var(--wa-ink);font-size:17px;margin:0 0 4px}.ef-card-sub{color:var(--wa-ink-soft);font-size:13px;margin:0 0 18px}.ef-funnel-row{grid-gap:14px;align-items:center;display:grid;gap:14px;grid-template-columns:100px 1fr;padding:8px 0}.ef-funnel-label{color:var(--wa-ink);font-size:14px;font-weight:600}.ef-funnel-track{background-color:var(--wa-muted);height:30px;overflow:hidden;position:relative}.ef-funnel-fill,.ef-funnel-track{border-radius:var(--wa-radius-sm)}.ef-funnel-fill{align-items:center;background:var(--wa-accent);color:#fff;display:flex;font-size:12px;font-weight:600;height:100%;min-width:36px;padding:0 10px;transition:width .3s ease}.ef-adherence-scroll{max-height:320px;overflow:auto}.ef-adherence-table{border-collapse:collapse;width:100%}.ef-adherence-table th{background-color:var(--wa-surface-alt);border-bottom:1px solid var(--wa-border);color:var(--wa-ink-soft);font-size:12px;font-weight:600;padding:6px 8px;position:sticky;text-align:center;top:0}.ef-adherence-user{color:var(--wa-ink);font-weight:600;padding:6px 10px;white-space:nowrap}.ef-adherence-table td{padding:4px 6px;text-align:center}.ef-cell{background-color:var(--wa-muted);border-radius:4px;display:inline-block;height:18px;width:18px}.ef-cell-done{background-color:var(--wa-moss)}.ef-cell-flag{background-color:var(--wa-gold)}.ef-cell-miss{background-color:var(--wa-clay-red-soft);border:1px solid var(--wa-clay-red)}.ef-legend{color:var(--wa-ink-soft);display:flex;flex-wrap:wrap;font-size:12px;gap:18px;margin-top:14px}.ef-legend span{align-items:center;display:flex;gap:6px}.ef-sidebar{display:flex;flex:none;flex-direction:column;gap:10px;width:220px}.ef-search{border:1px solid var(--wa-border);border-radius:var(--wa-radius-sm);box-sizing:border-box;color:var(--wa-ink);font-size:14px;padding:8px 10px;width:100%}.ef-search,.ef-sidebar-list{background-color:var(--wa-surface)}.ef-sidebar-list{border:1px solid var(--wa-border);border-radius:var(--wa-radius);display:flex;flex-direction:column;gap:2px;max-height:480px;overflow-y:auto;padding:6px;scrollbar-color:var(--wa-border-strong) #0000;scrollbar-width:thin}.ef-sidebar-list::-webkit-scrollbar{height:6px;width:6px}.ef-sidebar-list::-webkit-scrollbar-thumb{background-color:var(--wa-border-strong);border-radius:3px}.ef-sidebar-row{background:none;border:none;border-radius:var(--wa-radius-sm);color:var(--wa-ink);cursor:pointer;font-size:14px;padding:9px 10px;text-align:left}.ef-sidebar-row:hover{background-color:var(--wa-surface-alt)}.ef-sidebar-row.active{background-color:var(--wa-accent);color:#fff}.ef-main{flex:1 1;min-width:0}.ef-detail-head{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;margin-bottom:18px}.ef-tab-heading{color:var(--wa-ink);font-size:20px;font-weight:700;min-width:0;overflow-wrap:anywhere}.ef-detail-head .ef-date-input{flex-shrink:0}.ef-event-list{display:flex;flex-direction:column}.ef-event-item{grid-gap:14px;display:grid;gap:14px;grid-template-columns:150px 1fr}.ef-event-rail{border-left:2px solid var(--wa-border);padding:0 0 16px 16px;position:relative}.ef-event-item:last-child .ef-event-rail{border-left-color:#0000;padding-bottom:0}.ef-event-rail:before{background-color:var(--wa-ink-soft);border:2px solid var(--wa-surface);border-radius:50%;content:"";height:10px;left:-6px;position:absolute;top:2px;width:10px}.ef-event-app_foreground:before,.ef-event-playback_started:before{background-color:var(--wa-moss)}.ef-event-playback_paused:before{background-color:var(--wa-gold)}.ef-event-playback_completed:before{background-color:var(--wa-accent)}.ef-event-app_background:before{background-color:var(--wa-ink-faint)}.ef-event-rating_submitted:before{background-color:var(--wa-moss)}.ef-event-adverse_survey_submitted:before{background-color:var(--wa-clay-red)}.ef-event-sync_result:before{background-color:var(--wa-ink-soft)}.ef-event-time{color:var(--wa-ink-soft);font-size:12px;padding-top:1px;white-space:nowrap}.ef-event-title{color:var(--wa-ink);font-size:14px;font-weight:600}.ef-event-meta{color:var(--wa-ink-soft);font-size:12px;margin-top:2px}.ef-song-rows{display:flex;flex-direction:column;gap:12px}.ef-song-row{grid-gap:14px;align-items:center;display:grid;gap:14px;grid-template-columns:90px 1fr 200px}.ef-song-user{color:var(--wa-ink);font-size:14px;font-weight:600}.ef-progress-track{background-color:var(--wa-muted);border-radius:var(--wa-radius-sm);height:20px;position:relative}.ef-progress-fill{background-color:var(--wa-moss);border-radius:var(--wa-radius-sm);inset:0;position:absolute}.ef-progress-fill.incomplete{background:repeating-linear-gradient(135deg,var(--wa-clay-red) 0,var(--wa-clay-red) 5px,var(--wa-clay-red-soft) 5px,var(--wa-clay-red-soft) 10px);opacity:.85}.ef-progress-pin{background-color:var(--wa-gold);border:2px solid var(--wa-surface);border-radius:50%;cursor:default;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}.ef-progress-pin.long{background-color:var(--wa-accent);height:14px;width:14px}.ef-progress-pin:after{background-color:var(--wa-ink);border-radius:var(--wa-radius-sm);bottom:150%;color:#fff;content:attr(data-tip);font-size:11px;left:50%;opacity:0;padding:5px 9px;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(4px);transition:opacity .12s ease,transform .12s ease;white-space:nowrap;z-index:5}.ef-progress-pin:focus-visible:after,.ef-progress-pin:hover:after{opacity:1;transform:translateX(-50%) translateY(0)}.ef-song-stat{color:var(--wa-ink-soft);font-size:12px;text-align:right;white-space:nowrap}.ef-subject-progress{border-bottom:1px solid var(--wa-border);margin-bottom:22px;padding-bottom:20px}.ef-subject-progress-head{align-items:baseline;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.ef-subject-progress-song{color:var(--wa-ink);font-size:14px;font-weight:600}@media (max-width:720px){.ef-toolbar-label{align-items:flex-start;flex-direction:column;gap:6px;width:100%}.ef-toolbar-label .ef-date-input{box-sizing:border-box;width:100%}.ef-panel-split{flex-direction:column}.ef-main,.ef-sidebar{width:100%}.ef-sidebar-list{-webkit-overflow-scrolling:touch;cursor:grab;flex-direction:row;max-height:none;overflow-x:auto;overflow-y:visible;-webkit-user-select:none;user-select:none}.ef-sidebar-list:active{cursor:grabbing}.ef-sidebar-row{flex:none;white-space:nowrap}.ef-event-item{grid-template-columns:100px 1fr}.ef-song-row{grid-template-columns:70px 1fr}.ef-song-stat{grid-column:1/-1;text-align:left}}
/*# sourceMappingURL=main.e3d17e98.css.map*/