[hidden]{display:none !important}
:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#152c3b;background:#f3f7fa;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}input,select{outline-color:#138771}.symbols{position:absolute;width:0;height:0;overflow:hidden}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.035em}h2{font-size:18px;letter-spacing:-.025em}p{line-height:1.45}.app-shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;width:238px;min-width:238px;display:flex;flex-direction:column;gap:12px;padding:25px 15px 14px;color:#c5e1dc;background:linear-gradient(152deg,#033f42 0%,#022b35 55%,#082939 100%);box-shadow:3px 0 24px #0a455215;z-index:6}.brand{display:flex;align-items:center;gap:12px;padding:4px 10px 29px;color:white}.brand-emblem,.login-symbol{font-size:38px;line-height:1;letter-spacing:-.15em;font-weight:900;color:#fff}.brand-emblem span,.login-symbol span{color:#62ddbb}.brand>div:last-child{display:flex;flex-direction:column;line-height:1.04}.brand b{font-size:24px;letter-spacing:.08em}.brand>div:last-child>span{font-size:14px;letter-spacing:.18em;font-weight:700;margin-top:4px}.nav-caption{font-size:10px;font-weight:800;color:#78a6ad;letter-spacing:.17em;padding:8px 16px 5px}.nav-caption.inner{padding-top:20px}.sidebar nav{display:grid;gap:5px}.nav-link{display:flex;align-items:center;gap:13px;border:1px solid transparent;background:transparent;color:#c8dfde;border-radius:11px;padding:13px 15px;text-align:left;font-weight:650;font-size:13px;transition:.15s}.nav-link svg{width:19px;height:19px}.nav-link:hover{background:#ffffff12}.nav-link.active{background:linear-gradient(95deg,#178b78,#126c70);border-color:#51d5b362;color:white;box-shadow:0 8px 23px #002b2b45}.nav-count{margin-left:auto;background:#ef5258;color:white;font-size:11px;border-radius:20px;padding:3px 8px}.sidebar-spacer{flex:1}.sidebar-info{border:1px solid #ffffff21;padding:17px;background:linear-gradient(145deg,#0d5960,#06414f);border-radius:18px;display:flex;flex-direction:column;gap:9px;box-shadow:0 8px 30px #031b2440}.sidebar-info svg{color:#86f2d4}.sidebar-info strong{color:white;font-size:13px}.sidebar-info span{font-size:12px;line-height:1.55;color:#b7d7d6}.sidebar-accent{width:38px;height:4px;background:#67d8b6;border-radius:10px;margin-top:8px}.sidebar-foot{padding:14px 10px 0;color:#86adb4;font-size:11px}.workspace{flex:1;min-width:0}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;gap:25px;padding:0 30px;background:#fff;border-bottom:1px solid #e2ebf0}.topbar-search{max-width:530px;width:100%;display:flex;align-items:center;gap:10px;border:1px solid #dce6ec;border-radius:10px;background:#f5f9fb;padding:10px 14px;color:#5e8095}.topbar-search input{min-width:0;flex:1;background:transparent;border:0;outline:0;color:#193a4d;font-size:13px}.topbar-right{display:flex;align-items:center;gap:20px}.sync-pill{display:flex;align-items:center;gap:8px;font-size:11px;color:#688295;white-space:nowrap}.live-dot{width:8px;height:8px;background:#17ad76;border-radius:50%;box-shadow:0 0 0 3px #e1faef}.icon-button,.mobile-menu{border:1px solid #dce7ed;background:#fff;border-radius:9px;padding:9px;color:#25465a;display:flex;align-items:center;justify-content:center}.admin-badge{display:flex;align-items:center;gap:9px;border-left:1px solid #e1e9ef;padding-left:18px}.admin-avatar{height:38px;width:38px;display:grid;place-items:center;background:#e0f6ed;border-radius:50%;font-weight:900;color:#087a65}.admin-badge span{display:flex;flex-direction:column;gap:3px}.admin-badge b{font-size:12px}.admin-badge small{font-size:10px;color:#668297}.mobile-menu{display:none}.page-content{padding:29px 30px 45px;max-width:1700px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:end;gap:15px;margin-bottom:24px}.page-heading h1{font-size:29px;margin:6px 0 7px;font-weight:760;color:#122e40}.page-heading p{font-size:13px;color:#658093;margin:0}.eyebrow{font-size:10px;letter-spacing:.17em;color:#088575;font-weight:800}.page-heading-actions{display:flex}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:9px;padding:11px 15px;font-size:12px;font-weight:750;white-space:nowrap;transition:.16s}.btn svg{width:16px;height:16px}.btn.primary{color:white;background:linear-gradient(110deg,#076e61,#064b4b);box-shadow:0 6px 13px #04564a2a}.btn.outline{background:#fff;color:#076b62;border-color:#bbd6d5}.btn.minimal{background:transparent;color:#087a73;padding:7px 6px}.btn:hover{transform:translateY(-1px);filter:brightness(.99)}.text-link{background:none;border:0;color:#047f71;font-size:12px;font-weight:750}.notice{border:1px solid #d4e7e4;background:#e8f8f3;border-radius:11px;padding:12px 17px;margin-bottom:17px;color:#125d55;font-size:13px}.notice.error{background:#fff0f0;border-color:#f1c0c0;color:#aa343b}.view{display:none}.view.active{display:block}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:17px}.kpi-card{display:flex;align-items:center;gap:15px;padding:19px 18px;background:white;border:1px solid #e1ecf0;border-radius:16px;box-shadow:0 6px 23px #2345560a;min-width:0}.kpi-icon{display:grid;place-items:center;height:56px;width:56px;min-width:56px;border-radius:13px}.kpi-icon svg{width:27px;height:27px}.kpi-icon.mint{background:#d9fbef;color:#008e6a}.kpi-icon.rose{background:#ffebeb;color:#ef505c}.kpi-icon.blue{background:#e8f2ff;color:#286fdb}.kpi-icon.amber{background:#fff0e5;color:#ec761f}.kpi-card label{display:block;font-size:12px;color:#4c6a7a;font-weight:650}.kpi-card strong{display:block;font-size:27px;line-height:1.6;color:#112f41;letter-spacing:-.03em}.kpi-card small{font-size:11px;color:#8ca0af}.content-columns{display:grid;grid-template-columns:minmax(0,1.88fr) minmax(285px,.8fr);gap:17px;margin-bottom:17px}.content-primary,.content-aside{min-width:0}.content-aside{display:grid;gap:17px;align-content:start}.panel{background:white;border:1px solid #e0eaf0;border-radius:16px;padding:20px;box-shadow:0 7px 28px #254b5b0a;margin-bottom:17px;min-width:0}.content-aside .panel{margin:0}.panel-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:19px}.panel-head.slim{margin-bottom:11px}.panel-head h2{display:flex;align-items:center;gap:9px;margin:0 0 4px;font-size:17px;color:#1b3445}.panel-head h2 svg{color:#078371}.panel-head h2 .alert-icon{color:#e45757}.panel-head p{font-size:12px;color:#8196a6;margin:0}.filterbar{display:grid;grid-template-columns:1fr 1fr 1fr 1.3fr;gap:10px;align-items:end;margin-bottom:15px}.filterbar label,.form-grid label{display:flex;flex-direction:column;gap:7px;font-size:11px;color:#5c7283;font-weight:700}.filterbar input,.filterbar select,.form-grid input{width:100%;border:1px solid #dbe6ec;background:#fcfefe;color:#234255;padding:11px 11px;border-radius:9px;font-size:12px;height:40px;min-width:0}.filterbar .search-filter{position:relative}.filterbar .search-filter input{padding-left:30px}.filterbar .search-filter svg{position:absolute;width:15px;height:15px;left:10px;bottom:12px;color:#7f99a5}.table-scroll{overflow-x:auto;border:1px solid #ecf1f4;border-radius:10px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;border-bottom:1px solid #edf2f5;padding:11px 10px;white-space:nowrap}th{font-weight:750;font-size:11px;color:#506b7d;background:#f5f9fb}td{color:#506579}tr:last-child td{border-bottom:0}tbody tr:hover{background:#f7fbfa}.person-cell{display:flex;align-items:center;gap:9px}.worker-avatar{height:29px;width:29px;border-radius:50%;background:linear-gradient(140deg,#d4f4e9,#c9def3);color:#086e6f;display:grid;place-items:center;font-size:10px;font-weight:900;flex-shrink:0}.person-label{display:flex;flex-direction:column;gap:2px}.person-label b{color:#203847}.person-label small{font-size:10px;color:#8c9eac}.pill{display:inline-flex;gap:5px;align-items:center;border-radius:20px;padding:6px 9px;font-weight:750;font-size:10px}.pill.green{background:#e0f8eb;color:#0f9469}.pill.amber{background:#fff3db;color:#b97c12}.pill.red{background:#ffe9ec;color:#d83b52}.pill.blue{background:#e9f2ff;color:#3d78cb}.pill.gray{background:#eff3f5;color:#607888}.location-label{display:flex;align-items:center;gap:4px;font-size:11px}.location-label svg{width:14px;height:14px}.location-label.good{color:#0b916f}.location-label.bad{color:#db4657}.empty{padding:25px 12px;text-align:center;color:#8196a6;white-space:normal}.panel-bottom{display:flex;align-items:center;justify-content:space-between;padding:15px 2px 0;color:#8597a6;font-size:11px}.chart-legend{display:flex;gap:15px;margin-bottom:13px;font-size:11px;color:#667e8f}.dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}.dot.green{background:#16b689}.dot.blue{background:#3d7fe5}.activity-chart{display:flex;align-items:end;justify-content:space-between;gap:5px;min-height:165px;border-bottom:1px solid #dfe8ef;padding-top:10px;background:repeating-linear-gradient(to top,transparent 0,transparent 39px,#f1f6f8 40px)}.bar-column{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1;min-width:0}.bar-pair{display:flex;justify-content:center;align-items:end;gap:4px;height:120px;width:100%}.bar{width:32%;max-width:26px;min-width:5px;border-radius:4px 4px 0 0;min-height:2px;transition:height .25s}.bar.entry{background:linear-gradient(#3dd3a9,#14a983)}.bar.exit{background:linear-gradient(#69a9ff,#3275e5)}.bar-label{white-space:nowrap;font-size:9px;color:#7e94a5}.site-summary{display:grid;gap:12px;padding:7px 0}.site-progress{display:grid;grid-template-columns: minmax(0,1fr) 70px 34px;align-items:center;gap:9px;font-size:11px}.site-progress .site-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-track{height:9px;border-radius:20px;background:#edf4f6;overflow:hidden}.progress-value{height:100%;background:linear-gradient(90deg,#0b8c7c,#41cbae);border-radius:20px}.site-progress b{text-align:right;color:#496677}.incident-section{padding-bottom:21px}.incident-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.incident-card{padding:14px;border-radius:13px;border:1px solid #f0e6e4;background:linear-gradient(135deg,#fff8f8,#fff)}.incident-card.orange{background:linear-gradient(135deg,#fffaf1,#fff);border-color:#f7ebd6}.incident-card.neutral{background:linear-gradient(135deg,#f4f9fc,#fff);border-color:#e3edf4}.incident-head{display:flex;gap:10px;align-items:center;margin-bottom:15px}.incident-icon{height:36px;width:36px;display:grid;place-items:center;border-radius:9px;background:#ffe5e8;color:#eb5660}.incident-card.orange .incident-icon{background:#ffedcc;color:#d28918}.incident-card.neutral .incident-icon{background:#e0f1fa;color:#307c9c}.incident-head h3{font-size:12px;margin:0 0 5px;color:#293e4c}.incident-head strong{font-size:22px;color:#df4454}.incident-card.orange .incident-head strong{color:#c88913}.incident-card.neutral .incident-head strong{color:#2683a0}.incident-head small{font-size:10px;color:#8398a7;margin-left:5px}.incident-list{display:grid;gap:1px}.incident-line{border-top:1px solid #eee8e8;display:flex;justify-content:space-between;gap:10px;padding:10px 1px;font-size:11px}.incident-line span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.incident-line b{font-weight:700;color:#3b4c58}.incident-line small{font-size:10px;color:#9b8490}.incident-note{font-size:11px;color:#81919b;line-height:1.5;margin:8px 0 0}.locations-panel{margin-top:17px}.locations-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.location-item{padding:13px;border:1px solid #e3edef;border-radius:11px;display:flex;gap:10px;align-items:center;background:#fbfefd}.location-item .location-mark{width:35px;height:35px;display:grid;place-items:center;border-radius:9px;color:#168d78;background:#e3f8ed;flex-shrink:0}.location-item .location-mark.bad{color:#d44c5b;background:#ffe8ea}.location-item strong{font-size:11px;display:block;color:#193847}.location-item small{color:#8197a4;font-size:10px}.location-item a{color:#087c74;font-size:10px;text-decoration:none}.location-item a:hover{text-decoration:underline}.form-grid{display:grid;gap:12px;align-items:end}.employee-grid{grid-template-columns:.75fr 1.05fr 1.3fr .95fr 1.1fr auto}.site-grid{grid-template-columns:1.6fr 1fr 1fr 1fr auto}.form-grid .btn{height:40px}.form-message{min-height:18px;font-size:12px;color:#13856c}.form-message.error{color:#c5434d}.help-note{color:#7d93a1;font-size:12px;line-height:1.6;margin:14px 0 0}.reports-panel{display:flex;flex-direction:column;align-items:flex-start;max-width:900px;padding:27px}.reports-panel p{font-size:13px;color:#71899a}.reports-panel .filterbar{width:100%;margin:15px 0}.report-icon{background:#e0f5ed;color:#0c8a71;padding:14px;border-radius:13px;margin-bottom:12px}.settings-panel{max-width:850px}.settings-panel>p{color:#647e8f;font-size:13px}.login-screen{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 15% 15%,#e8fbf3,transparent 40%),linear-gradient(120deg,#073f43 0%,#082d3a 45%,#ecf7f6 45%,#f5f9fc 100%);padding:24px}.login-panel{width:100%;max-width:455px;padding:38px;background:white;border:1px solid #e5edef;border-radius:23px;box-shadow:0 22px 70px #062b3640}.login-symbol{background:linear-gradient(130deg,#086e66,#04515b);border-radius:14px;width:59px;height:59px;display:grid;place-items:center;padding-right:8px;margin-bottom:24px}.login-panel h1{font-size:32px;color:#142f42;margin:12px 0}.login-panel>p{color:#718998;font-size:13px}.login-panel label{display:block;font-weight:750;font-size:12px;color:#425e70;margin-bottom:8px}.login-panel form{margin:24px 0 12px}.login-panel input{width:100%;height:47px;border:1px solid #d7e4ea;border-radius:9px;padding:12px;margin-bottom:12px}.btn.full{width:100%;justify-content:space-between;padding:14px 17px}.login-panel small{display:block;color:#8ea1ad;font-size:11px;margin-top:14px}.view>.panel{margin-bottom:18px}.settings-panel .btn{margin-top:18px}@media(max-width:1330px){.sidebar{width:210px;min-width:210px}.page-content{padding:24px 19px}.topbar{padding:0 20px}.kpi-card{padding:14px 12px;gap:10px}.kpi-icon{width:44px;height:44px;min-width:44px}.kpi-card strong{font-size:22px}.content-columns{grid-template-columns:minmax(0,1.5fr) minmax(255px,.72fr)}.incident-grid{gap:9px}.incident-card{padding:11px}.panel{padding:16px}.employee-grid{grid-template-columns:repeat(3,1fr)}.site-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1050px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.content-columns{grid-template-columns:1fr}.content-aside{grid-template-columns:1fr 1fr}.incident-grid{grid-template-columns:1fr}.locations-grid{grid-template-columns:repeat(2,1fr)}.filterbar{grid-template-columns:repeat(2,1fr)}.sidebar{width:190px;min-width:190px}.topbar-right .sync-pill{display:none}}@media(max-width:720px){.sidebar{position:fixed;transform:translateX(-100%);transition:transform .2s;width:245px;min-width:245px}.sidebar.open{transform:translateX(0)}.mobile-menu{display:block}.topbar{height:65px;padding:0 13px;gap:10px}.topbar-search{max-width:none}.admin-badge span,.page-heading-actions{display:none}.admin-badge{padding-left:9px}.topbar-right{gap:8px}.page-content{padding:21px 12px}.page-heading h1{font-size:24px}.page-heading p{font-size:12px}.panel{padding:15px}.kpi-grid{gap:9px}.kpi-card{padding:11px 10px}.kpi-icon{height:39px;min-width:39px;width:39px}.kpi-card label{font-size:10px}.kpi-card strong{font-size:22px}.kpi-card small{font-size:9px}.content-aside{grid-template-columns:1fr}.locations-grid{grid-template-columns:1fr}.employee-grid,.site-grid{grid-template-columns:repeat(2,1fr)}.form-grid .btn{grid-column:1/-1}.login-panel{padding:25px}}@media(max-width:425px){.filterbar{grid-template-columns:1fr 1fr}.employee-grid,.site-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:1fr 1fr}.kpi-card{gap:7px}.kpi-icon{display:none}.admin-avatar{height:31px;width:31px}.topbar-search input{font-size:11px}}

