*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--green: #2d8c4e;--green-dark: #236e3c;--blue: #4a90d9;--red: #e53935;--bg: #f5f7f5;--surface: #ffffff;--border: #e0e4e0;--text: #1a1a1a;--text-muted: #6b7280;--radius: 8px;--shadow: 0 1px 3px rgba(0,0,0,.08)}body{font-family:-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}nav{background:var(--green);color:#fff;padding:0 20px;display:flex;align-items:center;gap:24px;height:48px}nav .brand{font-weight:600;font-size:15px;display:flex;align-items:center;gap:8px}nav a{color:#ffffffd9;text-decoration:none;font-size:14px;padding:4px 0}nav a:hover,nav a.active{color:#fff;border-bottom:2px solid white}.page{padding:20px;max-width:1400px;margin:0 auto}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface);padding:10px 14px;border-radius:var(--radius);border:1px solid var(--border);margin-bottom:16px;box-shadow:var(--shadow)}button{padding:6px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:13px;color:var(--text);transition:background .15s}button:hover{background:#f0f2f0}button.primary{background:var(--green);color:#fff;border-color:var(--green)}button.primary:hover{background:var(--green-dark)}button.danger{background:var(--red);color:#fff;border-color:var(--red)}button.icon{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center}select,input{padding:6px 10px;border-radius:var(--radius);border:1px solid var(--border);font-size:13px;background:var(--surface);color:var(--text)}select:focus,input:focus{outline:2px solid var(--green);outline-offset:1px}textarea{padding:8px 10px;border-radius:var(--radius);border:1px solid var(--border);font-size:13px;width:100%;resize:vertical;min-height:64px}label{font-size:12px;color:var(--text-muted);display:block;margin-bottom:4px}.week-label{padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:13px;font-weight:500;white-space:nowrap}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow)}table{width:100%;border-collapse:collapse;background:var(--surface);min-width:900px}thead th{background:#f0f4f0;font-weight:500;padding:9px 10px;border-bottom:2px solid var(--border);border-right:1px solid var(--border);font-size:12px;color:var(--text-muted);text-align:center;white-space:nowrap}thead th:last-child{border-right:none}thead th.col-emp{text-align:left;min-width:180px}thead th.weekend{color:#c44}tbody td{border-bottom:1px solid var(--border);border-right:1px solid var(--border)}tbody td:last-child{border-right:none}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:#f9fbf9}tbody tr.total-row td{background:#f0f4f0;font-weight:500}td.col-emp{padding:8px 12px}td.col-total{padding:8px 12px;text-align:right;font-weight:500;background:#fafcfa;white-space:nowrap}td.day-cell{width:100px;height:54px;cursor:pointer;padding:0;vertical-align:middle}td.day-cell:hover{background:#e8f5e9!important}td.weekend-cell{background:#fafafa}.shift-block{margin:3px;border-radius:5px;padding:4px 7px;color:#fff;font-size:11px;line-height:1.4}.shift-sum{font-weight:600;font-size:12px}.shift-comment{font-size:10px;opacity:.85;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:90px}.birthday-cell{background:#fff8e1!important}.birthday-badge{font-size:13px;text-align:center;line-height:1;margin-bottom:1px}table.month-table{table-layout:fixed;min-width:max-content}table.month-table th{padding:4px 2px;text-align:center}table.month-table .col-emp{width:180px;min-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:sticky;left:0;z-index:2;background:#fff}table.month-table thead .col-emp{background:#f0f4f0;z-index:3}table.month-table tr:hover .col-emp{background:#f9fbf9}table.month-table .total-row .col-emp{background:#f0f4f0}td.month-cell{width:32px;min-width:32px;max-width:32px;height:36px;padding:2px;cursor:pointer;vertical-align:middle;text-align:center}td.month-cell:hover{background:#e8f5e9!important}.month-shift{width:24px;height:24px;border-radius:4px;margin:auto;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.emp-name{font-weight:500;font-size:13px}.emp-sub{font-size:11px;color:var(--text-muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--surface);border-radius:12px;border:1px solid var(--border);padding:20px;width:420px;max-width:95vw;box-shadow:0 8px 32px #00000026}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:14px;border-bottom:1px solid var(--border);margin-bottom:16px}.modal-title{font-weight:500;font-size:15px}.modal-meta{font-size:12px;color:var(--text-muted);margin-top:3px}.btn-close{background:none;border:none;font-size:20px;cursor:pointer;color:var(--text-muted);padding:0;line-height:1}.modal-footer{display:flex;justify-content:space-between;align-items:center;padding-top:14px;border-top:1px solid var(--border);margin-top:16px}.field-row{display:flex;gap:10px;margin-bottom:12px}.field{flex:1}.field input,.field select{width:100%}.stats-bar{background:#fffde7;border:1px solid #f9e79f;border-radius:var(--radius);padding:8px 14px;font-size:12px;color:#856404;margin-bottom:12px}.emp-table{width:100%;border-collapse:collapse;min-width:780px}.emp-table th,.emp-table td{padding:9px 12px;border-bottom:1px solid var(--border);text-align:left}.emp-table th:nth-child(5),.emp-table td:nth-child(5),.emp-table th:nth-child(6),.emp-table td:nth-child(6),.emp-table th:nth-child(7),.emp-table td:nth-child(7){width:110px;white-space:nowrap}.emp-table th{background:#f0f4f0;font-weight:500;font-size:12px;color:var(--text-muted)}.emp-table tr:last-child td{border-bottom:none}.emp-table tr:hover td{background:#f9fbf9}.emp-table tr.fired-row td{color:#9ca3af}.emp-table tr.fired-row td b{color:#9ca3af;font-weight:400}.dept-table{min-width:unset}.report-table{width:100%;border-collapse:collapse}.report-table th,.report-table td{padding:9px 12px;border-bottom:1px solid var(--border);text-align:right}.report-table th{background:#f0f4f0;font-weight:500;font-size:12px;color:var(--text-muted);text-align:center}.report-table td:first-child,.report-table th:first-child{text-align:left}.report-table .total{font-weight:600;background:#f0f4f0}.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:500}.badge-work{background:#e3f2fd;color:#1565c0}.badge-vacation{background:#e8f5e9;color:#2e7d32}.badge-sick{background:#fff3e0;color:#e65100}.badge-absent{background:#ffebee;color:#c62828}@media (max-width: 768px){nav{padding:0 12px;gap:16px;overflow-x:auto;height:auto;min-height:48px;flex-wrap:nowrap}nav .brand{flex-shrink:0}nav a{white-space:nowrap;font-size:13px}nav>div:last-child{flex-shrink:0}.page{padding:12px}.toolbar{gap:6px;padding:8px 10px}.toolbar .week-label{font-size:12px;padding:4px 8px}table{min-width:600px}thead th,tbody td{padding:7px 8px;font-size:12px}thead th.col-emp{min-width:120px}td.col-emp{padding:6px 8px}.emp-name{font-size:12px}.emp-sub{font-size:10px}td.day-cell{width:70px;height:48px}.shift-block{padding:3px 5px}.shift-sum{font-size:11px}.modal{width:100%!important;max-width:100%!important;border-radius:16px 16px 0 0;position:fixed;bottom:0;left:0;right:0;max-height:92vh;overflow-y:auto}.modal-overlay{align-items:flex-end}.field-row{flex-direction:column;gap:8px}.stats-bar{font-size:11px;padding:6px 10px}.emp-table th:nth-child(5),.emp-table td:nth-child(5),.emp-table th:nth-child(6),.emp-table td:nth-child(6),.emp-table th:nth-child(7),.emp-table td:nth-child(7){display:none}table.month-table .col-emp{width:120px;min-width:120px}}.app-footer{text-align:center;padding:14px 20px;font-size:12px;color:var(--text-muted);border-top:1px solid var(--border);margin-top:40px;background:var(--surface)}
