/* ─── VARIABLES ─────────────────────────────────────────────── */
:root {
  --brand:#009E4A; --brand-d:#007A38; --brand-l:#E6F7EE;
  --bg:#F7F8FA; --surface:#fff; --s2:#F3F4F6; --s3:#ECEEF1; --s4:#E2E5E8;
  --t1:#111827; --t2:#6B7280; --t3:#9CA3AF; --border:#E5E7EB;
  --green:#009E4A; --g-light:#ECFDF5;
  --blue:#2563EB;  --b-light:#EFF6FF;
  --amber:#D97706; --a-light:#FFFBEB;
  --red:#DC2626;   --r-light:#FEF2F2;
  --purple:#7C3AED;--p-light:#F5F3FF;
  --r1:6px; --r2:10px; --r3:14px; --r4:20px; --round:9999px;
  --shadow-xs:0 1px 2px rgba(0,0,0,.06);
  --shadow-sm:0 1px 3px rgba(0,0,0,.10),0 1px 2px rgba(0,0,0,.06);
  --shadow-md:0 4px 6px rgba(0,0,0,.07),0 2px 4px rgba(0,0,0,.06);
  --shadow-lg:0 10px 15px rgba(0,0,0,.08),0 4px 6px rgba(0,0,0,.05);
  --font:'DM Sans',system-ui,sans-serif;
  --mono:'DM Mono',monospace;
  --tr:150ms ease;
}
/* ─── RESET ─────────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;overflow-x:hidden;max-width:100vw}
body{font-family:var(--font);font-size:14px;color:var(--t1);background:var(--bg);line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:inherit}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
img{display:block;max-width:100%}

/* ─── UTILS ─────────────────────────────────────────────────── */
.hidden{display:none!important}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mono{font-family:var(--mono)}
.flex{display:flex;align-items:center}
.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}
.ml-auto{margin-left:auto}
.w-full{width:100%}
.text-xs{font-size:11px}.text-sm{font-size:12px}.text-base{font-size:14px}.text-lg{font-size:16px}
.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}
.text-t2{color:var(--t2)}.text-t3{color:var(--t3)}
.text-brand{color:var(--brand)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}

/* ─── BUTTONS ───────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r2);font-weight:500;font-size:13px;transition:var(--tr);white-space:nowrap;line-height:1}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 1px 3px rgba(0,158,74,.25)}
.btn-primary:hover{background:var(--brand-d);box-shadow:0 2px 8px rgba(0,158,74,.3)}
.btn-secondary{background:var(--surface);color:var(--t1);border:1px solid var(--border)}
.btn-secondary:hover{background:var(--s2)}
.btn-ghost{background:transparent;color:var(--t2);padding:7px 10px}
.btn-ghost:hover{background:var(--s2);color:var(--t1)}
.btn-danger{background:var(--r-light);color:var(--red)}
.btn-danger:hover{background:#fecaca}
.btn-icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r1);color:var(--t3);transition:var(--tr);flex-shrink:0}
.btn-icon:hover{background:var(--s3);color:var(--t1)}
.btn-sm{padding:5px 12px;font-size:12px;border-radius:var(--r2)}
.btn-xs{padding:3px 8px;font-size:11px}

/* ─── FORMS ─────────────────────────────────────────────────── */
.input,.select,.textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r2);background:var(--surface);color:var(--t1);transition:var(--tr);outline:none}
.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,158,74,.12)}
.input::placeholder,.textarea::placeholder{color:var(--t3)}
.textarea{resize:vertical;min-height:72px}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-label{font-size:12px;font-weight:500;color:var(--t2)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
/* fila especial para fecha+hora: nunca se expande, columnas al mínimo necesario */
.form-row-dt{display:flex;flex-wrap:wrap;gap:10px}
.form-row-dt .form-group{flex:0 0 auto}
.form-row-dt input[type="date"]{width:150px}
.form-row-dt input[type="time"]{width:110px}

/* ─── BADGE / CHIP ──────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--round);font-size:11px;font-weight:500;white-space:nowrap}
.badge-green{background:var(--g-light);color:var(--green)}
.badge-blue{background:var(--b-light);color:var(--blue)}
.badge-amber{background:var(--a-light);color:var(--amber)}
.badge-red{background:var(--r-light);color:var(--red)}
.badge-purple{background:var(--p-light);color:var(--purple)}
.badge-gray{background:var(--s3);color:var(--t2)}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}

/* ─── CARD ──────────────────────────────────────────────────── */
.card{background:var(--surface);border-radius:var(--r3);box-shadow:var(--shadow-sm);border:1px solid var(--border)}

/* ─── MODAL ─────────────────────────────────────────────────── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:500;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(2px)}
.modal{background:var(--surface);border-radius:var(--r3);box-shadow:var(--shadow-lg);width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}
.modal-sm{max-width:400px}
.modal-md{max-width:560px}
.modal-lg{max-width:720px}
.modal-xl{max-width:900px}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}
.modal-title{font-size:16px;font-weight:600}
.modal-body{padding:20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}
.modal-body-raw{padding:0;gap:0;flex-direction:row;overflow:hidden;height:420px}
.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border);flex-shrink:0}

/* ─── TOAST ─────────────────────────────────────────────────── */
#toast-container{position:fixed;bottom:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--r2);box-shadow:var(--shadow-lg);font-size:13px;font-weight:500;min-width:240px;max-width:360px;animation:toastIn .2s ease;pointer-events:auto}
.toast-success{background:#fff;border-left:4px solid var(--brand);color:var(--t1)}
.toast-error{background:#fff;border-left:4px solid var(--red);color:var(--t1)}
.toast-warn{background:#fff;border-left:4px solid var(--amber);color:var(--t1)}
@keyframes toastIn{from{transform:translateX(100%);opacity:0}to{transform:none;opacity:1}}

/* ─── SPINNER ───────────────────────────────────────────────── */
.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}

/* ─── DIVIDER ───────────────────────────────────────────────── */
.divider{height:1px;background:var(--border);margin:4px 0}

/* ═══════════════════════════════════════════════════════════════
   LOGIN
═══════════════════════════════════════════════════════════════ */
/* ─── LOGIN SPLIT-SCREEN ─────────────────────────────────── */
#login-screen{position:fixed;inset:0;display:grid;grid-template-columns:1fr 1fr;z-index:1000}
@media(max-width:768px){#login-screen{grid-template-columns:1fr}}
.login-panel-left{background:#009E4A;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:48px;position:relative;overflow:hidden}
@media(max-width:768px){.login-panel-left{display:none}}
.login-panel-left::before{content:'';position:absolute;width:400px;height:400px;border-radius:50%;border:80px solid rgba(255,255,255,.06);top:-100px;right:-120px;pointer-events:none}
.login-panel-left::after{content:'';position:absolute;width:300px;height:300px;border-radius:50%;border:60px solid rgba(255,255,255,.05);bottom:-80px;left:-80px;pointer-events:none}
.login-left-brand{display:flex;flex-direction:column;align-items:center;gap:16px;position:relative;z-index:1}
.login-left-title{font-size:32px;font-weight:700;color:#fff;letter-spacing:-.5px}
.login-left-sub{font-size:15px;color:rgba(255,255,255,.65);text-align:center;max-width:240px;line-height:1.5}
.login-left-dots{display:flex;gap:8px;margin-top:8px}
.login-left-dots span{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.3)}
.login-left-dots span:first-child{background:#fff;width:20px;border-radius:3px}
.login-panel-right{background:#fff;display:flex;align-items:center;justify-content:center;padding:48px 40px}
.login-form-wrap{width:100%;max-width:360px;display:flex;flex-direction:column;gap:32px}
.login-form-header{display:flex;flex-direction:column;gap:6px}
.login-form-title{font-size:26px;font-weight:700;color:var(--t1);letter-spacing:-.4px}
.login-form-sub{font-size:14px;color:var(--t3)}
.login-fields{display:flex;flex-direction:column;gap:16px}
.login-field{display:flex;flex-direction:column;gap:6px}
.login-field label{font-size:12px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.6px}
.login-field .input{font-size:15px;padding:12px 14px;border-radius:var(--r2);border:1.5px solid var(--border);transition:border-color .2s,box-shadow .2s}
.login-field .input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(0,158,74,.1)}
.login-pass-wrap{position:relative}
.login-pass-wrap .input{padding-right:44px}
.login-eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--t3);padding:4px;font-size:16px;line-height:1;transition:color .15s}
.login-eye:hover{color:var(--t1)}
.login-btn{width:100%;padding:13px;font-size:15px;font-weight:600;border-radius:var(--r2);background:var(--brand);color:#fff;border:none;cursor:pointer;transition:background .2s,transform .1s,box-shadow .2s;display:flex;align-items:center;justify-content:center;gap:8px;letter-spacing:.1px}
.login-btn:hover{background:#008040;box-shadow:0 4px 16px rgba(0,158,74,.3)}
.login-btn:active{transform:scale(.985)}
.login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}
.login-error{display:flex;align-items:center;gap:6px;padding:10px 14px;border-radius:var(--r2);background:var(--r-light);color:var(--red);font-size:13px;font-weight:500;min-height:0;opacity:0;transition:opacity .2s}
.login-error.visible{opacity:1}
.login-footer{font-size:12px;color:var(--t3);text-align:center}

/* ═══════════════════════════════════════════════════════════════
   APP SHELL
═══════════════════════════════════════════════════════════════ */
#app{display:flex;flex-direction:column;height:100vh;overflow:hidden;max-width:100vw;overflow-x:hidden}

/* ─── TOPBAR ────────────────────────────────────────────────── */
.topbar{height:52px;flex-shrink:0;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:0}
.topbar-logo{display:flex;align-items:center;gap:8px;margin-right:20px;flex-shrink:0}
.topbar-logo-text{font-weight:700;font-size:14px;letter-spacing:-.3px;color:var(--t1)}
.topbar-nav{display:flex;align-items:stretch;gap:0;height:100%}
.nav-item{display:flex;align-items:center;padding:0 14px;color:var(--t2);font-weight:500;font-size:13px;cursor:pointer;transition:color .12s;white-space:nowrap;user-select:none;position:relative;border-bottom:2px solid transparent;margin-bottom:-1px}
.nav-item:hover{color:var(--t1)}
.nav-item.active{color:var(--t1);font-weight:600;border-bottom-color:var(--brand)}
.topbar-user{display:flex;align-items:center;gap:10px;margin-left:auto}
.topbar-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}
.topbar-user-info{display:flex;flex-direction:column;line-height:1.2}
.topbar-user-name{font-size:13px;font-weight:600;color:var(--t1)}
.topbar-user-rol{font-size:11px;color:var(--t3)}

/* ─── MULTI-SELECT EMPLEADOS ────────────────────────────────── */
.multi-emp-wrap{position:relative}
.multi-emp-field{min-height:36px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--r2);background:var(--surface);cursor:pointer;display:flex;flex-wrap:wrap;gap:4px;align-items:center;transition:border-color .15s}
.multi-emp-field:focus-within,.multi-emp-field.open{border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,158,74,.1)}
.multi-emp-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px 2px 4px;background:var(--s3);border-radius:var(--round);font-size:12px;font-weight:500;color:var(--t1);white-space:nowrap}
.multi-emp-chip.responsable{background:var(--brand-l);color:var(--brand-d)}
.multi-emp-chip-avatar{width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:7px;font-weight:700;color:#fff;flex-shrink:0}
.multi-emp-chip-role{font-size:10px;font-weight:600;opacity:.7;letter-spacing:.2px}
.multi-emp-chip-remove{color:var(--t3);cursor:pointer;line-height:1;font-size:13px;padding:0 1px}
.filtro-av-on span{opacity:1;box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--brand)}
.filtro-av-off span{opacity:.28;filter:grayscale(.4)}
.filtro-av:hover span{opacity:.85}
.multi-emp-chip-remove:hover{color:var(--red)}
.multi-emp-placeholder{font-size:13px;color:var(--t3);padding:2px 2px}
.multi-emp-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid var(--border);border-radius:var(--r2);box-shadow:var(--shadow-md);z-index:300;max-height:200px;overflow-y:auto;padding:4px}
.multi-emp-option{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--r1);cursor:pointer;font-size:13px;transition:background .1s}
.multi-emp-option:hover{background:var(--s2)}
.multi-emp-option.selected{background:var(--g-light)}
.multi-emp-option-check{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff;transition:background .1s,border-color .1s}
.multi-emp-option.selected .multi-emp-option-check{background:var(--brand);border-color:var(--brand)}

/* ─── TOPBAR USER BUTTON & DROPDOWN ─────────────────────────── */
.topbar-user{position:relative}
.topbar-user-btn{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--r2);transition:background .12s;user-select:none}
.topbar-user-btn:hover{background:var(--s2)}
.topbar-chevron{font-size:9px;color:var(--t3);margin-left:2px}
.perfil-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid var(--border);border-radius:var(--r3);box-shadow:var(--shadow-lg);min-width:180px;z-index:200;padding:4px;animation:ddIn .12s ease}
@keyframes ddIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.perfil-dd-header{padding:10px 12px 8px;border-bottom:1px solid var(--border);margin-bottom:4px}
.perfil-dd-name{font-size:13px;font-weight:600;color:var(--t1)}
.perfil-dd-rol{font-size:11px;color:var(--t3)}
.perfil-dd-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r2);font-size:13px;cursor:pointer;transition:background .12s;color:var(--t1)}
.perfil-dd-item:hover{background:var(--s2)}
.perfil-dd-danger{color:var(--red)}
.perfil-dd-danger:hover{background:var(--r-light)}

/* ─── MODAL PERFIL ──────────────────────────────────────────── */
.perfil-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;padding-bottom:4px}
.perfil-avatar-circle{width:88px;height:88px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:700;color:#fff;overflow:hidden;flex-shrink:0;position:relative;cursor:pointer}
.perfil-avatar-circle img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.perfil-avatar-overlay{position:absolute;inset:0;border-radius:50%;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s;font-size:20px}
.perfil-avatar-circle:hover .perfil-avatar-overlay{opacity:1}
.perfil-avatar-btns{display:flex;gap:6px}
.perfil-section-sep{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;margin:4px 0}
.perfil-section-sep::before,.perfil-section-sep::after{content:'';flex:1;height:1px;background:var(--border)}

/* ─── MAIN ──────────────────────────────────────────────────── */
.main-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden}
.main-content{flex:1;overflow-y:auto;overflow-x:hidden}

