:root{--primary:#2c5282;--primary-light:#ebf4ff;--primary-hover:#1a365d;--accent:#ed8936;--accent-hover:#dd6b20;--bg:#f7fafc;--card:#fff;--text:#2d3748;--text-light:#718096;--border:#e2e8f0;--success:#38a169;--success-bg:#f0fff4;--error:#e53e3e;--error-bg:#fff5f5;--radius:8px;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app-wrap{flex-direction:column;align-items:center;min-height:100vh;display:flex}header{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);color:#fff;text-align:center;width:100%;box-shadow:var(--shadow-lg);padding:1.5rem 1rem;position:relative}header h1{font-size:1.5rem;font-weight:700}header p{opacity:.85;margin-top:.15rem;font-size:.9rem}.header-actions{align-items:center;gap:.5rem;display:flex;position:absolute;top:1rem;right:1.5rem}.header-user{opacity:.85;font-size:.8rem}.btn-sm{border-radius:var(--radius);color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff4d;padding:.35rem .75rem;font-size:.8rem;transition:background .2s}.btn-sm:hover{background:#fff3}.container{width:100%;max-width:900px;padding:2rem 1rem}footer{text-align:center;color:var(--text-light);margin-top:auto;padding:1.5rem 1rem;font-size:.8rem}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1.5rem;padding:2rem}.card-title{color:var(--primary);border-bottom:2px solid var(--primary-light);margin-bottom:1.25rem;padding-bottom:.75rem;font-size:1.1rem;font-weight:600}.form-group{margin-bottom:1.25rem}label{color:var(--text);margin-bottom:.375rem;font-size:.875rem;font-weight:600;display:block}label .optional{color:var(--text-light);font-size:.8rem;font-weight:400}input[type=text],input[type=email],input[type=password],input[type=week],input[type=number]{border:1px solid var(--border);border-radius:var(--radius);width:100%;color:var(--text);background:#fff;padding:.625rem .875rem;font-size:.95rem;transition:border-color .2s,box-shadow .2s}input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2c528226}input::placeholder{color:#a0aec0}.row{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=600px){.row{grid-template-columns:1fr}.header-actions{justify-content:center;margin-top:.5rem;position:static}}.btn{color:#fff;background:linear-gradient(135deg, var(--accent) 0%, var(--accent-hover) 100%);border-radius:var(--radius);cursor:pointer;width:100%;box-shadow:var(--shadow);border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:1rem;font-weight:600;transition:transform .15s,box-shadow .15s,opacity .15s;display:inline-flex}.btn:hover:not(:disabled){box-shadow:var(--shadow-lg);transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%)}.btn-outline{color:var(--primary);border:2px solid var(--primary);background:#fff}.btn-outline:hover:not(:disabled){background:var(--primary-light)}.btn-half{width:48%}.feedback{border-radius:var(--radius);margin-top:1rem;padding:.875rem 1rem;font-size:.9rem;font-weight:500;display:none}.feedback.success{background:var(--success-bg);color:var(--success);border:1px solid #c6f6d5;display:block}.feedback.error{background:var(--error-bg);color:var(--error);border:1px solid #fed7d7;display:block}.feedback.info{background:var(--primary-light);color:var(--primary);border:1px solid #bee3f8;display:block}.password-reveal{border-radius:var(--radius);text-align:center;background:#fefcbf;border:2px solid #ecc94b;margin-top:1rem;padding:1.25rem}.password-reveal .pwd-label{color:#975a16;margin-bottom:.5rem;font-size:.85rem;font-weight:600}.password-reveal .pwd-value{color:var(--text);letter-spacing:2px;-webkit-user-select:all;user-select:all;font-family:Courier New,monospace;font-size:1.5rem;font-weight:700}.password-reveal .pwd-warning{color:#975a16;margin-top:.5rem;font-size:.8rem}.activities-list{flex-wrap:wrap;gap:.375rem;margin-top:.5rem;display:flex}.activity-tag{background:var(--primary-light);color:var(--primary);border-radius:999px;align-items:center;gap:.35rem;padding:.3rem .65rem;font-size:.775rem;font-weight:500;display:inline-flex}.activity-tag.custom{color:var(--accent);background:#fff5eb;border:1px solid #fbd38d}.activity-tag .delete-act{cursor:pointer;opacity:.6;font-size:.9rem;line-height:1;transition:opacity .15s}.activity-tag .delete-act:hover{opacity:1}.add-activity-row{gap:.5rem;margin-top:.75rem;display:flex}.add-activity-row input{flex:1}.add-activity-row button{white-space:nowrap;width:auto;padding:.5rem 1rem}.template-grid-wrap{margin-top:.75rem;overflow-x:auto}.template-grid{background:var(--border);border:1px solid var(--border);border-radius:var(--radius);-webkit-user-select:none;user-select:none;grid-template-columns:110px repeat(7,1fr);gap:1px;min-width:700px;display:grid;overflow:hidden}.tg-header{background:var(--primary);color:#fff;text-align:center;padding:.4rem .25rem;font-size:.75rem;font-weight:700}.tg-slot-label{background:var(--bg);color:var(--text);text-align:right;justify-content:flex-end;align-items:center;padding:.3rem .5rem;font-size:.7rem;font-weight:600;display:flex}.tg-cell{cursor:pointer;text-align:center;min-height:28px;color:var(--text);background:#fff;justify-content:center;align-items:center;padding:.2rem;font-size:.65rem;transition:background .1s;display:flex;position:relative}.tg-cell:hover{background:#edf2f7}.tg-cell.filled{background:var(--primary-light);color:var(--primary);font-weight:600}.tg-cell.pause{color:#975a16;background:#fefcbf;font-weight:600}.tg-cell.conge{color:var(--error);background:#fed7d7;font-weight:600}.tg-cell.dragging-over{outline:2px solid var(--accent);outline-offset:-2px;background:#fff5eb}.tg-lieu{background:#e2efda;font-size:.7rem;font-weight:600}.activity-palette{background:var(--bg);border-radius:var(--radius);border:1px solid var(--border);flex-wrap:wrap;gap:.4rem;margin-bottom:1rem;padding:.75rem;display:flex}.palette-item{background:var(--primary-light);color:var(--primary);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:999px;padding:.35rem .7rem;font-size:.775rem;font-weight:600;transition:transform .1s,box-shadow .1s}.palette-item:active{cursor:grabbing;transform:scale(.95)}.palette-item.pause{color:#975a16;background:#fefcbf}.palette-item.conge{color:var(--error);background:#fed7d7}.palette-item-erase{color:var(--text-light);border:1px dashed var(--border);background:#f7fafc}.week-display{color:var(--primary);min-height:1.25rem;margin-top:.5rem;font-size:.85rem;font-weight:500}.admin-row{border-bottom:1px solid var(--border);grid-template-columns:2fr 1.2fr 1fr 1.5fr 1.5fr 1.2fr;align-items:center;gap:1px;display:grid}.admin-row-header{background:var(--primary);color:#fff;text-transform:uppercase;letter-spacing:.5px;font-size:.8rem;font-weight:700}.admin-row-header .admin-cell{padding:.65rem 1rem}.admin-row:not(.admin-row-header):hover{background:#f8fafc}.admin-row-missing{background:#fffaf0}.admin-cell{padding:.6rem 1rem;font-size:.875rem}.badge{border-radius:999px;padding:.2rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{background:var(--success-bg);color:var(--success);border:1px solid #c6f6d5}.badge-warning{color:#c05621;background:#fffaf0;border:1px solid #fbd38d}.badge-late{background:var(--error-bg);color:var(--error);border:1px solid #fed7d7}.btn-dl{background:var(--primary);color:#fff;cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-dl:hover{background:var(--primary-hover)}.btn-reminder{background:var(--accent);color:#fff;cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-reminder:hover{background:var(--accent-hover)}.admin-actions{flex-wrap:wrap;gap:.35rem;display:flex}.stag-row{grid-template-columns:1.5fr 1.2fr 1.8fr 1fr .8fr 1fr}.admin-row-inactive{opacity:.6;background:#f7fafc}.badge-inactive{color:var(--text-light);border:1px solid var(--border);background:#edf2f7}.btn-deactivate{background:var(--error);color:#fff;cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-deactivate:hover{background:#c53030}.btn-activate{background:var(--success);color:#fff;cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-activate:hover{background:#2f855a}@media (width<=700px){.admin-row{grid-template-columns:1fr 1fr;gap:0}.admin-row-header .admin-cell:nth-child(n+3){display:none}}.modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal-box{border-radius:var(--radius);box-shadow:var(--shadow-lg);text-align:center;background:#fff;width:90%;max-width:420px;padding:2rem}.modal-box p{color:var(--text);margin-bottom:1.25rem;font-size:.95rem;line-height:1.5}.modal-actions{justify-content:center;gap:.75rem;display:flex}.modal-actions button{border-radius:var(--radius);cursor:pointer;border:none;padding:.5rem 1.5rem;font-size:.9rem;font-weight:600;transition:background .15s}.modal-btn-cancel{background:var(--bg);color:var(--text);border:1px solid var(--border)!important}.modal-btn-cancel:hover{background:#edf2f7}.modal-btn-confirm{background:var(--primary);color:#fff}.modal-btn-confirm:hover{background:var(--primary-hover)}.modal-btn-danger{background:var(--error);color:#fff}.modal-btn-danger:hover{background:#c53030}.modal-btn-ok{background:var(--primary);color:#fff}.modal-btn-ok:hover{background:var(--primary-hover)}.section{display:none}.section.active{display:block}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.6s linear infinite spin;display:inline-block}.steps{justify-content:center;gap:.5rem;margin-bottom:1.5rem;display:flex}.step-dot{background:var(--border);border-radius:50%;width:10px;height:10px;transition:background .3s}.step-dot.active{background:var(--accent)}.step-dot.done{background:var(--success)}
