/* Operational comparisons | scoped to FarmaTurnos data surfaces */
.vi-ops-timeline,.vi-presence-graph,.vi-farmatic-graph{min-width:0;padding:12px 15px;margin:12px 0;background:var(--surface);border:1px solid var(--line);border-radius:12px}
.vi-panel-head{display:flex;align-items:start;justify-content:space-between;flex-wrap:wrap;gap:9px;margin:0 0 13px}
.vi-panel-head h2{font-size:16px;letter-spacing:-.015em;margin:0;color:var(--ink)}
.vi-panel-head p{color:var(--ink-3);margin:4px 0 0;font-size:12px}
.vi-key{display:flex;gap:9px;align-items:center;flex-wrap:wrap;color:var(--ink-2);font-size:11px}
.vi-key>span{display:flex;align-items:center;gap:4px}
.vi-key i{width:13px;height:7px;display:inline-block;border-radius:3px}
.vi-open-key,.vi-interval.vi-is-open{background:color-mix(in srgb,var(--good) 22%,var(--surface))}
.vi-shift-key,.vi-interval.vi-is-shift{background:var(--brand)}
.vi-now-key,.vi-interval.vi-now{background:var(--danger)}
.vi-plan-key,.vi-plan{background:color-mix(in srgb,var(--brand) 33%,var(--surface))}
.vi-real-key,.vi-real,.vi-interval.vi-is-real{background:var(--brand)}
.vi-manual-key,.vi-interval.vi-manual{background:var(--amber)}
.vi-time-scroll{overflow-x:auto;scrollbar-width:thin;max-width:100%}
.vi-time-body{min-width:670px;display:grid;gap:3px}
.vi-line,.vi-axis-row{display:grid;grid-template-columns:minmax(115px,155px) minmax(0,1fr) minmax(102px,190px);align-items:center;gap:9px;min-height:35px}
.vi-line>.vi-worker{font-size:12px;overflow-wrap:anywhere;color:var(--ink);font-weight:720}
.vi-line>.vi-worker small{display:block;color:var(--ink-3);font-size:10px;font-weight:500;margin-top:2px}
.vi-line>small{color:var(--ink-2);font-size:11px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.vi-axis-row{min-height:23px}
.vi-axis{position:relative;width:100%;height:20px;border-bottom:1px solid var(--line)}
.vi-axis>span{position:absolute;bottom:1px;transform:translateX(-50%);font-size:10px;color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.vi-axis>span:first-child{transform:none}
.vi-axis>span:last-child{transform:translateX(-100%)}
.vi-track{position:relative;display:block;min-height:24px;border-radius:5px;border:1px solid var(--line);background:var(--surface-inset);overflow:hidden;width:100%;padding:0}
button.vi-track{cursor:pointer}
button.vi-track:hover,button.vi-track:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.vi-track:before{content:'';pointer-events:none;position:absolute;inset:0;background:linear-gradient(to right,transparent 24.9%,var(--line) 25%,transparent 25.2%,transparent 49.9%,var(--line) 50%,transparent 50.2%,transparent 74.9%,var(--line) 75%,transparent 75.2%);opacity:.6}
.vi-interval{display:block;position:absolute;top:4px;bottom:4px;border-radius:3px;z-index:1;min-width:2px;pointer-events:none}
.vi-interval.vi-is-open{top:0;bottom:0;border-radius:0;z-index:0}
.vi-interval.vi-now{top:0;bottom:0;width:2px!important;z-index:4}
.vi-legacy{display:block;text-align:center;color:var(--ink-3);font-size:10px;padding:4px}
.vi-no-rows{font-size:12px;color:var(--ink-3);margin:7px}
.vi-note{font-size:11px;color:var(--ink-3);margin:9px 0 0}
.vi-flag{color:var(--amber)!important}
.vi-bullet-list{display:grid;gap:10px}
.vi-bullet-row{display:grid;grid-template-columns:minmax(100px,170px) minmax(0,1fr) 145px;align-items:center;gap:11px}
.vi-bullet-row>strong{color:var(--ink);font-size:12px}
.vi-bullet-row>small{color:var(--ink-2);font-size:11px;text-align:right;font-variant-numeric:tabular-nums}
.vi-bullet{position:relative;height:18px;background:var(--surface-inset);border-radius:5px;overflow:hidden}
.vi-bullet>i{position:absolute;left:0;display:block;min-width:0;border-radius:3px}
.vi-bullet>.vi-plan{height:13px;top:2px}
.vi-bullet>.vi-real{height:5px;bottom:2px}
@media(max-width:650px){
 .vi-ops-timeline,.vi-presence-graph,.vi-farmatic-graph{padding:11px}
 .vi-line,.vi-axis-row{grid-template-columns:125px minmax(0,1fr) 128px;gap:6px}
 .vi-bullet-row{grid-template-columns:minmax(80px,100px) minmax(0,1fr);gap:5px}
 .vi-bullet-row>small{grid-column:2;text-align:left}
}


/* 2026-11-13: capacidad mensual y fichajes agrupados; solo Análisis/Fichajes. */
#content .ft-capacity-dashboard {min-width:0;margin:18px 0;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--surface);box-shadow:0 7px 26px rgba(11,50,44,.045)}
#content .ft-cap-header {display:flex;align-items:flex-end;justify-content:space-between;gap:22px;flex-wrap:wrap;margin-bottom:18px}
#content .ft-cap-overline {font-size:10px;font-weight:850;letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}
#content .ft-cap-header h2 {font-size:clamp(21px,2.6vw,29px);font-weight:820;letter-spacing:-.04em;line-height:1.14;margin:5px 0 7px;color:var(--ink)}
#content .ft-cap-header p:last-child {max-width:700px;font-size:12px;line-height:1.6;color:var(--ink-3)}
#content .ft-cap-legend {display:flex;gap:13px;flex-wrap:wrap;font-size:11px;color:var(--ink-2);font-weight:650}
#content .ft-cap-legend span {display:inline-flex;align-items:center;gap:5px}
#content .ft-cap-legend i {width:9px;height:9px;border-radius:3px;background:var(--brand)}
#content .ft-cap-legend i.contract {background:#7973cf}
#content .ft-cap-legend i.plan {background:#098d79}
#content .ft-cap-legend i.need {background:#d48a37}
#content .ft-cap-kpis {display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:12px 0 24px}
#content .ft-cap-kpi {display:grid;align-content:start;gap:5px;min-width:0;padding:15px 13px 14px;border-radius:12px;border:1px solid var(--line);background:var(--surface-inset);border-top:3px solid var(--brand)}
#content .ft-cap-kpi.contract{border-top-color:#7973cf}
#content .ft-cap-kpi.plan{border-top-color:#098d79}
#content .ft-cap-kpi.opening{border-top-color:#4d92bb}
#content .ft-cap-kpi.reception{border-top-color:#8d72ad}
#content .ft-cap-kpi.need{border-top-color:#d48a37}
#content .ft-cap-kpi.guard{border-top-color:#bd6b88}
#content .ft-cap-kpi small {color:var(--ink-3);font-size:11px;font-weight:750}
#content .ft-cap-kpi strong {font-size:clamp(19px,2vw,27px);font-weight:850;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.035em}
#content .ft-cap-kpi span {font-size:10px;line-height:1.35;color:var(--ink-3)}
#content .ft-cap-explanation{
  margin:-11px 0 23px;padding:0 0 10px;
  color:var(--ink-2);border-bottom:1px solid var(--line);
  font-size:12px;line-height:1.6;
}
#content .ft-cap-explanation b{color:var(--ink);font-weight:800}
#content .ft-cap-graph-head {display:flex;justify-content:space-between;align-items:end;flex-wrap:wrap;gap:10px;margin-bottom:12px}
#content .ft-cap-graph-head h3,#content .ft-cap-breakdown h3,#content .ft-cap-people h3 {font-size:17px;font-weight:810;color:var(--ink);letter-spacing:-.025em}
#content .ft-cap-graph-head p {color:var(--ink-3);font-size:11px;margin-top:4px}
#content .ft-cap-method {font-size:11px;color:var(--ink-2);font-weight:720;background:var(--surface-inset);padding:6px 10px;border-radius:20px}
#content .ft-cap-plot-wrap {max-width:100%;min-width:0;overflow-x:auto;scrollbar-width:thin;overscroll-behavior-inline:contain;padding:4px 2px 9px}
#content .ft-cap-plot-grid {min-width:775px;display:grid;grid-template-columns:repeat(12,minmax(53px,1fr));gap:7px;position:relative;align-items:end;border-bottom:1px solid var(--line);background-image:linear-gradient(to bottom,transparent 49.7%,var(--line) 50%,transparent 50.3%);background-size:100% 185px;background-repeat:no-repeat}
#content .ft-cap-line {display:none}
#content .ft-cap-month {appearance:none;min-width:0;display:grid;grid-template-rows:183px auto auto;gap:6px;align-items:end;justify-items:center;border:1px solid transparent;border-bottom:3px solid transparent;border-radius:9px 9px 0 0;background:transparent;padding:6px 2px 8px;color:var(--ink-2);cursor:pointer}
#content .ft-cap-month:hover,#content .ft-cap-month:focus-visible {background:var(--surface-inset);outline:2px solid var(--brand);outline-offset:0}
#content .ft-cap-month.is-selected {background:color-mix(in srgb,var(--brand) 9%,var(--surface));border-bottom-color:var(--brand)}
#content .ft-cap-bars {width:100%;height:180px;min-width:0;display:flex;align-items:end;justify-content:center;gap:3px;position:relative}
#content .ft-cap-column {display:block;flex:0 1 18px;max-width:18px;min-width:5px;height:var(--ft-cap-height);border-radius:4px 4px 0 0;transition:height .18s ease;box-shadow:inset 0 1px rgba(255,255,255,.3)}
#content .ft-cap-column.contract {background:linear-gradient(180deg,#a8a2ed,#7973cf)}
#content .ft-cap-column.plan {background:linear-gradient(180deg,#41c6aa,#098d79)}
#content .ft-cap-column.need {background:linear-gradient(180deg,#f0be79,#d48a37)}
#content .ft-cap-month b {font-size:11px;line-height:1;color:var(--ink);font-weight:800}
#content .ft-cap-month small {font-size:9px;line-height:1.2;color:var(--ink-3);white-space:nowrap}
#content .ft-cap-breakdown {margin-top:19px;padding:16px 18px;border-radius:12px;background:var(--surface-inset);border:1px solid var(--line)}
#content .ft-cap-breakdown>header {display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:12px}
#content .ft-cap-breakdown h3 {margin-top:3px}
#content .ft-cap-balance {font-size:13px;font-weight:840;color:var(--ink);font-variant-numeric:tabular-nums}
#content .ft-cap-flow {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
#content .ft-cap-flow>span {display:grid;gap:5px;padding:11px 10px;border-left:3px solid var(--brand);background:var(--surface);font-size:11px;color:var(--ink-3);border-radius:6px}
#content .ft-cap-flow strong {font-size:16px;color:var(--ink);font-variant-numeric:tabular-nums}
#content .ft-cap-breakdown>p {font-size:11px;line-height:1.6;color:var(--ink-3);margin-top:11px}
#content .ft-cap-people {margin-top:21px}
#content .ft-cap-people>header {display:flex;gap:9px;justify-content:space-between;align-items:baseline;flex-wrap:wrap;margin-bottom:11px}
#content .ft-cap-people>header span {font-size:11px;color:var(--ink-3)}
#content .ft-cap-table-wrap {overflow-x:auto;max-width:100%;scrollbar-width:thin}
#content .ft-cap-table {width:100%;min-width:720px;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;color:var(--ink-2)}
#content .ft-cap-table th,#content .ft-cap-table td {padding:11px 10px;text-align:left;border-bottom:1px solid var(--line)}
#content .ft-cap-table thead th {background:var(--surface-inset);color:var(--ink-3);font-size:10px;font-weight:800;white-space:nowrap}
#content .ft-cap-table tbody th {min-width:160px;color:var(--ink);font-weight:760}
#content .ft-cap-table tbody th small {display:block;font-size:10px;font-weight:450;line-height:1.45;color:var(--ink-3);max-width:250px;margin-top:3px}
#content .ft-cap-person {display:inline-flex;align-items:center;gap:7px}
#content .ft-cap-person:before {content:'';display:inline-block;width:8px;height:8px;flex:none;border-radius:3px;background:var(--ft-cap-person,var(--brand))}
#content .ft-cap-bullet {position:relative;display:block;width:100%;max-width:230px;height:12px;border-radius:9px;background:var(--surface-inset);margin-bottom:5px}
#content .ft-cap-bullet i,#content .ft-cap-bullet b {position:absolute;left:0;border-radius:8px;display:block}
#content .ft-cap-bullet i {height:12px;top:0;background:color-mix(in srgb,#7973cf 35%,var(--surface))}
#content .ft-cap-bullet b {height:5px;top:3px;background:#098d79}
#content .ft-cap-delta {display:inline-flex;white-space:nowrap;padding:4px 7px;border-radius:7px;font-weight:780;font-size:11px}
#content .ft-cap-delta.is-close {background:var(--good-soft,var(--surface-inset));color:var(--good,var(--brand))}
#content .ft-cap-delta.is-under {background:color-mix(in srgb,var(--amber) 14%,var(--surface));color:var(--amber)}
#content .ft-cap-delta.is-over {background:color-mix(in srgb,var(--danger) 11%,var(--surface));color:var(--danger)}
#content .ft-cap-delta.muted {color:var(--ink-3)}
#content .ft-cap-footnote {margin-top:13px;padding-top:10px;border-top:1px solid var(--line);color:var(--ink-3);font-size:11px;line-height:1.6}
#content .ft-cap-warning {color:var(--amber);font-weight:710;margin-bottom:6px}
#content .ft-cap-loading,#content .ft-cap-error {min-height:100px;display:grid;align-content:center;gap:6px;color:var(--ink-2);font-size:13px}
#content .ft-cap-error h2 {color:var(--danger);font-size:17px}
/* Fichajes por fecha y empleado, hora exacta visible en tooltip/foco. */
#content .ft-punch-grouped {padding:18px 18px 15px;margin:18px 0;border:1px solid var(--line);border-radius:16px;background:var(--surface);min-width:0}
#content .ft-punch-head {display:flex;justify-content:space-between;flex-wrap:wrap;align-items:flex-start;gap:9px;margin-bottom:11px}
#content .ft-punch-head h2 {font-size:17px;color:var(--ink);font-weight:820}
#content .ft-punch-head p {font-size:12px;color:var(--ink-3);margin-top:4px}
#content .ft-punch-legend {display:flex;flex-wrap:wrap;gap:10px;color:var(--ink-3);font-size:11px}
#content .ft-punch-legend span {display:inline-flex;gap:5px;align-items:center}
#content .ft-punch-legend i {width:14px;height:8px;border-radius:3px;display:inline-block}
#content .ft-punch-legend .closed {background:#0c936e}
#content .ft-punch-legend .provisional {background:repeating-linear-gradient(45deg,#08795e 0 4px,#64cfb0 4px 8px)}
#content .ft-punch-legend .manual {background:#ae751b}
#content .ft-punch-scroll {width:100%;max-width:100%;overflow-x:auto;overflow-y:visible;scrollbar-width:thin;overscroll-behavior-inline:contain}
#content .ft-punch-content {min-width:790px}
#content .ft-punch-axis-row {display:grid;grid-template-columns:130px 118px minmax(0,1fr) 154px;gap:8px;align-items:end;min-height:31px;font-size:10px;letter-spacing:.06em;color:var(--ink-3);font-weight:800}
#content .ft-punch-axis {position:relative;height:27px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
#content .ft-punch-axis span {position:absolute;bottom:5px;transform:translateX(-50%);white-space:nowrap;letter-spacing:0}
#content .ft-punch-axis span:first-child {transform:none}
#content .ft-punch-axis span:last-child {transform:translateX(-100%)}
#content .ft-punch-day {display:grid;grid-template-columns:130px minmax(0,1fr);gap:8px;padding:9px 0;border-bottom:1px solid var(--line)}
#content .ft-punch-day:last-child {border-bottom:0}
#content .ft-punch-date {display:flex;flex-direction:column;gap:5px;align-self:start;padding:8px 8px;background:var(--surface-inset);border-radius:8px}
#content .ft-punch-date time {font-size:12px;font-weight:850;color:var(--ink);line-height:1.35;text-transform:capitalize}
#content .ft-punch-date small {font-size:10px;color:var(--ink-3)}
#content .ft-punch-day-records {min-width:0;display:grid;gap:6px}
#content .ft-punch-row {display:grid;grid-template-columns:118px minmax(0,1fr) 154px;gap:8px;align-items:center;min-height:30px}
#content .ft-punch-name {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--ink);font-weight:800}
#content .ft-punch-track {position:relative;min-height:26px;border-radius:7px;border:1px solid var(--line);background:var(--surface-inset);overflow:visible}
#content .ft-punch-track:before {content:'';position:absolute;inset:0;border-radius:7px;pointer-events:none;background:linear-gradient(90deg,transparent 24.85%,var(--line) 25%,transparent 25.15%,transparent 49.85%,var(--line) 50%,transparent 50.15%,transparent 74.85%,var(--line) 75%,transparent 75.15%);opacity:.7}
#content .ft-punch-segment {position:absolute;display:block;z-index:1;top:4px;bottom:4px;min-width:3px;border-radius:4px;background:#0c936e;cursor:help;box-shadow:0 0 0 1px rgba(0,0,0,.025)}
#content .ft-punch-segment.is-manual {background:#ae751b}
#content .ft-punch-segment.is-open {background:repeating-linear-gradient(45deg,#057d62 0 7px,#5dd3ad 7px 13px);outline:1px dashed #057d62;outline-offset:1px}
#content .ft-punch-segment:hover,#content .ft-punch-segment:focus-visible {z-index:5;outline:3px solid var(--brand);outline-offset:2px}
#content .ft-punch-segment:hover:after,#content .ft-punch-segment:focus-visible:after {content:attr(data-detail);position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);z-index:9;min-width:180px;max-width:295px;width:max-content;padding:8px 10px;background:#143c33;color:#fff;border-radius:8px;white-space:normal;font-size:11px;line-height:1.4;font-weight:650;box-shadow:0 8px 20px rgba(0,0,0,.25);pointer-events:none}
#content .ft-punch-hours {min-width:0;display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-variant-numeric:tabular-nums;color:var(--ink-2)}
#content .ft-punch-hours b {white-space:nowrap;font-size:11px;font-weight:800}
#content .ft-punch-hours small {font-size:10px;line-height:1.1}
#content .ft-punch-hours .ft-punch-running {color:#07826d;font-weight:780}
#content .ft-punch-flag {font-size:10px;color:var(--amber);font-weight:750}
#content .ft-punch-legacy {font-size:10px;color:var(--ink-3);display:grid;place-items:center;min-height:23px}
#content .ft-punch-source,#content .ft-punch-offline,#content .ft-punch-note {font-size:11px;line-height:1.5;color:var(--ink-3);margin-top:10px}
#content .ft-punch-offline {color:var(--amber)}
#content .ft-punch-empty {padding:14px;color:var(--ink-3);font-size:12px}
@media(max-width:1150px){
 #content .ft-cap-kpis {grid-template-columns:repeat(3,minmax(0,1fr))}
 #content .ft-cap-flow {grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
 #content .ft-capacity-dashboard {padding:13px;border-radius:12px}
 #content .ft-cap-kpis {grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
 #content .ft-cap-kpi {padding:10px}
 #content .ft-cap-kpi strong {font-size:20px}
 #content .ft-cap-header {align-items:start}
 #content .ft-cap-plot-grid {min-width:760px}
 #content .ft-cap-breakdown {padding:12px}
 #content .ft-cap-flow {grid-template-columns:repeat(2,minmax(0,1fr))}
 #content .ft-punch-grouped {padding:12px}
 #content .ft-punch-content {min-width:755px}
 #content .ft-punch-axis-row {grid-template-columns:90px 100px minmax(0,1fr) 116px}
 #content .ft-punch-day {grid-template-columns:90px minmax(0,1fr)}
 #content .ft-punch-row {grid-template-columns:100px minmax(0,1fr) 116px}
}
@media(prefers-reduced-motion:reduce){#content .ft-cap-column {transition:none}}
