.presence-filters{flex-wrap:wrap;align-items:flex-end;gap:.5rem .75rem;margin-bottom:.75rem;display:flex}.presence-filters .presence-field{flex-direction:column;flex:9rem;gap:.2rem;min-width:0;display:flex}.presence-filters .presence-field label{color:var(--presence-muted,#666);font-size:.8rem}.presence-filters .presence-field select,.presence-filters .presence-field input{border:1px solid var(--presence-line,#ddd);background:var(--presence-surface,#fff);width:100%;min-height:40px;color:var(--presence-text,#333);font:inherit;border-radius:8px;padding:0 .6rem}.presence-filters .btn-keyboard-mode{border:2px solid var(--presence-accent,#007bff);background:var(--presence-surface,#fff);min-height:40px;color:var(--presence-accent,#007bff);font:inherit;white-space:nowrap;cursor:pointer;border-radius:8px;flex:none;align-items:center;gap:.5rem;padding:0 .9rem;font-weight:600;display:inline-flex}.presence-filters .btn-keyboard-mode.active{background:var(--presence-accent,#007bff);color:var(--presence-on-accent,#fff)}.presence-scroll{max-height:var(--presence-max-height,calc(100dvh - 14rem));border:1px solid var(--presence-line,#ddd);background:var(--presence-surface,#fff);-webkit-overflow-scrolling:touch;border-radius:8px;position:relative;overflow:auto}.presence-grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.8rem}.presence-grid th,.presence-grid td{border-bottom:1px solid var(--presence-line,#ddd);background:var(--presence-surface,#fff);color:var(--presence-text,#333);text-align:center;padding:0}.presence-grid thead th{z-index:2;background:var(--presence-head,#f5f5f5);white-space:nowrap;padding:.5rem .25rem;font-weight:700;position:sticky;top:0}.presence-grid .col-date{min-width:3.25rem}.presence-grid .col-gymnaste{z-index:1;text-align:left;overflow-wrap:anywhere;width:6.25rem;min-width:6.25rem;max-width:6.25rem;padding:.25rem .5rem;font-weight:500;position:sticky;left:0}.presence-grid .col-total{z-index:1;border-right:2px solid var(--presence-line,#ddd);background:var(--presence-total,#f0f9ff);white-space:nowrap;width:3rem;min-width:3rem;font-weight:600;position:sticky;left:6.25rem}.presence-grid thead .col-gymnaste,.presence-grid thead .col-total{z-index:3;background:var(--presence-head,#f5f5f5)}.presence-grid .row-groupe th{background:var(--presence-group-bg,#007bff);color:var(--presence-on-accent,#fff);text-align:left;padding:.4rem .5rem;font-weight:700;position:sticky;left:0}.presence-grid .cell{min-width:3.25rem}.presence-grid .cell-value,.presence-grid .cell-input{width:100%;min-height:44px;font:inherit;text-align:center;border:0;display:block}.presence-grid .cell-value{color:var(--presence-text,#333);cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;font-weight:600}.presence-grid .cell-value:hover{background:var(--presence-hover,#fffbea)}.presence-grid .cell-value.is-empty{color:var(--presence-muted,#666);font-weight:400}.presence-grid .cell-value.is-absent{color:var(--presence-absent,#b3261e)}.presence-grid .cell-input{background:var(--presence-surface,#fff);box-shadow:inset 0 0 0 2px var(--presence-accent,#007bff);color:var(--presence-accent,#007bff);appearance:textfield;border-radius:0;padding:0 .25rem;font-weight:600}.presence-grid .cell-input:focus{outline:none}.presence-grid .cell-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.presence-grid .cell-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.presence-empty{color:var(--presence-muted,#666);text-align:center;padding:1.5rem 0}.presence-edit-overlay{z-index:1000;background:#0006;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.presence-edit-popover{background:var(--presence-surface,#fff);width:min(24rem,100%);color:var(--presence-text,#333);border-radius:12px;margin:auto;box-shadow:0 4px 12px #00000026}.presence-edit-popover .popover-header,.presence-edit-popover .popover-actions{align-items:center;padding:.75rem 1rem;display:flex}.presence-edit-popover .popover-header{border-bottom:1px solid var(--presence-line,#ddd);justify-content:space-between}.presence-edit-popover .popover-header h3{margin:0;font-size:1rem}.presence-edit-popover .popover-header .modal-close{min-width:44px;min-height:44px;color:inherit;cursor:pointer;background:0 0;border:0;font-size:1.5rem}.presence-edit-popover .popover-content{padding:1rem}.presence-edit-popover .gymnaste-info{border-bottom:1px solid var(--presence-line,#ddd);margin-bottom:1rem;padding-bottom:.75rem}.presence-edit-popover .gymnaste-info p{margin:0}.presence-edit-popover .gymnaste-info .gymnaste-name{margin-bottom:.25rem;font-weight:500}.presence-edit-popover .gymnaste-info .date-info{color:var(--presence-muted,#666);font-size:.85rem}.presence-edit-popover .hours-buttons{grid-template-columns:repeat(4,1fr);gap:.5rem;margin-bottom:.75rem;display:grid}.presence-edit-popover .hours-half{grid-auto-columns:1fr;grid-auto-flow:column;gap:.5rem;margin-bottom:.75rem;display:grid}.presence-edit-popover .btn-hour,.presence-edit-popover .btn-half{border:2px solid var(--presence-line,#ddd);background:var(--presence-surface,#fff);min-height:44px;color:inherit;font:inherit;cursor:pointer;border-radius:8px;padding:0 .5rem;font-weight:500}.presence-edit-popover .btn-hour.active,.presence-edit-popover .btn-half.active{border-color:var(--presence-accent,#007bff);background:var(--presence-accent,#007bff);color:var(--presence-on-accent,#fff)}.presence-edit-popover .hours-display{background:var(--presence-head,#f5f5f5);text-align:center;border-radius:8px;padding:.5rem}.presence-edit-popover .hours-display strong{color:var(--presence-accent,#007bff)}.presence-edit-popover .popover-actions{border-top:1px solid var(--presence-line,#ddd);border-radius:0 0 12px 12px;justify-content:flex-end;gap:.5rem}.presence-edit-popover .popover-actions .btn{border:1px solid var(--presence-line,#ddd);background:var(--presence-surface,#fff);min-height:44px;color:inherit;font:inherit;cursor:pointer;border-radius:8px;padding:0 1rem}.presence-edit-popover .popover-actions .btn.btn-primary{border-color:var(--presence-accent,#007bff);background:var(--presence-accent,#007bff);color:var(--presence-on-accent,#fff)}.presence-edit-popover .popover-actions .btn:disabled{opacity:.5;cursor:default}:root{--bg:#f4f5f7;--surface:#fff;--text:#1f2933;--muted:#637381;--line:#dde1e6;--accent:#1d6fdc;--present:#1b7f4b;--absent:#b3261e;--pending:#8a6d00;--radius:12px;--tap:44px;--presence-surface:var(--surface);--presence-text:var(--text);--presence-muted:var(--muted);--presence-line:var(--line);--presence-accent:var(--accent);--presence-group-bg:var(--accent);--presence-head:var(--bg);--presence-total:color-mix(in srgb, var(--accent) 8%, var(--surface));--presence-hover:color-mix(in srgb, var(--accent) 10%, var(--surface));--presence-absent:var(--absent);--presence-max-height:calc(100dvh - 15rem)}@media (prefers-color-scheme:dark){:root{--bg:#14181d;--surface:#1d232a;--text:#e4e7eb;--muted:#9aa5b1;--line:#2f3841;--accent:#6aa7ff;--present:#5fd08f;--absent:#ff8a80;--pending:#e6c35c;--presence-on-accent:#14181d}}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}h1,h2,p{margin:0}.app{max-width:80rem;margin:0 auto;padding:0 16px 48px}.app-header{justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 0 12px;display:flex}.app-header h1{font-size:1.25rem}.coach-name,.save-state{color:var(--muted);font-size:.875rem}.save-state{white-space:nowrap}.save-state.is-saving{color:var(--accent)}.alert,.notice{border-radius:var(--radius);margin-top:12px;padding:12px 14px}.alert{background:color-mix(in srgb, var(--absent) 14%, var(--surface));color:var(--absent)}.notice{background:var(--surface);text-align:center;margin-top:24px}
