:root{--red:#d90404;--red2:#b80000;--ink:#111827;--muted:#667085;--line:#e5e7eb;--bg:#f5f7fb;--card:#fff;--soft:#f8fafc;--shadow:0 16px 44px rgba(15,23,42,.08);--radius:22px}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}a{text-decoration:none;color:inherit}.app-shell{display:grid;grid-template-columns:280px 1fr;min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--line);padding:22px 16px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;margin-bottom:28px}.brand-mark{width:56px;height:56px;border-radius:18px;background:linear-gradient(135deg,var(--red),#ff3b3b);color:#fff;display:grid;place-items:center;font-size:30px;font-weight:950;box-shadow:0 12px 25px rgba(217,4,4,.20)}.brand strong{display:block;line-height:1.05;font-size:17px}.brand span{color:var(--red)}.brand small{display:block;color:var(--muted);font-size:12px;margin-top:4px}nav{display:flex;flex-direction:column;gap:8px}nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:15px;color:#303949;font-weight:850}nav a:hover{background:#f8fafc}.nav-ico,.title-ico,.card-ico{display:grid;place-items:center;flex:0 0 auto}.nav-ico{width:30px;height:30px;border-radius:11px;background:#f3f4f6;color:#111827}.nav-ico svg,.title-ico svg,.card-ico svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}nav a.active{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;box-shadow:0 14px 25px rgba(217,4,4,.22)}nav a.active .nav-ico{background:rgba(255,255,255,.18);color:#fff}.main{padding:26px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:22px}.page-title{display:flex;gap:14px;align-items:center}.title-ico{width:56px;height:56px;border-radius:18px;background:#fff;border:1px solid var(--line);color:var(--red);box-shadow:var(--shadow)}.title-ico svg{width:30px;height:30px}.page-title h1{margin:0;font-size:clamp(26px,3vw,38px);letter-spacing:-.04em}.page-title p{margin:4px 0 0;color:var(--muted)}.search-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:11px 16px;color:var(--muted);font-size:14px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card.soft{background:linear-gradient(180deg,#fff,#fbfcff)}.card.danger{background:linear-gradient(180deg,#fff,#fff7f7)}.card.dark{background:#141922;color:#fff}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}.card-title{display:flex;align-items:center;gap:12px}.card-ico{width:42px;height:42px;border-radius:14px;background:#f3f4f6;color:#111827}.card-ico.red{background:#fee2e2;color:var(--red)}.card h2,.card h3{margin:0}.card p{color:var(--muted);line-height:1.55}.kpi{display:flex;align-items:center;gap:14px}.kpi b{font-size:34px;display:block}.kpi span{color:var(--muted)}.section-strip{border-left:5px solid var(--red);padding-left:14px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}label{display:block;font-weight:850;font-size:13px;margin:11px 0 6px;color:#344054}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff;font:inherit;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#ff8a8a;box-shadow:0 0 0 4px rgba(217,4,4,.10)}textarea{min-height:88px;resize:vertical}.btn,button{border:0;border-radius:999px;padding:10px 14px;font:inherit;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;gap:8px;justify-content:center;background:#f3f4f6;color:#111827}.btn.primary,button.primary{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;box-shadow:0 12px 22px rgba(217,4,4,.18)}.btn.ghost,button.ghost{background:#fff;border:1px solid var(--line)}.btn.danger,button.danger{background:#fee2e2;color:#991b1b}.btn.small,button.small{padding:7px 10px;font-size:12px}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px}table{border-collapse:collapse;width:100%;min-width:900px}th,td{padding:12px;border-bottom:1px solid #edf0f5;text-align:left;vertical-align:top;font-size:14px}th{background:#f8fafc;color:#475467;text-transform:uppercase;letter-spacing:.04em;font-size:12px;position:sticky;top:0}.badge{display:inline-flex;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:900}.badge.ok{background:#dcfce7;color:#166534}.badge.warn{background:#fef3c7;color:#92400e}.badge.bad{background:#fee2e2;color:#991b1b}.badge.neutral{background:#e5e7eb;color:#374151}.muted{color:var(--muted)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.toolbar input,.toolbar select{max-width:260px}.device-card{background:#fbfcff;border:1px solid var(--line);border-radius:18px;padding:14px;margin:12px 0}.device-head{display:flex;justify-content:space-between;align-items:center}.hint{font-size:12px;color:var(--muted);line-height:1.45}.qr-box{display:flex;gap:18px;align-items:center;flex-wrap:wrap}.qr-box img{width:150px;height:150px;border-radius:16px;border:1px solid var(--line);padding:8px;background:#fff}.client-header-preview{width:100%;max-height:170px;object-fit:cover;border-radius:16px;border:1px solid var(--line);background:#f3f4f6}.mini-divider{height:1px;background:var(--line);margin:14px 0}.modal{position:fixed;inset:0;background:rgba(15,23,42,.45);display:none;align-items:center;justify-content:center;padding:18px;z-index:20}.modal.open{display:flex}.modal-card{background:#fff;border-radius:22px;box-shadow:0 20px 60px rgba(0,0,0,.25);padding:22px;max-width:520px;width:100%}.toast{position:fixed;right:18px;bottom:18px;background:#111827;color:#fff;border-radius:999px;padding:12px 16px;opacity:0;transform:translateY(10px);transition:.25s;z-index:30}.toast.show{opacity:1;transform:none}@media(max-width:1050px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.main{padding:18px}.grid-2,.grid-3,.grid-4,.form-grid,.form-grid-3{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}table{min-width:760px}}@media(max-width:640px){.toolbar input,.toolbar select{max-width:none}.sidebar{padding:16px}.brand{margin-bottom:14px}nav{display:grid;grid-template-columns:1fr 1fr}nav a{font-size:13px;padding:10px}.page-title{align-items:flex-start}.title-ico{width:48px;height:48px}}
/* Inventario v1.2: listado más claro, filtros y agrupación por aula */
.inventory-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;align-items:end}.inventory-filters input,.inventory-filters select{max-width:none}.wide-inventory{min-width:0}.strong-location{font-size:15px;font-weight:900;color:#111827}.device-list{display:flex;flex-direction:column;gap:8px;min-width:360px}.device-line{display:grid;grid-template-columns:minmax(120px,160px) minmax(150px,1.2fr) minmax(220px,1.5fr) auto;gap:8px;align-items:center;background:#f8fafc;border:1px solid #edf0f5;border-radius:14px;padding:8px 10px}.device-type{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#fee2e2;color:var(--red);font-weight:950;font-size:12px;padding:5px 9px;text-align:center;white-space:nowrap}.inventory-table td:nth-child(3){min-width:560px}.inventory-table th:nth-child(3){min-width:560px}@media(max-width:1250px){.inventory-filters{grid-template-columns:repeat(2,minmax(130px,1fr))}.device-line{grid-template-columns:1fr}.inventory-table td:nth-child(3),.inventory-table th:nth-child(3){min-width:420px}}


/* v1.3 - mejoras formulario público de incidencias */
.public-main{max-width:980px;margin:auto;padding-top:28px;padding-bottom:40px}
.public-card{overflow:visible}
.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:14px;padding:12px 14px;margin:12px 0 16px;font-weight:800}
.public-title h1{font-size:clamp(26px,4vw,38px)}
@media(max-width:640px){.public-main{padding:14px}.public-card{padding:14px}.client-header-public-wrap{border-radius:14px}.public-title{align-items:flex-start}}

/* v1.3.1 - cabecera formulario QR: completa pero contenida */
.public-main{max-width:980px;margin:0 auto;}
.public-card{overflow:hidden;}
.client-header-public-wrap{
  width:100%;
  height:180px;
  background:#f8fafc;
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:12px;
}
.client-header-public{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
  background:#fff;
}
.client-header-preview{
  width:100%;
  height:150px;
  object-fit:contain;
  object-position:center;
  background:#fff;
  border-radius:16px;
  border:1px solid var(--line);
}
.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca;border-radius:14px;padding:12px 14px;margin:14px 0;font-weight:800;}
@media(max-width:640px){
  .public-main{padding:14px;}
  .public-card{padding:14px;}
  .client-header-public-wrap{height:120px;border-radius:14px;}
  .public-title{align-items:flex-start;}
}


/* v1.3.2 - cabecera formulario QR: ancho completo con proporción real de banner */
.client-header-public-wrap{
  width:100% !important;
  height:auto !important;
  aspect-ratio:2048 / 682;
  max-height:none !important;
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  display:block !important;
  margin:0 0 26px 0;
  padding:0;
}
.client-header-public{
  display:block;
  width:100% !important;
  height:100% !important;
  object-fit:contain !important;
  object-position:center center;
  background:#fff;
}
.public-card{overflow:hidden;}
@media(max-width:640px){
  .client-header-public-wrap{
    aspect-ratio:2048 / 682;
    border-radius:14px;
    margin-bottom:20px;
  }
}


/* v1.3.3 - ajuste específico móvil: banner más compacto en formulario público */
@media(max-width:640px){
  .public-main{
    padding:10px !important;
  }
  .public-card{
    padding:14px !important;
  }
  .client-header-public-wrap{
    width:100% !important;
    height:96px !important;
    aspect-ratio:auto !important;
    max-height:96px !important;
    border-radius:13px !important;
    margin-bottom:18px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    background:#fff !important;
  }
  .client-header-public{
    width:100% !important;
    height:100% !important;
    object-fit:contain !important;
    object-position:center center !important;
  }
  .public-title h1{
    font-size:28px !important;
    line-height:1.08 !important;
  }
}
@media(min-width:641px) and (max-width:900px){
  .client-header-public-wrap{
    max-height:210px !important;
  }
}