/* PALAU FICHAJES v0.8 · fichajes en vivo / ausentes */
.fichaje-tabs{display:flex;align-items:center;gap:6px;padding:5px;border:1px solid #dce9eb;background:#eaf2f3;border-radius:15px;max-width:max-content;margin-bottom:20px;flex-wrap:wrap}
.fichaje-tab{display:flex;align-items:center;gap:8px;border:0;border-radius:11px;background:transparent;color:#476d76;padding:12px 20px;font-weight:750;font-size:12px;white-space:nowrap}
.fichaje-tab.active{background:white;color:#096d66;box-shadow:0 4px 16px #153c4a16}
.fichaje-tab:focus-visible{outline:2px solid #059d86;outline-offset:1px}
.fichaje-pane{display:none}.fichaje-pane.active{display:block}
.fichaje-pane-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:9px 0 18px}
.fichaje-pane-head h2{font-size:22px;color:#173547;margin-bottom:5px;display:flex;align-items:center;gap:11px}
.fichaje-pane-head p{color:#7b92a1;font-size:12px;margin:0}
.live-indicator{display:inline-block;width:8px;height:8px;background:#20b98a;border-radius:50%;box-shadow:0 0 0 4px #d9faea}
.live-label{display:inline-flex;align-items:center;gap:10px;background:#e5f8ef;color:#11886b;border:1px solid #ccebdc;border-radius:30px;font-size:11px;padding:7px 12px;letter-spacing:normal;font-weight:800}
.live-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:19px}
.live-stat{border-radius:16px;background:#f8fcfb;padding:21px;border:1px solid #dbece8;min-height:116px;box-shadow:0 5px 18px #153c4a08}
.live-stat small{display:block;font-weight:750;color:#486779;font-size:11px}
.live-stat strong{display:block;font-size:29px;letter-spacing:-.05em;color:#173846;margin:8px 0 4px}
.live-stat span{font-size:10px;color:#8096a0}
.live-stat.teal{background:linear-gradient(140deg,#f3fffa,#ecf9f4)}
.live-stat.blue{background:linear-gradient(140deg,#f7faff,#eef5ff);border-color:#dce8fb}
.live-stat.green{background:linear-gradient(140deg,#fbfff8,#f1f9eb);border-color:#e0efd9}
.live-stat.coral{background:linear-gradient(140deg,#fffaf9,#fff1f1);border-color:#f6dfde}
.live-filterbar{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;align-items:end;margin-bottom:18px}
.live-filterbar label,.bulk-review label{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:800;color:#577485;min-width:0}
.live-filterbar input,.live-filterbar select,.bulk-review input,.bulk-review select{height:42px;width:100%;border:1px solid #dce7ed;background:#fcfefe;border-radius:10px;padding:10px 12px;color:#2b4a60;font-size:12px;min-width:0}
.live-table table{min-width:930px}.live-table td{padding:14px 11px;vertical-align:middle}
.live-table .progress-cell{min-width:180px}
.live-timeline{height:16px;width:160px;position:relative;overflow:hidden;border-radius:6px;background:#e9f0f3;border:1px solid #dfebed}
.timeline-lunch{position:absolute;top:0;height:100%;left:50%;width:20%;background:repeating-linear-gradient(45deg,#ffe4bb,#ffe4bb 4px,#fff3de 4px,#fff3de 8px)}
.timeline-work{position:absolute;top:2px;height:10px;background:linear-gradient(90deg,#1aa18a,#40c2aa);border-radius:4px;opacity:.96}
.timeline-work.provisional{background:repeating-linear-gradient(45deg,#16a487,#16a487 4px,#71d1bb 4px,#71d1bb 8px)}
.timeline-hours{display:flex;justify-content:space-between;width:160px;color:#8298a4;font-size:9px;margin-top:4px}
.timeline-legend{display:flex;flex-wrap:wrap;align-items:center;gap:17px;color:#7e939f;font-size:11px;margin-top:15px}
.timeline-legend .key{display:inline-block;width:15px;height:9px;border-radius:3px;margin-right:5px;vertical-align:middle}
.timeline-legend .key.worked{background:#20b79e}.timeline-legend .key.lunch{background:#ffe1ae}.timeline-legend .key.current{background:repeating-linear-gradient(45deg,#16a487,#16a487 4px,#71d1bb 4px,#71d1bb 8px)}
.bulk-review{background:#f4f9f9;border:1px solid #e0ebec;padding:14px;border-radius:13px;display:grid;grid-template-columns:.8fr 1.05fr 1.55fr auto;align-items:end;gap:12px;margin-top:15px}
.bulk-review>div{display:flex;flex-direction:column;gap:6px}.bulk-review>div b{color:#244653;font-size:13px}.bulk-review>div small{font-size:10px;color:#728c99}
.bulk-review .btn{height:42px}.absence-reason{white-space:normal;max-width:390px;line-height:1.45}
#absenceRows input,#absenceSelectAll{accent-color:#087f73;width:16px;height:16px}
@media(max-width:1200px){.live-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bulk-review{grid-template-columns:1fr 1fr}.bulk-review .btn{grid-column:2}}
@media(max-width:700px){.fichaje-tabs{max-width:none;overflow-x:auto;flex-wrap:nowrap}.fichaje-tab{padding:11px 13px}.live-filterbar{grid-template-columns:1fr 1fr}.live-stat{padding:13px;min-height:97px}.live-stat strong{font-size:24px}.live-stat small{font-size:10px}.fichaje-pane-head h2{font-size:18px}.bulk-review{grid-template-columns:1fr}.bulk-review .btn{grid-column:auto}}
@media(max-width:400px){.live-filterbar{grid-template-columns:1fr}}

/* PALAU FICHAJES v0.9 — Imagen corporativa oficial, sin redibujar el logotipo. */
.sidebar .brand{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding:4px 9px 19px;min-width:0;}
.sidebar .brand-logo{display:block;width:100%;max-width:206px;height:auto;aspect-ratio:4.09;object-fit:contain;object-position:left center;}
.sidebar .brand-product{display:block;margin-top:0;padding-left:1px;font-weight:800;font-size:10px;line-height:1.25;letter-spacing:.24em;color:#bfe7dd;}
.login-panel .login-logo{display:block;width:min(100%,325px);height:auto;object-fit:contain;object-position:left center;margin-bottom:22px;}
@media(max-width:1050px){.sidebar .brand-logo{max-width:174px;}}
@media(max-width:720px){.sidebar .brand-logo{max-width:205px;}}

/* Panel lateral de mapa en vivo basado en fichajes (no GPS continuo) */
.sites-map-panel{position:relative;overflow:visible}
.sites-map-head{gap:8px}.sites-map-head h2{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.map-live-indicator{display:inline-flex;font-size:9px;letter-spacing:.04em;background:#e2f8ef;color:#068569;border-radius:20px;padding:4px 8px}
.map-summary{font-size:11px;color:#698494;margin:9px 0 11px}.map-summary strong{font-size:14px;color:#0b5d50}.map-summary span{padding:0 6px;color:#b0c0c7}
.site-map-canvas{height:265px;overflow:hidden;border-radius:13px;border:1px solid #dbe9e8;background:linear-gradient(145deg,#e8f1f4,#f3f7f7);position:relative;z-index:0}
.map-loading{display:grid;place-content:center;text-align:center;font-size:12px;color:#69818e;position:absolute;inset:0;padding:15px}
.site-pin-holder{background:transparent;border:0}
.site-pin{position:relative;display:grid;place-items:center;border:3px solid white;box-shadow:0 4px 12px #153a4770;background:#8da3b0;color:white;font-weight:800;font-size:13px;width:36px;height:36px;border-radius:50%}
.site-pin.has-people{background:#059f82}.site-pin:after{content:"";position:absolute;bottom:-7px;left:13px;border-left:3px solid transparent;border-right:3px solid transparent;border-top:7px solid #8da3b0}.site-pin.has-people:after{border-top-color:#059f82}
.site-map-selected{border-radius:11px;background:#f9fcfb;border:1px solid #e6f0ef;margin-top:11px;max-height:245px;overflow-y:auto}
.map-selected-heading{padding:12px 13px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #e8f0ef}
.map-selected-heading>b,.map-selected-heading span>b{font-size:12px;color:#163c47}.map-selected-heading small{display:block;color:#72909b;font-size:10px;margin-top:3px}
.map-back-button{border:0;background:#e5f3ef;color:#087566;border-radius:9px;font-size:17px;width:28px;height:28px;cursor:pointer}
.map-site-choice{display:grid;padding:4px 8px 8px;max-height:183px;overflow-y:auto}
.map-site-button{display:flex;align-items:center;gap:8px;width:100%;border:0;border-bottom:1px solid #edf3f3;background:transparent;text-align:left;cursor:pointer;padding:10px 5px;font-size:11px;color:#385967}
.map-site-button:hover{background:#effaf6}.map-site-button span:nth-child(2){flex:1}.map-site-button b{color:#0e836d;font-size:12px}
.map-site-dot,.map-person-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#a1b3bb;flex-shrink:0}.map-site-dot.occupied,.map-person-dot{background:#12a987}
.map-workers-list{list-style:none;padding:0 11px;margin:0;max-height:180px;overflow-y:auto}
.map-worker{display:flex;gap:9px;align-items:flex-start;border-top:1px solid #edf2f2;padding:9px 1px}
.map-worker:first-child{border-top:0}.map-worker b{display:block;font-size:11px;color:#254b56}.map-worker small{font-size:10px;color:#78939d;display:block;margin-top:3px}
.map-no-workers,.map-outside-note{font-size:11px;color:#718994;padding:7px 12px}.map-outside-note{color:#a87831}
.map-card-bottom{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:9px;font-size:10px;color:#7b939e}
.map-note{font-size:10px;line-height:1.5;color:#8296a0;margin:9px 0 0}
.map-open{overflow:hidden}.sites-map-panel.map-expanded{position:fixed;z-index:2000;inset:3vh 3vw;margin:0;overflow:auto;display:flex;flex-direction:column;padding:20px;box-shadow:0 0 0 200vmax #0b2b3a80,0 24px 80px #0a2b3e4a}
.sites-map-panel.map-expanded .site-map-canvas{flex:1;min-height:280px;height:auto}
.sites-map-panel.map-expanded .site-map-selected{max-height:200px}
@media(max-width:720px){.sites-map-panel.map-expanded{inset:1vh 2vw;padding:12px}.site-map-canvas{height:290px}}

/* v0.11 · Ficha de obra: cliente y ciudad */
.site-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.site-grid .btn{align-self:end;min-width:150px}
.site-edit-panel{border-color:#bad9d0;background:linear-gradient(180deg,#f7fcfa,#fff 85%);scroll-margin-top:20px}
.site-edit-panel .panel-head{margin-bottom:17px}
@media(max-width:960px){.site-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.site-grid{grid-template-columns:1fr}.site-grid .btn{width:100%}}

/* v0.12 · Histórico de personal por obra */
.personnel-report-panel{scroll-margin-top:18px;margin-top:22px}
.personnel-report-panel .panel-head h2{display:flex;gap:9px;align-items:center}
.personnel-report-panel .panel-head h2 svg{width:20px;height:20px;color:#147c72}
.personnel-report-filters{display:grid;grid-template-columns:minmax(190px,1.5fr) repeat(2,minmax(145px,1fr)) auto;gap:13px;align-items:end;margin-bottom:12px}
.personnel-report-filters label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:750;color:#365568}
.personnel-report-filters input,.personnel-report-filters select{width:100%;height:42px;background:#fff;border:1px solid #d6e5e9;border-radius:9px;padding:0 10px;color:#203f50;font:inherit;font-weight:500}
.personnel-report-filters .btn{height:42px;white-space:nowrap}
.personnel-report-tools{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:4px 0 17px}
.personnel-report-tools .btn{min-height:38px}
#personnelReportStatus{font-size:11px;color:#607d8d;margin-left:auto}
.personnel-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:12px 0 24px}
.personnel-metrics>div{padding:14px 17px;border:1px solid #deebec;border-radius:13px;background:linear-gradient(145deg,#f6fcfa,#f3f8fb);display:flex;flex-direction:column;gap:7px}
.personnel-metrics small{font-weight:650;color:#647f8d;font-size:11px}
.personnel-metrics strong{font-size:23px;line-height:1.1;color:#0b4b49;font-weight:850}
.personnel-subheading{margin:20px 0 9px}
.personnel-subheading h3{font-size:16px;font-weight:800;color:#164653;margin:0}
.personnel-subheading p{font-size:12px;color:#718995;margin:5px 0 0}
.personnel-meta{display:block;color:#76919c;font-size:10px;margin-top:5px;white-space:normal;max-width:245px}
#personnelWorkersRows td,#personnelDetailRows td{vertical-align:middle}
@media(max-width:1050px){.personnel-report-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.personnel-report-filters .btn{justify-content:center}.personnel-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:530px){.personnel-report-filters{grid-template-columns:1fr}.personnel-metrics{gap:8px}.personnel-metrics>div{padding:10px}.personnel-metrics strong{font-size:20px}#personnelReportStatus{margin-left:0}}

/* v0.13: Resolución de incidencias (clasificación y auditoría) */
.incident-line .incident-details{min-width:0;flex:1}
.incident-line .incident-review-btn{border:1px solid #e6dcc9;border-radius:16px;background:#fff1d6;color:#955812;padding:6px 12px;font-size:11px;font-weight:750;flex-shrink:0;align-self:center}
.incident-card.neutral .incident-review-btn{background:#e8f3ff;color:#236990;border-color:#d3e4f0}
.incident-card:not(.neutral):not(.orange) .incident-review-btn{background:#ffe8ec;color:#af3c4b;border-color:#f7dfe4}
.incident-review-btn:hover{filter:brightness(.96)}
.reviewed-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}
.reviewed-item{border:1px solid #e3edf1;border-radius:14px;background:#fbfeff;padding:15px;display:grid;gap:8px}
.reviewed-item h3{font-size:13px;margin:0;color:#213a48}
.reviewed-item small{color:#65808d;font-size:11px}
.reviewed-item p{font-size:12px;color:#48626f;margin:0;overflow-wrap:anywhere}
.reviewed-item .btn{justify-self:start}
.incident-dialog{width:min(560px,calc(100vw - 28px));max-height:88vh;border:0;border-radius:19px;padding:0;box-shadow:0 30px 75px #072c3452;color:#1c3645}
.incident-dialog::backdrop{background:#092d38a6;backdrop-filter:blur(3px)}
.incident-review-form{padding:27px;overflow-y:auto;max-height:88vh}
.incident-dialog-head{display:flex;justify-content:space-between;align-items:start;gap:14px;margin-bottom:20px}
.incident-dialog-head h2{font-size:22px;letter-spacing:-.025em;margin:6px 0 0}
.dialog-eyebrow{font-size:10px;color:#168b7f;letter-spacing:.13em;font-weight:750}
.incident-dialog-close{border:1px solid #e4eef0;background:white;width:34px;height:34px;border-radius:9px;font-weight:700}
.incident-review-context{padding:14px 16px;background:#f0f7f9;border:1px solid #dbe8ed;border-radius:12px;font-size:12px;margin-bottom:18px;line-height:1.7}
.incident-review-context strong{display:block;font-size:14px}
.incident-review-label{display:grid;gap:8px;font-size:12px;font-weight:700;color:#365263;margin:16px 0}
.incident-review-label select,.incident-review-label textarea{width:100%;font:inherit;font-weight:400;font-size:13px;border:1px solid #ccdde4;border-radius:9px;background:white;padding:11px;color:#193b49}
.incident-review-label textarea{resize:vertical;min-height:100px}
.incident-review-check{display:flex;gap:11px;align-items:start;background:#fff6e3;border:1px solid #ffde9b;padding:13px;border-radius:9px;color:#805811;font-size:12px;line-height:1.45}
.incident-review-check[hidden]{display:none}
.incident-review-check input{margin-top:3px}
.incident-dialog-error{color:#b72c42;font-size:12px;padding:10px;background:#fff1f4;border-radius:9px}
.incident-dialog-actions{display:flex;justify-content:end;gap:10px;margin-top:20px}
.incident-audit{max-height:135px;overflow-y:auto;font-size:11px;color:#657e8a}
.incident-audit details{border-top:1px solid #e4edf1;padding-top:10px}
.incident-audit summary{cursor:pointer;font-weight:700}
.incident-audit p{margin:8px 0}
@media(max-width:680px){.reviewed-grid{grid-template-columns:1fr}.incident-review-form{padding:19px}.incident-dialog-actions{flex-direction:column-reverse}.incident-dialog-actions button{width:100%}}

/* FICHENTO v0.14 · Identidad propia y RESUMEN exclusivamente de HOY */
:root{--fic-dark:#063B3E;--fic-teal:#087c72;--fic-mint:#2ac6a1;--fic-border:#dce9ed}
.sidebar .brand{padding:4px 7px 20px;gap:4px;align-items:flex-start}
.sidebar .brand-logo{max-width:210px;width:100%;height:auto;aspect-ratio:auto;object-fit:contain}
.sidebar .brand-product{color:#8edcc8;font-size:10px;letter-spacing:.24em;margin-top:2px}
.login-panel .login-logo{width:min(100%,344px);height:auto;max-height:125px;object-fit:contain;object-position:left center}
.login-panel h1{font-size:31px}
.today-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}
.today-heading-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:#144750;font-size:14px}
.today-heading-title .today-date{font-size:12px;color:#78919b;font-weight:500}
.today-dot{width:9px;height:9px;background:#1fae86;border-radius:50%;box-shadow:0 0 0 4px #d9f5ec;flex-shrink:0}
.today-controls{display:flex;align-items:center;gap:12px;color:#8799a4;font-size:11px}
.today-controls .btn{padding:8px 12px}
.kpi-grid.today-kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.today-kpi{width:100%;text-align:left;cursor:pointer;background:#fff;transition:transform .16s,box-shadow .16s,border-color .16s;min-width:0}
.today-kpi:hover{transform:translateY(-2px);box-shadow:0 14px 25px #12425717;border-color:#b3d9d3}
.today-kpi:focus-visible{outline:2px solid #0cb399;outline-offset:3px}
.today-kpi.attention{background:linear-gradient(125deg,#fff8f8,#fff);border-color:#f2dcdd}
.today-kpi .kpi-icon{min-width:42px;height:42px;width:42px}
.today-kpi .kpi-icon svg{width:22px;height:22px}
.today-kpi label{cursor:pointer;font-size:11px;line-height:1.3}
.today-kpi small{font-size:10px;display:block;line-height:1.4}
.today-main-grid{grid-template-columns:minmax(0,1.5fr) minmax(340px,1fr);align-items:stretch;gap:17px}
.today-main-grid .content-primary,.today-main-grid .content-aside{min-width:0}
.today-map-column{display:block}
.today-map-column .sites-map-panel{height:100%}
.today-activity .panel-head{gap:12px}
.today-activity .panel-head h2{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.today-activity .table-scroll{max-height:520px;overflow-y:auto}
.today-activity table{min-width:580px}
.today-activity td{vertical-align:middle}
.today-activity .person-cell{min-width:120px}
.today-activity .panel-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
.today-hint{font-size:10px;color:#8c9ca5}
.today-absence-section{margin-top:18px;scroll-margin-top:22px}
.today-absence-section .panel-head h2{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.absence-tag{font-size:10px;padding:5px 9px;border-radius:20px;background:#fff0f0;color:#c3414b;letter-spacing:0;font-weight:750}
.today-absence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:430px;overflow-y:auto}
.today-absent-person{display:flex;align-items:center;gap:10px;min-width:0;padding:11px 12px;border-radius:12px;border:1px solid #e8edef;background:#fcfdfd}
.today-absent-person>div{display:flex;flex-direction:column;min-width:0;gap:3px;flex:1}
.today-absent-person strong{font-size:12px;color:#203f4d;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.today-absent-person small{font-size:10px;color:#8297a2}
.today-absent-person .pill{font-size:10px;white-space:nowrap}
.absent-avatar{display:grid;place-items:center;background:#fcecef;border-radius:9px;padding:8px;color:#be5158}
.absent-avatar svg{width:17px;height:17px}
.today-absence-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:9px;margin-top:13px;color:#54727e;font-size:11px}
.today-absence-bottom small{color:#8a9da7}
.today-incident{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #e4ecee;border-radius:12px;background:#fbfdfd;padding:13px}
.today-incident>div{min-width:0;flex:1}
.today-incident strong{display:block;font-size:12px;color:#294753}
.today-incident small{display:block;font-size:10px;color:#8599a6;margin-top:4px}
.today-incident .incident-review-btn{background:#fff1d6;border:1px solid #efdbaf;color:#95611d;padding:7px 11px;border-radius:20px;white-space:nowrap;font-size:11px;font-weight:750}
#todayIncidentSection .incident-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#todayIncidentSection{scroll-margin-top:22px}
.absence-history-panel{margin-top:18px}
.absence-history-panel .panel-head h2{display:flex;align-items:center;gap:8px}
.absence-history-filters{grid-template-columns:1fr 1fr auto;max-width:730px}
.absence-history-filters .btn{height:42px}
.absence-history-stats{font-size:12px;color:#647e8e;margin-bottom:13px;padding:11px;background:#f3f8f7;border:1px solid #e0edeb;border-radius:10px}
#absenceHistoryRows .absence-reason{display:block;color:#8698a2;font-size:11px;margin-top:4px}
@media(max-width:1440px){.today-kpis .kpi-card{flex-direction:column;align-items:flex-start;gap:9px}.today-kpis .kpi-card .kpi-icon{width:38px;height:38px;min-width:38px}}
@media(max-width:1190px){.kpi-grid.today-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.today-main-grid{grid-template-columns:1fr}.today-map-column .sites-map-panel{height:auto}.today-absence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.today-heading{align-items:flex-start;flex-direction:column}.today-heading-title .today-date{width:100%;margin-left:18px}.kpi-grid.today-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.today-kpi .kpi-icon{display:grid}.today-kpis .kpi-card{flex-direction:row;align-items:center}.today-absence-grid{grid-template-columns:1fr}.today-controls{width:100%;justify-content:space-between}.today-absent-person{padding:10px}#todayIncidentSection .incident-grid{grid-template-columns:1fr}.absence-history-filters{grid-template-columns:1fr 1fr}.absence-history-filters .btn{grid-column:1/-1}}
@media(max-width:430px){.today-kpis .kpi-card{flex-direction:column;align-items:flex-start;padding:12px}.today-kpis .kpi-icon{height:32px;width:32px;min-width:32px}.today-activity .panel-head{align-items:flex-start}.today-main-grid .sites-map-panel{padding:14px}.today-absence-bottom{flex-direction:column}}
/* Detalles finales de distribución y accesibilidad móvil */
.map-site-button span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}
.map-site-button span:nth-child(2) small{font-size:10px;color:#7b929e;display:block}
@media(max-width:720px){
 .today-absence-section .panel-head,.today-activity .panel-head,#todayIncidentSection .panel-head{flex-wrap:wrap}
 .today-absence-section .panel-head>div,#todayIncidentSection .panel-head>div{flex:1 1 100%;min-width:0}
 .today-absence-section .panel-head>.btn,#todayIncidentSection .panel-head>.btn{margin-top:2px;max-width:100%;white-space:normal;text-align:center}
}

/* FICHENTO v0.15 · contador de jornada en RESUMEN */
.today-activity .day-clock-cell{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-width:114px}
.today-activity .day-counter{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";font-weight:800;font-size:14px;letter-spacing:.025em;white-space:nowrap}
.today-activity .day-counter.running{color:#067d67}
.today-activity .day-counter.finished{color:#38566a}
.today-activity .day-clock-cell small{font-size:10px;color:#8396a5;white-space:nowrap}
.today-activity .day-counter-empty{color:#8697a4;font-size:11px}
.today-activity th:nth-child(5){min-width:136px}

/* En móvil el contador se repite debajo del trabajador, sin desplazar la tabla.
   La columna normal sigue accesible deslizando horizontalmente. */
.today-activity .day-clock-mobile{display:none}
@media(max-width:760px){
 .today-activity .day-clock-mobile{display:flex;align-items:center;gap:5px;margin:7px 0 0 37px;color:#72899a;font-size:10px;white-space:nowrap}
 .today-activity .day-clock-mobile .day-counter{font-size:11px;letter-spacing:0}
 .today-activity td:first-child{min-width:182px}
}

/* FICHENTO v0.16 — doble identidad visual, producto y empresa usuaria */
.sidebar .brand{padding-bottom:9px;}
.company-brand{margin:2px 6px 9px;padding:13px 12px 12px;border:1px solid rgba(143,219,201,.22);background:rgba(0,34,44,.23);border-radius:12px;display:flex;flex-direction:column;gap:8px;min-width:0}
.company-brand-label{font-size:9px;font-weight:850;letter-spacing:.15em;color:#9fc6c5}
.company-brand-image{min-height:55px;max-height:78px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.company-brand-image img{display:block;max-width:100%;width:auto;max-height:74px;object-fit:contain}
.company-brand-name{font-size:10px;color:#b4d7d2;font-weight:650;line-height:1.35;overflow-wrap:anywhere;text-align:center}
.company-settings{border:1px solid #dce9e8;background:linear-gradient(160deg,#f8fdfc,#fff);border-radius:14px;padding:19px;margin-bottom:24px}
.company-settings h2{margin:0}
.company-settings .help-note{margin-top:6px;margin-bottom:14px}
.company-settings-grid{display:grid;grid-template-columns:minmax(200px,.85fr) minmax(300px,1.65fr);gap:18px;align-items:stretch}
.company-logo-preview{display:flex;align-items:center;justify-content:center;min-height:200px;padding:18px;background:linear-gradient(150deg,#063d40,#062c34);border-radius:12px}
.company-logo-preview img{display:block;max-width:100%;max-height:165px;object-fit:contain}
.company-settings-form{display:flex;flex-direction:column;align-items:stretch;gap:9px;min-width:0}
.company-settings-form label{font-size:12px;font-weight:750;color:#34566a}
.company-settings-inline{display:flex;flex-wrap:wrap;gap:9px;align-items:center}
.company-settings-inline input{flex:1 1 180px;min-width:0}
.company-settings-form input[type=text],.company-settings-form input:not([type]){background:white;border:1px solid #d6e5e8;border-radius:9px;padding:10px 11px;min-height:42px;color:#183745}
.company-settings-form input[type=file]{background:#fff;padding:10px;border:1px dashed #a5c8c3;border-radius:9px;max-width:100%;font-size:12px}
.company-settings-form small{color:#78919d;font-size:11px;line-height:1.5}
.company-settings-actions{display:flex;flex-wrap:wrap;gap:9px}
.company-settings .btn{margin-top:0}
.company-settings .form-message{margin:3px 0 0}
@media(max-width:760px){.company-settings-grid{grid-template-columns:1fr}.company-logo-preview{min-height:150px}.company-settings{padding:14px}}

.sidebar{overflow-y:auto}

/* FICHENTO v0.17 — Centro de exportaciones */
.export-center{padding:23px!important}.export-center-badge{color:#0a776f;background:#e6f8f1;border-radius:30px;font-size:11px;font-weight:850;padding:9px 14px}
.export-center-grid{display:grid;grid-template-columns:minmax(280px,1.02fr) minmax(280px,.98fr);gap:22px;margin-top:20px;align-items:start}
.export-options h3,.export-config h3{color:#1b4050;font-size:15px;margin:0 0 13px}
.report-kind-list{display:grid;gap:7px}.report-kind-card{border:1px solid #deebef;background:#fff;border-radius:11px;padding:13px;display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer;min-width:0;width:100%;color:#254b59}
.report-kind-card.active{border:1px solid #159b88;background:#effcf8;box-shadow:0 0 0 1px #159b8826}.report-kind-card:hover{background:#f4faf9}.report-kind-icon{font-size:20px;width:33px;text-align:center;flex-shrink:0}.report-kind-card span:nth-child(2){display:flex;flex:1;flex-direction:column;gap:4px;min-width:0}.report-kind-card strong{font-size:12px;font-weight:800}.report-kind-card small{font-size:11px;color:#6d8996;line-height:1.5}.kind-radio{border:2px solid #a6bac0;width:16px;height:16px;border-radius:50%;flex-shrink:0}.report-kind-card.active .kind-radio{background:#129b84;box-shadow:inset 0 0 0 3px #fff;border-color:#129b84}
.export-config{border:1px solid #e2ecee;border-radius:13px;background:linear-gradient(180deg,#f9fcfc,#fff);padding:20px}.export-config form{display:grid;gap:12px}.export-config label{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:800;color:#4e6c78}.export-config input,.export-config select{width:100%;min-height:42px;border-radius:10px;border:1px solid #d9e6e8;background:white;padding:9px 10px;color:#2b4a59;font-size:12px}.report-config-dates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.report-preview-info{border:1px solid #cfebdf;background:#ecf9f5;border-radius:11px;padding:13px;display:flex;flex-direction:column;gap:7px;color:#355f65;font-size:11px}.report-preview-info b{font-size:12px;color:#125c58}.report-preview-info span{line-height:1.7}.report-preview-info small{color:#4d807b}.report-download-row{display:flex;gap:10px;flex-wrap:wrap}.report-download-row .btn{flex:1;justify-content:center;white-space:nowrap}.report-sample{margin-top:17px}.report-sample table{min-width:900px}.report-sample td{max-width:250px;overflow:hidden;text-overflow:ellipsis}.export-center [hidden]{display:none!important}
@media(max-width:850px){.export-center-grid{grid-template-columns:1fr}.export-center{padding:15px!important}.report-kind-card{padding:12px}.report-download-row .btn{flex:1 1 140px}}

/* FICHENTO v0.20: parte de jornada. Se conserva el sistema visual de la aplicación. */
.jornada-summary-panel{padding:24px!important}
.jornada-summary-heading{align-items:center;gap:20px;flex-wrap:wrap}
.jornada-summary-heading h2{font-size:23px;margin:4px 0 6px}
.jornada-eyebrow{color:#119786;font-size:10px;font-weight:850;letter-spacing:1.5px}
.jornada-action-group{display:flex;gap:7px;flex-wrap:wrap}
.jornada-filters{display:grid;grid-template-columns:1fr 1fr 1.3fr 1.3fr auto;gap:10px;align-items:end;margin:20px 0 16px}
.jornada-filters label{font-size:11px;color:#466474;font-weight:800;display:flex;flex-direction:column;gap:6px}
.jornada-filters input,.jornada-filters select{min-width:0;width:100%;min-height:42px;padding:9px;border:1px solid #d9e6e9;border-radius:9px;background:white;color:#244854}
.jornada-filters>.btn{min-height:42px}
.jornada-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:10px 0 17px}
.jornada-metrics>div{border:1px solid #dcebed;background:#f5fbfb;border-radius:11px;padding:15px 13px;display:flex;flex-direction:column;gap:6px}
.jornada-metrics span{font-size:11px;color:#597785;font-weight:650}
.jornada-metrics strong{font-size:23px;letter-spacing:-.5px;color:#073e42;font-variant-numeric:tabular-nums}
.jornada-metrics>div:nth-child(3) strong{color:#b37614}.jornada-metrics>div:nth-child(4) strong{color:#d94d58}
.jornada-table-scroll{overflow-x:auto;border:1px solid #dce8eb;border-radius:12px;max-width:100%}
.jornada-table{border-collapse:collapse;width:100%;min-width:1540px;white-space:nowrap;font-size:11px}
.jornada-table thead{background:#083d42;color:white;position:sticky;top:0}
.jornada-table th{padding:15px 12px;text-align:left;font-size:10px;font-weight:800;letter-spacing:.1px;color:white}
.jornada-table tbody td{padding:12px;border-bottom:1px solid #e7eef0;color:#2d4858}
.jornada-table tbody tr:nth-child(even){background:#f8fbfc}
.jornada-table tbody tr:hover{background:#eef9f6}
.jornada-table td:nth-child(3){font-weight:700;color:#14333e}
.jornada-table td:nth-child(6),.jornada-table td:nth-child(7),.jornada-table td:nth-child(8),.jornada-table td:nth-child(9){font-variant-numeric:tabular-nums}
.jornada-code{color:#627f8b;background:#eaf3f5;padding:4px 7px;border-radius:6px;font-weight:750}
.jornada-pause{background:#e8f4f4;color:#187971;font-weight:750;padding:6px 9px;border-radius:7px}
.jornada-comments{min-width:260px;max-width:380px;white-space:normal;line-height:1.5;color:#65808d!important}
.jornada-table-bottom{display:flex;justify-content:space-between;gap:15px;padding:13px 2px;font-size:11px;color:#7993a0}
.jornada-legal{border-top:1px solid #e6edef;padding-top:14px;color:#718995;font-size:10px;line-height:1.7;margin-top:8px}
@media(max-width:1200px){.jornada-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.jornada-filters>.btn{grid-column:1/-1}.jornada-metrics{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.jornada-summary-panel{padding:14px!important}.jornada-summary-heading h2{font-size:20px}.jornada-action-group{width:100%}.jornada-action-group .btn{flex:1}.jornada-filters{grid-template-columns:1fr 1fr}.jornada-filters label:nth-child(3),.jornada-filters label:nth-child(4){grid-column:1/-1}.jornada-metrics{grid-template-columns:repeat(2,1fr)}.jornada-metrics>div{padding:12px}.jornada-metrics strong{font-size:20px}.jornada-table-bottom{flex-direction:column}}

/* FICHENTO v0.21 · revisión y cierres */
.incident-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 17px}
.incident-tab{border:1px solid #c7dada;background:#fff;color:#17444a;padding:12px 20px;border-radius:11px;cursor:pointer;font-weight:700}
.incident-tab.active{background:#0b7772;border-color:#0b7772;color:#fff}
.incident-pane[hidden]{display:none!important}
.auto-closure-grid{display:grid;gap:10px}
.auto-closure-card{display:flex;justify-content:space-between;gap:16px;align-items:center;border:1px solid #e2ecec;border-radius:12px;padding:16px;background:#fbfdfd}
.auto-closure-card small{font-size:12px;color:#69818a}
.auto-closure-card .pill{display:inline-block;margin-top:7px}
.auto-closure-card p{font-size:13px;color:#526970}
.holiday-config{margin-top:25px;border-top:1px solid #e5eeee;padding-top:20px}
.holiday-form{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:12px 0}
.holiday-form label{display:flex;flex-direction:column;gap:6px}
.holiday-form input{min-height:42px;min-width:185px;border:1px solid #c9dcdd;border-radius:9px;padding:9px}
.holiday-row{display:flex;align-items:center;justify-content:space-between;padding:8px;border-bottom:1px solid #e5eeee}
@media(max-width:720px){.auto-closure-card{align-items:flex-start;flex-direction:column}.holiday-form{flex-direction:column;align-items:stretch}.holiday-form label,.holiday-form input{width:100%}}

.incident-date-filter{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:8px 0 12px}.incident-date-filter label{display:grid;gap:6px;font-size:12px;font-weight:650}.incident-date-filter input{border:1px solid #d5e4e4;border-radius:8px;padding:10px;background:white}.incident-date-filter .btn{height:43px}

/* v0.22 - selector de la modalidad de geolocalización */
.location-mode-settings{margin-top:22px;border:1px solid #dce9e8;background:linear-gradient(160deg,#f8fdfc,#fff);border-radius:14px;padding:20px}
.location-mode-heading h2{margin:0 0 5px;color:#123746}
.location-mode-form{display:grid;gap:11px;margin-top:16px}
.location-option{display:flex;gap:14px;align-items:flex-start;background:white;border:1px solid #d4e5e4;border-radius:12px;padding:17px;cursor:pointer}
.location-option:has(input:checked){border-color:#12887b;box-shadow:0 0 0 2px #12887b26;background:#f1fbf7}
.location-option input{flex:0 0 auto;margin-top:4px;accent-color:#087e76;width:18px;height:18px}
.location-option>span{display:flex;flex-direction:column;gap:5px;color:#4b6875;font-size:13px;line-height:1.5}
.location-option strong{color:#153b43;font-size:15px}
.location-option small{display:inline-block;margin-left:5px;color:#067d66;background:#e2f8ee;padding:2px 7px;border-radius:30px;font-size:10px}
.location-mode-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:5px}
.location-mode-actions .help-note{margin:0}
@media(max-width:580px){.location-mode-settings{padding:14px}.location-option{padding:13px}.location-mode-actions{align-items:stretch;flex-direction:column}}

/* v0.23 · edición y seguridad */
.employee-actions{display:flex;gap:7px;flex-wrap:wrap;min-width:180px}.employee-edit-panel{margin-top:20px}.employee-edit-panel[hidden]{display:none!important}
.employee-form-actions{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.employee-edit-panel textarea{border:1px solid #d5e5e6;border-radius:9px;min-height:75px;padding:10px;width:100%;font:inherit}
.employee-history{border:1px solid #deeceb;border-radius:12px;padding:10px;margin:12px 0;background:#fcfefe;max-height:320px;overflow:auto;font-size:12px;color:#365663}
.audit-row{padding:11px 9px;border-bottom:1px solid #e3eeee;line-height:1.5}.audit-row:last-child{border-bottom:0}.audit-row small{display:block;color:#718b92;margin-top:3px}
.security-settings{margin:25px 0;border:1px solid #cce3df;background:#f7fcfa;padding:20px;border-radius:15px}.security-settings h2{color:#123f48;margin:0}.security-settings h3{color:#123f48;font-size:15px;margin:18px 0 8px}
.security-account-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end;margin:14px 0}.security-account-form label{font-size:12px;font-weight:750;display:flex;flex-direction:column;gap:6px}.security-account-form input{border:1px solid #cbdedd;border-radius:9px;min-height:43px;padding:10px;font-size:13px;min-width:0}.security-account-form button{min-height:43px}
#loginForm input{width:100%;min-height:44px}.employee-actions .btn{font-size:11px;padding:9px 11px}
@media(max-width:700px){.security-account-form{grid-template-columns:1fr}.security-settings{padding:14px}.employee-actions{min-width:125px}}

.employee-edit-panel .full-width{grid-column:1/-1}.employee-edit-panel h3{margin:14px 0 6px;font-size:15px;color:#153f45}

/* v0.24 · indicación discreta de un método de ubicación personalizado */
.method-override-note{display:block;margin-top:4px;font-size:11px;color:var(--muted,#72869a);white-space:nowrap}

/* Selector individual del método en la ficha del trabajador */
.employee-edit-panel .form-grid select{width:100%;border:1px solid #dbe6ec;background:#fcfefe;color:#234255;padding:10px 11px;border-radius:9px;font-size:12px;height:40px;min-width:0}
.employee-edit-panel .form-grid label .help-note{margin:0;font-size:11px;font-weight:400;line-height:1.4}

/* v0.25 · cierre forzado de jornadas abiertas, solo administración */
.force-close-button{padding:8px 10px;font-size:10px;line-height:1.35;color:#8a4b18!important;border-color:#e7cda8!important;background:#fffaf1!important;white-space:normal;min-width:117px;max-width:145px}
.force-close-button:hover{background:#fff2d9!important;border-color:#d3a46c!important}
.today-activity th:last-child{min-width:142px}
#liveRows .force-close-button{max-width:none}
.muted-cell{color:#a1b0b7;font-size:12px}
#forceClosureDialog .incident-review-context{line-height:1.65}
#forceClosureDialog .incident-review-check{margin-top:4px}
@media(max-width:760px){.today-activity .force-close-button{min-width:116px}.today-activity table{min-width:845px}}

/* v0.26 · ayuda contextual del método de ubicación individual */
.employee-edit-panel .form-grid label .method-choice-help{display:block;border:1px solid #cbe4dc;border-radius:9px;background:#f2faf7;color:#225b53;padding:11px 12px;font-size:12px;font-weight:500;line-height:1.55;margin:8px 0 5px}
.employee-edit-panel .form-grid select[name="location_mode_override"]{height:auto;min-height:44px;font-size:13px;line-height:1.35}


/* FICHENTO v0.28 — consumo de WhatsApp */
.whatsapp-usage-panel{max-width:1160px}
.whatsapp-usage-filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:18px 0 22px}
.whatsapp-usage-filters label{font-size:12px;font-weight:700;color:#405c6a;display:grid;gap:6px}
.whatsapp-usage-filters input{border:1px solid #d5e5e8;border-radius:9px;background:#fff;padding:10px;font-size:13px;color:#203b45}
#waStatus{font-size:12px;color:#577b88;min-height:20px;align-self:center}
.whatsapp-usage-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}
.whatsapp-usage-grid>div{background:#f7fbfb;border:1px solid #d9e9e8;border-radius:14px;padding:17px;display:grid;gap:8px;min-width:0}
.whatsapp-usage-grid small{font-size:11px;color:#667e8a}
.whatsapp-usage-grid strong{font-size:24px;color:#0b615c;font-weight:800;word-break:break-word}
.whatsapp-usage-panel h3{margin-top:30px;font-size:16px}
@media(max-width:850px){.whatsapp-usage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:450px){.whatsapp-usage-grid{grid-template-columns:1fr 1fr;gap:8px}.whatsapp-usage-grid>div{padding:11px}.whatsapp-usage-grid strong{font-size:20px}}

@media(max-width:425px){.topbar-right{gap:6px}.topbar-search{min-width:0}}
