*{box-sizing:border-box}
:root{--blue:#00A6D6;--dark:#063B52;--navy:#101820;--bg:#F3F7FA;--border:#D8E2EA;--soft:#EAF7FC}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:linear-gradient(180deg,#fff 0%,var(--bg) 100%);color:var(--navy)}
.app{max-width:960px;margin:0 auto;padding:14px}
.loginScreen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:18px;background:linear-gradient(180deg,#fff 0%,var(--bg) 100%)}
.loginCard{width:100%;max-width:430px;background:white;border:1px solid var(--border);border-radius:28px;padding:22px;box-shadow:0 14px 36px rgba(6,59,82,.16)}
.loginLogo{width:100%;max-width:310px;display:block;margin:0 auto 16px}
.loginCard h1{text-align:center;margin:0 0 6px}.loginCard p{text-align:center;color:var(--dark);font-weight:700}
.loginError{color:#b91c1c;font-weight:900;text-align:center;min-height:22px;margin-top:6px}.smallHint{font-size:12px!important;color:#64748b!important}
.brandHeader{background:white;border:1px solid var(--border);border-radius:26px;padding:18px;box-shadow:0 10px 26px rgba(6,59,82,.12);display:flex;justify-content:space-between;align-items:center;gap:12px}
.brandBlock{display:flex;align-items:center;gap:14px;min-width:0}.brandLogo{width:180px;max-width:52vw;height:auto;object-fit:contain}.brandText h1{margin:0;font-size:22px}.brandText p{margin:4px 0 0;color:var(--dark);font-weight:800}
.headerActions{display:flex;align-items:center;gap:8px}.roleBadge{background:var(--soft);color:var(--dark);border:1px solid #8AD7EF;border-radius:999px;padding:7px 9px;font-size:12px;font-weight:900;white-space:nowrap}.logoutBtn{width:auto;padding:8px 10px;border-radius:999px;font-size:12px;background:var(--dark);margin:0}.version{background:var(--blue);color:white;padding:8px 10px;border-radius:999px;font-weight:900;font-size:13px}
.tabs{display:flex;gap:8px;overflow-x:auto;padding:14px 0}.tab{border:0;border-radius:16px;background:#E5EDF2;color:var(--navy);font-weight:900;padding:14px 16px;white-space:nowrap;font-size:15px}.tab.active{background:var(--blue);color:white}
.panel{display:none}.panel.active{display:block}h2{margin:8px 0 14px}h3{margin:0 0 10px}
.card{background:white;border:1px solid var(--border);border-radius:22px;padding:16px;margin-bottom:14px;box-shadow:0 8px 18px rgba(0,0,0,.05)}
label{display:block;font-weight:900;margin:10px 0 6px}input,select,textarea{width:100%;border:1px solid #C9D7E0;border-radius:16px;padding:14px;font-size:16px;margin-bottom:10px;background:#FBFDFE}textarea{min-height:190px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
button{width:100%;border:0;border-radius:18px;background:var(--blue);color:white;font-size:16px;font-weight:900;padding:15px;margin:6px 0;cursor:pointer}button.secondary,.backBtn{background:var(--dark)}button.ok{background:#0E8F62}button.warn{background:#E0831A}button.danger{background:#C62828}
.hint{color:#64748b;font-size:14px;line-height:1.45}.topnote{background:var(--soft);border:1px solid #8AD7EF;color:var(--dark);border-radius:18px;padding:12px;margin-bottom:12px;font-size:14px;font-weight:800}
.list{display:grid;gap:12px}.item{background:white;border:1px solid var(--border);border-radius:20px;padding:15px}.item h3{margin:0 0 8px;font-size:19px}.meta{color:#64748b;font-size:14px;line-height:1.5}.row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:10px}.row button{padding:11px;font-size:14px;border-radius:14px}
.quickBox{background:#f8fafc;border:1px solid #cbd5e1;border-radius:18px;padding:12px;margin:12px 0}.primaryQuick{border:2px solid var(--blue);background:var(--soft)}.quickTitle{font-weight:900;margin-bottom:8px;color:var(--dark)}.quickCenters{display:flex;flex-wrap:wrap;gap:8px}.quickChip{width:auto;margin:0;padding:10px 12px;border-radius:999px;background:#DDF4FB;color:var(--dark);border:1px solid #A9DDEC;font-size:14px}.quickChip.selected{background:var(--blue);color:white}
.status{background:#F8FBFC;border:1px solid #C9D7E0;border-radius:16px;padding:12px;margin:10px 0;color:var(--dark);font-weight:700}.qrCanvasBox{display:flex;justify-content:center;margin:12px 0}.qrCanvasBox canvas{background:#f8fafc;border:2px dashed #94a3b8;border-radius:18px;padding:18px}.pill{display:inline-block;background:#DDF4FB;color:var(--dark);border-radius:999px;padding:4px 8px;font-size:12px;font-weight:900}.pill.red{background:#fee2e2;color:#991b1b}.pill.green{background:#dcfce7;color:#166534}.adminOnly{border:2px solid var(--dark);background:#f8fafc}.adminCoords{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}
.bar{display:flex;margin-bottom:8px}.backBtn{width:auto;border-radius:14px;padding:11px 14px}
body.worker-role .adminOnlyTab,body.worker-role #admin,body.worker-role #exportar,body.worker-role .adminOnly{display:none!important}
@media(max-width:640px){.app{padding:10px}.brandHeader{align-items:flex-start}.brandBlock{flex-direction:column;align-items:flex-start;gap:8px}.brandLogo{width:230px;max-width:78vw}.brandText h1{display:none}.brandText p{font-size:13px}.headerActions{flex-direction:column;align-items:flex-end;gap:5px}.row{grid-template-columns:1fr}}

/* v1.5 PIN trabajadores */
.workerPinCard{display:none}
body.worker-role .workerPinCard{display:block}
body.admin-role .workerPinCard{display:none}
.miniStatus{display:none;font-size:14px}
