.attendance-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(480px,1.6fr);gap:18px}.attendance-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px}.attendance-card h3{margin:0 0 6px}.attendance-actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.attendance-status{display:flex;align-items:center;gap:10px;padding:13px 14px;border-radius:12px;background:#f3f6fa}.attendance-dot{width:11px;height:11px;border-radius:50%;background:#94a3b8}.attendance-dot.online{background:#16a34a;box-shadow:0 0 0 5px #dcfce7}.attendance-map{height:480px;border-radius:14px;overflow:hidden;background:#e8eef5}.attendance-list{display:grid;gap:9px;margin-top:14px}.attendance-member{width:100%;display:grid;grid-template-columns:1fr auto;gap:8px;text-align:left;border:1px solid var(--line);background:#fff;border-radius:12px;padding:12px;cursor:pointer}.attendance-member strong,.attendance-member span{display:block}.attendance-member small{color:var(--muted)}.attendance-member .live{color:#15803d;font-weight:700}.attendance-alert{padding:11px 13px;margin-top:12px;border-radius:10px;background:#fff7ed;color:#9a3412}.attendance-history{margin-top:18px}.attendance-kpis{grid-template-columns:repeat(4,minmax(150px,1fr))!important}
.ftth-map-status{display:flex;align-items:center;gap:7px;margin-top:9px;color:var(--muted);font-size:13px}.ftth-map-status i{width:9px;height:9px;border-radius:50%;background:#f59e0b}.ftth-map-status.ready i{background:#16a34a}.attendance-map .leaflet-control-layers{border:0;border-radius:10px;box-shadow:0 5px 18px #0b274030}.attendance-map .leaflet-control-layers-expanded{padding:10px 12px}
.shift-panel{margin-bottom:18px}.shift-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-bottom:14px}.shift-toolbar .field{min-width:210px}.shift-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.shift-card{border:1px solid var(--line);border-left:5px solid #2563eb;border-radius:12px;padding:13px 14px;background:#fff}.shift-card.off{border-left-color:#94a3b8;background:#f8fafc}.shift-card.piket{border-left-color:#f59e0b}.shift-card-head{display:flex;justify-content:space-between;gap:10px}.shift-card strong,.shift-card span{display:block}.shift-card small{color:var(--muted)}.shift-card-actions{display:flex;gap:7px;margin-top:10px}.shift-summary{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.shift-chip{padding:5px 9px;border-radius:999px;background:#eaf2ff;color:#2457a6;font-size:12px;font-weight:700}
@media(max-width:900px){.attendance-layout{grid-template-columns:1fr}.attendance-map{height:420px}.attendance-kpis{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:520px){.attendance-map{height:360px}.attendance-kpis{grid-template-columns:1fr!important}.attendance-actions>*{flex:1 1 100%}}
