:root{--primary: #004d27;--primary-hover: #003a1d;--on-primary: #ffffff;--primary-container: #006837;--on-primary-container: #8ee4a6;--primary-fixed-dim: #83d99c;--primary-fixed: #9ef6b6;--surface-bg: #f8f9ff;--surface-container-lowest: #ffffff;--surface-container-low: #eff4ff;--surface-container: #e5eeff;--surface-container-high: #dce9ff;--surface-container-highest: #d3e4fe;--on-surface: #0b1c30;--on-surface-variant: #3f4940;--outline: #6f7a70;--outline-variant: #bec9be;--error: #ba1a1a;--error-bright: #ef4444;--error-container: #ffdad6;--on-error-container: #93000a;--tertiary: #762730;--tertiary-bright: #3b82f6;--tertiary-container: #943e46;--on-tertiary-container: #ffc3c5;--secondary: #5c5f61;--secondary-bright: #f59e0b;--secondary-container: #e0e3e5;--on-secondary-container: #626567;--success-bright: #22c55e;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 2px 6px rgba(0, 0, 0, .03);--shadow-md: 0 4px 16px rgba(11, 28, 48, .06);--shadow-lg: 0 8px 28px rgba(0, 77, 39, .12);--sidebar-width: 280px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-family);background-color:var(--surface-bg);color:var(--on-surface);line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{min-height:100vh;display:flex}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}.app-layout{display:flex;width:100%;min-height:100vh}.sidebar{position:fixed;left:0;top:0;height:100vh;width:var(--sidebar-width);background-color:var(--primary);color:var(--on-primary);z-index:50;display:flex;flex-direction:column;box-shadow:2px 0 12px #00000014}.sidebar-header{padding:24px;display:flex;items-center:center;gap:12px;margin-bottom:24px}.sidebar-brand-title{font-size:22px;font-weight:700;letter-spacing:-.01em}.sidebar-nav{flex:1;padding:0 16px;display:flex;flex-direction:column;gap:8px}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 18px;border-radius:var(--radius-md);color:#ffffffd9;text-decoration:none;font-size:15px;font-weight:500;transition:all .2s ease}.nav-item:hover{background-color:#ffffff1f;color:#fff}.nav-item.active{background-color:var(--primary-container);color:var(--on-primary-container);font-weight:600;box-shadow:0 4px 12px #00000026}.sidebar-footer{padding:20px;border-top:1px solid rgba(255,255,255,.12);text-align:center;font-size:12px;opacity:.7}.main-content{flex:1;margin-left:var(--sidebar-width);min-height:100vh;display:flex;flex-direction:column;position:relative;background-color:var(--surface-bg)}.top-header{position:sticky;top:0;height:72px;background-color:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:40;display:flex;align-items:center;justify-content:flex-end;padding:0 32px;gap:16px;border-bottom:1px solid rgba(0,0,0,.04)}.icon-button{width:40px;height:40px;border-radius:var(--radius-full);border:none;background:transparent;color:var(--on-surface-variant);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .2s}.icon-button:hover{background-color:var(--surface-container-high)}.user-avatar-badge{width:36px;height:36px;border-radius:var(--radius-full);background-color:var(--primary);color:var(--on-primary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px}.page-container{padding:32px;max-width:1280px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:28px}.display-title{font-size:38px;font-weight:700;letter-spacing:-.02em;color:var(--on-surface);line-height:1.15}.subtitle-text{font-size:16px;color:var(--on-surface-variant);display:flex;align-items:center;gap:8px}.section-title{font-size:20px;font-weight:600;color:var(--on-surface)}.card-surface{background-color:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);border:1px solid rgba(0,0,0,.03)}.card-surface-low{background-color:var(--surface-container-low);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm)}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:10px;background-color:var(--primary);color:var(--on-primary);font-size:16px;font-weight:600;padding:14px 28px;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);box-shadow:0 4px 12px #004d2733;text-decoration:none}.btn-primary:hover{background-color:var(--primary-container);transform:translateY(-1px);box-shadow:0 6px 18px #004d2747}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;background-color:var(--surface-container-high);color:var(--on-surface);font-size:14px;font-weight:600;padding:10px 20px;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all .2s;text-decoration:none}.btn-secondary:hover{background-color:var(--surface-container-highest)}.badge-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--radius-full);font-size:13px;font-weight:600}.badge-present{background-color:#0068371f;color:var(--primary)}.badge-absent{background-color:#ba1a1a1f;color:var(--error)}.badge-excused{background-color:#7627301f;color:var(--tertiary)}.badge-late{background-color:#5c5f6126;color:var(--on-surface)}.dot-indicator{width:8px;height:8px;border-radius:50%;display:inline-block}.dot-present{background-color:var(--success-bright)}.dot-absent{background-color:var(--error-bright)}.dot-excused{background-color:var(--tertiary-bright)}.dot-late{background-color:var(--secondary-bright)}.musician-avatar{width:38px;height:38px;border-radius:50%;background-color:var(--surface-container-high);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0}.action-btn{padding:6px 12px;font-size:13px}.table-container{width:100%;overflow-x:auto;border-radius:var(--radius-lg);background:var(--surface-container-lowest);box-shadow:var(--shadow-sm)}.custom-table{width:100%;border-collapse:collapse;text-align:left}.custom-table th{background-color:var(--surface-container-low);padding:14px 20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);border-bottom:1px solid var(--surface-container)}.custom-table td{padding:16px 20px;font-size:15px;color:var(--on-surface);border-bottom:1px solid var(--surface-container-low);vertical-align:middle}.custom-table tr:last-child td{border-bottom:none}.custom-table tr:hover td{background-color:#e5eeff4d}.status-buttons-group{display:flex;gap:8px;justify-content:center}.status-btn{width:44px;height:44px;border-radius:var(--radius-md);border:none;background-color:var(--surface-container);color:var(--on-surface-variant);font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s cubic-bezier(.16,1,.3,1)}.status-btn:active{transform:scale(.92)}.status-btn.active.btn-p{background-color:var(--primary);color:#fff;box-shadow:0 4px 10px #004d274d}.status-btn.active.btn-a{background-color:var(--error-bright);color:#fff;box-shadow:0 4px 10px #ef44444d}.status-btn.active.btn-j{background-color:var(--tertiary);color:#fff;box-shadow:0 4px 10px #7627304d}.status-btn.active.btn-t{background-color:var(--secondary-bright);color:#fff;box-shadow:0 4px 10px #f59e0b4d}.form-control{width:100%;padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--surface-container-high);background-color:var(--surface-container-low);font-size:15px;color:var(--on-surface);outline:none;transition:border-color .2s,background-color .2s}.form-control:focus{border-color:var(--primary);background-color:#fff}.search-input-wrapper{position:relative;flex:1}.search-input-wrapper .material-symbols-outlined{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--on-surface-variant);pointer-events:none}.search-input-wrapper input{padding-left:48px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0b1c3066;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.modal-card{background-color:#fff;border-radius:var(--radius-xl);padding:32px;width:100%;max-width:520px;box-shadow:0 20px 40px #00000026;display:flex;flex-direction:column;gap:20px}.mobile-nav-toggle,.mobile-bottom-nav,.mobile-app-logo,.mobile-app-title{display:none}.desktop-user-info{display:block}.pwa-status-banner{padding:10px 20px;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:60;animation:slideDown .3s ease}@keyframes slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.pwa-status-banner.offline{background-color:var(--tertiary-container);color:var(--on-tertiary-container)}.pwa-status-banner.install{background-color:var(--primary);color:var(--on-primary)}.btn-install-pwa{background-color:var(--primary-fixed);color:var(--primary);border:none;padding:6px 14px;border-radius:var(--radius-full);font-size:12px;font-weight:700;cursor:pointer;transition:opacity .2s}.btn-install-pwa:hover{opacity:.9}.btn-dismiss-pwa{background:transparent;border:none;color:#fffc;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:4px}html,body{overflow-x:hidden;max-width:100vw}#root,.app-layout{max-width:100vw;overflow-x:hidden}.main-content{overflow-x:hidden;max-width:100%;min-width:0}.page-content-wrapper,.page-container{max-width:100%;min-width:0;box-sizing:border-box}.card-surface,.card-surface-low{box-sizing:border-box;max-width:100%;min-width:0}@media(max-width:900px){.sidebar{transform:translate(-100%);transition:transform .3s ease}.sidebar.open{transform:translate(0)}.main-content{margin-left:0}.desktop-user-info{display:none}.mobile-app-logo,.mobile-app-title{display:flex}.page-container{padding:16px 16px 96px}.mobile-nav-toggle{display:flex;align-items:center;justify-content:center}.top-header{justify-content:space-between;padding:0 16px}.display-title{font-size:26px}.custom-table th,.custom-table td{padding:12px 10px}.mobile-bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:64px;background-color:#fff;border-top:1px solid rgba(0,0,0,.08);box-shadow:0 -4px 16px #0000000f;z-index:50;align-items:center;justify-content:space-around;padding:0 8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.mobile-nav-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--on-surface-variant);text-decoration:none;font-size:11px;font-weight:500;flex:1;padding:6px 0;border-radius:var(--radius-sm);transition:color .15s ease}.mobile-nav-link .material-symbols-outlined{font-size:22px}.mobile-nav-link.active{color:var(--primary);font-weight:700}.mobile-nav-link.active .material-symbols-outlined{font-variation-settings:"FILL" 1}.sticky-attendance-header{top:72px!important}}@media(max-width:600px){.page-container{padding:12px 12px 88px;gap:16px}.card-surface,.card-surface-low{padding:14px;border-radius:var(--radius-md)}.display-title{font-size:22px;word-break:break-word}.section-title{font-size:17px}.subtitle-text{font-size:13px;flex-wrap:wrap}.search-input-wrapper{width:100%!important;flex:1 1 100%!important}.form-control{width:100%!important;min-width:0!important}.sticky-attendance-header{top:56px!important;padding:12px!important;border-radius:var(--radius-md)!important;width:100%!important;box-sizing:border-box!important}.modal-card{padding:20px;max-height:90vh;max-width:95vw;overflow-y:auto}.musician-avatar,.badge-text{display:none!important}.badge-pill{padding:4px 8px!important;gap:0!important}.action-btn-text{display:none!important}.action-btn{padding:6px 8px!important;min-width:32px;justify-content:center}}.custom-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .15s ease}.custom-table th.sortable:hover{background-color:var(--surface-container);color:var(--primary)}.sort-indicator{display:inline-flex;align-items:center;margin-left:4px;font-size:11px;vertical-align:middle}.summary-kpi-grid{gap:8px}.summary-kpi-grid .card-surface{padding:12px}.summary-kpi-grid .card-surface>div:nth-child(2){font-size:28px!important}.summary-kpi-grid .card-surface>div:nth-child(3){font-size:11px!important}
