html,body{height:100%;overflow:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
  /* sidebar */
  #sidebar{position:fixed;left:0;top:0;height:100%;width:240px;transform:translateX(-100%);transition:transform .2s ease,width .2s ease;z-index:40;background:#fff;border-right:1px solid #F0F0F0;display:flex;flex-direction:column;}
  #sidebar.open{transform:translateX(0);}
  .sidebar-logo{display:block;width:172px;max-width:100%;height:auto;}
  .sidebar-logo-compact{display:none;width:32px;height:32px;object-fit:contain;}
  .sidebar-brand{position:relative;display:flex;align-items:center;min-height:82px;}
  .sidebar-collapse-button{display:none;position:absolute;right:-13px;top:50%;transform:translateY(-50%);width:27px;height:27px;border:1px solid #E5E7EB;border-radius:999px;background:#fff;color:#6B7280;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(15,23,42,.09);transition:color .15s,background .15s,transform .2s;z-index:2;}
  .sidebar-collapse-button:hover{background:#F9FAFB;color:#0052CC;}
  @media(min-width:1024px){
    #sidebar{position:relative;transform:translateX(0)!important;z-index:auto;}
    #sidebarOverlay{display:none!important;}
    .sidebar-collapse-button{display:flex;}
    #sidebar.sidebar-collapsed{width:72px;}
    #sidebar.sidebar-collapsed .sidebar-brand{padding-left:19px;padding-right:19px;justify-content:center;}
    #sidebar.sidebar-collapsed .sidebar-brand-content{align-items:center;}
    #sidebar.sidebar-collapsed .sidebar-logo,#sidebar.sidebar-collapsed .sidebar-company{display:none;}
    #sidebar.sidebar-collapsed .sidebar-logo-compact{display:block;}
    #sidebar.sidebar-collapsed .sidebar-collapse-icon{transform:rotate(180deg);}
    #sidebar.sidebar-collapsed nav{padding-left:10px;padding-right:10px;}
    #sidebar.sidebar-collapsed .sidebar-group-toggle{display:none;}
    #sidebar.sidebar-collapsed .sidebar-group-panel[hidden]{display:block!important;}
    #sidebar.sidebar-collapsed .sidebar-group{margin-top:5px;}
    #sidebar.sidebar-collapsed .sidebar-favorites-group{padding-bottom:5px;margin-bottom:5px;}
    #sidebar.sidebar-collapsed .nav-item-row{justify-content:center;}
    #sidebar.sidebar-collapsed .nav-item{flex:0 0 44px;width:44px;height:42px;padding:0;justify-content:center;gap:0;}
    #sidebar.sidebar-collapsed .nav-item svg{width:19px;height:19px;}
    #sidebar.sidebar-collapsed .nav-item-label,#sidebar.sidebar-collapsed .nav-favorite-btn,#sidebar.sidebar-collapsed .nav-item>span:not(.nav-item-label){display:none!important;}
    #sidebar.sidebar-collapsed .sidebar-user-area{padding:12px 10px;}
    #sidebar.sidebar-collapsed .sidebar-user-area>div{justify-content:center;flex-direction:column;gap:7px;}
    #sidebar.sidebar-collapsed .sidebar-user-copy{display:none;}
    #sidebar.sidebar-collapsed .sidebar-logout button{width:36px;height:32px;}
  }
  /* nav */
  .nav-item-row{position:relative;display:flex;align-items:center;margin:1px 0;}
  .nav-item{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0;padding:9px 42px 9px 14px;border-radius:10px;font-size:14px;font-weight:500;color:#6B7280;cursor:pointer;transition:all .12s;white-space:nowrap;}
  .nav-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;}
  .nav-item:hover{background:#F9FAFB;color:#111827;}
  .nav-item.active{background:#E0ECFF;color:#0052CC;font-weight:600;}
  .nav-item.active svg{stroke:#0065F9;}
  .nav-favorite-btn{position:absolute;right:7px;top:50%;transform:translateY(-50%) scale(.94);width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;color:#9CA3AF;background:transparent;opacity:0;pointer-events:none;transition:opacity .14s ease,transform .14s ease,color .14s ease;}
  .nav-item-row:hover .nav-favorite-btn,.nav-item-row:focus-within .nav-favorite-btn{opacity:1;pointer-events:auto;transform:translateY(-50%) scale(1);}
  .nav-favorite-btn:hover{background:transparent;color:#4B5563;}
  .nav-favorite-btn[aria-pressed="true"]{background:transparent;color:#9CA3AF;}
  .sidebar-favorites-group{border-bottom:1px solid #F0F0F0;margin-bottom:7px;padding-bottom:7px;}
  #sidebarFavoritesContent .nav-item-row{margin-top:2px;}
  .sidebar-group{margin-top:5px;}
  .sidebar-group-toggle{width:100%;min-height:32px;padding:7px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-radius:9px;color:#9CA3AF;font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;cursor:pointer;transition:background .12s,color .12s;}
  .sidebar-group-toggle:hover{background:#F9FAFB;color:#4B5563;}
  .sidebar-group-toggle.has-active{color:#0052CC;}
  .sidebar-group-chevron{flex:none;transition:transform .18s ease;}
  .sidebar-group-toggle[aria-expanded="true"] .sidebar-group-chevron{transform:rotate(90deg);}
  .sidebar-group-panel{padding:1px 0 4px;}
  .sidebar-subnav{margin:2px 0 3px 26px;padding-left:8px;border-left:1px solid #E5E7EB;display:flex;flex-direction:column;gap:2px;}
  .sidebar-subnav-item{border:0;box-shadow:none;}
  .sidebar-subnav-item:hover{box-shadow:none;}
  /* mono de datos: cifras tabulares */
  .font-mono{font-feature-settings:"tnum" 1;letter-spacing:-.01em;}
  /* cards */
  .card{background:#fff;border-radius:16px;border:1px solid #F0F0F0;box-shadow:0 1px 3px rgba(0,0,0,.04);}
  .card-hover{transition:box-shadow .16s,transform .16s,border-color .16s;}
  .card-hover:hover{box-shadow:0 8px 24px -8px rgba(0,0,0,.12);transform:translateY(-2px);border-color:#E5E7EB;}
  /* foco accesible para teclado */
  a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{
    outline:2px solid #0065F9;outline-offset:2px;border-radius:8px;}
  /* pulso "en vivo" */
  .live-dot{position:relative;display:inline-block;width:9px;height:9px;border-radius:999px;background:#0065F9;}
  .live-dot::after{content:"";position:absolute;inset:0;border-radius:999px;background:#0065F9;animation:pulse 1.8s ease-out infinite;}
  @keyframes pulse{0%{transform:scale(1);opacity:.6}100%{transform:scale(3.2);opacity:0}}
  /* fichada nueva en el feed */
  .feed-new{animation:feedin .45s ease,feedglow 2.4s ease forwards;}
  @keyframes feedin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
  @keyframes feedglow{0%{background:#E0ECFF}100%{background:transparent}}
  /* badges */
  .badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6;}
  .bg-green{background:#E0ECFF;color:#0052CC;}
  .bg-red{background:#FEF2F2;color:#DC2626;}
  .bg-amber{background:#FFFBEB;color:#D97706;}
  .bg-blue{background:#EFF6FF;color:#2563EB;}
  .bg-gray{background:#F3F4F6;color:#6B7280;}
  .bg-slate{background:#F1F5F9;color:#475569;}
  /* table */
  th{font-size:11px;font-weight:700;color:#9CA3AF;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;}
  td{font-size:13.5px;color:#374151;}
  tbody tr:hover td{background:#FAFAFA;}
  /* sim bar */
  .simbar{height:6px;border-radius:999px;background:#E5E7EB;overflow:hidden;}
  .simfill{height:100%;border-radius:999px;transition:width .5s ease;}
  /* scrollbar */
  ::-webkit-scrollbar{width:5px;height:5px;}
  ::-webkit-scrollbar-thumb{background:#D1D5DB;border-radius:3px;}
  ::-webkit-scrollbar-track{background:transparent;}
  /* mock map */
  .mockmap{position:relative;border-radius:12px;overflow:hidden;height:110px;
    background:linear-gradient(rgba(255,255,255,.55),rgba(255,255,255,.55)),
    repeating-linear-gradient(0deg,#d8dde2 0 1px,transparent 1px 22px),
    repeating-linear-gradient(90deg,#d8dde2 0 1px,transparent 1px 22px),#EDEAE3;}
  .mockmap::before{content:"";position:absolute;left:-10%;top:40%;width:120%;height:12px;background:#fff;border-top:1px solid #d9d4c8;border-bottom:1px solid #d9d4c8;transform:rotate(-6deg);}
  input,select{font-family:inherit;}
  .chart-wrap{position:relative;height:190px;}
  /* entrada suave páginas */
  #content > *{animation:fi .18s ease;}
  @keyframes fi{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
  /* fila nueva en tabla de fichajes */
  .row-new{animation:rowIn .4s cubic-bezier(.16,1,.3,1),rowGlow 3s ease forwards;}
  @keyframes rowIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
  @keyframes rowGlow{0%{background:rgba(0,101,249,.08)}60%{background:rgba(0,101,249,.05)}100%{background:transparent}}
  /* bump animado en contadores KPI */
  .kpi-bump{animation:kpiBump .5s cubic-bezier(.16,1,.3,1);}
  @keyframes kpiBump{0%{transform:scale(1)}40%{transform:scale(1.22)}100%{transform:scale(1)}}
  /* respeta usuarios que reducen movimiento */
  @media(prefers-reduced-motion:reduce){
    *,#content > *,.live-dot::after{animation:none!important;transition:none!important;}
  }