/* Incidencias internas */
.internal-incident-form{margin-top:10px}
.notice{border-radius:16px;padding:12px 14px;margin:0 0 16px;font-weight:750;border:1px solid var(--line);background:#fff}
.notice.ok{background:#ecfdf3;color:#166534;border-color:#bbf7d0}
.notice.bad{background:#fef2f2;color:#991b1b;border-color:#fecaca}
.row-actions{text-align:center;white-space:nowrap}
button.danger,.btn.danger{background:#fee2e2;color:#991b1b}
button.danger:hover,.btn.danger:hover{background:#fecaca}
@media(max-width:780px){.internal-incident-form .form-grid{grid-template-columns:1fr}.row-actions{text-align:left}}

/* v1.5 - Login, seguridad y logo original */
.brand-logo{width:58px;height:58px;object-fit:contain;border-radius:18px;background:#fff;box-shadow:0 10px 24px rgba(217,4,4,.14);border:1px solid #fee2e2;flex:0 0 auto}.brand-mark{display:none}.topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.user-pill{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 12px;box-shadow:0 10px 24px rgba(15,23,42,.05)}.user-pill b{display:block;font-size:13px;line-height:1.05}.user-pill small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.user-dot{width:34px;height:34px;border-radius:999px;background:linear-gradient(135deg,var(--red),var(--red2));box-shadow:0 8px 18px rgba(217,4,4,.20);position:relative}.user-dot:after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-weight:950;font-size:14px}.login-page{min-height:100vh;background:radial-gradient(circle at top left,#fff 0,#f7f8fb 46%,#eef2f7 100%)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(460px,100%);background:#fff;border:1px solid var(--line);border-radius:28px;box-shadow:0 24px 70px rgba(15,23,42,.14);padding:28px}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:20px}.login-brand img{width:74px;height:74px;object-fit:contain;border-radius:22px;background:#fff;border:1px solid #fee2e2;box-shadow:0 10px 24px rgba(217,4,4,.16)}.login-brand h1{margin:0;font-size:30px;letter-spacing:-.04em}.login-brand p{margin:3px 0 0;color:var(--red);font-weight:950}.login-card h2{margin:0 0 8px;font-size:26px;letter-spacing:-.03em}.login-card .actions{margin-top:20px}.login-card button.primary{width:100%;justify-content:center;padding:13px 16px}.login-card input{padding:13px 14px}.login-card .notice{margin:14px 0}@media(max-width:640px){.brand-logo{width:50px;height:50px}.topbar-actions{width:100%;justify-content:space-between}.user-pill{padding:7px 10px}.login-card{padding:22px;border-radius:22px}.login-brand img{width:62px;height:62px}.login-brand h1{font-size:26px}}

/* v1.6 - incidencias: edición, actuaciones e inventario vinculado */
.incident-toolbar input,.incident-toolbar select{max-width:230px}.incident-detail-card{border-left:5px solid var(--red)}.no-shadow{box-shadow:none}.resolution-box{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:12px;margin:12px 0;color:#344054}.timeline{display:flex;flex-direction:column;gap:12px;margin-top:12px}.timeline-item{display:grid;grid-template-columns:24px 1fr;gap:10px;background:#fbfcff;border:1px solid #edf0f5;border-radius:16px;padding:12px}.timeline-dot{width:14px;height:14px;border-radius:999px;background:linear-gradient(135deg,var(--red),var(--red2));margin-top:4px;box-shadow:0 0 0 4px #fee2e2}.timeline-item p{margin:6px 0 0;color:#344054}.linked-inventory{margin-top:8px;background:#f8fafc;border:1px solid #edf0f5;border-radius:12px;padding:8px;font-size:12px;color:#344054}.linked-inventory b{color:var(--red)}.row-action-buttons{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap}.incidents-table td:nth-child(3){min-width:240px}.incidents-table td:nth-child(4){min-width:320px}.incidents-table select{min-width:150px}@media(max-width:900px){.incident-toolbar input,.incident-toolbar select{max-width:none}.row-action-buttons{justify-content:flex-start}.incidents-table td:nth-child(3),.incidents-table td:nth-child(4){min-width:260px}}

/* v1.7 - Incidencias con ventanas emergentes para mantener la pantalla limpia */
body.modal-lock{overflow:hidden}.incidencias-compact-card{border-left:5px solid var(--red)}.incidencias-main-head{align-items:center}.inline-check{display:flex!important;align-items:center;gap:8px;margin:0!important;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-weight:850}.inline-check input{width:auto!important}.quick-status-form{display:flex;gap:8px;align-items:center}.quick-status-form select{min-width:145px}.incidents-table-clean td:nth-child(4){min-width:260px}.incidents-table-clean td:nth-child(3){min-width:220px}.linked-inventory.compact{padding:7px;margin-top:6px}.modal.modal-wide{align-items:flex-start;overflow:auto;padding:24px}.modal-card-wide{width:min(1180px,100%);max-width:1180px;max-height:none;margin:20px auto;padding:24px}.modal-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}.modal-head h2{margin:0}.modal-head p{margin:4px 0 0}.modal-content-grid{align-items:start}.incident-summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}.incident-summary-strip>div{background:#f8fafc;border:1px solid #edf0f5;border-radius:16px;padding:12px}.incident-summary-strip span{display:block;font-size:12px;margin-bottom:4px}.incident-summary-strip b{display:block;font-size:14px}.modal-timeline{max-height:360px;overflow:auto;padding-right:4px}.modal-actions{border-top:1px solid var(--line);padding-top:14px;margin-top:18px}@media(max-width:900px){.modal.modal-wide{padding:10px}.modal-card-wide{margin:8px auto;padding:16px;border-radius:18px}.modal-head{flex-direction:column}.incident-summary-strip{grid-template-columns:1fr}.modal-content-grid{grid-template-columns:1fr}.quick-status-form{flex-direction:column;align-items:stretch}.quick-status-form select{min-width:0}.incidents-table-clean td:nth-child(3),.incidents-table-clean td:nth-child(4){min-width:240px}}


/* v1.8 - Inventario y lista de compra en ventanas emergentes */
.inventory-page-head,.shopping-page-head{align-items:center}
.inventory-primary-card,.shopping-primary-card{border-left:5px solid var(--red)}
.modal-card-inventory{width:min(1180px,100%);max-width:1180px;max-height:none;margin:20px auto;padding:24px}
.modal-card-shopping{width:min(760px,100%);max-width:760px;max-height:none;margin:20px auto;padding:24px}
.modal-scroll{max-height:calc(100vh - 130px);overflow:auto;padding-right:4px}
.inventory-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.inventory-table-clean td:nth-child(3){min-width:560px}
.shopping-table-clean td:nth-child(1){min-width:280px}
.shopping-row-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap}.shopping-row-actions form{margin:0}.shopping-row-actions select{min-width:150px}
@media(max-width:900px){.modal-card-inventory,.modal-card-shopping{margin:8px auto;padding:16px;border-radius:18px}.modal-scroll{max-height:none;overflow:visible;padding-right:0}.inventory-actions{justify-content:flex-start}.inventory-table-clean td:nth-child(3){min-width:420px}.shopping-row-actions{flex-direction:column;align-items:stretch}.shopping-row-actions select{min-width:0}}

/* v1.9 - menú lateral agrupado y dashboard clicable */
.main-nav{display:flex;flex-direction:column;gap:8px}
.nav-group{display:flex;flex-direction:column;gap:6px;margin:4px 0}
.nav-group-title{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:15px;color:#111827;font-weight:950;background:#fff;border:1px solid #edf0f5}
.nav-group.open .nav-group-title{background:#fff7f7;border-color:#fecaca;color:var(--red)}
.nav-group.open .nav-group-title .nav-ico{background:#fee2e2;color:var(--red)}
.nav-subitems{display:flex;flex-direction:column;gap:6px;padding-left:16px;margin-left:15px;border-left:2px solid #fee2e2}
.nav-subitems a{padding:10px 12px;font-size:14px;border-radius:13px}
.nav-subitems .nav-ico{width:26px;height:26px;border-radius:9px}
.nav-subitems .nav-ico svg{width:18px;height:18px}
.dashboard-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.dashboard-card{display:flex;flex-direction:column;min-height:230px;position:relative;overflow:hidden;transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;background:linear-gradient(180deg,#fff,#fbfcff)}
.dashboard-card:before{content:"";position:absolute;inset:0 0 auto 0;height:5px;background:linear-gradient(90deg,var(--red),var(--red2));opacity:.92}
.dashboard-card:hover{transform:translateY(-3px);box-shadow:0 20px 52px rgba(15,23,42,.13);border-color:#fecaca}
.dashboard-card-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}
.dashboard-tag{font-size:12px;font-weight:950;color:var(--red);background:#fee2e2;border-radius:999px;padding:6px 10px;white-space:nowrap}
.dashboard-number{font-size:46px;line-height:1;font-weight:950;letter-spacing:-.06em;color:#111827;margin-bottom:10px}
.dashboard-card h2{margin:0;font-size:22px;letter-spacing:-.03em}
.dashboard-card p{margin:10px 0 0;color:var(--muted);line-height:1.5}
.dashboard-note p{margin-bottom:0}
@media(max-width:1200px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){
  nav.main-nav{display:flex;grid-template-columns:none}
  .nav-subitems{padding-left:10px;margin-left:12px}
  .dashboard-grid{grid-template-columns:1fr}
  .dashboard-card{min-height:190px}
  .dashboard-number{font-size:40px}
}

/* v2.0 - Tareas y recordatorios */
.tasks-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.task-stat{display:flex;flex-direction:column;gap:8px;min-height:150px;justify-content:space-between;background:linear-gradient(180deg,#fff,#fbfcff);border-left:5px solid var(--red)}
.task-stat b{font-size:38px;line-height:1;letter-spacing:-.06em}.task-stat small{color:var(--muted);font-weight:850}.tasks-primary-card,.reminders-primary-card{border-left:5px solid var(--red);margin-bottom:18px}.tasks-page-head{align-items:center}.tasks-table-clean td:nth-child(1){min-width:320px}.tasks-table-clean td:nth-child(6){min-width:210px}.tasks-table-clean td:nth-child(7){white-space:nowrap}.row-due td{background:#fff7ed!important}.row-due td:first-child{box-shadow:inset 5px 0 0 #f97316}.auto-submit-toolbar button{opacity:.85}.quick-status-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.quick-status-form select{min-width:135px}@media(max-width:1100px){.tasks-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tasks-table-clean td:nth-child(1){min-width:260px}}@media(max-width:640px){.tasks-summary-grid{grid-template-columns:1fr}.task-stat{min-height:120px}.tasks-page-head{align-items:flex-start}.quick-status-form{flex-direction:column;align-items:stretch}.quick-status-form select{min-width:0}}

/* v2.1 - Calendario profesional */
.calendar-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.calendar-stat{min-height:145px;border-left:5px solid var(--red);display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(180deg,#fff,#fbfcff)}.calendar-stat.exterior{border-left-color:#2563eb}.calendar-stat.vacation{border-left-color:#7c3aed}.calendar-stat b{font-size:38px;line-height:1;letter-spacing:-.06em}.calendar-stat small{color:var(--muted);font-weight:950}.calendar-layout{grid-template-columns:minmax(0,1fr) 360px;align-items:start}.calendar-main-card{border-left:5px solid var(--red);min-width:0}.calendar-page-head{align-items:center}.calendar-filters{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}.calendar-filters select{max-width:230px}.calendar-side{gap:16px}.calendar-hours-card{margin-top:18px;border-left:5px solid var(--red)}.calendar-hours-table{min-width:760px}.calendar-legend{margin-top:18px}.legend-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;color:#344054;font-weight:850}.legend-dot{width:14px;height:14px;border-radius:999px;display:inline-block;margin-left:8px}.legend-dot.taller{background:#d90404}.legend-dot.exterior{background:#2563eb}.legend-dot.remoto{background:#059669}.legend-dot.mantenimiento{background:#d97706}.legend-dot.vacaciones{background:#7c3aed}.mini-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}.mini-item{background:#f8fafc;border:1px solid #edf0f5;border-radius:15px;padding:11px}.mini-item b{display:block;font-size:13px}.mini-item span{display:block;color:var(--muted);font-size:12px;margin-top:4px}.tech-list{display:flex;flex-direction:column;gap:8px;margin:12px 0}.tech-pill{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#f8fafc;border:1px solid #edf0f5;border-radius:999px;padding:8px 10px;font-weight:850}.tech-pill span{width:14px;height:14px;border-radius:999px;display:inline-block;flex:0 0 auto}.tech-pill form{margin-left:auto}.modal-card-calendar{width:min(860px,100%);max-width:860px;max-height:none;margin:20px auto;padding:24px}.fc{--fc-border-color:#e5e7eb;--fc-page-bg-color:#fff;--fc-small-font-size:12px}.fc .fc-toolbar-title{font-size:24px!important;letter-spacing:-.04em}.fc .fc-button{border:0!important;border-radius:999px!important;background:#f3f4f6!important;color:#111827!important;font-weight:900!important;padding:8px 12px!important;box-shadow:none!important}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background:linear-gradient(135deg,var(--red),var(--red2))!important;color:#fff!important}.fc .fc-today-button{background:#fff!important;border:1px solid var(--line)!important}.fc .fc-daygrid-day.fc-day-today,.fc .fc-timegrid-col.fc-day-today{background:#fff7f7!important}.fc-event{border:0!important;border-radius:10px!important;padding:2px 5px!important;font-weight:850!important;box-shadow:0 8px 18px rgba(15,23,42,.08)}.fc .fc-list-event-dot{border-color:var(--red)!important}.cal-type-taller{background:#d90404!important;color:#fff!important}.cal-type-exterior{background:#2563eb!important;color:#fff!important}.cal-type-remoto{background:#059669!important;color:#fff!important}.cal-type-mantenimiento,.cal-type-revision-preventiva{background:#d97706!important;color:#fff!important}.cal-type-personal{background:#64748b!important;color:#fff!important}.cal-block-vacaciones,.cal-block-no-disponible{background:#7c3aed!important;color:#fff!important}.cal-block-guardia{background:#0f172a!important;color:#fff!important}.cal-block-disponible{background:rgba(22,163,74,.18)!important}.notice{border-radius:15px;padding:12px 14px;margin:0 0 16px;font-weight:850}.notice.ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}.notice.bad{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}@media(max-width:1200px){.calendar-layout{grid-template-columns:1fr}.calendar-side{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:900px){.calendar-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-side{grid-template-columns:1fr}.calendar-filters select{max-width:none}.fc .fc-toolbar{flex-direction:column;gap:10px}.fc .fc-toolbar-title{font-size:20px!important}.modal-card-calendar{margin:8px auto;padding:16px;border-radius:18px}}@media(max-width:640px){.calendar-summary-grid{grid-template-columns:1fr}.calendar-stat{min-height:115px}.calendar-page-head{align-items:flex-start}.fc .fc-button{padding:7px 9px!important;font-size:12px!important}.fc .fc-toolbar-chunk{display:flex;flex-wrap:wrap;justify-content:center;gap:5px}}


/* v2.1.1 - Menú lateral recogible */
.topbar-left{display:flex;align-items:center;gap:14px;min-width:0}
.sidebar-toggle{width:46px;height:46px;border-radius:14px;border:1px solid var(--line);background:#fff;display:grid;place-content:center;gap:4px;box-shadow:var(--shadow);padding:0}
.sidebar-toggle span{display:block;width:18px;height:2px;background:#111827;border-radius:999px}
.nav-label{display:inline-block;white-space:nowrap}
.brand-copy{min-width:0}
.app-shell{transition:grid-template-columns .22s ease}
.sidebar, .main-nav a, .nav-group-title, .nav-subitems, .brand-copy{transition:all .22s ease}
body.sidebar-collapsed .app-shell{grid-template-columns:96px 1fr}
body.sidebar-collapsed .sidebar{padding:22px 10px}
body.sidebar-collapsed .brand{justify-content:center;margin-bottom:22px}
body.sidebar-collapsed .brand-logo{width:52px;height:52px;object-fit:contain}
body.sidebar-collapsed .brand-copy{opacity:0;max-width:0;overflow:hidden}
body.sidebar-collapsed .main-nav{gap:10px}
body.sidebar-collapsed .main-nav > a,
body.sidebar-collapsed .nav-group-title,
body.sidebar-collapsed .nav-subitems a{justify-content:center;padding:11px 10px}
body.sidebar-collapsed .nav-label{display:none}
body.sidebar-collapsed .nav-group{gap:8px}
body.sidebar-collapsed .nav-subitems{padding-left:0;margin-left:0;border-left:0;gap:8px}
body.sidebar-collapsed .nav-subitems a{font-size:0}
body.sidebar-collapsed .nav-ico{margin:0}
body.sidebar-collapsed .nav-group-title{font-size:0;background:#fff;border:1px solid #edf0f5}
body.sidebar-collapsed .nav-group.open .nav-group-title{background:#fff7f7;border-color:#fecaca}
body.sidebar-collapsed .user-pill small{display:none}
@media(max-width:960px){
  .app-shell{grid-template-columns:96px 1fr}
  .sidebar{padding:22px 10px}
  .brand{justify-content:center;margin-bottom:22px}
  .brand-copy{display:none}
  .main-nav > a,.nav-group-title,.nav-subitems a{justify-content:center;padding:11px 10px}
  .nav-label{display:none}
  .nav-subitems{padding-left:0;margin-left:0;border-left:0;gap:8px}
  .nav-group-title{font-size:0}
}
@media(max-width:640px){
  body.sidebar-collapsed .app-shell,.app-shell{grid-template-columns:82px 1fr}
  .sidebar-toggle{width:42px;height:42px}
}

/* v2.2 - Técnicos con color, edición y ausencias */
.tech-pill-editable{border-radius:16px;padding:10px;align-items:center}
.tech-pill-editable b{font-size:14px;margin-right:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tech-actions{display:flex;gap:6px;align-items:center;margin-left:auto;flex-wrap:wrap}.tech-actions form{margin:0}
.inline-color-dot{display:inline-block;width:12px;height:12px;border-radius:999px;margin-right:7px;vertical-align:-1px;border:1px solid rgba(0,0,0,.10)}
.block-mini-item{border-left:5px solid #7c3aed}.mini-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:9px}.mini-actions form{margin:0}
.helper-actions{margin-top:8px;margin-bottom:2px}.calendar-legend-note{margin:10px 0 0!important;font-size:13px}.fc-event{border-left-width:6px!important}.cal-block-vacaciones,.cal-block-no-disponible{border-left-width:6px!important}.modal-card-shopping input[type="color"]{height:46px;padding:4px;border-radius:13px;background:#fff}
@media(max-width:640px){.tech-pill-editable{align-items:flex-start;border-radius:15px}.tech-actions{width:100%;margin-left:0;margin-top:8px}.tech-actions .small{flex:1}.mini-actions{flex-direction:column;align-items:stretch}.mini-actions .small{width:100%}}


/* v2.2.3 - Vacaciones/no disponible como sombreado suave por día */
.fc .fc-bg-event.cal-block-day{
  opacity:.16;
  border-radius:0!important;
}
.fc .fc-bg-event.cal-block-day:hover{
  opacity:.24;
}
.fc .fc-bg-event.cal-block-vacaciones,
.fc .fc-bg-event.cal-block-no-disponible{
  background:#7c3aed!important;
}
.fc .fc-bg-event.cal-block-disponible{
  background:#16a34a!important;
}
.fc .fc-bg-event.cal-block-guardia{
  background:#0f172a!important;
}
.availability-warning{
  margin-top:7px;
  color:#991b1b;
  background:#fee2e2;
  border:1px solid #fecaca;
  border-radius:12px;
  padding:8px 10px;
  font-weight:800;
}
.hidden{display:none!important}


/* v2.4 - Lista de la compra con formato de lista real */
.shopping-list-card{
  border-left:5px solid var(--red);
}
.shopping-toolbar{
  grid-template-columns:minmax(240px,1fr) 210px auto auto auto;
  align-items:center;
}
.shopping-list{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:16px;
}
.shopping-list-item{
  display:grid;
  grid-template-columns:46px minmax(0,1fr) auto auto;
  gap:14px;
  align-items:center;
  background:#fff;
  border:1px solid #edf0f5;
  border-radius:18px;
  padding:13px 14px;
  box-shadow:0 10px 26px rgba(15,23,42,.045);
  transition:transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.shopping-list-item:hover{
  transform:translateY(-1px);
  border-color:#fecaca;
  box-shadow:0 14px 34px rgba(15,23,42,.075);
}
.shopping-list-item.is-closed{
  opacity:.68;
  background:#f8fafc;
}
.shopping-list-item.is-closed .shopping-item-title b{color:#344054}
.shopping-check form,
.shopping-actions form{
  margin:0;
}
.shopping-check-btn{
  width:34px;
  height:34px;
  border-radius:999px;
  padding:0;
  font-size:21px;
  line-height:1;
  background:#fff;
  color:var(--red);
  border:2px solid #fecaca;
}
.shopping-list-item.is-closed .shopping-check-btn{
  background:#dcfce7;
  border-color:#bbf7d0;
  color:#166534;
}
.shopping-item-main{
  min-width:0;
}
.shopping-item-title{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.shopping-item-title b{
  font-size:17px;
  letter-spacing:-.02em;
}
.shopping-qty{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:3px 9px;
  background:#f3f4f6;
  color:#344054;
  font-size:12px;
  font-weight:950;
}
.shopping-flow{
  display:flex;
  align-items:center;
  gap:6px;
  margin-top:8px;
  flex-wrap:wrap;
}
.shopping-flow span{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  border-radius:999px;
  border:1px solid #e5e7eb;
  background:#f8fafc;
  color:#667085;
  padding:3px 8px;
  font-size:11px;
  font-weight:950;
}
.shopping-flow span.done{
  background:#eef6ff;
  border-color:#bfdbfe;
  color:#1d4ed8;
}
.shopping-flow span.current{
  background:#dcfce7;
  border-color:#bbf7d0;
  color:#166534;
}
.shopping-flow i{
  width:16px;
  height:2px;
  border-radius:999px;
  background:#cbd5e1;
}
.shopping-meta{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:6px;
  color:#667085;
  font-size:12px;
  font-weight:750;
}
.shopping-meta span{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid #edf0f5;
  padding:4px 8px;
}
.shopping-notes{
  margin:8px 0 0!important;
  color:#475467!important;
  font-size:13px;
  line-height:1.35!important;
}
.shopping-badges{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
  min-width:150px;
}
.shopping-actions{
  display:flex;
  gap:7px;
  align-items:center;
  justify-content:flex-end;
  flex-wrap:wrap;
  min-width:210px;
}
.shopping-empty{
  border:1px dashed #cbd5e1;
  background:#f8fafc;
  border-radius:18px;
  padding:22px;
  text-align:center;
  color:#667085;
}
.shopping-empty b{
  display:block;
  color:#111827;
  font-size:18px;
  margin-bottom:6px;
}
@media(max-width:1050px){
  .shopping-toolbar{grid-template-columns:1fr 1fr}
  .shopping-list-item{grid-template-columns:42px minmax(0,1fr)}
  .shopping-badges,.shopping-actions{
    grid-column:2;
    justify-content:flex-start;
    min-width:0;
  }
}
@media(max-width:640px){
  .shopping-toolbar{grid-template-columns:1fr}
  .shopping-list-item{
    grid-template-columns:38px minmax(0,1fr);
    gap:10px;
    padding:12px;
  }
  .shopping-actions{
    flex-direction:column;
    align-items:stretch;
  }
  .shopping-actions .btn,
  .shopping-actions button{
    width:100%;
  }
}


/* v2.5 - Inventario: acciones por dispositivo, movimientos y línea de tiempo */
.device-actions-inline{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:8px;
}
.move-device-summary{
  background:#f8fafc;
  border:1px solid #edf0f5;
  border-radius:15px;
  padding:11px 12px;
  margin-bottom:12px;
}
.timeline-box{
  display:flex;
  flex-direction:column;
  gap:10px;
  margin-top:10px;
}
.timeline-item{
  position:relative;
  background:#fff;
  border:1px solid #edf0f5;
  border-left:5px solid var(--red);
  border-radius:16px;
  padding:12px 14px;
}
.timeline-item b{
  display:block;
  font-size:15px;
}
.timeline-item span,
.timeline-item small{
  display:block;
  color:#667085;
  font-size:12px;
  margin-top:3px;
}
.timeline-item p{
  margin:8px 0 0!important;
  color:#344054!important;
  line-height:1.4!important;
}
@media(max-width:700px){
  .device-actions-inline{
    flex-direction:column;
    align-items:stretch;
  }
  .device-actions-inline button{
    width:100%;
  }
}


/* v2.5.1 - Acciones de dispositivo dentro de la ventana de edición */
.device-card-tools{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin:8px 0 12px;
  padding:10px;
  border-radius:14px;
  background:#f8fafc;
  border:1px solid #edf0f5;
}
@media(max-width:700px){
  .device-card-tools{
    flex-direction:column;
    align-items:stretch;
  }
  .device-card-tools button{
    width:100%;
  }
}


/* v2.5.2 - Corrección visual del historial de movimientos de inventario */
#deviceHistoryModal .timeline-box{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
}
#deviceHistoryModal .timeline-item{
  display:block!important;
  grid-template-columns:none!important;
  width:100%!important;
  min-width:0!important;
  padding:16px 18px!important;
  border-left:6px solid var(--red)!important;
  background:#fff!important;
}
#deviceHistoryModal .timeline-item b{
  display:block!important;
  font-size:16px!important;
  line-height:1.25!important;
  margin-bottom:4px!important;
  max-width:none!important;
  white-space:normal!important;
}
#deviceHistoryModal .timeline-item span{
  display:block!important;
  font-size:12px!important;
  color:#667085!important;
  margin:0 0 10px!important;
  white-space:normal!important;
}
#deviceHistoryModal .timeline-item p{
  display:block!important;
  margin:0 0 10px!important;
  color:#344054!important;
  line-height:1.45!important;
  white-space:pre-wrap!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
}
#deviceHistoryModal .timeline-item small{
  display:block!important;
  color:#667085!important;
  background:#f8fafc!important;
  border:1px solid #edf0f5!important;
  border-radius:12px!important;
  padding:8px 10px!important;
  line-height:1.35!important;
}


/* v2.6 - Ajustes profesionales */
.settings-layout{
  display:grid;
  grid-template-columns:310px minmax(0,1fr);
  gap:18px;
  align-items:start;
}
.settings-tabs{
  display:flex;
  flex-direction:column;
  gap:10px;
  position:sticky;
  top:22px;
}
.settings-tabs a{
  display:flex;
  gap:12px;
  align-items:center;
  border:1px solid #edf0f5;
  border-radius:17px;
  padding:12px;
  background:#fff;
  transition:.16s ease;
}
.settings-tabs a:hover{
  border-color:#fecaca;
  transform:translateY(-1px);
}
.settings-tabs a.active{
  border-color:#fecaca;
  background:#fff7f7;
  box-shadow:0 12px 30px rgba(217,4,4,.08);
}
.settings-tabs a b{
  display:block;
  font-size:15px;
}
.settings-tabs a small{
  display:block;
  color:#667085;
  margin-top:2px;
}
.settings-main{
  min-width:0;
}
.settings-layout-single{
  grid-template-columns:1fr;
}
.settings-layout-single .settings-main{
  width:100%;
}
.settings-list{
  display:flex;
  flex-direction:column;
  gap:10px;
}
.settings-row{
  display:grid;
  grid-template-columns:28px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  background:#fff;
  border:1px solid #edf0f5;
  border-radius:17px;
  padding:12px 14px;
}
.settings-row small{
  display:block;
  color:#667085;
  margin-top:3px;
}
.settings-row form{
  margin:0;
}
.settings-color{
  width:20px;
  height:20px;
  border-radius:999px;
  box-shadow:0 0 0 4px #f3f4f6;
}
.settings-catalog-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.settings-catalog-card{
  background:#fff;
  border:1px solid #edf0f5;
  border-radius:18px;
  padding:16px;
}
.settings-catalog-card h3{
  margin:0 0 10px;
  font-size:16px;
}
.settings-chip-list{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.settings-chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  border:1px solid #edf0f5;
  border-radius:999px;
  padding:6px 8px 6px 11px;
  background:#f8fafc;
  margin:0;
}
.settings-chip button{
  width:22px;
  height:22px;
  padding:0;
  border-radius:999px;
  background:#fee2e2;
  color:#991b1b;
}
.settings-system-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.settings-system-grid code{
  background:#f3f4f6;
  border-radius:8px;
  padding:2px 6px;
}
@media(max-width:1050px){
  .settings-layout{grid-template-columns:1fr}
  .settings-tabs{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .settings-tabs,.settings-catalog-grid,.settings-system-grid{grid-template-columns:1fr}
  .settings-row{grid-template-columns:24px 1fr}
  .settings-row .actions{grid-column:2;justify-content:flex-start}
}


/* v2.7 - Clientes / Centros avanzado */
.clients-hero-card{
  border-left:5px solid var(--red);
  margin-bottom:18px;
}
.clients-main-head{align-items:center}
.clients-toolbar{
  grid-template-columns:minmax(260px,1fr) 190px auto auto;
  align-items:center;
}
.clients-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
}
.client-card{
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:22px;
  box-shadow:var(--shadow);
  overflow:hidden;
  display:flex;
  flex-direction:column;
}
.client-card.is-inactive{
  opacity:.68;
}
.client-card-banner{
  height:150px;
  background:linear-gradient(135deg,#fff,#f8fafc);
  border-bottom:1px solid #edf0f5;
  display:grid;
  place-items:center;
  overflow:hidden;
}
.client-card-banner img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.client-card-placeholder{
  width:72px;
  height:72px;
  border-radius:24px;
  display:grid;
  place-items:center;
  background:#fee2e2;
  color:var(--red);
}
.client-card-placeholder svg{
  width:42px;
  height:42px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
}
.client-card-body{
  padding:16px;
}
.client-card-title{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:flex-start;
  margin-bottom:14px;
}
.client-card-title h2{
  margin:0;
  font-size:22px;
  letter-spacing:-.035em;
}
.client-card-title p{
  margin:4px 0 0;
  color:#667085;
}
.client-stats{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.client-stat{
  border:1px solid #edf0f5;
  border-radius:15px;
  padding:10px;
  background:#f8fafc;
}
.client-stat b{
  display:block;
  font-size:22px;
  line-height:1;
}
.client-stat span{
  display:block;
  color:#667085;
  font-size:12px;
  margin-top:4px;
}
.client-stat.ok{background:#f0fdf4;border-color:#bbf7d0}
.client-stat.warn{background:#fff7ed;border-color:#fed7aa}
.client-meta{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin-bottom:14px;
}
.client-meta span,.client-meta a{
  display:inline-flex;
  border-radius:999px;
  padding:6px 9px;
  background:#f8fafc;
  border:1px solid #edf0f5;
  color:#475467;
  font-size:12px;
  font-weight:800;
}
.client-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.modal-card-client{
  width:min(980px,100%);
  max-width:980px;
}
.client-header-edit-preview{
  margin-top:10px;
  border:1px solid #edf0f5;
  border-radius:16px;
  overflow:hidden;
  background:#f8fafc;
}
.client-header-edit-preview img{
  width:100%;
  max-height:220px;
  object-fit:contain;
  display:block;
}
.client-detail-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}
.client-detail-wide{
  grid-column:1 / -1;
}
.client-detail-list p{
  margin:8px 0;
  color:#344054;
}
.client-detail-stats{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.client-detail-stats div{
  background:#f8fafc;
  border:1px solid #edf0f5;
  border-radius:15px;
  padding:12px;
}
.client-detail-stats b{
  display:block;
  font-size:28px;
  line-height:1;
}
.client-detail-stats span{
  display:block;
  color:#667085;
  font-size:12px;
  margin-top:5px;
}
@media(max-width:1100px){
  .clients-grid{grid-template-columns:1fr}
}
@media(max-width:720px){
  .clients-toolbar{grid-template-columns:1fr}
  .client-stats{grid-template-columns:1fr}
  .client-detail-grid{grid-template-columns:1fr}
  .client-card-banner{height:120px}
}


/* v2.8 - Importar / exportar incidencias */
.import-card{border-left:5px solid var(--red);max-width:980px}.import-card input[type=file]{background:#fff}.incident-toolbar .btn{white-space:nowrap}


/* v2.8.1 - Incidencias: filtro obligatorio por centro y finalizadas ocultas por defecto */
.incident-filter-summary{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  margin:12px 0 16px;
  padding:10px 12px;
  border-radius:16px;
  background:#f8fafc;
  border:1px solid #edf0f5;
  color:#667085;
  font-weight:750;
}
.incident-filter-summary span{
  font-size:13px;
}
@media(max-width:900px){
  .incident-toolbar{
    grid-template-columns:1fr!important;
  }
}

/* cambio 006 - Responsive + modo app instalable/PWA */
html{min-height:100%;-webkit-text-size-adjust:100%;}
body{min-height:100%;overscroll-behavior-y:none;}
img,svg,video{max-width:100%;height:auto;}
button,.btn,a,input,select,textarea{-webkit-tap-highlight-color:transparent;}
input,select,textarea{font-size:16px;}
.sidebar-backdrop{display:none;}
.main{padding-left:max(26px,env(safe-area-inset-left));padding-right:max(26px,env(safe-area-inset-right));padding-bottom:max(26px,env(safe-area-inset-bottom));}
.topbar{position:sticky;top:0;z-index:12;background:rgba(245,247,251,.86);backdrop-filter:blur(14px);padding:10px 0;margin:-10px 0 18px;}
.table-wrap{max-width:100%;-webkit-overflow-scrolling:touch;}
.modal{padding:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));}
@media(display-mode:standalone){
  body{background:var(--bg);}
  .topbar{padding-top:max(10px,env(safe-area-inset-top));}
}
@media(max-width:820px){
  .app-shell{display:block;min-height:100vh;}
  .main{width:100%;padding:14px max(14px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));}
  .sidebar{position:fixed;z-index:50;top:0;bottom:0;left:0;width:min(320px,86vw);height:100dvh;overflow:auto;transform:translateX(-105%);transition:transform .22s ease;padding:18px 14px;box-shadow:22px 0 60px rgba(15,23,42,.22);}
  body.mobile-nav-open .sidebar{transform:translateX(0);}
  .sidebar-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:45;display:none;}
  body.mobile-nav-open .sidebar-backdrop{display:block;}
  .brand{justify-content:flex-start;margin-bottom:18px;}
  .brand-copy{display:block!important;opacity:1!important;max-width:none!important;}
  .main-nav{display:flex!important;flex-direction:column!important;gap:8px!important;}
  .main-nav > a,.nav-group-title,.nav-subitems a{justify-content:flex-start!important;padding:12px 14px!important;font-size:14px!important;}
  .nav-label{display:inline-block!important;}
  .nav-group-title{font-size:14px!important;}
  .nav-subitems{padding-left:12px!important;margin-left:14px!important;border-left:1px solid #edf0f5!important;}
  .topbar{align-items:stretch;gap:12px;padding:10px 0;margin:-10px 0 14px;}
  .topbar-left{width:100%;align-items:center;}
  .topbar-actions{width:100%;justify-content:space-between;gap:8px;}
  .sidebar-toggle{position:relative;z-index:20;flex:0 0 auto;}
  .page-title{min-width:0;gap:10px;}
  .page-title h1{font-size:24px;line-height:1.08;}
  .page-title p{font-size:13px;line-height:1.35;}
  .title-ico{width:44px;height:44px;border-radius:15px;}
  .title-ico svg{width:24px;height:24px;}
  .card{padding:16px;border-radius:18px;}
  .grid,.grid-2,.grid-3,.grid-4,.form-grid,.form-grid-3,.modal-content-grid,.client-detail-grid{grid-template-columns:1fr!important;}
  .toolbar,.incident-toolbar,.calendar-filters,.actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;}
  .toolbar input,.toolbar select,.incident-toolbar input,.incident-toolbar select,.calendar-filters select,.actions .btn,.actions button{max-width:none;width:100%;}
  .btn,button{min-height:42px;}
  .table-wrap{border-radius:16px;margin-left:-2px;margin-right:-2px;}
  table{min-width:760px;}
  .modal.open{align-items:flex-start;overflow:auto;}
  .modal-card,.modal-card-wide,.modal-card-calendar,.modal-card-client{width:100%!important;max-width:none!important;margin:0!important;padding:16px!important;border-radius:18px!important;}
  .modal-head{position:sticky;top:0;background:#fff;z-index:2;padding-bottom:10px;}
  .login-shell{padding:16px;align-items:center;}
  .login-card{border-radius:22px;padding:20px;}
  .login-brand{align-items:center;}
  .login-brand img{width:58px;height:58px;}
  .public-main{padding:12px!important;}
  .public-card{padding:14px!important;border-radius:18px;}
}
@media(max-width:480px){
  body{font-size:14px;}
  .main{padding-left:10px;padding-right:10px;}
  .topbar-actions .user-pill{max-width:calc(100vw - 120px);overflow:hidden;}
  .user-pill b,.user-pill small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;display:block;}
  .page-title h1{font-size:21px;}
  .card{padding:14px;}
  label{font-size:12px;}
  input,select,textarea{padding:11px;}
  .client-card-title,.card-head,.section-title{flex-direction:column;align-items:flex-start!important;}
  .client-actions,.quick-contact{flex-direction:column;align-items:stretch;}
  .client-actions .btn,.quick-contact a{width:100%;justify-content:center;}
}

/* cambio 007 - corrección login móvil: evitar logo gigante y centrar acceso */
body.login-page{
  min-height:100dvh!important;
  width:100%!important;
  overflow-x:hidden!important;
  background:radial-gradient(circle at top left,#fff 0,#f7f8fb 46%,#eef2f7 100%)!important;
}
body.login-page .login-shell{
  min-height:100dvh!important;
  width:100%!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:18px!important;
}
body.login-page .login-card{
  width:min(460px,100%)!important;
  margin:0 auto!important;
  background:#fff!important;
  border:1px solid var(--line)!important;
  border-radius:28px!important;
  box-shadow:0 24px 70px rgba(15,23,42,.14)!important;
  padding:28px!important;
}
body.login-page .login-brand{
  display:flex!important;
  align-items:center!important;
  gap:14px!important;
  margin-bottom:20px!important;
}
body.login-page .login-brand img{
  width:74px!important;
  height:74px!important;
  max-width:74px!important;
  max-height:74px!important;
  min-width:74px!important;
  object-fit:contain!important;
  border-radius:22px!important;
  background:#fff!important;
  border:1px solid #fee2e2!important;
  box-shadow:0 10px 24px rgba(217,4,4,.16)!important;
  flex:0 0 74px!important;
  display:block!important;
}
body.login-page .login-brand h1{
  margin:0!important;
  font-size:30px!important;
  letter-spacing:-.04em!important;
}
body.login-page .login-brand p{
  margin:3px 0 0!important;
  color:var(--red)!important;
  font-weight:950!important;
}
body.login-page .login-card h2{
  margin:0 0 8px!important;
  font-size:26px!important;
}
body.login-page .login-card button.primary{
  width:100%!important;
  justify-content:center!important;
  padding:13px 16px!important;
}
@media(max-width:640px){
  body.login-page .login-shell{padding:14px!important;align-items:center!important;}
  body.login-page .login-card{padding:20px!important;border-radius:22px!important;}
  body.login-page .login-brand img{
    width:58px!important;height:58px!important;max-width:58px!important;max-height:58px!important;min-width:58px!important;flex-basis:58px!important;border-radius:18px!important;
  }
  body.login-page .login-brand h1{font-size:25px!important;}
  body.login-page .login-card h2{font-size:22px!important;}
}


/* cambio 008 - control global de imágenes en móvil/tablet/PC
   Evita logos y cabeceras gigantes en panel interno y formularios QR. */
.brand,
.login-brand{
  min-width:0!important;
}
.brand img,
.brand-logo,
.sidebar .brand img,
.sidebar img.brand-logo{
  width:64px!important;
  height:64px!important;
  max-width:64px!important;
  max-height:64px!important;
  min-width:64px!important;
  flex:0 0 64px!important;
  object-fit:contain!important;
  object-position:center!important;
  display:block!important;
  border-radius:18px!important;
}
.sidebar img:not(.brand-logo){
  max-width:64px!important;
  max-height:64px!important;
  object-fit:contain!important;
}
.brand-copy{
  min-width:0!important;
}
.brand-copy strong,
.brand-copy small{
  overflow-wrap:anywhere!important;
}

/* Imágenes generales dentro del panel: nunca deben romper el ancho de la página */
.main img,
.content img,
.card img,
.modal-card img,
.public-main img,
.public-card img{
  max-width:100%!important;
  height:auto!important;
}

/* Banners/cabeceras de clientes y formularios QR: formato horizontal contenido */
.client-header-public-wrap,
.client-header-preview-wrap,
.client-header-edit-preview,
.client-card-banner,
.portal-client-header,
.public-header-image,
.qr-client-header,
.header-preview{
  width:100%!important;
  max-width:100%!important;
  overflow:hidden!important;
  background:#fff!important;
}
.client-header-public-wrap,
.qr-client-header,
.public-header-image,
.portal-client-header{
  aspect-ratio:2048 / 682!important;
  height:auto!important;
  max-height:240px!important;
  border-radius:18px!important;
}
.client-header-public,
.client-header-public-wrap img,
.client-header-preview,
.client-header-edit-preview img,
.portal-client-header img,
.public-header-image img,
.qr-client-header img,
.header-preview img{
  width:100%!important;
  height:100%!important;
  max-height:240px!important;
  object-fit:contain!important;
  object-position:center center!important;
  display:block!important;
  background:#fff!important;
}
.client-card-banner{
  height:150px!important;
  border-radius:18px!important;
}
.client-card-banner img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center!important;
  display:block!important;
}

/* Si alguna página imprime el logo directamente sin clase, lo limitamos cuando está en cabecera/sidebar */
.topbar img,
.page-title img,
.sidebar .brand > img,
header img.logo,
.logo img,
img.logo,
img.logo-original{
  width:auto!important;
  max-width:90px!important;
  height:auto!important;
  max-height:90px!important;
  object-fit:contain!important;
}

/* El QR sí puede mantener tamaño propio */
.qr-box img,
img.qr,
.qr-image{
  width:150px!important;
  height:150px!important;
  max-width:150px!important;
  max-height:150px!important;
  object-fit:contain!important;
}

@media(max-width:820px){
  .brand img,
  .brand-logo,
  .sidebar .brand img,
  .sidebar img.brand-logo{
    width:52px!important;
    height:52px!important;
    max-width:52px!important;
    max-height:52px!important;
    min-width:52px!important;
    flex-basis:52px!important;
    border-radius:16px!important;
  }
  .client-header-public-wrap,
  .qr-client-header,
  .public-header-image,
  .portal-client-header{
    max-height:150px!important;
    border-radius:14px!important;
  }
  .client-header-public,
  .client-header-public-wrap img,
  .client-header-preview,
  .client-header-edit-preview img,
  .portal-client-header img,
  .public-header-image img,
  .qr-client-header img,
  .header-preview img{
    max-height:150px!important;
  }
  .client-card-banner{
    height:120px!important;
  }
  .main > img,
  .content > img,
  .card > img{
    max-height:180px!important;
    object-fit:contain!important;
  }
  .qr-box img,
  img.qr,
  .qr-image{
    width:128px!important;
    height:128px!important;
    max-width:128px!important;
    max-height:128px!important;
  }
}

@media(max-width:480px){
  .brand img,
  .brand-logo,
  .sidebar .brand img,
  .sidebar img.brand-logo{
    width:46px!important;
    height:46px!important;
    max-width:46px!important;
    max-height:46px!important;
    min-width:46px!important;
    flex-basis:46px!important;
  }
  .client-header-public-wrap,
  .qr-client-header,
  .public-header-image,
  .portal-client-header{
    max-height:125px!important;
  }
  .client-header-public,
  .client-header-public-wrap img,
  .client-header-preview,
  .client-header-edit-preview img,
  .portal-client-header img,
  .public-header-image img,
  .qr-client-header img,
  .header-preview img{
    max-height:125px!important;
  }
}

/* CAMBIO 009 - Calendario responsive móvil/tablet */
#calendar,
.calendar-main-card,
.calendar-layout,
.calendar-page-head,
.calendar-filters{
  min-width:0;
  max-width:100%;
}

#calendar{
  width:100%;
  overflow-x:hidden;
}

.fc{
  max-width:100%;
}

.fc .fc-view-harness,
.fc .fc-view-harness-active{
  min-height:0!important;
}

.fc .fc-scroller,
.fc .fc-scroller-liquid-absolute{
  overflow:visible!important;
}

.fc .fc-list{
  border-radius:16px;
  overflow:hidden;
}

@media(max-width:720px){
  .calendar-main-card{
    padding:12px!important;
    border-radius:18px!important;
    overflow:hidden;
  }

  .calendar-page-head{
    display:block!important;
  }

  .calendar-page-head .card-title{
    align-items:flex-start;
    margin-bottom:10px;
  }

  .calendar-page-head .actions{
    display:grid!important;
    grid-template-columns:1fr;
    gap:8px;
    width:100%;
  }

  .calendar-page-head .actions button,
  .calendar-filters select,
  .calendar-filters button{
    width:100%!important;
    max-width:none!important;
  }

  .calendar-filters{
    display:grid!important;
    grid-template-columns:1fr;
    gap:8px;
  }

  #calendar{
    font-size:12px;
  }

  .fc .fc-toolbar{
    display:grid!important;
    grid-template-columns:1fr;
    gap:8px!important;
    align-items:stretch!important;
    margin-bottom:10px!important;
  }

  .fc .fc-toolbar-chunk{
    display:flex!important;
    justify-content:center!important;
    flex-wrap:wrap!important;
    gap:5px!important;
    max-width:100%;
  }

  .fc .fc-toolbar-title{
    font-size:17px!important;
    line-height:1.15!important;
    text-align:center!important;
    white-space:normal!important;
  }

  .fc .fc-button{
    font-size:11px!important;
    padding:7px 9px!important;
    min-height:34px!important;
  }

  .fc .fc-button-group{
    display:flex!important;
    flex-wrap:wrap!important;
    gap:5px!important;
  }

  .fc .fc-button-group>.fc-button{
    border-radius:999px!important;
    margin:0!important;
  }

  .fc .fc-daygrid-day-frame{
    min-height:62px!important;
    padding:2px!important;
  }

  .fc .fc-daygrid-day-top{
    justify-content:center!important;
    font-size:11px!important;
  }

  .fc .fc-col-header-cell-cushion,
  .fc .fc-daygrid-day-number{
    padding:3px!important;
  }

  .fc-event{
    font-size:10px!important;
    line-height:1.15!important;
    padding:2px 3px!important;
    border-radius:7px!important;
    box-shadow:none!important;
  }

  .fc-event-title,
  .fc-event-time{
    white-space:normal!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }

  .fc .fc-list-table{
    font-size:12px!important;
  }

  .fc .fc-list-day-cushion,
  .fc .fc-list-event td{
    padding:8px 7px!important;
  }

  .fc .fc-list-event-title,
  .fc .fc-list-event-time{
    white-space:normal!important;
  }

  .calendar-hours-card,
  .calendar-legend{
    overflow:hidden;
  }

  .legend-row{
    display:grid!important;
    grid-template-columns:1fr;
    gap:7px!important;
  }
}

@media(min-width:721px) and (max-width:1024px){
  .calendar-layout{
    grid-template-columns:1fr!important;
  }
  .calendar-side{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .fc .fc-toolbar-title{
    font-size:20px!important;
  }
  .fc .fc-toolbar{
    flex-wrap:wrap!important;
    gap:8px!important;
  }
}

/* Cambio 010 - calendario limpio y ajustes de disponibilidad */
.btn-link{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;gap:8px}
.readonly-tech-list .tech-pill{justify-content:flex-start}
.settings-calendar-list .mini-item{align-items:flex-start}
.soft-note{background:#fff7ed;border:1px solid #fed7aa;color:#7c2d12;margin-bottom:16px}
.helper-actions{margin:10px 0}
@media (max-width:720px){
  .calendar-page-head .actions{width:100%;display:grid;grid-template-columns:1fr;gap:8px}
  .calendar-page-head .actions .btn-link,.calendar-page-head .actions button{width:100%}
  .settings-tabs{overflow-x:auto;display:flex;gap:8px;padding:10px}
  .settings-tabs a{min-width:180px;flex:0 0 auto}
}

/* Cambio 011 - fotos en incidencias y cabeceras QR responsive */
input[type="file"]{
  background:#fff;
  border:1px dashed #d1d5db;
  border-radius:14px;
  padding:12px;
}
.incident-photo-box{
  margin:14px 0;
  max-width:520px;
}
.incident-photo-box img{
  display:block;
  width:100%;
  max-width:520px;
  max-height:360px;
  object-fit:contain;
  border-radius:16px;
  border:1px solid var(--line, #e5e7eb);
  background:#fff;
}
.incident-photo-box.compact img{
  max-width:260px;
  max-height:190px;
}
.public-form .client-header-public-wrap{
  width:100%;
  max-width:100%;
  height:auto !important;
  max-height:none !important;
  aspect-ratio:16/5;
  overflow:hidden;
  border-radius:18px;
  border:1px solid var(--line, #e5e7eb);
  background:#fff;
  margin:0 0 16px;
}
.public-form .client-header-public-wrap img,
.public-form img.client-header-public{
  display:block;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:none !important;
  object-fit:cover;
  object-position:center;
  border-radius:0;
}
.public-main{
  width:100%;
  max-width:980px;
  margin:0 auto;
}
.public-card{
  overflow:hidden;
}
@media(max-width:700px){
  .public-form{padding:10px !important;}
  .public-main{padding:0 !important;}
  .public-card{padding:14px !important;border-radius:18px;}
  .public-form .client-header-public-wrap{aspect-ratio:16/6.2;border-radius:14px;margin-bottom:14px;}
  .incident-photo-box img{max-height:260px;}
}
@media(max-width:420px){
  .public-form .client-header-public-wrap{aspect-ratio:16/7;}
}

/* Cambio 013 - formulario QR realmente responsive en móvil */
html, body.public-form{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
body.public-form{
  margin:0 !important;
  padding:0 !important;
  background:#f5f7fb;
}
body.public-form .main.public-main,
body.public-form main.public-main{
  display:block !important;
  width:100% !important;
  max-width:980px !important;
  min-width:0 !important;
  margin:0 auto !important;
  padding:18px !important;
}
body.public-form .card.public-card,
body.public-form article.public-card{
  display:block !important;
  width:100% !important;
  max-width:980px !important;
  min-width:0 !important;
  margin:0 auto !important;
  padding:18px !important;
  overflow:hidden !important;
  box-sizing:border-box !important;
}
body.public-form .client-header-public-wrap{
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:clamp(120px, 28vw, 250px) !important;
  max-height:250px !important;
  aspect-ratio:auto !important;
  overflow:hidden !important;
  border-radius:18px !important;
  border:1px solid var(--line, #e5e7eb) !important;
  background:#fff !important;
  margin:0 0 18px 0 !important;
  padding:0 !important;
  display:block !important;
}
body.public-form .client-header-public-wrap img,
body.public-form img.client-header-public{
  display:block !important;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  background:#fff !important;
  border-radius:0 !important;
}
body.public-form form,
body.public-form .form-grid,
body.public-form input,
body.public-form select,
body.public-form textarea{
  max-width:100% !important;
  box-sizing:border-box !important;
}
body.public-form .public-title{
  width:100% !important;
  max-width:100% !important;
}
@media(max-width:700px){
  body.public-form .main.public-main,
  body.public-form main.public-main{
    padding:10px !important;
  }
  body.public-form .card.public-card,
  body.public-form article.public-card{
    padding:14px !important;
    border-radius:18px !important;
  }
  body.public-form .client-header-public-wrap{
    height:clamp(95px, 31vw, 150px) !important;
    max-height:150px !important;
    border-radius:14px !important;
    margin-bottom:14px !important;
  }
  body.public-form .form-grid,
  body.public-form .form-grid-3{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:10px !important;
    width:100% !important;
  }
  body.public-form .public-title{
    display:flex !important;
    align-items:flex-start !important;
    gap:10px !important;
  }
  body.public-form .public-title h1{
    font-size:22px !important;
    line-height:1.05 !important;
    margin:0 !important;
  }
  body.public-form label{
    font-size:12px !important;
  }
  body.public-form input,
  body.public-form select,
  body.public-form textarea{
    font-size:14px !important;
    min-height:42px !important;
  }
  body.public-form textarea{
    min-height:96px !important;
  }
  body.public-form .actions,
  body.public-form .actions button,
  body.public-form button.primary{
    width:100% !important;
  }
}
@media(max-width:420px){
  body.public-form .client-header-public-wrap{
    height:112px !important;
  }
}


/* Cambio 014 - Área cliente / centro */
.client-portal-body{background:#f4f6fa}.client-portal-shell{display:grid;grid-template-columns:270px 1fr;min-height:100vh}.client-sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--line);padding:20px 14px;z-index:40}.client-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.client-brand img{width:54px;height:54px;object-fit:contain;border-radius:18px;border:1px solid #fee2e2;box-shadow:0 10px 24px rgba(217,4,4,.12)}.client-brand strong{display:block;font-size:18px;letter-spacing:-.03em}.client-brand small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.client-nav{display:flex;flex-direction:column;gap:8px}.client-nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:15px;font-weight:900;color:#344054}.client-nav a:hover{background:#f8fafc}.client-nav a.active{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;box-shadow:0 14px 25px rgba(217,4,4,.22)}.client-nav span{width:30px;height:30px;border-radius:11px;background:#f3f4f6;color:#111827;display:grid;place-items:center;flex:0 0 auto}.client-nav a.active span{background:rgba(255,255,255,.18);color:#fff}.client-nav svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.client-main{padding:24px;min-width:0}.client-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.client-topbar h1{margin:0;font-size:clamp(25px,3vw,38px);letter-spacing:-.04em}.client-topbar p{margin:4px 0 0;color:var(--muted)}.client-user-pill{background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 13px;box-shadow:0 10px 24px rgba(15,23,42,.05)}.client-user-pill b,.client-user-pill small{display:block}.client-user-pill small{color:var(--muted);font-size:11px}.client-portal-header{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:18px;max-height:240px}.client-portal-header img{width:100%;height:100%;max-height:240px;object-fit:cover;object-position:center;display:block}.client-welcome-card{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(135deg,#fff,#fff7f7);border:1px solid #fecaca;border-radius:26px;box-shadow:var(--shadow);padding:22px;margin-bottom:18px}.client-welcome-card h2{margin:0;font-size:26px;letter-spacing:-.03em}.client-welcome-card p{margin:8px 0 0;color:var(--muted)}.client-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.client-kpi-card{display:block;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:18px;transition:.18s ease}.client-kpi-card:hover{transform:translateY(-2px);border-color:#fecaca}.client-kpi-card b{display:block;font-size:38px;letter-spacing:-.06em;line-height:1;color:#111827}.client-kpi-card span{display:block;margin-top:8px;color:var(--muted);font-weight:850}.client-kpi-card.warn{border-left:5px solid #f59e0b}.client-kpi-card.ok{border-left:5px solid #16a34a}.client-two-cols{display:grid;grid-template-columns:1.4fr .8fr;gap:16px}.client-list{display:flex;flex-direction:column;gap:10px}.client-list-item{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:#fbfcff;border:1px solid #edf0f5;border-radius:16px;padding:12px}.client-list-item b,.client-list-item span{display:block}.client-list-item span{color:var(--muted);font-size:13px;margin-top:2px}.client-list-item p{margin:6px 0 0;color:#344054}.client-device-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}.client-device-list div{display:flex;justify-content:space-between;gap:10px;background:#f8fafc;border:1px solid #edf0f5;border-radius:14px;padding:10px 12px}.client-device-list b{color:var(--red)}.client-incidents-list{display:flex;flex-direction:column;gap:12px;margin-top:16px}.client-incident-card{box-shadow:0 10px 30px rgba(15,23,42,.06)}.client-incident-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.client-incident-top h2{margin:0;font-size:20px}.client-incident-top p{margin:5px 0 0}.client-detail-incident{border-left:5px solid var(--red)}.incident-photo-box{margin:10px 0 18px;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#f8fafc;max-width:520px}.incident-photo-box img{display:block;max-width:100%;height:auto}.client-form-card{max-width:980px}.client-login-card .login-brand img{width:68px;height:68px}.client-login-page .login-card{border-top:5px solid var(--red)}
@media(max-width:1050px){.client-portal-shell{grid-template-columns:1fr}.client-sidebar{position:fixed;left:-290px;top:0;bottom:0;width:270px;transition:left .2s ease;box-shadow:0 20px 60px rgba(15,23,42,.18)}body.client-menu-open .client-sidebar{left:0}.client-main{padding:18px}.client-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.client-two-cols{grid-template-columns:1fr}.client-topbar{align-items:flex-start}.client-user-pill{display:none}}
@media(max-width:640px){.client-main{padding:14px}.client-topbar{gap:10px}.client-welcome-card{flex-direction:column;align-items:stretch;padding:18px;border-radius:22px}.client-kpi-grid{grid-template-columns:1fr}.client-kpi-card{padding:16px}.client-portal-header{border-radius:18px;max-height:150px}.client-portal-header img{max-height:150px;object-fit:contain;background:#fff}.client-incident-top{flex-direction:column}.client-list-item{flex-direction:column}.client-login-card .login-brand img{width:58px;height:58px}.client-form-card .form-grid{grid-template-columns:1fr}}

/* v3.0 cambio 015 - Área cliente: hero superior mejor encajado */
.client-page-hero{margin-bottom:18px}
.client-topbar-hero{
  display:grid;
  grid-template-columns:auto 1fr;
  align-items:start;
  gap:18px;
  margin-bottom:14px;
}
.client-topbar-start{display:flex;align-items:flex-start}
.client-topbar-content{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  min-width:0;
}
.client-hero-copy{min-width:0}
.client-hero-copy h1{margin:0;font-size:clamp(28px,3.2vw,42px);letter-spacing:-.04em;line-height:1.05}
.client-hero-copy p{margin:6px 0 0;color:var(--muted);font-size:14px}
.client-user-pill{
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  text-align:right;
  padding:11px 15px;
}
.client-portal-header{
  background:#fff;
  border:1px solid var(--line);
  border-radius:24px;
  box-shadow:var(--shadow);
  overflow:hidden;
  margin-bottom:0;
  aspect-ratio:2048/682;
  max-height:none;
}
.client-portal-header img{
  width:100%;
  height:100%;
  max-height:none;
  object-fit:contain;
  object-position:center center;
  display:block;
  background:#fff;
}

@media(max-width:1050px){
  .client-topbar-hero{grid-template-columns:1fr;gap:12px}
  .client-topbar-start{order:0}
  .client-topbar-content{order:1;flex-direction:column;align-items:flex-start}
  .client-user-pill{display:flex;align-items:flex-start;text-align:left}
  .client-portal-header{aspect-ratio:1600/500}
}

@media(max-width:640px){
  .client-page-hero{margin-bottom:14px}
  .client-topbar-hero{gap:10px;margin-bottom:10px}
  .client-topbar-content{gap:10px}
  .client-hero-copy h1{font-size:28px}
  .client-hero-copy p{font-size:13px}
  .client-user-pill{padding:10px 12px;border-radius:18px}
  .client-portal-header{border-radius:18px;aspect-ratio:1600/500}
  .client-portal-header img{object-fit:contain;background:#fff}
}

/* v3.0 cambio 016 - Área cliente: cabecera sin hueco superior */
.client-main{padding-top:16px}
.client-page-hero-overlay{margin-bottom:18px}
.client-portal-header-overlay{
  position:relative;
  aspect-ratio:2048/682;
  min-height:220px;
  max-height:none;
  overflow:hidden;
}
.client-portal-header-overlay img{
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center center;
  background:#fff;
}
.client-hero-menu{
  position:absolute;
  top:18px;
  left:18px;
  z-index:3;
}
.client-hero-user{
  position:absolute;
  top:18px;
  right:18px;
  z-index:3;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  box-shadow:0 14px 30px rgba(15,23,42,.10);
}
.client-hero-section-card{
  position:absolute;
  right:22px;
  bottom:20px;
  z-index:3;
  max-width:min(520px,42%);
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.75);
  border-radius:22px;
  padding:16px 18px;
  box-shadow:0 18px 34px rgba(15,23,42,.10);
  text-align:right;
}
.client-hero-section-card h1{
  margin:0;
  font-size:clamp(28px,3.1vw,42px);
  letter-spacing:-.04em;
  line-height:1.02;
}
.client-hero-section-card p{
  margin:6px 0 0;
  color:var(--muted);
  font-size:14px;
  line-height:1.35;
}
.client-topbar-fallback{margin-bottom:16px}

@media(max-width:1050px){
  .client-main{padding-top:14px}
  .client-portal-header-overlay{aspect-ratio:1600/500;min-height:180px}
  .client-hero-section-card{max-width:56%;right:16px;bottom:16px;padding:14px 16px}
}

@media(max-width:760px){
  .client-portal-header-overlay{aspect-ratio:1600/620;min-height:200px}
  .client-hero-user{top:12px;right:12px;padding:9px 12px;border-radius:16px}
  .client-hero-menu{top:12px;left:12px}
  .client-hero-section-card{
    left:12px;
    right:12px;
    bottom:12px;
    max-width:none;
    text-align:left;
    padding:12px 14px;
    border-radius:18px;
  }
  .client-hero-section-card h1{font-size:26px}
  .client-hero-section-card p{font-size:13px}
}

@media(max-width:640px){
  .client-main{padding:12px}
  .client-page-hero-overlay{margin-bottom:14px}
  .client-portal-header-overlay{aspect-ratio:1600/760;min-height:220px;border-radius:18px}
  .client-portal-header-overlay img{object-fit:contain}
  .client-hero-user{font-size:13px;max-width:calc(100% - 88px)}
  .client-hero-user small{font-size:10px}
  .client-hero-section-card{bottom:10px;left:10px;right:10px}
}

/* v3.0 cambio 017 - Área cliente: formulario nueva incidencia ancho completo en PC */
.client-form-card{
  width:100%;
  max-width:none;
}
@media(min-width:1100px){
  .client-form-card{
    padding:26px 28px;
  }
  .client-form-card form{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:18px;
    row-gap:0;
    align-items:start;
  }
  .client-form-card form > label,
  .client-form-card form > input,
  .client-form-card form > textarea,
  .client-form-card form > select,
  .client-form-card form > .hint,
  .client-form-card form > .actions{
    grid-column:1 / -1;
  }
  .client-form-card form > .form-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px 18px;
    grid-column:1 / -1;
  }
  .client-form-card textarea{
    min-height:150px;
  }
  .client-form-card .actions{
    justify-content:flex-end;
  }
}
@media(max-width:1099px){
  .client-form-card{
    max-width:none;
  }
}

/* v3.0 cambio 018 - Cursos académicos */
.client-course-filter-card{margin-bottom:18px;padding:14px 18px}
.client-course-filter-card .toolbar{align-items:center;margin-bottom:0}
.client-course-filter-card select{max-width:260px}
@media(max-width:640px){.client-course-filter-card .toolbar{flex-direction:column;align-items:stretch}.client-course-filter-card select,.client-course-filter-card .btn{max-width:none;width:100%}}

/* v3.0 cambio 019 - Simplificar edición de incidencias */
.photo-current-card{
  margin:14px 0;
  padding:15px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fbfcff;
}
.photo-current-card b{display:block;margin-bottom:4px}
.photo-current-card .hint{margin:0 0 10px}
.photo-current-card .incident-photo-box.compact{margin:10px 0 0;max-width:360px}
.photo-current-card .incident-photo-box.compact img{max-height:220px;object-fit:contain;background:#fff}
.resolution-box.internal-note{border-left-color:#64748b;background:#f8fafc}
.resolution-box.legacy-note{border-left-color:#a855f7;background:#faf5ff}
@media(max-width:640px){
  .photo-current-card{padding:12px;border-radius:16px}
  .photo-current-card .incident-photo-box.compact{max-width:100%}
}

/* v3.0 cambio 020 - Menú contextual y retorno al listado */
.row-actions{position:relative;text-align:center;min-width:70px}
.action-menu{position:relative;display:inline-flex;justify-content:center;align-items:center}
.action-menu-toggle{min-width:38px;height:34px;padding:0 11px;font-size:22px;line-height:1;border-radius:999px}
.action-menu-panel{
  position:absolute;
  right:0;
  top:calc(100% + 8px);
  z-index:30;
  display:none;
  min-width:210px;
  padding:8px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:16px;
  box-shadow:0 18px 45px rgba(15,23,42,.18);
  text-align:left;
}
.action-menu.open .action-menu-panel{display:block}
.action-menu-panel a,
.action-menu-panel .danger-link{
  display:flex;
  width:100%;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  padding:10px 12px;
  border-radius:12px;
  background:transparent;
  color:#344054;
  font-size:14px;
  font-weight:850;
  text-align:left;
  box-shadow:none;
}
.action-menu-panel a:hover,
.action-menu-panel .danger-link:hover{background:#f8fafc}
.action-menu-panel form{margin:4px 0 0;padding-top:4px;border-top:1px solid #edf0f5}
.action-menu-panel .danger-link{color:#991b1b;border:0;cursor:pointer}
.detail-only-grid{grid-template-columns:1fr!important}

.modal-card-wide>.incident-summary-strip:not(.incident-summary-strip-modern),
.detail-only-grid{display:none!important}
.incident-summary-strip-modern{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:18px}
.incident-summary-strip-modern>div{background:#fff;border-color:#e5eaf2;box-shadow:0 10px 24px rgba(15,23,42,.04)}
.incident-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:16px;align-items:start}
.incident-detail-main,.incident-detail-side{display:grid;gap:14px}
.incident-info-card,.incident-detail-section{background:#fff;border:1px solid #e5eaf2;border-radius:18px;padding:16px;box-shadow:0 14px 30px rgba(15,23,42,.04)}
.incident-section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.04em;color:#657289}
.incident-section-title b{font-size:13px;color:#0f172a}
.incident-description{font-size:15px;line-height:1.6;margin:0;color:#172033}
.incident-note-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.incident-note-grid .resolution-box{margin:0;border-radius:16px;border:1px solid #e6edf6;background:#f8fafc;color:#172033}
.incident-note-grid .public-note{background:#f0fdf4;border-color:#bbf7d0}
.incident-note-grid .technical-note{background:#eff6ff;border-color:#bfdbfe}
.incident-note-grid .internal-note{background:#fff7ed;border-color:#fed7aa}
.incident-note-grid .legacy-note{background:#f8fafc;border-color:#d7dee9}
.incident-data-list{display:grid;gap:10px;margin:0}
.incident-data-list div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;align-items:start;border-top:1px solid #eef2f7;padding-top:10px}
.incident-data-list div:first-child{border-top:0;padding-top:0}
.incident-data-list dt{font-size:12px;font-weight:850;color:#657289}
.incident-data-list dd{margin:0;font-weight:900;color:#0f172a;overflow-wrap:anywhere}
.incident-detail-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.incident-detail-section{margin-top:14px}
.incident-detail-section .modal-timeline{max-height:420px}
@media(max-width:1000px){
  .incident-summary-strip-modern{grid-template-columns:repeat(2,minmax(0,1fr))}
  .incident-detail-layout{grid-template-columns:1fr}
  .incident-note-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .incident-summary-strip-modern{grid-template-columns:1fr}
  .incident-data-list div{grid-template-columns:1fr;gap:4px}
  .incident-detail-actions .btn{width:100%;justify-content:center}
}
.modal-card-action-only{max-width:760px}
.modal-card-action-only textarea{min-height:150px}
@media(max-width:780px){
  .action-menu-panel{right:auto;left:50%;transform:translateX(-50%);min-width:220px}
}

/* v3.0 cambio 021 - Estados y prioridades visuales en listado de incidencias */
.incidents-status-table{min-width:980px}
.incidents-status-table tbody tr.incident-row{transition:background .15s ease, box-shadow .15s ease}
.incidents-status-table tbody tr.incident-row td{border-bottom-color:rgba(15,23,42,.06)}
.incident-row.status-nueva{background:#eff6ff}
.incident-row.status-abierta{background:#fffbeb}
.incident-row.status-en-revision{background:#f5f3ff}
.incident-row.status-pendiente-material{background:#fff7ed}
.incident-row.status-pendiente-cliente-centro{background:#fdf2f8}
.incident-row.status-resuelta{background:#ecfdf3}
.incident-row.status-cerrada{background:#f8fafc}
.incident-row.status-cancelada{background:#f1f5f9}
.incident-row.status-nueva:hover{background:#dbeafe}
.incident-row.status-abierta:hover{background:#fef3c7}
.incident-row.status-en-revision:hover{background:#ede9fe}
.incident-row.status-pendiente-material:hover{background:#ffedd5}
.incident-row.status-pendiente-cliente-centro:hover{background:#fce7f3}
.incident-row.status-resuelta:hover{background:#dcfce7}
.incident-row.status-cerrada:hover{background:#f1f5f9}
.incident-row.status-cancelada:hover{background:#e2e8f0}
.incident-row.row-highlight{outline:3px solid #dc2626!important;box-shadow:inset 0 0 0 9999px rgba(255,247,247,.55)}
.priority-col{width:112px;white-space:nowrap;text-align:center}
.priority-marker{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:7px 10px;font-weight:950;font-size:12px;border:1px solid transparent;background:#fff;box-shadow:0 8px 18px rgba(15,23,42,.07)}
.priority-ico{display:grid;place-items:center;width:22px;height:22px;border-radius:999px;color:#fff;font-size:13px;line-height:1;font-weight:950}
.priority-baja{color:#166534;border-color:#bbf7d0;background:#f0fdf4}.priority-baja .priority-ico{background:#16a34a}
.priority-media{color:#1d4ed8;border-color:#bfdbfe;background:#eff6ff}.priority-media .priority-ico{background:#2563eb}
.priority-alta{color:#9a3412;border-color:#fed7aa;background:#fff7ed}.priority-alta .priority-ico{background:#f97316}
.priority-critica{color:#991b1b;border-color:#fecaca;background:#fef2f2}.priority-critica .priority-ico{background:#dc2626}
.status-cell{min-width:180px}
.quick-status-inline{display:inline-block;margin:0;width:100%}
.quick-status-inline select.status-select{appearance:none;-webkit-appearance:none;width:100%;max-width:190px;border-radius:999px;padding:8px 34px 8px 12px;font-weight:950;font-size:12px;cursor:pointer;background-repeat:no-repeat;background-position:right 12px center;background-size:10px;border:1px solid transparent;box-shadow:0 8px 18px rgba(15,23,42,.06);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 16px) 53%,calc(100% - 11px) 53%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.status-select.status-nueva{background-color:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
.status-select.status-abierta{background-color:#fef3c7;color:#92400e;border-color:#fde68a}
.status-select.status-en-revision{background-color:#ede9fe;color:#6d28d9;border-color:#ddd6fe}
.status-select.status-pendiente-material{background-color:#ffedd5;color:#9a3412;border-color:#fed7aa}
.status-select.status-pendiente-cliente-centro{background-color:#fce7f3;color:#9d174d;border-color:#fbcfe8}
.status-select.status-resuelta{background-color:#dcfce7;color:#166534;border-color:#bbf7d0}
.status-select.status-cerrada{background-color:#e5e7eb;color:#374151;border-color:#d1d5db}
.status-select.status-cancelada{background-color:#cbd5e1;color:#334155;border-color:#94a3b8}
.status-select option{background:#fff;color:#111827;font-weight:700}
.quick-status-inline select.status-select:focus{outline:none;box-shadow:0 0 0 4px rgba(217,4,4,.10),0 8px 18px rgba(15,23,42,.06)}

@media(max-width:900px){
  .incidents-status-table{min-width:900px}
  .priority-col{width:88px}
  .priority-marker span:last-child{display:none}
  .priority-marker{padding:6px}
  .status-cell{min-width:150px}
  .quick-status-inline select.status-select{max-width:160px}
}

/* v3.0 cambio 022 - Recarga visual de filtros en incidencias */
body.incident-filter-reloading .incidents-table,
body.incident-filter-reloading .view-counter{
  opacity:.55;
  transition:opacity .12s ease;
}
body.incident-filter-reloading .incident-toolbar::after{
  content:'Actualizando vista...';
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  padding:9px 12px;
  background:#fff7ed;
  color:#9a3412;
  border:1px solid #fed7aa;
  font-weight:900;
  font-size:12px;
}

/* v3.0 cambio 023 - Tareas tipo bloc de notas y lista única */
.tasks-notebook-card{padding:22px}
.task-notebook-filters{align-items:center}
.task-notebook-filters input[name="q"]{min-width:280px;flex:1}
.notebook-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.notebook-item{
  position:relative;
  display:grid;
  grid-template-columns:36px 1fr auto;
  gap:12px;
  align-items:flex-start;
  background:#fffdf7;
  border:1px solid #f1e7c7;
  border-left:6px solid #f59e0b;
  border-radius:18px;
  padding:14px;
  box-shadow:0 8px 22px rgba(15,23,42,.045);
}
.notebook-item.kind-recordatorio{background:#f8fbff;border-color:#dbeafe;border-left-color:#2563eb}
.notebook-item.is-due{border-left-color:#dc2626;background:#fff7f7;border-color:#fecaca}
.notebook-item.is-done{background:#f7f7f8;border-color:#e5e7eb;border-left-color:#9ca3af;opacity:.82}
.notebook-check{
  width:30px;height:30px;border-radius:10px;display:grid;place-items:center;
  background:#fff;border:1px solid rgba(15,23,42,.08);font-weight:950;color:#334155;
}
.notebook-item.is-done .notebook-check{background:#dcfce7;color:#166534;border-color:#bbf7d0}
.notebook-mainline{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.notebook-mainline h3{margin:2px 0 0;font-size:17px;line-height:1.25;letter-spacing:-.02em}
.notebook-item.is-done .notebook-mainline h3{text-decoration:line-through;color:#6b7280}
.notebook-badges{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.notebook-desc{margin:7px 0 0;color:#344054;line-height:1.45}
.notebook-item.is-done .notebook-desc{text-decoration:line-through;color:#6b7280}
.notebook-meta{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:9px;color:#667085;font-size:12px;font-weight:750}
.notebook-meta span{display:inline-flex;align-items:center;gap:4px}
.completion-note{margin-top:10px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:9px 10px;color:#374151;font-size:13px;line-height:1.45}
.notebook-actions{align-self:start}
.row-menu-wrap{position:relative;display:inline-flex;justify-content:flex-end}
.row-menu-button{
  width:36px;height:36px;border-radius:12px;border:1px solid #e5e7eb!important;background:#fff!important;color:#111827!important;
  font-size:22px;line-height:1;padding:0!important;box-shadow:0 8px 18px rgba(15,23,42,.06)
}
.row-menu{display:none;position:absolute;right:0;top:42px;min-width:190px;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 18px 44px rgba(15,23,42,.16);padding:7px;z-index:25}
.row-menu-wrap.open .row-menu{display:block}
.row-menu button,.row-menu a{
  width:100%;display:flex;align-items:center;text-align:left;justify-content:flex-start;border-radius:11px!important;background:#fff!important;color:#111827!important;
  padding:9px 10px!important;font-size:13px;font-weight:850;box-shadow:none!important;border:0!important
}
.row-menu button:hover,.row-menu a:hover{background:#f8fafc!important}
.row-menu form{margin:0}.row-menu button.danger{color:#991b1b!important}.row-menu button.danger:hover{background:#fee2e2!important}
.empty-notebook{padding:24px;text-align:center;background:#fff;border:1px dashed #d1d5db;border-radius:18px}
.task-detail-body h3{margin:14px 0 6px}.task-detail-body p{margin:0;color:#344054;line-height:1.55}
@media(max-width:900px){.task-notebook-filters input[name="q"]{min-width:0}.notebook-mainline{flex-direction:column}.notebook-badges{justify-content:flex-start}.tasks-page-head{flex-direction:column;align-items:flex-start}.tasks-page-head .actions{width:100%}.tasks-page-head .actions .btn,.tasks-page-head .actions button{flex:1}}
@media(max-width:640px){.tasks-notebook-card{padding:14px}.notebook-item{grid-template-columns:30px 1fr auto;gap:9px;padding:12px;border-radius:16px}.notebook-check{width:26px;height:26px}.notebook-mainline h3{font-size:16px}.notebook-meta{flex-direction:column;gap:4px}.row-menu{right:-4px;min-width:176px}.task-notebook-filters{display:grid;grid-template-columns:1fr}.task-notebook-filters input,.task-notebook-filters select{max-width:none;width:100%}}

/* v3.0 cambio 024 - cabeceras más panorámicas para área cliente y formulario QR
   Estándar recomendado:
   - Área cliente/dashboard: 1920x480 px
   - Formulario QR: 1600x400 px o 1920x450 px
*/
.client-portal-header-overlay{
  aspect-ratio:1920/480!important;
  min-height:0!important;
  max-height:320px!important;
}
.client-portal-header-overlay img{
  object-fit:contain!important;
  background:#fff!important;
}
.client-hero-menu{top:14px!important;left:14px!important}
.client-hero-user{top:14px!important;right:14px!important}
.client-hero-section-card{
  right:18px!important;
  bottom:14px!important;
  padding:13px 16px!important;
  border-radius:19px!important;
}
.client-hero-section-card h1{font-size:clamp(25px,2.45vw,34px)!important}
.client-hero-section-card p{font-size:13px!important}

/* Formulario público QR: cabecera más baja y útil */
body.public-form .client-header-public-wrap,
.public-form .client-header-public-wrap,
.client-header-public-wrap,
.qr-client-header,
.public-header-image{
  aspect-ratio:1920/450!important;
  max-height:300px!important;
}
body.public-form .client-header-public-wrap img,
body.public-form img.client-header-public,
.public-form .client-header-public-wrap img,
.client-header-public,
.client-header-public-wrap img,
.qr-client-header img,
.public-header-image img{
  width:100%!important;
  height:100%!important;
  max-height:300px!important;
  object-fit:contain!important;
  object-position:center center!important;
  background:#fff!important;
}

/* Preview de cabecera en clientes/centros, también más panorámica */
.client-header-edit-preview,
.client-header-preview-wrap,
.header-preview{
  aspect-ratio:1920/480!important;
  max-height:220px!important;
}
.client-header-edit-preview img,
.client-header-preview-wrap img,
.header-preview img{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  background:#fff!important;
}

@media(max-width:1200px){
  .client-portal-header-overlay{max-height:280px!important}
}
@media(max-width:760px){
  .client-portal-header-overlay{
    aspect-ratio:16/5.4!important;
    max-height:230px!important;
  }
  .client-hero-section-card{
    left:12px!important;
    right:12px!important;
    bottom:10px!important;
    padding:11px 13px!important;
    text-align:left!important;
  }
  .client-hero-section-card h1{font-size:23px!important}
  .client-hero-section-card p{font-size:12px!important}
  body.public-form .client-header-public-wrap,
  .public-form .client-header-public-wrap,
  .client-header-public-wrap,
  .qr-client-header,
  .public-header-image{
    aspect-ratio:16/5.2!important;
    max-height:210px!important;
  }
  body.public-form .client-header-public-wrap img,
  body.public-form img.client-header-public,
  .public-form .client-header-public-wrap img,
  .client-header-public,
  .client-header-public-wrap img,
  .qr-client-header img,
  .public-header-image img{
    max-height:210px!important;
  }
}
@media(max-width:520px){
  .client-portal-header-overlay{
    aspect-ratio:16/6.4!important;
    max-height:210px!important;
  }
  .client-hero-user{top:10px!important;right:10px!important;max-width:calc(100% - 76px)!important}
  .client-hero-menu{top:10px!important;left:10px!important}
  body.public-form .client-header-public-wrap,
  .public-form .client-header-public-wrap,
  .client-header-public-wrap,
  .qr-client-header,
  .public-header-image{
    aspect-ratio:16/6!important;
    max-height:190px!important;
  }
}

/* v3.0 cambio 028 - selector de curso en menú lateral del área cliente */
.client-sidebar{
    display:flex;
    flex-direction:column;
}

.client-nav{
    flex:1 1 auto;
}

.client-sidebar-course{
    margin-top:auto;
    padding:12px;
    border-radius:18px;
    background:linear-gradient(180deg,#fff,#fff7f7);
    border:1px solid #fee2e2;
    box-shadow:0 10px 24px rgba(217,4,4,.08);
}

.client-sidebar-course label{
    margin:0 0 7px;
    display:block;
    font-size:12px;
    font-weight:950;
    color:#7f1d1d;
    text-transform:uppercase;
    letter-spacing:.04em;
}

.client-sidebar-course select{
    width:100%;
    min-height:38px;
    border-radius:13px;
    font-size:13px;
    font-weight:850;
    padding:8px 10px;
}

.client-sidebar-course small{
    display:block;
    margin-top:7px;
    color:var(--muted);
    font-size:11px;
    line-height:1.25;
}

.client-course-filter-card{
    display:none!important;
}

@media(max-width:1050px){
    .client-sidebar-course{
        margin-top:18px;
    }
}

/* v3.0 cambio 029 - Curso académico separado del menú lateral */
.client-sidebar {
    display: flex;
    flex-direction: column;
}

.client-nav {
    flex: 0 0 auto;
}

.client-sidebar-course {
    margin-top: auto !important;
    margin-bottom: 4px;
    padding: 14px 13px 13px;
    border-radius: 20px;
    background:
        radial-gradient(circle at top left, rgba(217,4,4,.12), transparent 42%),
        linear-gradient(180deg, #ffffff, #fff8f8);
    border: 1px solid #fecaca;
    box-shadow: 0 14px 30px rgba(217,4,4,.10);
    position: relative;
}

.client-sidebar-course::before {
    content: "";
    display: block;
    height: 1px;
    background: #e5e7eb;
    position: absolute;
    left: 0;
    right: 0;
    top: -22px;
}

.client-sidebar-course::after {
    content: "Datos mostrados";
    display: inline-flex;
    align-items: center;
    gap: 6px;
    position: absolute;
    top: -38px;
    left: 2px;
    color: #98a2b3;
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.client-sidebar-course label {
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 0 0 8px;
    font-size: 12px;
    font-weight: 950;
    color: #991b1b;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.client-sidebar-course label::before {
    content: "🎓";
    font-size: 15px;
    line-height: 1;
}

.client-sidebar-course select {
    width: 100%;
    min-height: 40px;
    border-radius: 14px;
    border-color: #fecaca;
    background: #fff;
    font-size: 13px;
    font-weight: 900;
    padding: 8px 10px;
}

.client-sidebar-course small {
    display: block;
    margin-top: 8px;
    color: #7f1d1d;
    background: rgba(254,226,226,.55);
    border-radius: 12px;
    padding: 7px 9px;
    font-size: 11px;
    line-height: 1.25;
    font-weight: 750;
}

@media(max-width:1050px) {
    .client-sidebar-course {
        margin-top: 34px !important;
    }

    .client-sidebar-course::before {
        top: -18px;
    }

    .client-sidebar-course::after {
        top: -34px;
    }
}


/* v3.0 cambio 030 - aviso tipo de cliente */
.period-hint{font-size:12px;color:var(--muted);line-height:1.4;margin-top:6px}.client-sidebar-course label::before{content:'📊';}


/* v3.0 cambio 031 - avisos clientes y campana de notificaciones */
.client-hero-actions,
.client-topbar-actions{
    display:flex;
    align-items:center;
    gap:10px;
    position:absolute;
    top:18px;
    right:18px;
    z-index:8;
}

.client-topbar-actions{
    position:static;
}

.client-hero-actions .client-user-pill{
    position:static!important;
    top:auto!important;
    right:auto!important;
}

.client-alert-bell{
    width:44px;
    height:44px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:rgba(255,255,255,.92);
    border:1px solid rgba(255,255,255,.75);
    box-shadow:0 12px 30px rgba(15,23,42,.18);
    color:#344054;
    position:relative;
    backdrop-filter:blur(8px);
}

.client-alert-bell svg{
    width:21px;
    height:21px;
    fill:none;
    stroke:currentColor;
    stroke-width:2.3;
    stroke-linecap:round;
    stroke-linejoin:round;
}

.client-alert-bell.has-unread{
    background:linear-gradient(135deg,#ef4444,#b91c1c);
    color:#fff;
    animation:clientAlertPulse 1.35s infinite;
}

.client-alert-count{
    position:absolute;
    top:-7px;
    right:-7px;
    min-width:22px;
    height:22px;
    padding:0 6px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#fff;
    color:#b91c1c;
    font-size:11px;
    font-weight:950;
    border:2px solid #ef4444;
}

@keyframes clientAlertPulse{
    0%{box-shadow:0 0 0 0 rgba(239,68,68,.45),0 12px 30px rgba(15,23,42,.18)}
    70%{box-shadow:0 0 0 12px rgba(239,68,68,0),0 12px 30px rgba(15,23,42,.18)}
    100%{box-shadow:0 0 0 0 rgba(239,68,68,0),0 12px 30px rgba(15,23,42,.18)}
}

.client-dashboard-notices{
    display:grid;
    gap:12px;
    margin-bottom:16px;
}

.client-dashboard-notice-card{
    display:flex;
    justify-content:space-between;
    gap:14px;
    align-items:center;
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid #ef4444;
    border-radius:22px;
    padding:16px 18px;
    box-shadow:0 14px 30px rgba(217,4,4,.08);
}

.client-dashboard-notice-card h2{
    margin:4px 0 4px;
    font-size:18px;
}

.client-dashboard-notice-card p{
    margin:0;
    color:var(--muted);
}

.client-notices-head .card-head{
    align-items:center;
}

.notice-filter-tabs{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}

.notice-filter-tabs a{
    border:1px solid var(--line);
    border-radius:999px;
    padding:9px 13px;
    font-weight:900;
    background:#fff;
    color:#344054;
}

.notice-filter-tabs a.active{
    background:var(--red);
    color:#fff;
    border-color:var(--red);
}

.client-notices-list{
    display:grid;
    gap:14px;
}

.client-notice-card{
    border-left:6px solid #d0d5dd;
}

.client-notice-card.is-unread{
    border-left-color:#ef4444;
    background:linear-gradient(180deg,#fff,#fff8f8);
}

.client-notice-card.priority-urgente{
    border-left-color:#b91c1c;
}

.client-notice-card.priority-importante{
    border-left-color:#f97316;
}

.client-notice-top{
    display:flex;
    justify-content:space-between;
    gap:14px;
    align-items:flex-start;
    margin-bottom:12px;
}

.client-notice-priority{
    display:inline-flex;
    align-items:center;
    gap:6px;
    border-radius:999px;
    padding:5px 9px;
    background:#fee2e2;
    color:#991b1b;
    font-size:11px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.04em;
}

.client-notice-new{
    display:inline-flex;
    align-items:center;
    border-radius:999px;
    background:#ef4444;
    color:#fff;
    padding:7px 10px;
    font-size:12px;
    font-weight:950;
}

.client-notice-body{
    line-height:1.65;
    color:#344054;
    margin-bottom:14px;
}

.actions.compact{
    gap:6px;
    flex-wrap:nowrap;
}

.form-span-2{
    grid-column:1/-1;
}

@media(max-width:720px){
    .client-hero-actions{
        top:12px;
        right:12px;
    }
    .client-alert-bell{
        width:40px;
        height:40px;
    }
    .client-dashboard-notice-card,
    .client-notice-top{
        flex-direction:column;
        align-items:flex-start;
    }
}


/* v3.0 cambio 033 - campana visible y listado tipo centro de notificaciones */
.client-portal-header,
.client-portal-header-overlay{
    position:relative!important;
}

.client-hero-actions{
    position:absolute!important;
    top:18px!important;
    right:18px!important;
    z-index:50!important;
    display:flex!important;
    align-items:center!important;
    gap:10px!important;
}

.client-topbar-actions{
    display:flex!important;
    align-items:center!important;
    gap:10px!important;
    margin-left:auto!important;
}

.client-hero-actions .client-user-pill,
.client-topbar-actions .client-user-pill{
    position:static!important;
    top:auto!important;
    right:auto!important;
}

.client-alert-bell{
    width:46px!important;
    height:46px!important;
    min-width:46px!important;
    border-radius:999px!important;
    display:grid!important;
    place-items:center!important;
    position:relative!important;
    z-index:60!important;
    text-decoration:none!important;
    box-shadow:0 14px 32px rgba(15,23,42,.22)!important;
    border:2px solid rgba(255,255,255,.95)!important;
    backdrop-filter:blur(10px);
}

.client-alert-bell.no-unread{
    background:rgba(255,255,255,.94)!important;
    color:#b42318!important;
}

.client-alert-bell.has-unread{
    background:linear-gradient(135deg,#ef4444,#b91c1c)!important;
    color:#fff!important;
    animation:clientAlertPulse 1.25s infinite!important;
}

.client-alert-bell-icon{
    display:grid!important;
    place-items:center!important;
}

.client-alert-bell svg{
    width:22px!important;
    height:22px!important;
    fill:none!important;
    stroke:currentColor!important;
    stroke-width:2.5!important;
    stroke-linecap:round!important;
    stroke-linejoin:round!important;
}

.client-alert-count{
    position:absolute!important;
    top:-8px!important;
    right:-8px!important;
    min-width:24px!important;
    height:24px!important;
    padding:0 7px!important;
    border-radius:999px!important;
    display:grid!important;
    place-items:center!important;
    background:#fff!important;
    color:#b91c1c!important;
    font-size:11px!important;
    font-weight:950!important;
    border:2px solid #ef4444!important;
    box-shadow:0 8px 16px rgba(185,28,28,.22)!important;
}

@keyframes clientAlertPulse{
    0%{box-shadow:0 0 0 0 rgba(239,68,68,.45),0 14px 32px rgba(15,23,42,.22)}
    70%{box-shadow:0 0 0 12px rgba(239,68,68,0),0 14px 32px rgba(15,23,42,.22)}
    100%{box-shadow:0 0 0 0 rgba(239,68,68,0),0 14px 32px rgba(15,23,42,.22)}
}

.notice-center-head{
    display:grid;
    grid-template-columns:minmax(0,1.35fr) minmax(300px,.85fr);
    gap:16px;
    margin-bottom:16px;
}

.notice-center-title-card,
.notice-summary-grid,
.notice-inbox-sidebar,
.notice-row,
.notice-empty-state{
    background:#fff;
    border:1px solid var(--line);
    border-radius:24px;
    box-shadow:var(--shadow);
}

.notice-center-title-card{
    padding:20px;
    display:flex;
    align-items:center;
    gap:16px;
    background:linear-gradient(135deg,#fff,#fff7f7);
}

.notice-center-title-card h2{
    margin:0 0 4px;
    font-size:24px;
    letter-spacing:-.03em;
}

.notice-center-title-card p{
    margin:0;
    color:var(--muted);
    line-height:1.45;
}

.notice-center-icon{
    width:54px;
    height:54px;
    border-radius:18px;
    display:grid;
    place-items:center;
    background:linear-gradient(135deg,var(--red),#ef4444);
    color:#fff;
    box-shadow:0 14px 28px rgba(217,4,4,.22);
    flex:0 0 auto;
}

.notice-center-icon svg{
    width:27px;
    height:27px;
    fill:none;
    stroke:currentColor;
    stroke-width:2.3;
    stroke-linecap:round;
    stroke-linejoin:round;
}

.notice-summary-grid{
    padding:14px;
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:10px;
}

.notice-summary-grid div{
    border-radius:18px;
    background:#f8fafc;
    padding:13px 10px;
    text-align:center;
}

.notice-summary-grid b{
    display:block;
    font-size:26px;
    letter-spacing:-.04em;
}

.notice-summary-grid span{
    display:block;
    color:var(--muted);
    font-size:11px;
    font-weight:850;
}

.notice-inbox-layout{
    display:grid;
    grid-template-columns:280px minmax(0,1fr);
    gap:16px;
    align-items:start;
}

.notice-inbox-sidebar{
    padding:16px;
    position:sticky;
    top:16px;
}

.notice-search{
    display:grid;
    gap:8px;
    margin-bottom:14px;
}

.notice-tabs{
    display:grid;
    gap:8px;
}

.notice-tabs a{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    border-radius:16px;
    padding:11px 12px;
    font-weight:900;
    color:#344054;
    background:#f8fafc;
    border:1px solid transparent;
}

.notice-tabs a.active{
    background:#fee2e2;
    color:#991b1b;
    border-color:#fecaca;
}

.notice-tabs span{
    min-width:24px;
    height:24px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#fff;
    color:#991b1b;
    font-size:12px;
    font-weight:950;
}

.notice-mark-all{
    margin-top:14px;
}

.notice-inbox-list{
    display:grid;
    gap:10px;
}

.notice-row{
    display:grid;
    grid-template-columns:22px minmax(0,1fr);
    gap:13px;
    padding:16px;
    transition:transform .15s ease, box-shadow .15s ease;
}

.notice-row:hover{
    transform:translateY(-1px);
    box-shadow:0 18px 42px rgba(15,23,42,.10);
}

.notice-row.is-unread{
    background:linear-gradient(180deg,#fff,#fffafa);
    border-color:#fecaca;
}

.notice-row-marker{
    display:flex;
    justify-content:center;
    padding-top:9px;
}

.notice-dot{
    width:11px;
    height:11px;
    border-radius:999px;
    background:#d0d5dd;
}

.notice-row.is-unread .notice-dot{
    background:#ef4444;
    box-shadow:0 0 0 6px rgba(239,68,68,.12);
}

.notice-row.priority-urgente .notice-dot{background:#b91c1c}
.notice-row.priority-importante .notice-dot{background:#f97316}

.notice-row-top{
    display:flex;
    justify-content:space-between;
    gap:14px;
    align-items:flex-start;
}

.notice-row-title{
    min-width:0;
}

.notice-row-title h3{
    margin:8px 0 5px;
    font-size:18px;
    letter-spacing:-.02em;
}

.notice-row-top time{
    color:var(--muted);
    font-size:12px;
    font-weight:800;
    white-space:nowrap;
}

.notice-priority-pill,
.notice-unread-pill{
    display:inline-flex;
    align-items:center;
    border-radius:999px;
    padding:5px 9px;
    font-size:11px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.04em;
}

.notice-priority-pill{
    background:#f2f4f7;
    color:#344054;
}

.priority-urgente .notice-priority-pill{
    background:#fee2e2;
    color:#991b1b;
}

.priority-importante .notice-priority-pill{
    background:#ffedd5;
    color:#9a3412;
}

.notice-unread-pill{
    background:#ef4444;
    color:#fff;
    margin-left:5px;
}

.notice-row-main p{
    margin:0 0 8px;
    color:#475467;
    line-height:1.5;
}

.notice-row-meta{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    color:#667085;
    font-size:12px;
    font-weight:750;
}

.notice-row-meta span{
    background:#f8fafc;
    border-radius:999px;
    padding:5px 9px;
}

.notice-details{
    margin-top:10px;
    border-radius:16px;
    background:#f8fafc;
    overflow:hidden;
}

.notice-details summary{
    cursor:pointer;
    padding:10px 12px;
    font-weight:900;
    color:#344054;
}

.notice-details div{
    padding:0 12px 12px;
    line-height:1.65;
    color:#344054;
}

.notice-row-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:12px;
}

.notice-empty-state{
    padding:34px;
    text-align:center;
    display:grid;
    justify-items:center;
    gap:10px;
}

.notice-empty-state h2{
    margin:0;
}

.notice-empty-state p{
    margin:0;
    color:var(--muted);
}

@media(max-width:980px){
    .notice-center-head,
    .notice-inbox-layout{
        grid-template-columns:1fr;
    }
    .notice-inbox-sidebar{
        position:static;
    }
}

@media(max-width:640px){
    .client-hero-actions{
        top:12px!important;
        right:12px!important;
        gap:7px!important;
    }
    .client-alert-bell{
        width:40px!important;
        height:40px!important;
        min-width:40px!important;
    }
    .notice-summary-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .notice-row-top{
        flex-direction:column;
        gap:4px;
    }
    .notice-row-top time{
        white-space:normal;
    }
}


/* v3.1 cambio 038 - Panel interno Sistema */
.system-hero-card{border-left:5px solid var(--red)}
.system-version-box{
    background:#111827;
    color:#e5e7eb;
    border-radius:18px;
    padding:14px 16px;
    overflow:auto;
}
.system-version-box pre{
    margin:0;
    white-space:pre-wrap;
    font-size:12px;
    line-height:1.5;
}
.system-kpi-grid .kpi{
    min-height:112px;
}
.system-check-list,
.system-data-list,
.system-roadmap{
    display:grid;
    gap:10px;
}
.system-check{
    display:flex;
    gap:11px;
    align-items:flex-start;
    padding:12px;
    border-radius:16px;
    border:1px solid var(--line);
    background:#f8fafc;
}
.system-check>span{
    width:28px;
    height:28px;
    border-radius:999px;
    display:grid;
    place-items:center;
    font-weight:950;
    flex:0 0 auto;
}
.system-check.ok>span{
    background:#dcfce7;
    color:#166534;
}
.system-check.bad>span{
    background:#fee2e2;
    color:#991b1b;
}
.system-check b{
    display:block;
}
.system-check small{
    display:block;
    color:var(--muted);
    margin-top:2px;
}
.system-data-list div{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    padding:12px 13px;
    border-radius:16px;
    background:#f8fafc;
    border:1px solid var(--line);
}
.system-data-list span{
    color:#344054;
    font-weight:800;
}
.system-data-list b{
    font-size:20px;
}
.system-diagnostic-grid{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:12px;
}
.system-diagnostic-item{
    border:1px solid #edf0f5;
    border-radius:18px;
    padding:14px;
    background:#fff;
    min-height:150px;
    display:flex;
    flex-direction:column;
    gap:9px;
    border-left:5px solid #16a34a;
}
.system-diagnostic-item.warn{
    background:#fffbeb;
    border-color:#fde68a;
    border-left-color:#f59e0b;
}
.system-diagnostic-item.bad{
    background:#fff7f7;
    border-color:#fecaca;
    border-left-color:#dc2626;
}
.system-diagnostic-top{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:10px;
}
.system-diagnostic-top span{
    color:#344054;
    font-weight:950;
}
.system-diagnostic-top b{
    font-size:14px;
    color:#111827;
    text-align:right;
}
.system-diagnostic-item p{
    margin:0;
    color:#344054;
    line-height:1.4;
}
.system-diagnostic-item small{
    margin-top:auto;
    color:#667085;
    font-weight:800;
    line-height:1.35;
}
.security-health-summary{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
    margin-bottom:14px;
}
.security-health-summary article{
    border:1px solid #edf0f5;
    border-radius:16px;
    padding:14px;
    background:#fff;
}
.security-health-summary article b{
    display:block;
    font-size:30px;
    line-height:1;
}
.security-health-summary article span{
    color:#667085;
    font-weight:900;
    font-size:12px;
}
.security-health-summary .ok{
    border-left:5px solid #16a34a;
}
.security-health-summary .warn{
    border-left:5px solid #f59e0b;
}
.security-health-summary .bad{
    border-left:5px solid #dc2626;
}
.security-health-list{
    display:grid;
    gap:10px;
}
.security-health-item{
    display:grid;
    grid-template-columns:22px minmax(0,1fr);
    gap:10px;
    border:1px solid #edf0f5;
    border-radius:16px;
    padding:12px;
    background:#fff;
}
.security-health-item.warn{
    background:#fffbeb;
    border-color:#fde68a;
}
.security-health-item.bad{
    background:#fff7f7;
    border-color:#fecaca;
}
.security-dot{
    width:12px;
    height:12px;
    border-radius:999px;
    margin-top:5px;
    background:#16a34a;
}
.security-health-item.warn .security-dot{
    background:#f59e0b;
}
.security-health-item.bad .security-dot{
    background:#dc2626;
}
.security-health-title{
    display:flex;
    justify-content:space-between;
    gap:10px;
    align-items:center;
}
.security-health-item p{
    margin:5px 0;
    color:#344054;
}
.security-health-item small{
    color:#667085;
    font-weight:800;
}
.activity-critical-row td{
    background:#fff7ed!important;
    border-bottom-color:#fed7aa!important;
}
.activity-critical-row td:first-child{
    border-left:5px solid #f97316;
}
.system-roadmap div{
    display:grid;
    grid-template-columns:58px minmax(0,1fr);
    gap:12px;
    align-items:center;
    padding:13px;
    border-radius:16px;
    background:#fff;
    border:1px solid var(--line);
}
.system-roadmap b{
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    border-radius:16px;
    background:#fee2e2;
    color:var(--red);
    font-size:17px;
}
.system-roadmap span{
    color:#344054;
    line-height:1.45;
}
code{
    background:#f2f4f7;
    border:1px solid #e5e7eb;
    padding:3px 6px;
    border-radius:8px;
}
@media(max-width:1200px){
    .system-diagnostic-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:900px){
    .system-roadmap div{
        grid-template-columns:1fr;
    }
    .system-diagnostic-grid{
        grid-template-columns:1fr;
    }
    .security-health-summary{
        grid-template-columns:1fr;
    }
    .security-health-title{
        align-items:flex-start;
        flex-direction:column;
    }
}


/* v3.1 cambio 039 - Panel interno de incidencias */
.inc-work-panel{
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:26px;
    box-shadow:0 18px 46px rgba(217,4,4,.08);
    padding:20px;
    margin-bottom:18px;
}
.inc-work-head{
    display:flex;
    justify-content:space-between;
    gap:16px;
    align-items:flex-start;
    margin-bottom:16px;
}
.inc-work-head h2{
    margin:0 0 4px;
    font-size:24px;
    letter-spacing:-.035em;
}
.inc-work-head p{
    margin:0;
    color:var(--muted);
    line-height:1.45;
}
.inc-work-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    justify-content:flex-end;
}
.inc-work-kpis{
    display:grid;
    grid-template-columns:repeat(8,minmax(0,1fr));
    gap:10px;
}
.inc-work-kpi{
    min-height:96px;
    border-radius:20px;
    border:1px solid var(--line);
    background:#fff;
    padding:14px 12px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:4px;
    box-shadow:0 10px 24px rgba(15,23,42,.05);
}
.inc-work-kpi b{
    display:block;
    font-size:28px;
    line-height:1;
    letter-spacing:-.05em;
}
.inc-work-kpi span{
    display:block;
    font-size:12px;
    color:var(--muted);
    font-weight:900;
    line-height:1.15;
}
.inc-work-kpi.danger{border-color:#fecaca;background:#fff7f7}
.inc-work-kpi.danger b{color:#b91c1c}
.inc-work-kpi.new{border-color:#bfdbfe;background:#eff6ff}
.inc-work-kpi.new b{color:#1d4ed8}
.inc-work-kpi.critical{border-color:#fca5a5;background:#fee2e2}
.inc-work-kpi.critical b{color:#991b1b}
.inc-work-kpi.warn{border-color:#fed7aa;background:#fff7ed}
.inc-work-kpi.warn b{color:#c2410c}
.inc-work-kpi.wait{border-color:#fbcfe8;background:#fdf2f8}
.inc-work-kpi.wait b{color:#be185d}
.inc-work-kpi.neutral{border-color:#d0d5dd;background:#f8fafc}
.inc-work-kpi.neutral b{color:#344054}
.inc-work-kpi.today{border-color:#bbf7d0;background:#f0fdf4}
.inc-work-kpi.today b{color:#15803d}
.inc-work-kpi.old{border-color:#fde68a;background:#fffbeb}
.inc-work-kpi.old b{color:#a16207}
.inc-work-shortcuts{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px;
    margin-top:14px;
    padding-top:14px;
    border-top:1px solid rgba(217,4,4,.13);
}
.inc-work-shortcuts span{
    color:#7f1d1d;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.05em;
    font-weight:950;
}
.inc-work-shortcuts a{
    display:inline-flex;
    align-items:center;
    border-radius:999px;
    background:#fff;
    border:1px solid #fecaca;
    color:#991b1b;
    padding:8px 11px;
    font-size:12px;
    font-weight:900;
}
@media(max-width:1250px){
    .inc-work-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:760px){
    .inc-work-head{flex-direction:column}
    .inc-work-actions{justify-content:flex-start}
    .inc-work-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:460px){
    .inc-work-kpis{grid-template-columns:1fr}
}


/* v3.1 cambio 040 - Panel de foco lateral para incidencias */
.inc-focus-layout{
    display:grid;
    grid-template-columns:minmax(0,1fr) 320px;
    gap:18px;
    align-items:start;
}
.inc-main-column{
    min-width:0;
}
.inc-focus-sidebar{
    position:sticky;
    top:18px;
    z-index:4;
}
.inc-focus-card{
    background:linear-gradient(180deg,#fff,#fffafa);
    border:1px solid #fecaca;
    border-radius:26px;
    box-shadow:0 18px 44px rgba(217,4,4,.10);
    padding:16px;
}
.inc-focus-title{
    display:flex;
    justify-content:space-between;
    gap:12px;
    align-items:flex-start;
    margin-bottom:14px;
}
.inc-focus-title h2{
    margin:0 0 4px;
    font-size:21px;
    letter-spacing:-.04em;
}
.inc-focus-title p{
    margin:0;
    color:var(--muted);
    font-size:12px;
    line-height:1.35;
}
.inc-focus-live-dot{
    width:13px;
    height:13px;
    border-radius:999px;
    background:var(--red);
    box-shadow:0 0 0 6px rgba(217,4,4,.10);
    margin-top:6px;
    flex:0 0 auto;
}
.inc-focus-section-title{
    display:flex;
    align-items:center;
    gap:8px;
    margin:14px 0 8px;
    font-size:11px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.06em;
}
.inc-focus-section-title.attention{
    color:#991b1b;
}
.inc-focus-section-title.ok{
    color:#166534;
}
.inc-focus-pending{
    display:grid;
    gap:9px;
}
.inc-focus-item{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:10px;
    align-items:center;
    border-radius:20px;
    padding:12px;
    border:1px solid var(--line);
    background:#fff;
    box-shadow:0 10px 24px rgba(15,23,42,.05);
}
.inc-focus-item:hover{
    transform:translateY(-1px);
    box-shadow:0 16px 34px rgba(15,23,42,.10);
}
.inc-focus-item-main{
    min-width:0;
}
.inc-focus-item b{
    display:inline-block;
    font-size:26px;
    line-height:1;
    margin-right:8px;
    vertical-align:middle;
    letter-spacing:-.05em;
}
.inc-focus-item span{
    font-weight:950;
    vertical-align:middle;
}
.inc-focus-item small{
    display:block;
    color:var(--muted);
    line-height:1.25;
    margin-top:4px;
}
.inc-focus-item em{
    font-style:normal;
    font-size:10px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.05em;
    border-radius:999px;
    padding:6px 8px;
}
.inc-focus-item.level-red{
    border-color:#fca5a5;
    background:linear-gradient(135deg,#fff,#fff1f2);
}
.inc-focus-item.level-red b{
    color:#b91c1c;
}
.inc-focus-item.level-red em{
    color:#fff;
    background:#dc2626;
}
.inc-focus-item.level-yellow{
    border-color:#fde68a;
    background:linear-gradient(135deg,#fff,#fffbeb);
}
.inc-focus-item.level-yellow b{
    color:#a16207;
}
.inc-focus-item.level-yellow em{
    color:#92400e;
    background:#fef3c7;
}
.inc-focus-all-ok{
    display:flex;
    gap:10px;
    align-items:flex-start;
    border-radius:20px;
    padding:14px;
    background:#f0fdf4;
    border:1px solid #bbf7d0;
    color:#166534;
}
.inc-focus-all-ok>span{
    width:30px;
    height:30px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#16a34a;
    color:#fff;
    font-weight:950;
    flex:0 0 auto;
}
.inc-focus-all-ok b,
.inc-focus-all-ok small{
    display:block;
}
.inc-focus-all-ok small{
    color:#166534;
    margin-top:2px;
    line-height:1.3;
}
.inc-focus-done-list{
    display:grid;
    gap:6px;
}
.inc-focus-done{
    display:flex;
    align-items:center;
    gap:8px;
    border-radius:14px;
    background:#f0fdf4;
    border:1px solid #dcfce7;
    padding:8px 10px;
    color:#166534;
}
.inc-focus-done span{
    width:20px;
    height:20px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#22c55e;
    color:#fff;
    font-size:12px;
    font-weight:950;
    flex:0 0 auto;
}
.inc-focus-done b{
    font-size:12px;
    line-height:1.2;
}
.inc-focus-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:14px;
    padding-top:12px;
    border-top:1px solid #fee2e2;
}
@media(max-width:1200px){
    .inc-focus-layout{
        grid-template-columns:1fr;
    }
    .inc-focus-sidebar{
        position:static;
        order:-1;
    }
    .inc-focus-pending{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .inc-focus-done-list{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:650px){
    .inc-focus-pending,
    .inc-focus-done-list{
        grid-template-columns:1fr;
    }
}

.inc-work-panel{display:none!important;}


/* v3.1 cambio 041 - Incidencias compactas para trabajo diario */
.incident-icon-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    align-items:center;
    justify-content:flex-end;
}
.incident-icon-btn{
    width:38px;
    height:38px;
    border-radius:14px;
    border:1px solid #e5e7eb;
    background:#fff;
    display:inline-grid;
    place-items:center;
    color:#344054;
    font-weight:950;
    box-shadow:0 8px 20px rgba(15,23,42,.06);
    cursor:pointer;
}
.incident-icon-btn:hover{
    transform:translateY(-1px);
    box-shadow:0 14px 28px rgba(15,23,42,.10);
}
.incident-icon-btn.add{
    background:var(--red);
    color:#fff;
    border-color:var(--red);
    font-size:26px;
    line-height:1;
}
.incident-icon-btn svg{
    width:20px;
    height:20px;
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.incident-view-strip{
    display:flex;
    align-items:baseline;
    gap:7px;
    margin:8px 0 10px;
    color:#667085;
    font-size:12px;
}
.incident-view-strip strong{
    color:#111827;
    font-size:18px;
    line-height:1;
}
.incident-toolbar{
    display:grid!important;
    grid-template-columns:minmax(130px,1.2fr) minmax(125px,1fr) 105px 115px 95px 100px 105px auto auto auto;
    gap:7px!important;
    align-items:center;
    padding:8px!important;
    border-radius:18px!important;
    background:#f8fafc!important;
}
.incident-toolbar input,
.incident-toolbar select{
    min-height:34px!important;
    height:34px!important;
    padding:6px 9px!important;
    border-radius:11px!important;
    font-size:12px!important;
}
.incident-toolbar .inline-check{
    min-height:34px;
    height:34px;
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:11px;
    padding:0 8px;
    display:inline-flex;
    align-items:center;
    gap:5px;
    font-size:12px;
    white-space:nowrap;
}
.incident-filter-btn,
.incident-filter-link{
    min-height:34px!important;
    height:34px!important;
    padding:6px 10px!important;
    border-radius:11px!important;
    font-size:12px!important;
}
.incidents-table-clean{
    font-size:12px;
}
.incidents-table-clean th{
    font-size:11px!important;
    padding:9px 8px!important;
    white-space:nowrap;
}
.incidents-table-clean td{
    padding:9px 8px!important;
    vertical-align:middle!important;
}
.incidents-table-clean .priority-col{
    width:92px;
}
.incident-period-mini{
    display:block;
    margin-top:5px;
    color:#667085;
    font-size:10px;
    font-weight:850;
    line-height:1;
}
.incident-date-cell{
    width:122px;
    white-space:nowrap;
    font-size:11px;
}
.incident-client-cell{
    min-width:150px;
}
.incident-client-cell b{
    font-size:12.5px;
}
.incident-client-cell .muted{
    font-size:10.5px;
}
.incident-location-cell{
    min-width:160px;
}
.incident-location-line{
    display:grid;
    grid-template-columns:28px minmax(0,1fr);
    gap:8px;
    align-items:center;
}
.incident-location-line b,
.incident-location-line small{
    display:block;
}
.incident-location-line b{
    font-size:12px;
    line-height:1.2;
}
.incident-location-line small{
    color:#667085;
    font-size:10.5px;
    margin-top:2px;
}
.inventory-mini-icon{
    width:27px;
    height:27px;
    border-radius:999px;
    display:grid;
    place-items:center;
    border:1px solid;
}
.inventory-mini-icon svg{
    width:16px;
    height:16px;
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.inventory-mini-icon.linked{
    background:#dcfce7;
    border-color:#86efac;
    color:#15803d;
}
.inventory-mini-icon.unlinked{
    background:#f8fafc;
    border-color:#d0d5dd;
    color:#667085;
}
.status-cell .status-select{
    min-height:32px!important;
    height:32px!important;
    font-size:11px!important;
    padding:5px 8px!important;
    max-width:150px;
}
.action-menu-toggle{
    min-width:32px!important;
    height:32px!important;
    padding:0!important;
}
@media(max-width:1420px){
    .incident-toolbar{
        grid-template-columns:minmax(140px,1fr) minmax(130px,1fr) repeat(4,minmax(90px,.8fr));
    }
}
@media(max-width:900px){
    .incident-toolbar{
        grid-template-columns:1fr 1fr!important;
    }
    .incident-icon-actions{
        justify-content:flex-start;
    }
}
@media(max-width:560px){
    .incident-toolbar{
        grid-template-columns:1fr!important;
    }
}


/* v3.1 cambio 042 - Calendario operativo y citas visibles */
.calendar-quick-actions{
    display:flex;
    gap:8px;
    align-items:center;
    justify-content:flex-end;
    flex-wrap:wrap;
}
.calendar-quick-actions .compact-add{
    min-height:36px;
    padding:8px 12px;
    border-radius:12px;
    font-size:13px;
}
.calendar-time-disabled{
    opacity:1;
}
.calendar-all-day-check{
    margin:10px 0;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    border-radius:14px;
    padding:10px 12px;
}
.fc .fc-daygrid-event{
    border-radius:8px!important;
    padding:1px 3px!important;
    margin-top:2px!important;
    font-size:11px!important;
    line-height:1.15!important;
    white-space:normal!important;
}
.fc .fc-daygrid-day.has-calendar-events{
    background:linear-gradient(180deg,#fff,#fff7f7);
}
.fc .fc-daygrid-day.has-calendar-events .fc-daygrid-day-number{
    font-weight:950;
    color:var(--red);
}
.cal-event-title{
    display:flex;
    gap:4px;
    align-items:center;
    min-width:0;
    overflow:hidden;
}
.cal-event-title b{
    font-size:10px;
    opacity:.86;
    flex:0 0 auto;
}
.cal-event-title span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-weight:850;
}
.cal-day-mini-summary{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:5px;
    margin:2px 3px 3px;
    padding:4px 5px;
    border-radius:8px;
    background:#fee2e2;
    color:#7f1d1d;
    font-size:10px;
    line-height:1.1;
    pointer-events:none;
}
.cal-day-mini-summary span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-weight:850;
}
.cal-day-mini-summary b{
    flex:0 0 auto;
    background:#dc2626;
    color:#fff;
    border-radius:999px;
    padding:2px 5px;
    font-size:10px;
}
.calendar-day-events-list{
    display:grid;
    gap:9px;
    max-height:55vh;
    overflow:auto;
    padding-right:4px;
}
.calendar-day-event-row{
    border:1px solid #e5e7eb;
    background:#fff;
    border-left:5px solid var(--red);
    border-radius:16px;
    padding:11px 12px;
}
.calendar-day-event-row b,
.calendar-day-event-row span,
.calendar-day-event-row small{
    display:block;
}
.calendar-day-event-row b{
    color:#111827;
}
.calendar-day-event-row span{
    color:#475467;
    margin-top:3px;
    font-size:12px;
}
.calendar-day-event-row small{
    color:#667085;
    margin-top:5px;
    line-height:1.35;
}
@media(max-width:760px){
    .cal-day-mini-summary{
        display:none;
    }
}


/* v3.1 cambio 043 - Calendario editable y roadmap visual Sistema */
.calendar-toast{
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:10050;
    background:#166534;
    color:#fff;
    border-radius:16px;
    padding:12px 14px;
    box-shadow:0 18px 44px rgba(15,23,42,.22);
    font-weight:900;
    opacity:0;
    transform:translateY(12px);
    pointer-events:none;
    transition:.18s ease;
}
.calendar-toast.show{
    opacity:1;
    transform:translateY(0);
}
.calendar-toast.bad{
    background:#b91c1c;
}
.calendar-modal-actions{
    gap:8px;
    flex-wrap:wrap;
}
.danger-soft{
    color:#b91c1c!important;
    border-color:#fecaca!important;
    background:#fff7f7!important;
}
.fc .fc-event{
    cursor:grab;
}
.fc .fc-event:active{
    cursor:grabbing;
}
.fc .cal-status-realizada{
    opacity:.72;
}
.fc .cal-status-realizada .cal-event-title span{
    text-decoration:line-through;
}
.fc .cal-status-cancelada{
    opacity:.48;
    filter:grayscale(.6);
}
.fc .cal-status-cancelada .cal-event-title span{
    text-decoration:line-through;
}
.system-roadmap .roadmap-done{
    display:grid;
    grid-template-columns:58px minmax(0,1fr);
    gap:12px;
    align-items:center;
    padding:13px;
    border-radius:16px;
    background:#f0fdf4;
    border:1px solid #bbf7d0;
}
.system-roadmap .roadmap-done .roadmap-check{
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    border-radius:999px;
    background:#22c55e;
    color:#fff;
    font-size:23px;
}
.system-roadmap .roadmap-done span{
    color:#166534;
}
.system-roadmap .roadmap-done strong{
    color:#14532d;
}
.system-roadmap .roadmap-pending{
    display:grid;
    grid-template-columns:58px minmax(0,1fr);
    gap:12px;
    align-items:center;
    padding:13px;
    border-radius:16px;
    background:#fff;
    border:1px solid var(--line);
}
.system-roadmap .roadmap-pending b{
    display:grid;
    place-items:center;
    width:46px;
    height:46px;
    border-radius:16px;
    background:#fee2e2;
    color:var(--red);
    font-size:17px;
}
.system-roadmap .roadmap-pending span{
    color:#344054;
    line-height:1.45;
}


/* v3.1 cambio 044 - Excepciones de calendario */
.calendar-override-card{
    border-left:6px solid #f59e0b;
}
.calendar-override-warning{
    background:#fffbeb;
    border:1px solid #fde68a;
    color:#92400e;
    border-radius:18px;
    padding:14px 15px;
    font-weight:850;
    line-height:1.45;
    margin-bottom:12px;
}
.calendar-override-help{
    display:grid;
    gap:5px;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    border-radius:18px;
    padding:12px 14px;
    margin-bottom:12px;
    color:#475467;
}
.calendar-override-help b{
    color:#111827;
}
.calendar-override-help span{
    font-size:13px;
}


/* v3.1 cambio 045 - Foco interno del calendario */
.calendar-summary-grid,
.calendar-layout > .calendar-side{
    display:none!important;
}
.calendar-focus-panel{
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:24px;
    box-shadow:0 16px 40px rgba(217,4,4,.08);
    padding:16px;
    margin-bottom:14px;
}
.calendar-focus-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:12px;
}
.calendar-focus-head h2{
    margin:0 0 3px;
    font-size:22px;
    letter-spacing:-.04em;
}
.calendar-focus-head p{
    margin:0;
    color:var(--muted);
    font-size:12.5px;
    line-height:1.35;
}
.calendar-focus-grid{
    display:grid;
    grid-template-columns:1fr 1fr 1.2fr;
    gap:10px;
}
.calendar-focus-column{
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:18px;
    padding:10px;
    min-width:0;
}
.calendar-focus-column.has-items{
    border-color:#fde68a;
    background:#fffbeb;
}
.calendar-focus-column.has-items:first-child{
    border-color:#fca5a5;
    background:#fff7f7;
}
.calendar-focus-column.is-ok{
    border-color:#bbf7d0;
    background:#f0fdf4;
}
.calendar-focus-column header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    margin-bottom:8px;
}
.calendar-focus-column header b{
    font-size:13px;
    color:#111827;
}
.calendar-focus-column header span{
    font-size:11px;
    color:#667085;
    font-weight:900;
}
.calendar-focus-row{
    display:grid;
    grid-template-columns:72px minmax(0,1fr);
    gap:8px;
    align-items:start;
    padding:7px 0;
    border-top:1px solid rgba(0,0,0,.06);
}
.calendar-focus-row:first-of-type{
    border-top:0;
}
.calendar-focus-row strong{
    font-size:11px;
    color:#991b1b;
    white-space:nowrap;
}
.calendar-focus-row div{
    min-width:0;
}
.calendar-focus-row div b{
    display:block;
    font-size:12px;
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.calendar-focus-row div span{
    display:block;
    color:#667085;
    font-size:10.5px;
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    margin-top:2px;
}
.calendar-focus-ok{
    display:flex;
    gap:8px;
    align-items:center;
    color:#166534;
    font-size:12px;
    font-weight:900;
}
.calendar-focus-ok span{
    width:24px;
    height:24px;
    display:grid;
    place-items:center;
    border-radius:999px;
    color:#fff;
    background:#22c55e;
    flex:0 0 auto;
}
.calendar-main-card-full{
    margin-bottom:8px;
}
.calendar-filters-compact{
    display:flex!important;
    gap:8px!important;
    align-items:center;
    flex-wrap:wrap;
    margin-bottom:10px!important;
}
.calendar-filters-compact select,
.calendar-filters-compact button{
    min-height:34px!important;
    height:34px!important;
    font-size:12px!important;
    padding:6px 10px!important;
    border-radius:11px!important;
}
.calendar-tech-inline{
    display:flex;
    gap:6px;
    flex-wrap:wrap;
    align-items:center;
    margin-left:auto;
}
.calendar-tech-inline span{
    display:inline-flex;
    align-items:center;
    gap:5px;
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:999px;
    padding:5px 8px;
    font-size:11px;
    font-weight:850;
    color:#475467;
}
.calendar-tech-inline i{
    width:8px;
    height:8px;
    border-radius:999px;
    flex:0 0 auto;
}
.calendar-legend-slim{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:12px;
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:14px;
    padding:7px 10px;
    margin:8px 0 0;
    color:#667085;
    font-size:11px;
}
.calendar-legend-slim span{
    display:inline-flex;
    align-items:center;
    gap:5px;
    white-space:nowrap;
}
.calendar-legend-slim .legend-dot{
    width:8px;
    height:8px;
    border-radius:999px;
    display:inline-block;
}
@media(max-width:1100px){
    .calendar-focus-grid{
        grid-template-columns:1fr;
    }
    .calendar-tech-inline{
        width:100%;
        margin-left:0;
    }
}
@media(max-width:620px){
    .calendar-focus-head{
        flex-direction:column;
    }
    .calendar-focus-row{
        grid-template-columns:64px minmax(0,1fr);
    }
}


/* v3.1 cambio 046 - Inicio operativo interno */
.home-command-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:14px;
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:24px;
    padding:16px;
    box-shadow:0 14px 34px rgba(217,4,4,.08);
    margin-bottom:14px;
}
.home-command-head h2{margin:0 0 3px;font-size:24px;letter-spacing:-.04em}
.home-command-head p{margin:0;color:var(--muted);font-size:13px}
.home-quick-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.home-quick{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:34px;
    border-radius:12px;
    border:1px solid #e5e7eb;
    background:#fff;
    padding:7px 11px;
    font-size:12px;
    font-weight:950;
    color:#344054;
}
.home-quick.primary{background:var(--red);border-color:var(--red);color:#fff}
.home-focus-grid{
    display:grid;
    grid-template-columns:1.35fr 1.15fr;
    gap:12px;
    align-items:start;
}
.home-focus-card{
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:22px;
    padding:14px;
    box-shadow:0 12px 28px rgba(15,23,42,.05);
    min-width:0;
}
.home-focus-card header{
    display:flex;
    justify-content:space-between;
    gap:10px;
    align-items:flex-start;
    margin-bottom:10px;
}
.home-focus-card h3{margin:0 0 2px;font-size:18px;letter-spacing:-.035em}
.home-focus-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.3}
.home-focus-card.calendar{border-left:5px solid #dc2626}
.home-focus-card.tasks{border-left:5px solid #f59e0b}
.home-focus-card.incidents{border-left:5px solid #991b1b}
.home-focus-card.material{border-left:5px solid #2563eb}
.home-focus-state{
    width:30px;height:30px;border-radius:999px;display:grid;place-items:center;font-weight:950;flex:0 0 auto;
}
.home-focus-state.ok{background:#22c55e;color:#fff}
.home-focus-state.yellow{background:#f59e0b;color:#fff}
.home-focus-state.red{background:#dc2626;color:#fff}
.home-focus-block{display:grid;gap:6px;margin-top:8px}
.home-focus-block>b,.home-focus-mini>b{
    font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#475467;
}
.home-focus-block.danger{
    border:1px solid #fecaca;background:#fff7f7;border-radius:16px;padding:8px;
}
.home-line{
    display:grid;
    grid-template-columns:78px minmax(0,1fr);
    gap:8px;
    align-items:center;
    border-radius:12px;
    padding:7px 8px;
    background:#f8fafc;
    border:1px solid #eef2f6;
}
.home-line:hover{background:#fff;border-color:#fecaca}
.home-line.compact{grid-template-columns:62px minmax(0,1fr);padding:6px 7px}
.home-line strong{font-size:11px;color:#991b1b;white-space:nowrap}
.home-line span{font-size:12px;color:#344054;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-two-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.home-focus-mini{min-width:0}
.home-ok-line{
    display:flex;align-items:center;gap:8px;border-radius:12px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;
    padding:8px 10px;font-size:12px;font-weight:900;
}
.home-ok-line.small{padding:6px 8px;font-size:11px}
.home-ok-line span{width:22px;height:22px;border-radius:999px;display:grid;place-items:center;background:#22c55e;color:#fff;flex:0 0 auto}
.home-metric-list{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:7px;
}
.home-metric-list a{
    display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:70px;
    border-radius:16px;border:1px solid #e5e7eb;background:#f8fafc;padding:8px 5px;
}
.home-metric-list a b{font-size:24px;line-height:1;letter-spacing:-.05em}
.home-metric-list a span{font-size:10.5px;color:#667085;font-weight:900;margin-top:4px;line-height:1.1}
.home-metric-list a.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.home-metric-list a.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.home-metric-list a.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.home-bottom-strip{
    display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;border:1px solid #e5e7eb;background:#fff;border-radius:16px;padding:8px;
}
.home-bottom-strip a{
    border-radius:999px;background:#f8fafc;border:1px solid #e5e7eb;color:#475467;padding:7px 10px;font-size:12px;font-weight:900;
}
@media(max-width:1150px){
    .home-focus-grid{grid-template-columns:1fr}
}
@media(max-width:700px){
    .home-command-head{flex-direction:column}
    .home-quick-actions{justify-content:flex-start}
    .home-two-cols{grid-template-columns:1fr}
    .home-metric-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* v3.1 cambio 047 - Resumen de trabajo en Tareas */
.tasks-summary-grid{
    display:none!important;
}
.task-work-panel{
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:24px;
    box-shadow:0 14px 34px rgba(217,4,4,.08);
    padding:16px;
    margin-bottom:14px;
}
.task-work-panel.level-green{
    border-color:#bbf7d0;
    border-left-color:#22c55e;
    background:linear-gradient(135deg,#fff,#f0fdf4);
}
.task-work-panel.level-yellow{
    border-color:#fde68a;
    border-left-color:#f59e0b;
    background:linear-gradient(135deg,#fff,#fffbeb);
}
.task-work-panel.level-red{
    border-color:#fca5a5;
    border-left-color:#dc2626;
    background:linear-gradient(135deg,#fff,#fff7f7);
}
.task-work-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:12px;
}
.task-work-head h2{
    margin:0 0 3px;
    font-size:22px;
    letter-spacing:-.04em;
}
.task-work-head p{
    margin:0;
    color:var(--muted);
    font-size:12.5px;
    line-height:1.35;
}
.task-work-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    justify-content:flex-end;
}
.task-work-actions .compact-add{
    min-height:34px;
    padding:7px 11px;
    border-radius:12px;
    font-size:12px;
}
.task-work-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:10px;
}
.task-work-column{
    background:#fff;
    border:1px solid #e5e7eb;
    border-radius:18px;
    padding:10px;
    min-width:0;
}
.task-work-column.danger{
    background:#fff7f7;
    border-color:#fca5a5;
}
.task-work-column.warn{
    background:#fffbeb;
    border-color:#fde68a;
}
.task-work-column.ok{
    background:#f0fdf4;
    border-color:#bbf7d0;
}
.task-work-column header{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    margin-bottom:8px;
}
.task-work-column header b{
    font-size:13px;
    color:#111827;
}
.task-work-column header span{
    min-width:25px;
    height:25px;
    border-radius:999px;
    display:grid;
    place-items:center;
    font-size:11px;
    font-weight:950;
    background:#fff;
    border:1px solid rgba(0,0,0,.08);
}
.task-work-line{
    display:grid;
    grid-template-columns:54px minmax(0,1fr);
    grid-template-areas:"prio title" "prio meta";
    gap:2px 8px;
    align-items:center;
    border-top:1px solid rgba(0,0,0,.06);
    padding:7px 0;
}
.task-work-line:first-of-type{
    border-top:0;
}
.task-work-line strong{
    grid-area:prio;
    color:#991b1b;
    font-size:11px;
    white-space:nowrap;
}
.task-work-line.reminder strong{
    color:#92400e;
}
.task-work-line span{
    grid-area:title;
    min-width:0;
    color:#344054;
    font-size:12px;
    font-weight:900;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.task-work-line small{
    grid-area:meta;
    min-width:0;
    color:#667085;
    font-size:10.5px;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.task-work-ok{
    display:flex;
    gap:8px;
    align-items:center;
    color:#166534;
    font-size:12px;
    font-weight:900;
    padding:8px 0 2px;
}
.task-work-ok span{
    width:24px;
    height:24px;
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#22c55e;
    color:#fff;
    flex:0 0 auto;
}
.tasks-page-head .actions .small{
    min-width:34px;
    width:34px;
    height:34px;
    padding:0!important;
    border-radius:12px;
    display:inline-grid;
    place-items:center;
    font-weight:950;
}
@media(max-width:1250px){
    .task-work-grid{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
}
@media(max-width:680px){
    .task-work-head{
        flex-direction:column;
    }
    .task-work-actions{
        justify-content:flex-start;
    }
    .task-work-grid{
        grid-template-columns:1fr;
    }
}


/* v3.1 cambio 048 - Bandeja de recados */
.home-focus-card.messages{border-left:5px solid #7c3aed}
.message-work-panel{
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:24px;
    box-shadow:0 14px 34px rgba(217,4,4,.08);
    padding:16px;
    margin-bottom:14px;
}
.message-work-panel.level-green{
    border-color:#bbf7d0;
    border-left-color:#22c55e;
    background:linear-gradient(135deg,#fff,#f0fdf4);
}
.message-work-panel.level-yellow{
    border-color:#fde68a;
    border-left-color:#f59e0b;
    background:linear-gradient(135deg,#fff,#fffbeb);
}
.message-work-panel.level-red{
    border-color:#fca5a5;
    border-left-color:#dc2626;
    background:linear-gradient(135deg,#fff,#fff7f7);
}
.message-work-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:12px;
}
.message-work-head h2{
    margin:0 0 3px;
    font-size:22px;
    letter-spacing:-.04em;
}
.message-work-head p{
    margin:0;
    color:var(--muted);
    font-size:12.5px;
    line-height:1.35;
}
.message-work-head .compact-add{
    min-height:34px;
    padding:7px 11px;
    border-radius:12px;
    font-size:12px;
}
.message-metrics{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:8px;
}
.message-metrics a{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    border-radius:16px;
    min-height:70px;
    border:1px solid #e5e7eb;
    background:#fff;
    padding:8px 5px;
}
.message-metrics a b{
    font-size:25px;
    line-height:1;
    letter-spacing:-.05em;
}
.message-metrics a span{
    margin-top:4px;
    font-size:10.5px;
    line-height:1.1;
    color:#667085;
    font-weight:900;
}
.message-metrics a.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.message-metrics a.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.message-metrics a.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.messages-list-card{
    margin-top:0;
}
.messages-page-head .actions .small{
    min-width:34px;
    width:34px;
    height:34px;
    padding:0!important;
    border-radius:12px;
    display:inline-grid;
    place-items:center;
    font-weight:950;
}
.messages-toolbar{
    margin-bottom:12px;
}
.messages-list{
    display:grid;
    gap:9px;
}
.message-item{
    display:grid;
    grid-template-columns:58px minmax(0,1fr) auto;
    gap:10px;
    align-items:flex-start;
    border:1px solid #e5e7eb;
    border-left:5px solid #f59e0b;
    background:#fff;
    border-radius:18px;
    padding:11px;
}
.message-item.priority-urgente{
    border-left-color:#dc2626;
    background:#fff7f7;
}
.message-item.priority-alta{
    border-left-color:#f59e0b;
}
.message-item.is-closed{
    opacity:.68;
    filter:grayscale(.25);
}
.message-age{
    justify-self:start;
    white-space:nowrap;
}
.message-body{
    min-width:0;
}
.message-mainline{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:10px;
}
.message-mainline h3{
    margin:0;
    font-size:16px;
    letter-spacing:-.03em;
}
.message-badges{
    display:flex;
    flex-wrap:wrap;
    gap:5px;
    justify-content:flex-end;
}
.message-subject{
    margin:4px 0 6px;
    color:#111827;
    font-size:13px;
    font-weight:850;
    line-height:1.35;
}
.message-meta{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    color:#667085;
    font-size:11.5px;
    font-weight:750;
}
.message-meta span{
    background:#f8fafc;
    border:1px solid #eef2f6;
    border-radius:999px;
    padding:4px 7px;
}
.message-notes{
    margin:8px 0 0;
    color:#475467;
    font-size:12.5px;
    line-height:1.35;
}
@media(max-width:900px){
    .message-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
    .message-item{grid-template-columns:1fr auto}
    .message-age{grid-column:1/-1}
}
@media(max-width:620px){
    .message-work-head{flex-direction:column}
    .message-mainline{flex-direction:column}
    .message-badges{justify-content:flex-start}
}


/* v3.1 cambio 050 - Ficha cliente completa v1 */
.clients-grid-operational{
    align-items:start;
}
.client-card-operational{
    overflow:hidden;
}
.client-title-badges{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    justify-content:flex-end;
}
.client-operational-summary{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:6px;
    margin:12px 0;
}
.client-operational-summary a{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    min-height:58px;
    border-radius:14px;
    border:1px solid #e5e7eb;
    background:#f8fafc;
    padding:7px 4px;
}
.client-operational-summary a b{
    font-size:20px;
    line-height:1;
    letter-spacing:-.05em;
}
.client-operational-summary a span{
    margin-top:4px;
    font-size:10px;
    line-height:1.05;
    color:#667085;
    font-weight:900;
}
.client-operational-summary a.ok{
    background:#f0fdf4;
    border-color:#bbf7d0;
    color:#166534;
}
.client-operational-summary a.warn{
    background:#fffbeb;
    border-color:#fde68a;
    color:#92400e;
}
.client-operational-summary a.neutral{
    background:#f8fafc;
    border-color:#e5e7eb;
    color:#475467;
}
.client-meta-compact{
    gap:6px;
}
.client-warning-note{
    margin:10px 0;
    border:1px solid #fde68a;
    background:#fffbeb;
    color:#92400e;
    border-radius:14px;
    padding:9px 10px;
    font-size:12px;
    line-height:1.35;
    font-weight:750;
}
.client-warning-note.important{
    border-color:#fca5a5;
    background:#fff7f7;
    color:#991b1b;
}
.form-section-title{
    margin:18px 0 9px;
    font-size:14px;
    color:#111827;
    border-top:1px solid #e5e7eb;
    padding-top:13px;
}
.form-section-title:first-of-type{
    margin-top:0;
    border-top:0;
    padding-top:0;
}
.client-detail-hero{
    margin:0 0 12px;
    border-radius:18px;
    overflow:hidden;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    min-height:82px;
    display:grid;
    place-items:center;
}
.client-detail-hero img{
    width:100%;
    height:150px;
    object-fit:cover;
    display:block;
}
.client-detail-hero-placeholder{
    color:#667085;
    font-size:13px;
    padding:20px;
}
.client-detail-list{
    display:grid;
    gap:8px;
}
.client-detail-list div{
    display:grid;
    gap:2px;
    border-bottom:1px solid #eef2f6;
    padding-bottom:7px;
}
.client-detail-list div:last-child{
    border-bottom:0;
    padding-bottom:0;
}
.client-detail-list b{
    color:#667085;
    font-size:11px;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.client-detail-list span{
    color:#111827;
    font-size:13px;
    line-height:1.35;
    white-space:pre-wrap;
}
.client-detail-stats{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
}
.client-detail-stat{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    min-height:68px;
    border-radius:14px;
    border:1px solid #e5e7eb;
    background:#f8fafc;
    padding:8px;
    text-align:center;
}
.client-detail-stat b{
    font-size:23px;
    line-height:1;
}
.client-detail-stat span{
    font-size:11px;
    color:#667085;
    font-weight:900;
    margin-top:4px;
}
.client-detail-stat.ok{
    background:#f0fdf4;
    border-color:#bbf7d0;
    color:#166534;
}
.client-detail-stat.warn{
    background:#fffbeb;
    border-color:#fde68a;
    color:#92400e;
}
.client-detail-important{
    border-left:5px solid #dc2626;
    background:#fff7f7;
    border-radius:14px;
    padding:12px;
    color:#991b1b!important;
    white-space:pre-wrap;
}
@media(max-width:720px){
    .client-operational-summary{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .client-title-badges{
        justify-content:flex-start;
    }
    .client-detail-stats{
        grid-template-columns:1fr;
    }
}


/* v3.1 cambio 052 - Historial interno por cliente */
.client-history-selector{
    margin-bottom:14px;
}
.client-history-head{
    display:grid;
    grid-template-columns:minmax(0,1.35fr) minmax(360px,.85fr);
    gap:12px;
    align-items:stretch;
    margin-bottom:12px;
}
.client-history-client{
    display:flex;
    gap:14px;
    align-items:center;
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:22px;
    padding:14px;
    box-shadow:0 14px 34px rgba(217,4,4,.08);
    min-width:0;
}
.client-history-client img{
    width:156px;
    height:76px;
    object-fit:cover;
    border-radius:16px;
    border:1px solid #e5e7eb;
    background:#fff;
    flex:0 0 auto;
}
.client-history-client h2{
    margin:0 0 4px;
    font-size:24px;
    letter-spacing:-.04em;
}
.client-history-client p{
    margin:0;
    color:#667085;
    font-size:13px;
    font-weight:800;
}
.client-history-kpis{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px;
}
.client-history-kpis a{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    min-height:86px;
    text-align:center;
    border-radius:18px;
    border:1px solid #e5e7eb;
    background:#fff;
    padding:8px;
}
.client-history-kpis a b{
    font-size:27px;
    line-height:1;
    letter-spacing:-.05em;
}
.client-history-kpis a span{
    margin-top:5px;
    color:#667085;
    font-size:10.5px;
    font-weight:900;
    line-height:1.1;
}
.client-history-kpis a.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.client-history-kpis a.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.client-history-kpis a.neutral{background:#f8fafc;border-color:#e5e7eb;color:#475467}
.client-history-tools{
    margin-bottom:12px;
}
.client-timeline{
    display:grid;
    gap:9px;
}
.timeline-day{
    position:sticky;
    top:0;
    z-index:5;
    margin:10px 0 2px;
    width:max-content;
    max-width:100%;
    padding:6px 10px;
    border-radius:999px;
    background:#111827;
    color:#fff;
    font-size:12px;
    font-weight:950;
    box-shadow:0 8px 18px rgba(15,23,42,.16);
}
.timeline-item{
    display:grid;
    grid-template-columns:42px minmax(0,1fr) auto;
    gap:10px;
    align-items:flex-start;
    border:1px solid #e5e7eb;
    border-left:5px solid #94a3b8;
    background:#fff;
    border-radius:18px;
    padding:11px;
    box-shadow:0 10px 24px rgba(15,23,42,.04);
}
.timeline-item.level-red{border-left-color:#dc2626;background:#fff7f7}
.timeline-item.level-yellow{border-left-color:#f59e0b;background:#fffbeb}
.timeline-item.level-green{border-left-color:#22c55e}
.timeline-item.level-neutral{border-left-color:#94a3b8;opacity:.82}
.timeline-ico{
    width:38px;
    height:38px;
    border-radius:14px;
    display:grid;
    place-items:center;
    background:#f8fafc;
    border:1px solid #e5e7eb;
    color:var(--red);
}
.timeline-ico svg{
    width:20px;
    height:20px;
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round;
}
.timeline-body{
    min-width:0;
}
.timeline-main{
    display:flex;
    justify-content:space-between;
    gap:12px;
    align-items:flex-start;
}
.timeline-type{
    display:inline-flex;
    align-items:center;
    width:max-content;
    max-width:100%;
    border-radius:999px;
    padding:3px 7px;
    background:#f2f4f7;
    color:#475467;
    font-size:10.5px;
    font-weight:950;
    text-transform:uppercase;
    letter-spacing:.04em;
}
.timeline-main h4{
    margin:5px 0 0;
    font-size:15px;
    letter-spacing:-.025em;
}
.timeline-main time{
    white-space:nowrap;
    color:#667085;
    font-size:11.5px;
    font-weight:850;
}
.timeline-body p{
    margin:7px 0 0;
    color:#475467;
    font-size:12.5px;
    line-height:1.4;
}
.timeline-meta{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:8px;
}
.timeline-meta span{
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:999px;
    padding:4px 7px;
    color:#475467;
    font-size:11px;
    font-weight:850;
}
@media(max-width:1100px){
    .client-history-head{
        grid-template-columns:1fr;
    }
}
@media(max-width:720px){
    .client-history-client{
        flex-direction:column;
        align-items:flex-start;
    }
    .client-history-client img{
        width:100%;
        height:110px;
    }
    .client-history-kpis{
        grid-template-columns:repeat(2,minmax(0,1fr));
    }
    .timeline-item{
        grid-template-columns:38px minmax(0,1fr);
    }
    .timeline-item>a{
        grid-column:1/-1;
        width:max-content;
    }
    .timeline-main{
        flex-direction:column;
        gap:4px;
    }
}


/* v3.1 cambio 053 - Material vinculado */
.shopping-work-panel{
    background:linear-gradient(135deg,#fff,#fff7f7);
    border:1px solid #fecaca;
    border-left:6px solid var(--red);
    border-radius:24px;
    box-shadow:0 14px 34px rgba(217,4,4,.08);
    padding:16px;
    margin-bottom:14px;
}
.shopping-work-panel.level-green{border-color:#bbf7d0;border-left-color:#22c55e;background:linear-gradient(135deg,#fff,#f0fdf4)}
.shopping-work-panel.level-yellow{border-color:#fde68a;border-left-color:#f59e0b;background:linear-gradient(135deg,#fff,#fffbeb)}
.shopping-work-panel.level-red{border-color:#fca5a5;border-left-color:#dc2626;background:linear-gradient(135deg,#fff,#fff7f7)}
.shopping-work-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:12px;
}
.shopping-work-head h2{margin:0 0 3px;font-size:22px;letter-spacing:-.04em}
.shopping-work-head p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.35}
.shopping-work-head .compact-add{min-height:34px;padding:7px 11px;border-radius:12px;font-size:12px}
.shopping-work-metrics{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(135px,1fr));
    gap:8px;
}
.shopping-work-metrics a{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    border-radius:16px;
    min-height:70px;
    border:1px solid #e5e7eb;
    background:#fff;
    padding:8px 5px;
}
.shopping-work-metrics a b{font-size:25px;line-height:1;letter-spacing:-.05em}
.shopping-work-metrics a span{margin-top:4px;font-size:10.5px;line-height:1.1;color:#667085;font-weight:900}
.shopping-work-metrics a.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.shopping-work-metrics a.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.shopping-work-metrics a.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.shopping-list-item.blocks-incident{
    border-left:5px solid #dc2626;
    background:#fff7f7;
}
.shopping-block-chip{
    background:#fee2e2!important;
    color:#991b1b!important;
    border-color:#fecaca!important;
    font-weight:950!important;
}
.shopping-needed-for{
    margin:7px 0 0;
    color:#475467;
    font-size:12.5px;
    line-height:1.35;
}
.shopping-page-head .actions .small{
    min-width:34px;width:34px;height:34px;padding:0!important;border-radius:12px;display:inline-grid;place-items:center;font-weight:950;
}
.incident-material-linked{
    display:grid;
    gap:7px;
    margin-bottom:12px;
}
.incident-material-item{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:4px 10px;
    align-items:center;
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:14px;
    padding:9px 10px;
}
.incident-material-item.blocks{
    border-color:#fca5a5;
    background:#fff7f7;
}
.incident-material-item b{
    color:#111827;
    font-size:13px;
}
.incident-material-item span{
    grid-column:1;
    color:#667085;
    font-size:11.5px;
    font-weight:800;
}
.incident-material-item em{
    grid-row:1/3;
    grid-column:2;
    align-self:center;
    border-radius:999px;
    background:#fee2e2;
    color:#991b1b;
    padding:5px 8px;
    font-size:10.5px;
    font-style:normal;
    font-weight:950;
}
@media(max-width:800px){
    .shopping-work-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
    .shopping-work-head{flex-direction:column}
}


/* v3.1 cambio 054 - Formulario inteligente de material */
.shopping-conditional.hidden{
    display:none!important;
}
.shopping-help{
    border:1px solid #bbf7d0;
    background:#f0fdf4;
    color:#166534;
    border-radius:14px;
    padding:9px 10px;
    margin:8px 0;
}
.shopping-help b{
    display:block;
    font-size:13px;
    margin-bottom:2px;
}
.shopping-help span{
    display:block;
    font-size:12px;
    line-height:1.3;
}
.shopping-smart-form .hint{
    margin-top:4px;
}


/* v3.1 cambio 055 - Roadmap Sistema compacto tipo máquina */
.system-roadmap{
    display:block!important;
    border:1px solid #e5e7eb;
    border-radius:14px;
    background:#0f172a;
    padding:10px 12px;
    max-height:420px;
    overflow:auto;
}
.system-roadmap > p{
    margin:0 0 8px!important;
    color:#94a3b8!important;
    font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
    font-size:11px!important;
    line-height:1.35!important;
}
.system-roadmap div{
    display:grid!important;
    grid-template-columns:24px minmax(0,1fr)!important;
    align-items:start!important;
    gap:7px!important;
    padding:3px 0!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
}
.system-roadmap b{
    display:inline-grid!important;
    place-items:center!important;
    width:18px!important;
    height:18px!important;
    min-width:18px!important;
    border-radius:4px!important;
    background:transparent!important;
    font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important;
    font-size:11px!important;
    line-height:1!important;
    font-weight:950!important;
}
.system-roadmap .roadmap-done > b,
.system-roadmap .roadmap-check{
    color:#22c55e!important;
}
.system-roadmap .roadmap-pending > b{
    color:#ef4444!important;
}
.system-roadmap span{
    color:#cbd5e1!important;
    font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important;
    font-size:11.5px!important;
    line-height:1.35!important;
}
.system-roadmap span strong{
    color:#e5e7eb!important;
    font-weight:950!important;
}
.system-roadmap .roadmap-pending span strong{
    color:#fecaca!important;
}
.system-roadmap .roadmap-pending span{
    color:#e2e8f0!important;
}
.system-roadmap div:hover{
    background:rgba(255,255,255,.04)!important;
}
@media(max-width:900px){
    .system-roadmap div{
        grid-template-columns:24px minmax(0,1fr)!important;
    }
}


/* v3.1 cambio 056 - Registro de modificaciones blanco e inverso */
.system-roadmap{
    background:#ffffff!important;
    border:1px solid #e5e7eb!important;
    color:#111827!important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)!important;
}
.system-roadmap > p{
    color:#667085!important;
}
.system-roadmap div{
    border-bottom:1px dashed #eef2f6!important;
}
.system-roadmap div:last-child{
    border-bottom:0!important;
}
.system-roadmap span{
    color:#344054!important;
}
.system-roadmap span strong{
    color:#111827!important;
}
.system-roadmap .roadmap-done > b,
.system-roadmap .roadmap-check{
    color:#16a34a!important;
}
.system-roadmap .roadmap-pending > b{
    color:#dc2626!important;
}
.system-roadmap .roadmap-pending span{
    color:#344054!important;
}
.system-roadmap .roadmap-pending span strong{
    color:#dc2626!important;
}
.system-roadmap div:hover{
    background:#f8fafc!important;
}


/* v3.1 cambio 058 - Ordenación general del Portal TIC */
.main-nav-organized{
    gap:5px!important;
}
.nav-section-label{
    margin:12px 10px 3px;
    color:#98a2b3;
    font-size:10px;
    line-height:1;
    font-weight:950;
    letter-spacing:.12em;
    text-transform:uppercase;
}
.main-nav-organized > a{
    min-height:42px;
}
.main-nav-organized .nav-label{
    line-height:1.15;
}
.module-guide-strip{
    display:flex;
    align-items:flex-start;
    gap:10px;
    border:1px solid #e5e7eb;
    background:#fff;
    border-left:4px solid var(--red);
    border-radius:16px;
    padding:10px 12px;
    margin:0 0 14px;
    box-shadow:0 6px 18px rgba(15,23,42,.035);
}
.module-guide-strip b{
    color:#111827;
    font-size:12px;
    white-space:nowrap;
}
.module-guide-strip span{
    color:#667085;
    font-size:12px;
    line-height:1.35;
}
.client-module-guide{
    display:flex;
    flex-direction:column;
    gap:4px;
    border:1px solid #e5e7eb;
    border-left:4px solid #d90404;
    border-radius:16px;
    padding:12px 14px;
    margin:0 0 14px;
    background:#fff;
}
.client-module-guide b{
    font-size:14px;
    color:#111827;
}
.client-module-guide span{
    font-size:12.5px;
    color:#667085;
    line-height:1.4;
}
@media(max-width:640px){
    .nav-section-label{margin-top:10px}
    .module-guide-strip{flex-direction:column;gap:4px}
    .module-guide-strip b{white-space:normal}
}


/* v3.1 cambio 059 - Inicio operativo simplificado */
.home59-attention{
    border:1px solid #e5e7eb;
    border-left:6px solid #22c55e;
    background:#fff;
    border-radius:22px;
    padding:14px;
    box-shadow:0 12px 30px rgba(15,23,42,.045);
    margin-bottom:12px;
}
.home59-attention.level-yellow{border-left-color:#f59e0b;background:linear-gradient(135deg,#fff,#fffbeb)}
.home59-attention.level-red{border-left-color:#dc2626;background:linear-gradient(135deg,#fff,#fff7f7)}
.home59-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:10px;
}
.home59-head h2{margin:0 0 2px;font-size:22px;letter-spacing:-.04em}
.home59-head p{margin:0;color:#667085;font-size:12.5px}
.home59-actions{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}
.home59-actions a{
    display:inline-flex;align-items:center;justify-content:center;
    min-height:32px;border-radius:11px;border:1px solid #e5e7eb;background:#fff;
    padding:6px 10px;font-size:12px;font-weight:950;color:#344054;
}
.home59-actions a.primary{background:var(--red);border-color:var(--red);color:#fff}
.home59-attention-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:8px;
}
.home59-alert{
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-rows:auto auto;
    gap:2px 8px;
    align-items:center;
    border-radius:15px;
    border:1px solid #e5e7eb;
    background:#fff;
    padding:9px 10px;
}
.home59-alert b{grid-row:1/3;font-size:24px;line-height:1;letter-spacing:-.05em}
.home59-alert span{font-size:12px;font-weight:950;color:#111827;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home59-alert small{font-size:10.5px;color:#667085;font-weight:850}
.home59-alert.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.home59-alert.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.home59-all-ok{
    grid-column:1/-1;
    display:flex;align-items:center;gap:10px;
    border:1px solid #bbf7d0;background:#f0fdf4;color:#166534;border-radius:15px;padding:10px 12px;
}
.home59-all-ok>span{width:28px;height:28px;border-radius:999px;background:#22c55e;color:#fff;display:grid;place-items:center;font-weight:950}
.home59-all-ok b{display:block;font-size:13px}.home59-all-ok small{display:block;font-size:11.5px;color:#166534}

.home59-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:10px;
    align-items:start;
}
.home59-card{
    background:#fff;
    border:1px solid #e5e7eb;
    border-left:5px solid #22c55e;
    border-radius:20px;
    padding:12px;
    box-shadow:0 10px 24px rgba(15,23,42,.045);
    min-width:0;
}
.home59-card.level-yellow{border-left-color:#f59e0b}
.home59-card.level-red{border-left-color:#dc2626}
.home59-card header{
    display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;
}
.home59-card h3{margin:0 0 2px;font-size:17px;letter-spacing:-.035em}
.home59-card p{margin:0;color:#667085;font-size:11.8px;line-height:1.3}
.home59-card header>a{
    border:1px solid #e5e7eb;background:#f8fafc;color:#475467;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:950;
}
.home59-section{display:grid;gap:5px}
.home59-section>b,.home59-agenda b{
    display:block;margin:2px 0 5px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#475467;
}
.home59-section.danger{
    border:1px solid #fecaca;background:#fff7f7;border-radius:14px;padding:8px;
}
.home59-line{
    display:grid;
    grid-template-columns:78px minmax(0,1fr);
    gap:7px;
    align-items:center;
    border-radius:11px;
    border:1px solid #eef2f6;
    background:#f8fafc;
    padding:6px 8px;
}
.home59-line.compact{grid-template-columns:58px minmax(0,1fr);padding:5px 7px}
.home59-line strong{font-size:10.8px;color:#991b1b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home59-line span{font-size:12px;color:#344054;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home59-line:hover{background:#fff;border-color:#fecaca}
.home59-ok,.home59-mini-ok{
    display:flex;align-items:center;gap:7px;border-radius:12px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;
    padding:7px 9px;font-size:12px;font-weight:900;
}
.home59-mini-ok{display:inline-flex;padding:5px 8px;font-size:11.2px}
.home59-pills{display:flex;flex-wrap:wrap;gap:7px}
.home59-pills a{
    display:inline-flex;align-items:center;gap:6px;border:1px solid #e5e7eb;background:#f8fafc;border-radius:999px;padding:7px 10px;font-size:12px;font-weight:950;
}
.home59-pills a b{font-size:16px;line-height:1}
.home59-pills a.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.home59-pills a.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.home59-agenda{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:8px;
}
.home59-agenda>div{
    border:1px solid #eef2f6;background:#f8fafc;border-radius:14px;padding:8px;min-width:0;
}
.home59-bottom{
    margin-top:10px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:16px;
    padding:8px 10px;
}
.home59-bottom b{font-size:12px;color:#344054}
.home59-bottom div{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}
.home59-bottom a{
    border-radius:999px;background:#f8fafc;border:1px solid #e5e7eb;color:#475467;padding:6px 9px;font-size:11.5px;font-weight:900;
}
@media(max-width:1150px){
    .home59-attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .home59-grid{grid-template-columns:1fr}
    .home59-agenda{grid-template-columns:1fr}
}
@media(max-width:700px){
    .home59-head{flex-direction:column}
    .home59-actions{justify-content:flex-start}
    .home59-attention-grid{grid-template-columns:1fr}
    .home59-bottom{align-items:flex-start;flex-direction:column}
    .home59-bottom div{justify-content:flex-start}
}


/* v3.1 cambio 060 - Informes de seguimiento */
.reports-generator-card{
    border-left:5px solid var(--red);
}
.reports-toolbar{
    grid-template-columns:minmax(220px,1.3fr) 150px 150px 190px auto;
}
.reports-layout{
    display:grid;
    grid-template-columns:minmax(0,1fr) 360px;
    gap:14px;
    align-items:start;
}
.reports-main,.reports-side{
    display:grid;
    gap:14px;
}
.reports-side{
    position:sticky;
    top:84px;
}
.reports-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    justify-content:flex-end;
}
.report-preview-card{
    background:#f8fafc;
    padding:18px;
}
.report-printable{
    background:#fff;
    color:#111827;
    border:1px solid #e5e7eb;
    border-radius:18px;
    padding:26px;
    max-width:980px;
    margin:0 auto;
}
.report-print-head{
    display:flex;
    justify-content:space-between;
    gap:20px;
    align-items:flex-start;
    border-bottom:2px solid #111827;
    padding-bottom:14px;
    margin-bottom:18px;
}
.report-print-head small{
    display:block;
    font-weight:950;
    color:var(--red);
    letter-spacing:.08em;
    text-transform:uppercase;
    margin-bottom:4px;
}
.report-print-head h1{
    margin:0;
    font-size:28px;
    letter-spacing:-.04em;
}
.report-print-head p{
    margin:5px 0 0;
    color:#475467;
    font-weight:800;
}
.report-status{
    border-radius:999px;
    padding:7px 11px;
    font-size:12px;
    font-weight:950;
    white-space:nowrap;
    border:1px solid #e5e7eb;
}
.report-status.green{background:#f0fdf4;border-color:#bbf7d0;color:#166534}
.report-status.yellow{background:#fffbeb;border-color:#fde68a;color:#92400e}
.report-status.red{background:#fff1f2;border-color:#fca5a5;color:#991b1b}
.report-section{
    margin:18px 0;
}
.report-section h2{
    margin:0 0 8px;
    font-size:18px;
    letter-spacing:-.025em;
}
.report-section p{
    margin:0;
    color:#344054;
    line-height:1.55;
}
.report-table{
    width:100%;
    border-collapse:collapse;
    font-size:13px;
}
.report-table th{
    text-align:left;
    background:#f2f4f7;
    color:#344054;
    padding:8px;
    border:1px solid #e5e7eb;
    font-size:12px;
}
.report-table td{
    vertical-align:top;
    padding:8px;
    border:1px solid #e5e7eb;
    color:#344054;
    line-height:1.35;
}
.report-table td b{
    color:#111827;
}
.report-internal-only{
    border:1px dashed #f59e0b;
    background:#fffbeb;
    border-radius:14px;
    padding:12px;
}
.report-recommendations{
    white-space:normal;
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:14px;
    padding:12px;
    color:#344054;
    line-height:1.55;
}
.saved-report-list{
    display:grid;
    gap:10px;
}
.saved-report-list article{
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:14px;
    padding:10px;
}
.saved-report-list b{
    display:block;
    font-size:13px;
}
.saved-report-list span,
.saved-report-list small{
    display:block;
    color:#667085;
    font-size:11.5px;
    margin-top:3px;
}
.saved-report-actions{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:8px;
}
.saved-report-actions form{
    display:flex;
    gap:5px;
    align-items:center;
}
.saved-report-actions input{
    min-height:30px;
    max-width:140px;
    padding:5px 8px;
    font-size:11.5px;
}
.saved-report-list-modern article{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:14px;
    align-items:start;
    padding:14px;
    border-radius:18px;
}
.saved-report-main{
    min-width:0;
}
.saved-report-main .badge{
    margin-bottom:7px;
}
.saved-report-list-modern .saved-report-actions{
    justify-content:flex-end;
    max-width:520px;
}
.saved-report-list-modern .saved-report-actions form{
    margin:0;
}
.reports-upload-form{
    max-width:760px;
}
.client-report-list{
    display:grid;
    gap:12px;
}
.client-report-card{
    display:flex;
    justify-content:space-between;
    gap:14px;
    align-items:flex-start;
}
.client-report-card b{
    display:block;
    font-size:17px;
}
.client-report-card span{
    display:block;
    color:#667085;
    font-size:12px;
    font-weight:850;
    margin-top:4px;
}
.client-report-card p{
    margin:8px 0 0;
    color:#475467;
    font-size:13px;
}
.client-report-actions,
.client-report-view-actions{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    justify-content:flex-end;
}
.client-report-view-actions{
    margin-bottom:12px;
}
.client-report-view-card{
    background:#f8fafc;
}
@media(max-width:1100px){
    .reports-layout{grid-template-columns:1fr}
    .reports-side{position:static}
    .reports-toolbar{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
    .reports-toolbar{grid-template-columns:1fr}
    .report-printable{padding:16px}
    .report-print-head{flex-direction:column}
    .client-report-card{flex-direction:column}
    .client-report-actions{justify-content:flex-start}
}
@media print{
    .sidebar,.topbar,.reports-generator-card,.reports-actions,.reports-side,.card-head,.client-sidebar,.client-topbar,.client-page-hero,.client-report-view-actions,.client-brand,.client-nav{display:none!important}
    .main,.client-main{padding:0!important;margin:0!important}
    body{background:#fff!important}
    .report-preview-card,.client-report-view-card{box-shadow:none!important;border:0!important;padding:0!important;background:#fff!important}
    .report-printable{border:0!important;border-radius:0!important;max-width:none!important;padding:0!important}
}


/* v3.1 cambio 061 - informes en ventana + cabecera */
.reports-layout-no-preview{
    grid-template-columns:minmax(0,1fr) 380px;
}
.reports-tabs{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin:0 0 14px;
    padding:6px;
    background:#fff;
    border:1px solid var(--line);
    border-radius:18px;
    box-shadow:0 10px 26px rgba(15,23,42,.05);
}
.reports-tabs a{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:38px;
    padding:9px 14px;
    border-radius:13px;
    color:#344054;
    font-size:13px;
    font-weight:950;
}
.reports-tabs a.active{
    background:#111827;
    color:#fff;
    box-shadow:0 10px 20px rgba(15,23,42,.16);
}
.reports-context-filter{
    margin:-4px 0 14px;
}
.reports-context-filter select{
    min-width:280px;
}
.reports-includes-card,
.reports-saved-card,
.reports-upload-card{
    border-radius:22px;
}
.reports-launch-bar{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    align-items:center;
    margin-top:12px;
}
.reports-mini-stats{
    display:grid;
    grid-template-columns:repeat(5,minmax(0,1fr));
    gap:10px;
    margin-top:12px;
}
.reports-mini-stats article,
.report-feature-grid article,
.report-stats-grid article{
    border:1px solid var(--line);
    background:#fff;
    border-radius:16px;
    padding:12px 14px;
}
.reports-mini-stats b,
.report-stats-grid b{
    display:block;
    font-size:24px;
    font-weight:900;
    color:var(--ink);
    line-height:1;
    margin-bottom:6px;
}
.reports-mini-stats span,
.report-stats-grid span,
.report-feature-grid span{
    display:block;
    color:var(--muted);
    font-size:12px;
}
.report-feature-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px;
}
.report-feature-grid b{
    display:block;
    margin-bottom:4px;
    font-size:14px;
}
.report-preview-body{
    background:#eef2f6;
    color:#101828;
}
.report-preview-toolbar{
    position:sticky;
    top:0;
    z-index:30;
    display:flex;
    justify-content:space-between;
    gap:16px;
    align-items:center;
    background:#fff;
    border-bottom:1px solid #e5e7eb;
    padding:12px 18px;
}
.report-preview-shell{
    display:grid;
    grid-template-columns:minmax(0,1fr) 360px;
    gap:18px;
    align-items:start;
    padding:18px;
}
.report-preview-side{position:sticky;top:76px}
.report-preview-notice{margin:16px 18px 0}
.report-banner{
    width:100%;
    display:block;
    border-radius:18px;
    margin-bottom:18px;
    border:1px solid #e5e7eb;
}
.report-banner-slim{
    max-height:138px;
    object-fit:cover;
    object-position:center;
}
.report-document-head{
    display:flex;
    justify-content:space-between;
    gap:18px;
    align-items:flex-start;
    padding:18px;
    border:1px solid #e5e7eb;
    background:linear-gradient(180deg,#fff,#fbfcff);
    border-radius:18px;
    margin-bottom:18px;
}
.report-document-brand{
    display:flex;
    align-items:center;
    gap:14px;
    min-width:0;
}
.report-document-brand img{
    width:62px;
    height:62px;
    object-fit:contain;
    border-radius:18px;
    border:1px solid #fee2e2;
    background:#fff;
    box-shadow:0 10px 22px rgba(217,4,4,.10);
    flex:0 0 auto;
}
.report-document-brand h1{
    margin:0;
    font-size:30px;
    letter-spacing:-.04em;
}
.report-document-brand p{
    margin:5px 0 0;
    color:#667085;
    font-weight:800;
}
.report-meta-row{
    display:flex;
    justify-content:space-between;
    gap:16px;
    align-items:flex-start;
    margin-bottom:16px;
}
.report-overline{
    display:inline-block;
    font-size:12px;
    font-weight:900;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--red);
    margin-bottom:8px;
}
.report-meta-row h1{
    margin:0;
    font-size:32px;
    letter-spacing:-.04em;
}
.report-meta-row p,
.report-meta-side small{
    margin:6px 0 0;
    color:#667085;
}
.report-meta-side{
    display:grid;
    gap:8px;
    justify-items:end;
}
.report-stats-grid{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    gap:10px;
    margin:18px 0;
}
.report-stat-groups{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:12px;
    margin:18px 0;
}
.report-stat-group{
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:18px;
    padding:14px;
}
.report-stat-group h3{
    margin:0 0 10px;
    color:#111827;
    font-size:15px;
    letter-spacing:-.02em;
}
.report-stats-grid.compact{
    grid-template-columns:repeat(3,minmax(0,1fr));
    margin:0;
    gap:8px;
}
.report-stats-grid.compact article{
    padding:10px;
    border-radius:13px;
    background:#f8fafc;
}
.report-conclusion-box{
    border:1px solid #dbeafe;
    background:linear-gradient(135deg,#eff6ff,#f8fafc);
    border-left:5px solid #2563eb;
    border-radius:16px;
    padding:13px 15px;
}
.report-badges{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}
.report-badges span{
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:999px;
    padding:7px 11px;
    font-size:12px;
    font-weight:800;
    color:#344054;
}
@media(max-width:1180px){
    .reports-layout-no-preview,
    .report-preview-shell{grid-template-columns:1fr}
    .report-preview-side,
    .reports-side{position:static}
}
@media(max-width:900px){
    .reports-mini-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
    .report-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .report-stat-groups{grid-template-columns:1fr}
    .report-feature-grid{grid-template-columns:1fr}
    .report-preview-toolbar{padding:10px 12px;flex-direction:column;align-items:flex-start}
    .saved-report-list-modern article{grid-template-columns:1fr}
    .saved-report-list-modern .saved-report-actions{justify-content:flex-start;max-width:none}
}
@media(max-width:640px){
    .reports-mini-stats{grid-template-columns:1fr}
    .report-stats-grid{grid-template-columns:1fr}
    .report-meta-row{flex-direction:column}
    .report-document-head{flex-direction:column}
    .report-document-brand{align-items:flex-start}
    .report-stats-grid.compact{grid-template-columns:1fr}
    .report-meta-side{justify-items:start}
    .report-preview-shell{padding:12px}
    .report-printable{padding:16px}
}
@media print{
    .no-print{display:none!important}
    body.report-preview-body{background:#fff!important}
    .report-preview-shell{display:block;padding:0}
    .report-preview-main{padding:0}
    .report-banner{border:0!important;border-radius:0!important}
}


/* v3.1 cambio 063 - ventana emergente real para informes */
.report-window-body{
    background:#eef2f6;
    color:#101828;
    min-height:100vh;
}
.report-window-toolbar{
    position:sticky;
    top:0;
    z-index:50;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:12px 16px;
    background:rgba(255,255,255,.96);
    backdrop-filter:blur(12px);
    border-bottom:1px solid #e5e7eb;
}
.report-window-toolbar-left,
.report-window-toolbar-right{
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
}
.report-window-notice{
    max-width:1120px;
    margin:14px auto 0;
}
.report-window-main{
    max-width:1120px;
    margin:18px auto 32px;
    padding:0 16px;
}
.report-save-drawer{
    position:fixed;
    top:72px;
    right:16px;
    width:min(420px, calc(100vw - 32px));
    z-index:55;
    transform:translateX(calc(100% + 24px));
    transition:transform .22s ease;
}
body.report-save-open .report-save-drawer{
    transform:translateX(0);
}
.report-save-card{
    box-shadow:0 22px 60px rgba(15,23,42,.18);
}
@media(max-width:900px){
    .report-window-toolbar{flex-direction:column;align-items:flex-start}
    .report-save-drawer{top:118px;right:12px;width:min(420px, calc(100vw - 24px));}
}
@media print{
    .report-window-toolbar,
    .report-save-drawer,
    .report-window-notice,
    .no-print{display:none!important}
    body.report-window-body{background:#fff!important}
    .report-window-main{max-width:none!important;margin:0!important;padding:0!important}
    .report-printable{border:0!important;border-radius:0!important;max-width:none!important;padding:0!important;box-shadow:none!important}
    .report-banner{border:0!important;border-radius:0!important}
}


/* v3.1 cambio 065 - informes como documentos, PDF real y sello */
.report-signature{
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:14px;
    border-top:1px solid #e5e7eb;
    margin-top:26px;
    padding-top:18px;
}
.report-seal{
    width:82px;
    height:82px;
    border:3px solid rgba(217,4,4,.28);
    border-radius:999px;
    display:grid;
    place-items:center;
    background:#fff;
    box-shadow:0 10px 24px rgba(217,4,4,.12);
    transform:rotate(-6deg);
}
.report-seal img{
    max-width:62px;
    max-height:62px;
    display:block;
}
.report-signature div:last-child{
    text-align:right;
}
.report-signature span{
    display:block;
    color:#667085;
    font-size:11px;
    font-weight:850;
    text-transform:uppercase;
    letter-spacing:.08em;
}
.report-signature strong{
    display:block;
    color:#111827;
    font-size:20px;
    margin-top:3px;
    font-family:ui-serif,Georgia,"Times New Roman",serif;
    font-style:italic;
}
.report-signature em{
    display:block;
    color:#475467;
    font-size:12px;
    margin-top:2px;
}
.report-value-box{
    border:1px solid #fee2e2;
    background:linear-gradient(135deg,#fff,#fff7f7);
    border-left:5px solid var(--red);
    border-radius:16px;
    padding:12px 14px;
}
.client-reports-folder-hero,
.client-report-empty-folder{
    display:flex;
    align-items:center;
    gap:14px;
}
.folder-hero-icon{
    width:64px;
    height:54px;
    border-radius:16px;
    display:grid;
    place-items:center;
    font-size:32px;
    background:linear-gradient(135deg,#fff7ed,#fffbeb);
    border:1px solid #fed7aa;
    flex:0 0 auto;
}
.muted-icon{
    background:#f8fafc;
    border-color:#e5e7eb;
}
.client-report-folder-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
    gap:14px;
}
.client-report-doc-card{
    display:grid;
    grid-template-columns:70px minmax(0,1fr);
    gap:12px;
    align-items:start;
    min-height:190px;
    position:relative;
    overflow:hidden;
}
.client-report-doc-card::before{
    content:"";
    position:absolute;
    top:0;
    left:0;
    right:0;
    height:5px;
    background:linear-gradient(90deg,var(--red),#ef4444);
}
.report-doc-icon{
    width:62px;
    height:78px;
    border-radius:10px;
    background:linear-gradient(180deg,#fff,#f8fafc);
    border:1px solid #e5e7eb;
    box-shadow:0 10px 22px rgba(15,23,42,.08);
    position:relative;
    display:grid;
    place-items:end center;
    padding-bottom:10px;
}
.report-doc-icon::before{
    content:"";
    position:absolute;
    top:-1px;
    right:-1px;
    border-top:22px solid #fee2e2;
    border-left:22px solid transparent;
    border-radius:0 10px 0 0;
}
.report-doc-icon span{
    background:var(--red);
    color:#fff;
    border-radius:6px;
    padding:4px 7px;
    font-size:11px;
    font-weight:950;
}
.report-doc-body b{
    display:block;
    font-size:16px;
    line-height:1.2;
    margin:2px 0 5px;
}
.report-doc-body span{
    display:block;
    color:#344054;
    font-size:12px;
    font-weight:900;
}
.report-doc-body small{
    display:block;
    color:#667085;
    font-size:11.5px;
    margin-top:3px;
}
.report-doc-body p{
    margin:9px 0 0;
    color:#475467;
    font-size:12.5px;
    line-height:1.4;
}
.client-report-doc-card .client-report-actions{
    grid-column:1/-1;
    justify-content:flex-start;
    margin-top:4px;
}
.saved-report-actions .danger{
    background:#fff1f2!important;
    color:#991b1b!important;
    border-color:#fecaca!important;
}
@media(max-width:640px){
    .report-signature{
        justify-content:flex-start;
    }
    .report-signature div:last-child{
        text-align:left;
    }
    .client-reports-folder-hero,
    .client-report-empty-folder{
        align-items:flex-start;
    }
}
@media print{
    .report-signature{break-inside:avoid}
}


/* v3.1 cambio 067 - importación/exportación masiva de incidencias */
.bulk-inc-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:14px;
    align-items:start;
}
.bulk-card{
    border-left:5px solid var(--red);
}
.bulk-card h2{
    margin-bottom:2px;
}
.bulk-help-box{
    margin-top:12px;
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:14px;
    padding:10px 12px;
}
.bulk-help-box b{
    display:block;
    font-size:13px;
    margin-bottom:4px;
}
.bulk-help-box p{
    margin:0;
    color:#667085;
    font-size:12px;
    line-height:1.4;
}
.danger-zone{
    border-left-color:#dc2626;
    background:linear-gradient(180deg,#fff,#fff7f7);
}
.danger-zone textarea{
    min-height:120px;
}
.bulk-values{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
}
.bulk-values div{
    border:1px solid #e5e7eb;
    background:#fff;
    border-radius:14px;
    padding:10px 12px;
}
.bulk-values b{
    display:block;
    font-size:12px;
    margin-bottom:4px;
}
.bulk-values span{
    display:block;
    color:#667085;
    font-size:12px;
    line-height:1.35;
}
@media(max-width:1100px){
    .bulk-inc-grid{grid-template-columns:1fr}
    .bulk-values{grid-template-columns:1fr}
}


/* v3.1 cambio 071 - fechas editables en incidencias */
.incident-date-edit-grid{
    border:1px solid #e5e7eb;
    background:#f8fafc;
    border-radius:16px;
    padding:10px;
    margin:8px 0 10px;
}
.incident-date-edit-grid input[type="datetime-local"]{
    font-family:inherit;
}


/* v3.1 cambio 078 - Módulo de fichajes */
.time-clock-hero{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:18px;
  background:linear-gradient(135deg,#fff,#fff7f7);
  border-color:#fecaca;
}
.time-clock-hero h2{margin:10px 0 0;font-size:clamp(26px,3vw,40px);letter-spacing:-.04em}
.time-clock-total{
  min-width:220px;
  background:#111827;
  color:#fff;
  border-radius:22px;
  padding:18px 20px;
  box-shadow:0 16px 35px rgba(17,24,39,.16);
  text-align:right;
}
.time-clock-total span{display:block;color:#cbd5e1;font-size:13px;font-weight:800}
.time-clock-total strong{display:block;font-size:34px;letter-spacing:-.05em;margin-top:5px}
.time-clock-layout{margin-top:18px}
.time-clock-actions .actions{align-items:center}
.time-clock-main-btn{font-size:18px;padding:14px 22px}
.time-event-list{display:flex;flex-direction:column;gap:10px}
.time-event-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:16px;
  padding:12px 14px;
}
.time-event-item b{display:block;font-size:20px;letter-spacing:-.03em}
.time-event-item span{display:block;color:var(--muted);font-size:13px;font-weight:850}
.time-toolbar{align-items:end}
.time-toolbar > div{min-width:180px}
.compact-page-head{margin-bottom:14px}
.form-grid .full{grid-column:1/-1}

@media(max-width:900px){
  .time-clock-hero{flex-direction:column;align-items:stretch}
  .time-clock-total{text-align:left;min-width:0}
  .time-clock-layout{grid-template-columns:1fr}
  .time-toolbar > div{min-width:0;width:100%}
}
@media(max-width:640px){
  .time-clock-main-btn{width:100%}
  .time-clock-actions .actions{flex-direction:column;align-items:stretch}
  .time-clock-total strong{font-size:30px}
}


/* v3.1 cambio 080 - Equipo y fichajes */
.settings-tabs-title{
  margin:14px 8px 6px;
  font-size:11px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:#98a2b3;
}
.team-settings-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.team-settings-card{
  display:flex;
  flex-direction:column;
  gap:10px;
  border:1px solid var(--line);
  border-radius:20px;
  padding:18px;
  background:#fff;
  box-shadow:0 10px 26px rgba(15,23,42,.05);
  transition:.18s ease;
}
.team-settings-card:hover{
  transform:translateY(-2px);
  border-color:#fecaca;
  box-shadow:0 18px 36px rgba(217,4,4,.08);
}
.team-settings-card b{font-size:18px;letter-spacing:-.02em}
.team-settings-card small{color:var(--muted);line-height:1.45}
.team-mini-summary{
  margin:16px 0;
}
.team-mini-summary .card{
  text-align:center;
}
.team-mini-summary .card b{
  display:block;
  font-size:34px;
  letter-spacing:-.05em;
  color:var(--red);
}
.team-mini-summary .card span{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-weight:850;
}
.settings-row small{
  display:block;
  margin-top:3px;
  color:var(--muted);
}
#technicianModal .modal-card{
  max-width:720px;
}
@media(max-width:800px){
  .team-settings-grid{grid-template-columns:1fr}
}

/* v3.1 cambio 082 - Menú lateral plegable y tareas simplificadas */
.main-nav-collapsible{gap:8px!important}
.main-nav-collapsible .nav-group{margin:2px 0!important;gap:0!important}
.main-nav-collapsible .nav-group-title{
  width:100%;
  cursor:pointer;
  justify-content:flex-start;
  border:1px solid #edf0f5;
  background:#fff;
  min-height:46px;
}
.main-nav-collapsible .nav-caret{
  margin-left:auto;
  color:#98a2b3;
  font-size:13px;
  transition:transform .18s ease;
}
.main-nav-collapsible .nav-group.open .nav-caret{transform:rotate(180deg);color:var(--red)}
.main-nav-collapsible .nav-subitems{
  display:none;
  padding:7px 0 7px 16px;
  margin:2px 0 4px 17px;
  border-left:2px solid #fee2e2;
}
.main-nav-collapsible .nav-group.open .nav-subitems{display:flex}
.main-nav-collapsible .nav-subitems a{min-height:38px;padding:9px 11px!important}
.main-nav-collapsible .nav-subitems a.active{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;box-shadow:0 10px 20px rgba(217,4,4,.16)}
.main-nav-collapsible .nav-subitems a.active .nav-ico{background:rgba(255,255,255,.18);color:#fff}
body.sidebar-collapsed .main-nav-collapsible .nav-caret,
body.sidebar-collapsed .main-nav-collapsible .nav-subitems{display:none!important}
body.sidebar-collapsed .main-nav-collapsible .nav-group-title{justify-content:center}
body.sidebar-collapsed .main-nav-collapsible .nav-group-title .nav-label{display:none!important}

/* v3.1 cambio 083 - Menu reorganizado por logica de trabajo diario */
.main-nav-collapsible{padding-bottom:18px}
.nav-section-label{display:flex;align-items:center;gap:8px;margin:16px 8px 6px;color:#8a94a6;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.nav-section-label:first-child{margin-top:4px}
.nav-section-label:after{content:"";height:1px;background:#edf0f5;flex:1}
.main-nav-collapsible .nav-direct,
.main-nav-collapsible .nav-group-title{min-height:52px}
.main-nav-collapsible .nav-group.open{background:#fff;border:1px solid #fee2e2;border-radius:18px;padding:6px;box-shadow:0 12px 28px rgba(217,4,4,.06)}
.main-nav-collapsible .nav-group.open .nav-group-title{border-color:transparent;background:#fff;color:#b80000}
.main-nav-collapsible .nav-group.open .nav-subitems{border-left:0;margin-left:0;padding-left:0;padding-top:3px}
.main-nav-collapsible .nav-subitems a{color:#334155}
.main-nav-collapsible .nav-subitems a:hover{background:#f8fafc;color:#111827}
.main-nav-collapsible .nav-subitems a.active{color:#fff}
.main-nav-collapsible .nav-direct.active{box-shadow:0 14px 25px rgba(217,4,4,.20)}
body.sidebar-collapsed .main-nav-collapsible .nav-group.open{background:transparent;border:0;padding:0;box-shadow:none}
body.sidebar-collapsed .nav-section-label{display:none}

/* v3.1 cambio 084b - Menu lateral compacto */
.sidebar{overflow-y:auto;scrollbar-width:thin}
.main-nav-collapsible{gap:6px!important}
.main-nav-collapsible .nav-group-title,
.main-nav-collapsible .nav-direct{min-height:46px!important;padding:9px 11px!important;border-radius:14px!important}
.main-nav-collapsible .nav-subitems{max-height:calc(100vh - 250px);overflow:auto;padding:4px!important;margin:0!important;border-left:0!important;gap:4px!important}
.main-nav-collapsible .nav-subitems a{min-height:34px!important;padding:7px 9px!important;border-radius:11px!important;font-size:13px!important}
.main-nav-collapsible .nav-subitems .nav-ico{width:24px;height:24px;border-radius:8px}
.main-nav-collapsible .nav-subitems .nav-ico svg{width:16px;height:16px}
.nav-subheading{display:block;margin:8px 8px 3px;color:#98a2b3;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}
.nav-section-label{display:none!important}
body.sidebar-collapsed .nav-subheading{display:none!important}

/* v3.1 cambio 085 - Calendario fase 1 estable */
.calendar-load-notice{display:block;margin:10px 0 12px;background:#f8fafc;border:1px solid #e5eaf2;border-radius:16px;padding:11px 13px;color:#475467;font-weight:850}
.calendar-load-notice.bad{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.calendar-repeat-grid{margin-top:8px}
.calendar-repeat-grid input[type="number"]{max-width:160px}
.calendar-day-event-button{width:100%;text-align:left;border:1px solid #edf0f5;background:#fbfcff;color:#111827;border-radius:16px;padding:12px;box-shadow:none;justify-content:flex-start;display:block}
.calendar-day-event-button:hover{border-color:#bfdbfe;background:#eff6ff;transform:none}
.calendar-day-event-button b,
.calendar-day-event-button span,
.calendar-day-event-button small{display:block}
.calendar-day-event-button span{color:#475467;margin-top:3px}
.calendar-day-event-button small{color:#667085;margin-top:5px;font-weight:700}

/* v3.1 cambio 086 - Solicitud cliente de asistencia remota AnyDesk */
.client-welcome-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.remote-support-btn{border-color:#bfdbfe!important;background:#eff6ff!important;color:#1d4ed8!important}
.client-remote-card{border-left:6px solid #2563eb}
.remote-help-box{display:flex;gap:12px;align-items:flex-start;background:#eff6ff;border:1px solid #bfdbfe;border-radius:16px;padding:12px 14px;margin:14px 0;color:#1e3a8a}
.remote-help-box b{font-size:14px}
.remote-help-box span{color:#334155;line-height:1.45}
.remote-auth-check{border:1px solid #bfdbfe!important;background:#eff6ff!important;color:#1e3a8a}
@media(max-width:720px){
  .client-welcome-actions{width:100%;flex-direction:column}
  .client-welcome-actions .btn{width:100%}
  .remote-help-box{flex-direction:column;gap:4px}
}
.task-date-title{font-weight:950;color:#111827}
.notebook-mainline h3{line-height:1.25}
.messages-toolbar .inline-check,
.task-notebook-filters .inline-check{white-space:nowrap}
@media(max-width:960px){
  .main-nav-collapsible .nav-caret{display:inline-block!important}
  .main-nav-collapsible .nav-group-title .nav-label{display:inline-block!important}
  .main-nav-collapsible .nav-subitems a .nav-label{display:inline-block!important}
}

/* v3.1 cambio 084 - Panel de hoy y planificación de incidencias */
.today-hero{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;background:linear-gradient(135deg,#fff,#fff7f7);border:1px solid #fecaca;border-radius:28px;padding:24px;box-shadow:var(--shadow);margin-bottom:18px}.today-hero h2{margin:6px 0;font-size:clamp(25px,3vw,40px);letter-spacing:-.045em;line-height:1.05}.today-hero p{margin:0;color:var(--muted);max-width:820px}.today-date{display:inline-flex;background:#fee2e2;color:#991b1b;border-radius:999px;padding:6px 11px;font-weight:900;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.today-quick-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.today-quick-actions a{border-radius:999px;padding:10px 13px;background:#fff;border:1px solid var(--line);font-weight:900;box-shadow:0 10px 22px rgba(15,23,42,.05)}.today-quick-actions a.primary{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;border:0}.today-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.today-summary-card{display:block;background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow);border-left:6px solid #e5e7eb}.today-summary-card b{display:block;font-size:38px;letter-spacing:-.05em;line-height:1}.today-summary-card span{display:block;font-weight:950;margin-top:7px}.today-summary-card small{display:block;color:var(--muted);margin-top:3px}.today-summary-card.red{border-left-color:#dc2626;background:linear-gradient(180deg,#fff,#fff7f7)}.today-summary-card.yellow{border-left-color:#f59e0b;background:linear-gradient(180deg,#fff,#fffbeb)}.today-summary-card.ok{border-left-color:#16a34a}.today-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(340px,.75fr);gap:16px;align-items:start}.today-side{display:grid;gap:16px}.today-bottom-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.today-card{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:18px;overflow:hidden}.today-card.main-card{padding:20px}.today-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.today-card header h3{margin:0;font-size:22px;letter-spacing:-.03em}.today-card header p{margin:4px 0 0;color:var(--muted);font-size:13px}.today-card header a{font-weight:900;color:var(--red);white-space:nowrap}.today-block{border-top:1px solid #edf0f5;padding-top:14px;margin-top:14px}.today-block:first-of-type{border-top:0;padding-top:0;margin-top:0}.today-block h4{margin:0 0 10px;font-size:15px;text-transform:uppercase;letter-spacing:.04em;color:#475467}.today-line{display:flex;gap:12px;align-items:flex-start;border:1px solid #edf0f5;background:#fbfcff;border-radius:16px;padding:11px 12px;margin:8px 0}.today-line:hover{border-color:#fecaca;background:#fff7f7}.today-line strong{min-width:92px;color:#111827;font-size:13px}.today-line span{color:#344054;font-weight:800;line-height:1.35}.today-line.compact strong{min-width:68px}.today-line.danger{border-color:#fecaca;background:#fff7f7}.today-alert{display:block;border:1px solid #edf0f5;border-left:6px solid #e5e7eb;border-radius:16px;padding:12px;margin:9px 0;background:#fbfcff}.today-alert b{display:block;font-size:14px}.today-alert span{display:block;color:#475467;font-weight:800;margin-top:3px}.today-alert.red{border-left-color:#dc2626;background:#fff7f7}.today-alert.yellow{border-left-color:#f59e0b;background:#fffbeb}.today-alert.neutral{border-left-color:#64748b}.today-empty{background:#f8fafc;border:1px dashed #d0d5dd;border-radius:16px;padding:12px;color:var(--muted);font-weight:800;margin:8px 0}.incident-planned-mini{display:inline-flex;margin-top:5px;color:#92400e;background:#fef3c7;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:900}.client-visit-day-pill{display:inline-flex;border-radius:999px;background:#eef2ff;color:#3730a3;padding:4px 9px;font-size:12px;font-weight:900}
@media(max-width:1180px){.today-layout{grid-template-columns:1fr}.today-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.today-bottom-grid{grid-template-columns:1fr}.today-hero{flex-direction:column}.today-quick-actions{justify-content:flex-start}}
@media(max-width:640px){.today-hero{padding:18px;border-radius:22px}.today-summary-grid{grid-template-columns:1fr}.today-card{border-radius:20px;padding:15px}.today-line{flex-direction:column;gap:4px}.today-line strong{min-width:0}.today-quick-actions a{flex:1;text-align:center;justify-content:center}.today-card header{flex-direction:column}}

/* v3.1 cambio 089 - Estadisticas visuales internas y cliente */
.service-stats-panel{margin:0 0 18px}
.service-chart-card{display:grid;grid-template-columns:minmax(0,1fr) 190px minmax(260px,.75fr);gap:20px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:20px}
.service-chart-copy h3{margin:5px 0 6px;font-size:24px;letter-spacing:-.035em}
.service-chart-copy p{margin:0;color:var(--muted);line-height:1.45}
.eyebrow{display:inline-flex;border-radius:999px;background:#fee2e2;color:#991b1b;padding:5px 10px;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.service-chart-total{display:flex;align-items:end;gap:10px;margin-top:14px}
.service-chart-total b{font-size:38px;line-height:1;letter-spacing:-.05em}
.service-chart-total span{color:#667085;font-weight:900}
.service-donut{width:178px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--segments));position:relative;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}
.service-donut:after{content:"";position:absolute;inset:28px;border-radius:50%;background:#fff;box-shadow:0 10px 25px rgba(15,23,42,.08)}
.service-donut>div{position:relative;z-index:1;text-align:center}
.service-donut b{display:block;font-size:34px;line-height:1;letter-spacing:-.05em}
.service-donut span{display:block;color:#667085;font-weight:900;margin-top:4px}
.service-chart-legend{display:flex;flex-direction:column;gap:9px}
.service-chart-legend a{display:grid;grid-template-columns:14px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #edf0f5;background:#fbfcff;border-radius:14px;padding:10px 11px;font-weight:900}
.service-chart-legend a:hover{background:#fff7f7;border-color:#fecaca}
.service-chart-legend i{width:11px;height:11px;border-radius:999px}
.service-chart-legend span{color:#344054}
.service-chart-legend b{font-size:18px}
.client-service-stats .service-chart-card{background:linear-gradient(180deg,#fff,#fbfcff)}
@media(max-width:1180px){.service-chart-card{grid-template-columns:1fr 180px}.service-chart-legend{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.service-chart-card{grid-template-columns:1fr}.service-donut{width:min(210px,75vw);margin:auto}.service-chart-legend{grid-template-columns:1fr}}

/* v3.1 cambio 090 - Area cliente mas clara y actual */
.client-filter-panel{padding:20px;margin-bottom:18px}
.client-filter-panel .card-head{align-items:center;margin-bottom:14px}
.client-status-strip{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin:0 0 14px;
}
.client-status-strip a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border:1px solid #e5e7eb;
  background:#fff;
  border-radius:16px;
  padding:12px 14px;
  box-shadow:0 8px 20px rgba(15,23,42,.04);
  transition:.16s ease;
}
.client-status-strip a:hover{border-color:#fecaca;background:#fff7f7}
.client-status-strip a.active{border-color:#d90404;background:#fff7f7;box-shadow:0 12px 26px rgba(217,4,4,.10)}
.client-status-strip b{font-size:26px;line-height:1;letter-spacing:-.04em;color:#111827}
.client-status-strip span{font-weight:950;color:#475467}
.client-filter-toolbar{margin:0;align-items:center}
.client-filter-toolbar input{min-width:260px;flex:1}
.client-filter-toolbar select{max-width:230px}
.client-incidents-list{gap:12px}
.client-incident-card-modern{
  position:relative;
  overflow:hidden;
  padding:18px;
  border-radius:20px;
  box-shadow:0 10px 28px rgba(15,23,42,.06);
  border-left:5px solid #f59e0b;
}
.client-incident-card-modern.is-done{border-left-color:#22c55e}
.client-incident-card-modern.is-waiting{border-left-color:#f59e0b;background:linear-gradient(180deg,#fff,#fffbeb)}
.client-incident-card-modern.is-open{border-left-color:#ef4444;background:linear-gradient(180deg,#fff,#fffafa)}
.client-incident-id{
  display:inline-flex;
  width:max-content;
  border-radius:999px;
  background:#f3f4f6;
  color:#475467;
  padding:4px 8px;
  font-size:12px;
  font-weight:950;
  margin-bottom:7px;
}
.client-incident-card-modern .client-incident-top h2{
  margin:0;
  font-size:22px;
  letter-spacing:-.025em;
}
.client-incident-card-modern .client-incident-top p{margin:4px 0 0;color:#667085;font-weight:850}
.client-incident-meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:13px 0 0;
}
.client-incident-meta span{
  display:inline-flex;
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:999px;
  padding:6px 9px;
  color:#475467;
  font-size:12px;
  font-weight:900;
}
.client-incident-desc{
  margin:14px 0 0!important;
  color:#344054!important;
  line-height:1.55;
}
.client-incident-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-top:1px solid #edf0f5;
  margin-top:14px;
  padding-top:12px;
}
.client-empty-state{text-align:left;border-style:dashed}
@media(max-width:900px){
  .client-status-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  .client-filter-toolbar input,.client-filter-toolbar select{max-width:none;min-width:0;width:100%}
}
@media(max-width:640px){
  .client-filter-panel .card-head{align-items:flex-start}
  .client-status-strip{grid-template-columns:1fr}
  .client-status-strip a{padding:11px 12px}
  .client-incident-footer{flex-direction:column;align-items:stretch}
  .client-incident-footer .btn{width:100%}
}

/* v3.1 cambio 091 - Pulido visual global, mas app y menos pesado */
:root{
  --radius:18px;
  --shadow:0 10px 30px rgba(15,23,42,.065);
  --shadow-strong:0 18px 46px rgba(15,23,42,.11);
}
.card,.today-card,.service-chart-card,.client-welcome-card,.client-portal-header{
  box-shadow:var(--shadow);
}
.card:hover,.today-card:hover,.service-chart-card:hover{
  border-color:#dfe4ec;
}
.btn,button{
  min-height:40px;
  transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.btn:hover,button:hover{
  transform:translateY(-1px);
}
.btn.primary:hover,button.primary:hover{
  box-shadow:0 14px 28px rgba(217,4,4,.20);
}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:3px solid rgba(217,4,4,.22);
  outline-offset:2px;
}
.toolbar{
  align-items:center;
}
.table-wrap{
  box-shadow:0 8px 22px rgba(15,23,42,.045);
}
tbody tr:hover td{
  background:#fbfcff;
}
th{
  z-index:2;
}
.badge{
  white-space:nowrap;
}
.modal-card{
  box-shadow:var(--shadow-strong);
}
@media(max-width:640px){
  .main,.client-main{padding:12px}
  .card{padding:16px}
  .btn,button{min-height:42px}
}

/* v3.1 cambio 092 - Detalle de incidencia cliente tipo app */
.client-incident-detail-hero{
  display:grid;
  grid-template-columns:minmax(0,1fr) 280px;
  gap:18px;
  align-items:stretch;
  border:1px solid #e5e7eb;
  border-radius:24px;
  padding:22px;
  margin-bottom:18px;
  background:linear-gradient(135deg,#fff,#fbfcff);
  box-shadow:var(--shadow);
}
.client-incident-detail-hero.open{border-color:#fecaca;background:linear-gradient(135deg,#fff,#fff7f7)}
.client-incident-detail-hero.waiting{border-color:#fed7aa;background:linear-gradient(135deg,#fff,#fffbeb)}
.client-incident-detail-hero.done{border-color:#bbf7d0;background:linear-gradient(135deg,#fff,#f0fdf4)}
.client-incident-detail-hero.cancelled{border-color:#e5e7eb;background:linear-gradient(135deg,#fff,#f8fafc)}
.client-detail-main h2{
  margin:8px 0 8px;
  font-size:clamp(26px,3vw,42px);
  letter-spacing:-.045em;
  line-height:1.05;
}
.client-detail-main p{margin:0;color:#667085;font-weight:800}
.client-detail-status-card{
  display:flex;
  flex-direction:column;
  justify-content:center;
  border:1px solid rgba(255,255,255,.65);
  background:#111827;
  color:#fff;
  border-radius:20px;
  padding:18px;
  box-shadow:0 16px 36px rgba(15,23,42,.15);
}
.client-detail-status-card span{color:#cbd5e1;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.05em}
.client-detail-status-card b{font-size:28px;line-height:1.05;margin:8px 0;letter-spacing:-.035em}
.client-detail-status-card small{color:#e5e7eb;font-weight:850;line-height:1.35}
.client-detail-progress{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
  margin-top:18px;
}
.client-detail-progress span{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  border:1px solid #e5e7eb;
  background:#fff;
  color:#667085;
  border-radius:999px;
  padding:8px 9px;
  font-size:12px;
  font-weight:950;
  text-align:center;
}
.client-detail-progress span.active{
  border-color:#d90404;
  background:#fee2e2;
  color:#991b1b;
}
.client-detail-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(330px,.72fr);
  gap:16px;
  align-items:start;
}
.client-detail-content-card h3{margin:18px 0 8px;font-size:20px}
.client-detail-content-card p{line-height:1.6;color:#344054}
.client-detail-chips{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:10px;
  margin-bottom:12px;
}
.client-detail-chips span{
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:16px;
  padding:11px 12px;
  color:#344054;
  font-weight:900;
}
.client-detail-chips b{
  display:block;
  color:#98a2b3;
  font-size:11px;
  text-transform:uppercase;
  letter-spacing:.05em;
  margin-bottom:4px;
}
.client-resolution-highlight{
  border-left:5px solid #22c55e;
  background:#f0fdf4;
}
.client-detail-photo{
  margin-top:16px;
  border:1px solid #e5e7eb;
  border-radius:18px;
  overflow:hidden;
  background:#f8fafc;
}
.client-detail-photo img{
  display:block;
  width:100%;
  max-height:460px;
  object-fit:contain;
  background:#fff;
}
.client-detail-timeline-card{
  position:sticky;
  top:18px;
}
.client-public-timeline{
  display:flex;
  flex-direction:column;
  gap:0;
  margin-top:4px;
}
.client-public-timeline-item{
  display:grid;
  grid-template-columns:22px 1fr;
  gap:10px;
  position:relative;
  padding:0 0 16px;
}
.client-public-timeline-item:before{
  content:"";
  position:absolute;
  left:7px;
  top:18px;
  bottom:0;
  width:2px;
  background:#fee2e2;
}
.client-public-timeline-item:last-child:before{display:none}
.client-public-dot{
  width:16px;
  height:16px;
  border-radius:999px;
  margin-top:3px;
  background:linear-gradient(135deg,var(--red),var(--red2));
  box-shadow:0 0 0 4px #fee2e2;
  z-index:1;
}
.client-public-timeline-item b{display:block;font-size:15px}
.client-public-timeline-item time{display:block;margin-top:2px;color:#667085;font-size:12px;font-weight:900}
.client-public-timeline-item small{
  display:inline-flex;
  margin-top:7px;
  border-radius:999px;
  background:#f3f4f6;
  color:#475467;
  padding:4px 8px;
  font-size:12px;
  font-weight:900;
}
.client-public-timeline-item p{margin:8px 0 0;color:#344054;line-height:1.45}
@media(max-width:1050px){
  .client-incident-detail-hero,.client-detail-layout{grid-template-columns:1fr}
  .client-detail-timeline-card{position:static}
  .client-detail-chips{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  .client-incident-detail-hero{padding:18px;border-radius:20px}
  .client-detail-progress{grid-template-columns:1fr 1fr}
  .client-detail-chips{grid-template-columns:1fr}
  .client-detail-status-card b{font-size:24px}
}

/* v3.1 cambio 097 - Campaña publica centros educativos */
.campaign-page{min-height:100vh;background:#0f172a;color:#111827}
.campaign-shell{width:min(1180px,100%);min-height:100vh;min-height:100dvh;margin:0 auto;padding:22px;display:grid;align-items:center}
.campaign-hero{display:none;background:#fff;border:1px solid #e5e7eb;border-radius:24px;padding:28px;box-shadow:0 18px 52px rgba(15,23,42,.10);overflow:hidden;position:relative}
.campaign-hero:before{content:"";position:absolute;inset:0 auto 0 0;width:7px;background:linear-gradient(180deg,#d90404,#b80000)}
.campaign-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px;color:#475467;font-weight:900}
.campaign-brand img{width:64px;height:64px;object-fit:contain;border-radius:18px;border:1px solid #fee2e2;background:#fff;box-shadow:0 10px 24px rgba(217,4,4,.14)}
.campaign-hero h1{margin:0;max-width:780px;font-size:clamp(34px,5vw,64px);line-height:1;letter-spacing:-.055em}
.campaign-hero p{max-width:780px;color:#475467;font-size:18px;line-height:1.5;margin:16px 0 0}
.campaign-benefits{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.campaign-benefits span,.campaign-pill{display:inline-flex;border-radius:999px;background:#fee2e2;color:#991b1b;padding:7px 11px;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.04em}
.campaign-card{background:#fff;border:1px solid #e5e7eb;border-radius:22px;box-shadow:0 14px 38px rgba(15,23,42,.08);padding:24px;margin-top:18px}
.campaign-intro-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.7fr);gap:22px;align-items:start}
.campaign-card h2{margin:0 0 8px;font-size:28px;letter-spacing:-.035em}
.campaign-card p{color:#475467;line-height:1.55}
.campaign-privacy{font-size:13px;background:#f8fafc;border:1px solid #edf0f5;border-radius:14px;padding:10px 12px}
.campaign-form label{font-weight:950;margin-top:0}.campaign-form label span{color:#667085}
.campaign-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.campaign-video-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:16px}
.campaign-video-head small{background:#f8fafc;border:1px solid #edf0f5;border-radius:999px;padding:8px 10px;color:#475467;font-weight:900}
.campaign-video-card video{width:100%;border-radius:18px;background:#000;box-shadow:0 12px 28px rgba(15,23,42,.12)}
.campaign-contact{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:18px;border-top:1px solid #edf0f5;padding-top:18px}
.campaign-contact h2{font-size:24px}.campaign-contact p{margin:0}
.campaign-whatsapp{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#16a34a;color:#fff;font-weight:950;padding:12px 18px;box-shadow:0 14px 26px rgba(22,163,74,.18)}
.campaign-footer{text-align:center;color:#667085;font-weight:850;font-size:13px;margin:20px 0}
.campaign-video-stage{
  position:relative;
  min-height:min(680px,calc(100vh - 44px));
  min-height:min(680px,calc(100dvh - 44px));
  border-radius:24px;
  overflow:hidden;
  background:#000;
  box-shadow:0 28px 70px rgba(0,0,0,.35);
  display:grid;
  place-items:center;
}
.campaign-video-stage video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.72;
  filter:saturate(.95) contrast(1.05);
}
.campaign-video-scrim{
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(15,23,42,.82),rgba(15,23,42,.42),rgba(15,23,42,.78));
}
.campaign-gate-card{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  z-index:1;
  width:min(460px,calc(100% - 28px));
  background:rgba(255,255,255,.96);
  border:1px solid rgba(255,255,255,.72);
  border-radius:20px;
  padding:22px;
  box-shadow:0 24px 60px rgba(0,0,0,.28);
  backdrop-filter:blur(14px);
}
.campaign-gate-card.is-hidden,.campaign-video-scrim.is-hidden{display:none}
.campaign-gate-brand{display:flex;align-items:center;gap:10px;margin-bottom:14px;color:#475467;font-weight:950;font-size:13px}
.campaign-gate-brand img{width:46px;height:46px;object-fit:contain;border-radius:14px;border:1px solid #fee2e2;background:#fff}
.campaign-gate-card h1{margin:0 0 8px;font-size:30px;letter-spacing:-.04em;line-height:1.05}
.campaign-gate-card p{margin:0 0 16px;color:#475467;line-height:1.45}
.campaign-gate-card label{margin-top:0}
.campaign-gate-card small{display:block;margin-top:12px;color:#667085;font-size:12px;font-weight:800}
.campaign-video-direct{width:100%;margin:0}
.campaign-video-direct .campaign-video-head h1{margin:6px 0 0;font-size:clamp(24px,3vw,36px);letter-spacing:-.04em}
.campaign-admin-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}
.campaign-admin-kpi b{display:block;font-size:34px;line-height:1;letter-spacing:-.05em;color:#d90404}
.campaign-admin-kpi span{display:block;margin-top:8px;color:#475467;font-weight:900}
.campaign-admin-layout{align-items:start}
@media(max-width:1050px){.campaign-admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.campaign-intro-card{grid-template-columns:1fr}.campaign-contact{align-items:flex-start;flex-direction:column}}
@media(max-width:640px){.campaign-shell{width:100%;min-height:100vh;min-height:100dvh;padding:0}.campaign-video-stage{width:100%;min-height:100vh;min-height:100dvh;border-radius:0}.campaign-video-stage video{object-fit:cover}.campaign-gate-card{width:min(380px,calc(100% - 28px));max-height:calc(100dvh - 32px);overflow:auto;padding:16px;border-radius:18px}.campaign-gate-brand img{width:38px;height:38px;border-radius:12px}.campaign-gate-card h1{font-size:24px}.campaign-gate-card p{font-size:14px;margin-bottom:12px}.campaign-gate-card small{font-size:11px}.campaign-hero,.campaign-card{border-radius:18px;padding:18px}.campaign-brand img{width:54px;height:54px}.campaign-hero p{font-size:16px}.campaign-actions .btn,.campaign-actions button,.campaign-whatsapp{width:100%}.campaign-video-head{flex-direction:column}.campaign-admin-grid{grid-template-columns:1fr}}

/* v3.1 cambio 098 - Estadisticas de campana agrupadas */
.campaign-admin-layout{
    grid-template-columns:minmax(0,1.45fr) minmax(320px,.55fr);
    align-items:start;
}
.campaign-session-table{
    min-width:980px;
}
.campaign-session-table td{
    vertical-align:middle;
}
.campaign-session-table td:first-child{
    min-width:190px;
}
.campaign-session-table td:nth-child(2){
    min-width:190px;
}
.campaign-session-table .badge{
    justify-content:center;
}
@media(max-width:1050px){
    .campaign-admin-layout{grid-template-columns:1fr}
}

/* v3.1 cambio 093 - Area cliente visual 2: menu superior y cabecera compacta */
.client-portal-shell-v2{
  display:block;
  min-height:100vh;
}
.client-portal-shell-v2 .client-main{
  width:min(1440px,100%);
  margin:0 auto;
  padding:18px 22px 28px;
}
.client-app-header{
  position:sticky;
  top:0;
  z-index:60;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  background:rgba(255,255,255,.94);
  border:1px solid #e5e7eb;
  border-radius:16px;
  padding:10px 12px;
  margin-bottom:14px;
  box-shadow:0 10px 28px rgba(15,23,42,.07);
  backdrop-filter:blur(12px);
}
.client-app-brand{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:220px;
}
.client-app-brand img{
  width:44px;
  height:44px;
  object-fit:contain;
  border-radius:12px;
  background:#fff;
  border:1px solid #fee2e2;
  box-shadow:0 8px 18px rgba(217,4,4,.10);
}
.client-app-brand strong{display:block;font-size:16px;letter-spacing:-.025em;line-height:1}
.client-app-brand small{display:block;color:#667085;font-size:12px;margin-top:3px;font-weight:800}
.client-nav-top{
  display:flex;
  flex-direction:row;
  gap:6px;
  align-items:center;
  justify-content:center;
  overflow:auto;
  scrollbar-width:none;
}
.client-nav-top::-webkit-scrollbar{display:none}
.client-nav-top a{
  flex:0 0 auto;
  min-height:40px;
  border-radius:12px;
  padding:8px 10px;
  font-size:13px;
  box-shadow:none;
}
.client-nav-top span{
  width:26px;
  height:26px;
  border-radius:9px;
}
.client-app-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
}
.client-app-actions .client-period-control{
  width:230px;
  margin:0;
  padding:6px 8px;
  border-radius:14px;
  box-shadow:none;
  background:#fff;
}
.client-app-actions .client-period-control form{
  display:grid;
  grid-template-columns:1fr;
  gap:4px;
}
.client-app-actions .client-period-control label{
  display:none;
}
.client-app-actions .client-period-control select{
  min-height:36px;
  border-radius:12px;
  padding:7px 10px;
  font-size:12px;
  font-weight:950;
}
.client-app-actions .client-period-control small{
  display:none;
}
.client-user-link{
  display:flex;
  min-height:42px;
  border-radius:14px;
  padding:8px 11px;
  color:#111827;
}
.client-user-link.active{
  border-color:#fecaca;
  background:#fff7f7;
}
.client-period-row{
  display:flex;
  justify-content:flex-end;
  margin:-4px 0 14px;
}
.client-period-row .client-period-control{
  width:min(340px,100%);
  margin:0;
  padding:10px 12px;
  border-radius:14px;
  box-shadow:none;
}
.client-period-row .client-period-control form{
  display:grid;
  grid-template-columns:auto minmax(120px,1fr);
  gap:8px 10px;
  align-items:center;
}
.client-period-row .client-period-control label{margin:0}
.client-period-row .client-period-control small{grid-column:1/-1;margin:0}
.client-page-hero-v2{
  margin-bottom:14px;
}
.client-page-hero-v2 .client-portal-header-overlay{
  aspect-ratio:auto!important;
  height:142px!important;
  min-height:142px!important;
  max-height:142px!important;
  border-radius:16px!important;
  box-shadow:0 10px 26px rgba(15,23,42,.07)!important;
  background:#fff!important;
}
.client-page-hero-v2 .client-portal-header-overlay img{
  object-fit:contain!important;
  background:#fff!important;
}
.client-page-hero-v2 .client-hero-section-card{
  left:16px!important;
  right:auto!important;
  bottom:14px!important;
  max-width:min(720px,calc(100% - 32px))!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  color:#fff!important;
  box-shadow:none!important;
  text-shadow:0 2px 16px rgba(0,0,0,.38);
}
.client-page-hero-v2 .client-hero-section-card h1{
  font-size:clamp(24px,2.5vw,34px)!important;
  line-height:1.04!important;
}
.client-page-hero-v2 .client-hero-section-card p{
  color:rgba(255,255,255,.92)!important;
  max-width:780px;
}
.client-topbar-v2{
  border:1px solid #e5e7eb;
  background:linear-gradient(135deg,#fff,#fff7f7);
  border-radius:16px;
  padding:18px 20px;
  box-shadow:var(--shadow);
  border-color:#fecaca;
  margin-bottom:16px;
}
.client-topbar-v2 .client-hero-copy h1{
  font-size:clamp(26px,2.6vw,36px);
  letter-spacing:-.04em;
}
.client-topbar-v2 .client-hero-copy p{
  max-width:900px;
}
.client-private-banner{
  width:100%;
  aspect-ratio:6 / 1;
  max-height:260px;
  min-height:150px;
  border:1px solid #e5e7eb;
  border-radius:16px;
  overflow:hidden;
  background:#fff;
  box-shadow:0 10px 26px rgba(15,23,42,.07);
  margin-bottom:16px;
}
.client-private-banner img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
}
@media(max-width:1120px){
  .client-app-header{grid-template-columns:1fr auto;align-items:start}
  .client-nav-top{grid-column:1/-1;justify-content:flex-start;order:3}
  .client-app-actions{justify-content:flex-end;flex-wrap:wrap}
  .client-app-actions .client-period-control{width:210px}
}
@media(max-width:720px){
  .client-portal-shell-v2 .client-main{padding:12px}
  .client-app-header{position:relative;grid-template-columns:1fr;padding:10px;border-radius:14px}
  .client-app-brand{min-width:0}
  .client-app-actions{justify-content:space-between;flex-wrap:wrap}
  .client-app-actions .client-period-control{width:100%;order:5}
  .client-nav-top{width:100%;justify-content:flex-start}
  .client-nav-top a{font-size:12px;padding:8px 9px}
  .client-page-hero-v2 .client-portal-header-overlay{
    height:104px!important;
    min-height:104px!important;
    max-height:104px!important;
    border-radius:14px!important;
  }
  .client-page-hero-v2 .client-hero-section-card{left:12px!important;bottom:10px!important;max-width:calc(100% - 24px)!important}
  .client-page-hero-v2 .client-hero-section-card h1{font-size:22px!important}
  .client-page-hero-v2 .client-hero-section-card p{display:none}
  .client-private-banner{
    aspect-ratio:4 / 1;
    min-height:96px;
    border-radius:14px;
  }
  .client-period-row{justify-content:stretch}
  .client-period-row .client-period-control{width:100%}
}

/* v3.1 cambio 099 - Revision final area cliente */
body.client-page-inicio .client-topbar-v2{
  display:none;
}
body.client-page-inicio .client-app-header{
  margin-bottom:12px;
}
body.client-page-inicio .client-private-banner{
  max-height:230px;
  min-height:132px;
  margin-bottom:14px;
}
.client-dashboard-welcome{
  padding:20px 22px;
  border-radius:20px;
  align-items:center;
}
.client-dashboard-welcome h2{
  font-size:clamp(23px,2.2vw,30px);
}
.client-dashboard-welcome p{
  max-width:820px;
}
.client-dashboard-label{
  display:inline-flex;
  width:max-content;
  margin-bottom:7px;
  border-radius:999px;
  background:#fee2e2;
  color:#991b1b;
  padding:4px 9px;
  font-size:12px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.04em;
}
body.client-page-inicio .client-service-stats{
  margin-bottom:16px;
}
body.client-page-inicio .service-chart-card{
  grid-template-columns:minmax(0,.9fr) 180px minmax(280px,.8fr);
  padding:20px 22px;
  border-radius:20px;
}
body.client-page-inicio .service-chart-total b{
  font-size:32px;
}
body.client-page-inicio .client-two-cols .card{
  border-radius:20px;
}
@media(max-width:1180px){
  body.client-page-inicio .service-chart-card{grid-template-columns:1fr 180px}
}
@media(max-width:720px){
  body.client-page-inicio .client-private-banner{
    margin-top:0;
    min-height:86px;
    max-height:130px;
  }
  .client-dashboard-welcome{
    padding:16px;
    align-items:stretch;
  }
  .client-dashboard-welcome .btn{
    width:100%;
  }
  body.client-page-inicio .service-chart-card{
    grid-template-columns:1fr;
    padding:16px;
  }
}

/* v3.1 cambio 100 - Cabecera cliente mas clara y compacta */
.client-app-header{
  grid-template-columns:minmax(170px,210px) minmax(430px,1fr) auto;
  gap:10px;
  padding:9px 10px;
}
.client-app-brand{
  min-width:0;
}
.client-nav-top{
  justify-content:flex-start;
  gap:5px;
  background:#f8fafc;
  border:1px solid #edf0f5;
  border-radius:14px;
  padding:4px;
}
.client-nav-top a{
  min-height:38px;
  padding:7px 9px;
  border-radius:10px;
  border:1px solid transparent;
  color:#344054;
  font-size:12px;
  line-height:1;
  white-space:nowrap;
}
.client-nav-top a:not(.active){
  background:#fff;
  border-color:#edf0f5;
}
.client-nav-top a.active{
  box-shadow:0 10px 18px rgba(217,4,4,.18);
}
.client-nav-top span{
  width:24px;
  height:24px;
  border-radius:8px;
}
.client-app-actions{
  gap:6px;
}
.client-app-actions .client-period-control{
  width:210px;
  padding:4px;
  border-color:#fecaca;
}
.client-app-actions .client-sidebar-course::before,
.client-app-actions .client-sidebar-course::after{
  display:none!important;
}
.client-app-actions .client-period-control select{
  min-height:34px;
  padding:6px 9px;
}
body.client-page-inicio .client-private-banner{
  max-height:220px;
  min-height:128px;
}
.client-dashboard-welcome{
  padding:13px 18px;
  margin-bottom:14px;
  border-radius:18px;
}
.client-dashboard-welcome h2{
  font-size:21px;
}
.client-dashboard-welcome p{
  margin-top:4px;
}
.client-dashboard-label{
  display:none;
}
@media(max-width:1280px){
  .client-app-header{grid-template-columns:1fr auto}
  .client-nav-top{grid-column:1/-1;order:3;overflow:auto}
  .client-app-actions{flex-wrap:wrap}
}
@media(max-width:720px){
  .client-app-header{grid-template-columns:1fr}
  .client-nav-top{width:100%;padding:4px}
  .client-nav-top a{font-size:12px;padding:7px 8px}
  .client-app-actions .client-period-control{width:100%;order:5}
  .client-dashboard-welcome{padding:14px}
}

/* v3.1 cambio 101 - Graficos adicionales portal cliente */
.client-dashboard-insights{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin:0 0 18px;
}
.client-insight-card{
  padding:16px;
  border-radius:20px;
}
.client-insight-head{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:flex-start;
  margin-bottom:12px;
}
.client-insight-head span{
  display:block;
  color:#667085;
  font-size:12px;
  font-weight:950;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.client-insight-head h3{
  margin:3px 0 0;
  font-size:23px;
  letter-spacing:-.035em;
}
.client-insight-head>a,
.client-insight-head>b{
  display:inline-flex;
  border-radius:999px;
  background:#f8fafc;
  border:1px solid #edf0f5;
  color:#344054;
  padding:5px 9px;
  font-size:12px;
  font-weight:950;
  white-space:nowrap;
}
.client-mini-bars,
.client-course-bars{
  display:grid;
  gap:9px;
}
.client-mini-bars div{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:6px 10px;
  align-items:center;
}
.client-mini-bars span,
.client-course-bars span{
  color:#344054;
  font-size:13px;
  font-weight:850;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.client-mini-bars b,
.client-course-bars b{
  font-size:13px;
}
.client-mini-bars i{
  grid-column:1/-1;
  height:8px;
  border-radius:999px;
  background:linear-gradient(90deg,#14b8a6 var(--w),#edf0f5 var(--w));
}
.client-stacked-meter{
  height:14px;
  display:flex;
  overflow:hidden;
  border-radius:999px;
  background:#edf0f5;
  border:1px solid #e5e7eb;
  margin:4px 0 12px;
}
.client-stacked-meter i.read{background:#22c55e}
.client-stacked-meter i.unread{background:#f59e0b}
.client-meter-legend{
  display:grid;
  gap:7px;
}
.client-meter-legend span{
  display:flex;
  justify-content:space-between;
  gap:8px;
  align-items:center;
  color:#344054;
  font-weight:850;
}
.client-meter-legend i{
  width:10px;
  height:10px;
  border-radius:999px;
  margin-right:6px;
}
.client-meter-legend i.read{background:#22c55e}
.client-meter-legend i.unread{background:#f59e0b}
.client-report-mini-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-bottom:10px;
}
.client-report-mini-grid div{
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:14px;
  padding:9px;
}
.client-report-mini-grid b{
  display:block;
  font-size:22px;
  line-height:1;
}
.client-report-mini-grid span{
  display:block;
  color:#667085;
  font-size:11px;
  font-weight:900;
  margin-top:5px;
}
.client-course-bars div{
  display:grid;
  grid-template-columns:76px minmax(0,1fr) auto;
  gap:8px;
  align-items:center;
}
.client-course-bars i{
  height:12px;
  border-radius:999px;
  background:
    linear-gradient(90deg,#22c55e var(--done),transparent var(--done)),
    linear-gradient(90deg,#38bdf8 var(--w),#edf0f5 var(--w));
  box-shadow:inset 0 0 0 1px rgba(15,23,42,.04);
}
@media(max-width:1180px){
  .client-dashboard-insights{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .client-dashboard-insights{grid-template-columns:1fr}
  .client-course-bars div{grid-template-columns:88px minmax(0,1fr) auto}
}

/* v3.1 cambio 102 - Estadisticas cliente orientadas a diagnostico */
.client-stats-layout-v2{
  display:grid;
  grid-template-columns:minmax(220px,.72fr) minmax(0,1.48fr) minmax(280px,.95fr);
  gap:14px;
  margin:0 0 16px;
  align-items:stretch;
}
.client-donut-card-v2{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  padding:16px;
  border-radius:20px;
}
.client-donut-card-v2 .service-donut{
  width:148px;
}
.client-donut-card-v2 .service-donut:after{
  inset:23px;
}
.client-donut-total{
  display:flex;
  align-items:flex-end;
  gap:7px;
}
.client-donut-total b{
  font-size:32px;
  line-height:1;
  letter-spacing:-.05em;
}
.client-donut-total span{
  color:#667085;
  font-weight:900;
}
.client-donut-legend{
  width:100%;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
}
.client-donut-legend a{
  display:grid;
  grid-template-columns:10px minmax(0,1fr) auto;
  align-items:center;
  gap:6px;
  padding:6px 7px;
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:11px;
  font-size:11px;
  font-weight:900;
}
.client-donut-legend i{
  width:9px;
  height:9px;
  border-radius:999px;
}
.client-month-card,
.client-type-card{
  border-radius:20px;
  padding:16px;
}
.client-month-bars{
  min-height:176px;
  display:grid;
  grid-template-columns:repeat(10,minmax(0,1fr));
  gap:8px;
  align-items:end;
}
.client-month-bars div{
  min-width:0;
  display:grid;
  grid-template-rows:20px 1fr 18px;
  gap:5px;
  align-items:end;
  text-align:center;
}
.client-month-bars b{
  font-size:12px;
  color:#344054;
}
.client-month-bars i{
  width:100%;
  min-height:7px;
  height:var(--h);
  border-radius:9px 9px 4px 4px;
  background:linear-gradient(180deg,#38bdf8,#2563eb);
  box-shadow:0 8px 18px rgba(37,99,235,.14);
}
.client-month-bars span{
  color:#667085;
  font-size:11px;
  font-weight:900;
}
.client-type-bars{
  display:grid;
  gap:10px;
}
.client-type-bars div{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:6px 10px;
  align-items:center;
}
.client-type-bars span{
  color:#344054;
  font-size:13px;
  font-weight:900;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.client-type-bars b{
  font-size:13px;
}
.client-type-bars i{
  grid-column:1/-1;
  height:10px;
  border-radius:999px;
  background:linear-gradient(90deg,#2563eb var(--w),#edf0f5 var(--w));
}
.client-origin-strip{
  display:flex;
  min-height:42px;
  overflow:hidden;
  border-radius:16px;
  background:#edf0f5;
  border:1px solid #e5e7eb;
  margin:4px 0 16px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75);
}
.client-origin-strip i{
  min-width:4px;
}
.client-origin-list{
  display:grid;
  gap:9px;
}
.client-origin-list div{
  display:flex;
  justify-content:space-between;
  gap:10px;
  align-items:center;
  padding:8px 10px;
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:13px;
}
.client-origin-list span{
  min-width:0;
  display:flex;
  align-items:center;
  gap:8px;
  color:#344054;
  font-size:13px;
  font-weight:900;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.client-origin-list span i{
  flex:0 0 auto;
  width:10px;
  height:10px;
  border-radius:999px;
}
.client-origin-list b{
  color:#0f172a;
  font-size:12px;
  white-space:nowrap;
}
.client-inventory-treemap{
  min-height:216px;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-content:stretch;
}
.client-inventory-treemap div{
  flex:var(--w) 1 112px;
  min-height:74px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:6px;
  border-radius:16px;
  padding:11px;
  color:#fff;
  background:
    linear-gradient(135deg,rgba(255,255,255,.18),rgba(255,255,255,0)),
    var(--c);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);
  overflow:hidden;
}
.client-inventory-treemap b{
  font-size:24px;
  line-height:1;
  letter-spacing:-.04em;
}
.client-inventory-treemap span{
  font-size:12px;
  font-weight:950;
  line-height:1.2;
  word-break:break-word;
}
.client-inventory-treemap small{
  color:rgba(255,255,255,.82);
  font-size:11px;
  font-weight:900;
}
.client-dashboard-insights-compact{
  grid-template-columns:minmax(320px,1.1fr) minmax(220px,.75fr) minmax(240px,.85fr);
  grid-auto-flow:dense;
  align-items:stretch;
}
.client-dashboard-insights-compact .client-insight-card:first-child{
  grid-row:span 2;
}
.client-dashboard-insights-compact .client-insight-card{
  min-height:0;
}
.client-dashboard-insights-compact .client-report-mini-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.client-period-summary .card-head{
  margin-bottom:12px;
}
.client-summary-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.client-summary-grid div{
  min-width:0;
  border:1px solid #edf0f5;
  background:#fbfcff;
  border-radius:15px;
  padding:12px;
}
.client-summary-grid span,
.client-summary-grid small{
  display:block;
  color:#667085;
  font-size:12px;
  font-weight:900;
}
.client-summary-grid b{
  display:block;
  margin:4px 0 3px;
  color:#0f172a;
  font-size:22px;
  line-height:1.05;
  letter-spacing:-.035em;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
@media(max-width:1180px){
  .client-stats-layout-v2{grid-template-columns:1fr 1fr}
  .client-type-card{grid-column:1/-1}
  .client-dashboard-insights-compact{grid-template-columns:1fr 1fr}
  .client-dashboard-insights-compact .client-insight-card:first-child{grid-row:auto;grid-column:1/-1}
}
@media(max-width:720px){
  .client-stats-layout-v2,
  .client-dashboard-insights-compact{grid-template-columns:1fr}
  .client-type-card{grid-column:auto}
  .client-month-bars{grid-template-columns:repeat(5,minmax(0,1fr));min-height:240px}
  .client-dashboard-insights-compact .client-insight-card:first-child{grid-column:auto}
  .client-summary-grid{grid-template-columns:1fr}
}

/* Inicio operativo siempre accesible */
.brand-home-link{
  color:inherit;
  text-decoration:none;
}
.brand-home-link:hover .brand-copy strong{
  color:#d90404;
}
.topbar-home-link{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:44px;
  padding:0 14px;
  border:1px solid #e5e7eb;
  border-radius:14px;
  background:#fff;
  color:#0f172a;
  text-decoration:none;
  font-size:13px;
  font-weight:950;
  box-shadow:0 8px 20px rgba(15,23,42,.05);
}
.topbar-home-link:hover{
  border-color:#fecaca;
  color:#d90404;
}
.topbar-home-link .nav-ico{
  width:28px;
  height:28px;
}
.home-command-panel{
  margin-bottom:16px;
  padding:18px;
  border:1px solid #dbe3ef;
  border-radius:22px;
  background:
    linear-gradient(135deg,rgba(255,255,255,.96),rgba(248,250,252,.96)),
    radial-gradient(circle at 10% 0,rgba(217,4,4,.08),transparent 32%);
  box-shadow:0 18px 46px rgba(15,23,42,.08);
}
.home-command-head{
  display:flex;
  justify-content:space-between;
  gap:18px;
  align-items:flex-start;
  margin-bottom:16px;
}
.home-command-head h2{
  margin:6px 0 5px;
  color:#0f172a;
  font-size:28px;
  line-height:1.06;
  letter-spacing:0;
}
.home-command-head p{
  margin:0;
  max-width:760px;
  color:#53627a;
  font-size:14px;
  line-height:1.55;
}
.home-command-actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:9px;
}
.home-command-actions a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:0 14px;
  border:1px solid #e5e7eb;
  border-radius:13px;
  background:#fff;
  color:#0f172a;
  text-decoration:none;
  font-size:13px;
  font-weight:950;
  white-space:nowrap;
}
.home-command-actions a.primary{
  border-color:#d90404;
  background:#d90404;
  color:#fff;
  box-shadow:0 12px 24px rgba(217,4,4,.18);
}
.home-command-metrics{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.home-command-metric{
  min-width:0;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:2px 10px;
  align-items:center;
  padding:13px;
  border:1px solid #e5e7eb;
  border-left:5px solid #cbd5e1;
  border-radius:16px;
  background:#fff;
  color:#0f172a;
  text-decoration:none;
}
.home-command-metric b{
  grid-row:span 2;
  min-width:40px;
  color:#0f172a;
  font-size:28px;
  line-height:1;
  letter-spacing:0;
}
.home-command-metric span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:13px;
  font-weight:950;
}
.home-command-metric small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#667085;
  font-size:11px;
  font-weight:850;
}
.home-command-metric.ok{border-left-color:#22c55e}
.home-command-metric.warn{border-left-color:#f59e0b}
.home-command-metric.hold{border-left-color:#38bdf8}
.home-command-metric.info{border-left-color:#6366f1}
@media(max-width:1180px){
  .home-command-head{flex-direction:column}
  .home-command-actions{justify-content:flex-start}
  .home-command-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .topbar-home-link span:last-child{display:none}
  .topbar-home-link{padding:0 9px}
  .home-command-panel{padding:14px;border-radius:18px}
  .home-command-head h2{font-size:23px}
  .home-command-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .home-command-metrics{grid-template-columns:1fr}
}

/* Portada operativa limpia */
.home-command-panel{
  padding:16px;
  border-color:#e5e7eb;
  background:#fff;
  box-shadow:0 12px 32px rgba(15,23,42,.06);
}
.home-command-head{
  margin-bottom:12px;
}
.home-command-head h2{
  margin-top:4px;
  font-size:24px;
}
.home-command-head p{
  max-width:640px;
}
.home-command-metric{
  padding:11px 12px;
  border-left-width:4px;
  box-shadow:none;
}
.home-command-metric b{
  min-width:34px;
  font-size:24px;
}
.home-command-actions a{
  min-height:38px;
  box-shadow:none;
}
.home-command-actions a.primary{
  box-shadow:0 8px 18px rgba(217,4,4,.14);
}
.today-layout{
  margin-top:14px;
}

/* Pulido de flujos operativos */
.incident-problem-cell b{
  display:block;
  color:#0f172a;
  font-size:14px;
  line-height:1.35;
  font-weight:950;
}
.incident-problem-cell span{
  display:block;
  margin-top:4px;
  color:#667085;
  font-size:12px;
  font-weight:850;
}
.shopping-work-panel,
.calendar-focus-panel,
.reports-generator-card{
  box-shadow:0 12px 32px rgba(15,23,42,.055);
}
.shopping-work-head p,
.calendar-focus-head p,
.reports-generator-card .muted{
  line-height:1.45;
}

/* Inicio: agenda con citas realizadas claras */
.today-line.done{
  border-color:#bbf7d0;
  background:#f0fdf4;
}
.today-line.done strong,
.today-line.done span{
  color:#166534;
}
.today-line.done span{
  text-decoration:line-through;
  text-decoration-thickness:2px;
  text-decoration-color:rgba(22,101,52,.32);
}
.today-line.done span em{
  display:inline-flex;
  margin-left:6px;
  padding:2px 7px;
  border-radius:999px;
  background:#dcfce7;
  color:#166534;
  font-style:normal;
  font-size:11px;
  font-weight:950;
  text-decoration:none;
}
.today-done-check{
  display:inline-grid;
  place-items:center;
  width:20px;
  height:20px;
  margin-right:7px;
  border-radius:999px;
  background:#22c55e;
  color:#fff;
  font-style:normal;
  font-size:13px;
  font-weight:950;
  line-height:1;
}

/* Calendario: colores por tipo y semana más limpia */
.calendar-type-inline{
  display:flex;
  gap:7px;
  flex-wrap:wrap;
  align-items:center;
  margin-left:auto;
}
.calendar-type-inline span{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:30px;
  padding:5px 10px;
  border:1px solid #e5e7eb;
  border-radius:999px;
  background:#fff;
  color:#344054;
  font-size:12px;
  font-weight:950;
}
.legend-dot.personal{background:#64748b}
.fc .fc-timegrid-axis-cushion,
.fc .fc-timegrid-axis-frame{
  font-weight:850;
}
.fc .fc-timegrid-all-day{
  display:none!important;
}
.fc .fc-bg-event.cal-block-day{
  display:none!important;
}
.fc .fc-timegrid-event{
  min-width:0!important;
  box-shadow:0 8px 16px rgba(15,23,42,.10)!important;
}
.fc .fc-timegrid-event .fc-event-main{
  overflow:hidden;
}
.fc .cal-type-taller{background:#dc2626!important}
.fc .cal-type-exterior{background:#2563eb!important}
.fc .cal-type-remoto{background:#059669!important}
.fc .cal-type-mantenimiento,
.fc .cal-type-revision-preventiva{background:#d97706!important}
.fc .cal-type-personal{background:#64748b!important}
@media(max-width:900px){
  .calendar-type-inline{
    width:100%;
    margin-left:0;
  }
}

/* Selector de acceso publico: gestion interna / area cliente */
.login-access-switch{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
  margin:14px 0 18px;
  padding:5px;
  border:1px solid #e5e7eb;
  border-radius:16px;
  background:#f8fafc;
}
.login-access-switch a,
.login-access-switch span{
  min-height:42px;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 12px;
  border-radius:12px;
  color:#344054;
  text-decoration:none;
  font-size:13px;
  font-weight:950;
  text-align:center;
}
.login-access-switch .active{
  background:#d90404;
  color:#fff;
  box-shadow:0 10px 22px rgba(217,4,4,.16);
}
.login-access-switch a:hover{
  background:#fff;
  color:#d90404;
}
.login-client-shortcut{
  margin-top:16px;
  padding:13px;
  border:1px solid #fee2e2;
  border-radius:16px;
  background:#fff7f7;
  display:grid;
  gap:4px;
}
.login-client-shortcut b{
  color:#111827;
  font-size:14px;
}
.login-client-shortcut span{
  color:#667085;
  font-size:13px;
  line-height:1.35;
}
.login-client-shortcut a{
  margin-top:5px;
  color:#d90404;
  font-weight:950;
  text-decoration:none;
}
.login-client-shortcut.internal{
  border-color:#e5e7eb;
  background:#f8fafc;
}

/* Vinculacion rapida de incidencias con inventario */
button.inventory-mini-icon{
  appearance:none;
  border:0;
  padding:0;
  font:inherit;
}
.inventory-quick-link-btn{
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.inventory-quick-link-btn:hover{
  transform:translateY(-1px) scale(1.06);
  box-shadow:0 0 0 4px rgba(190,24,24,.10);
}
.inventory-quick-link-btn:focus-visible{
  outline:2px solid #b91c1c;
  outline-offset:3px;
}
.inventory-quick-link-card{
  width:min(620px,calc(100vw - 28px));
}
.inventory-quick-incident{
  display:grid;
  gap:5px;
  margin:0 0 18px;
  padding:13px 15px;
  border:1px solid var(--line,#e5e7eb);
  border-radius:12px;
  background:var(--soft,#f8fafc);
}
.inventory-quick-incident span{
  color:var(--muted,#64748b);
  font-size:.9rem;
}
#inventoryQuickLinkForm label{
  display:block;
  margin-top:12px;
}
#inventoryQuickLinkForm select{
  width:100%;
}


/* v4.0 - Clientes mixtos, navegación y carga mental reducida */
.modal{background:rgba(15,23,42,.58);backdrop-filter:blur(3px)}
.modal.open{pointer-events:auto}.modal:not(.open){pointer-events:none}
.modal-card{box-shadow:0 28px 80px rgba(15,23,42,.28)}
.clients-grid-operational{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.client-card-operational{border-radius:18px;min-height:0}
.client-card-operational .client-card-body{padding:15px;display:flex;flex-direction:column;gap:11px}
.client-card-operational .client-card-title{margin:0;display:block}
.client-card-operational .client-card-title h2{font-size:18px;line-height:1.2}
.client-title-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.client-card-operational .client-operational-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
.client-card-operational .client-operational-summary a{padding:7px 3px;border-radius:10px;text-align:center}
.client-card-operational .client-operational-summary b{font-size:18px}
.client-card-operational .client-operational-summary span{font-size:10px}
.client-contact-brief{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:13px;color:#667085}
.client-actions-compact{justify-content:flex-end;margin-top:auto}.client-actions-compact .primary{min-width:95px}
.client-form-section{border:1px solid #e5e7eb;border-radius:16px;margin:12px 0;background:#fff}
.client-form-section>summary{cursor:pointer;padding:14px 16px;font-weight:900;list-style:none}
.client-form-section>summary::-webkit-details-marker{display:none}
.client-form-section>summary:after{content:'+';float:right;color:var(--red)}
.client-form-section[open]>summary:after{content:'−'}
.client-form-section-body{padding:0 16px 16px}.academic-only.hidden,.academic-setting.hidden{display:none!important}
.home-postits{align-items:stretch;gap:14px}.home-postit{border:0!important;border-radius:4px 4px 14px 4px!important;min-height:132px;padding:18px!important;transform:rotate(-.4deg);box-shadow:0 12px 24px rgba(15,23,42,.12)!important}
.home-postit:nth-child(even){transform:rotate(.5deg)}.home-postit:nth-child(1){background:#fee2e2!important}.home-postit:nth-child(2){background:#fef3c7!important}.home-postit:nth-child(3){background:#dbeafe!important}.home-postit:nth-child(4){background:#dcfce7!important}.home-postit:nth-child(5){background:#ede9fe!important}
.home-postit b{font-size:36px!important}.home-postit span{font-size:15px!important}.home-postit small{opacity:.72}
@media(max-width:1180px){.clients-grid-operational{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.clients-grid-operational{grid-template-columns:1fr}.home-postit{transform:none!important;min-height:105px}.client-card-operational .client-operational-summary{grid-template-columns:repeat(3,1fr)}}

/* Inicio compacto V5 */
.home-compact-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px;padding:10px 14px;border:1px solid var(--line);border-radius:16px;background:#fff}
.home-compact-title{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}.home-compact-title strong{font-size:16px;color:#0f172a}.home-compact-title>span:not(.today-date){font-size:12px;font-weight:850;color:#64748b}.home-head-warning{color:#b91c1c!important;background:#fef2f2;border-radius:999px;padding:4px 8px}.home-compact-actions a{min-height:34px;padding:0 11px;font-size:12px;border-radius:10px}
.home-mini-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:12px}.home-mini-metrics a{display:flex;align-items:center;gap:9px;min-width:0;padding:10px 12px;border:1px solid #e5e7eb;border-radius:14px;background:#fff;text-decoration:none;color:#0f172a}.home-mini-metrics b{font-size:23px;line-height:1}.home-mini-metrics span{font-size:12px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-mini-metrics a.danger{border-left:4px solid #dc2626}.home-mini-metrics a.warning{border-left:4px solid #f59e0b}.home-mini-metrics a.waiting{border-left:4px solid #3b82f6}.home-mini-metrics a.purchase{border-left:4px solid #16a34a}
.home-compact-layout{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.7fr);gap:12px;align-items:start}.home-compact-card,.home-upcoming-visits{border:1px solid var(--line);border-radius:18px;background:#fff;padding:14px;box-shadow:0 8px 24px rgba(15,23,42,.05)}.home-compact-card header,.home-upcoming-visits>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.home-compact-card h2,.home-upcoming-visits h2{margin:0;font-size:18px}.home-compact-card header p,.home-upcoming-visits header p{margin:2px 0 0;color:var(--muted);font-size:11px}.home-compact-card header a,.home-upcoming-visits header a{font-size:12px;font-weight:950;color:var(--red)}
.home-timeline{display:grid;gap:5px}.home-timeline-row{display:grid;grid-template-columns:62px 74px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px 9px;border:1px solid #edf0f5;border-radius:11px;background:#fbfcff;text-decoration:none;color:#0f172a}.home-timeline-row:hover{border-color:#fecaca;background:#fff7f7}.home-timeline-row.is-danger{border-left:4px solid #dc2626;background:#fff8f8}.home-timeline-row time{font-size:11px;font-weight:950}.home-kind{display:inline-flex;justify-content:center;padding:3px 6px;border-radius:999px;background:#eef2f7;font-size:10px;font-weight:950}.home-timeline-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.home-timeline-row small{font-size:10px;color:#667085;font-weight:850;white-space:nowrap}
.home-decisions-card{display:grid;gap:6px}.home-decisions-card header{margin-bottom:3px}.home-decisions-card>a{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px 9px;border:1px solid #edf0f5;border-radius:11px;background:#fbfcff;color:#0f172a;text-decoration:none}.home-decisions-card>a:hover{border-color:#fecaca;background:#fff7f7}.home-decisions-card>a b{font-size:17px}.home-decisions-card>a span{font-size:11px;font-weight:900}.home-decisions-card>a i{font-style:normal;font-size:10px;font-weight:950;color:var(--red)}
.home-upcoming-visits{margin-top:12px}.home-visit-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.home-visit-strip>a{display:grid;gap:3px;min-width:0;padding:9px 10px;border:1px solid #edf0f5;border-radius:12px;background:#fbfcff;text-decoration:none;color:#0f172a}.home-visit-strip>a:hover{border-color:#fecaca;background:#fff7f7}.home-visit-strip time{font-size:10px;font-weight:950;color:#991b1b;text-transform:uppercase}.home-visit-strip strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-visit-strip span{font-size:10px;color:#667085;font-weight:850}.home-compact-empty{padding:12px;border:1px dashed #d0d5dd;border-radius:12px;background:#f8fafc;color:#667085;font-size:12px;font-weight:800}
@media(max-width:1100px){.home-compact-layout{grid-template-columns:1fr}.home-visit-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.home-compact-head{align-items:flex-start;flex-direction:column}.home-compact-actions{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}.home-mini-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.home-timeline-row{grid-template-columns:55px 65px minmax(0,1fr)}.home-timeline-row small{display:none}.home-visit-strip{grid-template-columns:1fr}}