/* ─── VIEWS ─────────────────────────────────────────────────── */
.view{display:none;flex-direction:column;min-height:100%;overflow:hidden}
#view-tareas{overflow:visible}
.view.active{display:flex}
.view-header{display:flex;align-items:center;gap:10px;padding:12px 24px;border-bottom:1px solid var(--border);flex-shrink:0}
.view-title{font-size:17px;font-weight:700;letter-spacing:-.3px;white-space:nowrap}
.view-header-filters{display:flex;align-items:center;gap:6px;flex:1;justify-content:center;flex-wrap:wrap}
.view-toolbar{display:flex;align-items:center;gap:6px;padding:10px 24px;flex-shrink:0;flex-wrap:wrap;border-bottom:1px solid var(--border)}
.view-body{flex:1;overflow-y:auto;padding:0 24px 24px}

/* ─── STATUS BAR ────────────────────────────────────────────── */
.status-bar{display:flex;align-items:center;gap:16px;padding:10px 24px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface)}
.status-bar-date{font-size:12px;font-weight:600;color:var(--t2);white-space:nowrap;flex-shrink:0;min-width:140px}
.status-bar-track{flex:1;height:8px;border-radius:var(--round);background:var(--s3);overflow:visible;display:flex;min-width:120px;position:relative}
.sb-time-marker{position:absolute;top:-4px;width:2px;height:16px;background:var(--t1);border-radius:2px;transform:translateX(-50%);transition:left .5s ease;pointer-events:none;z-index:2}
.sb-time-marker::after{content:'';position:absolute;top:-3px;left:50%;transform:translateX(-50%);width:6px;height:6px;border-radius:50%;background:var(--t1)}
.status-bar-seg{height:100%;transition:width .4s ease}
.seg-done{background:var(--green)}
.seg-active{background:var(--blue)}
.seg-pending{background:#CBD5E1}
.seg-unassigned{background:var(--amber)}
.seg-disponible{background:#ede9fe}
/* ── HORARIO EDITOR ── */
.horario-row{display:grid;grid-template-columns:36px 1fr auto 1fr 1fr 44px;align-items:center;gap:6px;padding:5px 0;border-bottom:1px solid var(--s3)}
.horario-row:last-child{border-bottom:none}
.horario-toggle{width:36px;height:22px;border-radius:11px;border:none;font-size:10px;font-weight:700;cursor:pointer;transition:all .15s;flex-shrink:0;letter-spacing:.2px}
.horario-toggle.on{background:var(--brand);color:#fff}
.horario-toggle.off{background:var(--s3);color:var(--t3)}
.horario-time{width:100%;padding:3px 6px;border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--t1);background:var(--surface);font-family:monospace;text-align:center}
.horario-time:disabled{opacity:.35;background:var(--s2)}
.horario-bar-wrap{height:7px;border-radius:4px;background:var(--s3);position:relative;overflow:hidden}
.horario-bar-fill{position:absolute;height:100%;border-radius:4px;transition:left .2s,width .2s}
.horario-horas{font-size:11px;font-weight:600;color:var(--t2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.status-bar-stats{display:flex;align-items:center;gap:14px;flex-shrink:0}
.stat-item{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:500;white-space:nowrap}
.stat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.stat-val{color:var(--t1)}
.stat-label{color:var(--t3)}

/* ─── SEARCH ────────────────────────────────────────────────── */
.search-wrap{position:relative;flex:1;min-width:160px;max-width:260px}
.search-wrap .input{padding-left:32px;height:32px;font-size:13px;border-radius:var(--round);background:var(--s2);border-color:transparent}
.search-wrap .input:focus{background:#fff;border-color:var(--brand)}
.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:13px;pointer-events:none}
/* Filter selects */
.view-toolbar .select{height:32px;font-size:12px;padding:0 28px 0 10px;border-radius:var(--round);border:1px solid var(--border);background:var(--surface);color:var(--t2);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239CA3AF'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}
.view-toolbar .select:focus{border-color:var(--brand);outline:none}

/* ═══════════════════════════════════════════════════════════════
   KANBAN — Linear-inspired 2026
═══════════════════════════════════════════════════════════════ */
.kanban-wrap{overflow-x:auto;overflow-y:visible;padding:16px 24px 20px;display:flex;gap:14px;align-items:flex-start}

/* Columna */
.kanban-col{flex-shrink:0;width:290px;display:flex;flex-direction:column;background:var(--s2);border:none;border-radius:var(--r3);transition:background .15s}
.kanban-col.drag-over{background:#E8F7EF;outline:2px dashed var(--brand);outline-offset:-2px}
.kanban-col-header{padding:12px 14px 8px;display:flex;align-items:center;gap:8px;flex-shrink:0}
.kanban-col-avatar{width:22px;height:22px;border-radius:50%;flex-shrink:0;font-size:8px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;letter-spacing:-.3px}
.kanban-col-title{font-weight:600;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1)}
.kanban-col-count{background:var(--s4);color:var(--t2);font-size:11px;font-weight:600;padding:2px 7px;border-radius:var(--round);font-family:var(--mono)}
.kanban-col-hours{font-size:11px;font-weight:600;color:var(--t3);font-family:var(--mono);white-space:nowrap}
.kanban-col-add{width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:var(--t3);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;flex-shrink:0;padding:0}
.kanban-col-add:hover{background:var(--brand-l);color:var(--brand)}
.kanban-col-bar-wrap{padding:0 10px 10px;flex-shrink:0}
.kanban-col-bar-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px}
.kanban-col-bar-jornada{font-size:10px;color:var(--t3);font-family:var(--mono)}
.kanban-col-bar-jornada b{color:var(--t1);font-weight:600}
.kanban-col-bar-libre{font-size:11px;font-weight:700;font-family:var(--mono);color:var(--brand)}
.kanban-col-bar-libre.libre-ok{color:var(--brand)}
.kanban-col-bar-libre.libre-warn{color:var(--amber)}
.kanban-col-bar-libre.libre-full{color:var(--red)}
.kanban-col-bar-track{height:7px;border-radius:var(--round);background:var(--s3);overflow:visible;display:flex;position:relative}
.kanban-col-bar-seg{height:100%;transition:width .4s ease}
.kanban-col-bar-stats{display:flex;gap:8px;margin-top:5px;flex-wrap:wrap}
.kanban-col-bar-stat{font-size:10px;font-family:var(--mono);color:var(--t3);display:flex;align-items:center;gap:3px;white-space:nowrap}
.kanban-col-bar-stat b{color:var(--t1);font-weight:600}
.kanban-col.col-unassigned .kanban-col-header{background:rgba(251,191,36,.08);border-radius:var(--r2) var(--r2) 0 0}
.kanban-col.col-unassigned .kanban-col-title{color:var(--amber)}
.kanban-col.col-unassigned .kanban-col-avatar{background:var(--amber)!important}
.kanban-col.col-unassigned .kanban-col-count{background:var(--a-light);color:var(--amber)}
.kanban-col-body{padding:4px 8px 10px;display:flex;flex-direction:column;gap:4px}

/* Separador de sección */
.kanban-section-label{display:flex;align-items:center;gap:6px;font-size:10px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.8px;padding:12px 4px 4px;flex-shrink:0}
.kanban-section-label::after{content:'';flex:1;height:1px;background:var(--s4)}
.kanban-section-done{color:var(--green);opacity:.7}
.kanban-section-done::after{background:rgba(0,158,74,.2)}
.kanban-section-late{color:var(--red)}
.kanban-section-late::after{background:rgba(220,38,38,.2)}
.combo-wrap{position:relative;display:block}
.combo-inp{width:100%;box-sizing:border-box}
.combo-dd{position:absolute;top:calc(100% + 2px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);z-index:500;max-height:220px;overflow-y:auto;box-shadow:var(--shadow-lg);display:none}
.combo-dd.open{display:block}
.combo-item{padding:7px 12px;font-size:13px;cursor:pointer;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-item:hover,.combo-item.hi{background:var(--s2);color:var(--brand)}
.combo-item.sel-active{background:var(--s2);font-weight:600}
.combo-empty{padding:8px 12px;font-size:12px;color:var(--t3);font-style:italic}

/* Task card — Linear style */
.task-card{
  background:#fff;
  border:1px solid rgba(0,0,0,.07);
  border-left:3px solid transparent;
  border-radius:8px;
  padding:10px 11px;
  cursor:grab;
  transition:box-shadow .15s ease,transform .12s ease;
  display:flex;flex-direction:column;gap:7px;
  user-select:none;
  position:relative;
}
.task-card:hover{
  box-shadow:0 4px 12px rgba(0,0,0,.09);
  transform:translateY(-1px);
}
.task-card.dragging{opacity:.55;transform:rotate(.8deg) scale(1.03);box-shadow:0 10px 28px rgba(0,0,0,.16);cursor:grabbing}
/* borde izquierdo por prioridad */
.task-card.prio-alta{border-left-color:var(--red)}
.task-card.prio-media{border-left-color:var(--amber)}
.task-card.prio-baja{border-left-color:#CBD5E1}
/* En curso — resaltado (sin tocar el borde izquierdo de prioridad) */
.task-card.en-curso{background:#F0F6FF;border-top-color:rgba(37,99,235,.22);border-right-color:rgba(37,99,235,.22);border-bottom-color:rgba(37,99,235,.22)}
.task-card.en-curso:hover{box-shadow:0 4px 14px rgba(37,99,235,.13)}
.task-card.en-curso .task-titulo{color:#1E3A6E}
.task-card.estado-hecho{opacity:.45}

.task-top-row{display:flex;gap:7px;align-items:flex-start}
.task-prio-badge{font-size:10px;font-weight:700;letter-spacing:.3px;padding:1px 6px;border-radius:3px;white-space:nowrap;flex-shrink:0;margin-top:1px}
.task-prio-alta{background:#FEE2E2;color:#B91C1C}
.task-prio-media{background:#FEF3C7;color:#B45309}
.task-prio-baja{background:var(--s3);color:var(--t3)}
.task-desc{font-size:11.5px;color:var(--t2);line-height:1.4;margin-top:1px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.task-card.en-curso .task-desc{color:#4B6EA8}
.task-chip{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-family:var(--mono);font-weight:500;padding:2px 6px;border-radius:4px;white-space:nowrap}
.task-chip-hours{background:var(--b-light);color:var(--blue)}
.task-chip-rep{background:var(--p-light);color:var(--purple)}
.task-st-chip{display:inline-flex;align-items:center;font-size:10px;font-weight:700;font-family:var(--mono);padding:1px 6px;border-radius:3px;white-space:nowrap;background:#e0f2fe;color:#0369a1;letter-spacing:.2px;flex-shrink:0}
.task-chip-unassigned{background:var(--a-light);color:var(--amber);font-weight:600;border:1px dashed #FCD34D}
.task-card.sin-asignar{background:rgba(251,191,36,.04)}
.task-ayudante-badge{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:700;background:var(--s3);color:var(--t2);border-radius:var(--round);padding:1px 6px;letter-spacing:.3px;flex-shrink:0}
.task-resp-ref{font-size:11px;color:var(--t3);font-style:italic;margin-top:2px}
.task-mis-horas-btn{font-size:11px;font-weight:600;color:var(--blue);background:var(--b-light);border:none;border-radius:var(--round);padding:3px 9px;cursor:pointer;white-space:nowrap;transition:var(--tr)}
.task-mis-horas-btn:hover{background:#DBEAFE}
.task-mis-horas-btn.registrado{color:var(--green);background:var(--g-light)}
.task-card.rol-ayudante{border-style:dashed;border-width:1px;opacity:.92}
.task-bottom-row{display:flex;align-items:center;justify-content:space-between;margin-top:2px}
.task-estado-btn{background:none;border:none;cursor:default;padding:2px 7px;font-size:11px;font-weight:600;color:var(--t3);white-space:nowrap;transition:all .15s;border-radius:var(--round)}
.task-estado-btn.accionable{cursor:pointer}
.task-estado-btn .label-actual{display:inline}
.task-estado-btn .label-siguiente{display:none}
.task-estado-btn.accionable:hover .label-actual{display:none}
.task-estado-btn.accionable:hover .label-siguiente{display:inline}
/* estado por clase de la card */
.task-card.en-curso .task-estado-btn{background:var(--blue);color:#fff}
.task-card.en-curso .task-estado-btn:hover{background:#1D4ED8}
.task-card.estado-hecho .task-estado-btn{color:var(--t3)}
.task-titulo{font-size:13px;font-weight:500;line-height:1.45;color:var(--t1);flex:1;letter-spacing:-.1px}
.task-card.estado-hecho .task-titulo{text-decoration:line-through;color:var(--t3)}

.task-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.task-date{background:var(--s3);color:var(--t3)}
.task-date.vencida{background:var(--r-light);color:var(--red)}
.task-date.hoy{background:var(--a-light);color:var(--amber)}

.task-origen-chip{display:inline-flex;align-items:center;gap:3px;font-size:10px;padding:2px 6px;border-radius:4px;font-weight:500;letter-spacing:.1px}

.task-card-footer{display:flex;align-items:center;gap:6px;margin-top:2px}
.task-assignee-mini{width:18px;height:18px;border-radius:50%;font-size:7px;font-weight:700;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.task-actions{display:flex;gap:1px;margin-left:auto;opacity:0;transition:opacity .12s}
.task-card:hover .task-actions{opacity:1}
.task-actions .btn-icon{width:24px;height:24px;font-size:12px}

/* Lista de tareas */
.lista-wrap{flex:1;overflow-y:auto;padding:0 20px 20px}
.lista-table{width:100%;border-collapse:collapse}
.lista-table th{font-size:11px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.5px;padding:8px 12px;background:var(--s2);border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}
.lista-table td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle;font-size:13px}
.lista-table tr:hover td{background:var(--s2)}
.th-sort{cursor:pointer;user-select:none}
.th-sort:hover{background:var(--s3,#e2e8f0)!important}
.th-sort.asc::after{content:' ↑';opacity:.7}
.th-sort.desc::after{content:' ↓';opacity:.7}
.th-sort:not(.asc):not(.desc)::after{content:' ⇅';opacity:.3}
.lista-group-header td{background:var(--s3);font-size:11px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.5px;padding:4px 12px}

/* ═══════════════════════════════════════════════════════════════
   SERVICIOS
═══════════════════════════════════════════════════════════════ */
.sv-adjuntos-drop{border:2px dashed var(--border);border-radius:var(--r2);padding:16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;font-size:12px;color:var(--t3)}
.sv-adjuntos-drop:hover,.sv-adjuntos-drop.drag-over{border-color:var(--brand);background:var(--brand-l);color:var(--brand)}
.sv-archivo-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r2);background:var(--s2);border:1px solid var(--border)}
.sv-archivo-icono{font-size:18px;flex-shrink:0}
.sv-archivo-info{flex:1;min-width:0}
.sv-archivo-nombre{font-size:12px;font-weight:500;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sv-archivo-meta{font-size:10px;color:var(--t3);font-family:var(--mono)}
.servicios-table{width:100%;border-collapse:collapse}
.servicios-table th{font-size:11px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.4px;padding:8px 12px;background:var(--s2);border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;position:sticky;top:0;z-index:1}
.servicios-table td{padding:9px 12px;border-bottom:1px solid var(--border);vertical-align:middle;font-size:13px}
.servicios-table tr:hover td{background:var(--s2)}
.dias-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:var(--round);font-size:11px;font-weight:600;font-family:var(--mono)}
.dias-ok{background:var(--g-light);color:var(--green)}
.dias-warn{background:var(--a-light);color:var(--amber)}
.dias-venc{background:var(--r-light);color:var(--red)}

/* ═══════════════════════════════════════════════════════════════
   OBRAS
═══════════════════════════════════════════════════════════════ */
.obras-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.obra-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r3);padding:16px;display:flex;flex-direction:column;gap:10px}
.obra-card-header{display:flex;align-items:flex-start;gap:8px}
.obra-nombre{font-weight:600;font-size:14px;flex:1}
.obra-card-meta{display:flex;flex-direction:column;gap:4px}
.obra-meta-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--t2)}
.obra-card-footer{display:flex;align-items:center;gap:6px;margin-top:2px}
/* ── CHEQUEO WIZARD ── */
.chequeo-overlay{position:fixed;inset:0;background:var(--bg);z-index:800;display:flex;flex-direction:column;overflow:hidden}
.chequeo-overlay.hidden{display:none!important}
.chequeo-wiz-header{display:flex;align-items:center;gap:12px;padding:14px 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.chequeo-wiz-titles{flex:1}
.chequeo-wiz-title{font-weight:700;font-size:15px;color:var(--t1)}
.chequeo-wiz-step{font-size:11px;color:var(--t3);font-family:var(--mono);margin-top:1px}
.chequeo-wiz-progress{height:4px;background:var(--s3);flex-shrink:0}
.chequeo-wiz-progress-fill{height:100%;background:var(--brand);transition:width .35s ease;border-radius:0 2px 2px 0}
.chequeo-body{flex:1;overflow-y:auto;padding:20px}
.chequeo-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;background:var(--surface);border-top:1px solid var(--border);flex-shrink:0}
.chequeo-section{max-width:580px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.chequeo-section-title{font-size:20px;font-weight:700;color:var(--t1);margin:0 0 2px}
.chequeo-hint{font-size:13px;color:var(--t2);margin:0}
.chequeo-area-block{border-radius:var(--r3);overflow:hidden}
.chequeo-area-toggle{display:flex;align-items:center;gap:10px;padding:13px 16px;border:2px solid var(--border);border-radius:var(--r3);cursor:pointer;background:var(--surface);transition:all .15s;user-select:none}
.chequeo-area-toggle.on{border-color:var(--brand);background:var(--brand-l);border-radius:var(--r3) var(--r3) 0 0;border-bottom-color:transparent}
.chequeo-area-toggle:hover{border-color:var(--brand)}
.chequeo-area-icon{font-size:24px;flex-shrink:0;line-height:1}
.chequeo-area-label{font-size:14px;font-weight:600;flex:1}
.chequeo-area-check{font-size:12px;font-weight:600;flex-shrink:0;white-space:nowrap}
.chequeo-locs-wrap{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px 12px;background:var(--brand-l);border:2px solid var(--brand);border-top:none;border-radius:0 0 var(--r3) var(--r3)}
.chequeo-loc-chip{padding:5px 12px;border-radius:var(--round);font-size:12px;font-weight:500;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;transition:all .13s;user-select:none}
.chequeo-loc-chip:hover{border-color:var(--brand);color:var(--brand)}
.chequeo-loc-chip.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.chequeo-checklist-header{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--brand-l);border-radius:var(--r2);margin-bottom:14px;border:1px solid #BBF7D0}
.chequeo-area-icon-lg{font-size:30px;line-height:1;flex-shrink:0}
.chequeo-loc-title{font-size:16px;font-weight:700;color:var(--t1)}
.chequeo-loc-sub{font-size:11px;color:var(--t2);margin-top:2px}
.chequeo-items-list{display:flex;flex-direction:column;gap:4px;max-width:580px;margin:0 auto}
.chequeo-item{border-radius:var(--r2);padding:10px 12px;background:var(--surface);border:1px solid var(--border);transition:background .1s,border-color .1s}
.chequeo-item.estado-ok{background:var(--g-light);border-color:#86EFAC}
.chequeo-item.estado-obs{background:var(--a-light);border-color:#FCD34D}
.chequeo-item.estado-nok{background:var(--r-light);border-color:#FCA5A5}
.chequeo-item-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chequeo-item-name{font-size:13px;font-weight:500;flex:1;min-width:100px;line-height:1.3}
.chequeo-item-btns{display:flex;gap:4px;flex-shrink:0}
.chk-btn{padding:7px 10px;border-radius:var(--r2);font-size:11px;font-weight:700;border:1.5px solid var(--border);background:var(--surface);cursor:pointer;transition:all .13s;white-space:nowrap;line-height:1}
.chk-btn:hover{opacity:.85}
.chk-btn-ok.act{background:var(--green);color:#fff;border-color:var(--green)}
.chk-btn-obs.act{background:var(--amber);color:#fff;border-color:var(--amber)}
.chk-btn-nok.act{background:var(--red);color:#fff;border-color:var(--red)}
.chequeo-item-detail{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:6px}
.chequeo-resumen-bar{display:flex;border-radius:var(--r2);overflow:hidden;border:1px solid var(--border)}
.chequeo-resumen-stat{flex:1;display:flex;flex-direction:column;align-items:center;padding:14px 8px;gap:2px;background:var(--surface)}
.chequeo-resumen-stat:not(:last-child){border-right:1px solid var(--border)}
.chequeo-resumen-stat strong{font-size:30px;font-weight:700;font-family:var(--mono);line-height:1}
.chequeo-resumen-stat span{font-size:11px;color:var(--t3)}
.chequeo-hallazgo-card{border-left:4px solid var(--border);padding:12px;border-radius:0 var(--r2) var(--r2) 0;background:var(--surface);border:1px solid var(--border);border-left-width:4px;margin-bottom:8px}
/* ── INSPECCIONES ── */
.insp-grid{display:flex;flex-direction:column;gap:10px}
.insp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r3);overflow:hidden;transition:box-shadow .15s}
.insp-card:hover{box-shadow:var(--shadow-sm)}
.insp-card-head{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer}
.insp-card-fecha{font-size:22px;font-weight:700;font-family:var(--mono);color:var(--brand);min-width:36px;text-align:center;line-height:1}
.insp-card-fecha-mes{font-size:10px;font-weight:500;color:var(--t3);text-transform:uppercase;letter-spacing:.5px;text-align:center}
.insp-card-info{flex:1;min-width:0}
.insp-card-titulo{font-weight:600;font-size:14px;color:var(--t1)}
.insp-card-sub{font-size:12px;color:var(--t2);margin-top:2px}
.insp-card-stats{display:flex;gap:8px;align-items:center}
.insp-stat{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:600;font-family:var(--mono)}
.insp-card-body{border-top:1px solid var(--border);background:var(--s2)}
.insp-hallazgo{display:flex;align-items:flex-start;gap:10px;padding:0;border-bottom:1px solid var(--border)}
.insp-hallazgo:last-child{border-bottom:none}
.insp-hall-prioridad{width:4px;border-radius:2px;align-self:stretch;flex-shrink:0}
.insp-hall-body{flex:1;min-width:0}
.insp-hall-desc{font-size:13px;color:var(--t1);line-height:1.4}
.insp-hall-meta{font-size:11px;color:var(--t3);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap}
.insp-hall-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.hall-estado-btn{font-size:11px;font-weight:600;padding:3px 9px;border-radius:var(--round);cursor:pointer;border:1.5px solid transparent;transition:all .13s;white-space:nowrap}
.hall-estado-btn.pend{background:var(--a-light);color:var(--amber);border-color:var(--amber)}
.hall-estado-btn.proceso{background:var(--b-light);color:var(--blue);border-color:var(--blue)}
.hall-estado-btn.resuelto{background:var(--g-light);color:var(--green);border-color:var(--green)}
.insp-hall-add{padding:10px 16px;display:flex;gap:8px;align-items:center;background:var(--surface);border-top:1px dashed var(--border)}
.insp-detalle-wrap{padding:12px 16px 4px;border-bottom:1px solid var(--border)}
.insp-detalle-toggle{font-size:12px;font-weight:600;color:var(--brand);cursor:pointer;display:flex;align-items:center;gap:5px;user-select:none;margin-bottom:8px}
.insp-detalle-area{margin-bottom:10px}
.insp-detalle-area-title{font-size:11px;font-weight:700;color:var(--t2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.insp-detalle-loc{margin-bottom:6px;padding:6px 8px;background:var(--surface);border-radius:6px;border:1px solid var(--border)}
.insp-detalle-loc-title{font-size:11px;font-weight:600;color:var(--t2);margin-bottom:4px}
.insp-detalle-item{display:flex;align-items:center;gap:7px;padding:2px 0;font-size:12px;color:var(--t1)}
.insp-detalle-badge{font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0}
.insp-detalle-badge.ok{background:var(--g-light);color:var(--green)}
.insp-detalle-badge.obs{background:var(--a-light);color:var(--amber)}
.insp-detalle-badge.nok{background:#fee2e2;color:var(--red)}
.insp-detalle-badge.nd{background:var(--s2);color:var(--t3)}
.insp-detalle-coment{font-size:11px;color:var(--t3);font-style:italic;margin-left:auto}
.insp-empty{text-align:center;padding:40px 20px;color:var(--t3);font-size:13px}
.hall-fotos-wrap{padding:8px 16px 10px;border-top:1px solid var(--border);background:var(--s2)}
.hall-fotos-grid{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.hall-foto-thumb{width:64px;height:64px;object-fit:cover;border-radius:6px;border:1.5px solid var(--border);cursor:pointer;transition:transform .15s}
.hall-foto-thumb:hover{transform:scale(1.05)}
.hall-foto-del{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.55);color:#fff;border:none;border-radius:50%;width:18px;height:18px;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}
.hall-foto-item{position:relative;width:64px;height:64px;flex-shrink:0}
/* hallazgo inline row en modal */
.hall-row{display:flex;gap:6px;align-items:flex-start;padding:8px;background:var(--s2);border-radius:var(--r2);border:1px solid var(--border)}
.hall-row-num{width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}
.hall-row-fields{display:flex;gap:6px;flex-wrap:nowrap}
.tipo-obra-chips{display:flex;flex-wrap:wrap;gap:6px}
.tipo-obra-chip{padding:5px 11px;border-radius:var(--round);font-size:12px;font-weight:500;cursor:pointer;border:1.5px solid var(--border);background:var(--surface);color:var(--t2);transition:border-color .13s,background .13s,color .13s;white-space:nowrap;user-select:none;line-height:1.3}
.tipo-obra-chip:hover{border-color:var(--brand);color:var(--brand)}
.tipo-obra-chip.selected{border-color:var(--brand);background:var(--brand);color:#fff}
.obra-tipo-badge{display:inline-block;padding:2px 8px;border-radius:var(--round);font-size:11px;font-weight:600;background:var(--brand-l);color:var(--brand-d);letter-spacing:.2px}
.obra-nro-badge{display:inline-block;font-size:12px;font-weight:700;font-family:var(--mono);color:var(--blue);margin-right:6px;background:var(--b-light);padding:1px 6px;border-radius:4px}
.obra-unidad-badge{display:inline-block;padding:2px 8px;border-radius:var(--round);font-size:10px;font-weight:600;background:#f1f5f9;color:#475569;letter-spacing:.2px}
.obra-timeline{padding:2px 0 0}
.obra-timeline-bar-wrap{position:relative;height:8px;background:var(--s3);border-radius:var(--round);overflow:hidden;margin:6px 0 4px}
.obra-timeline-fill{height:100%;border-radius:var(--round);transition:width .4s ease}
.obra-timeline-marker{position:absolute;top:-2px;width:3px;height:12px;background:#fff;border-radius:1px;box-shadow:0 0 0 1.5px var(--t2);transform:translateX(-50%);pointer-events:none}
.obra-timeline-dates{display:flex;justify-content:space-between;font-size:10px;font-family:var(--mono);color:var(--t3)}
.obra-timeline-pct{font-size:11px;font-weight:700;font-family:var(--mono)}
.obra-timeline-label{font-size:10px;color:var(--t3);display:flex;align-items:center;gap:6px;margin-top:2px}

/* Contactos */
.contactos-list{display:flex;flex-direction:column;gap:8px}
.contacto-row{display:flex;align-items:center;gap:10px;padding:8px;background:var(--s2);border-radius:var(--r2)}
.contacto-info{flex:1;min-width:0}
.contacto-nombre{font-weight:500;font-size:13px}
.contacto-sub{font-size:11px;color:var(--t2)}
.contacto-actions{display:flex;gap:2px;flex-shrink:0}

/* ═══════════════════════════════════════════════════════════════
   EQUIPO
═══════════════════════════════════════════════════════════════ */
/* ─── EQUIPO ────────────────────────────────────────────────── */
.equipo-stats{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.equipo-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:12px 18px;display:flex;align-items:center;gap:10px;min-width:130px}
.equipo-stat-icon{font-size:20px;line-height:1}
.equipo-stat-val{font-size:22px;font-weight:700;color:var(--t1);line-height:1}
.equipo-stat-label{font-size:11px;color:var(--t3);margin-top:1px}
.equipo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.emp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r3);display:flex;flex-direction:column;overflow:hidden;transition:box-shadow var(--tr)}
.emp-card:hover{box-shadow:var(--shadow-md)}
.emp-card-top{display:flex;align-items:flex-start;gap:14px;padding:16px 16px 12px}
.emp-avatar{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;color:#fff;flex-shrink:0;overflow:hidden;background:var(--s4)}
.emp-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.emp-info{flex:1;min-width:0}
.emp-nombre{font-weight:700;font-size:15px;line-height:1.2}
.emp-cargo{font-size:12px;color:var(--t2);margin-top:2px}
.emp-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.emp-card-divider{height:1px;background:var(--border);margin:0 16px}
.emp-card-meta{padding:10px 16px;display:flex;flex-direction:column;gap:6px}
.emp-meta-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--t2)}
.emp-meta-icon{font-size:13px;width:16px;text-align:center;flex-shrink:0}
.emp-meta-val{color:var(--t1);font-weight:500}
.emp-card-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 12px 10px;background:var(--s2)}
.emp-card.ausente{border-top:3px solid var(--red)}
.emp-card.disponible{border-top:3px solid var(--green)}
/* foto upload en modal */
.emp-foto-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding:4px 0 8px}
.emp-foto-circle{width:72px;height:72px;border-radius:50%;background:var(--s3);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;color:var(--t2);overflow:hidden;position:relative;cursor:pointer;border:2px dashed var(--border);transition:var(--tr)}
.emp-foto-circle:hover{border-color:var(--brand)}
.emp-foto-circle img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.emp-foto-hint{font-size:11px;color:var(--t3);text-align:center}
/* ausencias */
.ausencias-table{width:100%;border-collapse:collapse}
.ausencias-table th,.ausencias-table td{padding:8px 12px;border-bottom:1px solid var(--border);font-size:13px;text-align:left}
.ausencias-table th{font-size:11px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.4px;background:var(--s2)}

/* ═══════════════════════════════════════════════════════════════
   VEHÍCULOS
═══════════════════════════════════════════════════════════════ */
.tab-bar{display:flex;gap:4px;padding:8px 20px 0;flex-shrink:0}
.tab-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--r2) var(--r2) 0 0;font-weight:500;font-size:12px;color:var(--t2);border:1px solid transparent;border-bottom:none;background:transparent;transition:var(--tr);cursor:pointer;position:relative}
.tab-btn::after{content:'';position:absolute;top:0;left:8px;right:8px;height:2px;border-radius:0 0 2px 2px;background:transparent;transition:background .15s}
.tab-btn:hover{background:var(--s2);color:var(--t1)}
.tab-btn.active{background:var(--surface);color:var(--t1);border-color:var(--border);box-shadow:var(--shadow-xs)}
.tab-btn.active::after{background:var(--brand)}
.tab-btn-icon{font-size:13px;line-height:1;flex-shrink:0}
.tab-btn-body{display:inline-flex;align-items:center}
.tab-btn-label{font-size:12px;font-weight:600;line-height:1;white-space:nowrap}
.tab-btn-sub{display:none}
.tab-btn-count{font-size:10px;font-weight:700;font-family:var(--mono);padding:1px 5px;border-radius:var(--round);background:var(--s3);color:var(--t2);flex-shrink:0;transition:var(--tr)}
.tab-btn.active .tab-btn-count{background:var(--brand-l);color:var(--brand-d)}
.tab-content{display:none;flex:1;overflow:hidden;flex-direction:column}
.tab-content.active{display:flex}

/* Mantenimientos list */
.mant-table{width:100%;border-collapse:collapse}
.mant-table th{font-size:11px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.4px;padding:8px 12px;background:var(--s2);border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;position:sticky;top:0;z-index:1}
.mant-table td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle;font-size:13px}
.mant-table tr:hover td{background:var(--s2)}
.mant-row-exp{background:var(--s2)!important}
.subtareas-inline{padding:8px 12px 12px 36px;border-bottom:1px solid var(--border)}
.subtarea-item{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;border-bottom:1px solid var(--border)}
.subtarea-item:last-child{border-bottom:none}
/* ── Subtareas de tarea ─────────────────────────────────────── */
#t-subs-wrap{border:1px solid var(--border);border-radius:var(--r2)}
.subs-header{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:var(--s2);border-bottom:1px solid var(--border)}
.subs-header-title{font-size:13px;font-weight:600;color:var(--t1)}
.subs-count{font-size:11px;color:var(--t3);background:var(--s3);border-radius:10px;padding:1px 8px}
#t-subs-list{padding:0 12px}
#t-subs-list .sub-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
#t-subs-list .sub-row:last-child{border-bottom:none}
#t-subs-list .sub-row-info{flex:1;min-width:0}
#t-subs-list .sub-row-tit{font-size:13px;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#t-subs-list .sub-row-tit.done{text-decoration:line-through;color:var(--t3)}
#t-subs-list .sub-row-meta{font-size:11px;color:var(--t3);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap}
#t-subs-list .sub-row-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap;flex-shrink:0}
#t-subs-list .sub-row-btns{display:flex;gap:2px;flex-shrink:0}
.subs-empty{padding:14px 12px;text-align:center;color:var(--t3);font-size:13px}
#t-subs-form{padding:12px;border-top:1px solid var(--border);background:var(--s2);border-radius:0 0 var(--r2) var(--r2)}
.subtarea-check{width:14px;height:14px;cursor:pointer;accent-color:var(--brand);flex-shrink:0}

/* Flota cards */
.flota-grid{display:flex;flex-direction:column;gap:0}
.veh-list-header{display:grid;grid-template-columns:32px 60px 1fr 1fr 100px 80px 60px 1fr 100px;gap:0;padding:6px 12px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--t3);border-bottom:2px solid var(--border);background:var(--s2);border-radius:var(--r2) var(--r2) 0 0;position:sticky;top:0;z-index:1}
.veh-list-header .veh-list-cell{cursor:pointer;user-select:none;display:flex;align-items:center;gap:3px}
.veh-list-header .veh-list-cell:hover{color:var(--t1)}
.veh-list-header .veh-list-cell.sort-asc::after{content:'↑';color:var(--brand)}
.veh-list-header .veh-list-cell.sort-desc::after{content:'↓';color:var(--brand)}
.veh-list-row{display:grid;grid-template-columns:32px 60px 1fr 1fr 100px 80px 60px 1fr 100px;gap:0;padding:9px 12px;font-size:13px;border-bottom:1px solid var(--border);align-items:center;background:var(--surface);transition:background .1s}
.veh-list-row:last-child{border-bottom:none;border-radius:0 0 var(--r2) var(--r2)}
.veh-list-row:hover{background:var(--s2)}
.veh-list-group{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--t3);padding:14px 12px 4px;background:transparent}
.veh-list-cell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px}
.veh-card-header{display:flex;align-items:center;gap:8px}
.veh-nro{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--brand)}
.veh-marca{font-weight:600;font-size:13px}
.veh-modelo{font-size:12px;color:var(--t2)}
.veh-meta{display:flex;flex-direction:column;gap:3px}
.veh-meta-row{display:flex;align-items:center;justify-content:space-between;font-size:11px;gap:4px;overflow:hidden}
.veh-meta-key{color:var(--t3);white-space:nowrap;flex-shrink:0}
.veh-meta-val{font-weight:500;color:var(--t2);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}

/* ═══════════════════════════════════════════════════════════════
   DASHBOARD SIDEBAR (panel ejecutivo)
═══════════════════════════════════════════════════════════════ */
.dash-sidebar{width:280px;flex-shrink:0;border-left:1px solid var(--border);background:var(--surface);overflow-y:auto;display:flex;flex-direction:column;gap:0}
.dash-widget{border-bottom:1px solid var(--border);padding:14px}
.dash-widget-title{font-size:11px;font-weight:600;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}
.dash-widget-list{display:flex;flex-direction:column;gap:6px}
.dash-item{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:var(--r1);cursor:pointer;transition:var(--tr)}
.dash-item:hover{background:var(--s2)}
.dash-item-title{font-size:12px;font-weight:500;flex:1;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.dash-item-sub{font-size:11px;color:var(--t3)}
.dash-emp-row{display:flex;align-items:center;gap:8px;padding:4px 0}
.dash-emp-name{font-size:12px;font-weight:500;flex:1}
.dash-emp-status{font-size:11px;color:var(--t2)}
.dash-empty{font-size:12px;color:var(--t3);text-align:center;padding:8px 0}

/* ─── RESPONSIVE ────────────────────────────────────────────── */
@media(max-width:900px){.dash-sidebar{display:none}}
@media(max-width:768px){
  .topbar-logo-text,.topbar-user-info{display:none}
  .topbar{padding:0 12px}
  .kanban-wrap{padding:12px 12px 12px}
  .view-header,.view-body,.lista-wrap{padding-left:14px;padding-right:14px}
  .view-header-filters{justify-content:flex-start}
  .form-row,.form-row-3{grid-template-columns:1fr}
}
@media(max-width:480px){
  .modal{border-radius:var(--r3) var(--r3) 0 0;margin-top:auto;max-height:95vh}
  .modal-overlay{align-items:flex-end;padding:0}
}

/* ─── INDICADORES ────────────────────────────────────────────── */
.ind-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:0}
.ind-tabs{display:flex;gap:2px;background:var(--s2);border-radius:var(--r2);padding:3px;margin:12px 20px 0}
.ind-tab{flex:1;padding:7px 12px;border:none;background:transparent;border-radius:8px;font-size:12px;font-weight:500;color:var(--t2);cursor:pointer;transition:var(--tr);white-space:nowrap;text-align:center}
.ind-tab.active{background:#fff;color:var(--t1);box-shadow:var(--shadow-xs)}
.ind-content{padding:16px 20px;overflow-y:auto;flex:1}

/* stat grid */
.ind-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:20px}
.ind-stat{background:#fff;border-radius:var(--r2);padding:14px 16px;border:1px solid var(--border);display:flex;flex-direction:column;gap:4px}
.ind-stat-val{font-size:28px;font-weight:700;line-height:1;color:var(--t1)}
.ind-stat-lbl{font-size:11px;color:var(--t3);font-weight:500;text-transform:uppercase;letter-spacing:.5px}
.ind-stat-sub{font-size:12px;color:var(--t2)}
.ind-stat.green  .ind-stat-val{color:var(--green)}
.ind-stat.amber  .ind-stat-val{color:var(--amber)}
.ind-stat.red    .ind-stat-val{color:var(--red)}
.ind-stat.blue   .ind-stat-val{color:var(--blue)}
.ind-stat.purple .ind-stat-val{color:var(--purple)}

/* section cards */
.ind-section{background:#fff;border-radius:var(--r2);border:1px solid var(--border);margin-bottom:16px;overflow:hidden}
.ind-section-hdr{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}
.ind-section-title{font-size:13px;font-weight:600;color:var(--t1)}
.ind-section-body{padding:14px 16px}

/* bar chart */
.ind-bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:12px}
.ind-bar-label{width:120px;flex-shrink:0;color:var(--t2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ind-bar-track{flex:1;height:8px;background:var(--s3);border-radius:999px;overflow:hidden}
.ind-bar-fill{height:100%;border-radius:999px;transition:width .4s ease}
.ind-bar-val{width:36px;text-align:right;color:var(--t1);font-weight:500;flex-shrink:0}

/* progress ring / pill */
.ind-pill-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.ind-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500}
.ind-pill-green{background:var(--g-light);color:var(--green)}
.ind-pill-amber{background:var(--a-light);color:var(--amber)}
.ind-pill-red  {background:var(--r-light);color:var(--red)}
.ind-pill-blue {background:var(--b-light);color:var(--blue)}
.ind-pill-gray {background:var(--s2);color:var(--t2)}

/* stacked bar */
.ind-stack{height:10px;border-radius:999px;overflow:hidden;display:flex;margin-bottom:6px}
.ind-stack-seg{height:100%;transition:width .4s ease}

/* table */
.ind-table{width:100%;border-collapse:collapse;font-size:12px}
.ind-table th{text-align:left;color:var(--t3);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;padding:0 8px 8px 0;border-bottom:1px solid var(--border)}
.ind-table td{padding:7px 8px 7px 0;border-bottom:1px solid var(--s3);color:var(--t1)}
.ind-table tr:last-child td{border-bottom:none}

/* trend sparkline (simple CSS bars) */
.ind-spark{display:flex;align-items:flex-end;gap:3px;height:36px}
.ind-spark-bar{flex:1;border-radius:3px 3px 0 0;min-height:3px;opacity:.85}

/* two col */
.ind-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:640px){.ind-two-col{grid-template-columns:1fr}.ind-bar-label{width:80px}}

/* ═══════════════════════════════════════════════════════════
   TODO MOBILE VIEW
════════════════════════════════════════════════════════════ */
#todo-wrap{display:flex;flex-direction:column;padding-bottom:80px;background:var(--bg)}
.todo-section{margin-bottom:4px}
.todo-section-hdr{display:flex;align-items:center;gap:8px;padding:14px 16px 6px;position:sticky;top:0;background:var(--bg);z-index:5}
.todo-section-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.todo-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--t2)}
.todo-section-count{font-size:11px;font-weight:600;color:var(--t3);font-family:var(--mono);margin-left:auto}
.todo-list{background:var(--surface);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.todo-item{display:flex;align-items:center;gap:12px;padding:13px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s;-webkit-tap-highlight-color:transparent;user-select:none}
.todo-item:last-child{border-bottom:none}
.todo-item:active{background:var(--s2)}
.todo-check-btn{width:26px;height:26px;border-radius:50%;border:2px solid var(--border);flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--surface);transition:border-color .15s,background .15s;cursor:pointer;-webkit-tap-highlight-color:transparent}
.todo-check-btn.pendiente{border-color:#CBD5E1}
.todo-check-btn.en-curso{border-color:var(--blue);background:rgba(37,99,235,.08)}
.todo-check-btn.en-curso::after{content:'';width:10px;height:10px;border-radius:50%;background:var(--blue)}
.todo-check-btn.hecho{border-color:var(--green);background:var(--green)}
.todo-check-btn.hecho::after{content:'✓';font-size:13px;font-weight:700;color:#fff;line-height:1}
.todo-item-body{flex:1;min-width:0}
.todo-title{font-size:15px;font-weight:500;color:var(--t1);line-height:1.35;word-break:break-word}
.todo-item.estado-hecho .todo-title{text-decoration:line-through;color:var(--t3)}
.todo-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}
.todo-meta-chip{font-size:11px;color:var(--t3);display:flex;align-items:center;gap:3px}
.todo-meta-chip.vencida{color:var(--red)}
.todo-meta-chip.hoy-date{color:var(--amber)}
.todo-prio-strip{width:3px;height:34px;border-radius:3px;flex-shrink:0;align-self:center}
.todo-prio-alta{background:var(--red)}
.todo-prio-media{background:var(--amber)}
.todo-prio-baja{background:var(--green)}
.todo-chevron{font-size:12px;color:var(--t3);flex-shrink:0}

/* ═══════════════════════════════════════════════════════════
   MOBILE — ≤640px
════════════════════════════════════════════════════════════ */
/* Bottom navigation bar */
.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;height:46px;background:#fff;border-top:1px solid var(--border);z-index:300;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.bottom-nav::-webkit-scrollbar{display:none}
.bottom-nav-inner{display:flex;align-items:stretch;min-width:100%;width:max-content}
.bottom-nav-item{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:5px;padding:0 12px;cursor:pointer;color:var(--t3);font-size:11px;font-weight:500;white-space:nowrap;user-select:none;border-top:2px solid transparent;transition:color .12s;flex:1;min-width:52px}
.bottom-nav-item.active{color:var(--brand);border-top-color:var(--brand)}
.bottom-nav-item:active{background:var(--s2)}
.bottom-nav-icon{font-size:16px;line-height:1;flex-shrink:0}

@media(max-width:640px){
  /* show bottom nav */
  .bottom-nav{display:flex}
  /* main content: pad bottom for nav bar — 46px = altura del bottom-nav */
  .main-wrap{overflow-x:hidden;max-width:100vw}
  .main-content{padding-bottom:72px}
  .view-body{padding-bottom:72px}
  .lista-wrap{padding-bottom:72px}
  .kanban-wrap{padding-bottom:72px}
  /* evitar desborde horizontal global */
  .main-content{overflow-x:hidden;max-width:100%}
  .view-title{white-space:normal;word-break:break-word}
  .lista-wrap{overflow-x:hidden}
  .view-body{overflow-x:hidden}
  /* todos los modales de lista: scroll horizontal interno */
  .lista-table,.servicios-table,.mant-table,.ausencias-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* topbar: collapse nav, shrink */
  .topbar-nav{display:none}
  .topbar{padding:0 10px;height:48px}
  .topbar-logo-text{display:none}
  .topbar-user-info{display:none}
  /* view header: stack */
  .view-header{flex-wrap:wrap;gap:6px;padding:8px 12px}
  .view-header-filters{flex-wrap:wrap;gap:4px;justify-content:flex-start}
  .view-title{font-size:16px}
  /* view body padding */
  .view-body{padding:0 10px 16px}
  .lista-wrap{padding:0 10px 16px}
  /* forms single column */
  .form-row,.form-row-3{grid-template-columns:1fr}
  /* kanban: horizontal scroll, each col fixed width */
  .kanban-wrap{padding:8px 10px;overflow-x:auto;-webkit-overflow-scrolling:touch;display:block}
  .kanban-board{display:flex;flex-direction:row;gap:10px;padding-bottom:8px;width:max-content;min-width:100%}
  .kanban-col{width:272px;flex-shrink:0}
  /* tables: scroll container */
  .view-body > table, .servicios-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  /* veh table */
  .veh-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* obras grid: 1 col */
  .obras-grid{grid-template-columns:1fr !important}
  /* equipo grid: 1 col */
  .emp-grid{grid-template-columns:1fr !important}
  /* modales: slide desde abajo */
  .modal{border-radius:var(--r3) var(--r3) 0 0;margin-top:auto;max-height:92vh}
  .modal-overlay{align-items:flex-end;padding:0}
  /* status bar: ocultar en móvil (ocupa espacio) */
  #status-bar{display:none}
  /* search: full width */
  .search-wrap{max-width:100%;flex:1}
  /* ocultar toggle kanban/lista en mobile (se usa vista TODO) */
  #btn-toggle-vista{display:none}
  /* topbar chevron visible */
  .topbar-chevron{display:inline}
  /* kanban section label */
  .kanban-section-label{padding:10px 4px 2px}
  /* tabs de vehículos: scroll */
  .tab-bar{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;scrollbar-width:none}
  .tab-bar::-webkit-scrollbar{display:none}
  /* padding inferior en todos los contenedores scrollables para no quedar tapados por el bottom-nav */
  /* padding inferior universal para todos los contenedores scrollables */
  #tab-inspecciones,#tab-incidencias,
  #tab-mant,#tab-flota,#tab-logistica,#tab-taller,
  .ind-content,
  .chequeo-body { padding-bottom:72px !important }
  .tab-content[style*="overflow-y"] { padding-bottom:72px !important }
  /* modal body: más espacio */
  .modal-body{padding:14px 14px}
  /* combo dropdown: mayor en móvil */
  .combo-dd{max-height:180px}

  /* date/time inputs: no desborden en móvil */
  input[type="date"],
  input[type="time"] { min-width:0; width:100%; box-sizing:border-box }

  /* ── Inspecciones ── */
  /* modal inspección: full width, sin desborde */
  #modal-inspeccion .modal,
  #modal-incidencia .modal { max-width:100% !important; width:100% }
  #modal-inspeccion .modal-body,
  #modal-incidencia .modal-body { overflow-x:hidden }
  /* todos los modales: no desbordan horizontalmente */
  .modal { overflow-x:hidden }
  .modal-body { overflow-x:hidden }
  /* hallazgo row: más compacto */
  .hall-row { padding:8px 6px; gap:4px }
  .hall-row-num { display:none }
  /* campos del hallazgo: apilar en móvil */
  .hall-row-fields { flex-wrap:wrap }
  .hall-row-fields input { min-width:0; flex:1 1 100% }
  .hall-row-fields select { flex:1 1 calc(50% - 3px); min-width:0 }
  /* lista hallazgos: scroll si hay muchos */
  #insp-hallazgos-lista { max-height:220px; overflow-y:auto }
  /* inspección card en lista */
  .insp-card { padding:12px }
  .insp-card-fecha { font-size:18px; min-width:28px }
  /* hallazgo en card expandida: acciones en fila */
  .insp-hall-actions { flex-wrap:wrap; gap:4px }

  /* ── Chequeo wizard ── */
  .chequeo-wiz-header { padding:10px 14px }
  .chequeo-wiz-title { font-size:14px }
  .chequeo-body { padding:12px 10px }
  .chequeo-footer { padding:10px 12px; gap:8px }
  .chequeo-footer .btn { flex:1; justify-content:center }
  .chequeo-section { gap:10px }
  .chequeo-section-title { font-size:17px }
  /* áreas: toggle más grande para touch */
  .chequeo-area-toggle { padding:14px 12px; gap:8px }
  .chequeo-area-icon { font-size:20px }
  /* ubicaciones: chips más fáciles de tocar */
  .chequeo-loc-chip { padding:7px 14px; font-size:13px }
  /* items de chequeo: botones OK/Obs/NOK más grandes */
  .chequeo-item { padding:12px 10px }
  .chequeo-item-btns .btn { padding:5px 10px; font-size:12px }
  .chequeo-item-name { font-size:13px }
  /* resumen */
  .chequeo-resumen-bar { border-radius:var(--r1) }
}

/* flota cards mini */
.ind-veh-list{display:flex;flex-direction:column;gap:6px}
.ind-veh-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r1);background:var(--s2);font-size:12px}
.ind-veh-badge{font-size:10px;padding:2px 7px;border-radius:999px;font-weight:600;flex-shrink:0}
.ind-veh-name{flex:1;font-weight:500;color:var(--t1)}
.ind-veh-sub{color:var(--t2);font-size:11px}
.badge-veh-pend{background:var(--a-light);color:var(--amber)}
.badge-veh-ok  {background:var(--g-light);color:var(--green)}
.badge-veh-mal {background:var(--r-light);color:var(--red)}
.badge-veh-resp{background:var(--b-light);color:var(--blue)}

/* ═══════════════════════════════════════════════════════════
   NOTAS
════════════════════════════════════════════════════════════ */

/* view llena el flex-column padre */
#view-notas{flex:1;min-height:0;overflow:hidden}

/* layout ROW — flex hijos se estiran a la altura completa automáticamente */
.notas-layout{display:flex;flex-direction:row;flex:1;min-height:0;overflow:hidden;position:relative;background:var(--surface)}

/* ── Sidebar izquierdo ── */
.notas-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border);background:var(--surface)}
.notas-sidebar-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border);flex-shrink:0}
.notas-tags-cloud{display:flex;flex-wrap:wrap;gap:4px;padding:8px 14px 6px;border-bottom:1px solid var(--border);flex-shrink:0}
.notas-tags-cloud:empty{display:none}
.nota-tag-filter{font-size:11px;padding:2px 8px;border-radius:var(--round);background:var(--s2);color:var(--t2);cursor:pointer;border:1px solid transparent;transition:var(--tr);font-weight:500}
.nota-tag-filter:hover{background:var(--b-light);color:var(--blue)}
.nota-tag-filter.active{background:var(--b-light);color:var(--blue);border-color:var(--blue)}
.notas-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}
.notas-tab{flex:1;padding:8px 10px;font-size:12px;font-weight:500;color:var(--t2);border-bottom:2px solid transparent;transition:var(--tr);display:flex;align-items:center;justify-content:center;gap:4px}
.notas-tab:hover{color:var(--t1)}
.notas-tab.active{color:var(--brand);border-bottom-color:var(--brand)}
.notas-tab-count{font-size:10px;background:var(--s3);color:var(--t2);border-radius:var(--round);padding:1px 5px;font-weight:600}
.notas-tab.active .notas-tab-count{background:var(--brand-l);color:var(--brand)}
.notas-list{flex:1;overflow-y:auto;min-height:0}
.notas-list-empty{padding:32px 16px;text-align:center;font-size:13px;color:var(--t3)}

/* ── Cards ── */
.nota-card{padding:12px 14px;cursor:pointer;border-bottom:1px solid var(--border);border-left:3px solid transparent;transition:background .12s,border-color .12s}
.nota-card:hover{background:var(--s2)}
.nota-card.active{background:var(--brand-l);border-left-color:var(--brand)}
.nota-card-titulo{font-size:13px;font-weight:600;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:3px}
.nota-card.active .nota-card-titulo{color:var(--brand)}
.nota-card-preview{font-size:12px;color:var(--t2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:5px}
.nota-card-foot{display:flex;align-items:center;justify-content:space-between;gap:6px}
.nota-card-tags{display:flex;gap:3px;flex-wrap:wrap;flex:1;min-width:0}
.nota-tag-mini{font-size:10px;padding:1px 6px;border-radius:var(--round);background:var(--b-light);color:var(--blue);font-weight:500;white-space:nowrap}
.nota-card-fecha{font-size:11px;color:var(--t3);flex-shrink:0}
.nota-card-badge-comp{font-size:10px;padding:1px 6px;border-radius:var(--round);background:var(--p-light);color:var(--purple);font-weight:500;margin-bottom:3px;display:inline-block}

/* ── Panel derecho (editor) ── */
.notas-editor-panel{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}
.notas-empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--t3);font-size:14px}
.notas-empty-icon{font-size:48px;opacity:.35}
.notas-editor-wrap{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}

/* Encabezado del editor */
.notas-editor-head{display:flex;align-items:center;gap:8px;padding:10px 20px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--surface)}
.notas-titulo-input{flex:1;min-width:0;border:none;outline:none;font-size:18px;font-weight:700;color:var(--t1);background:transparent;padding:2px 0;line-height:1.3}
.notas-titulo-input::placeholder{color:var(--t3);font-weight:400}
.notas-head-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.nota-save-status{font-size:11px;color:var(--t3);white-space:nowrap;min-width:64px;text-align:right}
.notas-back-btn{display:none}

/* Metadata */
.notas-meta{padding:4px 20px 5px;font-size:11px;color:var(--t3);flex-shrink:0;background:var(--s2);border-bottom:1px solid var(--border);line-height:1.5}
.notas-meta:empty{display:none}

/* ── Toolbar de formato ── */
.notas-toolbar{display:flex;align-items:center;gap:1px;padding:4px 8px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;background:var(--s2)}
.ntb-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:3px 7px;border-radius:var(--r1);font-size:12px;color:var(--t2);min-width:26px;height:26px;transition:background .1s,color .1s;font-family:inherit;flex-shrink:0}
.ntb-btn:hover{background:var(--surface);color:var(--t1);box-shadow:0 1px 2px rgba(0,0,0,.06)}
.ntb-btn b{font-weight:800;font-size:13px}
.ntb-btn i{font-style:italic;font-size:13px}
.ntb-btn u{text-decoration:underline}
.ntb-btn s{text-decoration:line-through}
.ntb-mono{font-family:var(--mono);font-size:11px;letter-spacing:-.5px}
.ntb-sep{width:1px;height:16px;background:var(--border);margin:0 4px;flex-shrink:0;align-self:center}
.ntb-sep-right{margin-left:auto}

/* ── Editor contenteditable ── */
.nota-editor{flex:1;min-height:0;overflow-y:auto;padding:22px 32px;outline:none;font-size:14px;line-height:1.8;color:var(--t1)}
.nota-editor:empty::before{content:attr(data-placeholder);color:var(--t3);pointer-events:none;display:block;font-style:italic}
.nota-editor h1{font-size:1.6em;font-weight:700;margin:.7em 0 .2em;line-height:1.2;color:var(--t1);border-bottom:2px solid var(--border);padding-bottom:.2em}
.nota-editor h2{font-size:1.25em;font-weight:600;margin:.6em 0 .2em;line-height:1.3}
.nota-editor h3{font-size:1.05em;font-weight:600;margin:.5em 0 .15em;color:var(--t2)}
.nota-editor ul,.nota-editor ol{padding-left:1.6em;margin:.3em 0}
.nota-editor ul{list-style:disc}
.nota-editor ol{list-style:decimal}
.nota-editor li{margin:.15em 0}
.nota-editor p{margin:.2em 0}
.nota-editor blockquote{border-left:3px solid var(--brand);padding-left:14px;color:var(--t2);margin:.5em 0;font-style:italic}
.nota-editor pre{background:var(--s2);border:1px solid var(--border);border-radius:var(--r2);padding:12px 16px;font-family:var(--mono);font-size:12.5px;line-height:1.6;margin:.5em 0;overflow-x:auto;white-space:pre-wrap}
.nota-editor code:not(pre code){font-family:var(--mono);font-size:12px;background:var(--s2);padding:1px 5px;border-radius:4px;border:1px solid var(--border)}
.nota-editor hr{border:none;border-top:2px solid var(--border);margin:1em 0}
.nota-editor mark{background:#FEF08A;border-radius:2px;padding:0 2px}
.nota-editor .nota-check-line{display:flex;align-items:flex-start;gap:7px;margin:.15em 0}
.nota-editor .nota-check-line input[type=checkbox]{width:15px;height:15px;margin-top:4px;flex-shrink:0;accent-color:var(--brand);cursor:pointer}

/* ── Barra de etiquetas ── */
.nota-tags-bar{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:7px 20px;border-top:1px solid var(--border);min-height:42px;flex-shrink:0;background:var(--surface)}
.nota-tags-list{display:contents}
.nota-tag-chip{display:inline-flex;align-items:center;gap:3px;background:var(--b-light);color:var(--blue);padding:3px 10px;border-radius:var(--round);font-size:12px;font-weight:500}
.nota-tag-chip .rm{cursor:pointer;opacity:.5;font-size:10px;line-height:1;margin-left:2px}
.nota-tag-chip .rm:hover{opacity:1;color:var(--red)}
.nota-tag-input{border:none;outline:none;background:transparent;font-size:12px;color:var(--t2);width:90px;padding:2px 4px;font-family:inherit}
.nota-tag-input::placeholder{color:var(--t3)}

/* ── Barra "Compartida con" ── */
.nota-comp-bar{padding:5px 20px;background:var(--p-light);border-top:1px solid #e9d5ff;font-size:12px;color:var(--purple);display:flex;align-items:center;gap:6px;flex-shrink:0;flex-wrap:wrap}
.nota-comp-chip{background:#fff;border:1px solid #ddd8fe;border-radius:var(--round);padding:1px 8px;font-size:11px;color:var(--purple)}

/* ── Modal compartir ── */
.nota-acceso-row{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--s2);border-radius:var(--r1);font-size:13px}
.nota-acceso-nombre{flex:1;font-weight:500}
.nota-acceso-perm{font-size:11px;color:var(--t2)}

/* ── Responsive (mobile) ── */
@media(max-width:768px){
  .notas-sidebar{width:100%}
  .notas-editor-panel{position:absolute;inset:0;z-index:10;display:none}
  .notas-layout.nota-abierta .notas-editor-panel{display:flex}
  .notas-layout.nota-abierta .notas-sidebar{display:none}
  .notas-back-btn{display:inline-flex!important}
  .nota-editor{padding:14px 16px}
  .notas-titulo-input{font-size:16px}
  .notas-editor-head{padding:8px 14px}
}
@media(max-width:480px){
  .notas-toolbar{padding:3px 4px}
  .ntb-btn{padding:3px 5px;min-width:22px;font-size:11px}
  .ntb-sep{margin:0 2px}
}

/* ── OBRAS MAP ─────────────────────────────────────────────── */
#view-obras{flex:1;min-height:0;overflow:hidden}
.obras-view-body{flex:1;min-height:0;overflow:hidden;padding:0}
.obras-view-body .obras-grid{overflow-y:auto;padding:0 24px 24px;height:100%}
.obras-map-wrap{width:100%}
#obras-map{width:100%;height:calc(100vh - 170px);min-height:350px}
.obras-map-info{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.55);color:#fff;font-size:11px;padding:4px 12px;border-radius:20px;pointer-events:none;white-space:nowrap}
.obras-view-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden;margin-right:4px}
.obras-toggle-btn{background:var(--surface);color:var(--t2);border:none;padding:5px 12px;font-size:12px;cursor:pointer;transition:background .15s,color .15s}
.obras-toggle-btn:hover{background:var(--hover)}
.obras-toggle-btn.active{background:var(--blue);color:#fff}
.obra-map-popup{min-width:200px;max-width:260px}
.obra-map-popup-nombre{font-size:13px;font-weight:600;color:var(--t1,#1e293b);margin-bottom:4px;line-height:1.3}
.badge-sm{font-size:10px;padding:1px 7px}
@media(max-width:600px){
  .obras-view-toggle{display:none}
}

/* ── REPARACIONES ────────────────────────────────────────── */
#view-reparaciones{flex:1;min-height:0;overflow:hidden}
.rep-list-wrap{overflow-y:auto;padding:0 20px 20px;height:calc(100vh - 240px)}
.rep-stats{
  display:flex;gap:0;
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.rep-stat{
  flex:1;padding:14px 24px;text-align:center;border-right:1px solid var(--border);
}
.rep-stat:last-child{border-right:none}
.rep-stat-val{font-size:28px;font-weight:800;line-height:1;letter-spacing:-1px}
.rep-stat-lbl{font-size:11px;color:var(--t3);margin-top:3px;font-weight:500}

.rep-list{display:flex;flex-direction:column;gap:10px;padding-top:16px}

.rep-card{
  background:var(--surface);border:1px solid var(--border);border-radius:10px;
  border-left:4px solid var(--restcl,var(--border));
  padding:14px 16px;display:flex;flex-direction:column;gap:8px;
  transition:box-shadow .15s;
}
.rep-card:hover{box-shadow:var(--shadow-sm)}
.rep-card-late{border-left-color:#DC2626 !important;background:#fff8f8}

.rep-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rep-codigo{
  font-size:11px;font-weight:800;font-family:monospace;
  background:#f1f5f9;color:#475569;padding:2px 7px;border-radius:4px;
  letter-spacing:.3px;flex-shrink:0;
}
.rep-nombre{font-size:15px;font-weight:700;color:var(--t1);flex:1}
.rep-dias-badge{
  font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;
  background:#fef3c7;color:#d97706;flex-shrink:0;
}
.rep-dias-badge.rep-dias-late{background:#fee2e2;color:#dc2626;animation:repPulse 2s ease-in-out infinite}
.rep-dias-badge.rep-dias-done{background:#dcfce7;color:#16a34a}
@keyframes repPulse{0%,100%{opacity:1}50%{opacity:.65}}

.rep-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rep-est-pill{
  font-size:10px;font-weight:700;padding:2px 9px;border-radius:20px;letter-spacing:.3px;flex-shrink:0;
}
.rep-meta-item{font-size:12px;color:var(--t2);display:flex;align-items:center;gap:3px}
.rep-costo-txt{font-weight:700;color:var(--t1)}

.rep-falla{
  font-size:12px;color:var(--t2);line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  padding:4px 0 0;
}

.rep-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-top:2px}
.rep-fecha-txt{font-size:11px;color:var(--t3)}
.rep-actions{display:flex;align-items:center;gap:6px}

.rep-estado-menu{position:relative}
.rep-state-btn{background:var(--s2);color:var(--t2);border:1px solid var(--border);font-size:11px;font-weight:600;padding:4px 10px;border-radius:6px;cursor:pointer;font-family:inherit}
.rep-state-btn:hover{background:var(--s3)}
.rep-estado-opts{
  position:absolute;bottom:calc(100% + 4px);right:0;
  background:var(--surface);border:1px solid var(--border);border-radius:8px;
  box-shadow:var(--shadow-md);display:flex;flex-direction:column;
  min-width:140px;z-index:100;overflow:hidden;
}
.rep-estado-opt{
  background:none;border:none;padding:8px 14px;text-align:left;
  font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;
  transition:background .1s;
}
.rep-estado-opt:hover{background:var(--s2)}

.rep-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:60px;color:var(--t3)}
.rep-empty-icon{font-size:36px;opacity:.3}
.rep-empty-text{font-size:14px}

@media(max-width:600px){
  .rep-stats{flex-direction:row}
  .rep-stat{padding:10px 12px}
  .rep-stat-val{font-size:22px}
  .rep-list-wrap{padding:0 12px 16px}
}

/* ── MAPA MARCADORES (omap) ──────────────────────────────── */
.leaflet-div-icon.omap-icon{background:none;border:none;overflow:visible}
.omap-marker{
  position:relative;display:inline-flex;flex-direction:column;align-items:center;
  transform:translate(-50%,-100%);cursor:pointer;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.28));
}
.omap-badge{
  background:var(--mc,#6366f1);color:#fff;
  font-size:11px;font-weight:800;font-family:monospace;
  padding:3px 10px;border-radius:20px;white-space:nowrap;
  border:2px solid rgba(255,255,255,.35);letter-spacing:.3px;line-height:1.45;
}
.omap-tail{
  width:0;height:0;
  border-left:5px solid transparent;border-right:5px solid transparent;
  border-top:7px solid var(--mc,#6366f1);flex-shrink:0;
}

/* ── MAPA TOOLTIP ────────────────────────────────────────── */
.leaflet-tooltip.omap-tip{
  background:rgba(17,24,39,.92);border:none;border-radius:9px;
  color:#fff;padding:8px 11px;
  box-shadow:0 4px 14px rgba(0,0,0,.28);
  font-family:'DM Sans',system-ui,sans-serif;
}
.leaflet-tooltip.omap-tip::before{display:none}
.omap-tip-inner{display:flex;flex-direction:column;gap:2px}
.omap-tip-nro{font-size:10px;font-weight:800;font-family:monospace;letter-spacing:.5px}
.omap-tip-nombre{font-size:12px;font-weight:600;max-width:180px;line-height:1.35}
.omap-tip-meta{font-size:11px;color:rgba(255,255,255,.6);margin-top:1px}

/* ── MAPA POPUP ──────────────────────────────────────────── */
.omap-popup-wrap .leaflet-popup-content-wrapper{
  padding:0;border-radius:12px;overflow:hidden;
  box-shadow:0 8px 24px rgba(0,0,0,.16),0 2px 8px rgba(0,0,0,.09);border:none;
}
.omap-popup-wrap .leaflet-popup-content{margin:0;width:264px !important}
.omap-popup{font-family:'DM Sans',system-ui,sans-serif;overflow:hidden}
.omap-popup-head{
  padding:12px 14px 10px;
  border-left:4px solid var(--pc,#6366f1);
  background:#f8fafc;border-bottom:1px solid #e5e7eb;
}
.omap-popup-nro{
  font-size:10px;font-weight:800;font-family:monospace;
  color:var(--pc,#6366f1);letter-spacing:.6px;margin-bottom:3px;
}
.omap-popup-nombre{font-size:13px;font-weight:700;color:#111827;line-height:1.35;word-break:break-word}
.omap-popup-body{padding:10px 14px;display:flex;flex-direction:column;gap:5px}
.omap-popup-estado{
  display:inline-flex;align-items:center;
  font-size:10px;font-weight:700;padding:2px 9px;border-radius:20px;
  letter-spacing:.3px;margin-bottom:4px;width:fit-content;
}
.omap-popup-row{display:flex;align-items:flex-start;gap:8px;font-size:12px;color:#374151;line-height:1.4}
.omap-popup-lbl{
  font-size:10px;font-weight:600;color:#9ca3af;
  white-space:nowrap;min-width:44px;margin-top:1px;
  text-transform:uppercase;letter-spacing:.3px;
}
.omap-popup-footer{border-top:1px solid #f1f5f9;padding:7px 14px}
.omap-edit-btn{
  background:none;border:none;cursor:pointer;
  font-size:12px;font-weight:600;color:#0369a1;
  padding:3px 0;font-family:inherit;transition:color .15s;
}
.omap-edit-btn:hover{color:#0284c7}

/* ── Captura rápida de tareas ────────────────────────────────── */
.quickadd-bar{display:flex;align-items:center;gap:8px;padding:8px 24px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;flex-wrap:wrap}
.quickadd-icon{font-size:14px;flex-shrink:0;cursor:help}
.quickadd-input-wrap{position:relative;flex:1;min-width:200px;max-width:600px}
.quickadd-input-wrap .input{height:34px;font-size:13px;width:100%;background:var(--s2);border-color:transparent;border-radius:var(--round);padding-left:14px}
.quickadd-input-wrap .input:focus{background:var(--surface);border-color:var(--brand)}
.quickadd-chips{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.qa-chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;color:var(--t2);background:var(--s2);border:1px solid var(--border);border-radius:var(--round);padding:3px 9px;white-space:nowrap}
.quickadd-dd{position:absolute;top:calc(100% + 4px);left:0;min-width:230px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:60;max-height:250px;overflow-y:auto;padding:4px}
.quickadd-dd-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--t1)}
.quickadd-dd-item:hover,.quickadd-dd-item.sel{background:var(--s2)}
@media (max-width:640px){
  .quickadd-bar{padding:8px 12px;gap:6px}
  .quickadd-bar .quickadd-chips{order:3;width:100%}
}

/* ── Overlay de bienvenida: "¿Qué hay que hacer?" ────────────── */
.qa-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:300;display:flex;align-items:center;justify-content:center;padding:24px}
.qa-overlay.hidden{display:none}
.qa-ov-x{position:absolute;top:18px;right:22px;background:rgba(255,255,255,.12);border:none;color:#fff;width:36px;height:36px;border-radius:50%;font-size:15px;cursor:pointer;transition:background .15s}
.qa-ov-x:hover{background:rgba(255,255,255,.25)}
.qa-ov-box{width:100%;max-width:640px;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:-8vh}
.qa-ov-greet{color:rgba(255,255,255,.8);font-size:15px;font-weight:500}
.qa-ov-title{color:#fff;font-size:30px;font-weight:800;letter-spacing:-.5px;margin-bottom:6px}
.qa-ov-inputwrap{position:relative;width:100%}
.qa-ov-input{width:100%;height:56px;font-size:16px;padding:0 20px;border-radius:16px;border:2px solid transparent;background:var(--surface);box-shadow:0 16px 48px rgba(0,0,0,.3);outline:none;font-family:inherit;color:var(--t1)}
.qa-ov-input:focus{border-color:var(--brand)}
.qa-ov-input::placeholder{color:var(--t3)}
.qa-ov-chips .qa-chip{background:rgba(255,255,255,.92);border-color:transparent}
.qa-ov-creadas{display:flex;flex-direction:column;gap:6px;width:100%;align-items:center;max-height:32vh;overflow-y:auto}
.qa-ov-creada{color:#fff;background:rgba(0,158,74,.9);border-radius:var(--round);padding:6px 16px;font-size:13px;font-weight:500;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qa-ov-hint{color:rgba(255,255,255,.6);font-size:12px;text-align:center;line-height:1.8;margin-top:8px}
.qa-ov-hint b{color:rgba(255,255,255,.85);font-weight:600}
@media (max-width:640px){
  .qa-ov-title{font-size:23px}
  .qa-ov-input{height:50px;font-size:15px}
  .qa-ov-hint{font-size:11px}
}

/* ── Resumen de pendientes en el overlay ─────────────────────── */
.qa-ov-resumen{width:100%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:14px;padding:12px 16px;display:flex;flex-direction:column;gap:7px;margin-top:4px}
.qa-ov-resumen.hidden{display:none}
.qa-ov-res-head{font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:rgba(255,255,255,.55)}
.qa-ov-res-stats{display:flex;gap:16px;color:#fff;font-size:13px;flex-wrap:wrap;padding-bottom:2px}
.qa-ov-res-item{display:flex;align-items:center;gap:9px;color:rgba(255,255,255,.92);font-size:13px;cursor:pointer;padding:5px 8px;margin:0 -8px;border-radius:8px;transition:background .12s}
.qa-ov-res-item:hover{background:rgba(255,255,255,.13)}
.qa-ov-res-titulo{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qa-ov-res-asig{font-size:11px;color:rgba(255,255,255,.6);flex-shrink:0}
.qa-ov-res-mas{font-size:11px;color:rgba(255,255,255,.5);padding-left:2px}

/* ── Sección "Futuras" colapsable en el kanban ───────────────── */
.kanban-section-toggle{cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;transition:color .12s}
.kanban-section-toggle:hover{color:var(--t1)}
.ksec-chevron{font-size:9px;color:var(--t3)}
.ksec-count{background:var(--s3);color:var(--t2);border-radius:var(--round);padding:1px 7px;font-size:10px;font-weight:600}

/* ── Calendario ──────────────────────────────────────────────── */
.cal-legend{display:flex;align-items:center;gap:14px;padding:8px 24px;border-bottom:1px solid var(--border);flex-wrap:wrap;background:var(--surface);flex-shrink:0}
.cal-leg-item{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--t2)}
.cal-leg-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
.cal-wrap{flex:1;overflow:auto;padding:14px 24px;display:flex;flex-direction:column}
.cal-grid-head{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px;flex-shrink:0}
.cal-grid-head div{font-size:10px;font-weight:700;color:var(--t3);text-transform:uppercase;letter-spacing:.6px;text-align:center}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;grid-auto-rows:minmax(108px,auto)}
.cal-day{background:var(--surface);border:1px solid var(--border);border-radius:var(--r2);padding:6px;display:flex;flex-direction:column;gap:3px;min-width:0;transition:border-color .12s,box-shadow .12s}
.cal-day:hover{border-color:var(--brand);box-shadow:0 2px 8px rgba(0,0,0,.06)}
.cal-otro-mes{opacity:.45;background:var(--s2)}
.cal-hoy{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.cal-hoy .cal-day-num{background:var(--brand);color:#fff}
.cal-day-num{font-size:11px;font-weight:700;color:var(--t2);width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0}
.cal-pill{font-size:10px;font-weight:500;padding:2px 6px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;line-height:1.5;flex-shrink:0}
.cal-pill:hover{filter:brightness(.93)}
.cal-pill-tarea{background:#dbeafe;color:#1e40af}
.cal-pill-vencida{background:#fee2e2;color:#b91c1c}
.cal-pill-evento{background:#ede9fe;color:#6d28d9}
.cal-pill-ausencia{background:#fef3c7;color:#92400e}
.cal-pill-servicio{background:#cffafe;color:#155e75}
.cal-mas{font-size:10px;font-weight:600;color:var(--t3);cursor:pointer;padding:1px 6px}
.cal-mas:hover{color:var(--t1)}
@media (max-width:640px){
  .cal-wrap{padding:10px 12px}
  .cal-legend{padding:8px 12px;gap:10px}
  .cal-legend span[style*="margin-left"]{display:none}
  .cal-grid,.cal-grid-head{gap:3px}
  .cal-grid{grid-auto-rows:minmax(76px,auto)}
  .cal-day{padding:3px;border-radius:6px;gap:2px}
  .cal-day-num{width:16px;height:16px;font-size:9px}
  .cal-pill{font-size:8px;padding:1px 3px}
  .cal-mas{font-size:8px}
}

/* ── Calendario: filtro por empleado + barras continuas ──────── */
.cal-filtro-emp{display:flex;gap:4px;align-items:center;flex-wrap:wrap;margin-left:14px}
.cal-fe-av{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;cursor:pointer;opacity:.35;transition:opacity .12s,box-shadow .12s;flex-shrink:0}
.cal-fe-av:hover{opacity:.7}
.cal-fe-av.on{opacity:1;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--brand)}
.cal-fe-clear{font-size:10px;font-weight:600;color:var(--t3);cursor:pointer;padding:3px 8px;border-radius:var(--round);white-space:nowrap}
.cal-fe-clear:hover{color:var(--t1);background:var(--s2)}
.cal-grid{display:flex;flex-direction:column;gap:6px}
.cal-week{position:relative}
.cal-week-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;grid-auto-rows:minmax(108px,auto)}
.cal-week-bars{position:absolute;left:0;right:0;display:grid;grid-template-columns:repeat(7,1fr);column-gap:6px;row-gap:3px;pointer-events:none;z-index:2}
.cal-bar{pointer-events:auto;border-radius:6px;font-size:10px;font-weight:600;padding:1px 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;align-self:start;line-height:1.6;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.cal-bar:hover{filter:brightness(.93)}
.cal-bar-evento{background:#ddd6fe;color:#5b21b6}
.cal-bar-ausencia{background:#fde68a;color:#92400e}
.cal-bar-cont-l{border-top-left-radius:0;border-bottom-left-radius:0}
.cal-bar-cont-r{border-top-right-radius:0;border-bottom-right-radius:0}
.cal-day-items{display:flex;flex-direction:column;gap:3px;min-width:0}
@media (max-width:640px){
  .cal-grid{gap:3px}
  .cal-week-days{gap:3px;grid-auto-rows:minmax(76px,auto)}
  .cal-week-bars{column-gap:3px;row-gap:2px}
  .cal-bar{font-size:8px;padding:0 4px;border-radius:4px;line-height:1.8}
  .cal-filtro-emp{margin-left:0}
  .cal-fe-av{width:22px;height:22px;font-size:8px}
}

/* ── Calendario: reparaciones y taller ───────────────────────── */
.cal-pill-rep{background:#fed7aa;color:#9a3412}
.cal-pill-taller{background:#e2e8f0;color:#334155}

/* ── Calendario: banner de tareas atrasadas ──────────────────── */
.cal-atrasadas{margin:14px 24px 0;background:#fef2f2;border:1px solid rgba(220,38,38,.3);border-radius:var(--r2);flex-shrink:0;overflow:hidden}
.cal-atr-head{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;font-size:13px;font-weight:500;color:#b91c1c;user-select:none}
.cal-atr-head:hover{background:rgba(220,38,38,.06)}
.cal-atr-toggle{margin-left:auto;font-size:11px;font-weight:700;white-space:nowrap}
.cal-atr-list{border-top:1px solid rgba(220,38,38,.15);display:flex;flex-direction:column;max-height:240px;overflow-y:auto;background:var(--surface)}
.cal-atr-item{display:flex;gap:12px;align-items:center;padding:8px 14px;font-size:12px;cursor:pointer;border-bottom:1px solid var(--s2);min-width:0}
.cal-atr-item:last-child{border-bottom:none}
.cal-atr-item:hover{background:var(--s2)}
.cal-atr-fecha{font-weight:700;color:#b91c1c;white-space:nowrap;flex-shrink:0;width:90px}
.cal-atr-titulo{flex:1;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-atr-asig{display:inline-flex;align-items:center;gap:5px;color:var(--t2);white-space:nowrap;flex-shrink:0}
.cal-atr-dias{color:var(--t3);white-space:nowrap;flex-shrink:0;font-size:11px}
@media (max-width:640px){
  .cal-atrasadas{margin:10px 12px 0}
  .cal-atr-head{padding:9px 12px;font-size:12px}
  .cal-atr-item{gap:8px;padding:7px 12px;font-size:11px}
  .cal-atr-fecha{width:auto}
  .cal-atr-dias{display:none}
}

/* ── Notas: navegación con secciones del equipo ──────────────── */
.notas-nav{border-bottom:1px solid var(--border);flex-shrink:0;padding:4px 0;max-height:42vh;overflow-y:auto}
.notas-navitem{display:flex;align-items:center;gap:8px;width:100%;padding:7px 14px;font-size:13px;font-weight:500;color:var(--t2);transition:var(--tr);text-align:left}
.notas-navitem:hover{background:var(--s2);color:var(--t1)}
.notas-navitem.active{background:var(--brand-l);color:var(--brand)}
.notas-navitem-ico{font-size:13px;flex-shrink:0}
.notas-navitem-lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notas-navitem .notas-tab-count{flex-shrink:0}
.notas-navitem.active .notas-tab-count{background:var(--brand-l);color:var(--brand)}
.notas-sec-head{display:flex;align-items:center;justify-content:space-between;padding:9px 14px 4px;font-size:10px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--t3)}
.notas-sec-add{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--t2);transition:var(--tr)}
.notas-sec-add:hover{background:var(--brand);color:#fff}
.notas-sec-empty{padding:4px 14px 8px;font-size:11px;color:var(--t3)}
.notas-sec-item .notas-sec-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.notas-sec-edit{flex-shrink:0;opacity:0;font-size:12px;color:var(--t3);padding:0 4px;transition:opacity .12s,color .12s}
.notas-sec-item:hover .notas-sec-edit{opacity:1}
.notas-sec-edit:hover{color:var(--brand)}

/* selector de sección en el editor */
.notas-meta-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.nota-seccion-pick{display:flex;align-items:center;gap:6px;flex-shrink:0}
.nota-seccion-lbl{font-size:11px;color:var(--t3);font-weight:500}
.nota-seccion-select{font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--r2);background:var(--s2);color:var(--t1);cursor:pointer;font-family:inherit;max-width:200px}
.nota-seccion-select:hover{border-color:var(--brand)}

/* selector de color en el modal de sección */
.sec-color-row{display:flex;gap:10px;flex-wrap:wrap}
.sec-color-chip{width:28px;height:28px;border-radius:50%;cursor:pointer;transition:transform .1s,box-shadow .1s;box-shadow:0 0 0 2px transparent}
.sec-color-chip:hover{transform:scale(1.12)}
.sec-color-chip.sel{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--t2)}

/* ── Notas: nuevo modelo de secciones (mías / compartidas) ───── */
.notas-sec-owner{color:var(--t3);font-weight:400;font-size:11px;margin-left:4px}
.notas-sec-shared{flex-shrink:0;font-size:11px;color:var(--brand);font-weight:700}
.notas-sec-item.drop-hover{background:var(--brand-l);box-shadow:inset 0 0 0 2px var(--brand);border-radius:6px}
.nota-card[draggable="true"]{cursor:grab}
.nota-card[draggable="true"]:active{cursor:grabbing}

/* barra de meta + selector de Ubicación (con respiro respecto al texto) */
.notas-meta-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:8px 20px;background:var(--s2);border-bottom:1px solid var(--border);flex-shrink:0}
.notas-meta-row .notas-meta{padding:0;background:none;border:none;flex:1;min-width:120px}
.notas-meta-row .notas-meta:empty{display:block}
.nota-seccion-pick{display:flex;align-items:center;gap:7px;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--round);padding:3px 6px 3px 12px}
.nota-seccion-select{border:none;background:none;padding:3px 4px}
.nota-seccion-select:hover{border:none}

/* ── Notas: ver más secciones + reordenar arrastrando ────────── */
.notas-sec-vermas{display:block;width:100%;text-align:left;padding:5px 14px 7px 30px;font-size:11px;font-weight:600;color:var(--t3);transition:color .12s}
.notas-sec-vermas:hover{color:var(--brand)}
.nota-card.dragging{opacity:.45;background:var(--brand-l)}
.notas-list.reordenando{cursor:grabbing}

/* ── ORGANIGRAMA ─────────────────────────────────────────────── */
.org-overlay{position:fixed;inset:0;z-index:250;background:var(--bg);display:flex;flex-direction:column}
.org-overlay.hidden{display:none}
.org-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}
.org-header-title{display:flex;align-items:center;gap:12px}
.org-logo{width:38px;height:38px;flex-shrink:0}
.org-title{font-size:19px;font-weight:800;letter-spacing:-.3px;color:var(--t1)}
.org-sub{font-size:12px;color:var(--t3)}
.org-header-actions{display:flex;align-items:center;gap:8px}
.org-toggle.active{background:var(--brand);color:#fff}
.org-body{flex:1;overflow:auto;padding:30px 24px 60px}

/* lienzo: columnas agrupadas */
.org-canvas{display:inline-flex;flex-direction:column;align-items:center;min-width:100%;gap:0}
.org-col{display:flex;flex-direction:column;align-items:center}
/* fila horizontal (departamentos bajo Gerencia) */
.org-children-row{display:flex;justify-content:center;align-items:flex-start;gap:14px;padding-top:18px;position:relative}
.org-children-row::before{content:'';position:absolute;top:0;left:50%;width:0;height:18px;border-left:2px solid var(--s4)}
.org-children-row > .org-col{position:relative;padding-top:14px}
.org-children-row > .org-col::before{content:'';position:absolute;top:0;left:50%;width:0;height:14px;border-left:2px solid var(--s4)}
/* conector horizontal que une los departamentos */
.org-children-row > .org-col::after{content:'';position:absolute;top:0;height:0;border-top:2px solid var(--s4);left:-7px;right:-7px}
.org-children-row > .org-col:first-child::after{left:50%}
.org-children-row > .org-col:last-child::after{right:50%}
.org-children-row > .org-col:only-child::after{display:none}
/* pila vertical (sub-unidades bajo cada depto) */
.org-children-center{display:flex;flex-direction:column;align-items:center;padding-top:16px;position:relative}
.org-children-center::before{content:'';position:absolute;top:0;left:50%;width:0;height:16px;border-left:2px solid var(--s4)}
.org-children-stack{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:8px 0 0 14px;position:relative;width:100%}
.org-children-stack > .org-col{align-items:stretch}
.org-children-stack > .org-col > .org-node{width:100%}

/* caja de unidad */
.org-node{position:relative;display:flex;flex-direction:column;min-width:160px;max-width:230px;border-radius:9px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.08);background:var(--surface)}
.org-node-title{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.2px;padding:7px 10px;line-height:1.25}
.org-node-name{flex:1}
/* colores por nivel */
.org-node-top{border:1.5px solid var(--brand-d)}
.org-node-top .org-node-title{background:var(--brand-d);color:#fff}
.org-node-dept{border:1.5px solid var(--brand)}
.org-node-dept .org-node-title{background:var(--brand);color:#fff}
.org-node-sub{border:1.5px solid var(--brand)}
.org-node-sub .org-node-title{background:#fff;color:var(--brand)}
.org-node-staff{border:1.5px solid var(--t2)}
.org-node-staff .org-node-title{background:var(--t2);color:#fff}
/* personas */
.org-people{display:flex;flex-direction:column;background:#fff}
.org-person{padding:5px 10px;border-top:1px solid var(--s2)}
.org-person-edit{cursor:pointer;transition:background .12s}
.org-person-edit:hover{background:var(--brand-l)}
.org-person-nombre{font-size:12px;font-weight:600;color:var(--t1);line-height:1.3;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.org-person-cargo{font-size:10px;color:var(--t2);line-height:1.3;margin-top:1px}
/* chips de vehículo (ocultos hasta activar "Vehículos") */
.org-auto-chip,.org-auto-chip-sm{display:none;align-items:center;gap:2px;font-size:9px;font-weight:700;background:#fef3c7;color:#92400e;border-radius:var(--round);padding:1px 6px;white-space:nowrap}
.org-show-autos .org-auto-chip,.org-show-autos .org-auto-chip-sm{display:inline-flex}
.org-node-dept .org-auto-chip,.org-node-top .org-auto-chip,.org-node-staff .org-auto-chip{background:rgba(255,255,255,.9);color:#92400e}
/* controles de edición */
.org-unit-edit{cursor:pointer;opacity:.85;font-size:11px;padding:0 2px}
.org-unit-edit:hover{opacity:1}
.org-node-actions{display:flex;border-top:1px dashed var(--border)}
.org-mini-btn{flex:1;padding:4px;font-size:10px;font-weight:600;color:var(--brand);background:var(--brand-l);transition:background .12s}
.org-mini-btn:hover{background:var(--brand);color:#fff}
.org-mini-btn+.org-mini-btn{border-left:1px dashed var(--border)}
.org-add-root{margin-top:20px;padding:8px 16px;font-size:12px;font-weight:600;color:var(--brand);background:var(--brand-l);border:1px dashed var(--brand);border-radius:8px}
.org-add-root:hover{background:var(--brand);color:#fff}
/* modales */
.org-persona-unidad-lbl{font-size:11px;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:.4px;margin-bottom:12px}
.org-auto-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:500}
.org-auto-check input{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}

@media (max-width:640px){
  .org-body{padding:18px 10px 50px}
  .org-node{min-width:140px;max-width:180px}
  .org-children-row{gap:8px}
  .org-title{font-size:16px}
}

/* ── Organigrama: tira de staff y chip de gremio (faltaban) ──── */
/* staff (ej. SGI, Controller) cuelgan del padre con un conector vertical claro */
.org-staff-strip{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;padding-top:18px;margin-bottom:4px;position:relative}
.org-staff-strip::before{content:'';position:absolute;top:0;left:50%;width:0;height:18px;border-left:2px solid var(--s4)}
.org-staff-strip > .org-node{position:relative}
.org-staff-strip > .org-node::before{content:'';position:absolute;top:-18px;left:50%;width:0;height:18px;border-left:2px dashed var(--s4)}

/* chip de gremio (oculto hasta que el toggle "✊ Gremio" lo activa) */
.org-gremio-chip{display:none;align-items:center;gap:3px;font-size:9px;font-weight:700;background:#fee2e2;color:#991b1b;border-radius:var(--round);padding:1px 6px;white-space:nowrap;margin-left:4px}
.org-show-gremio .org-gremio-chip{display:inline-flex}
.org-node-dept .org-gremio-chip,.org-node-top .org-gremio-chip,.org-node-staff .org-gremio-chip{background:rgba(255,255,255,.92);color:#991b1b}

/* ── Organigrama: conectores en stack vertical (faltaban líneas) ── */
.org-children-stack{padding-left:28px;position:relative}
.org-children-stack::before{content:'';position:absolute;top:0;bottom:14px;left:10px;border-left:2px solid var(--s4)}
.org-children-stack > .org-col{position:relative;padding-top:0;margin-top:6px}
.org-children-stack > .org-col::before{content:'';position:absolute;top:14px;left:-18px;width:16px;height:0;border-top:2px solid var(--s4)}
.org-children-stack > .org-col:first-child{margin-top:0}

/* botón ▾/▸ para colapsar/expandir */
.org-node-toggle{cursor:pointer;user-select:none;font-size:11px;line-height:1;padding:0 4px 0 0;flex-shrink:0;opacity:.85}
.org-node-toggle:hover{opacity:1}
.org-collapsed .org-node-title{opacity:.85}

/* Filtros REALES: vehículos y gremio
   - Cajas fuera de la rama con match: atenuadas (no rotas, mantienen jerarquía)
   - Personas que no cumplen el filtro activo: ocultas
*/
.org-show-autos .org-node:not(.org-has-auto),
.org-show-gremio .org-node:not(.org-has-gremio){opacity:.18;filter:saturate(.3)}
.org-show-autos .org-person:not(.org-p-auto){display:none}
.org-show-gremio .org-person:not(.org-p-gremio){display:none}
/* las dos juntas: tiene que tener AMBAS */
.org-show-autos.org-show-gremio .org-person:not(.org-p-auto):not(.org-p-gremio){display:none}

/* Tipo "operativo": misma jerarquía que una unidad, color gris (sólido como staff) */
.org-node-operativo{border:1.5px solid var(--t2)}
.org-node-operativo .org-node-title{background:var(--t2);color:#fff}

/* Aviso cuando el filtro está activo pero nadie cumple */
.org-filtro-vacio{max-width:680px;margin:14px auto;padding:14px 18px;background:#fef3c7;color:#78350f;border:1px solid #fde68a;border-radius:8px;font-size:13px;line-height:1.5;text-align:center}
.org-filtro-vacio strong{color:#451a03}

/* ── Organigrama: personas con jerarquía interna ──────────────── */
.org-person{display:flex;align-items:flex-start;gap:6px}
.org-person-sub{background:linear-gradient(to right, transparent 0, transparent 6px, var(--s2) 6px, var(--s2) 8px, transparent 8px)}
.org-person-sub .org-person-nombre{font-weight:500}
.org-person-arrow{color:var(--t3);font-size:11px;flex-shrink:0;line-height:1.4}

/* ── Organigrama: buscador en el header ──────────────────────── */
.org-busq-wrap{position:relative;display:flex;align-items:center;min-width:240px;max-width:320px}
.org-busq-icon{position:absolute;left:10px;font-size:13px;color:var(--t3);pointer-events:none}
.org-busq-input{padding:6px 30px 6px 30px;font-size:13px;height:32px;width:100%;background:var(--s2);border:1px solid transparent;border-radius:var(--round)}
.org-busq-input:focus{background:var(--surface);border-color:var(--brand)}
.org-busq-clear{position:absolute;right:6px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--t3);background:none;border-radius:50%;cursor:pointer}
.org-busq-clear:hover{background:var(--s3);color:var(--t1)}
.org-busq-clear.hidden{display:none}

/* filtro de búsqueda: misma lógica que vehículos/gremio */
.org-show-busq .org-node:not(.org-has-busq){opacity:.18;filter:saturate(.3)}
.org-show-busq .org-person:not(.org-p-busq):not(.org-p-busq-ctx){display:none}
/* ancestros del match: visibles pero más tenues para que se entienda que son contexto */
.org-show-busq .org-p-busq-ctx{opacity:.55}
.org-show-busq .org-p-busq-ctx .org-person-nombre{font-weight:500}
/* destacar las personas que coinciden con la búsqueda */
.org-show-busq .org-p-busq{background:#fef9c3}
.org-show-busq .org-p-busq .org-person-nombre{color:#854d0e;font-weight:700}

@media (max-width:640px){
  .org-busq-wrap{min-width:160px;max-width:200px}
  .org-busq-input{font-size:12px;height:30px}
}

/* ── Vista PLANILLA de mantenimientos (estilo Excel) ─────────── */
.mant-vista-bar{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border);margin-bottom:8px;flex-wrap:wrap}
.mant-vista-toggle{display:inline-flex;background:var(--s2);border-radius:var(--round);padding:2px;flex-shrink:0}
.mant-vista-btn{padding:5px 12px;font-size:12px;font-weight:600;color:var(--t2);background:none;border-radius:var(--round);transition:var(--tr);cursor:pointer}
.mant-vista-btn.active{background:var(--surface);color:var(--brand);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.mant-vista-bar #mv-exportar,.mant-vista-bar #mv-importar{margin-left:auto;font-size:11px}
.mant-vista-bar #mv-importar{margin-left:4px}

.mant-planilla{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;font-family:var(--font-sans,system-ui,sans-serif);table-layout:auto}
.mant-planilla thead th{position:sticky;top:0;z-index:1;background:var(--s2);color:var(--t2);font-weight:700;text-transform:uppercase;letter-spacing:.4px;font-size:10px;padding:8px 10px;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;cursor:pointer;user-select:none}
.mant-planilla tbody td{padding:7px 10px;border-bottom:1px solid var(--s2);vertical-align:middle;line-height:1.4;font-size:13px}
.mant-planilla tbody tr.mp-fila{cursor:pointer}
.mant-planilla tbody tr.mp-fila:hover td{background:#f5f8ff}
.mant-planilla .mp-fecha{color:var(--t3);font-size:11px;white-space:nowrap;width:68px;font-family:var(--mono)}
.mant-planilla .mp-veh{font-weight:600;color:var(--t1);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.mant-planilla .mp-edit{cursor:cell;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1);transition:background .12s;border-radius:3px}
.mant-planilla .mp-edit:empty::before{content:'—';color:var(--t4,#cbd5e1)}
.mant-planilla .mp-edit:hover{background:#eff6ff;outline:1px dashed var(--brand);outline-offset:-1px}
.mant-planilla .mp-input{width:100%;border:1.5px solid var(--brand);border-radius:4px;padding:3px 7px;font-size:13px;font-family:inherit;outline:none;background:#fff}

.mant-planilla .mp-prio,.mant-planilla .mp-est{display:inline-block;padding:2px 9px;border-radius:var(--round);font-size:11px;font-weight:700;letter-spacing:.15px;cursor:pointer;user-select:none;transition:box-shadow .12s}
.mant-planilla .mp-prio:hover,.mant-planilla .mp-est:hover{box-shadow:0 0 0 2px var(--brand)}
.mp-prio-alta{background:#fee2e2;color:#b91c1c}
.mp-prio-media{background:#fef3c7;color:#92400e}
.mp-prio-baja{background:#e5e7eb;color:#475569}
.mp-est-pend{background:#fef3c7;color:#92400e}
.mp-est-encurso{background:#dbeafe;color:#1e40af}
.mp-est-cerrado{background:#dcfce7;color:#166534}
.mp-est-cancel{background:#e5e7eb;color:#475569}
.mant-planilla .mp-acciones{text-align:right;white-space:nowrap;width:40px}

/* Asignado */
.mant-planilla .mp-asignado{cursor:pointer;white-space:nowrap}
.mp-asig-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 7px 2px 2px;background:var(--s2);border-radius:var(--round);font-size:12px;font-weight:500;color:var(--t1);transition:box-shadow .12s;max-width:140px}
.mp-asig-av{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}
.mp-asig-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mp-asignado:hover .mp-asig-chip{box-shadow:0 0 0 2px var(--brand)}
.mp-asig-vacio{color:var(--t3);font-size:12px;font-style:italic}

/* Fila NUEVA en la planilla (estilo "+ agregar") */
.mp-row-nueva{background:#f9fafb}
.mp-row-nueva td{border-bottom:2px solid var(--border)!important}
.mp-row-nueva .mp-fecha{color:var(--brand);font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.4px}
.mp-row-nueva .mp-edit-nueva{color:var(--t3)}
.mp-row-nueva .mp-edit-nueva:empty::before{content:attr(data-placeholder);color:var(--t3);font-style:italic}
.mp-row-nueva .mp-edit-nueva:hover:empty::before{color:var(--brand)}
.mp-prio-nueva,.mp-est-nueva{opacity:.6}

/* Dropdown flotante (estado, prioridad, asignado) */
.mp-dd{position:absolute;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:4px;min-width:140px;z-index:9999;display:flex;flex-direction:column;gap:2px}
.mp-dd-item{display:flex;align-items:center;gap:8px;padding:6px 10px;background:none;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;text-align:left;width:100%;transition:background .1s}
.mp-dd-item:hover{background:var(--s2)}
.mp-dd-personas{min-width:180px}
.mp-dd-persona{font-size:13px}
.mp-pers-av{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}
.mp-dd-veh{max-height:280px;overflow-y:auto}
.mp-dd-veh .mp-dd-item{flex-direction:column;align-items:flex-start;gap:1px}
.mp-ac-label{font-weight:600;font-size:13px;color:var(--t1)}
.mp-ac-sub{font-size:11px;color:var(--t3)}

/* Fila de flota clicable */
.veh-list-row{cursor:pointer;transition:background .12s}
.veh-list-row:hover{background:var(--s2)}

/* Chip estado en ficha vehículo */
#fv-estado-badge .badge{font-size:11px}

/* Categoría inline en planilla */
.mp-cat{display:inline-block;padding:2px 7px;border-radius:5px;font-size:11px;font-weight:600;background:var(--s3);color:var(--t2);cursor:pointer;white-space:nowrap;transition:background .1s,box-shadow .1s}
.mp-cat:hover{background:var(--s4);box-shadow:0 0 0 2px var(--border)}
.mp-cat-nueva{opacity:.6}
