.alerts-page{flex-direction:column;gap:20px;height:100%;padding:24px;display:flex}.alerts-stats{gap:16px;display:flex}.alerts-layout{flex:1;grid-template-columns:380px 1fr;align-items:start;gap:20px;min-height:500px;display:grid}.alerts-list-panel{border:1px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;height:600px;display:flex;overflow:hidden}.alerts-list{flex:1;overflow-y:auto}.alert-row{border-bottom:1px solid var(--border);cursor:pointer;align-items:center;gap:12px;padding:14px 16px;transition:background .2s;display:flex}.alert-row:hover{background:#f9fafb}.alert-row.selected{background:#f4f5f7}.alert-row-info{flex-direction:column;flex:1;min-width:0;display:flex}.alert-row-info strong{color:var(--text-main);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.alert-row-info span{color:var(--text-muted);margin-top:2px;font-size:12px}.alert-avatar-sm{color:#4f46e5;background:#eef2ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.alert-avatar-lg{color:#4f46e5;background:#eef2ff;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.alert-detail-panel{border:1px solid var(--border);background:#fff;border-radius:12px;flex-direction:column;gap:24px;min-height:600px;padding:24px;display:flex}.alert-detail-empty{border:2px dashed var(--border);color:var(--text-muted);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;height:600px;font-size:14px;display:flex}.alert-body-box{color:#334155;white-space:pre-wrap;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;font-size:14px;line-height:1.6}.group-badge{border-radius:6px;margin-top:4px;padding:4px 8px;font-size:12px;font-weight:500;display:inline-block}.badge-all{color:#15803d;background:#dcfce7}.badge-group{color:#1d4ed8;background:#dbeafe}@media (width<=768px){.alerts-layout{grid-template-columns:1fr;min-height:auto}.alerts-list-panel{height:40vh}.alert-detail-panel,.alert-detail-empty{height:auto}.alerts-stats{flex-wrap:wrap}.stat-card{flex:40%}}.athletes-page{padding:20px}.athletes-stats{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px;margin-bottom:20px;display:grid}.stat-card .stat-value{color:var(--primary);font-size:24px;font-weight:700;display:block}.stat-card .stat-label{color:var(--text-muted);font-size:12px}.athletes-layout{grid-template-columns:320px 1fr;align-items:start;gap:20px;display:grid}.athletes-list-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.list-search{border-bottom:1px solid var(--border);background:var(--bg-main);padding:12px;position:relative}.list-search .search-icon{color:var(--text-muted);position:absolute;top:50%;left:22px;transform:translateY(-50%)}.list-search input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);width:100%;color:var(--text-primary);outline:none;padding:8px 12px 8px 30px;font-size:13px}.list-search input:focus{border-color:var(--primary)}.athletes-list{max-height:520px;overflow-y:auto}.athlete-row{cursor:pointer;border-bottom:1px solid var(--border-light);align-items:center;gap:12px;padding:12px 16px;transition:all .15s;display:flex}.athlete-row:last-child{border-bottom:none}.athlete-row:hover{background:var(--bg-main)}.athlete-row.selected{background:var(--primary-light);border-left:3px solid var(--primary)}.athlete-avatar-sm{background:linear-gradient(135deg, var(--primary), #00c6ff);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:flex}.athlete-row-info{flex:1;min-width:0}.athlete-row-info strong{white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:14px;display:block;overflow:hidden}.athlete-row-info span{color:var(--text-muted);font-size:12px}.athlete-row-percent{flex-shrink:0;font-size:13px;font-weight:700}.list-empty{text-align:center;color:var(--text-muted);padding:30px;font-size:14px}.athlete-detail-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);position:sticky;top:20px;overflow:hidden}.athlete-detail-empty{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:60px;font-size:14px;display:flex}.detail-header{border-bottom:1px solid var(--border);background:var(--bg-main);align-items:center;gap:14px;padding:20px;display:flex;position:relative}.athlete-avatar-lg{background:linear-gradient(135deg, var(--primary), #00c6ff);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;font-size:20px;font-weight:700;display:flex}.detail-header h2{margin-bottom:4px;font-size:17px}.detail-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;padding:4px;display:flex;position:absolute;top:16px;right:16px}.detail-close:hover{background:var(--bg-card)}.detail-section{border-bottom:1px solid var(--border-light);padding:16px 20px}.detail-section h3{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;align-items:center;gap:6px;margin-bottom:12px;font-size:13px;font-weight:600;display:flex}.detail-row{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:8px;font-size:14px;display:flex}.detail-row:last-child{margin-bottom:0}.detail-stats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px;display:grid}.detail-stat{text-align:center}.detail-stat-value{font-size:22px;font-weight:700;display:block}.detail-stat-label{color:var(--text-muted);font-size:11px}.detail-progress{background:var(--bg-main);border-radius:10px;height:8px;overflow:hidden}.detail-progress-fill{background:linear-gradient(90deg, var(--primary), #00c6ff);border-radius:10px;height:100%;transition:width .4s}.detail-actions{gap:10px;padding:14px 20px;display:flex}.group-badge{background:var(--primary-light);color:var(--primary);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500}.btn-small{align-items:center;gap:6px;padding:8px 14px;font-size:13px;display:inline-flex}.error-message{color:#ef4444;margin-top:4px;font-size:12px}.modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-header h2{font-size:16px}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px;display:flex}.modal-close:hover{background:var(--bg-main)}.form-group label{color:var(--text-secondary);align-items:center;gap:6px;margin-bottom:6px;font-size:13px;font-weight:500;display:flex}.form-group input,.form-group select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);width:100%;color:var(--text-primary);outline:none;padding:10px 12px;font-size:14px;transition:all .2s}@media (width<=768px){.athletes-page{padding:12px}.athletes-layout{grid-template-columns:1fr}.athletes-list{max-height:300px}.athlete-detail-panel{position:static}.detail-stats,.athletes-stats{grid-template-columns:repeat(2,1fr)}}.attendance-page{padding:20px}.page-header{justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px;display:flex}.btn-back-focus{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-md);cursor:pointer;align-items:center;gap:8px;padding:8px 14px;font-size:13px;transition:all .15s;display:flex}.btn-back-focus:hover{background:var(--bg-main);border-color:var(--text-muted)}.attendance-layout{grid-template-columns:280px 1fr;align-items:start;gap:20px;display:grid}.attendance-layout.single-focus{grid-template-columns:1fr;max-width:850px;margin:0 auto}.training-panel{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);position:sticky;top:20px;overflow:hidden}.training-panel-header{border-bottom:1px solid var(--border);background:var(--bg-main);padding:14px 16px}.training-panel-header h3{text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);margin-bottom:12px;font-size:11px;font-weight:600}.filters-wrapper{flex-direction:column;gap:8px;display:flex}.search-input-container{width:100%;position:relative}.search-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.training-search{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);width:100%;color:var(--text-primary);outline:none;padding:8px 12px 8px 32px;font-size:13px;transition:border-color .15s}.training-search:focus,.filter-select:focus{border-color:var(--primary)}.filter-row{gap:6px;display:flex}.filter-select{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-card);min-width:0;color:var(--text-primary);cursor:pointer;outline:none;flex:1;padding:7px 10px;font-size:12px}.training-list{max-height:calc(100vh - 320px);overflow-y:auto}.training-item{cursor:pointer;border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:12px 16px;transition:all .15s;display:flex}.training-item:last-child{border-bottom:none}.training-item:hover{background:var(--bg-main)}.training-item.selected{background:var(--primary-light);border-left:3px solid var(--primary)}.training-item-info{flex:1;min-width:0;padding-right:10px}.training-item-info strong{text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;font-size:13px;display:block;overflow:hidden}.training-item-group{color:var(--text-muted);flex-direction:column;gap:1px;font-size:11px;display:flex}.badge-dot{margin-top:2px;font-size:10px;font-weight:600}.badge-dot.checked{color:#10b981}.badge-dot.unchecked{color:#f59e0b}.training-item-date{text-align:right;flex-shrink:0}.training-item-date .date{color:var(--text-secondary);font-size:11px;display:block}.training-item-date .time{color:var(--primary);font-size:13px;font-weight:600}.training-empty{text-align:center;color:var(--text-muted);padding:24px;font-size:13px}.attendance-content{flex-direction:column;gap:14px;display:flex}.attendance-header-card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:16px 20px}.attendance-header-card h2{margin-bottom:6px;font-size:16px}.attendance-header-meta{color:var(--text-secondary);flex-wrap:wrap;gap:16px;font-size:12px;display:flex}.attendance-header-meta span{align-items:center;gap:6px;display:flex}.attendance-stats{gap:10px;display:flex}.stat{background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border);flex:1;align-items:center;gap:10px;padding:10px 16px;display:flex}.stat-present{border-left:3px solid var(--success)}.stat-absent{border-left:3px solid var(--danger)}.stat-total{border-left:3px solid var(--primary)}.stat .stat-value{font-size:22px;font-weight:700;line-height:1}.stat-present .stat-value{color:var(--success)}.stat-absent .stat-value{color:var(--danger)}.stat-total .stat-value{color:var(--primary)}.stat .stat-label{color:var(--text-muted);font-size:12px}.attendance-table{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden}.attendance-table .table-header{background:var(--bg-main);color:var(--text-secondary);grid-template-columns:2fr 1fr 80px;padding:12px 16px;font-size:12px;font-weight:500;display:grid}.attendance-table .table-row{border-bottom:1px solid var(--border-light);grid-template-columns:2fr 1fr 80px;align-items:center;padding:10px 16px;transition:background .15s;display:grid}.attendance-table .table-row:last-child{border-bottom:none}.attendance-table .table-row:hover{background:var(--bg-main)}.table-empty-row{text-align:center;color:var(--text-muted);padding:30px;font-size:14px}.athlete-name{align-items:center;gap:10px;font-size:14px;font-weight:500;display:flex}.athlete-avatar{background:linear-gradient(135deg, var(--primary), #00c6ff);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:12px;font-weight:600;display:flex}.checkbox-container{cursor:pointer;justify-content:center;align-items:center;display:flex}.checkbox-container input{display:none}.checkmark{border:2px solid var(--border);border-radius:var(--radius-sm);justify-content:center;align-items:center;width:20px;height:20px;transition:all .15s;display:flex}.checkbox-container input:checked+.checkmark{background:var(--success);border-color:var(--success)}.checkbox-container input:checked+.checkmark:after{content:"✓";color:#fff;font-size:12px;font-weight:700}.checkbox-container input:disabled+.checkmark{opacity:.4;cursor:not-allowed}.attendance-actions{justify-content:flex-end;display:flex}.btn-large{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;align-items:center;gap:8px;padding:10px 24px;font-size:14px;font-weight:500;transition:all .15s;display:inline-flex}.btn-primary:hover{opacity:.9}.empty-state{background:var(--bg-card);border-radius:var(--radius-lg);text-align:center;color:var(--text-muted);border:1px solid var(--border);padding:40px}@media (width<=768px){.attendance-page{padding:12px}.attendance-layout{grid-template-columns:1fr}.training-panel{position:static}.training-list{max-height:240px}.attendance-stats{gap:6px}.stat{gap:6px;padding:8px 10px}.stat .stat-value{font-size:18px}.stat .stat-label{font-size:11px}.attendance-table .table-header,.attendance-table .table-row{grid-template-columns:1.2fr 1fr 60px;padding:10px 12px;font-size:12px}.athlete-avatar{width:26px;height:26px;font-size:11px}.athlete-name{gap:8px;font-size:13px}.status-badge{padding:2px 6px;font-size:10px}.attendance-header-card{padding:12px 14px}.attendance-header-card h2{font-size:14px}.attendance-header-meta{gap:8px;font-size:11px}.btn-large{justify-content:center;width:100%}.attendance-actions{justify-content:stretch}}.fitness-page{max-width:1200px;padding:24px}.page-header-left{flex-direction:column;gap:3px;display:flex}.page-header h1{color:var(--text-primary);align-items:center;gap:9px;font-size:20px;font-weight:700;display:flex}.page-subtitle{color:var(--text-muted);margin-left:29px;font-size:13px}.header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stats-row{flex-wrap:wrap;gap:12px;margin-bottom:20px;display:flex}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);flex:1;align-items:center;gap:14px;min-width:130px;padding:14px 18px;display:flex}.stat-icon{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.stat-icon--blue{background:var(--primary-light);color:var(--primary)}.stat-icon--green{background:var(--success-light);color:var(--success)}.stat-icon--purple{color:#7c3aed;background:#ede9fe}.stat-icon--orange{color:#d97706;background:#fef3c7}.stat-body{flex-direction:column;gap:1px;display:flex}.stat-value{color:var(--text-primary);font-size:20px;font-weight:700;line-height:1}.stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:500}.categories-section{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.categories-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;font-size:11px;font-weight:600}.categories-row{flex-wrap:wrap;gap:6px;display:flex}.category-tag{background:var(--bg-card);border:1px solid var(--border);border-radius:20px;align-items:center;gap:6px;padding:4px 10px 4px 12px;font-size:12px;transition:border-color .15s;display:inline-flex}.category-tag:hover{border-color:var(--primary)}.cat-name{color:var(--text-primary);font-weight:500}.cat-unit{background:var(--primary-light);color:var(--primary);border-radius:10px;padding:1px 7px;font-size:11px;font-weight:600}.cat-delete{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:50%;align-items:center;margin-left:2px;padding:3px;transition:all .15s;display:flex}.cat-delete:hover{background:var(--danger-light);color:var(--danger)}.fitness-filters{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;display:flex}.filters-left{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filters-right{gap:8px;display:flex}.fitness-filters select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-main);color:var(--text-primary);cursor:pointer;outline:none;padding:7px 10px;font-size:13px;transition:border-color .15s}.fitness-filters select:focus{border-color:var(--primary)}.fitness-table-wrap{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:auto hidden}.fitness-table{min-width:580px}.ft-header{background:var(--bg-main);color:var(--text-muted);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.05em;grid-template-columns:2fr 1.5fr 1fr 1.2fr 2fr 80px;padding:10px 20px;font-size:11px;font-weight:600;display:grid}.ft-header.no-athlete{grid-template-columns:1.5fr 1fr 1.2fr 2fr 80px}.ft-row{border-bottom:1px solid var(--border-light);grid-template-columns:2fr 1.5fr 1fr 1.2fr 2fr 80px;align-items:center;padding:12px 20px;font-size:13px;transition:background .12s;display:grid}.ft-row.no-athlete{grid-template-columns:1.5fr 1fr 1.2fr 2fr 80px}.ft-row:last-child{border-bottom:none}.ft-row:hover{background:var(--bg-main)}.ft-athlete{color:var(--text-primary);align-items:center;gap:9px;font-weight:500;display:flex}.ft-avatar{background:linear-gradient(135deg, var(--primary) 0%, #00c6ff 100%);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:11px;font-weight:700;display:flex}.category-badge{background:var(--primary-light);color:var(--primary);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:500;display:inline-block}.ft-value{align-items:baseline;gap:4px;display:flex}.ft-value strong{color:var(--text-primary);font-size:15px;font-weight:700}.ft-unit{color:var(--text-muted);font-size:11px}.ft-date{color:var(--text-secondary);font-size:12px}.ft-notes{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.ft-actions{justify-content:flex-end;gap:4px;display:flex}.btn-icon-edit,.btn-icon-danger{cursor:pointer;border-radius:var(--radius-sm);color:var(--text-muted);background:0 0;border:none;align-items:center;padding:6px;transition:all .15s;display:flex}.btn-icon-edit:hover{background:var(--primary-light);color:var(--primary)}.btn-icon-danger:hover{background:var(--danger-light);color:var(--danger)}.fitness-empty{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:64px 20px;display:flex}.empty-icon{background:var(--bg-main);width:60px;height:60px;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;margin-bottom:4px;display:flex}.empty-title{color:var(--text-secondary);font-size:15px;font-weight:600}.empty-sub{color:var(--text-muted);margin-bottom:8px;font-size:13px}.modal{background:var(--bg-card);border-radius:var(--radius-lg);width:100%;max-width:460px;box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border);background:var(--bg-card);z-index:1;justify-content:space-between;align-items:center;padding:16px 20px;display:flex;position:sticky;top:0}.modal-header h2{color:var(--text-primary);font-size:15px;font-weight:600}.modal-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:5px;transition:all .15s;display:flex}.modal-form{padding:18px 20px}.form-group{margin-bottom:14px}.form-group label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:6px;margin-bottom:6px;font-size:12px;font-weight:600;display:flex}.label-optional{color:var(--text-muted);text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}.form-group input,.form-group select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);width:100%;color:var(--text-primary);box-sizing:border-box;outline:none;padding:10px 12px;font-size:14px;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.error-message{color:var(--danger);margin-top:5px;font-size:12px;display:block}.btn{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 18px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.btn-ghost{color:var(--text-secondary);background:0 0;border:1px solid #0000}.btn-ghost:hover{background:var(--bg-main);border-color:var(--border)}@media (width<=768px){.fitness-page{padding:14px}.stats-row{gap:8px}.stat-card{min-width:110px;padding:12px 14px}.stat-value{font-size:18px}.categories-section,.fitness-filters{gap:8px}.fitness-filters select{font-size:12px}.ft-header{display:none}.ft-row{flex-direction:column;align-items:flex-start;gap:6px;padding:14px 16px;display:flex;position:relative}.ft-actions{position:absolute;top:12px;right:12px}.ft-notes{white-space:normal}.form-row{grid-template-columns:1fr}}@media (width<=480px){.page-header{gap:10px}.stat-card{min-width:calc(50% - 6px)}.modal{border-radius:var(--radius-md)}}.groups-page{padding:30px}.groups-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px;display:grid}.group-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.group-header{border-left:4px solid;align-items:center;gap:15px;padding:20px;display:flex}.group-color{border-radius:var(--radius-sm);width:40px;height:40px}.group-header h3{margin-bottom:4px}.group-header p{color:var(--text-muted);font-size:14px}.group-athletes{border-top:1px solid var(--border-light);padding:20px}.group-athletes h4{color:var(--text-secondary);margin-bottom:15px;font-size:14px}.athlete-list{flex-direction:column;gap:10px;margin-bottom:15px;display:flex}.athlete-item{align-items:center;gap:10px;display:flex}.mini-avatar{background:var(--primary-light);width:28px;height:28px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}.group-actions{border-top:1px solid var(--border-light);background:var(--bg-main);gap:10px;padding:15px 20px;display:flex}.btn-small{white-space:nowrap;align-items:center;gap:6px;line-height:1;display:inline-flex}.group-actions .btn-small,.group-athletes .btn-small{align-items:center;gap:6px;display:inline-flex}.messages-page{background:var(--bg-main);box-sizing:border-box;flex-direction:column;height:calc(100vh - 75px);padding:24px;display:flex}.messages-page h1{color:var(--text-primary);margin:0 0 16px;font-size:24px}.messages-container{flex:1;grid-template-columns:360px 1fr;gap:20px;height:100%;min-height:0;display:grid}.conversations-scroll::-webkit-scrollbar{width:6px}.messages-list::-webkit-scrollbar{width:6px}.conversations-scroll::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:3px}.messages-list::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:3px}.conversations-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;display:flex;overflow:hidden}.filters{background:var(--bg-card);border-bottom:1px solid var(--border-light);flex-direction:column;gap:10px;padding:16px;display:flex}.filters input{border:1px solid var(--border);border-radius:var(--radius-md);outline:none;padding:10px 14px;font-size:14px;transition:border-color .2s}.filters select{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;background:var(--bg-card);outline:none;padding:10px 14px;font-size:14px}.filters input:focus,.filters select:focus{border-color:var(--primary)}.conversations-scroll{flex:1;overflow-y:auto}.conversation-item{cursor:pointer;border-bottom:1px solid var(--border-light);color:inherit;align-items:center;gap:14px;padding:14px 20px;text-decoration:none;transition:background .2s;display:flex}.conversation-item:hover{background:var(--bg-main)}.conversation-item.active{background:var(--primary-light);border-left:4px solid var(--primary);padding-left:16px}.conversation-avatar{background:linear-gradient(135deg, var(--primary), #38bdf8);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:16px;font-weight:700;display:flex}.conversation-info{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.conversation-info strong{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:15px;overflow:hidden}.role-badge{border-radius:20px;align-self:flex-start;padding:2px 8px;font-size:11px;font-weight:600}.role-badge.trainer{color:#0369a1;background:#e0f2fe}.role-badge.athlete{color:#475569;background:#f1f5f9}.no-results{text-align:center;color:var(--text-muted);padding:30px;font-size:14px}.chat-area{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;height:100%;display:flex;position:relative;overflow:hidden}.chat-header{border-bottom:1px solid var(--border);background:var(--bg-card);z-index:10;align-items:center;gap:12px;padding:16px 20px;display:flex}.btn-back-mobile{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;margin-right:4px;padding:4px;display:none}.chat-header-avatar{background:var(--border);width:40px;height:40px;color:var(--text-primary);border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.chat-header-info h3{color:var(--text-primary);margin:0;font-size:16px}.chat-header-info span{color:var(--text-muted);font-size:12px}.messages-list{-webkit-overflow-scrolling:touch;background:#fafbfc;flex-direction:column;flex:1;gap:16px;padding:24px;display:flex;overflow-y:auto}.message{width:100%;display:flex}.message.mine{justify-content:flex-end}.message.theirs{justify-content:flex-start}.message-bubble{flex-direction:column;gap:6px;max-width:65%;padding:12px 16px;display:flex;box-shadow:0 1px 2px #0000000d}.message.mine .message-bubble{background:var(--primary);color:#fff;border-radius:16px 16px 4px}.message.theirs .message-bubble{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-light);border-radius:16px 16px 16px 4px}.message-bubble p{word-break:break-word;white-space:pre-wrap;margin:0;font-size:15px;line-height:1.5}.message-time{opacity:.7;align-self:flex-end;font-size:10px}.message-attachment{border-radius:var(--radius-md);color:inherit;background:#0000000a;align-items:center;gap:10px;padding:10px 14px;font-size:13px;font-weight:500;text-decoration:none;transition:background .2s;display:flex}.message.mine .message-attachment{background:#ffffff26}.message-attachment:hover{background:#00000014}.message.mine .message-attachment:hover{background:#ffffff40}.attachment-name{white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.message-image-link{border-radius:var(--radius-md);background:#f0f0f0;margin-bottom:2px;display:block;overflow:hidden}.message-inline-image{object-fit:cover;max-width:100%;max-height:280px;transition:opacity .2s;display:block}.message-inline-image:hover{opacity:.95}.message-composer{border-top:1px solid var(--border);background:var(--bg-card);flex-direction:column;display:flex}.error-message{background:var(--danger-light);color:var(--danger);justify-content:space-between;align-items:center;padding:10px 20px;font-size:13px;display:flex}.error-close{color:var(--danger);cursor:pointer;background:0 0;border:none}.file-preview{background:var(--primary-light);color:var(--primary);border-bottom:1px solid var(--border-light);align-items:center;gap:10px;padding:10px 20px;font-size:13px;display:flex}.file-preview-name{white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:500;overflow:hidden}.file-preview-remove{color:var(--danger);cursor:pointer;background:0 0;border:none}.message-input{align-items:center;gap:12px;padding:16px 20px;display:flex}.btn-attach{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:8px;transition:background .2s,color .2s;display:flex}.btn-attach:hover{background:var(--bg-main);color:var(--primary)}.message-input input[type=text]{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-main);outline:none;flex:1;padding:12px 16px;font-size:14px;transition:border-color .2s,background .2s}.message-input input[type=text]:focus{border-color:var(--primary);background:var(--bg-card)}.btn-send{background:var(--primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;border:none;align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:background .2s;display:flex}.btn-send:hover:not(:disabled){background:var(--primary-hover)}.btn-send:disabled{opacity:.5;cursor:not-allowed}.no-conversation{color:var(--text-muted);text-align:center;background:#fafbfc;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.no-conversation-illustration{margin-bottom:16px;font-size:48px}.no-conversation p{max-width:320px;font-size:14px;line-height:1.6}@media (width<=768px){.messages-page{height:calc(100vh - 60px);padding:10px}.messages-page h1{margin-bottom:10px;font-size:20px}.messages-container{height:calc(100% - 40px);display:block;position:relative}.mobile-hidden{display:none!important}.conversations-list,.chat-area{border-radius:var(--radius-md);width:100%;height:100%}.btn-back-mobile{justify-content:center;align-items:center;display:flex}.filters{padding:12px}.message-bubble{max-width:85%}.message-inline-image{max-height:200px}.message-input{gap:8px;padding:12px}.message-input input[type=text]{padding:10px 12px}.btn-send span{display:none}.btn-send{border-radius:50%;padding:10px}}.payments-page{flex-direction:column;gap:16px;padding:24px;display:flex}.page-header-excel h1{font-size:22px;font-weight:700}.page-subtitle{color:var(--text-muted);margin-top:2px;font-size:13px}.excel-controls-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.excel-search-bar{width:100%;max-width:300px}.excel-search-input{border:1px solid var(--border);background-color:var(--card-bg);width:100%;color:var(--text-main);border-radius:8px;padding:9px 12px;font-size:14px}.year-selector-container{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;align-items:center;height:40px;display:flex;overflow:hidden}.year-nav-btn{color:var(--text-main);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;height:100%;padding:0 12px;display:flex}.native-select-wrapper{border-left:1px solid var(--border);border-right:1px solid var(--border);height:100%;position:relative}.year-native-select{appearance:none;color:var(--text-main);cursor:pointer;text-align:center;background:0 0;border:none;height:100%;padding:0 20px;font-family:inherit;font-size:14px;font-weight:600}.excel-table-container{border:1px solid var(--border);background:var(--card-bg);-webkit-overflow-scrolling:touch;border-radius:8px;width:100%;overflow-x:auto}.excel-table{border-collapse:collapse;width:100%;font-size:14px}.excel-table th,.excel-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:10px 8px}.excel-table .sticky-col{background-color:var(--card-bg);z-index:2;min-width:160px;position:sticky;left:0;box-shadow:2px 0 5px #0000000a}.athlete-name-cell{font-weight:600}.athlete-name-truncate{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.group-col,.group-cell-txt{color:var(--text-muted);width:100px;font-size:13px}.month-col,.excel-cell{text-align:center;width:50px;min-width:48px}.excel-cell{cursor:pointer;font-weight:700}.cell-content{justify-content:center;align-items:center;height:22px;display:flex}.cell-paid{color:#16a34a;background-color:#22c55e1f!important}.cell-unpaid{color:#dc2626;background-color:#ef44440a!important}.cell-custom{color:#9333ea;font-size:11px;background-color:#a855f71f!important}.cell-amount-tooltip{display:none}.excel-legend{color:var(--text-muted);gap:16px;font-size:13px;display:flex}.legend-item{align-items:center;gap:6px;display:flex}.legend-dot{border-radius:4px;justify-content:center;align-items:center;width:18px;height:18px;font-size:11px;font-weight:700;display:flex}.cell-bg-paid{color:#16a34a;background:#22c55e26}.cell-bg-unpaid{color:#dc2626;background:#ef44441a}.cell-bg-custom{color:#9333ea;background:#a855f726}@media (width<=650px){.payments-page{gap:12px;padding:12px}.excel-controls-row{flex-direction:column;align-items:stretch}.excel-search-bar{max-width:100%}.year-selector-container{justify-content:space-between}.native-select-wrapper{flex-grow:1}.year-native-select{width:100%}.group-col,.group-cell-txt{display:none!important}.excel-table .sticky-col{min-width:105px;max-width:115px;padding:10px 6px;font-size:12px}.month-col,.excel-cell{width:40px;min-width:40px;padding:10px 4px;font-size:12px}.cell-content{font-size:12px}}.settings-page{padding:30px}@media (width<=768px){.settings-page{padding:15px}}.settings-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.settings-tabs{border-bottom:1px solid var(--border);background:var(--bg-main);white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.settings-tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;flex-shrink:0;align-items:center;gap:6px;padding:15px 25px;font-size:14px;line-height:1;transition:all .2s;display:inline-flex}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--primary);border-bottom-color:var(--primary);background:var(--bg-card)}.settings-content{padding:30px}@media (width<=768px){.settings-content{padding:20px 15px}}.settings-section h2{margin-bottom:25px;font-size:20px}.settings-form{max-width:500px}.settings-form .form-group{margin-bottom:20px}.settings-form label{color:var(--text-secondary);margin-bottom:8px;font-weight:500;display:block}.settings-form input,.settings-form select{border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;width:100%;padding:12px 14px;font-size:14px;transition:all .2s}.settings-form input:focus,.settings-form select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.settings-form input:disabled{background:var(--bg-main);color:var(--text-muted)}.settings-form small{color:var(--text-muted);margin-top:6px;font-size:12px;display:block}.info-box{background:var(--primary-light);border:1px solid var(--primary);border-radius:var(--radius-sm);color:var(--text-primary);align-items:flex-start;gap:8px;margin-bottom:25px;padding:15px;font-size:14px;line-height:1.4;display:flex}.info-box svg{flex-shrink:0;margin-top:2px}.trainings-page{background:var(--bg-main);box-sizing:border-box;flex-direction:column;flex:1;gap:20px;width:100%;min-height:100%;padding:24px;display:flex}.trainings-page .page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.trainings-page h1{color:var(--text-primary);margin:0;font-size:26px;font-weight:700}.info-banner{color:#1e40af;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background-color:#eff6ff;border:1px solid #bfdbfe;align-items:center;gap:12px;padding:14px 18px;font-size:14px;line-height:1.5;display:flex}.view-toggle{border-radius:var(--radius-lg);border:1px solid var(--border-light);background:#f1f5f9;align-self:flex-start;padding:4px;display:flex}.toggle-btn{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;padding:8px 20px;font-size:14px;font-weight:600;transition:all .2s}.toggle-btn:hover{color:var(--text-primary)}.filters{background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border);box-shadow:var(--shadow-sm);box-sizing:border-box;width:100%;padding:16px}.filter-box select{width:100%;max-width:280px;color:var(--text-primary);background-color:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;outline:none;padding:10px 14px;font-size:14px;transition:border-color .2s}.filter-box select:focus{border-color:var(--primary)}.table-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);width:100%;overflow-x:auto}.table{width:100%;min-width:800px}.table-header,.table-row{grid-template-columns:1.5fr 1.2fr 1fr 2.5fr 1.2fr 1.2fr;align-items:center;gap:16px;padding:14px 20px;display:grid}.table-header{border-bottom:2px solid var(--border);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;background:#f8fafc;font-size:13px;font-weight:600}.table-row{border-bottom:1px solid var(--border-light);color:var(--text-primary);font-size:14px;transition:background-color .2s}.table-row:last-child{border-bottom:none}.table-row:hover{background-color:#f8fafc}.cancelled-row{color:#991b1b;background-color:#fef2f2!important}.cancelled-row .group-badge{color:#7f1d1d;background:#fca5a5}.empty-state{text-align:center;color:var(--text-muted);padding:40px;font-size:15px}.schedules-list{flex-direction:column;gap:16px;width:100%;display:flex}.schedule-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);box-sizing:border-box;width:100%;transition:transform .2s,box-shadow .2s;overflow:hidden}.schedule-card:hover{box-shadow:var(--shadow-md)}.schedule-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:20px;display:flex}.schedule-info{flex-direction:column;gap:8px;display:flex}.schedule-day{color:var(--text-primary);font-size:18px;font-weight:700}.schedule-meta{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:16px;font-size:14px;display:flex}.schedule-meta span{align-items:center;gap:6px;display:inline-flex}.schedule-exceptions{border-top:1px solid var(--border);background:#f8fafc;padding:20px;animation:.2s ease-out slideDown}.schedule-exceptions h4{color:var(--text-secondary);margin:0 0 12px;font-size:14px;font-weight:600}.exception-row{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-md);justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;font-size:13.5px;display:flex}.exception-row:last-child{margin-bottom:0}.exception-row div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.group-badge{color:#334155;background:#f1f5f9;border-radius:6px;padding:4px 10px;font-size:12px;font-weight:600}.badge-active{color:#15803d;background:#dcfce7;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:600}.badge-cancelled{color:#b91c1c;background:#fee2e2;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:600}.exception-badge{text-transform:uppercase;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700}.exception-badge.cancelled{color:#b91c1c;background:#fee2e2}.exception-badge.changed{color:#d97706;background:#fef3c7}.btn{border-radius:var(--radius-md);cursor:pointer;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;font-weight:600;text-decoration:none;transition:background-color .15s,transform .1s;display:inline-flex}.btn-small{padding:8px 14px;font-size:13px}.btn-secondary{color:#334155;border-color:var(--border);background:#f1f5f9}.btn-secondary:hover{background:#e2e8f0}.btn-success{color:#fff;background:#22c55e}.btn-success:hover{background:#16a34a}.btn-icon,.btn-icon-danger{border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;color:var(--text-secondary);background:0 0;background-color:var(--bg-card);justify-content:center;align-items:center;padding:8px;transition:all .15s;display:inline-flex}.btn-icon:hover{color:var(--text-primary);background-color:#f1f5f9}.btn-icon-danger:hover{color:var(--danger);background-color:#fef2f2;border-color:#fca5a5}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:999;background-color:#0f172a66;justify-content:center;align-items:center;padding:16px;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border-radius:var(--radius-lg);width:100%;max-width:520px;animation:.15s ease-out scaleUp;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header{border-bottom:1px solid var(--border);background-color:#f8fafc;justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.modal-header h2{color:var(--text-primary);margin:0;font-size:18px;font-weight:700}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;padding:4px;transition:background-color .2s;display:flex}.modal-close:hover{color:var(--text-primary);background-color:#e2e8f0}.modal-form{flex-direction:column;gap:16px;padding:24px;display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-group label{color:var(--text-secondary);align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}.form-group input[type=text],.form-group input[type=date],.form-group input[type=time],.form-group select{border:1px solid var(--border);border-radius:var(--radius-md);background-color:var(--bg-card);color:var(--text-primary);box-sizing:border-box;outline:none;width:100%;padding:10px 12px;font-size:14px;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:var(--primary)}.modal-actions{border-top:1px solid var(--border-light);justify-content:flex-end;gap:12px;margin-top:12px;padding-top:16px;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleUp{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes slideDown{0%{opacity:0;height:0;transform:translateY(-5px)}to{opacity:1;height:auto;transform:translateY(0)}}@media (width<=768px){.trainings-page{padding:14px}.trainings-page .page-header{flex-direction:column;align-items:flex-start}.trainings-page .page-header .btn{width:100%}.filter-box select{max-width:100%}.form-row{grid-template-columns:1fr;gap:16px}.schedule-header{flex-direction:column;align-items:flex-start}.schedule-header div[style*="display: flex"]{justify-content:flex-start;width:100%;margin-top:8px}}.force-password-wrapper{box-sizing:border-box;z-index:9999;background:#1e1f22;justify-content:center;align-items:center;width:100vw;min-height:100vh;padding:16px;display:flex;position:fixed;top:0;left:0}.force-password-card{background:#2b2d31;border-radius:12px;width:100%;max-width:420px;overflow:hidden;box-shadow:0 10px 30px #0006}.force-password-header{background:#019cde;align-items:center;gap:12px;padding:20px 24px;display:flex}.force-password-header h1{color:#fff;margin:0;font-size:18px;font-weight:700;line-height:1.2}.force-password-header p{color:#fffc;margin:2px 0 0;font-size:13px}.force-password-body{padding:24px}.force-password-warning{color:#ffc107;background:#ffc10726;border:1px solid #ffc10766;border-radius:8px;margin-bottom:24px;padding:12px 16px;font-size:13px;line-height:1.4}.force-password-logged-in{color:#fff9;margin-bottom:20px;font-size:13px}.force-password-logged-in strong{color:#fff}.force-password-input-group{margin-bottom:20px}.force-password-input-group.margin-bottom-24{margin-bottom:24px}.force-password-input-group label{color:#9ca3af;margin-bottom:6px;font-size:13px;display:block}.force-password-input{color:#fff;box-sizing:border-box;background:0 0;border:1px solid #6f7072;border-radius:6px;outline:none;width:100%;padding:12px 14px;font-size:14px;transition:border-color .2s}.force-password-input:focus{border-color:#019cde}.force-password-error{color:#ef4444;margin-top:4px;font-size:12px}.force-password-submit-btn{color:#fff;cursor:pointer;background:#019cde;border:none;border-radius:6px;width:100%;margin-bottom:12px;padding:13px;font-size:15px;font-weight:600;transition:background .2s,opacity .2s}.force-password-submit-btn:hover{background:#017fb5}.force-password-submit-btn:disabled{cursor:not-allowed;opacity:.7}.force-password-logout-btn{color:#9ca3af;cursor:pointer;background:0 0;border:1px solid #6f7072;border-radius:6px;justify-content:center;align-items:center;gap:6px;width:100%;padding:10px;font-size:13px;transition:background .2s,color .2s;display:flex}.force-password-logout-btn:hover{color:#fff;background:#ffffff0d}@media (width<=480px){.force-password-card{max-width:95%}}.login-wrapper{z-index:9999;background:#1e1f22;justify-content:center;align-items:center;width:100vw;min-height:100vh;display:flex;position:fixed;top:0;left:0}.login-card{background:#2b2d31;border-radius:12px;width:420px;max-width:90%;overflow:hidden;box-shadow:0 10px 30px #0006}.login-header{text-align:center;color:#fff;letter-spacing:2px;background:#019cde;padding:20px;font-size:22px;font-weight:700}.logo-container{background:#fff;justify-content:center;align-items:center;padding:30px 40px;display:flex}.logo-container img{max-width:150px;height:auto}.form{padding:30px 25px}.input-group{margin-bottom:30px;position:relative}.input-group input{color:#fff;appearance:none;background:0 0;border:1px solid #6f7072;border-radius:6px;outline:none;width:100%;padding:14px 12px;font-size:14px}.input-group input:focus{border-color:#019cde}.input-group label{color:#6f7072;pointer-events:none;background:#2b2d31;padding:0 5px;font-size:14px;transition:all .2s;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.input-group input:focus+label,.input-group input:not(:placeholder-shown)+label{color:#019cde;font-size:12px;top:0}.login-btn{color:#fff;cursor:pointer;background:#019cde;border:none;border-radius:6px;width:100%;margin-top:5px;padding:13px;font-size:16px;transition:all .2s}.login-btn:hover{background:#017fb5}.login-btn:disabled{opacity:.6;cursor:not-allowed}.forgot{text-align:center;margin-top:15px}.forgot a{color:#019cde;font-size:14px;text-decoration:none}.forgot a:hover{text-decoration:underline}.error-msg{color:#ef4444;text-align:center;margin-top:-20px;margin-bottom:15px;font-size:12px}@media (width<=900px){.login-card{width:95%}.login-header{padding:25px;font-size:28px}.logo-container{padding:40px}.logo-container img{max-width:160px}.form{padding:35px 30px}.input-group input{padding:18px 14px;font-size:16px}.login-btn{padding:16px;font-size:18px}}.dashboard{padding:20px}.dashboard-header{align-items:center;gap:12px;margin-bottom:24px;display:flex}.dashboard-header h1{font-size:24px;font-weight:600}.role-badge{background:var(--primary-light);color:var(--primary);border-radius:20px;padding:4px 12px;font-size:13px;font-weight:500}.dashboard-grid{grid-template-columns:2fr 1fr;gap:20px;display:grid}.card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:18px}.card h3{color:var(--text-primary);align-items:center;gap:8px;margin-bottom:14px;font-size:15px;display:flex}.calendar-card{grid-row:span 2}.card-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-header h3{margin-bottom:0;font-size:15px}.calendar-nav button{background:var(--bg-main);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;margin-left:4px;padding:6px 10px;font-size:12px}.calendar-weekdays{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:6px;display:grid}.weekday{text-align:center;color:var(--text-muted);font-size:11px;font-weight:500}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.calendar-day{aspect-ratio:1;background:var(--bg-main);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;font-size:13px;font-weight:500;transition:all .15s;display:flex;position:relative}.calendar-day.empty{cursor:default;background:0 0}.calendar-day:not(.empty):hover{background:var(--primary-light);color:var(--primary)}.calendar-day.today{background:var(--primary);color:#fff}.calendar-day.selected{background:var(--primary-light);color:var(--primary);outline:2px solid var(--primary)}.calendar-day.has-training:after{content:"";background:var(--success);border-radius:50%;width:5px;height:5px;position:absolute;bottom:3px}.calendar-day.today:after{background:#fff}.today-card{color:#fff;border:none;background:linear-gradient(135deg, var(--primary), #00c6ff)!important}.today-card h3{color:#fff}.today-info{margin-bottom:4px;font-size:16px;font-weight:600}.today-location{opacity:.85;margin-bottom:14px;font-size:13px}.today-card .btn-primary{color:var(--primary);background:#fff}.dashboard-side{flex-direction:column;gap:12px;display:flex}.link-card{justify-content:space-between;align-items:center;gap:12px;text-decoration:none;transition:all .2s;display:flex}.link-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md)}.link-card h4{color:var(--text-primary);align-items:center;gap:6px;margin-bottom:3px;font-size:14px;display:flex}.link-card p{color:var(--text-secondary);font-size:13px}.badge{background:var(--primary);color:#fff;border-radius:20px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600}.quick-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.action-btn{background:var(--bg-main);border-radius:var(--radius-sm);text-align:center;color:var(--text-primary);padding:10px;font-size:13px;text-decoration:none;transition:all .2s}.action-btn:hover{background:var(--primary-light);color:var(--primary)}.upcoming-list{flex-direction:column;display:flex}.upcoming-item{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:10px 0;display:flex}.upcoming-item:last-child{border-bottom:none}.upcoming-item .date{color:var(--text-muted);font-size:11px;display:block}.upcoming-item strong{font-size:13px}.upcoming-item .time{background:var(--bg-main);border-radius:var(--radius-sm);padding:3px 8px;font-size:13px;font-weight:500}.stats-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.stat{text-align:center;background:var(--bg-main);border-radius:var(--radius-md);padding:12px}.stat-value{color:var(--primary);font-size:24px;font-weight:700;display:block}.btn-success{background:var(--success);color:#fff}.btn-success:hover{filter:brightness(.9)}.btn-secondary{background:var(--bg-main);color:var(--text-primary);border:1px solid var(--border)}.btn-danger{background:var(--danger-light);color:var(--danger);border:1px solid var(--danger)}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);color:var(--text-primary);border-radius:var(--radius-lg);width:100%;max-width:500px;box-shadow:var(--shadow-lg);animation:.18s ease-out modalIn;overflow:hidden}@keyframes modalIn{0%{opacity:0;transform:translateY(-12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-header h3{margin:0;font-size:14px;font-weight:600}.modal-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:4px;transition:all .2s;display:flex}.modal-close:hover{background:var(--bg-main);color:var(--text-primary)}.modal-body{padding:16px 18px}.modal-training-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.modal-training-list li{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:12px;padding:16px;transition:all .2s;display:flex}.modal-training-list li:hover{border-color:var(--primary);box-shadow:var(--shadow-md)}.modal-training-time{color:var(--primary);font-size:16px;font-weight:700}.modal-training-group{color:var(--text-secondary);margin-top:2px;font-size:13px}.modal-empty{text-align:center;color:var(--text-muted);padding:20px 0;font-size:14px}@media (width<=900px){.dashboard{padding:14px}.dashboard-header h1{font-size:20px}.dashboard-grid{grid-template-columns:1fr;gap:14px}.calendar-card{grid-row:auto}}@media (width<=480px){.dashboard{padding:10px}.card{padding:14px}.calendar-day{font-size:12px}.quick-actions{grid-template-columns:1fr}}.calendar-legend{border-top:1px solid var(--border-light);color:var(--text-muted);gap:16px;margin-top:12px;padding-top:12px;font-size:12px;display:flex}.legend-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:5px;display:inline-block}.legend-dot.training{background:var(--success)}.legend-dot.today-dot{background:var(--primary)}.calendar-day.has-cancelled:after{content:"";background:var(--danger,#ef4444);border-radius:50%;width:5px;height:5px;position:absolute;bottom:3px}.legend-dot.cancelled{background:var(--danger,#ef4444)}.training-cancelled{opacity:.75;border-color:var(--danger,#ef4444)!important}.badge-danger{background:var(--danger,#ef4444);color:#fff;vertical-align:middle;border-radius:4px;margin-left:6px;padding:2px 6px;font-size:10px}.today-card.cancelled-card{background:linear-gradient(135deg,#ef4444,#dc2626)!important}.modal-training-date{color:var(--text-muted);font-size:12px}.modal-training-location{color:var(--text-secondary);font-size:13px}.training-active{border-left:4px solid var(--success)}.training-cancelled{border-left:4px solid var(--danger);opacity:.8}.student-attendance{padding:20px}.page-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.stats-row{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;display:grid}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center;padding:16px}.stat-card.highlight{background:linear-gradient(135deg, var(--primary), #00c6ff);color:#fff;border:none}.stat-card.highlight .stat-value,.stat-card.highlight .stat-label{color:#fff}.stat-value{color:var(--text-primary);margin-bottom:4px;font-size:28px;font-weight:700;display:block}.stat-value.present{color:var(--success)}.stat-value.absent{color:var(--danger)}.stat-value.total{color:var(--primary)}.stat-label{color:var(--text-muted);font-size:12px}.progress-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:16px;padding:18px}.progress-header{color:var(--text-secondary);justify-content:space-between;margin-bottom:10px;font-size:14px;display:flex}.progress-bar{background:var(--bg-main);border-radius:10px;height:10px;margin-bottom:8px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary), #00c6ff);border-radius:10px;height:100%;transition:width .5s}.progress-labels{color:var(--text-muted);justify-content:space-between;font-size:12px;display:flex}.history-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.history-card h3{border-bottom:1px solid var(--border);margin:0;padding:16px 20px;font-size:15px}.history-header{background:var(--bg-main);color:var(--text-secondary);border-bottom:1px solid var(--border);grid-template-columns:1.2fr 2fr 1fr;padding:10px 20px;font-size:12px;font-weight:500;display:grid}.history-row{border-bottom:1px solid var(--border-light);grid-template-columns:1.2fr 2fr 1fr;align-items:center;padding:12px 20px;transition:all .15s;display:grid}.history-row:last-child{border-bottom:none}.history-row:hover{background:var(--bg-main)}.h-date{color:var(--text-secondary);font-size:13px}.h-name{font-size:14px;font-weight:500}.status-badge{border-radius:20px;padding:4px 10px;font-size:12px;font-weight:600;display:inline-block}.status-badge.present{background:var(--success-light);color:var(--success)}.status-badge.absent{background:var(--danger-light);color:var(--danger)}@media (width<=700px){.student-attendance{padding:12px}.stats-row{grid-template-columns:1fr 1fr;gap:10px}.stat-value{font-size:22px}.history-header,.history-row{grid-template-columns:1fr 1fr;padding:10px 14px}.history-header div:nth-child(2),.history-row .h-name{display:none}}@media (width<=400px){.stats-row{grid-template-columns:1fr 1fr}.stat-value{font-size:20px}}.student-dashboard{padding:20px}.welcome-banner{background:linear-gradient(135deg, var(--primary), #00c6ff);border-radius:var(--radius-lg);color:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;padding:22px 24px;display:flex}.welcome-text h1{margin-bottom:4px;font-size:22px;font-weight:700}.welcome-text p{opacity:.9;font-size:14px}.welcome-badge{white-space:nowrap;background:#fff3;border:1px solid #ffffff59;border-radius:30px;padding:7px 16px;font-size:13px;font-weight:500}.push-alert-banner{background:var(--bg-card);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius-lg);flex-direction:column;gap:16px;margin-bottom:20px;padding:18px;display:flex}.push-alert-content{align-items:flex-start;gap:14px;display:flex}.push-alert-icon{background-color:var(--primary-light);color:var(--primary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.push-alert-text h3{color:var(--text-primary);margin:0 0 4px;font-size:15px;font-weight:600}.push-alert-text p{color:var(--text-secondary);margin:0;font-size:13px;line-height:1.5}.btn-push-activate{text-align:center;width:100%}.student-grid{grid-template-columns:2fr 1fr;gap:16px;display:grid}.next-training-card{background:var(--bg-card);border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:var(--radius-lg);padding:20px}.card-label{text-transform:uppercase;letter-spacing:.8px;color:var(--primary);margin-bottom:8px;font-size:11px;font-weight:600}.next-training-card h2{margin-bottom:16px;font-size:20px}.training-meta{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.meta-item{background:var(--bg-main);border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px}.card h3{align-items:center;gap:8px;margin-bottom:16px;font-size:15px;display:flex}.attendance-overview{text-align:center;flex-direction:column;align-items:center;display:flex}.attendance-overview h3{align-self:flex-start}.attendance-circle-container{margin-bottom:16px}.attendance-circle{border:7px solid var(--primary);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:96px;height:96px;display:flex}.circle-value{color:var(--primary);font-size:22px;font-weight:700;line-height:1}.circle-label{color:var(--text-muted);margin-top:2px;font-size:10px}.attendance-numbers{gap:16px;margin-bottom:16px;display:flex}.att-num{flex-direction:column;align-items:center;gap:3px;display:flex}.num{font-size:20px;font-weight:700}.num.present{color:var(--success)}.num.absent{color:var(--danger)}.num.total{color:var(--primary)}.num-label{color:var(--text-muted);font-size:11px}.recent-list{flex-direction:column;display:flex}.recent-item{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.recent-item:last-child{border-bottom:none}.recent-info strong{margin-bottom:2px;font-size:13px;display:block}.recent-date{color:var(--text-muted);font-size:11px}.presence-dot{white-space:nowrap;border-radius:20px;flex-shrink:0;padding:3px 9px;font-size:11px;font-weight:600}.presence-dot.present{background:var(--success-light);color:var(--success)}.presence-dot.absent{background:var(--danger-light);color:var(--danger)}.shortcuts-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.shortcut-btn{background:var(--bg-main);border-radius:var(--radius-md);color:var(--text-primary);flex-direction:column;align-items:center;gap:8px;padding:16px 10px;font-size:13px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.shortcut-btn:hover{background:var(--primary-light);color:var(--primary)}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 18px;font-size:13px;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-outline{border:1px solid var(--primary);color:var(--primary);background:0 0;width:100%}.btn-outline:hover{background:var(--primary-light)}@media (width>=768px){.push-alert-banner{flex-direction:row;justify-content:space-between;align-items:center}.btn-push-activate{flex-shrink:0;width:auto}}@media (width<=900px){.student-grid{grid-template-columns:1fr}}@media (width<=480px){.student-dashboard{padding:12px}.welcome-banner{padding:16px}.welcome-text h1{font-size:18px}.next-training-card h2{font-size:17px}.training-meta{gap:6px}.meta-item{padding:5px 10px;font-size:12px}.attendance-circle{width:80px;height:80px}.circle-value,.num{font-size:18px}.card{padding:14px}.push-alert-banner{gap:12px;padding:14px}.push-alert-content{gap:10px}}.student-trainings{padding:20px}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.page-header h1{font-size:24px;font-weight:600}.info-banner{background:var(--primary-light);border:1px solid var(--primary);border-radius:var(--radius-md);color:var(--text-primary);align-items:flex-start;gap:10px;margin-bottom:20px;padding:12px 16px;font-size:13px;line-height:1.5;display:flex}.toggle-tabs{background:var(--bg-main);border-radius:var(--radius-md);border:1px solid var(--border);width:fit-content;margin-bottom:20px;padding:4px;display:flex}.toggle-btn{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:8px 20px;font-size:13px;font-weight:500;transition:all .2s}.toggle-btn.active{background:var(--bg-card);color:var(--primary);box-shadow:var(--shadow-sm)}.trainings-list{flex-direction:column;gap:10px;display:flex}.training-row{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);align-items:center;gap:16px;padding:16px;transition:all .2s;display:flex}.training-row:hover{box-shadow:var(--shadow-md)}.training-row.upcoming{border-left:4px solid var(--primary)}.training-row.past{border-left:4px solid var(--border);opacity:.75}.training-date-block{text-align:center;background:var(--primary-light);border-radius:var(--radius-md);flex-shrink:0;min-width:50px;padding:8px}.t-day{color:var(--primary);font-size:22px;font-weight:700;line-height:1;display:block}.t-month{color:var(--primary);text-transform:uppercase;margin-top:2px;font-size:11px;display:block}.training-details{flex:1;min-width:0}.training-details h3{white-space:nowrap;text-overflow:ellipsis;margin-bottom:8px;font-size:15px;overflow:hidden}.training-tags{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--bg-main);border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:flex}.upcoming-badge{background:var(--primary-light);color:var(--primary);white-space:nowrap;border-radius:20px;flex-shrink:0;padding:5px 12px;font-size:11px;font-weight:600}.empty-state{background:var(--bg-card);border-radius:var(--radius-lg);text-align:center;color:var(--text-muted);border:1px solid var(--border);padding:50px;font-size:14px}@media (width<=600px){.student-trainings{padding:12px}.training-row{gap:12px;padding:12px}.upcoming-badge{display:none}.t-day{font-size:18px}.training-date-block{min-width:42px}.toggle-btn{padding:7px 14px;font-size:12px}}.topbar{background:var(--bg-topbar);border-bottom:1px solid var(--border);z-index:200;justify-content:space-between;align-items:center;height:60px;padding:0 20px;display:flex;position:sticky;top:0}.topbar-logo .logo-img{width:auto;height:50px}.topbar-menu{align-items:center;gap:8px;display:flex}.topbar-icon{border-radius:var(--radius-sm);background:var(--bg-main);border:1px solid var(--border);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);justify-content:center;align-items:center;text-decoration:none;transition:all .2s;display:flex;position:relative}.topbar-icon:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}.notification-badge{color:#fff;background:#ef4444;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:600;display:flex;position:absolute;top:-5px;right:-5px}.topbar-user{align-items:center;gap:8px;display:flex}.avatar{background:linear-gradient(135deg, var(--primary), #00c6ff);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:flex}.user-name{color:var(--text-primary);font-size:14px;font-weight:500}.logout-btn{border-radius:var(--radius-sm);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;background:#fff;align-items:center;gap:6px;padding:7px 14px;font-size:13px;transition:all .2s;display:inline-flex}.logout-btn:hover{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}.hamburger{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-main);cursor:pointer;width:36px;height:36px;color:var(--text-secondary);justify-content:center;align-items:center;display:none}.notification-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.notification-modal{background:#fff;border-radius:16px;width:100%;max-width:600px;max-height:80vh;overflow:hidden;box-shadow:0 25px 50px #0003}.notification-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.notification-header h3{color:var(--text-primary);margin:0;font-size:18px}.notification-close{cursor:pointer;width:34px;height:34px;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.notification-close:hover{background:#f1f5f9}.notification-list{max-height:calc(80vh - 70px);overflow-y:auto}.notification-item{border-bottom:1px solid var(--border);padding:16px 20px;transition:background .2s}.notification-item:hover{background:#f8fafc}.notification-title{color:var(--text-primary);margin-bottom:6px;font-weight:600}.notification-message{color:var(--text-secondary);margin-bottom:8px;font-size:14px;line-height:1.5}.notification-date{color:#94a3b8;font-size:12px}@media (width<=768px){.topbar{height:56px;padding:0 14px}.topbar-logo .logo-img{height:38px}.user-name,.logout-btn span{display:none}.logout-btn{padding:7px 10px}.hamburger{display:flex}.topbar-icon.settings-icon{display:none}.notification-modal{max-width:100%;max-height:90vh}}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--border);flex-shrink:0;width:220px;min-height:calc(100vh - 60px);padding:16px 10px;transition:transform .25s}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.nav-item{border-radius:var(--radius-md);color:var(--text-secondary);align-items:center;gap:12px;padding:11px 14px;text-decoration:none;transition:all .2s;display:flex}.nav-item:hover{background:var(--bg-main);color:var(--text-primary)}.nav-item.active{background:var(--primary-light);color:var(--primary);font-weight:500}.nav-icon{flex-shrink:0}.nav-label{font-size:14px}.sidebar-overlay{z-index:150;background:#0006;display:none;position:fixed;inset:0}@media (width<=768px){.sidebar{z-index:160;height:calc(100vh - 56px);min-height:unset;position:fixed;top:56px;left:0;transform:translate(-100%);box-shadow:4px 0 20px #00000026}.sidebar.open{transform:translate(0)}.sidebar-overlay.open{display:block}}:root{--primary:#019cde;--primary-hover:#0180b8;--primary-light:#e6f6fc;--bg-main:#f5f7fa;--bg-card:#fff;--bg-sidebar:#fff;--bg-topbar:#fff;--text-primary:#1a1a2e;--text-secondary:#6b7280;--text-muted:#9ca3af;--border:#e5e7eb;--border-light:#f0f0f0;--success:#10b981;--success-light:#d1fae5;--danger:#ef4444;--danger-light:#fee2e2;--warning:#f59e0b;--warning-light:#fef3c7;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 4px 6px #00000012;--shadow-lg:0 10px 25px #0000001a;--radius-sm:6px;--radius-md:12px;--radius-lg:16px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-main);color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5}.app{min-height:100vh}.app-body{display:flex}.app-main{flex:1;min-height:calc(100vh - 70px);overflow-y:auto}
