    :root{
      --orange:#ef6c00;
      --orange-dark:#d85f00;
      --ink:#202326;
      --muted:#6d747a;
      --line:#e4e7e9;
      --bg:#f4f6f7;
      --card:#ffffff;
      --danger:#b42318;
      --danger-bg:#fff1f0;
      --warn:#9a6700;
      --warn-bg:#fff8df;
      --ok:#116329;
      --ok-bg:#eaf8ee;
      --shadow:0 12px 34px rgba(32,35,38,.08);
      --surface-soft:#f7f8f8;
      --surface-muted:#fbfbfb;
      --surface-hover:var(--accent-hover);
      --input-bg:#ffffff;
      --topbar-bg:rgba(255,255,255,.95);

      --accent-rgb:239,108,0;
      --accent-soft:#fff0e3;
      --accent-ink:#b55a13;
      --accent-border:#efb17d;
      --accent-hover:#fffaf6;
      --accent-dark-soft:#35271e;
      --accent-dark-ink:#f0a56b;
      --accent-dark-border:#87502a;
      --hero-start:#24282c;
      --hero-end:#353a3f;
      --hero-dark-start:#191d20;
      --hero-dark-end:#252a2e;
      --theme-secondary:#ef6c00;
      --theme-radius-card:14px;
      --theme-radius-control:10px;
      --theme-card-shadow:0 8px 22px rgba(32,35,38,.055);
      --theme-card-border:1px solid var(--line);
      --theme-focus-shadow:0 0 0 3px rgba(var(--accent-rgb),.13);
    }

    :root[data-theme="dark"]{
      --ink:#eef1f3;
      --muted:#a5adb3;
      --line:#343b40;
      --bg:#101315;
      --card:#1b1f22;
      --danger:#ff958d;
      --danger-bg:#3a2020;
      --warn:#e7bf66;
      --warn-bg:#372f1e;
      --ok:#7bd794;
      --ok-bg:#1c3424;
      --shadow:0 14px 38px rgba(0,0,0,.34);
      --surface-soft:#171b1e;
      --surface-muted:#15191c;
      --surface-hover:#252b2f;
      --input-bg:#15191c;
      --topbar-bg:rgba(18,21,23,.96);
    }

    :root[data-visual-theme="cobre"]{
      --orange:#b8612c;
      --orange-dark:#965024;
      --accent-rgb:184,97,44;
      --accent-soft:#f3e4da;
      --accent-ink:#8f4b25;
      --accent-border:#d4a183;
      --accent-hover:#faf4f0;
      --accent-dark-soft:#39271f;
      --accent-dark-ink:#e7a477;
      --accent-dark-border:#805139;
      --hero-start:#2b2522;
      --hero-end:#49382f;
      --hero-dark-start:#1a1715;
      --hero-dark-end:#2d231f;
      --theme-secondary:#8b6a55;
      --theme-radius-card:9px;
      --theme-radius-control:7px;
      --theme-card-shadow:0 10px 26px rgba(80,48,31,.12);
      --theme-card-border:1px solid #ccb09f;
    }

    :root[data-visual-theme="acero"]{
      --orange:#55798a;
      --orange-dark:#416170;
      --accent-rgb:85,121,138;
      --accent-soft:#e6eef2;
      --accent-ink:#3f6273;
      --accent-border:#9eb7c2;
      --accent-hover:#f3f7f9;
      --accent-dark-soft:#1d2c33;
      --accent-dark-ink:#9fc4d5;
      --accent-dark-border:#476573;
      --hero-start:#273137;
      --hero-end:#3c505a;
      --hero-dark-start:#151b1e;
      --hero-dark-end:#26343b;
      --theme-secondary:#718a96;
      --theme-radius-card:6px;
      --theme-radius-control:5px;
      --theme-card-shadow:0 8px 20px rgba(42,70,82,.11);
      --theme-card-border:1px solid #b7c9d0;
    }

    :root[data-visual-theme="halloween"]{
      --orange:#ff7900;
      --orange-dark:#db6200;
      --accent-rgb:255,121,0;
      --accent-soft:#fff0df;
      --accent-ink:#c85d00;
      --accent-border:#f1a45c;
      --accent-hover:#fff7ed;
      --accent-dark-soft:#312038;
      --accent-dark-ink:#d5b0f3;
      --accent-dark-border:#714a8d;
      --hero-start:#1d1423;
      --hero-end:#3b2249;
      --hero-dark-start:#110d14;
      --hero-dark-end:#27152f;
      --theme-secondary:#6f42c1;
      --theme-radius-card:18px;
      --theme-radius-control:12px;
      --theme-card-shadow:0 13px 30px rgba(82,39,95,.16);
      --theme-card-border:1px solid #d3b6db;
    }

    *{box-sizing:border-box}
    html{background:var(--bg)}
    body{
      margin:0;
      font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
      color:var(--ink);
      background:var(--bg);
    }

    a{color:inherit}
    button,input,select{font:inherit}
    button{cursor:pointer}

    .container{
      width:min(1240px,calc(100% - 32px));
      margin:0 auto;
      padding:34px 0 54px;
    }

    .topbar{
      position:sticky;
      top:0;
      z-index:20;
      background:var(--topbar-bg);
      backdrop-filter:blur(12px);
      border-bottom:1px solid var(--line);
    }

    .topbar-inner{
      width:min(1240px,calc(100% - 32px));
      margin:auto;
      min-height:74px;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:18px;
    }

    .brand{
      display:flex;
      align-items:center;
      gap:13px;
      min-width:0;
    }

    .brand img{
      width:56px;
      height:44px;
      object-fit:contain;
      background:var(--card);
      border-radius:8px;
    }

    .brand strong,.brand span{display:block}
    .brand strong{font-size:17px}
    .brand span{font-size:12px;color:var(--muted);margin-top:2px}

    .top-actions{
      display:flex;
      align-items:center;
      gap:8px;
    }

    .hero{
      background:linear-gradient(135deg,var(--hero-start),var(--hero-end));
      color:white;
      border-radius:22px;
      padding:40px;
      box-shadow:var(--shadow);
      margin-bottom:26px;
      border-bottom:5px solid var(--orange);
    }

    .hero.compact{padding:30px 34px}
    .hero h1{font-size:clamp(30px,4vw,46px);margin:6px 0 9px}
    .hero.compact h1{font-size:34px}
    .hero p{margin:0;max-width:720px;color:#dfe3e5;line-height:1.55}

    .eyebrow{
      color:var(--orange);
      font-weight:800;
      letter-spacing:.11em;
      font-size:12px;
    }

    .hub-hero-layout{
      display:grid;
      grid-template-columns:minmax(0,1fr) auto;
      align-items:center;
      gap:34px;
    }

    .hub-context{
      min-width:250px;
      display:grid;
      gap:5px;
      padding-left:24px;
      border-left:1px solid rgba(255,255,255,.16);
      text-align:right;
    }

    .hub-context strong{
      color:#ffffff;
      font-size:16px;
      font-weight:800;
      line-height:1.25;
    }

    .hub-context span{
      color:#c4cacf;
      font-size:11px;
      line-height:1.35;
    }

    .hub-utility-grid{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:16px;
      align-items:start;
      margin-top:10px;
    }

    .hub-lower-stack{
      display:grid;
      gap:10px;
      margin-top:10px;
    }

    .hub-lower-stack > .quick-search-launcher,
    .hub-lower-stack > .changelog-access{
      margin:0;
    }

    /* v16.4: inicio simple (usuarios con 1 o 2 módulos). Solo se ve en el celular (mobile.js). */
    .hub-simple{display:none}

    .quick-search-launcher{
      appearance:none;
      width:100%;
      display:grid;
      grid-template-columns:38px minmax(0,1fr) auto;
      align-items:center;
      gap:12px;
      margin:0;
      padding:12px 14px;
      border:1px solid var(--line);
      border-radius:14px;
      background:var(--card);
      color:var(--ink);
      text-align:left;
      cursor:pointer;
      box-shadow:0 6px 20px rgba(32,35,38,.04);
      transition:.16s ease;
    }

    .quick-search-launcher:hover{
      border-color:var(--accent-border);
      box-shadow:0 9px 24px rgba(32,35,38,.07);
      transform:translateY(-1px);
    }

    .quick-search-launcher-icon{
      width:38px;
      height:38px;
      display:grid;
      place-items:center;
      border-radius:11px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:21px;
      font-weight:700;
    }

    .quick-search-launcher-copy{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .quick-search-launcher-copy strong{
      color:var(--ink);
      font-size:13px;
    }

    .quick-search-launcher-copy small{
      color:var(--muted);
      font-size:11px;
    }

    .quick-search-shortcut{
      display:inline-flex;
      align-items:center;
      min-height:28px;
      padding:5px 8px;
      border:1px solid var(--line);
      border-radius:8px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:10px;
      font-weight:800;
      white-space:nowrap;
    }

    .quick-search-shortcut-win{display:none}
    .platform-non-mac .quick-search-shortcut-mac{display:none}
    .platform-non-mac .quick-search-shortcut-win{display:inline}
    .platform-mac .quick-search-shortcut-mac{display:inline}

    .quick-search-open{overflow:hidden}

    .quick-search-overlay{
      position:fixed;
      inset:0;
      z-index:120;
      display:grid;
      place-items:start center;
      padding:12vh 18px 24px;
      background:rgba(17,20,22,.46);
      backdrop-filter:blur(5px);
    }

    .quick-search-overlay[hidden]{display:none}

    .quick-search-dialog{
      width:min(680px,100%);
      max-height:min(650px,76vh);
      display:flex;
      flex-direction:column;
      overflow:hidden;
      border:1px solid var(--line);
      border-radius:18px;
      background:var(--card);
      box-shadow:0 28px 80px rgba(20,24,27,.24);
    }

    .quick-search-head{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:18px;
      padding:18px 20px 12px;
    }

    .quick-search-kicker{
      display:block;
      color:var(--orange);
      font-size:10px;
      font-weight:900;
      letter-spacing:.09em;
    }

    .quick-search-head h2{
      margin:4px 0 0;
      color:var(--ink);
      font-size:22px;
    }

    .quick-search-close{
      appearance:none;
      width:34px;
      height:34px;
      flex:0 0 auto;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:21px;
      line-height:1;
      cursor:pointer;
    }

    .quick-search-close:hover{
      color:var(--ink);
      border-color:var(--accent-border);
    }

    .quick-search-input-wrap{
      position:relative;
      display:flex;
      align-items:center;
      margin:0 20px 10px;
    }

    .quick-search-input-wrap input{
      width:100%;
      min-height:48px;
      padding:10px 54px 10px 42px;
      border:1px solid #d6dade;
      border-radius:12px;
      background:var(--input-bg);
      color:var(--ink);
      outline:none;
      font:inherit;
    }

    .quick-search-input-wrap input:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .quick-search-input-icon{
      position:absolute;
      left:14px;
      color:var(--muted);
      font-size:19px;
      pointer-events:none;
    }

    .quick-search-escape{
      position:absolute;
      right:10px;
      display:inline-flex;
      align-items:center;
      min-height:25px;
      padding:4px 7px;
      border:1px solid var(--line);
      border-radius:7px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:9px;
      font-weight:800;
      pointer-events:none;
    }

    .quick-search-results{
      min-height:120px;
      overflow:auto;
      padding:4px 10px 10px;
    }

    .quick-search-result{
      appearance:none;
      width:100%;
      display:grid;
      grid-template-columns:40px minmax(0,1fr) auto;
      align-items:center;
      gap:12px;
      padding:10px;
      border:0;
      border-radius:11px;
      background:transparent;
      color:var(--ink);
      text-align:left;
      cursor:pointer;
    }

    .quick-search-result:hover,
    .quick-search-result.active{
      background:var(--surface-soft);
    }

    .quick-search-result.active{
      box-shadow:inset 3px 0 0 var(--orange);
    }

    .quick-search-result-icon{
      width:36px;
      height:36px;
      display:grid;
      place-items:center;
      border-radius:10px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:16px;
    }

    .quick-search-result-copy{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .quick-search-result-copy strong{
      overflow:hidden;
      color:var(--ink);
      font-size:12px;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .quick-search-result-copy small{
      overflow:hidden;
      color:var(--muted);
      font-size:10px;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .quick-search-result-group{
      color:var(--muted);
      font-size:9px;
      font-weight:800;
      text-transform:uppercase;
      letter-spacing:.04em;
      white-space:nowrap;
    }

    .quick-search-empty{
      display:grid;
      gap:4px;
      padding:34px 18px;
      text-align:center;
      color:var(--muted);
    }

    .quick-search-empty strong{color:var(--ink)}

    .quick-search-footer{
      display:flex;
      align-items:center;
      justify-content:flex-end;
      gap:14px;
      padding:10px 18px;
      border-top:1px solid var(--line);
      background:var(--surface-soft);
      color:var(--muted);
      font-size:9px;
    }

    .quick-search-footer span{
      display:inline-flex;
      align-items:center;
      gap:4px;
    }

    .quick-search-footer kbd{
      min-width:22px;
      display:inline-flex;
      justify-content:center;
      padding:3px 5px;
      border:1px solid var(--line);
      border-radius:6px;
      background:var(--card);
      color:var(--ink);
      font:inherit;
      font-weight:800;
      box-shadow:0 1px 0 rgba(32,35,38,.05);
    }

    .recent-access-section{
      min-width:0;
      padding:11px 13px;
      border:1px solid var(--line);
      border-radius:14px;
      background:var(--card);
      box-shadow:0 6px 20px rgba(32,35,38,.035);
    }

    .recent-access-head{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:16px;
      margin-bottom:7px;
    }

    .recent-access-head > div{
      display:grid;
      gap:2px;
    }

    .recent-access-kicker{
      color:var(--orange);
      font-size:9px;
      font-weight:900;
      letter-spacing:.08em;
    }

    .recent-access-head strong{
      color:var(--ink);
      font-size:12px;
    }

    .recent-access-clear{
      appearance:none;
      border:0;
      background:transparent;
      color:var(--muted);
      padding:4px 5px;
      font-size:10px;
      font-weight:800;
      cursor:pointer;
    }

    .recent-access-clear:hover{
      color:var(--orange);
    }

    .recent-access-list{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:6px;
    }

    .recent-access-item{
      min-width:0;
      display:grid;
      grid-template-columns:30px minmax(0,1fr) auto;
      align-items:center;
      gap:9px;
      padding:7px 8px;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--surface-soft);
      color:inherit;
      text-decoration:none;
      transition:.15s ease;
    }

    .recent-access-item:hover{
      border-color:var(--accent-border);
      background:var(--surface-hover);
      transform:translateY(-1px);
    }

    .recent-access-icon{
      width:30px;
      height:30px;
      display:grid;
      place-items:center;
      border-radius:9px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:14px;
    }

    .recent-access-copy{
      min-width:0;
      display:grid;
      gap:1px;
    }

    .recent-access-copy strong{
      overflow:hidden;
      color:var(--ink);
      font-size:10.5px;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .recent-access-copy small{
      overflow:hidden;
      color:var(--muted);
      font-size:8.5px;
      text-overflow:ellipsis;
      text-transform:uppercase;
      letter-spacing:.03em;
      white-space:nowrap;
    }

    .recent-access-arrow{
      color:var(--orange);
      font-size:15px;
      font-weight:900;
    }

    .module-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:18px;
    }

    .module-card{
      background:white;
      border:1px solid var(--line);
      border-radius:18px;
      padding:24px;
      display:grid;
      grid-template-columns:auto 1fr auto;
      gap:18px;
      align-items:center;
      text-decoration:none;
      min-height:160px;
      box-shadow:0 5px 18px rgba(32,35,38,.035);
    }

    .module-card.active{
      transition:.18s ease;
      border-top:4px solid var(--orange);
    }

    .module-card.active:hover{
      transform:translateY(-2px);
      box-shadow:var(--shadow);
      border-color:var(--accent-border);
    }

    .module-card.disabled{
      opacity:.58;
      grid-template-columns:auto 1fr;
    }

    .module-card.users-disabled{
      opacity:.46;
      filter:grayscale(.35);
      cursor:default;
      user-select:none;
    }

    .module-card.users-disabled .module-icon{
      background:var(--surface-soft);
    }

    .module-icon{
      width:52px;
      height:52px;
      border-radius:14px;
      display:grid;
      place-items:center;
      background:var(--accent-soft);
      font-size:25px;
    }

    .module-kicker{
      font-size:11px;
      font-weight:800;
      color:var(--orange);
      text-transform:uppercase;
      letter-spacing:.08em;
    }

    .module-card h2{margin:5px 0 7px;font-size:21px}
    .module-card p{margin:0;color:var(--muted);line-height:1.45;font-size:14px}
    .module-arrow{font-size:28px;color:var(--orange)}

    .closing-download-summary{
      margin-top:20px;
      padding:14px 16px;
      display:grid;
      grid-template-columns:minmax(0,1fr) auto;
      align-items:center;
      gap:16px;
      border:1px solid var(--line);
      border-radius:16px;
      background:var(--card);
      box-shadow:0 5px 18px rgba(32,35,38,.03);
    }

    .closing-download-main{
      min-width:0;
      display:grid;
      grid-template-columns:210px minmax(0,1fr);
      align-items:center;
      gap:14px;
    }

    .closing-download-heading{
      min-width:0;
      display:grid;
      gap:3px;
    }

    .closing-download-titleline{
      display:flex;
      align-items:baseline;
      flex-wrap:wrap;
      gap:4px 8px;
    }

    .closing-download-heading strong{font-size:14px;color:var(--ink)}

    .closing-download-titleline > span{
      color:var(--muted);
      font-size:10px;
      font-weight:800;
      white-space:nowrap;
    }

    .closing-download-statuses{
      min-width:0;
      display:grid;
      grid-template-columns:repeat(4,minmax(0,1fr));
      align-items:stretch;
      gap:8px;
    }

    .closing-file-chip{
      min-width:0;
      min-height:34px;
      padding:7px 10px;
      display:flex;
      align-items:center;
      justify-content:flex-start;
      gap:7px;
      border:1px solid var(--line);
      border-radius:10px;
      font-size:10.5px;
      font-weight:850;
      white-space:nowrap;
    }

    .closing-file-chip > span{
      min-width:0;
      overflow:hidden;
      text-overflow:ellipsis;
    }

    .closing-file-chip b{
      width:18px;
      height:18px;
      flex:0 0 18px;
      display:inline-grid;
      place-items:center;
      border-radius:999px;
      font-size:10px;
      line-height:1;
    }

    .closing-file-chip.is-ready{background:rgba(34,145,101,.10);border-color:rgba(34,145,101,.24);color:#176f50}
    .closing-file-chip.is-ready b{background:rgba(34,145,101,.17);color:#176f50}
    .closing-file-chip.is-pending{background:rgba(194,145,18,.10);border-color:rgba(194,145,18,.24);color:#8a6610}
    .closing-file-chip.is-pending b{background:rgba(194,145,18,.17);color:#8a6610}

    :root[data-theme="dark"] .closing-file-chip.is-ready{color:#76ddb7}
    :root[data-theme="dark"] .closing-file-chip.is-ready b{color:#76ddb7}
    :root[data-theme="dark"] .closing-file-chip.is-pending{color:#f1c860}
    :root[data-theme="dark"] .closing-file-chip.is-pending b{color:#f1c860}

    .closing-download-actions{
      flex:0 0 auto;
      display:flex;
      align-items:center;
    }

    .closing-download-actions .btn{white-space:nowrap}

    .closing-rule-note{
      margin:0 0 22px;
      padding:17px 18px;
      display:flex;
      align-items:flex-start;
      gap:14px;
      border:1px solid var(--line);
      border-radius:16px;
      background:var(--card);
      box-shadow:0 5px 18px rgba(32,35,38,.03);
    }

    .closing-rule-note-soft{
      margin-top:20px;
      background:var(--surface-soft);
    }

    .closing-rule-icon{
      width:38px;
      height:38px;
      flex:0 0 38px;
      display:grid;
      place-items:center;
      border-radius:11px;
      background:var(--accent-soft);
      color:var(--orange);
      font-size:19px;
      font-weight:900;
    }

    .closing-rule-note > div:last-child{display:grid;gap:4px}
    .closing-rule-note strong{color:var(--ink);font-size:14px}
    .closing-rule-note span{color:var(--muted);font-size:13px;line-height:1.45}

    .closing-year-block{
      margin-top:20px;
      padding:20px;
      border:1px solid var(--line);
      border-radius:18px;
      background:var(--card);
      box-shadow:0 5px 18px rgba(32,35,38,.03);
    }

    .closing-year-heading{
      display:flex;
      align-items:end;
      justify-content:space-between;
      gap:18px;
      padding-bottom:14px;
      margin-bottom:15px;
      border-bottom:1px solid var(--line);
    }

    .closing-year-heading h2{margin:3px 0 0;font-size:25px}
    .closing-year-heading > span{color:var(--muted);font-size:12px;font-weight:800}

    .closing-month-grid{
      display:grid;
      grid-template-columns:repeat(3,minmax(0,1fr));
      gap:12px;
    }

    .closing-month-card{
      min-height:112px;
      padding:16px;
      display:grid;
      grid-template-columns:auto 1fr auto;
      align-items:center;
      gap:13px;
      border:1px solid var(--line);
      border-radius:15px;
      background:var(--surface);
      color:var(--ink);
      text-decoration:none;
      transition:.18s ease;
    }

    .closing-month-card:hover{
      transform:translateY(-2px);
      border-color:var(--accent-border);
      box-shadow:var(--shadow);
    }

    .closing-month-icon,
    .closing-process-icon{
      width:44px;
      height:44px;
      display:grid;
      place-items:center;
      border-radius:12px;
      background:var(--accent-soft);
      font-size:21px;
    }

    .closing-month-copy{display:grid;gap:2px}
    .closing-month-copy strong{font-size:17px}
    .closing-month-copy small{color:var(--muted);font-size:12px}
    .closing-month-status,
    .closing-process-status{
      color:var(--orange);
      font-size:10px;
      font-weight:900;
      letter-spacing:.07em;
      text-transform:uppercase;
    }
    .closing-month-arrow{color:var(--orange);font-size:22px;font-weight:900}

    .closing-detail-hero{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:22px;
    }

    .closing-detail-badge{
      flex:0 0 auto;
      padding:8px 11px;
      border:1px solid var(--accent-border);
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--orange);
      font-size:11px;
      font-weight:900;
      text-transform:uppercase;
      letter-spacing:.05em;
    }

    .closing-process-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:16px;
    }

    .closing-process-card{
      min-height:160px;
      padding:20px;
      display:grid;
      grid-template-columns:auto 1fr;
      gap:15px;
      align-items:start;
      position:relative;
      border:1px solid var(--line);
      border-top:4px solid var(--orange);
      border-radius:17px;
      background:var(--card);
      box-shadow:0 5px 18px rgba(32,35,38,.03);
    }

    .closing-process-copy h2{margin:5px 0 7px;font-size:19px}
    .closing-process-copy p{margin:0;padding-right:90px;color:var(--muted);font-size:13px;line-height:1.45}
    .closing-process-state{
      position:absolute;
      top:18px;
      right:18px;
      padding:6px 8px;
      border-radius:999px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:9px;
      font-weight:900;
      text-transform:uppercase;
      letter-spacing:.04em;
    }

    .closing-process-card-active{
      color:var(--ink);
      text-decoration:none;
      cursor:pointer;
      transition:.18s ease;
    }

    .closing-process-card-active:hover{
      transform:translateY(-2px);
      border-color:var(--accent-border);
      box-shadow:var(--shadow);
    }

    .closing-process-state.is-ready{
      background:var(--accent-soft);
      color:var(--orange);
    }

    .closing-detail-badge-ready{
      background:var(--accent-soft);
      color:var(--orange);
    }

    .bank-closing-top-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:16px;
      margin-bottom:16px;
    }

    .bank-import-panel,
    .bank-base-panel,
    .bank-preview-panel{padding:22px;border-radius:18px}

    .bank-panel-heading,
    .bank-preview-heading{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:18px;
    }

    .bank-panel-heading h2,
    .bank-preview-heading h2{margin:5px 0 0;font-size:21px}
    .bank-panel-heading p,
    .bank-preview-heading p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.45}

    .bank-panel-icon{
      width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;
      border-radius:12px;background:var(--accent-soft);font-size:20px;
    }

    .bank-import-panel .btn,
    .bank-base-panel .btn{margin-top:18px}
    .bank-file-status{margin-top:10px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}
    .bank-excel-dropzone{
      margin-top:18px;padding:14px 15px;border:1.5px dashed var(--line-strong);border-radius:14px;
      background:var(--surface-soft);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;
      cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease,box-shadow .16s ease;outline:none;
    }
    .bank-excel-dropzone:hover,.bank-excel-dropzone:focus-visible{border-color:var(--orange);box-shadow:0 0 0 3px var(--accent-soft)}
    .bank-excel-dropzone.is-dragover{border-color:var(--orange);background:var(--accent-soft);transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.08)}
    /* v22.7: zona que recibe un archivo arrastrado (ui/soltar-archivos.js). */
    .dgim-soltar-sobre{outline:2px dashed var(--orange);outline-offset:3px;background-color:var(--accent-soft)}
    .bank-excel-dropzone.is-processing{opacity:.72;cursor:wait}
    .bank-excel-drop-icon{width:38px;height:38px;border-radius:11px;background:var(--card);border:1px solid var(--line);display:grid;place-items:center;color:var(--orange);font-size:21px;font-weight:900}
    .bank-excel-drop-copy{display:grid;gap:2px;min-width:0}
    .bank-excel-drop-copy strong{font-size:12px;color:var(--ink)}
    .bank-excel-drop-copy span{font-size:10px;color:var(--muted)}
    .bank-excel-dropzone .btn{margin-top:0;white-space:nowrap}
    .bank-base-count{margin-top:17px;display:flex;align-items:baseline;gap:8px}
    .bank-base-count strong{font-size:27px;color:var(--ink)}
    .bank-base-count span{font-size:12px;color:var(--muted)}

    .bank-preview-panel{margin-top:0}
    .bank-preview-heading{align-items:flex-end;margin-bottom:17px}
    .bank-preview-kpis{display:grid;grid-template-columns:repeat(3,minmax(95px,1fr));gap:8px}
    .bank-preview-kpis > div{padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-soft);display:grid;gap:3px}
    .bank-preview-kpis span{font-size:9px;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
    .bank-preview-kpis strong{font-size:14px;color:var(--ink);white-space:nowrap}

    .bank-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}
    .bank-preview-table{width:100%;border-collapse:collapse;min-width:900px;background:var(--card)}
    .bank-preview-table th{padding:10px 12px;text-align:left;background:var(--surface-soft);color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line)}
    .bank-preview-table td{padding:11px 12px;border-bottom:1px solid var(--line);font-size:12px;vertical-align:middle}
    .bank-preview-table tbody tr:last-child td{border-bottom:0}
    .bank-preview-table td strong{display:block;font-size:12px}
    .bank-preview-table td small{display:block;margin-top:3px;color:var(--muted);font-size:10px}
    .bank-money{font-weight:850;white-space:nowrap}
    .bank-row-status{display:inline-flex;padding:5px 7px;border-radius:999px;font-size:9px;font-weight:900;text-transform:uppercase;white-space:nowrap}
    .bank-status-ok{background:rgba(34,145,101,.12);color:#176f50}
    .bank-status-warn{background:rgba(194,145,18,.13);color:#8a6610}
    :root[data-theme="dark"] .bank-status-ok{color:#76ddb7}
    :root[data-theme="dark"] .bank-status-warn{color:#f1c860}

    .bank-preview-footer{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:18px}
    .bank-preview-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
    .bank-ready-message{display:grid;gap:3px;min-width:0}
    .bank-ready-message b{font-size:13px;color:var(--ink)}
    .bank-ready-message span{font-size:11px;color:var(--muted)}

    .bank-modal[hidden]{display:none}
    .bank-modal{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px}
    .bank-modal-backdrop{position:absolute;inset:0;background:rgba(10,16,14,.55);backdrop-filter:blur(4px)}
    .bank-modal-card{position:relative;width:min(1120px,96vw);max-height:88vh;overflow:auto;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:0 25px 70px rgba(0,0,0,.28)}
    .bank-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:6px}
    .bank-modal-header h2{margin:5px 0 0;font-size:22px}
    .bank-modal-header-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
    .bank-modal-close{width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);color:var(--ink);font-size:24px;cursor:pointer}
    .bank-modal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 14px}
    .bank-modal-help{margin:0;color:var(--muted);font-size:12px}
    .bank-add-form{display:grid;grid-template-columns:150px minmax(210px,1.35fr) minmax(150px,.85fr) minmax(190px,1fr) 86px auto;align-items:end;gap:9px;margin:0 0 14px;padding:12px;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));border-radius:13px;background:color-mix(in srgb,var(--accent) 7%,var(--surface-soft))}
    .bank-add-form[hidden]{display:none}
    .bank-add-form label,.bank-base-row label{display:grid;gap:5px;font-size:9px;font-weight:850;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
    .bank-add-form input,.bank-add-form select,.bank-base-row input,.bank-base-row select{width:100%;min-width:0;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);font:inherit;font-size:11px}
    .bank-code-auto{opacity:.78}
    .bank-base-editor{display:grid;gap:9px}
    .bank-base-row{display:grid;grid-template-columns:minmax(170px,1.05fr) minmax(190px,1.25fr) minmax(145px,.75fr) minmax(185px,1fr) 82px auto;align-items:end;gap:9px;padding:11px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft);transition:border-color .16s ease,box-shadow .16s ease}
    .bank-base-row-dirty{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 10%,transparent)}
    .bank-base-person{display:grid;gap:3px;align-self:center}
    .bank-base-person strong{font-size:11px;line-height:1.3}
    .bank-base-person span{font-size:10px;color:var(--muted)}
    .bank-base-row .btn,.bank-add-form .btn{min-height:37px;padding:8px 11px;white-space:nowrap}
    .bank-modal-actions{margin-top:16px;display:flex;justify-content:flex-end}
    .bank-confirm-modal[hidden]{display:none}
    .bank-confirm-modal{position:fixed;inset:0;z-index:10020;display:grid;place-items:center;padding:22px}
    .bank-confirm-backdrop{position:absolute;inset:0;background:rgba(10,16,14,.62);backdrop-filter:blur(5px)}
    .bank-confirm-card{position:relative;width:min(430px,94vw);padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:0 24px 70px rgba(0,0,0,.32);text-align:center}
    .bank-confirm-icon{width:42px;height:42px;margin:0 auto 12px;border-radius:999px;display:grid;place-items:center;background:rgba(194,145,18,.14);color:#8a6610;font-size:22px;font-weight:900}
    :root[data-theme="dark"] .bank-confirm-icon{color:#f1c860}
    .bank-confirm-card h3{margin:0;font-size:20px;color:var(--ink)}
    .bank-confirm-card p{margin:9px 0 18px;color:var(--muted);font-size:12px;line-height:1.5}
    .bank-confirm-actions{display:flex;justify-content:center;gap:10px}
    body.modal-open{overflow:hidden}

    .bodega-automation-grid{
      display:grid;
      grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);
      gap:16px;
      align-items:stretch;
    }

    .bodega-summary-panel,
    .bodega-download-panel{
      padding:22px;
      border-radius:18px;
    }

    .bodega-panel-heading{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:16px;
      margin-bottom:18px;
    }

    .bodega-panel-heading h2,
    .bodega-download-panel h2{
      margin:5px 0 0;
      font-size:21px;
    }

    .bodega-template-badge{
      flex:0 0 auto;
      padding:7px 9px;
      border:1px solid var(--accent-border);
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--orange);
      font-size:10px;
      font-weight:900;
      text-transform:uppercase;
      letter-spacing:.04em;
    }

    .bodega-data-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:11px;
    }

    .bodega-data-item{
      padding:14px;
      display:grid;
      gap:5px;
      border:1px solid var(--line);
      border-radius:13px;
      background:var(--surface-soft);
    }

    .bodega-data-item span,
    .bodega-glosa-preview span{
      color:var(--muted);
      font-size:11px;
      font-weight:800;
      text-transform:uppercase;
      letter-spacing:.04em;
    }

    .bodega-data-item strong{
      font-size:14px;
      line-height:1.35;
      overflow-wrap:anywhere;
    }

    .bodega-download-panel{
      display:flex;
      flex-direction:column;
      gap:17px;
    }

    .bodega-download-panel p{
      margin:8px 0 0;
      color:var(--muted);
      font-size:13px;
      line-height:1.5;
    }

    .bodega-glosa-preview{
      padding:15px;
      display:grid;
      gap:6px;
      border:1px solid var(--accent-border);
      border-radius:13px;
      background:var(--accent-soft);
    }

    .bodega-glosa-preview strong{
      color:var(--ink);
      font-size:14px;
      line-height:1.4;
    }

    .bodega-download-button{
      width:100%;
      justify-content:center;
      min-height:44px;
      margin-top:auto;
    }

    .bodega-download-status{
      display:block;
      color:var(--muted);
      font-size:11px;
      line-height:1.4;
      overflow-wrap:anywhere;
    }

    .security-note{
      margin-top:22px;
      border:1px solid var(--line);
      border-radius:14px;
      background:var(--card);
      padding:15px 18px;
      display:flex;
      justify-content:space-between;
      gap:18px;
      color:var(--muted);
      font-size:13px;
    }

    .security-note strong{color:var(--ink)}

    .account-session-note{
      align-items:center;
    }

    .account-session-copy{
      display:grid;
      gap:3px;
    }

    .account-session-button{
      flex:0 0 auto;
      text-decoration:none;
    }

    .account-container{
      padding-bottom:28px;
    }

    .account-hero{
      margin-bottom:16px;
    }

    .account-notice{
      margin-bottom:16px;
      border-radius:12px;
      padding:12px 14px;
      font-size:13px;
      font-weight:800;
    }

    .account-notice.success{
      background:var(--ok-bg);
      color:var(--ok);
      border:1px solid #b8e3c3;
    }

    .account-notice.error{
      background:var(--danger-bg);
      color:var(--danger);
      border:1px solid #f0c7c3;
    }

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

    .account-profile,
    .account-password-panel{
      padding:22px;
    }

    .account-section-head{
      display:flex;
      justify-content:space-between;
      gap:14px;
      align-items:flex-start;
      padding-bottom:15px;
      border-bottom:1px solid var(--line);
    }

    .account-section-head h2{
      margin:4px 0 0;
      font-size:20px;
    }

    .account-kicker{
      color:var(--orange);
      font-size:10px;
      font-weight:900;
      letter-spacing:.09em;
    }

    .account-data-list{
      display:grid;
      margin-top:8px;
    }

    .account-data-row{
      display:grid;
      grid-template-columns:minmax(130px,.8fr) minmax(0,1.4fr);
      gap:16px;
      padding:13px 0;
      border-bottom:1px solid #eceeef;
    }

    .account-data-row span{
      color:var(--muted);
      font-size:12px;
      font-weight:800;
    }

    .account-data-row strong{
      color:var(--ink);
      font-size:13px;
      overflow-wrap:anywhere;
    }

    .account-help,
    .account-password-note{
      margin:14px 0 0;
      color:var(--muted);
      font-size:11px;
      line-height:1.5;
    }

    .account-sessions-panel{
      margin-top:16px;
      padding:22px;
    }

    .own-session-list{
      display:grid;
      gap:9px;
      margin-top:14px;
    }

    .own-session-row{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:16px;
      padding:13px 14px;
      border:1px solid #e2e5e7;
      border-radius:12px;
      background:var(--card);
    }

    .own-session-row.current{
      background:var(--accent-hover);
      border-color:#edd7c2;
    }

    .own-session-row > div{
      display:grid;
      gap:3px;
    }

    .own-session-row strong{
      font-size:13px;
      color:var(--ink);
    }

    .own-session-row span{
      font-size:11px;
      color:var(--muted);
    }

    .current-session-badge{
      display:inline-flex;
      border-radius:999px;
      padding:6px 9px;
      background:#fce8d6;
      color:var(--accent-ink) !important;
      font-size:10px !important;
      font-weight:900;
      white-space:nowrap;
    }

    .own-session-empty{
      padding:16px;
      border:1px dashed #d8dcdf;
      border-radius:12px;
      color:var(--muted);
      font-size:12px;
      text-align:center;
    }

    .close-other-sessions-form{
      display:flex;
      justify-content:flex-end;
      margin-top:14px;
    }

    .user-profile-container{
      padding-bottom:28px;
    }

    .page-navigation-row{
      display:flex;
      align-items:center;
      flex-wrap:wrap;
      gap:12px;
      margin:18px 0 14px;
    }

    .page-navigation-row .btn{
      text-decoration:none;
      flex:0 0 auto;
    }

    .user-profile-hero{
      display:flex;
      justify-content:space-between;
      align-items:flex-end;
      gap:18px;
    }

    .profile-badges{
      display:flex;
      flex-wrap:wrap;
      gap:8px;
      align-items:center;
    }

    .profile-summary-grid{
      display:grid;
      grid-template-columns:repeat(3,minmax(0,1fr));
      gap:14px;
      margin-bottom:16px;
    }

    .profile-summary-card{
      padding:17px;
      display:grid;
      gap:7px;
    }

    .profile-summary-card span{
      color:var(--muted);
      font-size:11px;
      font-weight:800;
    }

    .profile-summary-card strong{
      color:var(--ink);
      font-size:14px;
      overflow-wrap:anywhere;
    }

    .account-visual-theme-panel{
      margin-top:16px;
      padding:20px 22px;
    }

    .visual-theme-compact-row{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:16px;
      margin-top:14px;
    }

    .visual-theme-current-card{
      min-width:0;
      flex:1 1 auto;
      display:flex;
      align-items:center;
      gap:13px;
      padding:11px 13px;
      border:1px solid var(--line);
      border-radius:13px;
      background:color-mix(in srgb,var(--surface-soft) 66%,var(--card) 34%);
    }

    .visual-theme-current-swatches{
      width:72px;
      height:42px;
      flex:0 0 72px;
      display:grid;
      grid-template-columns:1.15fr .85fr .65fr;
      overflow:hidden;
      border:1px solid rgba(0,0,0,.10);
      border-radius:10px;
    }

    .visual-theme-current-copy{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .visual-theme-current-copy small{
      color:var(--muted);
      font-size:9px;
      font-weight:800;
      text-transform:uppercase;
      letter-spacing:.06em;
    }

    .visual-theme-current-copy strong{
      color:var(--ink);
      font-size:13px;
    }

    .visual-theme-current-copy > span{
      color:var(--muted);
      font-size:10px;
      line-height:1.35;
    }

    .visual-theme-change-button{
      flex:0 0 auto;
      white-space:nowrap;
    }

    .visual-theme-compact-note{
      margin-top:10px !important;
      margin-bottom:0 !important;
    }

    .visual-theme-modal[hidden]{
      display:none !important;
    }

    .visual-theme-modal{
      position:fixed;
      inset:0;
      z-index:2500;
      display:flex;
      align-items:flex-start;
      justify-content:center;
      overflow-y:auto;
      overscroll-behavior:contain;
      padding:16px 22px;
    }

    .visual-theme-modal-backdrop{
      position:absolute;
      inset:0;
      background:rgba(10,13,16,.62);
      backdrop-filter:blur(4px);
    }

    .visual-theme-modal-card{
      position:relative;
      z-index:1;
      width:min(980px,calc(100vw - 36px));
      max-height:calc(100vh - 32px);
      max-height:calc(100dvh - 32px);
      overflow:auto;
      margin:auto 0;
      padding:20px;
      border:1px solid var(--line);
      border-radius:18px;
      background:var(--card);
      color:var(--ink);
      box-shadow:0 28px 90px rgba(0,0,0,.28);
    }

    .visual-theme-modal-head{
      display:flex;
      align-items:flex-start;
      justify-content:space-between;
      gap:18px;
      margin-bottom:14px;
    }

    .visual-theme-modal-head h2{
      margin:3px 0 4px;
      font-size:20px;
    }

    .visual-theme-modal-head p{
      margin:0;
      color:var(--muted);
      font-size:11px;
      line-height:1.45;
    }

    .visual-theme-modal-close{
      width:36px;
      height:36px;
      flex:0 0 36px;
      display:grid;
      place-items:center;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:22px;
      line-height:1;
      cursor:pointer;
    }

    .visual-theme-modal-close:hover{
      border-color:var(--accent-border);
      color:var(--ink);
      background:var(--accent-hover);
    }

    .account-visual-theme-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:9px;
    }

    .account-visual-theme-option{
      position:relative;
      min-width:0;
      display:grid;
      grid-template-columns:62px minmax(0,1fr) 20px;
      align-items:center;
      gap:10px;
      padding:10px;
      border:1px solid var(--line);
      border-radius:12px;
      background:var(--card);
      cursor:pointer;
      transition:.16s ease;
      outline:none;
    }

    .account-visual-theme-option:hover{
      border-color:var(--accent-border);
      transform:translateY(-1px);
    }

    .account-visual-theme-option.selected,
    .account-visual-theme-option:has(input:checked){
      border-color:var(--orange);
      background:var(--accent-hover);
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.10);
    }

    .account-visual-theme-option input{
      position:absolute;
      opacity:0;
      pointer-events:none;
    }

    .account-visual-theme-preview{
      height:40px;
      display:grid;
      grid-template-columns:1.15fr .85fr .65fr;
      overflow:hidden;
      border-radius:9px;
      border:1px solid rgba(0,0,0,.10);
    }

    .account-visual-theme-copy{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .account-visual-theme-copy strong{
      color:var(--ink);
      font-size:11.5px;
    }

    .account-visual-theme-copy small{
      color:var(--muted);
      font-size:9px;
      line-height:1.3;
    }

    .account-visual-theme-check{
      visibility:hidden;
      color:var(--orange);
      font-weight:900;
      font-size:15px;
      text-align:center;
    }

    .account-visual-theme-option:has(input:checked) .account-visual-theme-check,
    .account-visual-theme-option.selected .account-visual-theme-check{
      visibility:visible;
    }

    .visual-theme-live-preview{
      margin-top:14px;
      padding:12px;
      border:1px solid var(--line);
      border-radius:14px;
      background:color-mix(in srgb,var(--surface-soft) 68%,var(--card) 32%);
    }

    .visual-theme-preview-heading{
      display:flex;
      align-items:flex-end;
      justify-content:space-between;
      gap:12px;
      margin-bottom:9px;
    }

    .visual-theme-preview-heading h3{
      margin:3px 0 0;
      font-size:14px;
      color:var(--ink);
    }

    .visual-theme-preview-badges{
      display:flex;
      align-items:center;
      justify-content:flex-end;
      flex-wrap:wrap;
      gap:6px;
    }

    .visual-theme-preview-name,
    .visual-theme-preview-mode{
      display:inline-flex;
      align-items:center;
      padding:5px 8px;
      border-radius:999px;
      font-size:8.5px;
      font-weight:900;
    }

    .visual-theme-preview-name{
      background:var(--accent-soft);
      color:var(--accent-ink);
    }

    .visual-theme-preview-mode{
      background:var(--surface-soft);
      border:1px solid var(--line);
      color:var(--muted);
    }

    .visual-theme-preview-canvas{
      --preview-primary:#F26A0A;
      --preview-secondary:#7C8389;
      --preview-ink:#222427;
      --preview-muted:#6B7075;
      --preview-line:#DADFE3;
      --preview-card:#FFFDFC;
      --preview-soft:#E9EDF0;
      --preview-hero1:#25282C;
      --preview-hero2:#41454A;
      overflow:hidden;
      min-height:238px;
      border:1px solid color-mix(in srgb,var(--preview-line) 90%,transparent);
      border-radius:13px;
      box-shadow:0 10px 26px rgba(0,0,0,.10);
      transition:background .22s ease,border-color .22s ease;
    }

    /* v18.23: miniatura del Panel principal actual (.vtp-*). Usa solo las variables --preview-*. */
    .vtp{--preview-topbar:#FDFCFB;--preview-on-primary:#fff;--preview-accent-ink:#A63D00;position:relative;color:var(--preview-ink);font-size:10px}
    .vtp-i{width:12px;height:12px;flex:0 0 12px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
    .vtp-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:var(--preview-topbar);border-bottom:1px solid var(--preview-line);position:relative;overflow:hidden}
    .vtp-brand{display:flex;align-items:center;gap:7px;min-width:0}
    .vtp-brand strong{display:block;font-size:10.5px}
    .vtp-brand small{display:block;font-size:7.5px;color:var(--preview-muted)}
    .vtp-logo{display:grid;place-items:center;width:30px;height:22px;border-radius:5px;background:#fff;color:#E35B00;font-size:7.5px;font-weight:900;border:1px solid var(--preview-line)}
    .vtp-actions{display:flex;align-items:center;gap:6px}
    .vtp-me{display:flex;align-items:center;gap:5px;padding:3px 9px 3px 3px;border:1px solid var(--preview-line);border-radius:999px;background:var(--preview-card)}
    .vtp-me strong{display:block;font-size:8px}
    .vtp-me small{display:block;font-size:6.5px;color:var(--preview-muted)}
    .vtp-avatar{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:color-mix(in srgb,var(--preview-primary) 18%,var(--preview-card));color:var(--preview-accent-ink);font-size:7px;font-weight:900}
    .vtp-salir{padding:5px 8px;border:1px solid var(--preview-line);border-radius:7px;background:var(--preview-card);font-size:8px;font-weight:800}
    .vtp-hero{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 12px 0;padding:14px 16px;border-radius:12px;overflow:hidden;color:#fff;
      background:linear-gradient(120deg,color-mix(in srgb,var(--preview-secondary) 12%,transparent),transparent 43%),linear-gradient(135deg,var(--preview-hero1),var(--preview-hero2));
      border-bottom:3px solid var(--preview-secondary);box-shadow:0 8px 18px rgba(0,0,0,.14)}
    .vtp-hero-copy{display:grid;gap:4px;justify-items:start;position:relative;z-index:1}
    .vtp-hero-copy em{font-style:normal;font-size:7px;font-weight:900;letter-spacing:.12em;color:var(--preview-primary)}
    .vtp-hero-copy strong{font-size:17px;line-height:1.05}
    .vtp-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:999px;background:rgba(120,210,140,.18);color:#9BE3AE;font-size:7.5px;font-weight:800}
    .vtp-chip .vtp-i{width:9px;height:9px;flex-basis:9px}
    .vtp-search{position:relative;z-index:1;display:flex;align-items:center;gap:7px;width:min(52%,260px);padding:7px 9px;border-radius:9px;background:var(--preview-card);color:var(--preview-ink);border:1px solid var(--preview-line)}
    .vtp-search > .vtp-i{color:var(--preview-accent-ink)}
    .vtp-search span{flex:1;min-width:0}
    .vtp-search strong{display:block;font-size:8.5px}
    .vtp-search small{display:block;font-size:6.5px;color:var(--preview-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .vtp-search kbd{font:inherit;font-size:6.5px;font-weight:800;padding:2px 4px;border-radius:4px;background:var(--preview-soft);color:var(--preview-muted)}
    .vtp-body{padding:10px 12px 12px}
    .vtp-kicker{display:block;font-style:normal;font-size:6.5px;font-weight:900;letter-spacing:.12em;color:var(--preview-accent-ink)}
    .vtp-title{display:block;font-size:11px;margin:1px 0 7px}
    .vtp-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
    .vtp-mod{position:relative;display:grid;align-content:start;gap:2px;min-width:0;padding:8px;border:1px solid var(--preview-line);border-radius:9px;background:var(--preview-card);box-shadow:0 3px 9px rgba(0,0,0,.05)}
    .vtp-tile{display:grid;place-items:center;width:22px;height:22px;margin-bottom:4px;border-radius:6px;background:var(--preview-primary);color:var(--preview-on-primary)}
    .vtp-arrow{position:absolute;right:8px;top:10px;color:var(--preview-primary)}
    .vtp-mod em{font-style:normal;font-size:6px;font-weight:900;letter-spacing:.1em;color:var(--preview-accent-ink)}
    .vtp-mod strong{font-size:8.5px;line-height:1.15}
    .vtp-mod small{font-size:6.5px;line-height:1.25;color:var(--preview-muted)}
    .vtp-moon,.vtp-bat{display:none}
    /* Halloween: la vista previa también lleva sus emojis. */
    .vtp[data-preview-theme="halloween"] .vtp-moon{display:block;position:absolute;left:40%;top:8px;font-size:20px;line-height:1;filter:drop-shadow(0 0 10px rgba(255,230,140,.6))}
    .vtp[data-preview-theme="halloween"] .vtp-bat{display:block;position:absolute;left:46%;top:6px;font-size:13px;line-height:1}
    .vtp[data-preview-theme="halloween"] .vtp-mod::after{content:"🎃";position:absolute;right:7px;bottom:6px;font-size:11px;line-height:1}
    .vtp[data-preview-theme="halloween"] .vtp-hero{border-bottom-color:var(--preview-primary)}
    .vtp[data-preview-theme="grafito"][data-preview-mode="light"] .vtp-hero-copy em{color:var(--preview-secondary)}

    .visual-theme-modal-actions{
      display:flex;
      justify-content:flex-end;
      gap:9px;
      margin-top:12px;
    }

    @media (max-width:700px){
      .visual-theme-compact-row{
        align-items:stretch;
        flex-direction:column;
      }

      .visual-theme-change-button{
        width:100%;
      }

      .visual-theme-modal{
        padding:10px;
      }

      .visual-theme-modal-card{
        width:100%;
        max-height:calc(100vh - 20px);
        max-height:calc(100dvh - 20px);
        padding:15px;
        border-radius:15px;
      }

      .account-visual-theme-grid{
        grid-template-columns:1fr;
      }

      .visual-theme-preview-heading{
        align-items:flex-start;
        flex-direction:column;
      }

      .visual-theme-preview-badges{
        justify-content:flex-start;
      }

      .vtp-hero{flex-direction:column;align-items:stretch}
      .vtp-search{width:auto}
      .vtp-me span:last-child{display:none}

      .visual-theme-preview-canvas{
        min-height:230px;
      }
    }

    .user-visual-theme-panel{
      padding:22px;
    }

    .user-theme-current{
      display:inline-flex;
      align-items:center;
      padding:5px 9px;
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:9px;
      font-weight:900;
      white-space:nowrap;
    }

    .user-visual-theme-note{
      margin:13px 0 14px;
      color:var(--muted);
      font-size:11px;
      line-height:1.5;
    }

    .user-visual-theme-grid{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:10px;
    }

    .user-visual-theme-option{
      position:relative;
      min-width:0;
      display:grid;
      grid-template-columns:64px minmax(0,1fr) 22px;
      align-items:center;
      gap:12px;
      padding:12px;
      border:1px solid var(--line);
      border-radius:12px;
      background:var(--card);
      cursor:pointer;
      transition:.16s ease;
    }

    .user-visual-theme-option:hover{
      border-color:var(--accent-border);
      transform:translateY(-1px);
    }

    .user-visual-theme-option.selected,
    .user-visual-theme-option:has(input:checked){
      border-color:var(--orange);
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.09);
      background:var(--accent-hover);
    }

    .user-visual-theme-option input{
      position:absolute;
      opacity:0;
      pointer-events:none;
    }

    .user-visual-theme-preview{
      height:46px;
      display:grid;
      grid-template-columns:1.15fr .85fr .65fr;
      overflow:hidden;
      border:1px solid rgba(0,0,0,.08);
      border-radius:10px;
    }

    .user-visual-theme-copy{
      min-width:0;
      display:grid;
      gap:3px;
    }

    .user-visual-theme-copy strong{
      color:var(--ink);
      font-size:12px;
    }

    .user-visual-theme-copy small{
      color:var(--muted);
      font-size:9.5px;
      line-height:1.35;
    }

    .user-visual-theme-check{
      visibility:hidden;
      color:var(--orange);
      font-size:16px;
      font-weight:900;
      text-align:center;
    }

    .user-visual-theme-option:has(input:checked) .user-visual-theme-check{
      visibility:visible;
    }

    .user-visual-theme-actions{
      display:flex;
      justify-content:flex-end;
      margin-top:12px;
    }

    .admin-sessions-panel{
      padding:22px;
    }

    .admin-session-note{
      margin:13px 0 0;
      color:var(--muted);
      font-size:11px;
      line-height:1.45;
    }

    .admin-session-list{
      display:grid;
      gap:10px;
      margin-top:15px;
    }

    .admin-session-card{
      display:grid;
      grid-template-columns:minmax(170px,.7fr) minmax(300px,1.4fr) auto;
      align-items:center;
      gap:16px;
      padding:14px;
      border:1px solid #e2e5e7;
      border-radius:12px;
      background:var(--card);
    }

    .admin-session-device{
      display:flex;
      align-items:center;
      gap:10px;
      min-width:0;
    }

    .admin-session-device > div{
      display:grid;
      gap:3px;
    }

    .admin-session-device strong{
      font-size:13px;
    }

    .device-icon{
      width:34px;
      height:34px;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      border-radius:9px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:18px;
      font-weight:900;
      flex:0 0 auto;
    }

    .current-session-inline{
      font-size:10px;
      color:var(--accent-ink);
      font-weight:900;
    }

    .admin-session-meta{
      display:grid;
      grid-template-columns:repeat(2,minmax(0,1fr));
      gap:14px;
    }

    .admin-session-meta > div{
      display:grid;
      gap:3px;
    }

    .admin-session-meta span{
      color:var(--muted);
      font-size:10px;
      font-weight:800;
    }

    .admin-session-meta strong{
      font-size:12px;
      color:var(--ink);
    }

    .admin-session-empty{
      padding:24px;
      border:1px dashed #d8dcdf;
      border-radius:12px;
      text-align:center;
      color:var(--muted);
      font-size:12px;
    }

    .mini-btn{
      text-decoration:none;
    }

    .account-password-form{
      display:grid;
      gap:14px;
      margin-top:16px;
    }

    .account-password-form label{
      display:grid;
      gap:7px;
      color:var(--muted);
      font-size:12px;
      font-weight:800;
    }

    .account-password-form label small{
      color:var(--muted);
      font-size:10px;
      font-weight:600;
    }

    .account-password-form input{
      width:100%;
      min-height:43px;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--card);
      padding:10px 48px 10px 12px;
      color:var(--ink);
      outline:none;
      font:inherit;
    }

    .account-password-form input:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .users-panel{padding:0;overflow:hidden}

    .users-toolbar{
      display:flex;
      align-items:end;
      justify-content:space-between;
      gap:18px;
      padding:13px 16px;
      border-bottom:1px solid var(--line);
    }

    .users-search{
      width:min(400px,100%);
      gap:5px;
      font-size:11px;
    }

    .users-search input{
      min-height:38px;
      padding:7px 10px;
    }

    .users-toolbar #openCreateUser{
      min-height:38px;
      padding-top:8px;
      padding-bottom:8px;
      white-space:nowrap;
    }

    .users-filters{
      display:grid;
      grid-template-columns:repeat(4,minmax(145px,1fr)) auto;
      gap:12px;
      align-items:end;
      padding:12px 16px;
      border-bottom:1px solid var(--line);
      background:var(--surface-muted);
    }

    .users-filters label{
      display:grid;
      gap:6px;
      color:var(--muted);
      font-size:11px;
      font-weight:800;
    }

    .users-filters select{
      width:100%;
      min-height:40px;
      border:1px solid #d4d8db;
      border-radius:9px;
      background:var(--card);
      color:var(--ink);
      padding:8px 10px;
      font:inherit;
      outline:none;
    }

    .users-filters select:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .users-filter-summary{
      min-width:150px;
      display:flex;
      align-items:center;
      justify-content:flex-end;
      gap:10px;
      padding-bottom:1px;
    }

    .users-filter-summary > span{
      color:var(--muted);
      font-size:11px;
      font-weight:800;
      white-space:nowrap;
    }

    .users-clear-filters{
      min-height:40px;
    }

    .users-notice{
      margin:16px 20px 0;
      padding:12px 14px;
      border-radius:12px;
      font-size:13px;
      font-weight:700;
    }

    .users-notice.success{background:var(--ok-bg);color:var(--ok);border:1px solid #c8e8d0}
    .users-notice.error{background:var(--danger-bg);color:var(--danger);border:1px solid #f2c6c2}

    .users-table-wrap{overflow-x:auto}
    .users-table{width:100%;border-collapse:collapse;min-width:1030px}
    .users-table th{
      text-align:left;
      padding:12px 14px;
      font-size:11px;
      text-transform:uppercase;
      letter-spacing:.06em;
      color:var(--muted);
      background:#fafbfb;
      border-bottom:1px solid var(--line);
    }
    .users-table td{
      padding:15px 14px;
      border-bottom:1px solid var(--line);
      vertical-align:middle;
      font-size:13px;
    }
    .users-table tbody tr:last-child td{border-bottom:none}
    .users-table tbody tr:hover{background:#fcfcfc}

    .user-identity strong{display:flex;align-items:center;gap:7px;font-size:14px}
    .user-identity > span{display:block;color:var(--muted);font-size:12px;margin-top:4px}
    .you-tag{
      display:inline-flex;
      padding:2px 7px;
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--orange-dark);
      font-size:9px;
      text-transform:uppercase;
      letter-spacing:.06em;
    }

    .role-pill,.status-pill,.password-status,.session-count{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      border-radius:999px;
      padding:5px 9px;
      white-space:nowrap;
      font-size:11px;
      font-weight:800;
    }
    .role-pill.admin{background:var(--accent-soft);color:var(--accent-ink)}
    .role-pill.regular{background:#eef2f5;color:#48535b}
    .status-pill.active{background:var(--ok-bg);color:var(--ok)}
    .status-pill.inactive{background:var(--surface-soft);color:var(--muted)}
    .password-status.configured{background:#eef6ff;color:#245d8e}
    .password-status.invited{background:#f0ecff;color:#5e45a7}
    .password-status.pending{background:var(--warn-bg);color:var(--warn)}
    .session-count{min-width:30px;background:var(--surface-soft);color:#4c5358}
    .users-date{white-space:nowrap;color:var(--muted)}

    .user-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
    .mini-btn{
      border:1px solid #d9dddf;
      background:var(--card);
      color:var(--ink);
      border-radius:9px;
      padding:7px 9px;
      font-size:11px;
      font-weight:800;
    }
    .mini-btn:hover{border-color:var(--accent-border);background:var(--accent-hover)}
    .mini-btn.subtle{color:var(--muted)}
    .users-loading{text-align:center!important;color:var(--muted);padding:34px!important}
    .users-load-error{color:var(--danger)!important}

    .admin-modal[hidden]{display:none}
    .admin-modal{
      position:fixed;
      inset:0;
      z-index:100;
      background:rgba(22,25,27,.48);
      backdrop-filter:blur(5px);
      display:grid;
      place-items:center;
      padding:20px;
      overscroll-behavior:contain;
    }
    /* openModal de compras/pages/comun.ts marca <html>; las otras ventanas, <body>. */
    body.modal-open,html.modal-open{overflow:hidden}
    .admin-modal-card{
      width:min(560px,100%);
      max-height:calc(100vh - 40px);
      overflow:auto;
      background:var(--card);
      border-radius:20px;
      padding:24px;
      box-shadow:0 28px 80px rgba(0,0,0,.2);
      border-top:5px solid var(--orange);
    }
    .confirm-modal-card{width:min(500px,100%)}
    .admin-modal-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:20px}
    .admin-modal-head h2{margin:4px 0 0;font-size:24px}
    .admin-modal-kicker{color:var(--orange);font-size:10px;font-weight:900;letter-spacing:.1em}
    .modal-close{
      width:36px;height:36px;border:1px solid var(--line);border-radius:10px;background:var(--card);
      color:#666;font-size:24px;line-height:1;display:grid;place-items:center
    }
    .modal-close:hover{background:#f5f6f6}

    .user-form{display:grid;gap:15px}
    .user-form label{display:grid;gap:7px;font-size:12px;font-weight:800;color:var(--ink)}
    .user-form input,.user-form select{
      width:100%;border:1px solid var(--line);border-radius:10px;background:var(--card);padding:11px 12px;color:var(--ink);outline:none
    }
    .user-form input:focus,.user-form select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.12)}
    .user-form small{font-weight:500;line-height:1.4;color:var(--muted)}

    .create-access-fieldset{
      display:grid;
      gap:9px;
      margin:0;
      padding:0;
      border:0;
    }

    .create-access-fieldset legend{
      margin-bottom:1px;
      color:var(--ink);
      font-size:12px;
      font-weight:800;
    }

    .user-form .create-access-option{
      display:flex;
      align-items:flex-start;
      gap:10px;
      padding:11px 12px;
      border:1px solid #d8dcdf;
      border-radius:11px;
      background:var(--card);
      cursor:pointer;
    }

    .user-form .create-access-option:has(input:checked){
      border-color:var(--accent-border);
      background:var(--accent-hover);
    }

    .user-form .create-access-option input{
      width:auto;
      margin:3px 0 0;
      padding:0;
      box-shadow:none;
      accent-color:var(--orange);
    }

    .create-access-option > span{
      display:grid;
      gap:3px;
    }

    .create-access-option strong{
      color:var(--ink);
      font-size:12px;
    }

    .create-access-option small{
      color:var(--muted);
      font-size:10px;
      font-weight:500;
    }

    .users-two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
    .modal-form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}
    .edit-user-actions{justify-content:space-between;align-items:center}
    .modal-actions-right{display:flex;gap:9px;margin-left:auto}
    .btn-danger{
      background:#c93333;
      color:#fff;
      border:1px solid #c93333;
    }
    .btn-danger:hover{background:#a92828;border-color:#a92828}
    .btn-danger:disabled{opacity:.45;cursor:not-allowed}
    .danger-kicker{color:#b3261e}
    .delete-warning{
      background:#fff4f3;
      border:1px solid #f0c7c3;
      border-radius:12px;
      padding:14px;
      color:#5e2b27;
      margin-bottom:16px;
    }
    .delete-warning p{margin:8px 0 0;line-height:1.45}
    .delete-confirm-label{
      display:grid;
      gap:8px;
      font-size:12px;
      font-weight:800;
      color:var(--ink);
    }
    .delete-confirm-label input{
      width:100%;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--card);
      padding:11px 12px;
      color:var(--ink);
      outline:none;
      text-transform:none;
    }
    .delete-confirm-label input:focus{
      border-color:#c93333;
      box-shadow:0 0 0 3px rgba(201,51,51,.10);
    }
    .self-edit-note,.password-target{margin:0;color:var(--muted);font-size:12px;line-height:1.5}
    .self-edit-note{padding:10px 12px;background:var(--surface-soft);border-radius:10px}

    .module-permissions-editor{
      display:grid;
      gap:10px;
      padding:13px;
      border:1px solid #e0e3e5;
      border-radius:12px;
      background:var(--surface-muted);
    }

    .module-permissions-editor[hidden],
    .admin-access-note[hidden]{
      display:none !important;
    }

    .module-permissions-head{
      display:grid;
      gap:3px;
    }

    .module-permissions-head strong{
      font-size:13px;
      color:var(--ink);
    }

    .module-permissions-head span{
      color:var(--muted);
      font-size:11px;
      line-height:1.4;
    }

    .permission-options{
      display:grid;
      gap:8px;
    }

    .permission-option{
      display:flex !important;
      flex-direction:row !important;
      align-items:flex-start;
      gap:10px !important;
      padding:10px 11px;
      border:1px solid #e2e5e7;
      border-radius:10px;
      background:var(--card);
      cursor:pointer;
    }

    .permission-option input{
      width:17px !important;
      height:17px;
      min-height:0 !important;
      margin-top:2px;
      flex:0 0 auto;
      accent-color:var(--orange);
    }

    .permission-option span{
      display:grid;
      gap:2px;
    }

    .permission-option strong{
      color:var(--ink);
      font-size:12px;
    }

    .permission-option small{
      color:var(--muted);
      font-size:11px;
      line-height:1.35;
    }

    .permission-empty{
      color:var(--muted);
      font-size:12px;
    }

    .admin-access-note{
      margin:0;
      padding:11px 12px;
      border-radius:10px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:12px;
      line-height:1.45;
    }
    .password-target{font-weight:700;color:var(--muted)}
    .password-field{
      position:relative;
      display:block;
    }
    .password-field input{
      padding-right:48px;
    }
    .compact-password-field{margin-top:0}

    .access-denied-panel{padding:42px;text-align:center;max-width:720px;margin:40px auto}
    .access-denied-panel h1{margin:10px 0 8px}
    .access-denied-panel p{color:var(--muted);margin:0 auto 22px;max-width:520px;line-height:1.5}
    .access-denied-mark{font-size:12px;font-weight:900;letter-spacing:.15em;color:var(--orange)}

    .stats-grid{
      display:grid;
      grid-template-columns:repeat(4,minmax(0,1fr));
      gap:14px;
      margin-bottom:18px;
    }

    .stat-card{
      background:white;
      border:1px solid var(--line);
      border-radius:16px;
      padding:19px;
    }

    .stat-card span{
      display:block;
      color:var(--muted);
      font-size:12px;
      margin-bottom:7px;
    }

    .stat-card strong{
      font-size:30px;
      line-height:1;
    }

    .panel{
      background:white;
      border:1px solid var(--line);
      border-radius:18px;
      padding:20px;
      margin-bottom:18px;
      box-shadow:0 3px 15px rgba(32,35,38,.025);
    }

    .filters{
      width:100%;
      min-width:0;
      display:grid;
      grid-template-columns:2fr repeat(4,minmax(130px,1fr));
      gap:12px;
    }

    .filters > label{
      width:100%;
      min-width:0;
    }

    .filters input,
    .filters select,
    .vehicle-search-autocomplete{
      width:100%;
      min-width:0;
      max-width:100%;
      box-sizing:border-box;
    }

    label{
      display:grid;
      gap:7px;
      font-size:12px;
      font-weight:700;
      color:var(--muted);
    }

    input,select{
      width:100%;
      min-height:43px;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--card);
      padding:9px 11px;
      color:var(--ink);
      outline:none;
    }

    input:focus,select:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.12);
    }

    .vehicle-search-field{
      position:relative;
    }

    .vehicle-search-autocomplete{
      position:relative;
    }

    .vehicle-search-suggestions{
      position:absolute;
      z-index:55;
      top:calc(100% + 6px);
      left:0;
      right:0;
      max-height:320px;
      overflow:auto;
      padding:6px;
      border:1px solid var(--line);
      border-radius:12px;
      background:var(--card);
      box-shadow:0 16px 38px rgba(32,35,38,.16);
    }

    .vehicle-search-suggestions[hidden]{
      display:none;
    }

    .vehicle-search-suggestion{
      appearance:none;
      width:100%;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      padding:9px 10px;
      border:0;
      border-radius:9px;
      background:transparent;
      color:var(--ink);
      text-align:left;
      cursor:pointer;
    }

    .vehicle-search-suggestion:hover,
    .vehicle-search-suggestion.active{
      background:var(--surface-soft);
    }

    .vehicle-search-suggestion.active{
      box-shadow:inset 3px 0 0 var(--orange);
    }

    .vehicle-search-suggestion-copy{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .vehicle-search-suggestion-copy strong{
      overflow:hidden;
      color:var(--ink);
      font-size:11.5px;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .vehicle-search-suggestion-copy small{
      color:var(--muted);
      font-size:9px;
    }

    .vehicle-search-suggestion-type{
      flex:0 0 auto;
      display:inline-flex;
      align-items:center;
      padding:4px 7px;
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:8.5px;
      font-weight:900;
    }

    .vehicle-search-empty{
      padding:12px 10px;
      color:var(--muted);
      font-size:10px;
      text-align:center;
    }

    .toolbar{
      margin-top:14px;
      display:flex;
      gap:9px;
      flex-wrap:wrap;
    }

    .btn{
      appearance:none;
      border:0;
      border-radius:10px;
      min-height:42px;
      padding:9px 15px;
      font-weight:800;
      text-decoration:none;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      gap:7px;
    }

    .btn-primary{
      background:var(--orange);
      color:white;
    }

    .btn-primary:hover{background:var(--orange-dark)}

    .btn-secondary{
      background:var(--surface-soft);
      color:#353a3f;
      border:1px solid #dde1e3;
    }

    .btn-ghost{
      background:transparent;
      color:var(--muted);
      border:1px solid #dde1e3;
      min-height:38px;
      padding:7px 12px;
      font-size:13px;
    }

    /* v18.21: «Cerrar sesión» con fondo, texto oscuro y borde del tema (antes se camuflaba con la barra). */
    :root:root .top-actions .btn-salir{
      background:var(--card);
      color:var(--ink);
      border-color:var(--line);
      box-shadow:0 1px 2px rgba(15,23,42,.08);
    }

    :root:root .top-actions .btn-salir:hover{
      background:color-mix(in srgb,var(--danger) 9%,var(--card));
      border-color:color-mix(in srgb,var(--danger) 45%,var(--line));
      color:var(--danger);
    }

    .btn:disabled{
      opacity:.42;
      cursor:not-allowed;
    }

    .table-panel{padding:0;overflow:hidden}
    .table-head{
      padding:20px 20px 13px;
      display:flex;
      align-items:end;
      justify-content:space-between;
      gap:12px;
    }

    .table-head h2{margin:0 0 4px;font-size:20px}
    .table-head p{margin:0}

    .table-wrap{
      overflow:auto;
      border-top:1px solid var(--line);
      border-bottom:1px solid var(--line);
    }

    table{
      width:100%;
      border-collapse:collapse;
      min-width:1040px;
    }

    th{
      background:var(--surface-soft);
      color:var(--muted);
      font-size:11px;
      text-transform:uppercase;
      letter-spacing:.05em;
      text-align:left;
      padding:12px 14px;
      border-bottom:1px solid var(--line);
      white-space:nowrap;
    }

    td{
      padding:13px 14px;
      border-bottom:1px solid #eef0f1;
      vertical-align:middle;
      font-size:13px;
    }

    .check-col{
      width:48px;
      min-width:48px;
      text-align:center;
    }

    .table-check{
      width:18px;
      height:18px;
      min-height:auto;
      margin:0;
      accent-color:var(--orange);
      cursor:pointer;
    }

    tbody tr:hover{background:var(--accent-hover)}
    td strong{display:block}
    td small{display:block;color:var(--muted);margin-top:3px}

    .badge{
      display:inline-flex;
      align-items:center;
      border-radius:999px;
      padding:6px 9px;
      font-size:11px;
      font-weight:900;
      white-space:nowrap;
    }

    .badge.ok{background:var(--ok-bg);color:var(--ok)}
    .badge.warn{background:var(--warn-bg);color:var(--warn)}
    .badge.danger{background:var(--danger-bg);color:var(--danger)}

    .pdf-link{
      color:var(--orange-dark);
      font-weight:800;
      text-decoration:none;
      white-space:nowrap;
    }

    .pdf-link:hover{text-decoration:underline}

    .pagination{
      display:flex;
      justify-content:center;
      align-items:center;
      gap:14px;
      padding:17px;
      font-size:13px;
      font-weight:700;
    }

    .muted{color:var(--muted)}
    .empty{text-align:center!important;padding:30px!important;color:var(--muted)}
    .error-text{color:var(--danger)!important}

    .login-shell{
      min-height:100vh;
      display:grid;
      place-items:center;
      padding:24px;
      background:
        radial-gradient(circle at top right,rgba(var(--accent-rgb),.13),transparent 30%),
        linear-gradient(135deg,#24282c,#34393d);
    }

    .login-card{
      width:min(440px,100%);
      background:var(--card);
      border-radius:22px;
      padding:34px;
      box-shadow:0 25px 70px rgba(0,0,0,.24);
      border-top:5px solid var(--orange);
    }

    .login-logo{
      display:block;
      width:138px;
      max-height:86px;
      object-fit:contain;
      margin:0 auto 22px;
    }

    .login-card h1{margin:5px 0 8px;font-size:29px}
    .login-card > .muted{margin:0 0 22px;line-height:1.45}

    .invitation-account{
      display:grid;
      gap:3px;
      padding:11px 13px;
      margin:0 0 17px;
      border:1px solid #e0e3e5;
      border-radius:10px;
      background:var(--surface-soft);
    }

    .invitation-account span{
      color:var(--muted);
      font-size:10px;
      font-weight:800;
      text-transform:uppercase;
      letter-spacing:.05em;
    }

    .invitation-account strong{
      color:var(--ink);
      font-size:13px;
      overflow-wrap:anywhere;
    }

    .invitation-password-help{
      color:var(--muted);
      font-size:11px;
      margin-top:-5px;
    }

    .login-form{
      display:grid;
      gap:15px;
    }

    .login-form .btn{margin-top:2px}

    .password-wrap{
      position:relative;
      display:block;
    }

    .password-wrap input{
      padding-right:48px;
    }

    .password-toggle{
      position:absolute;
      top:50%;
      right:6px;
      transform:translateY(-50%);
      width:38px;
      height:36px;
      border:0;
      border-radius:9px;
      display:grid;
      place-items:center;
      background:transparent;
      color:var(--muted);
      padding:0;
    }

    .password-toggle:hover,
    .password-toggle.is-visible{
      background:var(--surface-soft);
      color:var(--orange-dark);
    }

    .password-toggle svg{
      width:21px;
      height:21px;
      fill:none;
      stroke:currentColor;
      stroke-width:1.8;
    }

    .login-links{
      margin-top:17px;
      text-align:center;
      font-size:13px;
      font-weight:800;
    }

    .login-links a{
      color:var(--orange-dark);
      text-decoration:none;
    }

    .login-links a:hover{text-decoration:underline}

    .login-links-split{
      display:flex;
      justify-content:space-between;
      gap:12px;
      flex-wrap:wrap;
    }

    .success-note,
    .info-note{
      border-radius:10px;
      padding:11px 13px;
      margin:17px 0;
      font-size:13px;
      line-height:1.45;
    }

    .success-note{
      background:var(--ok-bg);
      color:var(--ok);
      border:1px solid #b8e3c3;
    }

    .info-note{
      background:#f4f7fa;
      color:#44505a;
      border:1px solid #dce3e8;
    }

    .recovery-code{
      text-align:center;
      letter-spacing:.32em;
      font-size:22px;
      font-weight:900;
    }

    .security-modal{
      position:fixed;
      inset:0;
      z-index:100;
      display:grid;
      place-items:center;
      padding:22px;
      background:rgba(20,23,25,.68);
      backdrop-filter:blur(5px);
    }

    .security-modal-card{
      width:min(460px,100%);
      background:var(--card);
      border-radius:20px;
      padding:28px;
      box-shadow:0 24px 70px rgba(0,0,0,.28);
      text-align:center;
      border-top:5px solid var(--orange);
    }

    .security-modal-icon{
      width:48px;
      height:48px;
      border-radius:50%;
      margin:0 auto 15px;
      display:grid;
      place-items:center;
      font-size:24px;
      font-weight:900;
      color:#9a6700;
      background:var(--warn-bg);
    }

    .security-modal-card h2{
      margin:0 0 10px;
      font-size:23px;
    }

    .security-modal-card p{
      margin:0;
      color:var(--muted);
      line-height:1.55;
    }

    .security-modal-actions{
      display:flex;
      justify-content:center;
      gap:10px;
      flex-wrap:wrap;
      margin-top:22px;
    }

    .alert{
      background:#fff2f1;
      color:#9d241b;
      border:1px solid #ffd2cf;
      border-radius:10px;
      padding:11px 13px;
      margin:17px 0;
      font-size:13px;
      line-height:1.4;
    }


    .changelog-grid{
      display:grid;
      gap:20px;
    }

    .changelog-section{
      background:var(--card);
      border:1px solid var(--line);
      border-radius:18px;
      overflow:hidden;
      box-shadow:0 3px 15px rgba(32,35,38,.025);
    }

    .changelog-section-head{
      padding:22px 24px;
      border-bottom:1px solid var(--line);
      background:var(--surface-muted);
    }

    .changelog-section-head h2{
      margin:0 0 6px;
      font-size:22px;
    }

    .changelog-section-head p{
      margin:0;
      color:var(--muted);
      font-size:14px;
    }

    .release-list{
      display:grid;
    }

    .release-card{
      padding:22px 24px;
      border-bottom:1px solid #eef0f1;
    }

    .release-card:last-child{
      border-bottom:0;
    }

    .release-head{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:16px;
      margin-bottom:10px;
    }

    .release-version{
      display:inline-flex;
      align-items:center;
      background:var(--accent-soft);
      color:var(--orange-dark);
      border:1px solid #ffd8b7;
      border-radius:999px;
      padding:6px 10px;
      font-weight:900;
      font-size:12px;
    }

    .release-period{
      color:var(--muted);
      font-size:12px;
      font-weight:700;
    }

    .release-card ul{
      margin:0;
      padding-left:20px;
      color:var(--muted);
      line-height:1.6;
      font-size:14px;
    }

    .release-card li + li{
      margin-top:4px;
    }

    .release-group{
      margin-top:16px;
      padding-top:14px;
      border-top:1px dashed #e2e5e7;
    }

    .release-group:first-of-type{
      margin-top:4px;
      padding-top:0;
      border-top:0;
    }

    .release-group h3{
      margin:0 0 7px;
      font-size:14px;
      color:#343a3f;
    }

    .release-group ul{
      margin:0;
    }


    .changelog-empty{
      text-align:left!important;
      padding:24px!important;
    }

    .changelog-note{
      margin-top:18px;
      background:var(--card);
      border:1px solid var(--line);
      border-left:4px solid var(--orange);
      border-radius:14px;
      padding:16px 18px;
    }

    .changelog-note strong{
      display:block;
      margin-bottom:4px;
    }

    .changelog-note p{
      margin:0;
      color:var(--muted);
      font-size:13px;
      line-height:1.5;
    }


    .changelog-loading{
      padding:26px 24px;
      color:var(--muted);
      font-size:13px;
      text-align:center;
    }

    .changelog-load-more-wrap{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      padding:14px 18px;
      border-top:1px solid var(--line);
      background:var(--surface-muted);
      flex-wrap:wrap;
    }

    .changelog-load-status{
      color:var(--muted);
      font-size:12px;
      font-weight:700;
    }

    .changelog-load-more[hidden]{
      display:none!important;
    }


    .changelog-access{
      margin-top:10px;
      width:100%;
      min-height:58px;
      background:var(--card);
      border:1px solid var(--line);
      border-radius:14px;
      padding:13px 18px;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:18px;
      text-decoration:none;
      box-shadow:0 3px 15px rgba(32,35,38,.02);
      transition:.16s ease;
    }

    .changelog-access:hover{
      border-color:var(--accent-border);
      background:var(--accent-hover);
    }

    .changelog-access strong{
      display:block;
      font-size:13px;
      color:var(--ink);
      margin-bottom:3px;
    }

    .changelog-access span{
      color:var(--muted);
      font-size:12px;
    }

    .changelog-access-arrow{
      font-size:22px!important;
      color:var(--orange)!important;
      font-weight:900;
    }

    .changelog-tabs-shell{
      background:var(--card);
      border:1px solid var(--line);
      border-radius:18px;
      overflow:hidden;
      box-shadow:0 3px 15px rgba(32,35,38,.025);
    }

    .changelog-tabs{
      display:flex;
      align-items:center;
      gap:8px;
      padding:14px 16px;
      border-bottom:1px solid var(--line);
      background:var(--surface-muted);
      overflow-x:auto;
    }

    .changelog-tab{
      appearance:none;
      border:1px solid #dfe3e5;
      background:var(--card);
      color:var(--muted);
      border-radius:999px;
      padding:9px 14px;
      min-height:38px;
      white-space:nowrap;
      font-weight:800;
      font-size:12px;
      cursor:pointer;
    }

    .changelog-tab:hover{
      border-color:var(--accent-border);
      color:var(--orange-dark);
    }

    .changelog-tab.active{
      background:var(--orange);
      color:#fff;
      border-color:var(--orange);
    }

    .changelog-tab-panel{
      display:none;
    }

    .changelog-tab-panel.active{
      display:block;
    }

    .changelog-section{
      background:var(--card);
    }

    .changelog-section-head{
      padding:22px 24px;
      border-bottom:1px solid var(--line);
      background:var(--card);
    }

    .changelog-section-head h2{
      margin:0 0 6px;
      font-size:22px;
    }

    .changelog-section-head p{
      margin:0;
      color:var(--muted);
      font-size:14px;
    }

    .release-list{
      display:grid;
    }

    .release-card{
      padding:22px 24px;
      border-bottom:1px solid #eef0f1;
    }

    .release-card:last-child{
      border-bottom:0;
    }

    .release-head{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:16px;
      margin-bottom:10px;
    }

    .release-version{
      display:inline-flex;
      align-items:center;
      background:var(--accent-soft);
      color:var(--orange-dark);
      border:1px solid #ffd8b7;
      border-radius:999px;
      padding:6px 10px;
      font-weight:900;
      font-size:12px;
    }

    .release-area{
      margin-top:7px;
      color:var(--muted);
      font-size:13px;
      font-weight:800;
    }

    .release-main-title{
      display:flex;
      align-items:center;
      gap:10px;
      min-width:0;
    }

    .release-title-text{
      color:#343a3f;
      font-size:15px;
      font-weight:900;
      line-height:1.2;
    }

    .release-period{
      color:var(--muted);
      font-size:12px;
      font-weight:700;
      white-space:nowrap;
    }

    .release-card ul{
      margin:0;
      padding-left:20px;
      color:var(--muted);
      line-height:1.6;
      font-size:14px;
    }

    .release-card li + li{
      margin-top:4px;
    }

    .changelog-note{
      margin-top:18px;
      background:var(--card);
      border:1px solid var(--line);
      border-left:4px solid var(--orange);
      border-radius:14px;
      padding:16px 18px;
    }

    .changelog-note strong{
      display:block;
      margin-bottom:4px;
    }

    .changelog-note p{
      margin:0;
      color:var(--muted);
      font-size:13px;
      line-height:1.5;
    }

    @media(max-width:900px){
      .hub-hero-layout{
        grid-template-columns:1fr;
        gap:18px;
      }

      .hub-context{
        min-width:0;
        padding:15px 0 0;
        border-left:0;
        border-top:1px solid rgba(255,255,255,.14);
        text-align:left;
      }

      .hub-utility-grid{
        grid-template-columns:1fr;
      }

      .recent-access-list{
        grid-template-columns:1fr 1fr;
      }

      .quick-search-launcher{
        grid-template-columns:36px minmax(0,1fr);
      }

      .quick-search-shortcut{display:none}

      .quick-search-overlay{
        padding:8vh 12px 18px;
      }

      .quick-search-dialog{
        max-height:82vh;
      }

      .quick-search-footer{display:none}

      .quick-search-result{
        grid-template-columns:36px minmax(0,1fr);
      }

      .quick-search-result-group{display:none}

      .module-grid{grid-template-columns:1fr}
      .stats-grid{grid-template-columns:repeat(2,1fr)}
      .filters{grid-template-columns:1fr 1fr}
      .search-field{grid-column:1/-1}
    }


    @media(max-width:620px){
      .hub-context{
        text-align:center;
      }

      .recent-access-list{
        grid-template-columns:1fr;
      }


      .changelog-access{
        padding:12px 14px;
      }

      .changelog-tabs{
        padding:12px;
      }

      .changelog-section-head,
      .release-card{
        padding:18px;
      }


      .release-head{
        align-items:flex-start;
      }

      .container,.topbar-inner{width:min(100% - 20px,1240px)}
      .hero,.hero.compact{padding:25px 22px;border-radius:17px}
      .hero.compact h1{font-size:29px}
      .stats-grid{grid-template-columns:1fr 1fr;gap:9px}
      .stat-card{padding:15px}
      .stat-card strong{font-size:25px}

      .panel{
        max-width:100%;
        overflow-x:visible;
      }
      .filters{
        width:100%;
        grid-template-columns:minmax(0,1fr);
      }

      .filters > label,
      .filters input,
      .filters select,
      .vehicle-search-autocomplete{
        width:100%;
        min-width:0;
        max-width:100%;
      }

      .filters input[type="date"]{
        display:block;
        min-width:0;
        max-width:100%;
        -webkit-appearance:none;
        appearance:none;
      }

      .search-field{grid-column:auto}
      .topbar-inner{min-height:68px}
      .brand img{width:48px;height:38px}
      .brand span{display:none}
      .top-actions .btn{
        width:auto;
        min-width:auto;
        min-height:38px;
        padding:7px 10px;
        font-size:10px;
        white-space:nowrap;
      }
      .top-actions .btn::after{content:none}
      .module-card{padding:18px;grid-template-columns:auto 1fr}
      .module-arrow{display:none}
      .closing-month-grid{grid-template-columns:1fr}
      .closing-process-grid{grid-template-columns:1fr}
      .closing-download-summary{grid-template-columns:1fr;align-items:stretch}
      .closing-download-main{grid-template-columns:1fr;align-items:stretch;gap:10px}
      .closing-download-heading{min-width:0}
      .closing-download-titleline{align-items:flex-start;flex-direction:column;gap:2px}
      .closing-download-titleline > span{white-space:normal}
      .closing-download-statuses{width:100%;grid-template-columns:repeat(2,minmax(0,1fr))}
      .closing-download-actions{width:100%;align-items:stretch}
      .closing-download-actions .btn{width:100%}
      .closing-detail-hero{align-items:flex-start;flex-direction:column}
      .closing-process-copy p{padding-right:0}
      .closing-process-state{position:static;grid-column:2;justify-self:start}
      .bank-closing-top-grid{grid-template-columns:1fr}
      .bank-excel-dropzone{grid-template-columns:auto 1fr}
      .bank-excel-dropzone .btn{grid-column:1 / -1;width:100%;justify-content:center}
      .bank-preview-heading{align-items:flex-start;flex-direction:column}
      .bank-preview-kpis{width:100%;grid-template-columns:repeat(3,minmax(0,1fr))}
      .bank-preview-footer{align-items:stretch;flex-direction:column}
      .bank-preview-actions{width:100%;display:grid;grid-template-columns:1fr}
      .bank-preview-footer .btn{width:100%;justify-content:center}
      .bank-modal-header{align-items:stretch}
      .bank-modal-header-actions{width:100%;justify-content:flex-end}
      .bank-modal-toolbar{align-items:stretch;flex-direction:column}
      .bank-modal-toolbar .btn{width:100%;justify-content:center}
      .bank-add-form,.bank-base-row{grid-template-columns:1fr}
      .bank-base-row .btn,.bank-add-form .btn{width:100%;justify-content:center}
      .bodega-automation-grid{grid-template-columns:1fr}
      .bodega-data-grid{grid-template-columns:1fr}
      .users-toolbar{
        align-items:stretch;
        flex-direction:column;
        padding:14px 16px;
      }
      .users-toolbar .btn{width:100%}

      .users-filters{
        grid-template-columns:1fr 1fr;
      }

      .users-filter-summary{
        grid-column:1 / -1;
        justify-content:space-between;
      }
      .users-search{width:100%}
      .users-two-cols{grid-template-columns:1fr}
      .modal-form-actions{flex-direction:column-reverse}
      .modal-form-actions .btn{width:100%}
      .edit-user-actions{align-items:stretch}
      .modal-actions-right{display:flex;flex-direction:column-reverse;width:100%;margin-left:0}
      .security-note{display:grid}

      .account-session-note{
        width:100%;
        grid-template-columns:minmax(0,1fr);
        justify-content:stretch;
        justify-items:center;
        text-align:center;
      }

      .account-session-copy{
        width:100%;
        justify-items:center;
        text-align:center;
      }

      .account-session-button{
        width:auto;
        justify-self:center;
      }

      .quick-search-launcher{
        grid-template-columns:auto minmax(0,auto);
        justify-content:center;
        text-align:center;
      }

      .quick-search-launcher-copy{
        justify-items:center;
        text-align:center;
      }

      .account-grid{
        grid-template-columns:1fr;
      }

      .account-data-row{
        grid-template-columns:1fr;
        gap:4px;
      }

      .own-session-row{
        align-items:stretch;
        flex-direction:column;
      }

      .own-session-row form,
      .own-session-row .btn,
      .close-other-sessions-form,
      .close-other-sessions-form .btn{
        width:100%;
      }

      .user-profile-hero{
        align-items:flex-start;
        flex-direction:column;
      }

      .profile-summary-grid{
        grid-template-columns:1fr;
      }

      .admin-session-card{
        grid-template-columns:1fr;
        align-items:stretch;
      }

      .admin-session-meta{
        grid-template-columns:1fr;
      }

      .admin-session-card form,
      .admin-session-card .btn{
        width:100%;
      }
      .login-card{padding:27px 22px}
    }

    .generic-future-card{
      min-height:154px;
      display:flex;
      align-items:center;
      justify-content:center;
      border:1px solid #e4dbd2;
      background:linear-gradient(135deg,#efefef 0%,#f5eee8 100%);
      box-shadow:none;
    }

    .generic-future-label{
      color:var(--accent-ink);
      font-size:15px;
      font-weight:900;
      letter-spacing:.08em;
      text-transform:uppercase;
    }

    .users-history-access{
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:14px;
      margin:0 0 16px;
      padding:15px 17px;
      border:1px solid #dedfe0;
      border-left:4px solid #5f656a;
      border-radius:12px;
      background:var(--card);
      color:inherit;
      text-decoration:none;
      transition:.16s ease;
    }

    .users-history-access-bottom{
      margin-top:16px;
      margin-bottom:24px;
    }

    .users-history-access:hover{
      border-color:var(--line);
      box-shadow:0 6px 18px rgba(32,35,38,.05);
      transform:translateY(-1px);
    }

    .users-history-access > div{
      display:grid;
      gap:3px;
    }

    .users-history-access strong{
      color:var(--ink);
      font-size:13px;
    }

    .users-history-access span:not(.changelog-access-arrow){
      color:var(--muted);
      font-size:11px;
    }

    .suggestions-access{
      margin-top:14px;
    }

    .audit-stats{
      margin-bottom:16px;
    }

    .audit-filters{
      display:grid;
      grid-template-columns:minmax(230px,1.5fr) minmax(180px,1fr) minmax(170px,.8fr) auto auto;
      gap:12px;
      align-items:end;
      padding:18px;
      margin-bottom:18px;
    }

    .audit-filters label{
      display:grid;
      gap:6px;
      color:var(--muted);
      font-size:12px;
      font-weight:800;
    }

    .audit-filters input,
    .audit-filters select{
      width:100%;
      min-height:42px;
      border:1px solid #d7dbde;
      border-radius:10px;
      background:var(--card);
      padding:9px 11px;
      color:var(--ink);
      outline:none;
      font:inherit;
    }

    .audit-filters input:focus,
    .audit-filters select:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .audit-autocomplete{
      position:relative;
    }

    .audit-autocomplete-menu{
      position:absolute;
      z-index:40;
      top:calc(100% + 6px);
      left:0;
      right:0;
      max-height:310px;
      overflow:auto;
      padding:6px;
      border:1px solid #d9dddf;
      border-radius:12px;
      background:var(--card);
      box-shadow:0 14px 34px rgba(32,35,38,.14);
    }

    .audit-autocomplete-option{
      width:100%;
      display:flex;
      align-items:center;
      justify-content:space-between;
      gap:12px;
      border:0;
      border-radius:9px;
      background:transparent;
      padding:10px 11px;
      text-align:left;
      cursor:pointer;
      color:inherit;
    }

    .audit-autocomplete-option:hover,
    .audit-autocomplete-option:focus{
      background:var(--surface-soft);
      outline:none;
    }

    .audit-autocomplete-person{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .audit-autocomplete-person strong{
      color:var(--ink);
      font-size:12px;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .audit-autocomplete-person small{
      color:var(--muted);
      font-size:10px;
      overflow:hidden;
      text-overflow:ellipsis;
      white-space:nowrap;
    }

    .audit-autocomplete-role{
      flex:0 0 auto;
      display:inline-flex;
      padding:4px 8px;
      border-radius:999px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:9px;
      font-weight:900;
    }

    .audit-autocomplete-empty{
      padding:12px 10px;
      color:var(--muted);
      font-size:11px;
      text-align:center;
    }

    .audit-events-list{
      display:grid;
      gap:12px;
      padding-bottom:24px;
    }

    .audit-event-card{
      display:grid;
      grid-template-columns:minmax(0,1.5fr) minmax(270px,.7fr);
      gap:20px;
      background:var(--card);
      border:1px solid var(--line);
      border-radius:16px;
      padding:18px;
      box-shadow:0 6px 20px rgba(32,35,38,.04);
    }

    .audit-event-main{
      display:flex;
      gap:13px;
      min-width:0;
    }

    .audit-event-icon{
      width:38px;
      height:38px;
      flex:0 0 auto;
      display:grid;
      place-items:center;
      border-radius:10px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:17px;
    }

    .audit-event-copy{
      min-width:0;
      flex:1;
    }

    .audit-event-title-row{
      display:flex;
      flex-wrap:wrap;
      align-items:center;
      gap:8px;
    }

    .audit-event-title-row > strong{
      font-size:14px;
      color:var(--ink);
    }

    .audit-entity-pill{
      display:inline-flex;
      border-radius:999px;
      background:var(--surface-soft);
      color:var(--muted);
      padding:4px 8px;
      font-size:10px;
      font-weight:900;
    }

    .audit-target{
      margin-top:4px;
      color:var(--muted);
      font-size:12px;
      font-weight:700;
    }

    .audit-detail-list{
      margin:10px 0 0;
      padding-left:18px;
      color:var(--ink);
      font-size:12px;
      line-height:1.5;
    }

    .audit-event-meta{
      display:grid;
      grid-template-columns:minmax(0,1fr) minmax(0,1fr);
      gap:14px;
      align-content:start;
      padding-left:18px;
      border-left:1px solid #eceeef;
    }

    .audit-event-meta > div{
      display:grid;
      gap:3px;
    }

    .audit-event-meta span{
      color:var(--muted);
      font-size:10px;
      font-weight:800;
    }

    .audit-event-meta strong{
      font-size:12px;
      color:var(--ink);
    }

    .audit-event-meta small{
      color:var(--muted);
      font-size:10px;
      overflow-wrap:anywhere;
    }

    .audit-empty{
      display:grid;
      gap:6px;
      text-align:center;
      padding:34px 20px;
      border:1px dashed #d7dbde;
      border-radius:16px;
      background:var(--card);
      color:var(--muted);
    }

    .audit-empty strong{
      color:var(--ink);
    }

    .suggestions-hero{
      display:flex;
      align-items:flex-end;
      justify-content:space-between;
      gap:20px;
    }

    .suggestions-hero .btn{
      flex:0 0 auto;
    }

    .suggestions-notice{
      margin:0 0 16px;
      border-radius:12px;
      padding:12px 14px;
      font-size:13px;
      font-weight:800;
    }

    .suggestions-notice.success{
      background:var(--ok-bg);
      color:var(--ok);
      border:1px solid #b8e3c3;
    }

    .suggestions-notice.error{
      background:var(--danger-bg);
      color:var(--danger);
      border:1px solid #f0c7c3;
    }

    .suggestions-stats{
      grid-template-columns:repeat(3,minmax(0,1fr));
      margin-bottom:16px;
    }

    .suggestions-filters{
      display:grid;
      grid-template-columns:minmax(220px,1.6fr) minmax(180px,1fr) minmax(160px,.9fr) auto auto;
      gap:12px;
      align-items:end;
      padding:18px;
      margin-bottom:18px;
    }

    .suggestions-filters label{
      display:grid;
      gap:6px;
      color:var(--muted);
      font-size:12px;
      font-weight:800;
    }

    .suggestions-filters input,
    .suggestions-filters select{
      width:100%;
      min-height:42px;
      border:1px solid #d7dbde;
      border-radius:10px;
      background:var(--card);
      padding:9px 11px;
      color:var(--ink);
      outline:none;
      font:inherit;
    }

    .suggestions-filters input:focus,
    .suggestions-filters select:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .suggestions-list{
      display:grid;
      gap:14px;
      padding-bottom:22px;
    }

    .suggestion-card{
      background:var(--card);
      border:1px solid var(--line);
      border-radius:16px;
      padding:19px;
      box-shadow:0 8px 24px rgba(32,35,38,.05);
    }

    .suggestion-card-head{
      display:flex;
      justify-content:space-between;
      gap:16px;
      align-items:flex-start;
    }

    .suggestion-module{
      display:inline-flex;
      border-radius:999px;
      padding:5px 9px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:11px;
      font-weight:900;
      margin-bottom:10px;
    }

    .suggestion-author{
      display:grid;
      gap:3px;
    }

    .suggestion-author strong{
      font-size:14px;
    }

    .suggestion-author span{
      color:var(--muted);
      font-size:12px;
    }

    .suggestion-status{
      display:inline-flex;
      align-items:center;
      justify-content:center;
      border-radius:999px;
      padding:6px 10px;
      font-size:11px;
      font-weight:900;
      white-space:nowrap;
    }

    .suggestion-status.pending{background:var(--warn-bg);color:var(--warn)}
    .suggestion-status.review{background:#edf4ff;color:#315c9b}
    .suggestion-status.considered{background:#f3edff;color:#6842a3}
    .suggestion-status.implemented{background:var(--ok-bg);color:var(--ok)}
    .suggestion-status.discarded{background:#f2f3f4;color:var(--muted)}

    .suggestion-body{
      margin:17px 0 0;
      white-space:pre-wrap;
      line-height:1.6;
      font-size:14px;
      color:var(--ink);
    }

    .suggestion-response{
      margin-top:16px;
      border-left:4px solid var(--orange);
      background:var(--accent-hover);
      border-radius:0 10px 10px 0;
      padding:12px 14px;
    }

    .suggestion-response strong{
      font-size:12px;
      color:var(--accent-ink);
    }

    .suggestion-response p{
      white-space:pre-wrap;
      margin:6px 0 4px;
      line-height:1.5;
      font-size:13px;
    }

    .suggestion-response small{
      color:var(--muted);
    }

    .suggestion-admin-box{
      margin-top:16px;
      border-top:1px solid #eceeef;
      padding-top:12px;
    }

    .suggestion-admin-box summary{
      cursor:pointer;
      color:var(--orange-dark);
      font-size:12px;
      font-weight:900;
      user-select:none;
    }

    .suggestion-admin-form{
      margin-top:12px;
      display:grid;
      grid-template-columns:minmax(170px,.8fr) minmax(260px,2fr) auto;
      align-items:end;
      gap:12px;
    }

    .suggestion-admin-form label{
      display:grid;
      gap:6px;
      color:var(--muted);
      font-size:12px;
      font-weight:800;
    }

    .suggestion-admin-form select,
    .suggestion-admin-form textarea{
      width:100%;
      border:1px solid #d7dbde;
      border-radius:10px;
      background:var(--card);
      color:var(--ink);
      font:inherit;
      outline:none;
      padding:9px 11px;
    }

    .suggestion-admin-form select{
      min-height:42px;
    }

    .suggestion-admin-form textarea{
      min-height:74px;
      resize:vertical;
      line-height:1.4;
    }

    .suggestion-admin-actions{
      display:flex;
      gap:9px;
      justify-content:flex-end;
      align-items:center;
    }

    .suggestion-admin-form select:focus,
    .suggestion-admin-form textarea:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .suggestions-empty{
      text-align:center;
      background:var(--card);
      border:1px dashed #d7dbde;
      border-radius:16px;
      padding:34px 20px;
      color:var(--muted);
      display:grid;
      gap:6px;
    }

    .suggestions-empty strong{
      color:var(--ink);
    }

    .suggestion-textarea{
      width:100%;
      min-height:170px;
      resize:vertical;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--card);
      padding:11px 12px;
      color:var(--ink);
      outline:none;
      font:inherit;
      line-height:1.5;
    }

    .suggestion-textarea:focus{
      border-color:var(--orange);
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.10);
    }

    .suggestion-author-note{
      display:block;
      color:var(--muted);
      line-height:1.45;
    }

    .leave-suggestion-text{
      margin:0 0 18px;
      color:var(--muted);
      line-height:1.55;
      font-size:14px;
    }

    :root[data-visual-theme="halloween"] .hero{
      border-bottom-color:var(--theme-secondary);
    }

    :root[data-visual-theme="halloween"] .eyebrow{
      color:#ff8a1f;
    }

    :root[data-visual-theme="halloween"] .module-card.active:hover,
    :root[data-visual-theme="halloween"] .changelog-access:hover,
    :root[data-visual-theme="halloween"] .users-history-access:hover{
      border-color:#8f67c8;
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 100% 0%, rgba(111,66,193,.08), transparent 32%),
        var(--bg);
    }

    /* ==================================================
       PULIDO VISUAL / MICROINTERACCIONES
       ================================================== */

    main.container{
      animation:dgimPageEnter .26s ease both;
    }

    .module-card,
    .stat-card,
    .panel,
    .security-note,
    .changelog-access,
    .users-history-access,
    .recent-access-section,
    .quick-search-launcher{
      transition:
        transform .16s ease,
        border-color .16s ease,
        box-shadow .16s ease,
        background-color .16s ease;
    }

    .module-card.active:hover,
    .changelog-access:hover,
    .users-history-access:hover,
    .quick-search-launcher:hover{
      transform:translateY(-2px);
      box-shadow:0 10px 26px rgba(32,35,38,.08);
    }

    .module-card.active:active,
    .changelog-access:active,
    .users-history-access:active,
    .quick-search-launcher:active,
    .recent-access-item:active{
      transform:translateY(0) scale(.995);
    }

    .btn,
    .mini-btn,
    .modal-close,
    .theme-setting-option,
    .preference-choice,
    .quick-search-close,
    .recent-access-clear{
      transition:
        transform .13s ease,
        border-color .13s ease,
        background-color .13s ease,
        color .13s ease,
        box-shadow .13s ease,
        opacity .13s ease;
    }

    .btn:not(:disabled):active,
    .mini-btn:not(:disabled):active,
    .modal-close:not(:disabled):active,
    .theme-setting-option:not(:disabled):active,
    .preference-choice:not(:disabled):active,
    .quick-search-close:not(:disabled):active{
      transform:scale(.975);
    }

    .btn:disabled,
    .mini-btn:disabled{
      cursor:not-allowed;
      opacity:.56;
    }

    a:focus-visible,
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible,
    [tabindex]:focus-visible{
      outline:3px solid rgba(var(--accent-rgb),.25);
      outline-offset:2px;
    }

    .admin-modal:not([hidden]),
    .security-modal:not([hidden]),
    .quick-search-overlay:not([hidden]){
      animation:dgimBackdropEnter .16s ease both;
    }

    .admin-modal:not([hidden]) .admin-modal-card,
    .security-modal:not([hidden]) .security-modal-card,
    .quick-search-overlay:not([hidden]) .quick-search-dialog{
      animation:dgimDialogEnter .20s cubic-bezier(.2,.75,.25,1) both;
      transform-origin:center top;
    }

    .vehicle-search-suggestions:not([hidden]),
    .audit-autocomplete-menu:not([hidden]),
    .theme-menu:not([hidden]){
      animation:dgimMenuEnter .14s ease both;
      transform-origin:top center;
    }

    .module-arrow,
    .changelog-access-arrow,
    .recent-access-arrow{
      transition:transform .16s ease, color .16s ease;
    }

    .module-card.active:hover .module-arrow,
    .changelog-access:hover .changelog-access-arrow,
    .users-history-access:hover .changelog-access-arrow,
    .recent-access-item:hover .recent-access-arrow{
      transform:translateX(3px);
    }

    .role-pill,
    .status-pill,
    .password-status,
    .suggestion-status,
    .audit-entity-pill{
      transition:transform .14s ease, opacity .14s ease;
    }

    tbody tr{
      transition:background-color .12s ease;
    }

    @keyframes dgimPageEnter{
      from{
        opacity:0;
        transform:translateY(5px);
      }
      to{
        opacity:1;
        transform:none;
      }
    }

    @keyframes dgimBackdropEnter{
      from{opacity:0}
      to{opacity:1}
    }

    @keyframes dgimDialogEnter{
      from{
        opacity:0;
        transform:translateY(8px) scale(.985);
      }
      to{
        opacity:1;
        transform:none;
      }
    }

    @keyframes dgimMenuEnter{
      from{
        opacity:0;
        transform:translateY(-4px) scale(.99);
      }
      to{
        opacity:1;
        transform:none;
      }
    }

    /* ==================================================
       DENSIDAD DE INTERFAZ
       ================================================== */

    :root[data-density="compact"] .hero{
      padding:29px 32px;
      margin-bottom:18px;
      border-radius:18px;
    }

    :root[data-density="compact"] .hero.compact{
      padding:22px 26px;
    }

    :root[data-density="compact"] .hero h1{
      margin-top:4px;
      margin-bottom:6px;
    }

    :root[data-density="compact"] .hero.compact h1{
      font-size:30px;
    }

    :root[data-density="compact"] .module-grid{
      gap:14px;
    }

    :root[data-density="compact"] .module-card{
      min-height:126px;
      padding:17px 18px;
      gap:14px;
      border-radius:15px;
    }

    :root[data-density="compact"] .module-icon{
      width:44px;
      height:44px;
      border-radius:12px;
      font-size:21px;
    }

    :root[data-density="compact"] .module-card h2{
      margin:3px 0 5px;
      font-size:18px;
    }

    :root[data-density="compact"] .module-card p{
      font-size:12px;
    }

    :root[data-density="compact"] .module-arrow{
      font-size:24px;
    }

    :root[data-density="compact"] .security-note{
      margin-top:16px;
      padding:11px 14px;
    }

    :root[data-density="compact"] .panel{
      padding:16px;
      margin-bottom:14px;
      border-radius:15px;
    }

    :root[data-density="compact"] .stat-card{
      padding-top:14px;
      padding-bottom:14px;
    }

    :root[data-density="compact"] .users-toolbar{
      padding-top:10px;
      padding-bottom:10px;
    }

    :root[data-density="compact"] .users-filters{
      padding-top:10px;
      padding-bottom:10px;
    }

    :root[data-density="compact"] th,
    :root[data-density="compact"] td{
      padding-top:9px;
      padding-bottom:9px;
    }

    :root[data-density="compact"] .account-theme-panel,
    :root[data-density="compact"] .account-preferences-panel,
    :root[data-density="compact"] .account-shortcuts-panel{
      padding:16px;
    }

    :root[data-density="compact"] .theme-setting-option{
      min-height:76px;
      padding:11px;
    }

    :root[data-density="compact"] .quick-search-launcher{
      padding-top:9px;
      padding-bottom:9px;
    }

    :root[data-density="compact"] .recent-access-section{
      padding-top:9px;
      padding-bottom:9px;
    }

    /* ==================================================
       MOVIMIENTO
       ================================================== */

    :root[data-motion="reduced"] *,
    :root[data-motion="reduced"] *::before,
    :root[data-motion="reduced"] *::after{
      animation-duration:.001ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.001ms !important;
      scroll-behavior:auto !important;
    }

    :root[data-motion="reduced"] .shortcut-search-highlight input,
    :root[data-motion="reduced"] .shortcut-search-highlight .vehicle-search-autocomplete input{
      box-shadow:0 0 0 3px rgba(var(--accent-rgb),.18) !important;
    }

    :root[data-motion="reduced"] main.container,
    :root[data-motion="reduced"] .admin-modal:not([hidden]),
    :root[data-motion="reduced"] .security-modal:not([hidden]),
    :root[data-motion="reduced"] .quick-search-overlay:not([hidden]),
    :root[data-motion="reduced"] .vehicle-search-suggestions:not([hidden]),
    :root[data-motion="reduced"] .audit-autocomplete-menu:not([hidden]){
      animation:none !important;
      transform:none !important;
    }

    /* ==================================================
       TEMA / MODO OSCURO
       ================================================== */

    .account-shortcuts-panel{
      margin-top:16px;
      padding:20px;
      scroll-margin-top:90px;
    }

    .account-shortcuts-intro{
      margin:0 0 14px;
      color:var(--muted);
      font-size:12px;
      line-height:1.5;
    }

    .keyboard-shortcuts-grid{
      display:grid;
      gap:8px;
    }

    .keyboard-shortcut-row{
      display:grid;
      grid-template-columns:minmax(0,1fr) auto;
      align-items:center;
      gap:16px;
      padding:10px 11px;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--surface-soft);
    }

    .keyboard-shortcut-row > div{
      min-width:0;
      display:grid;
      gap:2px;
    }

    .keyboard-shortcut-row strong{
      color:var(--ink);
      font-size:11.5px;
    }

    .keyboard-shortcut-row span{
      color:var(--muted);
      font-size:9.5px;
      line-height:1.35;
    }

    .shortcut-key-combo{
      display:inline-flex;
      align-items:center;
      justify-content:flex-end;
      gap:5px;
      white-space:nowrap;
    }

    .shortcut-key-combo kbd{
      min-width:29px;
      min-height:27px;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      padding:4px 7px;
      border:1px solid var(--line);
      border-bottom-width:2px;
      border-radius:7px;
      background:var(--card);
      color:var(--ink);
      font-family:inherit;
      font-size:9.5px;
      font-weight:900;
      line-height:1;
      box-shadow:0 1px 0 rgba(32,35,38,.04);
    }

    .shortcut-win{display:none}
    .shortcut-platform-win .shortcut-win{display:inline-flex}
    .shortcut-platform-win .shortcut-mac{display:none}

    .account-shortcuts-note{
      margin:12px 0 0;
      color:var(--muted);
      font-size:10px;
    }

    .account-shortcuts-panel.shortcut-highlight{
      animation:shortcutPanelPulse 1.25s ease;
    }

    .shortcut-search-highlight{
      position:relative;
      z-index:6;
      border-radius:12px;
      animation:shortcutSearchPulse 1.3s ease;
    }

    .shortcut-search-highlight input,
    .shortcut-search-highlight .vehicle-search-autocomplete input{
      border-color:var(--orange) !important;
      box-shadow:
        0 0 0 3px rgba(var(--accent-rgb),.18),
        0 0 20px rgba(var(--accent-rgb),.22) !important;
      background:
        linear-gradient(
          0deg,
          rgba(var(--accent-rgb),.08),
          rgba(var(--accent-rgb),.08)
        ),
        var(--input-bg) !important;
    }

    @keyframes shortcutSearchPulse{
      0%{
        transform:scale(1);
        filter:none;
      }
      28%{
        transform:scale(1.012);
        filter:drop-shadow(0 0 10px rgba(var(--accent-rgb),.20));
      }
      55%{
        transform:scale(1);
      }
      76%{
        transform:scale(1.006);
      }
      100%{
        transform:scale(1);
        filter:none;
      }
    }

    @keyframes shortcutPanelPulse{
      0%,100%{
        box-shadow:none;
        border-color:var(--line);
      }
      35%{
        border-color:var(--accent-border);
        box-shadow:0 0 0 4px rgba(var(--accent-rgb),.11);
      }
    }

    .account-preferences-panel{
      margin-top:16px;
      padding:20px;
    }

    .account-preferences-intro{
      margin:0 0 16px;
      color:var(--muted);
      font-size:12px;
      line-height:1.5;
    }

    .interface-preference-block{
      display:grid;
      grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr);
      gap:20px;
      align-items:center;
    }

    .interface-preference-copy{
      display:grid;
      gap:4px;
    }

    .interface-preference-copy strong{
      color:var(--ink);
      font-size:13px;
    }

    .interface-preference-copy span{
      color:var(--muted);
      font-size:10.5px;
      line-height:1.45;
    }

    .interface-preference-divider{
      height:1px;
      margin:16px 0;
      background:var(--line);
    }

    .preference-choice-group{
      display:grid;
      grid-template-columns:1fr 1fr;
      gap:10px;
    }

    .preference-choice{
      appearance:none;
      min-height:70px;
      display:grid;
      grid-template-columns:34px minmax(0,1fr) 20px;
      align-items:center;
      gap:9px;
      padding:10px 11px;
      border:1px solid var(--line);
      border-radius:11px;
      background:var(--card);
      color:var(--ink);
      text-align:left;
      cursor:pointer;
      transition:.16s ease;
    }

    .preference-choice:hover{
      border-color:var(--accent-border);
      transform:translateY(-1px);
    }

    .preference-choice.active{
      border-color:var(--accent-border);
      background:var(--accent-hover);
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.08);
    }

    .preference-choice-icon{
      width:34px;
      height:34px;
      display:grid;
      place-items:center;
      border-radius:9px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:15px;
      font-weight:800;
    }

    .preference-choice > span:nth-child(2){
      min-width:0;
      display:grid;
      gap:2px;
    }

    .preference-choice strong{
      color:var(--ink);
      font-size:11.5px;
    }

    .preference-choice small{
      color:var(--muted);
      font-size:9.5px;
    }

    .preference-choice-check{
      visibility:hidden;
      color:var(--orange);
      font-size:15px;
      font-weight:900;
      text-align:center;
    }

    .preference-choice.active .preference-choice-check{
      visibility:visible;
    }

    .preference-choice.active .preference-choice-icon{
      background:var(--accent-soft);
      color:var(--accent-ink);
    }

    .account-preferences-note{
      margin:14px 0 0;
      color:var(--muted);
      font-size:10px;
    }

    .account-theme-panel{
      margin-top:16px;
      padding:20px;
    }

    .account-theme-intro{
      margin:0 0 14px;
      color:var(--muted);
      font-size:12px;
      line-height:1.5;
    }

    .theme-settings-grid{
      display:grid;
      grid-template-columns:repeat(3,minmax(0,1fr));
      gap:12px;
    }

    .theme-setting-option{
      appearance:none;
      min-height:92px;
      display:grid;
      grid-template-columns:38px minmax(0,1fr) 22px;
      align-items:center;
      gap:11px;
      padding:14px;
      border:1px solid var(--line);
      border-radius:13px;
      background:var(--card);
      color:var(--ink);
      text-align:left;
      cursor:pointer;
      transition:.16s ease;
    }

    .theme-setting-option:hover{
      border-color:var(--accent-border);
      transform:translateY(-1px);
      box-shadow:0 7px 18px rgba(32,35,38,.06);
    }

    .theme-setting-option.active{
      border-color:var(--accent-border);
      background:var(--accent-hover);
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.08);
    }

    .theme-setting-icon{
      width:38px;
      height:38px;
      display:grid;
      place-items:center;
      border-radius:11px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:18px;
    }

    .theme-setting-option.active .theme-setting-icon{
      background:var(--accent-soft);
      color:var(--accent-ink);
    }

    .theme-setting-copy{
      min-width:0;
      display:grid;
      gap:3px;
    }

    .theme-setting-copy strong{
      color:var(--ink);
      font-size:13px;
    }

    .theme-setting-copy small{
      color:var(--muted);
      font-size:10px;
      line-height:1.35;
    }

    .theme-setting-check{
      visibility:hidden;
      color:var(--orange);
      font-size:16px;
      font-weight:900;
      text-align:center;
    }

    .theme-setting-option.active .theme-setting-check{
      visibility:visible;
    }

    .account-theme-note{
      margin:12px 0 0;
      color:var(--muted);
      font-size:10px;
    }

    :root[data-theme="dark"] body{
      background:var(--bg);
      color:var(--ink);
    }

    :root[data-theme="dark"] .hero{
      background:linear-gradient(135deg,var(--hero-dark-start),var(--hero-dark-end));
    }

    :root[data-theme="dark"] .module-card,
    :root[data-theme="dark"] .security-note,
    :root[data-theme="dark"] .stat-card,
    :root[data-theme="dark"] .panel,
    :root[data-theme="dark"] .own-session-row,
    :root[data-theme="dark"] .admin-session-card,
    :root[data-theme="dark"] .admin-modal-card,
    :root[data-theme="dark"] .login-card,
    :root[data-theme="dark"] .security-modal-card,
    :root[data-theme="dark"] .changelog-section,
    :root[data-theme="dark"] .changelog-note,
    :root[data-theme="dark"] .changelog-access,
    :root[data-theme="dark"] .changelog-tabs-shell,
    :root[data-theme="dark"] .changelog-section-head,
    :root[data-theme="dark"] .users-history-access,
    :root[data-theme="dark"] .audit-event-card,
    :root[data-theme="dark"] .audit-empty,
    :root[data-theme="dark"] .suggestion-card,
    :root[data-theme="dark"] .suggestions-empty{
      background:var(--card);
      border-color:var(--line);
    }

    :root[data-theme="dark"] .module-card.active:hover,
    :root[data-theme="dark"] .changelog-access:hover,
    :root[data-theme="dark"] .users-history-access:hover{
      background:var(--surface-hover);
      border-color:var(--accent-dark-border);
      box-shadow:0 12px 28px rgba(0,0,0,.24);
    }

    :root[data-theme="dark"] .module-card.users-disabled .module-icon,
    :root[data-theme="dark"] .device-icon,
    :root[data-theme="dark"] .audit-event-icon{
      background:var(--accent-dark-soft);
      color:#e1a16d;
    }

    :root[data-theme="dark"] .module-icon,
    :root[data-theme="dark"] .you-tag,
    :root[data-theme="dark"] .role-pill.admin,
    /* Títulos del Changelog: tenían un gris oscuro fijo, ilegible en modo oscuro. */
    :root[data-theme="dark"] .release-title-text,
    :root[data-theme="dark"] .release-group h3{
      color:var(--ink);
    }

    :root[data-theme="dark"] .release-version,
    :root[data-theme="dark"] .audit-autocomplete-role{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .generic-future-card{
      background:linear-gradient(135deg,#181c1f 0%,#24211e 100%);
      border-color:#3b3835;
    }

    :root[data-theme="dark"] .own-session-row.current,
    :root[data-theme="dark"] .suggestion-response{
      background:var(--accent-dark-soft);
      border-color:var(--accent-dark-border);
    }

    :root[data-theme="dark"] .users-filters,
    :root[data-theme="dark"] .changelog-tabs,
    :root[data-theme="dark"] th,
    :root[data-theme="dark"] .invitation-account,
    :root[data-theme="dark"] .module-permissions-editor{
      background:var(--surface-soft);
      border-color:var(--line);
    }

    :root[data-theme="dark"] input,
    :root[data-theme="dark"] select,
    :root[data-theme="dark"] textarea,
    :root[data-theme="dark"] .account-password-form input,
    :root[data-theme="dark"] .users-filters select,
    :root[data-theme="dark"] .user-form input,
    :root[data-theme="dark"] .user-form select,
    :root[data-theme="dark"] .delete-confirm-label input,
    :root[data-theme="dark"] .audit-filters input,
    :root[data-theme="dark"] .audit-filters select,
    :root[data-theme="dark"] .suggestions-filters input,
    :root[data-theme="dark"] .suggestions-filters select,
    :root[data-theme="dark"] .suggestion-admin-form select,
    :root[data-theme="dark"] .suggestion-admin-form textarea,
    :root[data-theme="dark"] .suggestion-textarea{
      background:var(--input-bg);
      color:var(--ink);
      border-color:#424a50;
    }

    :root[data-theme="dark"] input::placeholder,
    :root[data-theme="dark"] textarea::placeholder{
      color:#737d84;
      opacity:1;
    }

    :root[data-theme="dark"] .btn-secondary,
    :root[data-theme="dark"] .mini-btn,
    :root[data-theme="dark"] .modal-close,
    :root[data-theme="dark"] .changelog-tab{
      background:#23282c;
      color:var(--ink);
      border-color:#3d454a;
    }

    :root[data-theme="dark"] .btn-secondary:hover,
    :root[data-theme="dark"] .mini-btn:hover,
    :root[data-theme="dark"] .changelog-tab:hover{
      background:#2b3135;
      border-color:var(--accent-dark-border);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .btn-ghost{
      color:#c3c9cd;
      border-color:#3d454a;
    }

    :root[data-theme="dark"] .btn-ghost:hover{
      background:#23282c;
    }

    :root[data-theme="dark"] tbody tr:hover{
      background:var(--surface-hover);
    }

    :root[data-theme="dark"] td{
      border-bottom-color:#2c3236;
    }

    :root[data-theme="dark"] th{
      color:#aeb5ba;
    }

    :root[data-theme="dark"] label,
    :root[data-theme="dark"] .users-filters label,
    :root[data-theme="dark"] .user-form label,
    :root[data-theme="dark"] .create-access-fieldset legend,
    :root[data-theme="dark"] .delete-confirm-label,
    :root[data-theme="dark"] .audit-filters label,
    :root[data-theme="dark"] .suggestions-filters label,
    :root[data-theme="dark"] .suggestion-admin-form label{
      color:#b7bec3;
    }

    :root[data-theme="dark"] .own-session-row strong,
    :root[data-theme="dark"] .admin-session-meta strong,
    :root[data-theme="dark"] .create-access-option strong,
    :root[data-theme="dark"] .permission-option strong,
    :root[data-theme="dark"] .invitation-account strong,
    :root[data-theme="dark"] .audit-autocomplete-person strong,
    :root[data-theme="dark"] .audit-event-title-row > strong,
    :root[data-theme="dark"] .audit-event-meta strong,
    :root[data-theme="dark"] .audit-empty strong,
    :root[data-theme="dark"] .suggestions-empty strong{
      color:var(--ink);
    }

    :root[data-theme="dark"] .users-date,
    :root[data-theme="dark"] .mini-btn.subtle,
    :root[data-theme="dark"] .release-card ul,
    :root[data-theme="dark"] .release-area,
    :root[data-theme="dark"] .audit-detail-list,
    :root[data-theme="dark"] .suggestion-body,
    :root[data-theme="dark"] .leave-suggestion-text{
      color:#c1c7cb;
    }

    :root[data-theme="dark"] .user-form .create-access-option,
    :root[data-theme="dark"] .permission-option{
      background:#181c1f;
      border-color:#3a4146;
    }

    :root[data-theme="dark"] .user-form .create-access-option:has(input:checked){
      background:#2d231c;
      border-color:#8e5730;
    }

    :root[data-theme="dark"] .delete-warning{
      background:#352020;
      border-color:#593030;
      color:#ffaaa3;
    }

    :root[data-theme="dark"] .admin-access-note{
      background:#30251d;
      border-color:#4a382b;
    }

    :root[data-theme="dark"] .audit-autocomplete-menu{
      background:#1a1e21;
      border-color:#3d454a;
      box-shadow:0 16px 40px rgba(0,0,0,.36);
    }

    :root[data-theme="dark"] .audit-autocomplete-option:hover,
    :root[data-theme="dark"] .audit-autocomplete-option:focus{
      background:#252b2f;
    }

    :root[data-theme="dark"] .audit-entity-pill,
    :root[data-theme="dark"] .suggestion-module,
    :root[data-theme="dark"] .suggestion-status.discarded{
      background:#292e32;
      color:#b9c0c5;
    }

    :root[data-theme="dark"] .suggestion-status.review{
      background:#1e2b3d;
      color:#92b8ef;
    }

    :root[data-theme="dark"] .suggestion-status.considered{
      background:#2b2339;
      color:#c0a3eb;
    }

    :root[data-theme="dark"] .password-status.configured{
      background:#1f2d39;
      color:#8fc4ee;
    }

    :root[data-theme="dark"] .password-status.invited{
      background:#29233b;
      color:#c2adee;
    }

    :root[data-theme="dark"] .role-pill.user{
      background:#292e32;
      color:#c0c6ca;
    }

    :root[data-theme="dark"] .recent-access-section{
      background:var(--card);
      border-color:var(--line);
    }

    :root[data-theme="dark"] .recent-access-item{
      background:#171b1e;
      border-color:#343b40;
    }

    :root[data-theme="dark"] .recent-access-item:hover{
      background:var(--surface-hover);
      border-color:var(--accent-dark-border);
    }

    :root[data-theme="dark"] .recent-access-icon{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .vehicle-search-suggestions{
      background:#1a1e21;
      border-color:#3d454a;
      box-shadow:0 16px 40px rgba(0,0,0,.36);
    }

    :root[data-theme="dark"] .vehicle-search-suggestion:hover,
    :root[data-theme="dark"] .vehicle-search-suggestion.active{
      background:#252b2f;
    }

    :root[data-theme="dark"] .vehicle-search-suggestion-type{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .quick-search-launcher,
    :root[data-theme="dark"] .quick-search-dialog{
      background:var(--card);
      border-color:var(--line);
    }

    :root[data-theme="dark"] .quick-search-launcher-icon,
    :root[data-theme="dark"] .quick-search-result-icon{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .quick-search-overlay{
      background:rgba(0,0,0,.58);
    }

    :root[data-theme="dark"] .quick-search-input-wrap input{
      border-color:#424a50;
    }

    :root[data-theme="dark"] .quick-search-result:hover,
    :root[data-theme="dark"] .quick-search-result.active{
      background:#252b2f;
    }

    :root[data-theme="dark"] .account-visual-theme-option,
    :root[data-theme="dark"] .user-visual-theme-option{
      background:var(--card);
      border-color:var(--line);
    }

    :root[data-theme="dark"] .account-visual-theme-option.selected,
    :root[data-theme="dark"] .account-visual-theme-option:has(input:checked){
      background:var(--accent-dark-soft);
      border-color:var(--orange);
    }

    :root[data-theme="dark"] .user-visual-theme-option.selected,
    :root[data-theme="dark"] .user-visual-theme-option:has(input:checked){
      background:var(--accent-dark-soft);
      border-color:var(--orange);
    }

    :root[data-theme="dark"] .keyboard-shortcut-row{
      background:#171b1e;
      border-color:#343b40;
    }

    :root[data-theme="dark"] .shortcut-key-combo kbd{
      background:#22272b;
      border-color:#3d454a;
      color:var(--ink);
      box-shadow:none;
    }

    :root[data-theme="dark"] .preference-choice{
      background:#181c1f;
      border-color:#3a4146;
    }

    :root[data-theme="dark"] .preference-choice:hover{
      background:var(--surface-hover);
      border-color:var(--accent-dark-border);
    }

    :root[data-theme="dark"] .preference-choice.active{
      background:#2b221c;
      border-color:#a45f30;
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.10);
    }

    :root[data-theme="dark"] .preference-choice.active .preference-choice-icon{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root[data-theme="dark"] .theme-setting-option{
      background:#181c1f;
      border-color:#3a4146;
    }

    :root[data-theme="dark"] .theme-setting-option:hover{
      background:var(--surface-hover);
      border-color:var(--accent-dark-border);
    }

    :root[data-theme="dark"] .theme-setting-option.active{
      background:#2b221c;
      border-color:#a45f30;
      box-shadow:0 0 0 2px rgba(var(--accent-rgb),.10);
    }

    :root[data-theme="dark"] .theme-setting-option.active .theme-setting-icon{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }


    /* ==================================================
       TEMAS VISUALES PROFUNDOS · v2.14.1
       ================================================== */

    :root[data-visual-theme="cobre"]{
      --orange:#b45f32;
      --orange-dark:#904522;
      --accent-rgb:180,95,50;
      --accent-soft:#f1ddd0;
      --accent-ink:#7f4023;
      --accent-border:#c98e70;
      --accent-hover:#f7e9df;
      --accent-dark-soft:#3a261d;
      --accent-dark-ink:#f0b28f;
      --accent-dark-border:#86523a;
      --hero-start:#35251e;
      --hero-end:#704a36;
      --hero-dark-start:#1d1512;
      --hero-dark-end:#43291f;
      --theme-secondary:#86604e;

      --ink:#342821;
      --muted:#78665b;
      --line:#d7c0b2;
      --bg:#eee4dc;
      --card:#fffaf6;
      --surface-soft:#f4e9e1;
      --surface-muted:#f8f0ea;
      --surface-hover:#f3dfd1;
      --input-bg:#fffdfb;
      --topbar-bg:rgba(248,239,232,.96);
      --shadow:0 14px 34px rgba(83,54,39,.12);
    }

    :root[data-visual-theme="cobre"][data-theme="dark"]{
      --ink:#f2e8e1;
      --muted:#bba79a;
      --line:#4a352b;
      --bg:#17110e;
      --card:#241a16;
      --surface-soft:#1d1613;
      --surface-muted:#201713;
      --surface-hover:#30221b;
      --input-bg:#1b1411;
      --topbar-bg:rgba(24,17,14,.96);
      --shadow:0 16px 40px rgba(0,0,0,.40);
    }

    :root[data-visual-theme="acero"]{
      --orange:#557c8e;
      --orange-dark:#3f6373;
      --accent-rgb:85,124,142;
      --accent-soft:#dce8ed;
      --accent-ink:#355869;
      --accent-border:#8daab6;
      --accent-hover:#e9f1f4;
      --accent-dark-soft:#1d3039;
      --accent-dark-ink:#aad0df;
      --accent-dark-border:#506f7c;
      --hero-start:#25353d;
      --hero-end:#506b77;
      --hero-dark-start:#131b1f;
      --hero-dark-end:#283b44;
      --theme-secondary:#839aa4;

      --ink:#203039;
      --muted:#64767e;
      --line:#c5d3d9;
      --bg:#e6edf0;
      --card:#f9fcfd;
      --surface-soft:#edf3f5;
      --surface-muted:#f2f6f7;
      --surface-hover:#e4eef2;
      --input-bg:#fbfdfe;
      --topbar-bg:rgba(239,245,247,.96);
      --shadow:0 14px 34px rgba(49,76,88,.12);
    }

    :root[data-visual-theme="acero"][data-theme="dark"]{
      --ink:#edf4f7;
      --muted:#9fb1b9;
      --line:#344952;
      --bg:#0f161a;
      --card:#182126;
      --surface-soft:#141d21;
      --surface-muted:#121a1e;
      --surface-hover:#223139;
      --input-bg:#121a1e;
      --topbar-bg:rgba(15,22,26,.96);
      --shadow:0 16px 40px rgba(0,0,0,.42);
    }

    :root[data-visual-theme="halloween"]{
      --orange:#f87513;
      --orange-dark:#d75b00;
      --accent-rgb:248,117,19;
      --accent-soft:#f8dfc9;
      --accent-ink:#a84908;
      --accent-border:#e2a065;
      --accent-hover:#fbe9d8;
      --accent-dark-soft:#302039;
      --accent-dark-ink:#ddb9f2;
      --accent-dark-border:#77518d;
      --hero-start:#241529;
      --hero-end:#68335f;
      --hero-dark-start:#100b13;
      --hero-dark-end:#35163d;
      --theme-secondary:#7650a7;

      --ink:#302033;
      --muted:#756274;
      --line:#d6bfae;
      --bg:#efe5dc;
      --card:#fff8ef;
      --surface-soft:#f6e9de;
      --surface-muted:#f9efe7;
      --surface-hover:#f5dfd0;
      --input-bg:#fffbf6;
      --topbar-bg:rgba(250,240,232,.96);
      --shadow:0 14px 36px rgba(82,43,73,.13);
    }

    :root[data-visual-theme="halloween"][data-theme="dark"]{
      --ink:#f6edf8;
      --muted:#bca7c4;
      --line:#432e4c;
      --bg:#0c090f;
      --card:#17111b;
      --surface-soft:#120e16;
      --surface-muted:#100c13;
      --surface-hover:#24182a;
      --input-bg:#120e16;
      --topbar-bg:rgba(12,9,15,.97);
      --shadow:0 16px 42px rgba(0,0,0,.52);
    }

    /* Superficies profundas: evita que el tema quede limitado al hero. */
    :root:not([data-visual-theme="dgim"]) body{
      background:
        radial-gradient(circle at 88% -8%, rgba(var(--accent-rgb),.10), transparent 30%),
        var(--bg);
    }

    :root[data-visual-theme="halloween"] body{
      background:
        radial-gradient(circle at 92% -6%, rgba(118,80,167,.18), transparent 31%),
        radial-gradient(circle at 8% 22%, rgba(248,117,19,.09), transparent 24%),
        var(--bg);
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 92% -6%, rgba(118,80,167,.20), transparent 31%),
        radial-gradient(circle at 8% 22%, rgba(248,117,19,.08), transparent 24%),
        var(--bg);
    }

    :root:not([data-visual-theme="dgim"]) .panel,
    :root:not([data-visual-theme="dgim"]) .security-note,
    :root:not([data-visual-theme="dgim"]) .own-session-row,
    :root:not([data-visual-theme="dgim"]) .admin-session-card,
    :root:not([data-visual-theme="dgim"]) .users-filters,
    :root:not([data-visual-theme="dgim"]) .users-table-wrap,
    :root:not([data-visual-theme="dgim"]) .admin-modal-card,
    :root:not([data-visual-theme="dgim"]) .security-modal-card,
    :root:not([data-visual-theme="dgim"]) .module-permissions-editor,
    :root:not([data-visual-theme="dgim"]) .permission-option,
    :root:not([data-visual-theme="dgim"]) .changelog-section,
    :root:not([data-visual-theme="dgim"]) .changelog-tabs-shell,
    :root:not([data-visual-theme="dgim"]) .changelog-tab,
    :root:not([data-visual-theme="dgim"]) .changelog-note,
    :root:not([data-visual-theme="dgim"]) .changelog-access,
    :root:not([data-visual-theme="dgim"]) .users-history-access,
    :root:not([data-visual-theme="dgim"]) .audit-autocomplete-menu,
    :root:not([data-visual-theme="dgim"]) .audit-event-card,
    :root:not([data-visual-theme="dgim"]) .audit-empty,
    :root:not([data-visual-theme="dgim"]) .suggestion-card,
    :root:not([data-visual-theme="dgim"]) .suggestions-empty,
    :root:not([data-visual-theme="dgim"]) .quick-search-launcher,
    :root:not([data-visual-theme="dgim"]) .quick-search-dialog{
      background:var(--card);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) input,
    :root:not([data-visual-theme="dgim"]) select,
    :root:not([data-visual-theme="dgim"]) textarea,
    :root:not([data-visual-theme="dgim"]) .account-password-form input,
    :root:not([data-visual-theme="dgim"]) .user-form input,
    :root:not([data-visual-theme="dgim"]) .user-form select,
    :root:not([data-visual-theme="dgim"]) .audit-filters input,
    :root:not([data-visual-theme="dgim"]) .audit-filters select,
    :root:not([data-visual-theme="dgim"]) .suggestions-filters input,
    :root:not([data-visual-theme="dgim"]) .suggestions-filters select,
    :root:not([data-visual-theme="dgim"]) .suggestion-admin-form select,
    :root:not([data-visual-theme="dgim"]) .suggestion-admin-form textarea,
    :root:not([data-visual-theme="dgim"]) .suggestion-textarea{
      background:var(--input-bg);
      color:var(--ink);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .users-table th,
    :root:not([data-visual-theme="dgim"]) .changelog-section-head,
    :root:not([data-visual-theme="dgim"]) .self-edit-note,
    :root:not([data-visual-theme="dgim"]) .invitation-account,
    :root:not([data-visual-theme="dgim"]) .suggestion-module,
    :root:not([data-visual-theme="dgim"]) .audit-entity-pill,
    :root:not([data-visual-theme="dgim"]) .session-count{
      background:var(--surface-soft);
      color:var(--ink);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .users-table tbody tr:hover,
    :root:not([data-visual-theme="dgim"]) .audit-autocomplete-option:hover,
    :root:not([data-visual-theme="dgim"]) .audit-autocomplete-option:focus,
    :root:not([data-visual-theme="dgim"]) .quick-search-result:hover,
    :root:not([data-visual-theme="dgim"]) .quick-search-result.active{
      background:var(--surface-hover);
    }

    :root:not([data-visual-theme="dgim"]) .own-session-row.current,
    :root:not([data-visual-theme="dgim"]) .suggestion-response,
    :root:not([data-visual-theme="dgim"]) .preference-choice.active,
    :root:not([data-visual-theme="dgim"]) .theme-setting-option.active,
    :root:not([data-visual-theme="dgim"]) .account-visual-theme-option:has(input:checked),
    :root:not([data-visual-theme="dgim"]) .user-visual-theme-option:has(input:checked),
    :root:not([data-visual-theme="dgim"]) .user-form .create-access-option:has(input:checked){
      background:var(--accent-hover);
      border-color:var(--orange);
    }

    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .own-session-row.current,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .suggestion-response,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .preference-choice.active,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .theme-setting-option.active,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .account-visual-theme-option:has(input:checked),
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .user-visual-theme-option:has(input:checked),
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .user-form .create-access-option:has(input:checked){
      background:var(--accent-dark-soft);
      border-color:var(--orange);
    }

    :root:not([data-visual-theme="dgim"]) .btn-secondary,
    :root:not([data-visual-theme="dgim"]) .mini-btn,
    :root:not([data-visual-theme="dgim"]) .modal-close{
      background:var(--surface-soft);
      color:var(--ink);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .btn-secondary:hover,
    :root:not([data-visual-theme="dgim"]) .mini-btn:hover,
    :root:not([data-visual-theme="dgim"]) .modal-close:hover{
      background:var(--surface-hover);
      border-color:var(--accent-border);
    }

    :root:not([data-visual-theme="dgim"]) .module-card,
    :root:not([data-visual-theme="dgim"]) .account-data-row,
    :root:not([data-visual-theme="dgim"]) .keyboard-shortcut-row,
    :root:not([data-visual-theme="dgim"]) .preference-choice,
    :root:not([data-visual-theme="dgim"]) .theme-setting-option,
    :root:not([data-visual-theme="dgim"]) .user-form .create-access-option{
      background:var(--card);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .module-icon,
    :root:not([data-visual-theme="dgim"]) .quick-search-result-icon,
    :root:not([data-visual-theme="dgim"]) .you-tag,
    :root:not([data-visual-theme="dgim"]) .role-pill.admin,
    :root:not([data-visual-theme="dgim"]) .release-version,
    :root:not([data-visual-theme="dgim"]) .current-session-badge{
      background:var(--accent-soft);
      color:var(--accent-ink);
    }

    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .module-icon,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .quick-search-result-icon,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .you-tag,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .role-pill.admin,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .release-version,
    :root:not([data-visual-theme="dgim"])[data-theme="dark"] .current-session-badge{
      background:var(--accent-dark-soft);
      color:var(--accent-dark-ink);
    }

    :root:not([data-visual-theme="dgim"]) .hero{
      box-shadow:
        0 18px 38px rgba(0,0,0,.12),
        inset 0 0 0 1px rgba(255,255,255,.04);
    }

    :root[data-visual-theme="cobre"] .topbar{
      box-shadow:0 1px 0 rgba(111,72,51,.08);
    }

    :root[data-visual-theme="acero"] .topbar{
      box-shadow:0 1px 0 rgba(58,88,101,.10);
    }

    :root[data-visual-theme="halloween"] .topbar{
      box-shadow:0 1px 0 rgba(104,51,95,.12);
    }

    :root[data-visual-theme="halloween"] .hero{
      border-bottom-color:#7f55ae;
    }

    :root[data-visual-theme="halloween"] .eyebrow,
    :root[data-visual-theme="halloween"] .account-kicker,
    :root[data-visual-theme="halloween"] .quick-search-kicker{
      color:#f87513;
    }

    :root[data-visual-theme="halloween"] .module-card.active:hover,
    :root[data-visual-theme="halloween"] .changelog-access:hover,
    :root[data-visual-theme="halloween"] .users-history-access:hover,
    :root[data-visual-theme="halloween"] .quick-search-launcher:hover{
      border-color:#8a61b0;
      box-shadow:0 10px 26px rgba(95,55,113,.15);
    }


    /* ==================================================
       MOTOR TOTAL DE TEMAS · v2.14.2
       ================================================== */

    :root:not([data-visual-theme="dgim"]) .panel,
    :root:not([data-visual-theme="dgim"]) .module-card,
    :root:not([data-visual-theme="dgim"]) .changelog-access,
    :root:not([data-visual-theme="dgim"]) .users-history-access,
    :root:not([data-visual-theme="dgim"]) .quick-search-launcher,
    :root:not([data-visual-theme="dgim"]) .suggestion-card,
    :root:not([data-visual-theme="dgim"]) .audit-event-card,
    :root:not([data-visual-theme="dgim"]) .admin-session-card,
    :root:not([data-visual-theme="dgim"]) .own-session-row,
    :root:not([data-visual-theme="dgim"]) .security-note,
    :root:not([data-visual-theme="dgim"]) .stat-card{
      border-radius:var(--theme-radius-card);
      box-shadow:var(--theme-card-shadow);
    }

    :root:not([data-visual-theme="dgim"]) input,
    :root:not([data-visual-theme="dgim"]) select,
    :root:not([data-visual-theme="dgim"]) textarea,
    :root:not([data-visual-theme="dgim"]) button,
    :root:not([data-visual-theme="dgim"]) .btn,
    :root:not([data-visual-theme="dgim"]) .mini-btn{
      border-radius:var(--theme-radius-control);
    }

    :root:not([data-visual-theme="dgim"]) input:focus,
    :root:not([data-visual-theme="dgim"]) select:focus,
    :root:not([data-visual-theme="dgim"]) textarea:focus{
      border-color:var(--orange)!important;
      box-shadow:var(--theme-focus-shadow)!important;
      outline:none;
    }

    :root:not([data-visual-theme="dgim"]) .btn-primary{
      background:var(--orange);
      border-color:var(--orange);
      color:#fff;
      box-shadow:0 6px 15px rgba(var(--accent-rgb),.17);
    }

    :root:not([data-visual-theme="dgim"]) .btn-primary:hover{
      background:var(--orange-dark);
      border-color:var(--orange-dark);
      box-shadow:0 9px 20px rgba(var(--accent-rgb),.22);
    }

    :root:not([data-visual-theme="dgim"]) .module-arrow,
    :root:not([data-visual-theme="dgim"]) .changelog-access-arrow,
    :root:not([data-visual-theme="dgim"]) .users-history-arrow,
    :root:not([data-visual-theme="dgim"]) .account-kicker,
    :root:not([data-visual-theme="dgim"]) .admin-modal-kicker,
    :root:not([data-visual-theme="dgim"]) .access-denied-mark{
      color:var(--orange);
    }

    :root:not([data-visual-theme="dgim"]) .users-table,
    :root:not([data-visual-theme="dgim"]) .users-table-wrap{
      border-color:var(--line);
      background:var(--card);
    }

    :root:not([data-visual-theme="dgim"]) .users-table td,
    :root:not([data-visual-theme="dgim"]) .users-table th{
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .users-table th{
      background:var(--surface-soft);
      color:var(--ink);
    }

    :root:not([data-visual-theme="dgim"]) .users-table tbody tr:hover{
      background:var(--surface-hover);
    }

    :root:not([data-visual-theme="dgim"]) .quick-search-launcher,
    :root:not([data-visual-theme="dgim"]) .changelog-access,
    :root:not([data-visual-theme="dgim"]) .users-history-access{
      background:var(--card);
      border-color:var(--line);
    }

    :root:not([data-visual-theme="dgim"]) .quick-search-launcher:hover,
    :root:not([data-visual-theme="dgim"]) .changelog-access:hover,
    :root:not([data-visual-theme="dgim"]) .users-history-access:hover{
      background:var(--surface-hover);
      border-color:var(--accent-border);
    }

    /* COBRE: cálido, industrial y más recto. */
    :root[data-visual-theme="cobre"] .topbar{
      background:linear-gradient(
        90deg,
        color-mix(in srgb,var(--topbar-bg) 94%,#7e4f36 6%),
        var(--topbar-bg)
      );
    }

    :root[data-visual-theme="cobre"] .panel,
    :root[data-visual-theme="cobre"] .module-card.active{
      border-left:3px solid color-mix(in srgb,var(--orange) 55%,var(--line));
    }

    :root[data-visual-theme="cobre"] .hero{
      background:
        linear-gradient(115deg,rgba(255,255,255,.035),transparent 45%),
        linear-gradient(135deg,var(--hero-start),var(--hero-end));
    }

    :root[data-visual-theme="cobre"] .module-icon{
      border-radius:7px;
    }

    /* ACERO: más técnico, frío y geométrico. */
    :root[data-visual-theme="acero"] .panel,
    :root[data-visual-theme="acero"] .module-card,
    :root[data-visual-theme="acero"] .changelog-access,
    :root[data-visual-theme="acero"] .quick-search-launcher{
      border-radius:6px;
    }

    :root[data-visual-theme="acero"] .hero{
      border-radius:8px;
      border-bottom-width:3px;
      background:
        linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),
        linear-gradient(0deg,rgba(255,255,255,.025) 1px,transparent 1px),
        linear-gradient(135deg,var(--hero-start),var(--hero-end));
      background-size:26px 26px,26px 26px,auto;
    }

    :root[data-visual-theme="acero"] .btn,
    :root[data-visual-theme="acero"] input,
    :root[data-visual-theme="acero"] select,
    :root[data-visual-theme="acero"] textarea{
      border-radius:5px;
    }

    :root[data-visual-theme="acero"] .module-card.active{
      border-top:2px solid color-mix(in srgb,var(--orange) 65%,var(--line));
    }

    /* HALLOWEEN: negro/violeta/naranjo y superficies más dramáticas. */
    :root[data-visual-theme="halloween"] .topbar{
      background:
        linear-gradient(90deg,rgba(118,80,167,.10),transparent 38%),
        var(--topbar-bg);
      border-bottom-color:color-mix(in srgb,#7650a7 55%,var(--line));
    }

    :root[data-visual-theme="halloween"] .hero{
      border-bottom-color:#7650a7;
      box-shadow:
        0 18px 42px rgba(52,19,62,.22),
        0 0 0 1px rgba(248,117,19,.08);
    }

    :root[data-visual-theme="halloween"] .panel,
    :root[data-visual-theme="halloween"] .module-card.active{
      border-color:color-mix(in srgb,#7650a7 30%,var(--line));
    }

    :root[data-visual-theme="halloween"] .module-card.active{
      box-shadow:
        var(--theme-card-shadow),
        inset 0 2px 0 rgba(248,117,19,.18);
    }

    :root[data-visual-theme="halloween"] .module-icon{
      background:linear-gradient(
        145deg,
        rgba(248,117,19,.17),
        rgba(118,80,167,.16)
      );
      color:var(--orange);
      border-radius:15px;
    }

    :root[data-visual-theme="halloween"] .quick-search-launcher,
    :root[data-visual-theme="halloween"] .changelog-access,
    :root[data-visual-theme="halloween"] .users-history-access{
      border-color:color-mix(in srgb,#7650a7 28%,var(--line));
    }

    :root[data-visual-theme="halloween"] .btn-primary{
      background:linear-gradient(135deg,#f87513,#d55b05);
      border-color:#f87513;
    }

    :root[data-visual-theme="halloween"] .btn-primary:hover{
      background:linear-gradient(135deg,#ff8b2f,#bc4b00);
      border-color:#ff8b2f;
    }

    :root[data-visual-theme="halloween"] .user-theme-current,
    :root[data-visual-theme="halloween"] .you-tag,
    :root[data-visual-theme="halloween"] .role-pill.admin{
      background:linear-gradient(
        135deg,
        rgba(248,117,19,.14),
        rgba(118,80,167,.13)
      );
      color:var(--accent-ink);
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] .user-theme-current,
    :root[data-visual-theme="halloween"][data-theme="dark"] .you-tag,
    :root[data-visual-theme="halloween"][data-theme="dark"] .role-pill.admin{
      color:#e4c4f5;
    }


    /* ==================================================
       FONDOS POR TEMA + HALLOWEEN VISUAL · v2.14.3
       ================================================== */

    /*
      Los fondos ahora forman parte de la identidad del tema.
      Se mantienen fijos al viewport para que el cambio se sienta
      en Hub, Usuarios, Vehículos, Changelog, Mi cuenta, etc.
    */

    :root[data-visual-theme="dgim"] body{
      background:
        radial-gradient(circle at 82% -12%, rgba(239,108,0,.055), transparent 29%),
        var(--bg);
      background-attachment:fixed;
    }

    :root[data-visual-theme="cobre"] body{
      background:
        radial-gradient(circle at 84% -10%, rgba(180,95,50,.20), transparent 30%),
        radial-gradient(circle at -8% 38%, rgba(126,79,54,.10), transparent 26%),
        repeating-linear-gradient(
          135deg,
          rgba(126,79,54,.025) 0,
          rgba(126,79,54,.025) 1px,
          transparent 1px,
          transparent 22px
        ),
        linear-gradient(155deg,#f2e9e1 0%,#eadccf 48%,#efe4db 100%);
      background-attachment:fixed;
    }

    :root[data-visual-theme="cobre"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 84% -10%, rgba(180,95,50,.16), transparent 31%),
        radial-gradient(circle at -8% 38%, rgba(126,79,54,.11), transparent 26%),
        repeating-linear-gradient(
          135deg,
          rgba(218,155,116,.025) 0,
          rgba(218,155,116,.025) 1px,
          transparent 1px,
          transparent 22px
        ),
        linear-gradient(155deg,#120d0b 0%,#1c1310 50%,#15100d 100%);
      background-attachment:fixed;
    }

    :root[data-visual-theme="acero"] body{
      background:
        radial-gradient(circle at 86% -12%, rgba(85,124,142,.22), transparent 31%),
        radial-gradient(circle at 12% 65%, rgba(116,151,166,.09), transparent 24%),
        linear-gradient(rgba(85,124,142,.045) 1px,transparent 1px),
        linear-gradient(90deg,rgba(85,124,142,.045) 1px,transparent 1px),
        linear-gradient(155deg,#edf3f5 0%,#dde8ec 48%,#e8eff2 100%);
      background-size:auto,auto,32px 32px,32px 32px,auto;
      background-attachment:fixed;
    }

    :root[data-visual-theme="acero"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 86% -12%, rgba(85,124,142,.18), transparent 31%),
        radial-gradient(circle at 12% 65%, rgba(116,151,166,.075), transparent 24%),
        linear-gradient(rgba(147,183,197,.035) 1px,transparent 1px),
        linear-gradient(90deg,rgba(147,183,197,.035) 1px,transparent 1px),
        linear-gradient(155deg,#0b1114 0%,#101a1f 48%,#0d1519 100%);
      background-size:auto,auto,32px 32px,32px 32px,auto;
      background-attachment:fixed;
    }

    :root[data-visual-theme="halloween"] body{
      position:relative;
      background:
        radial-gradient(circle at 88% -5%, rgba(118,80,167,.26), transparent 31%),
        radial-gradient(circle at 4% 24%, rgba(248,117,19,.17), transparent 26%),
        radial-gradient(circle at 72% 72%, rgba(118,80,167,.09), transparent 24%),
        linear-gradient(155deg,#f5eadf 0%,#efe0d3 43%,#eee4ec 100%);
      background-attachment:fixed;
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 88% -5%, rgba(118,80,167,.31), transparent 31%),
        radial-gradient(circle at 4% 24%, rgba(248,117,19,.14), transparent 25%),
        radial-gradient(circle at 72% 72%, rgba(118,80,167,.13), transparent 24%),
        linear-gradient(155deg,#08070a 0%,#0e0912 42%,#100a16 100%);
      background-attachment:fixed;
    }

    /*
      Telarañas y murciélagos como textura lateral/fondo.
      Opacidad baja para que no interfieran con lectura.
    */
    :root[data-visual-theme="halloween"] body::before{
      content:"";
      position:fixed;
      inset:0;
      z-index:0;
      pointer-events:none;
      background-image:
        var(--halloween-webs),
        var(--halloween-bats);
      background-repeat:no-repeat,no-repeat;
      background-position:
        left top,
        right 4% top 150px;
      background-size:
        min(500px,34vw) auto,
        min(330px,24vw) auto;
      opacity:.075;
      mix-blend-mode:multiply;
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] body::before{
      opacity:.085;
      filter:invert(1) grayscale(1) contrast(1.1);
      mix-blend-mode:screen;
    }

    /*
      Gato decorativo fijo en la zona inferior.
      Se trata como sticker para que el fondo original de la imagen
      se vea intencional y no como parte de la interfaz.
    */
    :root[data-visual-theme="halloween"] body::after{
      content:"";
      position:fixed;
      left:18px;
      bottom:16px;
      width:92px;
      height:74px;
      z-index:1;
      pointer-events:none;
      background:
        white var(--halloween-cat) center/contain no-repeat;
      border:1px solid rgba(118,80,167,.20);
      border-radius:18px;
      box-shadow:0 10px 28px rgba(45,19,54,.16);
      opacity:.76;
      transform:rotate(-2deg);
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] body::after{
      background-color:#f7f2f8;
      opacity:.68;
      box-shadow:0 12px 30px rgba(0,0,0,.34);
    }

    /* Todo el contenido queda sobre las decoraciones globales.
       v18.26: sin ventanas (.admin-modal, .security-modal, dialog): «relative» les quitaba el «fixed» y en
       Halloween las ventanas (p. ej. «+ Nueva mantención») salían abajo de la página. La .topbar tiene su propio z-index. */
    :root[data-visual-theme="halloween"] main{
      position:relative;
      z-index:2;
    }

    /*
      Decoración del hero: calabaza con sombrero + murciélagos.
      Solo se activa en Halloween.
    */
    .halloween-hero-decoration{
      display:none;
    }

    :root[data-visual-theme="halloween"] .halloween-hero-decoration{
      display:block;
      position:relative;
      height:0;
      z-index:3;
      pointer-events:none;
    }

    :root[data-visual-theme="halloween"] .halloween-hero-witch{
      position:absolute;
      right:34px;
      top:-185px;
      width:105px;
      height:98px;
      background:white var(--halloween-witch-pumpkin) center/contain no-repeat;
      border-radius:22px;
      box-shadow:0 12px 28px rgba(0,0,0,.16);
      opacity:.88;
      transform:rotate(3deg);
    }

    :root[data-visual-theme="halloween"] .halloween-hero-bats{
      position:absolute;
      right:118px;
      top:-170px;
      width:112px;
      height:70px;
      background:var(--halloween-bats) center/contain no-repeat;
      opacity:.24;
      mix-blend-mode:multiply;
    }

    :root[data-visual-theme="halloween"][data-theme="dark"] .halloween-hero-bats{
      filter:invert(1);
      mix-blend-mode:screen;
      opacity:.28;
    }

    /*
      Stickers dentro de los módulos del Hub.
      No reemplazan iconos ni texto; solo añaden personalidad.
    */
    :root[data-visual-theme="halloween"] .module-grid .module-card{
      position:relative;
      overflow:hidden;
      padding-right:92px;
    }

    :root[data-visual-theme="halloween"] .module-grid .module-card::after{
      content:"";
      position:absolute;
      right:13px;
      bottom:8px;
      width:66px;
      height:66px;
      pointer-events:none;
      border-radius:16px;
      background-color:#fff;
      background-repeat:no-repeat;
      background-position:center;
      background-size:contain;
      box-shadow:0 8px 18px rgba(59,27,66,.13);
      opacity:.86;
      transform:rotate(2deg);
    }

    :root[data-visual-theme="halloween"] .module-grid .module-card:nth-child(1)::after{
      background-image:var(--halloween-ghost);
    }

    :root[data-visual-theme="halloween"] .module-grid .module-card:nth-child(2)::after{
      background-image:var(--halloween-pumpkin);
      transform:rotate(-2deg);
    }

    :root[data-visual-theme="halloween"] .module-grid .module-card:nth-child(3)::after{
      background-image:var(--halloween-cat);
      opacity:.68;
      transform:rotate(1deg);
    }

    :root[data-visual-theme="halloween"] .module-grid .module-card:hover::after{
      opacity:1;
      transform:translateY(-2px) rotate(0deg) scale(1.035);
      transition:.16s ease;
    }

    :root[data-motion="reduced"][data-visual-theme="halloween"] .module-grid .module-card:hover::after{
      transform:none;
      transition:none;
    }

    /*
      Los bloques inferiores reciben una pequeña huella Halloween,
      sin meter imágenes sobre textos.
    */
    :root[data-visual-theme="halloween"] .account-session-note{
      background:
        linear-gradient(90deg,rgba(248,117,19,.045),rgba(118,80,167,.055)),
        var(--card);
    }

    :root[data-visual-theme="halloween"] .hub-lower-stack .quick-search-launcher,
    :root[data-visual-theme="halloween"] .hub-lower-stack .changelog-access{
      background:
        linear-gradient(90deg,rgba(118,80,167,.035),transparent 42%),
        var(--card);
    }


    @media (max-width:850px){
      :root[data-visual-theme="halloween"] body::before{
        background-position:left top,right -42px top 170px;
        background-size:260px auto,210px auto;
        opacity:.045;
      }

      :root[data-visual-theme="halloween"] body::after{
        width:62px;
        height:52px;
        left:8px;
        bottom:8px;
        opacity:.50;
        border-radius:13px;
      }

      :root[data-visual-theme="halloween"] .halloween-hero-witch{
        width:74px;
        height:70px;
        right:15px;
        top:-140px;
        opacity:.78;
      }

      :root[data-visual-theme="halloween"] .halloween-hero-bats{
        display:none;
      }

      :root[data-visual-theme="halloween"] .module-grid .module-card{
        padding-right:72px;
      }

      :root[data-visual-theme="halloween"] .module-grid .module-card::after{
        width:50px;
        height:50px;
        right:10px;
        bottom:10px;
        border-radius:13px;
        opacity:.72;
      }

      .suggestions-hero{
        align-items:stretch;
        flex-direction:column;
      }

      .suggestions-hero .btn{
        width:100%;
      }

      .suggestions-stats{
        grid-template-columns:1fr;
      }

      .suggestions-filters{
        grid-template-columns:1fr;
      }

      .users-history-access{
        align-items:flex-start;
      }

      .audit-autocomplete-menu{
        max-height:250px;
      }

      .audit-filters{
        grid-template-columns:1fr;
      }

      .audit-filters .btn{
        width:100%;
      }

      .audit-event-card{
        grid-template-columns:1fr;
      }

      .audit-event-meta{
        grid-template-columns:1fr;
        padding-left:0;
        padding-top:12px;
        border-left:0;
        border-top:1px solid #eceeef;
      }

      .suggestions-filters .btn{
        width:100%;
      }

      .suggestion-card-head{
        flex-direction:column;
      }

      .suggestion-admin-form{
        grid-template-columns:1fr;
      }

      .suggestion-admin-form .btn{
        width:100%;
      }

      .suggestion-admin-actions{
        flex-direction:column-reverse;
        align-items:stretch;
      }

      .theme-settings-grid{
        grid-template-columns:1fr;
      }

      .theme-setting-option{
        min-height:76px;
      }

      .interface-preference-block{
        grid-template-columns:1fr;
        gap:10px;
      }

      .preference-choice-group{
        grid-template-columns:1fr;
      }

      .account-visual-theme-grid,
      .user-visual-theme-grid{
        grid-template-columns:1fr;
      }

      .account-visual-theme-actions .btn,
      .user-visual-theme-actions .btn{
        width:100%;
      }

      .keyboard-shortcut-row{
        grid-template-columns:1fr;
        gap:8px;
      }

      .shortcut-key-combo{
        justify-content:flex-start;
      }
    }

  

    /* ==================================================
       HALLOWEEN DECORATIVO INTEGRADO · v2.14.3.2
       ================================================== */

    html,
    body{
      min-height:100%;
    }

    /* Fondos completos por tema siguen activos y visibles. */
    html[data-visual-theme="cobre"],
    html[data-visual-theme="cobre"] body{
      background-color:#ead9cc !important;
      background-image:
        radial-gradient(circle at 86% 0%,rgba(180,95,50,.22),transparent 34%),
        repeating-linear-gradient(135deg,rgba(126,79,54,.035) 0 1px,transparent 1px 24px),
        linear-gradient(155deg,#f2e9e1 0%,#e6d4c6 52%,#efe2d9 100%) !important;
      background-attachment:fixed !important;
    }

    html[data-visual-theme="cobre"][data-theme="dark"],
    html[data-visual-theme="cobre"][data-theme="dark"] body{
      background-color:#130d0b !important;
      background-image:
        radial-gradient(circle at 86% 0%,rgba(180,95,50,.20),transparent 34%),
        repeating-linear-gradient(135deg,rgba(218,155,116,.035) 0 1px,transparent 1px 24px),
        linear-gradient(155deg,#0e0a08 0%,#1d120e 52%,#15100d 100%) !important;
    }

    html[data-visual-theme="acero"],
    html[data-visual-theme="acero"] body{
      background-color:#dce7eb !important;
      background-image:
        radial-gradient(circle at 86% 0%,rgba(85,124,142,.25),transparent 34%),
        linear-gradient(rgba(85,124,142,.060) 1px,transparent 1px),
        linear-gradient(90deg,rgba(85,124,142,.060) 1px,transparent 1px),
        linear-gradient(155deg,#edf3f5 0%,#d9e5ea 50%,#e7eef1 100%) !important;
      background-size:auto,34px 34px,34px 34px,auto !important;
      background-attachment:fixed !important;
    }

    html[data-visual-theme="acero"][data-theme="dark"],
    html[data-visual-theme="acero"][data-theme="dark"] body{
      background-color:#0d1519 !important;
      background-image:
        radial-gradient(circle at 86% 0%,rgba(85,124,142,.22),transparent 34%),
        linear-gradient(rgba(147,183,197,.045) 1px,transparent 1px),
        linear-gradient(90deg,rgba(147,183,197,.045) 1px,transparent 1px),
        linear-gradient(155deg,#090f12 0%,#101b20 50%,#0c1418 100%) !important;
    }

    html[data-visual-theme="halloween"],
    html[data-visual-theme="halloween"] body{
      background-color:#e8d9e8 !important;
      background-image:
        radial-gradient(circle at 88% -4%,rgba(105,55,132,.28),transparent 35%),
        radial-gradient(circle at 5% 22%,rgba(248,117,19,.20),transparent 29%),
        radial-gradient(circle at 74% 78%,rgba(105,55,132,.10),transparent 30%),
        linear-gradient(145deg,#f6e9db 0%,#eadbe7 48%,#e3d4e7 100%) !important;
      background-attachment:fixed !important;
    }

    html[data-visual-theme="halloween"][data-theme="dark"],
    html[data-visual-theme="halloween"][data-theme="dark"] body{
      background-color:#0B0710 !important;
      background-image:
        radial-gradient(circle at 86% 6%,rgba(255,235,170,.16),transparent 9%),
        radial-gradient(circle at 12% 18%,rgba(123,47,208,.45),transparent 32%),
        radial-gradient(circle at 55% 115%,rgba(255,122,0,.30),transparent 40%),
        linear-gradient(155deg,#0B0710 0%,#120A18 50%,#0E0814 100%) !important;
      background-attachment:fixed !important;
    }

    /* Desactiva implementaciones antiguas para no duplicar adornos. */
    html[data-visual-theme="halloween"] body::before,
    html[data-visual-theme="halloween"] body::after,
    html[data-visual-theme="halloween"] .module-grid .module-card::after{
      display:none !important;
      content:none !important;
    }

    .visual-theme-backdrop{
      display:none !important;
    }

    /* Decoración global: pequeña, transparente y lateral. */
    .halloween-decoration-layer{
      display:none;
    }

    html[data-visual-theme="halloween"] .halloween-decoration-layer{
      display:block;
      position:fixed;
      inset:0;
      z-index:1;
      pointer-events:none;
      overflow:hidden;
    }

    html[data-visual-theme="halloween"] .halloween-decor{
      position:absolute;
      display:block;
      pointer-events:none;
      user-select:none;
      object-fit:contain;
    }

    html[data-visual-theme="halloween"] .halloween-decor-webs{
      left:-10px;
      top:78px;
      width:180px;
      opacity:.18;
    }

    html[data-visual-theme="halloween"] .halloween-decor-bats{
      right:28px;
      top:165px;
      width:118px;
      opacity:.25;
    }

    html[data-visual-theme="halloween"] .halloween-decor-cat{
      left:18px;
      bottom:18px;
      width:72px;
      max-height:68px;
      opacity:.82;
      transform:rotate(-4deg);
    }

    html[data-visual-theme="halloween"][data-theme="dark"] .halloween-decor-webs{
      filter:invert(1) grayscale(1);
      opacity:.15;
    }

    html[data-visual-theme="halloween"][data-theme="dark"] .halloween-decor-bats{
      filter:invert(1);
      opacity:.24;
    }

    html[data-visual-theme="halloween"] .topbar,
    html[data-visual-theme="halloween"] main{
      position:relative;
      z-index:2;
    }

    /* Hero: adornos chicos, sin caja ni fondo. */
    .halloween-hero-decoration{
      display:none;
    }

    html[data-visual-theme="halloween"] .halloween-hero-decoration{
      display:block !important;
      position:relative;
      height:0;
      z-index:4;
      pointer-events:none;
    }

    html[data-visual-theme="halloween"] .halloween-hero-witch{
      position:absolute;
      right:26px;
      top:-114px;
      width:60px;
      height:58px;
      object-fit:contain;
      opacity:.92;
      transform:rotate(4deg);
      filter:drop-shadow(0 7px 10px rgba(0,0,0,.18));
    }

    html[data-visual-theme="halloween"] .halloween-hero-bats{
      position:absolute;
      right:94px;
      top:-128px;
      width:74px;
      height:46px;
      object-fit:contain;
      opacity:.28;
    }

    html[data-visual-theme="halloween"][data-theme="dark"] .halloween-hero-bats{
      filter:invert(1);
      opacity:.30;
    }

    /* Stickers pequeños dentro de las tarjetas. */
    .halloween-module-sticker{
      display:none;
    }

    html[data-visual-theme="halloween"] .module-grid .module-card{
      position:relative;
      overflow:visible;
      padding-right:74px;
    }

    html[data-visual-theme="halloween"] .halloween-module-sticker{
      display:block;
      position:absolute;
      right:14px;
      bottom:11px;
      width:46px;
      height:46px;
      object-fit:contain;
      pointer-events:none;
      opacity:.88;
      transform:rotate(2deg);
      filter:drop-shadow(0 5px 7px rgba(35,15,42,.16));
      transition:transform .16s ease,opacity .16s ease;
    }

    html[data-visual-theme="halloween"] .module-card:nth-child(2) .halloween-module-sticker{
      width:43px;
      height:43px;
      transform:rotate(-2deg);
    }

    html[data-visual-theme="halloween"] .halloween-future-sticker{
      width:53px;
      height:53px;
      right:18px;
      bottom:12px;
      opacity:.68;
    }

    html[data-visual-theme="halloween"] .module-card:hover .halloween-module-sticker{
      opacity:1;
      transform:translateY(-2px) rotate(0deg) scale(1.035);
    }

    html[data-motion="reduced"][data-visual-theme="halloween"] .module-card:hover .halloween-module-sticker{
      transform:none;
      transition:none;
    }

    @media (max-width:850px){
      html[data-visual-theme="halloween"] .halloween-decor-webs{
        width:110px;
        top:76px;
        opacity:.10;
      }

      html[data-visual-theme="halloween"] .halloween-decor-bats{
        width:76px;
        right:4px;
        top:150px;
        opacity:.14;
      }

      html[data-visual-theme="halloween"] .halloween-decor-cat{
        width:46px;
        left:7px;
        bottom:7px;
        opacity:.58;
      }

      html[data-visual-theme="halloween"] .halloween-hero-witch{
        width:44px;
        height:42px;
        right:12px;
        top:-92px;
      }

      html[data-visual-theme="halloween"] .halloween-hero-bats{
        display:none;
      }

      html[data-visual-theme="halloween"] .module-grid .module-card{
        padding-right:62px;
      }

      html[data-visual-theme="halloween"] .halloween-module-sticker{
        width:38px;
        height:38px;
        right:10px;
        bottom:10px;
        opacity:.75;
      }

      html[data-visual-theme="halloween"] .halloween-future-sticker{
        width:42px;
        height:42px;
      }
    }


/* ===== v2.14.4 PALETAS ===== */

    :root[data-visual-theme="dgim"]{
      --orange:#F26A0A;
      --orange-dark:#B94A00;
      --theme-secondary:#7C8389;
      --ink:#222427;
      --muted:#6B7075;
      --line:#DADFE3;
      --bg:#F2F4F6;
      --card:#FFFDFC;
      --danger:#A92920;
      --danger-bg:#FFE8E5;
      --warn:#8C5C00;
      --warn-bg:#FFF3CF;
      --ok:#146B35;
      --ok-bg:#E5F7EB;
      --surface-soft:#E9EDF0;
      --surface-muted:#F8F9FA;
      --surface-hover:#FFF0E2;
      --input-bg:#FFFEFD;
      --topbar-bg:#FDFCFB;
      --accent-soft:#FFE1C7;
      --accent-ink:#A63D00;
      --accent-border:#EFA66F;
      --accent-hover:#FFF0E2;
      --hero-start:#25282C;
      --hero-end:#41454A;
      --hero-dark-start:#25282C;
      --hero-dark-end:#41454A;
      --on-primary:#FFF8F3;
      --theme-radius-card:14px;
      --theme-radius-control:10px;
      --accent-rgb:242,106,10;
      --shadow:0 16px 38px color-mix(in srgb,#F26A0A 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#F26A0A 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#F26A0A 24%,transparent);
    }
    
    :root[data-visual-theme="dgim"][data-theme="dark"]{
      --orange:#F26A0A;
      --orange-dark:#B94A00;
      --theme-secondary:#7C8389;
      --ink:#EEF1F4;
      --muted:#A7AFB7;
      --line:#384047;
      --bg:#101315;
      --card:#1B1F23;
      --danger:#FF9287;
      --danger-bg:#3A1F20;
      --warn:#E6BC61;
      --warn-bg:#382E1B;
      --ok:#75D596;
      --ok-bg:#193426;
      --surface-soft:#171B1E;
      --surface-muted:#14181B;
      --surface-hover:#2C241F;
      --input-bg:#151A1D;
      --topbar-bg:#121619;
      --accent-soft:#352319;
      --accent-ink:#F4A164;
      --accent-border:#855433;
      --accent-hover:#2C241F;
      --hero-start:#16191C;
      --hero-end:#282D31;
      --hero-dark-start:#16191C;
      --hero-dark-end:#282D31;
      --on-primary:#FFF4EC;
      --theme-radius-card:14px;
      --theme-radius-control:10px;
      --accent-rgb:242,106,10;
      --shadow:0 16px 38px color-mix(in srgb,#F26A0A 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#F26A0A 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#F26A0A 24%,transparent);
    }
    
    :root[data-visual-theme="cobre"]{
      --orange:#A9532A;
      --orange-dark:#6E2F16;
      --theme-secondary:#8E6B58;
      --ink:#352820;
      --muted:#7A6254;
      --line:#D9B9A5;
      --bg:#E8D7C8;
      --card:#FFF7F0;
      --danger:#8A2E23;
      --danger-bg:#F7D5CE;
      --warn:#73510A;
      --warn-bg:#F1DFB4;
      --ok:#2A633D;
      --ok-bg:#DDECDD;
      --surface-soft:#F0DED0;
      --surface-muted:#F6E9DF;
      --surface-hover:#EAC8B2;
      --input-bg:#FFF3EB;
      --topbar-bg:#F5E6DB;
      --accent-soft:#EED0BD;
      --accent-ink:#763A1D;
      --accent-border:#C88B68;
      --accent-hover:#EAC8B2;
      --hero-start:#3B251B;
      --hero-end:#7A4B30;
      --hero-dark-start:#3B251B;
      --hero-dark-end:#7A4B30;
      --on-primary:#FFF1E7;
      --theme-radius-card:8px;
      --theme-radius-control:7px;
      --accent-rgb:169,83,42;
      --shadow:0 16px 38px color-mix(in srgb,#A9532A 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#A9532A 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#A9532A 24%,transparent);
    }
    
    :root[data-visual-theme="cobre"][data-theme="dark"]{
      --orange:#A9532A;
      --orange-dark:#6E2F16;
      --theme-secondary:#8E6B58;
      --ink:#F3E4DA;
      --muted:#B89B8B;
      --line:#513529;
      --bg:#140D0A;
      --card:#241711;
      --danger:#E98271;
      --danger-bg:#3B1A16;
      --warn:#D6A64B;
      --warn-bg:#33260E;
      --ok:#71B982;
      --ok-bg:#173020;
      --surface-soft:#1D120E;
      --surface-muted:#1A100D;
      --surface-hover:#392117;
      --input-bg:#190F0B;
      --topbar-bg:#18100C;
      --accent-soft:#3A2116;
      --accent-ink:#E6A079;
      --accent-border:#845038;
      --accent-hover:#392117;
      --hero-start:#1C110D;
      --hero-end:#4B2B1E;
      --hero-dark-start:#1C110D;
      --hero-dark-end:#4B2B1E;
      --on-primary:#FFF0E4;
      --theme-radius-card:8px;
      --theme-radius-control:7px;
      --accent-rgb:169,83,42;
      --shadow:0 16px 38px color-mix(in srgb,#A9532A 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#A9532A 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#A9532A 24%,transparent);
    }
    
    :root[data-visual-theme="acero"]{
      --orange:#39768F;
      --orange-dark:#1F5268;
      --theme-secondary:#8298A2;
      --ink:#1D2B32;
      --muted:#5A6E78;
      --line:#B6CBD4;
      --bg:#DCE7EB;
      --card:#F5FAFC;
      --danger:#7D3046;
      --danger-bg:#EED6DE;
      --warn:#6C641E;
      --warn-bg:#E9E6C7;
      --ok:#1F6658;
      --ok-bg:#D4EDE7;
      --surface-soft:#CFE0E7;
      --surface-muted:#E8F0F3;
      --surface-hover:#C1D7E0;
      --input-bg:#F1F7F9;
      --topbar-bg:#E9F1F4;
      --accent-soft:#D2E5ED;
      --accent-ink:#2E6177;
      --accent-border:#83ABB9;
      --accent-hover:#C1D7E0;
      --hero-start:#24343D;
      --hero-end:#4B6E7D;
      --hero-dark-start:#24343D;
      --hero-dark-end:#4B6E7D;
      --on-primary:#F1FBFF;
      --theme-radius-card:5px;
      --theme-radius-control:5px;
      --accent-rgb:57,118,143;
      --shadow:0 16px 38px color-mix(in srgb,#39768F 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#39768F 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#39768F 24%,transparent);
    }
    
    :root[data-visual-theme="acero"][data-theme="dark"]{
      --orange:#39768F;
      --orange-dark:#1F5268;
      --theme-secondary:#8298A2;
      --ink:#E8F3F7;
      --muted:#9DB1BA;
      --line:#314954;
      --bg:#0B1317;
      --card:#152127;
      --danger:#D67B91;
      --danger-bg:#351C26;
      --warn:#C4B65D;
      --warn-bg:#2D2B14;
      --ok:#67B9A8;
      --ok-bg:#143029;
      --surface-soft:#101A1F;
      --surface-muted:#0F181C;
      --surface-hover:#20333C;
      --input-bg:#101A1E;
      --topbar-bg:#0E181D;
      --accent-soft:#19313C;
      --accent-ink:#91C4D8;
      --accent-border:#4E7484;
      --accent-hover:#20333C;
      --hero-start:#0F1A20;
      --hero-end:#2B4652;
      --hero-dark-start:#0F1A20;
      --hero-dark-end:#2B4652;
      --on-primary:#EAF9FF;
      --theme-radius-card:5px;
      --theme-radius-control:5px;
      --accent-rgb:57,118,143;
      --shadow:0 16px 38px color-mix(in srgb,#39768F 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#39768F 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#39768F 24%,transparent);
    }
    
    /* v18.22: Halloween reeditado (calabaza, morado y negro noche). */
    :root[data-visual-theme="halloween"]{
      --orange:#FF7A00;
      --orange-dark:#C24E00;
      --theme-secondary:#7B2FD0;
      --ink:#2A1235;
      --muted:#6E5378;
      --line:#CDA9DA;
      --bg:#E9DCEF;
      --card:#FFF6EC;
      --danger:#AA214F;
      --danger-bg:#F6D3E1;
      --warn:#6C7209;
      --warn-bg:#EAF0BF;
      --ok:#2C7242;
      --ok-bg:#D8EAD8;
      --surface-soft:#F1E3EE;
      --surface-muted:#F6ECF2;
      --surface-hover:#FFD9B5;
      --input-bg:#FFF9F2;
      --topbar-bg:#F1DFF0;
      --accent-soft:#FFDDBF;
      --accent-ink:#9A3A00;
      --accent-border:#FF9A4D;
      --accent-hover:#FFD9B5;
      --hero-start:#1A0F22;
      --hero-end:#55207A;
      --hero-dark-start:#1A0F22;
      --hero-dark-end:#55207A;
      --on-primary:#1A0800;
      --theme-radius-card:18px;
      --theme-radius-control:12px;
      --accent-rgb:255,122,0;
      --shadow:0 16px 38px color-mix(in srgb,#7B2FD0 16%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#7B2FD0 14%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#FF7A00 30%,transparent);
    }
    
    :root[data-visual-theme="halloween"][data-theme="dark"]{
      --orange:#FF7A00;
      --orange-dark:#C24E00;
      --theme-secondary:#8A3FE0;
      --ink:#F6EAFB;
      --muted:#B9A3C6;
      --line:#3E2650;
      --bg:#0B0710;
      --card:#1A1022;
      --danger:#F06A9A;
      --danger-bg:#3D1428;
      --warn:#C7D95E;
      --warn-bg:#303610;
      --ok:#79CF87;
      --ok-bg:#16351C;
      --surface-soft:#140C1A;
      --surface-muted:#110A16;
      --surface-hover:#2B1838;
      --input-bg:#120A18;
      --topbar-bg:#120A18;
      --accent-soft:#3A1A0A;
      --accent-ink:#FFA047;
      --accent-border:#8A3FB0;
      --accent-hover:#2B1838;
      --hero-start:#120A18;
      --hero-end:#3B1257;
      --hero-dark-start:#120A18;
      --hero-dark-end:#3B1257;
      --on-primary:#1A0800;
      --theme-radius-card:18px;
      --theme-radius-control:12px;
      --accent-rgb:255,122,0;
      --shadow:0 16px 38px color-mix(in srgb,#000 40%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#7B2FD0 20%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#FF7A00 34%,transparent);
    }
    
    :root[data-visual-theme="rubi"]{
      --orange:#B22559;
      --orange-dark:#7C173B;
      --theme-secondary:#D67A96;
      --ink:#381820;
      --muted:#7A5963;
      --line:#D8B0BC;
      --bg:#EEDDE2;
      --card:#FFF4F7;
      --danger:#8C261F;
      --danger-bg:#F5D7D0;
      --warn:#7A5B17;
      --warn-bg:#F0E2BC;
      --ok:#236C50;
      --ok-bg:#D5EBDC;
      --surface-soft:#E8CBD4;
      --surface-muted:#F6E5EA;
      --surface-hover:#DEB9C5;
      --input-bg:#FFF8FA;
      --topbar-bg:#F7E8ED;
      --accent-soft:#F0C9D6;
      --accent-ink:#8B1C45;
      --accent-border:#CB7E98;
      --accent-hover:#DEB9C5;
      --hero-start:#3F1524;
      --hero-end:#782B49;
      --hero-dark-start:#3F1524;
      --hero-dark-end:#782B49;
      --on-primary:#FFF1F6;
      --theme-radius-card:20px;
      --theme-radius-control:13px;
      --accent-rgb:178,37,89;
      --shadow:0 16px 38px color-mix(in srgb,#B22559 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#B22559 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#B22559 24%,transparent);
    }
    
    :root[data-visual-theme="rubi"][data-theme="dark"]{
      --orange:#B22559;
      --orange-dark:#7C173B;
      --theme-secondary:#D67A96;
      --ink:#F7E8ED;
      --muted:#C2A0AA;
      --line:#54303D;
      --bg:#12080C;
      --card:#211017;
      --danger:#EB7B72;
      --danger-bg:#3A1614;
      --warn:#D4B15A;
      --warn-bg:#34280E;
      --ok:#69BE98;
      --ok-bg:#153228;
      --surface-soft:#190C12;
      --surface-muted:#160A0F;
      --surface-hover:#341421;
      --input-bg:#180B11;
      --topbar-bg:#160A10;
      --accent-soft:#391523;
      --accent-ink:#E89AB4;
      --accent-border:#85445B;
      --accent-hover:#341421;
      --hero-start:#1B0910;
      --hero-end:#4C1628;
      --hero-dark-start:#1B0910;
      --hero-dark-end:#4C1628;
      --on-primary:#FFEFF4;
      --theme-radius-card:20px;
      --theme-radius-control:13px;
      --accent-rgb:178,37,89;
      --shadow:0 16px 38px color-mix(in srgb,#B22559 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#B22559 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#B22559 24%,transparent);
    }
    
    :root[data-visual-theme="solar"]{
      --orange:#C79B00;
      --orange-dark:#775B00;
      --theme-secondary:#8B7A36;
      --ink:#332B15;
      --muted:#746947;
      --line:#D8C88C;
      --bg:#EFE8CC;
      --card:#FFF9E5;
      --danger:#8D3728;
      --danger-bg:#F1D8CB;
      --warn:#725F00;
      --warn-bg:#ECE0A6;
      --ok:#426528;
      --ok-bg:#DAE8C5;
      --surface-soft:#E5D8A6;
      --surface-muted:#F7EFCF;
      --surface-hover:#DAC783;
      --input-bg:#FFFBEF;
      --topbar-bg:#F6F0D6;
      --accent-soft:#F2D96E;
      --accent-ink:#6A5000;
      --accent-border:#C5A94B;
      --accent-hover:#DAC783;
      --hero-start:#403717;
      --hero-end:#7A681F;
      --hero-dark-start:#403717;
      --hero-dark-end:#7A681F;
      --on-primary:#FFFBE2;
      --theme-radius-card:11px;
      --theme-radius-control:8px;
      --accent-rgb:199,155,0;
      --shadow:0 16px 38px color-mix(in srgb,#C79B00 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#C79B00 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#C79B00 24%,transparent);
    }
    
    :root[data-visual-theme="solar"][data-theme="dark"]{
      --orange:#C79B00;
      --orange-dark:#775B00;
      --theme-secondary:#8B7A36;
      --ink:#F3EAC8;
      --muted:#B9AA74;
      --line:#514729;
      --bg:#110F08;
      --card:#211D0F;
      --danger:#E18A70;
      --danger-bg:#391D14;
      --warn:#D8C45C;
      --warn-bg:#332D0A;
      --ok:#91B96C;
      --ok-bg:#213018;
      --surface-soft:#19160B;
      --surface-muted:#161308;
      --surface-hover:#332B10;
      --input-bg:#181509;
      --topbar-bg:#17140A;
      --accent-soft:#3A300D;
      --accent-ink:#E1C85D;
      --accent-border:#7D6A25;
      --accent-hover:#332B10;
      --hero-start:#1C1809;
      --hero-end:#4D4216;
      --hero-dark-start:#1C1809;
      --hero-dark-end:#4D4216;
      --on-primary:#FFF8D4;
      --theme-radius-card:11px;
      --theme-radius-control:8px;
      --accent-rgb:199,155,0;
      --shadow:0 16px 38px color-mix(in srgb,#C79B00 14%,transparent);
      --theme-card-shadow:0 12px 28px color-mix(in srgb,#C79B00 12%,transparent);
      --theme-focus-shadow:0 0 0 3px color-mix(in srgb,#C79B00 24%,transparent);
    }
    
    :root[data-visual-theme="dgim"] body{
      background:
        radial-gradient(circle at 88% -8%,rgba(242,106,10,.11),transparent 31%),
        linear-gradient(155deg,#F2F4F6 0%,#E9EDF0 55%,#F8F9FA 100%) !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="dgim"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 88% -8%,rgba(242,106,10,.09),transparent 31%),
        linear-gradient(155deg,#101315 0%,#171B1E 55%,#14181B 100%) !important;
    }

    :root[data-visual-theme="cobre"] body{
      background:
        radial-gradient(circle at 84% -8%,rgba(169,83,42,.24),transparent 32%),
        repeating-linear-gradient(135deg,rgba(110,47,22,.035) 0 1px,transparent 1px 23px),
        linear-gradient(155deg,#E8D7C8 0%,#F0DED0 52%,#F6E9DF 100%) !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="cobre"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 84% -8%,rgba(169,83,42,.18),transparent 32%),
        repeating-linear-gradient(135deg,rgba(230,160,121,.03) 0 1px,transparent 1px 23px),
        linear-gradient(155deg,#140D0A 0%,#1D120E 52%,#1A100D 100%) !important;
    }

    :root[data-visual-theme="acero"] body{
      background:
        radial-gradient(circle at 86% -10%,rgba(57,118,143,.22),transparent 33%),
        linear-gradient(rgba(57,118,143,.055) 1px,transparent 1px),
        linear-gradient(90deg,rgba(57,118,143,.055) 1px,transparent 1px),
        linear-gradient(155deg,#DCE7EB 0%,#CFE0E7 50%,#E8F0F3 100%) !important;
      background-size:auto,32px 32px,32px 32px,auto !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="acero"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 86% -10%,rgba(57,118,143,.16),transparent 33%),
        linear-gradient(rgba(145,196,216,.035) 1px,transparent 1px),
        linear-gradient(90deg,rgba(145,196,216,.035) 1px,transparent 1px),
        linear-gradient(155deg,#0B1317 0%,#101A1F 50%,#0F181C 100%) !important;
    }

    :root[data-visual-theme="halloween"] body{
      background:
        radial-gradient(circle at 82% 8%,rgba(154,205,50,.17),transparent 26%),
        radial-gradient(circle at 12% 18%,rgba(122,56,182,.24),transparent 29%),
        linear-gradient(145deg,#E9DEEF 0%,#E1CFEA 48%,#F0E5F5 100%) !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="halloween"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 82% 8%,rgba(154,205,50,.12),transparent 26%),
        radial-gradient(circle at 12% 18%,rgba(122,56,182,.31),transparent 29%),
        linear-gradient(145deg,#0D0711 0%,#120C17 48%,#100B14 100%) !important;
    }

    :root[data-visual-theme="rubi"] body{
      background:
        radial-gradient(circle at 82% -5%,rgba(178,37,89,.24),transparent 31%),
        radial-gradient(circle at 8% 72%,rgba(214,122,150,.12),transparent 26%),
        linear-gradient(155deg,#EEDDE2 0%,#E8CBD4 52%,#F6E5EA 100%) !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="rubi"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 82% -5%,rgba(178,37,89,.19),transparent 31%),
        radial-gradient(circle at 8% 72%,rgba(214,122,150,.08),transparent 26%),
        linear-gradient(155deg,#12080C 0%,#190C12 52%,#160A0F 100%) !important;
    }

    :root[data-visual-theme="solar"] body{
      background:
        radial-gradient(circle at 84% -8%,rgba(199,155,0,.23),transparent 31%),
        radial-gradient(circle at 10% 72%,rgba(139,122,54,.14),transparent 25%), /* v17.12.2: antes anillos repetidos (lento al deslizar) */
        linear-gradient(155deg,#EFE8CC 0%,#E5D8A6 52%,#F7EFCF 100%) !important;
      background-attachment:fixed !important;
    }
    :root[data-visual-theme="solar"][data-theme="dark"] body{
      background:
        radial-gradient(circle at 84% -8%,rgba(199,155,0,.15),transparent 31%),
        radial-gradient(circle at 10% 72%,rgba(225,200,93,.07),transparent 25%),
        linear-gradient(155deg,#110F08 0%,#19160B 52%,#161308 100%) !important;
    }

    /* ==================================================
       MOTOR DE TEMAS RADICALES · v2.14.4
       ================================================== */

    .halloween-decoration-layer,
    .halloween-hero-decoration,
    .halloween-module-sticker,
    .halloween-decor,
    .visual-theme-backdrop{
      display:none !important;
    }

    :root[data-visual-theme] body::before,
    :root[data-visual-theme] body::after,
    :root[data-visual-theme] .module-grid .module-card::after{
      content:none !important;
      display:none !important;
    }

    :root[data-visual-theme] body{
      color:var(--ink) !important;
    }

    :root[data-visual-theme] .topbar{
      background:color-mix(in srgb,var(--topbar-bg) 94%,var(--orange) 6%) !important;
      border-color:var(--line) !important;
      box-shadow:0 1px 0 color-mix(in srgb,var(--orange) 13%,transparent) !important;
    }

    :root[data-visual-theme] .hero{
      background:
        linear-gradient(120deg,color-mix(in srgb,var(--theme-secondary) 9%,transparent),transparent 42%),
        linear-gradient(135deg,var(--hero-start),var(--hero-end)) !important;
      border-bottom-color:var(--theme-secondary) !important;
      box-shadow:
        0 18px 42px color-mix(in srgb,var(--hero-end) 24%,transparent),
        inset 0 0 0 1px color-mix(in srgb,var(--theme-secondary) 16%,transparent) !important;
    }

    :root[data-visual-theme] .panel,
    :root[data-visual-theme] .module-card,
    :root[data-visual-theme] .changelog-access,
    :root[data-visual-theme] .users-history-access,
    :root[data-visual-theme] .quick-search-launcher,
    :root[data-visual-theme] .security-note,
    :root[data-visual-theme] .own-session-row,
    :root[data-visual-theme] .admin-session-card,
    :root[data-visual-theme] .suggestion-card,
    :root[data-visual-theme] .audit-event-card,
    :root[data-visual-theme] .audit-empty,
    :root[data-visual-theme] .suggestions-empty,
    :root[data-visual-theme] .changelog-section,
    :root[data-visual-theme] .changelog-tabs-shell,
    :root[data-visual-theme] .changelog-note,
    :root[data-visual-theme] .module-permissions-editor,
    :root[data-visual-theme] .permission-option,
    :root[data-visual-theme] .admin-modal-card,
    :root[data-visual-theme] .security-modal-card,
    :root[data-visual-theme] .quick-search-dialog,
    :root[data-visual-theme] .audit-autocomplete-menu,
    :root[data-visual-theme] .account-data-row,
    :root[data-visual-theme] .keyboard-shortcut-row,
    :root[data-visual-theme] .preference-choice,
    :root[data-visual-theme] .theme-setting-option,
    :root[data-visual-theme] .account-visual-theme-option,
    :root[data-visual-theme] .user-visual-theme-option,
    :root[data-visual-theme] .users-table-wrap{
      background:var(--card) !important;
      border-color:var(--line) !important;
      color:var(--ink) !important;
      box-shadow:var(--theme-card-shadow) !important;
      border-radius:var(--theme-radius-card) !important;
    }

    :root[data-visual-theme] .module-card.disabled,
    :root[data-visual-theme] .generic-future-card{
      background:var(--surface-muted) !important;
      color:var(--muted) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] input,
    :root[data-visual-theme] select,
    :root[data-visual-theme] textarea{
      background:var(--input-bg) !important;
      color:var(--ink) !important;
      border-color:var(--line) !important;
      border-radius:var(--theme-radius-control) !important;
    }

    :root[data-visual-theme] input:focus,
    :root[data-visual-theme] select:focus,
    :root[data-visual-theme] textarea:focus{
      border-color:var(--orange) !important;
      box-shadow:var(--theme-focus-shadow) !important;
      outline:none !important;
    }

    :root[data-visual-theme] .btn-primary{
      background:var(--orange) !important;
      color:var(--on-primary) !important;
      border-color:var(--orange) !important;
      box-shadow:0 8px 18px color-mix(in srgb,var(--orange) 22%,transparent) !important;
    }

    :root[data-visual-theme] .btn-primary:hover{
      background:var(--orange-dark) !important;
      border-color:var(--orange-dark) !important;
    }

    :root[data-visual-theme] .btn-secondary,
    :root[data-visual-theme] .mini-btn,
    :root[data-visual-theme] .modal-close{
      background:var(--surface-soft) !important;
      color:var(--ink) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .btn-secondary:hover,
    :root[data-visual-theme] .mini-btn:hover,
    :root[data-visual-theme] .modal-close:hover{
      background:var(--surface-hover) !important;
      border-color:var(--accent-border) !important;
    }

    :root[data-visual-theme] .btn-danger{
      background:var(--danger) !important;
      color:var(--on-primary) !important;
      border-color:var(--danger) !important;
    }

    :root[data-visual-theme] .btn-danger:hover{
      background:color-mix(in srgb,var(--danger) 82%,var(--ink)) !important;
      border-color:color-mix(in srgb,var(--danger) 82%,var(--ink)) !important;
    }

    /* En modo oscuro --danger es un rojo claro pensado para texto: como fondo de botón
       dejaba el texto blanco casi ilegible. El botón vuelve al rojo de siempre. */
    :root[data-visual-theme][data-theme="dark"] .btn-danger{
      background:#c93333 !important;
      color:#fff !important;
      border-color:#c93333 !important;
    }

    :root[data-visual-theme][data-theme="dark"] .btn-danger:hover{
      background:#a92828 !important;
      border-color:#a92828 !important;
    }

    :root[data-visual-theme] .eyebrow,
    :root[data-visual-theme] .module-kicker,
    :root[data-visual-theme] .account-kicker,
    :root[data-visual-theme] .admin-modal-kicker,
    :root[data-visual-theme] .quick-search-kicker,
    :root[data-visual-theme] .module-arrow,
    :root[data-visual-theme] .changelog-access-arrow,
    :root[data-visual-theme] .users-history-arrow,
    /* Solo enlaces de texto: los enlaces con clase (pestañas, tarjetas, botones) tienen su
       propio color y quedaban naranjos y con poco contraste (Admin v10.0). */
    :root[data-visual-theme] a:not([class]){
      color:var(--orange);
    }

    :root[data-visual-theme] .module-icon,
    :root[data-visual-theme] .quick-search-result-icon,
    :root[data-visual-theme] .you-tag,
    :root[data-visual-theme] .role-pill.admin,
    :root[data-visual-theme] .release-version,
    :root[data-visual-theme] .current-session-badge,
    :root[data-visual-theme] .user-theme-current{
      background:var(--accent-soft) !important;
      color:var(--accent-ink) !important;
      border-color:var(--accent-border) !important;
    }

    :root[data-visual-theme] .role-pill.user,
    :root[data-visual-theme] .session-count,
    :root[data-visual-theme] .audit-entity-pill,
    :root[data-visual-theme] .suggestion-module{
      background:var(--surface-soft) !important;
      color:var(--ink) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .users-table,
    :root[data-visual-theme] .users-table-wrap{
      background:var(--card) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .users-table th{
      background:var(--surface-soft) !important;
      color:var(--ink) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .users-table td{
      color:var(--ink) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .users-table tbody tr:hover,
    :root[data-visual-theme] .quick-search-result:hover,
    :root[data-visual-theme] .quick-search-result.active,
    :root[data-visual-theme] .vehicle-search-suggestion:hover,
    :root[data-visual-theme] .vehicle-search-suggestion.active,
    :root[data-visual-theme] .audit-autocomplete-option:hover,
    :root[data-visual-theme] .audit-autocomplete-option:focus{
      background:var(--surface-hover) !important;
    }

    :root[data-visual-theme] .preference-choice.active,
    :root[data-visual-theme] .theme-setting-option.active,
    :root[data-visual-theme] .account-visual-theme-option:has(input:checked),
    :root[data-visual-theme] .user-visual-theme-option:has(input:checked),
    :root[data-visual-theme] .user-form .create-access-option:has(input:checked),
    :root[data-visual-theme] .changelog-tab.active{
      background:var(--accent-soft) !important;
      color:var(--accent-ink) !important;
      border-color:var(--orange) !important;
    }

    :root[data-visual-theme] .account-notice.success,
    :root[data-visual-theme] .users-notice.success,
    :root[data-visual-theme] .suggestions-notice.success,
    :root[data-visual-theme] .success-note,
    :root[data-visual-theme] .status-pill.active,
    :root[data-visual-theme] .password-status.ready,
    :root[data-visual-theme] .suggestion-status.implemented{
      background:var(--ok-bg) !important;
      color:var(--ok) !important;
      border-color:color-mix(in srgb,var(--ok) 34%,var(--ok-bg)) !important;
    }

    :root[data-visual-theme] .account-notice.error,
    :root[data-visual-theme] .users-notice.error,
    :root[data-visual-theme] .suggestions-notice.error,
    :root[data-visual-theme] .badge.danger,
    :root[data-visual-theme] .status-pill.inactive,
    :root[data-visual-theme] .suggestion-status.discarded,
    :root[data-visual-theme] .delete-warning{
      background:var(--danger-bg) !important;
      color:var(--danger) !important;
      border-color:color-mix(in srgb,var(--danger) 34%,var(--danger-bg)) !important;
    }

    :root[data-visual-theme] .password-status.pending,
    :root[data-visual-theme] .suggestion-status.pending,
    :root[data-visual-theme] .suggestion-status.review{
      background:var(--warn-bg) !important;
      color:var(--warn) !important;
      border-color:color-mix(in srgb,var(--warn) 34%,var(--warn-bg)) !important;
    }

    :root[data-visual-theme] .suggestion-status.considered{
      background:var(--accent-soft) !important;
      color:var(--accent-ink) !important;
      border-color:var(--accent-border) !important;
    }

    :root[data-visual-theme] .suggestion-response,
    :root[data-visual-theme] .self-edit-note,
    :root[data-visual-theme] .invitation-account,
    :root[data-visual-theme] .changelog-section-head{
      background:var(--surface-soft) !important;
      color:var(--ink) !important;
      border-color:var(--line) !important;
    }

    :root[data-visual-theme] .quick-search-launcher:hover,
    :root[data-visual-theme] .changelog-access:hover,
    :root[data-visual-theme] .users-history-access:hover,
    :root[data-visual-theme] .module-card.active:hover{
      background:var(--surface-hover) !important;
      border-color:var(--orange) !important;
      box-shadow:0 12px 28px color-mix(in srgb,var(--orange) 16%,transparent) !important;
    }

    /* Diferencias de composición además del color. */
    :root[data-visual-theme="cobre"] .panel,
    :root[data-visual-theme="cobre"] .module-card.active{
      border-left:4px solid var(--orange) !important;
    }

    :root[data-visual-theme="acero"] .panel,
    :root[data-visual-theme="acero"] .module-card,
    :root[data-visual-theme="acero"] .hero{
      border-radius:5px !important;
    }

    :root[data-visual-theme="halloween"] .panel,
    :root[data-visual-theme="halloween"] .module-card{
      border-color:color-mix(in srgb,var(--theme-secondary) 40%,var(--line)) !important;
    }

    :root[data-visual-theme="halloween"] .eyebrow,
    :root[data-visual-theme="halloween"] .module-kicker{
      color:var(--theme-secondary) !important;
    }

    :root[data-visual-theme="rubi"] .hero{
      border-bottom-width:7px !important;
    }

    :root[data-visual-theme="rubi"] .module-card.active{
      border-bottom:3px solid var(--orange) !important;
    }

    :root[data-visual-theme="solar"] .panel,
    :root[data-visual-theme="solar"] .module-card{
      box-shadow:
        0 10px 24px color-mix(in srgb,var(--orange) 12%,transparent),
        inset 0 0 0 1px color-mix(in srgb,var(--theme-secondary) 14%,transparent) !important;
    }


    /* ==================================================
       NOTIFICACIONES SERVER FLASH · v2.15.2
       ================================================== */

    .dgim-flash{
      position:fixed;
      top:94px;
      right:20px;
      z-index:520;
      width:min(360px,calc(100vw - 28px));
      display:grid;
      grid-template-columns:38px minmax(0,1fr) 30px;
      align-items:start;
      gap:12px;
      padding:14px 14px 14px 14px;
      border-radius:16px;
      border:1px solid color-mix(in srgb,var(--theme-secondary) 40%, rgba(255,255,255,.18));
      background:
        linear-gradient(135deg,
          color-mix(in srgb,var(--hero-start) 76%, var(--orange) 24%),
          color-mix(in srgb,var(--hero-end) 82%, var(--theme-secondary) 18%)
        );
      color:#fff;
      box-shadow:
        0 20px 44px rgba(0,0,0,.22),
        0 0 0 1px rgba(255,255,255,.04) inset;
      pointer-events:auto;
      opacity:1;
      transform:translate3d(0,0,0) scale(1);
      animation:dgim-flash-in .22s ease;
      overflow:hidden;
      isolation:isolate;
    }

    .dgim-flash::after{
      content:"";
      position:absolute;
      left:0;
      right:0;
      bottom:0;
      height:3px;
      background:rgba(255,255,255,.84);
      transform-origin:left center;
      animation:dgim-flash-progress 5s linear forwards;
      z-index:-1;
    }

    .dgim-flash.closing{
      opacity:0;
      transform:translate3d(18px,0,0) scale(.985);
      transition:opacity .22s ease, transform .22s ease;
    }

    .dgim-flash-success{
      border-color:color-mix(in srgb,var(--ok) 42%, rgba(255,255,255,.18));
    }

    .dgim-flash-error{
      border-color:color-mix(in srgb,var(--danger) 46%, rgba(255,255,255,.18));
      background:linear-gradient(135deg, color-mix(in srgb,var(--danger) 24%, var(--hero-start)), color-mix(in srgb,var(--danger) 14%, var(--hero-end)));
    }

    .dgim-flash-warning{
      border-color:color-mix(in srgb,var(--warn) 46%, rgba(255,255,255,.18));
      background:linear-gradient(135deg, color-mix(in srgb,var(--warn) 26%, var(--hero-start)), color-mix(in srgb,var(--warn) 14%, var(--hero-end)));
      color:#fff6df;
    }

    .dgim-flash-info{
      border-color:color-mix(in srgb,var(--theme-secondary) 42%, rgba(255,255,255,.18));
    }

    .dgim-flash-icon{
      width:38px;
      height:38px;
      display:grid;
      place-items:center;
      border-radius:12px;
      background:rgba(255,255,255,.12);
      border:1px solid rgba(255,255,255,.14);
      color:#fff;
      font-size:18px;
      font-weight:900;
      line-height:1;
      box-shadow:0 4px 14px rgba(0,0,0,.12);
    }

    .dgim-flash-copy{
      min-width:0;
      display:grid;
      gap:4px;
      padding-top:1px;
    }

    .dgim-flash-copy strong{
      color:#fff;
      font-size:13px;
      line-height:1.2;
      letter-spacing:.01em;
    }

    .dgim-flash-copy span{
      color:rgba(255,255,255,.86);
      font-size:12px;
      line-height:1.45;
      overflow-wrap:anywhere;
    }

    .dgim-flash-close{
      appearance:none;
      width:30px;
      height:30px;
      display:grid;
      place-items:center;
      padding:0;
      border:0;
      border-radius:10px;
      background:rgba(255,255,255,.08);
      color:rgba(255,255,255,.86);
      font-size:18px;
      line-height:1;
      cursor:pointer;
      transition:background .16s ease, color .16s ease, transform .16s ease;
    }

    .dgim-flash-close:hover{
      background:rgba(255,255,255,.16);
      color:#fff;
      transform:translateY(-1px);
    }

    @keyframes dgim-flash-in{
      from{opacity:0; transform:translate3d(16px,-4px,0) scale(.985)}
      to{opacity:1; transform:translate3d(0,0,0) scale(1)}
    }

    @keyframes dgim-flash-progress{
      from{transform:scaleX(1)}
      to{transform:scaleX(0)}
    }

    :root[data-motion="reduced"] .dgim-flash,
    :root[data-motion="reduced"] .dgim-flash.closing{
      animation:none;
      transition:none;
    }

    :root[data-motion="reduced"] .dgim-flash::after{
      animation:none;
      opacity:.55;
    }

    @media (max-width:700px){
      .dgim-flash{
        top:76px;
        left:10px;
        right:10px;
        width:auto;
        grid-template-columns:36px minmax(0,1fr) 28px;
        gap:10px;
        padding:13px 12px;
        border-radius:14px;
      }

      .dgim-flash-icon{
        width:36px;
        height:36px;
      }
    }

    /* ==================================================
       NOTIFICACIONES TOAST · v2.15
       ================================================== */

    .account-notice,
    .suggestions-notice,
    .users-notice{
      display:none !important;
    }

    /* ==================================================
       AVISOS · v17.12 (Claude Design)
       Tarjeta con franja de color por tipo, ícono dibujado, entrada con rebote,
       barra de tiempo (se pausa con el mouse encima) y salida que cierra el hueco.
       ================================================== */
    .dgim-toast-stack{
      position:fixed;
      top:calc(84px + env(safe-area-inset-top,0px));
      right:20px;
      z-index:99998;
      width:min(380px,calc(100vw - 28px));
      display:grid;
      gap:10px;
      pointer-events:none;
    }
    .dgim-toast{
      --toast-accent:var(--orange);
      --toast-soft:color-mix(in srgb,var(--toast-accent) 14%,var(--card));
      --salida:120%;
      position:relative;
      min-width:0;
      display:grid;
      grid-template-columns:38px minmax(0,1fr) 28px;
      align-items:center;
      gap:12px;
      overflow:hidden;
      padding:13px 10px 15px 16px;
      border:1px solid color-mix(in srgb,var(--toast-accent) 22%,var(--line));
      border-radius:16px;
      background:var(--card);
      color:var(--ink);
      box-shadow:0 18px 40px rgba(0,0,0,.16),0 3px 10px rgba(0,0,0,.08);
      pointer-events:auto;
      touch-action:pan-y;
      transform-origin:right center;
      animation:dgim-toast-in .55s cubic-bezier(.65,0,.35,1) both;
      transition:height .3s ease,margin .3s ease,padding .3s ease,border-width .3s ease,transform .18s ease,opacity .18s ease;
    }
    .dgim-toast::before{
      content:"";
      position:absolute;
      left:0;top:0;bottom:0;
      width:5px;
      background:var(--toast-accent);
    }
    .dgim-toast-success{--toast-accent:var(--ok)}
    .dgim-toast-error{--toast-accent:var(--danger)}
    .dgim-toast-warning{--toast-accent:var(--warn)}
    .dgim-toast-info{--toast-accent:var(--orange)}
    .dgim-toast-icon{
      width:38px;height:38px;
      display:grid;place-items:center;
      border-radius:12px;
      background:var(--toast-soft);
      color:var(--toast-accent);
      animation:dgim-toast-pop .5s cubic-bezier(.2,.9,.3,1.4) .12s both;
    }
    .dgim-toast-icon svg{width:21px;height:21px}
    .dgim-toast-check{stroke-dasharray:24;stroke-dashoffset:24;animation:dgim-toast-draw .42s ease .3s forwards}
    .dgim-toast-copy{min-width:0;display:grid;gap:2px}
    .dgim-toast-copy strong{color:var(--ink);font-size:13.5px;font-weight:800;line-height:1.25}
    .dgim-toast-copy span{color:var(--muted);font-size:12.5px;line-height:1.45;overflow-wrap:anywhere}
    .dgim-toast-close{
      appearance:none;
      align-self:start;
      width:28px;height:28px;
      display:grid;place-items:center;
      padding:0;border:0;border-radius:8px;
      background:transparent;color:var(--muted);
      cursor:pointer;
      opacity:.65;
      transition:opacity .15s ease,background .15s ease,color .15s ease;
    }
    .dgim-toast-close svg{width:16px;height:16px}
    .dgim-toast:hover .dgim-toast-close{opacity:1}
    .dgim-toast-close:hover{background:var(--surface-hover,var(--surface-soft));color:var(--ink)}
    .dgim-toast-progress{
      position:absolute;
      left:0;bottom:0;
      width:100%;height:3px;
      background:var(--toast-accent);
      opacity:.55;
      transform-origin:left center;
      animation:dgim-toast-progress linear forwards;
    }
    .dgim-toast:hover .dgim-toast-progress,.dgim-toast.is-dragging .dgim-toast-progress{animation-play-state:paused}
    .dgim-toast.is-dragging{transition:none;cursor:grabbing}
    .dgim-toast.is-leaving{animation:dgim-toast-out .32s cubic-bezier(.65,0,.35,1) forwards}
    .dgim-toast.is-collapsing{margin-top:-10px;padding-top:0;padding-bottom:0;border-width:0}
    /* PC (v17.12, opción G «Barrido»): se dibuja de izquierda a derecha y se borra hacia el otro lado. */
    @keyframes dgim-toast-in{
      0%{clip-path:inset(0 100% 0 0);-webkit-clip-path:inset(0 100% 0 0)}
      100%{clip-path:inset(0 0 0 0);-webkit-clip-path:inset(0 0 0 0)}
    }
    @keyframes dgim-toast-out{
      0%{clip-path:inset(0 0 0 0);-webkit-clip-path:inset(0 0 0 0)}
      100%{clip-path:inset(0 0 0 100%);-webkit-clip-path:inset(0 0 0 100%)}
    }
    @keyframes dgim-toast-pop{
      0%{transform:scale(.4) rotate(-12deg);opacity:0}
      70%{transform:scale(1.12) rotate(3deg);opacity:1}
      100%{transform:none;opacity:1}
    }
    @keyframes dgim-toast-draw{to{stroke-dashoffset:0}}
    @keyframes dgim-toast-progress{from{transform:scaleX(1)}to{transform:scaleX(0)}}
    @media (max-width:700px){
      .dgim-toast-stack{top:calc(70px + env(safe-area-inset-top,0px));left:10px;right:10px;width:auto}
      /* Celular (v17.12, opción H «Zoom con brillo»): crece con un resorte y lo cruza un destello. */
      .dgim-toast{grid-template-columns:36px minmax(0,1fr) 32px;padding:12px 8px 14px 14px;border-radius:14px;transform-origin:center top;animation:dgim-toast-in-movil .5s cubic-bezier(.34,1.6,.5,1) both}
      .dgim-toast::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);transform:translateX(-120%);animation:dgim-toast-brillo .9s ease .25s both}
      .dgim-toast.is-leaving{animation:dgim-toast-out-movil .26s ease forwards}
      .dgim-toast-icon{width:36px;height:36px}
      .dgim-toast-close{width:32px;height:32px;opacity:1}
    }
    @keyframes dgim-toast-in-movil{
      0%{opacity:0;transform:scale(.5)}
      70%{opacity:1;transform:scale(1.04)}
      100%{opacity:1;transform:none}
    }
    @keyframes dgim-toast-out-movil{
      to{opacity:0;transform:scale(.85)}
    }
    @keyframes dgim-toast-brillo{
      0%{transform:translateX(-120%)}
      100%{transform:translateX(120%)}
    }
    @media (prefers-reduced-motion:reduce){
      .dgim-toast,.dgim-toast-icon{animation-name:dgim-toast-fade;animation-duration:.2s}
      .dgim-toast.is-leaving{animation-name:dgim-toast-fade-out;animation-duration:.2s}
      .dgim-toast-check{animation:none;stroke-dashoffset:0}
      .dgim-toast::after{display:none}
    }
    :root[data-motion="reduced"] .dgim-toast,
    :root[data-motion="reduced"] .dgim-toast-icon{animation-name:dgim-toast-fade;animation-duration:.2s}
    :root[data-motion="reduced"] .dgim-toast.is-leaving{animation-name:dgim-toast-fade-out;animation-duration:.2s}
    :root[data-motion="reduced"] .dgim-toast-check{animation:none;stroke-dashoffset:0}
    :root[data-motion="reduced"] .dgim-toast::after{display:none}
    @keyframes dgim-toast-fade{from{opacity:0}to{opacity:1}}
    @keyframes dgim-toast-fade-out{from{opacity:1}to{opacity:0}}

    /* ==================================================
       ESTADOS DE CARGA · v2.16
       ================================================== */

    .dgim-is-loading{
      display:inline-flex !important;
      align-items:center !important;
      justify-content:center !important;
      gap:8px !important;
      cursor:wait !important;
      opacity:.88;
    }

    .dgim-is-loading:disabled{
      opacity:.88 !important;
      cursor:wait !important;
    }

    .dgim-loading-spinner{
      width:14px;
      height:14px;
      flex:0 0 14px;
      border-radius:50%;
      border:2px solid currentColor;
      border-right-color:transparent;
      animation:dgim-loading-spin .68s linear infinite;
      opacity:.86;
    }

    .dgim-loading-label{
      min-width:0;
      white-space:nowrap;
    }

    @keyframes dgim-loading-spin{
      to{transform:rotate(360deg)}
    }

    :root[data-motion="reduced"] .dgim-loading-spinner{
      animation:none;
      border-right-color:currentColor;
      opacity:.55;
    }



    /* ==================================================
       RENDIMIENTO AL DESLIZAR · v17.12.1
       En pantallas grandes del PC el Panel se sentía a tirones: el fondo del tema era «fixed»
       (repinta toda la pantalla en cada paso del scroll) y la barra superior desenfocaba lo de
       atrás (backdrop-filter) en cada cuadro. Ahora el fondo va en una capa fija propia (se pinta
       una vez) y la barra es opaca sin desenfoque: se ve igual y desliza fluido.
       ================================================== */
    :root:root:root,
    :root:root:root body{
      background-attachment:scroll !important;
    }
    :root:root:root body::before{
      content:"" !important;
      display:block !important;
      position:fixed !important;
      inset:0 !important;
      z-index:-1 !important;
      pointer-events:none !important;
      background:inherit !important;
      background-attachment:scroll !important;
      transform:translateZ(0);
    }
    :root:root .topbar{
      -webkit-backdrop-filter:none !important;
      backdrop-filter:none !important;
    }
    .pp-me,.pp-btn,.pp-search,.pp-task,.pp-feature-head,.pp-sub,.pp-amod,.pp-foot-link{
      transition-property:color,background-color,border-color,box-shadow,transform,opacity !important;
    }

    /* ---------- BUSCADORES CON LUPA · v17.17.1 ----------
       El foco de los temas (:root[data-visual-theme] input:focus, con !important) pintaba el borde
       solo en la casilla de texto, sin cubrir la lupa. La casilla queda sin borde y el foco se marca
       en la caja completa. */
    :root:root .cmh-search input,:root:root .cmh-search input:focus,:root:root .cmh-search input:focus-visible,
    :root:root .cgh-search input,:root:root .cgh-search input:focus,:root:root .cgh-search input:focus-visible,
    :root:root .hib-buscar .audit-autocomplete input,:root:root .hib-buscar .audit-autocomplete input:focus,:root:root .hib-buscar .audit-autocomplete input:focus-visible{
      border:0 !important;box-shadow:none !important;outline:none !important;background:transparent !important;border-radius:0 !important;
    }
    :root .cmh-search,:root .cgh-search,:root .hib-buscar .audit-autocomplete{
      transition:border-color .16s ease,box-shadow .16s ease !important;
    }
    /* v17.17.2: anillo más visible y redondeado alrededor de toda la caja mientras se escribe. */
    :root .cmh-search:focus-within,:root .cgh-search:focus-within,:root .hib-buscar .audit-autocomplete:focus-within{
      border-color:var(--orange) !important;
      box-shadow:0 0 0 4px rgba(var(--accent-rgb),.28),0 0 0 1px var(--orange) inset !important;
    }

    /* ---------- CIFRAS DE LA FRANJA OSCURA · v17.21 ----------
       Las cifras de la cabecera (Usuarios, Historial, Órdenes de Compra, Inventario, Activos, Maestro…)
       van en cajitas para que no queden «flotando». */
    :root .cmh-hl,:root .hib-stats{gap:10px !important}
    :root .cmh-hl > span,:root .hib-stats > span{min-width:118px;padding:10px 14px;border:1px solid rgba(255,255,255,.16);border-radius:var(--theme-radius-control,10px);background:rgba(255,255,255,.06)}
    :root .cmh-hl b,:root .hib-stats b{margin-top:2px}
    @media (max-width:700px){:root .cmh-hl > span,:root .hib-stats > span{min-width:0}}
    /* ==================================================
       CONFIRMACIONES INTELIGENTES · v2.17
       ================================================== */

    .smart-confirm-note{
      margin:12px 0 2px;
      padding:10px 12px;
      border:1px solid var(--line);
      border-radius:10px;
      background:var(--surface-soft);
      color:var(--muted);
      font-size:10.5px;
      line-height:1.5;
    }

    :root[data-theme="dark"] .smart-confirm-note{
      background:var(--surface-muted);
    }


    /* ==================================================
       MEJORAS DE TABLAS · v2.19
       ================================================== */

    .dgim-data-table-wrap{
      position:relative;
      max-height:min(68vh,720px);
      overflow:auto;
      overscroll-behavior:contain;
      scrollbar-gutter:stable;
      background:var(--card);
    }

    .dgim-data-table{
      border-collapse:separate;
      border-spacing:0;
    }

    .dgim-data-table thead th{
      position:sticky;
      top:0;
      z-index:4;
      background:var(--surface-soft);
      box-shadow:0 1px 0 var(--line);
    }

    .dgim-data-table tbody td{
      background:var(--card);
      transition:
        background .14s ease,
        box-shadow .14s ease;
    }

    .dgim-data-table tbody tr:nth-child(even) td{
      background:color-mix(in srgb,var(--surface-soft) 46%,var(--card) 54%);
    }

    .dgim-data-table tbody tr:hover td{
      background:var(--accent-hover);
    }

    .dgim-data-table tbody tr.row-selected td{
      background:color-mix(in srgb,var(--accent-soft) 76%,var(--card) 24%);
    }

    .dgim-data-table tbody tr.row-selected:hover td{
      background:color-mix(in srgb,var(--accent-soft) 88%,var(--card) 12%);
    }

    /* Vehículos: mantener selector visible al desplazarse horizontalmente */
    .vehicle-data-table .check-col{
      position:sticky;
      left:0;
      z-index:3;
      background:var(--card);
      box-shadow:1px 0 0 var(--line);
    }

    .vehicle-data-table thead .check-col{
      z-index:6;
      background:var(--surface-soft);
    }

    .vehicle-data-table tbody tr:nth-child(even) .check-col{
      background:color-mix(in srgb,var(--surface-soft) 46%,var(--card) 54%);
    }

    .vehicle-data-table tbody tr:hover .check-col{
      background:var(--accent-hover);
    }

    .vehicle-data-table tbody tr.row-selected .check-col{
      background:color-mix(in srgb,var(--accent-soft) 76%,var(--card) 24%);
    }

    /* Usuarios: mantener identidad visible al desplazarse horizontalmente */
    .users-table th:first-child,
    .users-table td:first-child{
      position:sticky;
      left:0;
      z-index:3;
      min-width:255px;
      box-shadow:1px 0 0 var(--line);
    }

    .users-table th:first-child{
      z-index:6;
      background:var(--surface-soft);
    }

    .users-table td:first-child{
      background:var(--card);
    }

    .users-table tbody tr:nth-child(even) td:first-child{
      background:color-mix(in srgb,var(--surface-soft) 46%,var(--card) 54%);
    }

    .users-table tbody tr:hover td:first-child{
      background:var(--accent-hover);
    }

    .dgim-data-table td{
      line-height:1.38;
    }

    .dgim-data-table th{
      line-height:1.2;
    }

    .dgim-data-table-wrap:focus-within{
      outline:2px solid color-mix(in srgb,var(--orange) 28%,transparent);
      outline-offset:-2px;
    }


    .pagination{
      position:relative;
      background:var(--card);
      border-top:1px solid var(--line);
    }

    #pageLabel{
      min-width:210px;
      text-align:center;
      color:var(--muted);
      font-variant-numeric:tabular-nums;
    }

    @media (max-width:780px){
      .dgim-data-table-wrap{
        max-height:62vh;
      }

      .pagination{
        gap:8px;
        padding:12px 10px;
        flex-wrap:wrap;
      }

      #pageLabel{
        order:-1;
        width:100%;
        min-width:0;
        margin-bottom:2px;
        font-size:11px;
      }

      .pagination .btn{
        flex:1 1 140px;
      }
    }

    :root[data-motion="reduced"] .dgim-data-table tbody td{
      transition:none;
    }


    /* ==================================================
       ESTADOS VACÍOS · v2.20
       ================================================== */

    .dgim-empty-state{
      width:100%;
      min-height:190px;
      display:flex;
      flex-direction:column;
      align-items:center;
      justify-content:center;
      gap:7px;
      padding:34px 24px;
      text-align:center;
      border:1px dashed var(--line);
      border-radius:16px;
      background:color-mix(in srgb,var(--surface-soft) 72%,var(--card) 28%);
      color:var(--muted);
    }

    .dgim-empty-state strong{
      margin-top:2px;
      color:var(--ink);
      font-size:14px;
      line-height:1.25;
    }

    .dgim-empty-state > span:not(.dgim-empty-icon){
      max-width:470px;
      font-size:11px;
      line-height:1.5;
    }

    .dgim-empty-icon{
      width:40px;
      height:40px;
      display:inline-flex;
      align-items:center;
      justify-content:center;
      margin-bottom:3px;
      border:1px solid var(--accent-border);
      border-radius:13px;
      background:var(--accent-soft);
      color:var(--accent-ink);
      font-size:20px;
      font-weight:800;
      line-height:1;
      box-shadow:0 6px 18px rgba(var(--accent-rgb),.08);
    }

    .dgim-empty-action{
      margin-top:8px;
      min-width:124px;
    }

    .dgim-empty-table-row:hover td{
      background:var(--card) !important;
    }

    .dgim-empty-table-cell{
      padding:16px !important;
      background:var(--card) !important;
    }

    .dgim-empty-state-table{
      min-height:220px;
      border-style:dashed;
      border-radius:14px;
    }

    .dgim-empty-state-error .dgim-empty-icon{
      border-color:color-mix(in srgb,var(--danger) 30%,var(--line));
      background:var(--danger-bg);
      color:var(--danger);
    }

    .suggestions-empty.dgim-empty-state,
    .audit-empty.dgim-empty-state{
      padding:38px 24px;
      border-color:var(--line);
      background:color-mix(in srgb,var(--surface-soft) 72%,var(--card) 28%);
    }

    #vehiclePagination[hidden]{
      display:none !important;
    }

    @media (max-width:700px){
      .dgim-empty-state{
        min-height:170px;
        padding:28px 18px;
        border-radius:14px;
      }

      .dgim-empty-state-table{
        min-height:190px;
      }

      .dgim-empty-icon{
        width:38px;
        height:38px;
        border-radius:12px;
      }

      .dgim-empty-action{
        width:100%;
        max-width:220px;
      }
    }

    /* Alias del Panel: salen de las variables del sistema (claro / oscuro). */
    :root{--pp-ico-bg:var(--accent-soft);--pp-ico-ink:var(--accent-ink);--pp-acc-line:var(--accent-border)}
    :root[data-theme="dark"]{--pp-ico-bg:var(--accent-dark-soft);--pp-ico-ink:var(--accent-dark-ink);--pp-acc-line:var(--accent-dark-border)}

    /* Íconos SVG (ui/iconos.js): trazo con currentColor. */
    .pp-i{width:22px;height:22px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
    .pp-tile{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:var(--theme-radius-control,10px);background:var(--pp-ico-bg);color:var(--pp-ico-ink)}
    .pp-tile--lg{width:56px;height:56px;flex-basis:56px;border-radius:calc(var(--theme-radius-control,10px) + 4px)}
    .pp-tile--lg .pp-i{width:28px;height:28px}
    .pp-tile--sm{width:36px;height:36px;flex-basis:36px}
    .pp-tile--sm .pp-i{width:20px;height:20px}
    .pp-tile--xs{width:26px;height:26px;flex-basis:26px;border-radius:999px}
    .pp-tile--xs .pp-i{width:15px;height:15px}
    .pp-tile--off{background:var(--surface-soft);color:var(--muted)}
    .pp-tile--danger{background:var(--danger-bg);color:var(--danger)}
    /* Íconos de módulo: placa naranja con línea blanca (como la marca DGIM). */
    .pp-feature-head .pp-tile,.pp-sub .pp-tile{background:var(--orange);color:var(--on-primary,#fff);box-shadow:0 4px 12px rgba(var(--accent-rgb),.22)}

    /* Barra superior: acceso a Mi cuenta */
    .pp-me{display:flex;align-items:center;gap:10px;min-height:44px;padding:3px 14px 3px 3px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);text-decoration:none;transition:.16s ease}
    .pp-me:hover{border-color:var(--pp-acc-line)}
    .pp-avatar{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:999px;background:var(--pp-ico-bg);color:var(--pp-ico-ink);font-size:13px;font-weight:900;letter-spacing:.02em}
    .pp-me-copy strong{display:block;font-size:13px;line-height:1.2}
    .pp-me-copy small{display:block;font-size:11px;color:var(--muted)}

    /* Botones del Panel */
    .pp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 15px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--card);color:var(--ink);font-size:13px;font-weight:800;white-space:nowrap;text-decoration:none;transition:.16s ease}
    .pp-btn:hover{border-color:var(--pp-acc-line);background:var(--surface-hover)}
    .pp-btn .pp-i{width:18px;height:18px}
    .pp-btn--primary{background:var(--orange-dark);border-color:var(--orange-dark);color:#fff}
    .pp-btn--primary:hover{background:var(--orange);border-color:var(--orange)}

    /* Página */
    .container.pp-main{display:grid;gap:22px;padding-top:28px;padding-bottom:48px}
    .pp-main a{text-decoration:none}
    .pp-card{background:var(--card);border:var(--theme-card-border,1px solid var(--line));border-radius:var(--theme-radius-card,14px);box-shadow:var(--theme-card-shadow,0 8px 22px rgba(32,35,38,.055));color:var(--ink)}
    .pp-only-m{display:none !important}

    /* Cabecera: saludo, estado del día y buscador */
    .hero.pp-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,460px);align-items:center;gap:32px;margin:0;padding:26px 30px;border-bottom-width:4px}
    .pp-eyebrow{display:block;font-size:12px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--orange)}
    .hero.pp-hero h1{margin:7px 0 10px;font-size:34px;line-height:1.1;letter-spacing:-.01em}
    .hero.pp-hero .pp-hero-status{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;max-width:none;font-size:14px;color:#dfe3e5}
    .pp-pill{display:inline-flex;align-items:center;gap:6px;min-height:26px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}
    .pp-pill .pp-i{width:15px;height:15px;stroke-width:2.4}
    .pp-pill--danger{background:var(--danger-bg);color:var(--danger)}
    .pp-pill--warn{background:var(--warn-bg);color:var(--warn)}
    .pp-pill--ok{background:var(--ok-bg);color:var(--ok)}
    .pp-dot{width:8px;height:8px;flex:0 0 8px;border-radius:999px;background:currentColor}
    .pp-search{appearance:none;width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:60px;padding:10px 12px;border:1px solid var(--line);border-radius:calc(var(--theme-radius-control,10px) + 4px);background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.18);transition:.16s ease}
    .pp-search:hover{border-color:var(--pp-acc-line);transform:translateY(-1px)}
    .pp-search-copy{min-width:0}
    .pp-search-copy strong{display:block;font-size:14px}
    .pp-search-copy small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
    .pp-kbd{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);color:var(--muted);font-size:11px;font-weight:800;white-space:nowrap}

    /* Fila principal: Pendientes + Mantenciones */
    .pp-row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:20px;align-items:start}
    .pp-row--sola{grid-template-columns:minmax(0,1fr)}
    .pp-sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:14px}
    .pp-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--pp-ico-ink)}
    .pp-sec-head h2{margin:3px 0 0;font-size:21px;line-height:1.2}
    .pp-sec-head .pp-h2-sm{font-size:18px}
    .pp-sec-note{font-size:12px;color:var(--muted)}
    .pp-mini-label{display:block;margin-bottom:8px;font-size:10.5px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}

    /* Pendientes */
    .pp-pend{padding:22px}
    .pp-group{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 8px;padding:9px 12px;border-radius:var(--theme-radius-control,10px);background:var(--surface-soft)}
    .pp-sec-head + .pp-group{margin-top:0}
    .pp-group-name{display:flex;align-items:center;gap:10px;min-width:0}
    .pp-group-name small{font-size:12px;color:var(--muted)}
    .pp-tag{display:inline-flex;align-items:center;min-height:24px;padding:2px 10px;border:1px solid var(--pp-acc-line);border-radius:999px;background:var(--pp-ico-bg);color:var(--pp-ico-ink);font-size:12px;font-weight:900;white-space:nowrap}
    .pp-link{display:inline-flex;align-items:center;gap:4px;min-height:32px;font-size:12px;font-weight:800;color:var(--pp-ico-ink);white-space:nowrap}
    .pp-link .pp-i{width:16px;height:16px}
    .pp-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}
    .pp-task{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--card);color:var(--ink);transition:.16s ease}
    .pp-task:hover{border-color:var(--pp-acc-line);background:var(--surface-hover)}
    .pp-num{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;font-size:12px;font-weight:900}
    .pp-num--danger{background:var(--danger-bg);color:var(--danger)}
    .pp-num--warn{background:var(--warn-bg);color:var(--warn)}
    .pp-task-copy{min-width:0}
    .pp-task-copy strong{display:block;font-size:14px;line-height:1.3}
    .pp-task-copy small{display:block;margin-top:3px;font-size:12px;line-height:1.4;color:var(--muted)}
    .pp-req{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--danger-bg);color:var(--danger);font-size:10px;font-style:normal;font-weight:900;letter-spacing:.05em;text-transform:uppercase;vertical-align:2px}
    .pp-task-cta{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 12px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--surface-soft);font-size:12px;font-weight:800;white-space:nowrap}
    .pp-task-cta .pp-i{width:15px;height:15px;color:var(--orange)}
    .pp-task-chev{display:none;color:var(--orange)}
    .pp-pend-resto{margin:10px 0 0}

    /* Mantenciones (la de uso diario) */
    .pp-feature{display:grid;gap:16px;padding:22px;border-top:4px solid var(--orange)}
    .pp-feature-head{display:flex;align-items:flex-start;gap:14px;margin:-8px;padding:8px;border-radius:var(--theme-radius-control,10px);color:var(--ink);transition:.16s ease}
    .pp-feature-head > div{flex:1 1 auto;min-width:0}
    .pp-feature-head:hover{background:var(--surface-hover)}
    .pp-feature-head .pp-mod-arrow{align-self:flex-start;margin-top:4px;color:var(--orange)}
    .pp-feature-head h2{margin:3px 0 4px;font-size:22px;line-height:1.2}
    .pp-feature-head p{margin:0;font-size:13px;line-height:1.45;color:var(--muted)}
    .pp-state{display:block;font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--pp-ico-ink)}
    .pp-actions{display:flex;flex-wrap:wrap;gap:8px}
    .pp-subs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
    .pp-subs--1{grid-template-columns:minmax(0,1fr)}
    .pp-subs--2{grid-template-columns:repeat(2,minmax(0,1fr))}
    .pp-subs--3{grid-template-columns:repeat(3,minmax(0,1fr))}
    .pp-sub{display:grid;justify-items:center;align-content:center;gap:7px;min-height:78px;padding:10px 4px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--card);color:var(--ink);font-size:11.5px;font-weight:700;line-height:1.2;text-align:center;transition:.16s ease}
    .pp-sub:hover{border-color:var(--pp-acc-line);background:var(--surface-hover)}
    /* v29.3: atajos de Mantenciones en el color de su módulo en la mantención en curso. */
    .pp-sub{position:relative}
    .pp-sub-marca{position:absolute;top:9px;right:9px;width:10px;height:10px;border-radius:999px}
    .pp-sub.is-ok{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));background:var(--ok-bg)}
    .pp-sub.is-ok:hover{border-color:var(--ok);background:var(--ok-bg)}
    .pp-sub.is-ok .pp-tile{background:#1f883d;box-shadow:0 4px 12px rgba(31,136,61,.25)}
    .pp-sub.is-bad{border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}
    .pp-sub.is-bad .pp-sub-marca{background:var(--danger)}

    /* v35.5 (opción C): cuenta regresiva en el saludo y Mantenciones como barra delgada con atajos parejos */
    /* v35.6 (opción A): saludo, boleto de la mantención y buscador chico en una sola fila más baja */
    .hero.pp-hero.pp-hero--fila{grid-template-columns:minmax(0,1fr) auto;gap:22px;padding:18px 24px}
    .hero.pp-hero.pp-hero--fila.pp-hero--ticket{grid-template-columns:minmax(0,1fr) auto auto}
    .hero.pp-hero--fila h1{margin:3px 0 7px;font-size:26px}
    .pp-ticket{display:flex;align-items:stretch;max-width:440px;border:1px solid rgba(255,255,255,.2);border-radius:calc(var(--theme-radius-control,10px) + 2px);overflow:hidden;background:rgba(255,255,255,.08);color:#fff;transition:transform .16s ease}
    .pp-ticket:hover{transform:translateY(-1px)}
    .pp-ticket-num{display:grid;place-items:center;min-width:58px;padding:0 14px;background:var(--orange);color:var(--on-primary,#fff);font-size:26px;font-weight:900;line-height:1;white-space:nowrap}
    .pp-ticket-copy{display:grid;align-content:center;gap:2px;min-width:0;padding:8px 14px}
    .pp-ticket-copy small{font-size:11.5px;font-weight:700;color:#dfe3e5}
    .pp-ticket-copy strong{font-size:14px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    /* Buscador chico (pastilla) que al apretarlo crece un poco hacia la izquierda, encima del boleto. */
    .pp-hero--fila .qs-inline{width:280px}
    .pp-hero--fila .pp-search{grid-template-columns:auto minmax(0,1fr) auto;gap:9px;min-height:44px;padding:4px 6px 4px 14px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.1);color:#fff}
    .pp-hero--fila .pp-search:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.32)}
    .pp-hero--fila .pp-search .pp-tile{width:auto;height:auto;flex-basis:auto;background:transparent;color:#fff;box-shadow:none}
    .pp-hero--fila .pp-search .pp-tile .pp-i{width:18px;height:18px}
    .pp-hero--fila .pp-search-copy strong{font-size:13px;font-weight:600;color:#fff;opacity:.88}
    .pp-hero--fila .pp-search-copy small{display:none}
    .pp-hero--fila .pp-search .pp-kbd{min-height:24px;padding:2px 8px;border:0;border-radius:999px;background:rgba(255,255,255,.14);color:#fff}
    .pp-hero--fila .qs-campo{position:absolute;right:0;top:-6px;z-index:6;width:min(440px,calc(100vw - 48px));min-height:56px;padding:6px 12px;background:transparent;box-shadow:none}
    .pp-hero--fila .qs-campo::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:16px;background:var(--card);box-shadow:0 0 0 3px color-mix(in srgb,var(--orange) 45%,transparent),0 16px 36px rgba(0,0,0,.25);transform-origin:right center;animation:ppBuscaCrece .3s cubic-bezier(.2,.8,.2,1) both}
    .pp-hero--fila .qs-campo > *{animation:ppBuscaDentro .22s .07s ease both}
    @keyframes ppBuscaCrece{from{opacity:0;transform:scale(.62,.8)}to{opacity:1;transform:none}}
    @keyframes ppBuscaDentro{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
    :root[data-motion="reduced"] .pp-hero--fila .qs-campo::before,:root[data-motion="reduced"] .pp-hero--fila .qs-campo > *{animation:none}
    .pp-barra{display:flex;align-items:center;gap:16px;padding:12px 16px}
    .pp-barra .pp-feature-head{flex:0 0 auto;align-items:center;gap:10px;margin:0;padding:6px}
    .pp-barra .pp-feature-head h2{margin:0;font-size:16px}
    .pp-barra .pp-feature-head p{font-size:12.5px;white-space:nowrap}
    .pp-barra-ats{flex:1 1 auto;min-width:0;display:grid;grid-template-columns:repeat(var(--pp-cols,5),minmax(0,1fr));gap:7px}
    .pp-barra .pp-sub{display:flex;justify-items:start;align-items:center;gap:8px;min-height:40px;padding:5px 12px 5px 6px;border-radius:999px;font-size:13px;text-align:left;white-space:nowrap}
    .pp-barra .pp-sub .pp-tile{box-shadow:none}
    .pp-barra .pp-sub-marca{top:-2px;right:-2px;width:10px;height:10px;border:2px solid var(--card)}

    /* Tarjetas de módulo */
    /* v34.7: estantes por área. --area = color del área (hub/areas.ts). Tres columnas fijas (v34.8). */
    .pp-solo-lector{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
    .pp-areas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}
    .pp-areas-col{display:flex;flex-direction:column;gap:14px;min-width:0}
    .pp-area{display:block;padding:6px 8px 8px;border-top:4px solid var(--area)}
    .pp-area-t{display:flex;align-items:center;gap:9px;padding:10px 8px 8px;font-size:14px;font-weight:800;color:color-mix(in srgb,var(--area) 55%,var(--ink))}
    .pp-area-t .pp-i{width:18px;height:18px}
    .pp-amod{display:flex;align-items:center;gap:11px;padding:7px 8px;border-radius:var(--theme-radius-control,10px);color:var(--ink);transition:background-color .14s ease}
    a.pp-amod:hover{background:color-mix(in srgb,var(--area) 9%,var(--card))}
    .pp-amod .pp-tile{background:var(--area);color:#fff;box-shadow:0 4px 12px color-mix(in srgb,var(--area) 22%,transparent)}
    .pp-amod-copy{flex:1;display:block;min-width:0}
    .pp-amod-copy h3{margin:0;font-size:14px;line-height:1.25}
    .pp-amod-copy p{margin:0;font-size:12px;line-height:1.35;color:var(--muted)}
    .pp-amod-flecha{width:15px;height:15px;color:var(--muted);opacity:0;transition:opacity .14s ease}
    a.pp-amod:hover .pp-amod-flecha,a.pp-amod:focus-visible .pp-amod-flecha{opacity:1}
    .pp-amod--off{opacity:.55;cursor:default}
    .pp-amod--off .pp-tile{background:var(--surface-soft);color:var(--muted);box-shadow:none}
    .pp-amod--off .pp-state{color:var(--muted)}
    /* Rendición: toda la tarjeta es el enlace; al pasar el mouse reacciona entera. */
    .pp-area--sola{position:relative;display:flex;padding:0;overflow:hidden;background:var(--area);border:0;transition:transform .16s ease}
    .pp-area--sola:hover{transform:translateY(-2px)}
    .pp-area--sola::after{content:"";position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;transition:opacity .16s ease}
    .pp-area--sola:hover::after{opacity:.08}
    .pp-area--sola .pp-amod{flex:1;padding:14px 16px;border-radius:0}
    .pp-area--sola .pp-amod,.pp-area--sola .pp-amod-copy p,.pp-area--sola .pp-state{color:#fff}
    .pp-area--sola .pp-amod-copy p{opacity:.82}
    .pp-area--sola a.pp-amod:hover{background:none}
    .pp-area--sola .pp-tile{width:44px;height:44px;flex-basis:44px;background:rgba(255,255,255,.14);box-shadow:none}
    .pp-area--sola .pp-amod-copy h3{font-size:16px}
    .pp-area--sola .pp-amod-flecha{opacity:1;color:#fff;transition:transform .16s ease}
    .pp-area--sola:hover .pp-amod-flecha{transform:translateX(4px)}
    /* v34.7: sin mantención, la cabecera pintada entera con el color del tema. */
    /* v34.8: sin pendientes ni mantención, todo en una franja bajita. */
    .pp-franja{display:grid;overflow:hidden}
    .pp-franja-sup{display:grid;grid-template-columns:auto minmax(0,1fr)}
    .pp-franja-sup--sola{grid-template-columns:minmax(0,1fr)}
    .pp-franja-cab{display:flex;align-items:center;gap:10px;min-width:0;padding:12px 14px;background:var(--orange-dark);color:#fff}
    .pp-franja-cab:hover{color:#fff}
    .pp-franja-cab .pp-tile{background:rgba(255,255,255,.16);color:#fff;box-shadow:none}
    .pp-franja-cab > div{min-width:0}
    .pp-franja-cab h2{margin:0;font-size:15px;line-height:1.15;color:#fff}
    .pp-franja-cab p{margin:1px 0 0;font-size:12px;opacity:.86}
    .pp-vts{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;margin:0;padding:8px 12px;list-style:none;align-items:center}
    .pp-vt{display:flex;align-items:center;gap:8px;min-width:0;padding:5px;border-radius:var(--theme-radius-control,10px);color:var(--ink);transition:background-color .14s ease}
    .pp-vt:hover{background:color-mix(in srgb,var(--orange) 8%,var(--card))}
    .pp-vt-fecha{flex:0 0 40px;display:grid;justify-items:center;padding:3px 0;border-radius:var(--theme-radius-control,9px);background:color-mix(in srgb,var(--orange) 14%,var(--card));color:color-mix(in srgb,var(--orange) 70%,var(--ink))}
    .pp-vt-fecha b{font-size:16px;line-height:1.05}
    .pp-vt-fecha small{font-size:9.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
    .pp-vt-copy{display:grid;min-width:0}
    .pp-vt-copy strong{overflow:hidden;font-size:12.5px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
    .pp-vt-copy small{overflow:hidden;font-size:11.5px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}
    .pp-franja-ats{display:flex;flex-wrap:wrap;gap:2px;padding:5px 8px;border-top:1px solid var(--line)}
    .pp-fat{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:3px;border-radius:var(--theme-radius-control,9px);color:var(--ink);font-size:12px;font-weight:700;white-space:nowrap;transition:background-color .14s ease}
    .pp-fat:hover{background:color-mix(in srgb,var(--orange) 8%,var(--card));color:var(--ink)}
    .pp-fat .pp-tile{width:26px;height:26px;flex:none;border-radius:7px;box-shadow:none}
    .pp-fat .pp-tile svg{width:15px;height:15px}
    .pp-viene{display:grid;gap:4px;padding:14px 16px}
    .pp-viene h2{margin:0;font-size:15px}
    .pp-viene .pp-vts{padding:0}
    .pp-sinmant{display:grid;align-content:start;overflow:hidden}
    .pp-sinmant-head{display:flex;align-items:center;gap:14px;padding:22px;background:var(--orange-dark);color:#fff}
    .pp-sinmant-head .pp-tile{background:rgba(255,255,255,.16);color:#fff}
    .pp-sinmant-head > div{flex:1;min-width:0}
    .pp-sinmant-kicker{display:block;font-size:11px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;opacity:.82}
    .pp-sinmant-head h2{margin:3px 0 2px;font-size:22px;line-height:1.15;color:#fff}
    .pp-sinmant-head p{margin:0;font-size:13px;opacity:.86}
    .pp-sinmant-head .pp-mod-arrow{align-self:center;color:#fff;margin:0}
    .pp-sinmant-atajos{padding:16px 22px 22px}
    .pp-areas--1{grid-template-columns:minmax(0,1fr)}
    .pp-areas--2{grid-template-columns:repeat(2,minmax(0,1fr))}
    @media (max-width:1180px){
      .hero.pp-hero.pp-hero--fila.pp-hero--ticket{grid-template-columns:minmax(0,1fr) auto}
      .pp-hero--ticket > div:first-child{grid-column:1/-1}
      .pp-ticket{max-width:none}
    }
    @media (max-width:1000px){
      .pp-barra{flex-direction:column;align-items:stretch;gap:10px}
      .pp-areas{grid-template-columns:repeat(2,minmax(0,1fr))}
      .pp-areas--3 .pp-areas-col:nth-child(3){grid-column:1/-1;flex-direction:row}
      .pp-areas--3 .pp-areas-col:nth-child(3)>.pp-area{flex:1 1 0;min-width:0}
      .pp-franja-sup{grid-template-columns:minmax(0,1fr)}
      .pp-vts{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
    }
    .pp-vacio{display:flex;align-items:center;gap:16px;padding:22px}
    .pp-vacio h2{margin:0 0 4px;font-size:18px}
    .pp-vacio p{margin:0;font-size:13px;color:var(--muted)}

    /* Próximamente (solo administrador) */
    .pp-soon{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:11px 14px;border:1px dashed var(--line);border-radius:var(--theme-radius-card,14px);background:var(--surface-muted)}
    .pp-soon-label{font-size:10.5px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
    .pp-soon-items{display:flex;flex-wrap:wrap;gap:8px}
    .pp-soon-item{display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--muted);font-size:12px;font-weight:700}
    .pp-soon-note{margin-left:auto;font-size:11px;color:var(--muted)}

    /* Pie: cuenta y accesos */
    .pp-foot{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:12px;align-items:stretch}
    .pp-foot-link{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:11px 14px;font:inherit;text-align:left;cursor:pointer;transition:.16s ease}
    .pp-foot-link:hover{border-color:var(--pp-acc-line);background:var(--surface-hover)}
    .pp-foot-copy{flex:1 1 auto;min-width:0}
    .pp-foot-copy strong{display:block;font-size:13.5px}
    .pp-foot-copy small{display:block;margin-top:2px;font-size:12px;color:var(--muted)}
    .pp-foot-link > .pp-i{color:var(--orange)}
    .pp-foot-link--out strong{color:var(--danger)}
    .pp-foot--3{grid-template-columns:repeat(3,minmax(0,1fr)) auto}
    .pp-foot-dot{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;vertical-align:1px;background:var(--muted)}
    .pp-foot-dot[data-e="ok"]{background:var(--ok)}.pp-foot-dot[data-e="atrasado"]{background:var(--warn)}.pp-foot-dot[data-e="error"]{background:var(--danger)}
    .pp-foot-form{margin:0}
    .pp-session{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:0 4px 0 10px;text-align:right;font-size:12px;color:var(--muted)}
    .pp-session strong{font-size:12px;color:var(--ink)}

    /* v17.1: tarjetas de módulo de Mantenciones y de Órdenes de Compra e Inventario */
    .module-card .module-tile{width:52px;height:52px;flex-basis:52px;border-radius:calc(var(--theme-radius-control,10px) + 4px);background:var(--orange);color:var(--on-primary,#fff);box-shadow:0 4px 12px rgba(var(--accent-rgb),.22)}
    .module-card .module-tile .pp-i{width:26px;height:26px}
    .module-card.users-disabled .module-tile,.module-card.generic-future-module .module-tile{background:var(--surface-soft);color:var(--muted);box-shadow:none}
    .mt-card .mt-tile{width:44px;height:44px;flex-basis:44px;border-radius:var(--theme-radius-control,10px);background:var(--orange);color:var(--on-primary,#fff);box-shadow:0 4px 12px rgba(var(--accent-rgb),.22)}
    .mt-card .mt-tile .pp-i{width:22px;height:22px}
    :root[data-density="compact"] .module-card .module-tile{width:44px;height:44px;flex-basis:44px}
    :root[data-density="compact"] .module-card .module-tile .pp-i{width:22px;height:22px}

    /* Inicio simple con íconos SVG */
    .hub-simple-icono .pp-i{width:30px;height:30px}

    .container.mp-page{padding-bottom:64px}

    /* Estados (los de resumen.js: ok, warn, bad, gris) */
    .mp-chip{display:inline-flex;align-items:center;gap:5px;min-height:22px;padding:2px 9px;border-radius:999px;font-size:10.5px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;vertical-align:middle}
    .mp-chip--ok{background:var(--ok-bg);color:var(--ok)}
    .mp-chip--warn{background:var(--warn-bg);color:var(--warn)}
    .mp-chip--bad{background:var(--danger-bg);color:var(--danger)}
    .mp-chip--gris{background:var(--surface-soft);color:var(--muted);border:1px solid var(--line)}
    .mt-todo-listo{margin:0;padding:14px 16px;border-radius:12px;background:var(--ok-bg);color:var(--ok);font-weight:800}

    /* Ruta y selector de mantención */
    .mp-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
    .mp-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
    .mp-crumbs a{display:inline-flex;align-items:center;min-height:32px;color:var(--pp-ico-ink);font-weight:700}
    .mp-crumbs .pp-i{width:14px;height:14px;color:var(--muted)}
    .mp-crumbs strong{color:var(--ink)}
    .mp-crumbs > span{color:var(--muted);font-weight:700}
    .mp-nav-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
    .mp-nueva{min-height:44px}
    .mp-picker-wrap{position:relative}
    .mp-picker{display:flex;align-items:center;gap:6px}
    .mp-arrow{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--card);color:var(--ink)}
    a.mp-arrow:hover{border-color:var(--pp-acc-line);background:var(--surface-hover)}
    .mp-arrow .pp-i{width:18px;height:18px}
    .mp-arrow[aria-disabled="true"]{opacity:.4}
    .mp-current{display:flex;align-items:center;gap:10px;min-height:44px;min-width:260px;padding:4px 12px 4px 6px;border:1px solid var(--pp-acc-line);border-radius:var(--theme-radius-control,10px);background:var(--card);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
    .mp-current:hover{background:var(--surface-hover)}
    .mp-current .pp-tile{width:32px;height:32px;flex-basis:32px}
    .mp-current .pp-tile .pp-i{width:18px;height:18px}
    .mp-current-copy{flex:1 1 auto;min-width:0}
    .mp-current-copy small{display:block;font-size:10px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
    .mp-current-copy strong{display:block;font-size:14px;line-height:1.2}
    .mp-current .mp-caret{width:18px;height:18px;color:var(--muted);transition:transform .16s ease}
    .mp-current[aria-expanded="true"] .mp-caret{transform:rotate(180deg)}
    .mp-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:500px;display:grid;border:1px solid var(--line);border-radius:calc(var(--theme-radius-card,14px) + 2px);background:var(--card);box-shadow:0 24px 60px rgba(0,0,0,.22);overflow:hidden}
    .mp-pop[hidden],.mp-backdrop[hidden],.mp-pop-sec[hidden],.mp-pop-list li[hidden],.mp-pop-vacio[hidden]{display:none !important}
    .mp-pop-search{display:flex;align-items:center;gap:10px;margin:12px 12px 10px;padding:0 12px;min-height:46px;border:1.5px solid var(--pp-acc-line);border-radius:var(--theme-radius-control,10px);background:var(--input-bg);color:var(--muted)}
    .mp-pop-search .pp-i{width:18px;height:18px}
    .mp-pop-search:focus-within{border-color:var(--orange);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.14)}
    /* Un solo borde: el campo no lleva el borde ni la sombra que la app pone a todos los campos. */
    :root .mp-pop .mp-pop-search input,:root .mp-pop .mp-pop-search input:focus,:root .mp-pop .mp-pop-search input:focus-visible{flex:1 1 auto;min-width:0;min-height:0;margin:0;padding:0;border:0 !important;border-radius:0;background:transparent !important;box-shadow:none !important;color:var(--ink);font:inherit;font-size:16px;outline:none !important}
    .mp-pop-filters{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 10px}
    .mp-filter{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--muted);font:inherit;font-size:12px;font-weight:800;cursor:pointer}
    .mp-filter b{font-size:11px}
    .mp-filter.is-active{border-color:var(--pp-acc-line);background:var(--pp-ico-bg);color:var(--pp-ico-ink)}
    .mp-filter select{border:0;background:transparent;color:var(--ink);font:inherit;font-weight:800;cursor:pointer}
    .mp-pop-scroll{max-height:340px;overflow:auto;border-top:1px solid var(--line)}
    .mp-pop-group{padding:10px 16px 4px;font-size:10.5px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
    .mp-pop-list{display:grid;margin:0;padding:0 6px 6px;list-style:none}
    .mp-opt{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:50px;padding:6px 10px;border-radius:var(--theme-radius-control,10px);color:var(--ink);text-decoration:none}
    .mp-opt:hover,.mp-opt.is-focus{background:var(--surface-hover)}
    .mp-opt strong{display:block;font-size:13.5px;line-height:1.25}
    .mp-opt small{display:block;margin-top:1px;font-size:11.5px;color:var(--muted)}
    .mp-opt.is-current{background:var(--pp-ico-bg);box-shadow:inset 3px 0 0 var(--orange)}
    .mp-pop-vacio{margin:0;padding:18px 16px;color:var(--muted);font-size:13px;text-align:center}
    .mp-pop-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--line);background:var(--surface-soft);font-size:11.5px;color:var(--muted)}
    .mp-keys{white-space:nowrap}
    .mp-pop-foot kbd{display:inline-flex;min-width:20px;justify-content:center;padding:1px 5px;border:1px solid var(--line);border-radius:5px;background:var(--card);color:var(--ink);font:inherit;font-weight:800}
    .mp-backdrop,.mp-sheet-handle{display:none}

    /* Cabecera: nombre, estado y la fila de los 8 módulos */
    .hero.mpa-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:30px;align-items:center;margin:0;padding:26px 30px;border-bottom-width:4px}
    .hero.mpa-hero h1{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:7px 0 8px;font-size:34px;line-height:1.1}
    .hero.mpa-hero .mpa-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;max-width:none;font-size:13.5px;color:#dfe3e5}
    .mpa-meta b{color:#fff}
    .mpa-progress{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:12px}
    .mpa-progress strong{font-size:22px}
    .mpa-progress span{font-size:12.5px;color:#dfe3e5}
    .mpa-steps{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}
    .mpa-step{display:grid;justify-items:center;gap:6px;color:#dfe3e5;font-size:10.5px;font-weight:700;line-height:1.15;text-align:center;text-decoration:none}
    .mpa-step .pp-tile{width:38px;height:38px;flex-basis:38px;border:2px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#dfe3e5}
    .mpa-step .pp-tile .pp-i{width:19px;height:19px}
    .mpa-step:hover .pp-tile{border-color:rgba(255,255,255,.45)}
    .mpa-step.is-ok .pp-tile{border-color:var(--ok);background:var(--ok);color:var(--card)}
    .mpa-step.is-warn .pp-tile{border-color:var(--warn);color:var(--warn)}
    .mpa-step.is-bad .pp-tile{border-color:var(--danger);background:var(--danger);color:#fff}
    .mpa-step.is-gris .pp-tile{border-style:dashed;color:rgba(255,255,255,.55)}

    /* Qué falta + Expediente */
    .mpa-row{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:20px;align-items:start}
    .mpa-row--sola{grid-template-columns:minmax(0,1fr)}
    .mpa-panel{padding:22px}
    .mpa-panel > .pp-sec-note{display:block;margin:-6px 0 0}
    .mpa-files{display:grid;gap:6px;margin:12px 0 16px;padding:0;list-style:none}
    .mpa-files li{display:flex;align-items:center;gap:10px;min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--surface-soft);font-size:12.5px;font-weight:700}
    .mpa-files li small{margin-left:auto;font-size:11px;font-weight:700;color:var(--muted)}
    .mpa-files li.is-ok small{color:var(--ok)}
    .mp-dot{width:9px;height:9px;flex:0 0 9px;border:2px solid var(--muted);border-radius:999px}
    .mpa-files li.is-ok .mp-dot{border-color:var(--ok);background:var(--ok)}
    .mpa-files li.is-viejo small{color:var(--warn)}
    .mpa-files li.is-viejo .mp-dot{border-color:var(--warn);background:var(--warn)}

    /* Tarjetas agrupadas por estado */
    .mpa-groups{display:grid;gap:18px}
    .mpa-group-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
    .mpa-group-head h2{margin:0;font-size:16px}
    .mpa-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
    .mpa-cards--auto{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
    .mpa-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
    .mpa-split--uno{grid-template-columns:minmax(0,1fr)}
    /* v17.31: cuadrícula de módulos, Expediente resumido y aviso «No falta nada» */
    .mpa-row--mods{grid-template-columns:minmax(0,1fr) 340px}
    .mpa-groups.mpa-panel{gap:14px}
    .mpa-leyenda{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
    .mpa-tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
    /* v20.6: el Expediente solo en el recuadro del costado; verde con los documentos completos. */
    .mpa-exp-sub{margin:10px 0 0;font-size:12.5px;line-height:1.4;font-weight:600;color:var(--muted)}
    .mpa-exp-sub b{color:var(--ink)}
    .mpa-exp-barra{height:6px;margin-top:12px;border-radius:999px;background:var(--surface-soft);overflow:hidden}
    .mpa-exp-barra span{display:block;height:100%;border-radius:inherit;background:var(--warn)}
    .mpa-exp.is-completo{background:var(--ok-bg);border-color:color-mix(in srgb,var(--ok) 35%,transparent);box-shadow:inset 0 3px 0 var(--ok)}
    .mpa-exp.is-completo .pp-kicker,.mpa-exp.is-completo h2,.mpa-exp.is-completo .mpa-exp-sub,.mpa-exp.is-completo .mpa-exp-sub b{color:var(--ok)}
    .mpa-exp.is-completo .mpa-exp-barra span{background:var(--ok)}
    .mpa-exp.is-completo .mpa-files li{background:var(--card);border-color:color-mix(in srgb,var(--ok) 25%,var(--line))}
    .mpa-exp.is-completo .pp-btn{border-color:var(--ok);color:var(--ok)}
    /* v20.2: «+ Nueva mantención» (Alojamiento) con el enlace chico a la nómina de la Revisión. */
    .nm-acciones{display:inline-flex;flex-direction:column;align-items:flex-end;gap:4px}
    .nm-revision{font-size:12px;font-weight:700;color:var(--muted);text-decoration:underline;text-underline-offset:2px}
    .nm-revision:hover{color:var(--accent-ink,var(--orange))}
    .mpa-card.mpa-tile{display:grid;align-content:start;gap:8px;min-height:132px;padding:14px 16px;border-top:3px solid var(--line)}
    .mpa-tile.is-warn{border-top-color:var(--warn)}
    .mpa-tile p.mpa-tile-nombres{font-size:12px;font-weight:800;overflow-wrap:anywhere}
    .mpa-tile.is-warn p.mpa-tile-nombres{color:var(--warn)}
    .mpa-tile.is-bad p.mpa-tile-nombres{color:var(--danger)}
    .mpa-tile.is-bad{border-top-color:var(--danger)}
    .mpa-tile.is-ok{border-top-color:var(--ok)}
    .mpa-tile.is-gris{opacity:.78}
    .mpa-tile h3{margin:0;font-size:14px;line-height:1.25}
    .mpa-tile p{margin:0;color:var(--muted);font-size:12px;line-height:1.4}
    .mpa-files--mini{gap:4px;margin:10px 0 14px}
    .mpa-files--mini li{min-height:30px;font-size:12px}
    .mpa-listo{display:flex;align-items:center;gap:14px;padding:18px 22px;border-radius:var(--theme-radius-card,16px);background:var(--ok-bg);color:var(--ok)}
    .mpa-listo > .pp-i{width:28px;height:28px;flex:0 0 28px}
    .mpa-listo h2{margin:0;font-size:18px;color:var(--ok)}
    .mpa-listo p{margin:2px 0 0;font-size:13.5px;color:var(--ok);opacity:.9}
    .mpa-listo .pp-btn{margin-left:auto}
    .mpa-listo.is-warn{background:var(--warn-bg);color:var(--warn)}
    .mpa-listo.is-warn h2,.mpa-listo.is-warn p{color:var(--warn)}
    .mpa-mini{display:grid;margin:0;padding:6px;list-style:none}
    .mpa-mini li + li{border-top:1px solid var(--line)}
    .mpa-mini-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:56px;padding:8px 10px;border-radius:var(--theme-radius-control,10px);color:var(--ink);text-decoration:none}
    .mpa-mini-row:hover{background:var(--surface-hover)}
    .mpa-mini-row .pp-tile{background:var(--orange);color:var(--on-primary,#fff)}
    .mpa-mini-row.is-gris .pp-tile{background:var(--surface-soft);color:var(--muted)}
    .mpa-mini-copy{min-width:0}
    .mpa-mini-copy strong{display:block;font-size:14px;line-height:1.25}
    .mpa-mini-copy small{display:block;margin-top:1px;overflow:hidden;font-size:12px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}
    .mpa-mini-arrow{width:18px;height:18px;color:var(--orange)}
    .mpa-card{display:grid;align-content:start;gap:10px;padding:16px;color:var(--ink);text-decoration:none;transition:.16s ease}
    .mpa-card:hover{border-color:var(--pp-acc-line);transform:translateY(-2px);box-shadow:var(--shadow)}
    .mpa-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
    .mpa-card-top .pp-tile{background:var(--orange);color:var(--on-primary,#fff);box-shadow:0 4px 12px rgba(var(--accent-rgb),.22)}
    .mpa-card h2{margin:0;font-size:15px;line-height:1.25}
    .mpa-card p{margin:0;font-size:12.5px;line-height:1.45;color:var(--muted)}
    .mpa-card .mpa-det{font-size:12px}
    .mpa-open{display:inline-flex;align-items:center;gap:5px;margin-top:2px;font-size:12px;font-weight:800;color:var(--pp-ico-ink)}
    .mpa-open .pp-i{width:15px;height:15px}
    .mpa-card--soft{background:var(--surface-muted);box-shadow:none}
    .mpa-card--soft .mpa-card-top .pp-tile{background:var(--surface-soft);color:var(--muted);box-shadow:none}

    .hero.cma-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:center;margin:0;padding:26px 30px;border-bottom-width:4px}
    .hero.cma-hero h1{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:7px 0 10px;font-size:34px;line-height:1.1}
    .hero.cma-hero .mpa-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;max-width:none;font-size:13.5px;color:#dfe3e5}
    .cma-steps{display:flex;gap:14px;margin-top:16px}
    .cma-steps .mpa-step{width:80px}
    .cm-zip{display:grid;gap:6px;justify-items:end;text-align:right}
    .cm-zip small{max-width:320px;font-size:12px;color:#dfe3e5;overflow-wrap:anywhere}
    .cm-zip .pp-btn{min-height:46px;padding:0 18px;font-size:14px}
    .cm-zip .pp-btn:disabled{opacity:.7;cursor:wait}
    .cma-procs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
    .cm-page .mpa-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
    .cm-files{display:grid;gap:8px;margin:0;padding:0;list-style:none}
    .cm-file{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--theme-radius-control,10px);background:var(--surface-soft)}
    .cm-file .pp-tile{width:36px;height:36px;flex-basis:36px;border:1px solid var(--line);background:var(--card);color:var(--muted)}
    .cm-file .pp-tile .pp-i{width:19px;height:19px}
    .cm-file.is-ok .pp-tile{border-color:transparent;background:var(--ok-bg);color:var(--ok)}
    .cm-file strong{display:block;overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}
    .cm-file small{display:block;margin-top:1px;font-size:11.5px;color:var(--muted)}
    .cm-file .pp-btn{min-height:34px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}

    /* ---------- Áreas seguras (notch / Dynamic Island, barra de inicio) ---------- */
    /* App instalada en iPhone: la página empieza bajo la hora y la batería. La barra superior
       (fija al hacer scroll) se extiende hasta arriba y pinta esa franja oscura para que la hora
       se lea en cualquier tema. Abajo, margen para la barra de inicio. En PC todo vale 0. */
    .topbar{padding-top:env(safe-area-inset-top,0px)}
    /* Pseudo-elemento y no fondo: los temas visuales fijan el fondo de .topbar con !important. */
    .topbar::before{
      content:"";
      position:absolute;
      top:0;
      left:0;
      right:0;
      height:env(safe-area-inset-top,0px);
      background:#15181b;
      pointer-events:none;
    }
    body{padding-bottom:env(safe-area-inset-bottom,0px)}
    .container,.topbar-inner{
      padding-left:env(safe-area-inset-left,0px);
      padding-right:env(safe-area-inset-right,0px);
    }

    /* ---------- Pantallas táctiles ---------- */
    @media (hover:none) and (pointer:coarse){
      html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
      a,button,input,select,textarea,label,[role=button]{
        touch-action:manipulation;
        -webkit-tap-highlight-color:rgba(var(--accent-rgb),.16);
      }

      /* iOS acerca la página al enfocar un campo con letra menor a 16 px. */
      input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
      select,
      textarea{
        font-size:16px !important;
      }
      input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
      select{
        min-height:44px;
      }
      /* Safari dibuja los select nativos con su propio alto (unos 20 px) e ignora min-height:
         se usa el mismo estilo de campo con una flecha propia, igual en iPhone y Android. */
      select:not([multiple]):not([size]){
        -webkit-appearance:none;
        appearance:none;
        padding-right:34px !important;
        background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%238a9096' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
        background-repeat:no-repeat !important;
        background-position:right 13px center !important;
        background-size:12px 8px !important;
      }

      /* Objetivos de toque de al menos 40–44 px (más específico que los tamaños propios de
         cada página, que van en su <style> después del CSS global). */
      :root .btn:not(.btn-ghost){min-height:44px}
      :root .btn-ghost,:root .top-actions .btn{min-height:40px}
      :root .users-toolbar #openCreateUser{min-height:44px}
      .modal-close{width:44px;height:44px;font-size:26px}
      .password-toggle{min-width:44px;min-height:44px}
      .mini-btn{min-height:40px;padding-left:12px;padding-right:12px}
      .worker-master-sort{min-height:40px;padding-top:10px;padding-bottom:10px}
      .compras-stat-action{min-height:40px;padding:8px 0}
      .changelog-tab{min-height:44px}

      /* Sin "levantar" tarjetas al tocar: en táctil el :hover queda pegado tras el toque. */
      .quick-search-launcher:hover,.recent-access-item:hover,.module-card.active:hover,
      .closing-month-card:hover,.closing-process-card-active:hover,.account-visual-theme-option:hover,
      .user-visual-theme-option:hover,.users-history-access:hover,.changelog-access:hover,
      .module-card.active:hover .module-arrow,.changelog-access:hover .changelog-access-arrow,
      .users-history-access:hover .changelog-access-arrow,.recent-access-item:hover .recent-access-arrow,
      .preference-choice:hover,.theme-setting-option:hover,.epp-mant-card:hover{
        transform:none;
      }

      /* Desenfoque detrás de la barra superior y de los modales: caro de dibujar al hacer
         scroll en celulares; los fondos ya son casi opacos. */
      .topbar{-webkit-backdrop-filter:none;backdrop-filter:none}
      .admin-modal{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(10,12,14,.62)}
    }

    /* ---------- Celular ---------- */
    @media (max-width:700px){
      /* Nada debe provocar scroll horizontal de la página. */
      html,body{max-width:100%;overflow-x:clip}
      img,svg,video,canvas{max-width:100%}
      pre,code{white-space:pre-wrap;overflow-wrap:anywhere}

      .topbar-inner{min-height:60px}
      .top-actions .btn{font-size:12px !important;min-height:40px}
      .page-navigation-row{gap:8px;flex-wrap:wrap}

      /* Textos chicos legibles sin zoom (mínimo 11 px). */
      .worker-master-name small,.closing-month-status,.closing-process-status,.closing-process-state,
      .closing-download-titleline span,.closing-file-chip b,.closing-file-chip span,
      .bank-excel-drop-copy span,.bank-preview-table th,.bank-row-status,.bodega-template-badge,
      .account-kicker,.theme-setting-copy small,.account-theme-note,.visual-theme-current-copy small,
      .visual-theme-current-copy span,.interface-preference-copy span,.account-preferences-note,
      .account-shortcuts-note,.current-session-badge,.you-tag,.user-theme-current,
      .user-visual-theme-copy small,.audit-entity-pill,.audit-event-meta span,.audit-event-meta small,
      .preference-choice small,.admin-modal-kicker,.bank-preview-kpis span,.keyboard-shortcut-row span,
      .shortcut-key-combo kbd{
        font-size:11px !important;
      }
      main small{font-size:max(11px,.83em) !important}

      /* Toasts y avisos: bajo la barra superior (que incluye la zona del notch). */
      .dgim-toast-stack,.dgim-inline-toast,.dgim-flash{
        top:calc(70px + env(safe-area-inset-top,0px)) !important;
      }

      /* Modales: arriba de la pantalla, del alto visible real (descontando el teclado) y
         con scroll interno, para que el teclado no tape campos ni botones. */
      /* Con un modal abierto, la página de fondo no se desplaza (iOS la movería al enfocar). */
      html:has(.admin-modal:not([hidden])),
      html:has(.admin-modal:not([hidden])) body{
        overflow:hidden;
      }
      .admin-modal{
        top:var(--dgim-vvtop,0px);
        bottom:auto;
        height:var(--dgim-vvh,100dvh);
        place-items:start center;
        padding:calc(10px + env(safe-area-inset-top,0px)) 10px calc(10px + env(safe-area-inset-bottom,0px));
        overflow-y:auto;
        overscroll-behavior:contain;
      }
      .admin-modal-card{
        width:100%;
        max-height:calc(var(--dgim-vvh,100dvh) - 20px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));
        padding:18px 16px;
        border-radius:16px;
        overscroll-behavior:contain;
        scroll-padding-bottom:24px;
      }
      .admin-modal-head{margin-bottom:14px}
      .admin-modal-head h2{font-size:21px}

      /* Tablas que siguen como tabla (filtros u opciones en el encabezado): scroll interno. */
      .table-wrap,.dgim-data-table-wrap,.worker-master-table-wrap,.compras-table-wrap,.epp-mant-table-wrap{
        -webkit-overflow-scrolling:touch;
        overscroll-behavior-x:contain;
      }

      /* Tablas como tarjetas: cada fila es una tarjeta y cada celda muestra el nombre de su
         columna (data-label, lo completa runtime-scripts al cargar o cambiar la tabla). */
      table.dgim-tabla-tarjetas{
        display:block;
        width:100%;
        min-width:0 !important;
        border-collapse:separate;
        background:transparent;
      }
      table.dgim-tabla-tarjetas thead{display:none}
      table.dgim-tabla-tarjetas tbody,table.dgim-tabla-tarjetas tfoot{display:block}
      table.dgim-tabla-tarjetas tr{
        display:grid;
        gap:7px;
        padding:12px 14px;
        margin:0 0 10px;
        border:1px solid var(--line);
        border-radius:14px;
        background:var(--card);
      }
      table.dgim-tabla-tarjetas tbody tr:last-child{margin-bottom:0}
      /* Celda: nombre de la columna a la izquierda y el contenido a la derecha (en fila, sin
         estirar las etiquetas de estado). */
      table.dgim-tabla-tarjetas td{
        position:static !important;
        display:flex;
        align-items:center;
        flex-wrap:wrap;
        gap:4px 10px;
        width:auto !important;
        min-width:0 !important;
        padding:0 !important;
        border:0 !important;
        box-shadow:none !important;
        background:transparent !important;
        text-align:left !important;
        white-space:normal !important;
        overflow-wrap:anywhere;
      }
      table.dgim-tabla-tarjetas td > *{min-width:0;max-width:100%}
      table.dgim-tabla-tarjetas td::before{
        content:attr(data-label);
        flex:0 0 min(36%,150px);
        color:var(--muted);
        font-size:11px;
        font-weight:800;
        letter-spacing:.04em;
        text-transform:uppercase;
      }
      /* Primera celda = título de la tarjeta, y celdas con campos (líneas de la orden de
         compra): el nombre de la columna arriba, chico, y el contenido abajo a lo ancho. */
      table.dgim-tabla-tarjetas td:first-child,
      table.dgim-tabla-tarjetas td:has(input,select,textarea){
        display:block;
      }
      table.dgim-tabla-tarjetas td:first-child::before,
      table.dgim-tabla-tarjetas td:has(input,select,textarea)::before{
        display:block;
        margin-bottom:4px;
      }
      table.dgim-tabla-tarjetas td:first-child{font-size:15px;padding-bottom:4px !important}
      /* Celdas sin nombre de columna (acciones, avisos de "cargando"/"sin datos"): a lo ancho. */
      table.dgim-tabla-tarjetas td[data-label=""]::before,
      table.dgim-tabla-tarjetas td:not([data-label])::before{
        display:none;
      }
      table.dgim-tabla-tarjetas td .btn{min-height:40px}
      table.dgim-tabla-tarjetas td[data-label=""]:last-child:not(:first-child){
        display:flex;
        flex-wrap:wrap;
        gap:8px;
        justify-content:flex-start;
      }
      table.dgim-tabla-tarjetas td[data-label=""]:last-child:not(:first-child) > div{display:flex;flex-wrap:wrap;gap:8px}
      /* El contenedor de una tabla-tarjetas ya no necesita scroll ni borde (clase explícita en
         vez de :has() sobre todos los elementos, que es costoso de recalcular). */
      .dgim-tabla-tarjetas-wrap{overflow:visible !important;border:0 !important;max-height:none !important;border-radius:0 !important;background:transparent !important;box-shadow:none !important}
    }

    /* ---------- PANEL PRINCIPAL v17.0 ---------- */
    /* Misma página que en el PC: una columna, filas de Pendientes que se tocan enteras, módulos de a
       2 y, al final, Mi cuenta, Opiniones, Changelog y Cerrar sesión como botones grandes. */
    @media (max-width:700px){
      .pp-me{width:44px;height:44px;padding:0;justify-content:center}
      .pp-me-copy{display:none}
      .topbar-salir-abajo .top-actions form{display:none}
      .container.pp-main{gap:16px;padding-top:16px;padding-bottom:32px}
      .hero.pp-hero{grid-template-columns:minmax(0,1fr);gap:18px;padding:20px 18px}
      .hero.pp-hero h1{font-size:26px;margin:6px 0 10px}
      .pp-search{min-height:56px}
      .pp-search-copy strong{font-size:16px}
      .pp-search .pp-kbd{display:none}
      .pp-row{grid-template-columns:minmax(0,1fr);gap:16px}
      .pp-pend{padding:16px}
      .pp-sec-head{flex-direction:column;align-items:flex-start;gap:4px}
      .pp-group{flex-wrap:wrap;gap:4px 10px}
      .pp-group-name{flex-wrap:wrap}
      .pp-task{grid-template-columns:28px minmax(0,1fr) 20px;min-height:64px}
      .pp-task-cta{display:none}
      .pp-task-chev{display:block}
      .pp-feature{padding:16px}
      .pp-actions .pp-btn{flex:1 1 100%;min-height:48px;font-size:14px}
      .pp-subs{gap:6px}
      .hero.pp-hero.pp-hero--fila,.hero.pp-hero.pp-hero--fila.pp-hero--ticket{grid-template-columns:minmax(0,1fr);gap:14px;padding:18px}
      .pp-hero--fila .qs-inline{width:100%}
      .pp-hero--fila .qs-campo{left:0;width:auto}
      .pp-hero--fila .pp-search{min-height:48px}
      .pp-ticket-copy strong{white-space:normal}
      .pp-barra{flex-direction:column;align-items:stretch;gap:10px}
      .pp-barra-ats{grid-template-columns:repeat(2,minmax(0,1fr))}
      .pp-barra .pp-sub{min-height:44px;font-size:13px}
      .pp-sub{min-height:76px;font-size:11px}
      .pp-subs--1 .pp-sub,.pp-subs--2 .pp-sub,.pp-subs--3 .pp-sub{min-height:84px;font-size:12px}
      .pp-areas,.pp-areas--2,.pp-areas--3{grid-template-columns:minmax(0,1fr)}
      .pp-areas--3 .pp-areas-col:nth-child(3){flex-direction:column}
      .pp-vts{grid-template-columns:minmax(0,1fr)}
      .pp-vt{min-height:48px}
      .pp-franja-ats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
      .pp-fat{justify-content:flex-start;min-height:44px;font-size:12.5px}
      .pp-sinmant-head{padding:16px}
      .pp-sinmant-head h2{font-size:19px}
      .pp-sinmant-atajos{padding:12px 16px 16px}
      .pp-area{margin-bottom:10px}
      .pp-amod{min-height:48px}
      .pp-amod-flecha{opacity:1}
      .pp-soon-note{display:none}
      .pp-foot{grid-template-columns:minmax(0,1fr);gap:8px}
      .pp-only-m{display:flex !important}
      .pp-only-pc{display:none !important}
      .pp-foot-form.pp-only-m{display:block !important}
    }

    /* ---------- PÁGINA DE CADA MANTENCIÓN v17.2 ---------- */
    /* Una columna; el selector de mantención se abre como hoja desde abajo, con filas grandes. */
    @media (max-width:700px){
      .mp-nav{flex-direction:column;align-items:stretch}
      .mp-nav-actions{flex-direction:column;align-items:stretch;width:100%}
      .mp-nueva{width:100%}
      .mp-picker-wrap,.mp-picker{width:100%}
      .mpa-mini-row{grid-template-columns:auto minmax(0,1fr) auto}
      .mpa-mini-row .mp-chip{grid-column:2;grid-row:2;justify-self:start}
      .mpa-mini-row .pp-tile{grid-row:span 2}
      .mpa-mini-arrow{grid-column:3;grid-row:1 / span 2}
      .mpa-mini-copy small{white-space:normal}
      .mp-current{flex:1 1 auto;min-width:0}
      .mp-backdrop{display:block;position:fixed;inset:0;z-index:59;background:rgba(10,13,16,.55)}
      .mp-pop{position:fixed;left:0;right:0;top:auto;bottom:0;width:auto;max-height:82vh;grid-template-rows:auto auto auto minmax(0,1fr) auto;border-radius:20px 20px 0 0;border-bottom:0;padding-bottom:env(safe-area-inset-bottom,0px)}
      .mp-pop-scroll{max-height:none;min-height:0}
      .mp-sheet-handle{display:block;width:44px;height:5px;margin:10px auto 0;border-radius:999px;background:var(--line)}
      .mp-opt{min-height:56px}
      .mp-filter{min-height:40px}
      .mp-filter select{font-size:16px}
      .mp-pop-foot{justify-content:center;padding:14px}
      .mp-pop-foot .mp-keys{display:none}
      .hero.mpa-hero{grid-template-columns:minmax(0,1fr);gap:20px;padding:20px 18px}
      .hero.mpa-hero h1{font-size:26px}
      .mpa-steps{grid-template-columns:repeat(4,minmax(0,1fr)) !important;row-gap:12px}
      .mpa-row,.mpa-split,.mpa-row--mods{grid-template-columns:minmax(0,1fr);gap:16px}
      .mpa-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
      .mpa-card.mpa-tile{grid-template-columns:minmax(0,1fr);min-height:0;padding:12px}
      .mpa-leyenda{justify-content:flex-start}
      .mpa-listo{flex-wrap:wrap}
      .mpa-listo .pp-btn{margin-left:0;width:100%;justify-content:center;min-height:48px}
      .mpa-panel{padding:16px}
      .mpa-panel > .pp-btn{width:100%;min-height:48px}
      .mpa-cards,.mpa-cards--auto{grid-template-columns:minmax(0,1fr);gap:10px}
      .mpa-card{grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:12px}
      .mpa-card-top{display:contents}
      .mpa-card-top .pp-tile{grid-row:span 4}
      .mpa-card-top .mp-chip{grid-column:2;justify-self:start}
      .mpa-card h2,.mpa-card p,.mpa-card .mpa-open{grid-column:2}
      .mpa-card.mpa-tile{grid-template-columns:minmax(0,1fr)}
      .mpa-tile .mpa-card-top{display:flex}
      .mpa-tile .mpa-card-top .pp-tile{grid-row:auto}
      .mpa-tile p{grid-column:auto}
    }

    /* ---------- CIERRE DE MES v17.4 ---------- */
    @media (max-width:700px){
      .hero.cma-hero{grid-template-columns:minmax(0,1fr);gap:18px;padding:20px 18px}
      .hero.cma-hero h1{font-size:26px}
      .cma-steps{justify-content:space-between;gap:6px}
      .cma-steps .mpa-step{width:auto;flex:1}
      .cm-zip{justify-items:stretch;text-align:left}
      .cm-zip .pp-btn{width:100%;min-height:48px}
      .cm-page .mpa-row{grid-template-columns:minmax(0,1fr)}
      .cma-procs{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
      .cma-procs .mpa-card{grid-template-columns:minmax(0,1fr)}
      .cma-procs .mpa-card-top{display:flex}
      .cma-procs .mpa-card h2,.cma-procs .mpa-card p,.cma-procs .mpa-card .mpa-open{grid-column:auto}
      .cma-procs .mpa-card p{display:none}
      .cm-file{grid-template-columns:auto minmax(0,1fr);row-gap:8px}
      .cm-file .mp-chip{grid-column:2;justify-self:start}
      .cm-file .pp-btn{grid-column:1 / -1;width:100%;min-height:44px}
      .cm-file strong{white-space:normal}
    }

    /* ---------- REVISIÓN DE MANTENCIÓN v17.5 ---------- */
    /* Los estilos de PC están en la página (revision/pages/detalle.js); aquí, con .rev-page delante para ganarles. */
    @media (max-width:700px){
      .rev-page .hero.rvh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .rev-page .hero.rvh-hero h1{font-size:24px}
      .rev-page .rvh-acciones{justify-content:stretch;max-width:none}
      .rev-page .rvh-acciones > .rvh-btn,.rev-page .rvh-acciones > .pp-btn,.rev-page .rvh-mas{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px}
      .rev-page .rvh-mas .rvh-btn{width:100%;justify-content:center;min-height:46px}
      .rev-page .rvh-acciones > .pp-btn{flex-basis:100%}
      .rev-page .rvh-acciones small{text-align:left}
      .rev-page .rvh-mas-menu button{min-height:46px;font-size:15px}
      .rev-page .rvh-meters{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
      .rev-page .rvh-meter:last-child{grid-column:1 / -1}
      .rev-page .rvh-toolbar{padding:12px}
      .rev-page .rvh-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;width:100%}
      .rev-page .rvh-tabs .rev-filtro{flex:0 0 auto;min-height:40px}
      .rev-page .rvh-tools{width:100%}
      .rev-page .rvh-search{min-width:0;flex:1 1 100%;order:-1;min-height:46px}
      .rev-page .rvh-orden{min-height:46px}
      .rev-page .rvh-acciones .rvh-btn{white-space:nowrap}
      .rev-page .rvh-search input{font-size:16px}
      .rev-page .rvh-ayuda{margin:0 12px 12px}
      .rev-page .rvh-card .rev-barra{position:static;margin:0 12px 12px}
      .rev-page .rev-todos{min-height:32px;font-size:12px}
    }

    /* ---------- ASISTENCIA SPOT v17.6 ---------- */
    /* Los estilos de PC están en la página (asistencia/pages.js); aquí, con .as-page delante para ganarles. */
    @media (max-width:700px){
      .as-page .hero.ash-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .as-page .hero.ash-hero h1{font-size:24px}
      .as-page .ash-pasos{gap:6px}
      .as-page .ash-paso{flex-direction:column;align-items:flex-start;gap:6px;padding:8px;font-size:11.5px}
      .as-page .ash-paso small{display:none}
      .as-page .ash-acciones{justify-content:stretch;max-width:none}
      .as-page .ash-btn{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px}
      .as-page .ash-acciones small{text-align:left}
      .as-page .ash-panel{padding:14px}
      .as-page .ash-carga{grid-template-columns:auto minmax(0,1fr)}
      .as-page .ash-carga .as-chip,.as-page .ash-carga-acc{grid-column:1 / -1;justify-self:start;justify-content:flex-start}
      .as-page .ash-carga-acc .pp-btn{min-height:44px}
      .as-page .ash-mas-menu{left:0;right:auto}
      .as-page .ash-mas-menu button,.as-page .ash-mas-menu a{min-height:46px;font-size:15px}
      .as-page .ash-drop{grid-template-columns:auto minmax(0,1fr);padding:14px}
      .as-page .ash-drop .pp-btn{grid-column:1 / -1;justify-content:center;min-height:48px}
      .as-page .ash-drop-copy input{font-size:16px}
      .as-page .ash-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
      .as-page .ash-tab{flex:0 0 auto;min-height:40px}
      .as-page .as-hoja-img{min-height:260px}
      .as-page .ash-visor-img{padding:8px}
      .as-page .ash-match{grid-template-columns:minmax(0,1fr)}
      .as-page .ash-match .pp-i,.as-page .ash-match-x{display:none}
      .as-page .ash-turno-ctl,.as-page .ash-seg{width:100%}
      .as-page .ash-seg{display:grid;grid-auto-columns:1fr;grid-auto-flow:column}
      .as-page .ash-seg button{min-height:44px;font-size:13px}
      .as-page .ash-aprobar{position:static;display:grid;padding:12px 14px}
      .as-page .ash-aprobar .pp-btn{justify-content:center;min-height:48px}
      .as-page .ash-progreso{min-width:0}
      .as-page .as-nav .btn{min-height:44px}
    }

    /* ---------- FIRMA DE DOCUMENTOS v17.9 ---------- */
    /* Los estilos de PC están en la página (firmas/pages.js); aquí, con .fd-page delante para ganarles. */
    @media (max-width:700px){
      .fd-page .hero.fdh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .fd-page .hero.fdh-hero h1{font-size:24px}
      .fd-page .fdh-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
      .fd-page .fdh-acciones{justify-content:stretch;max-width:none}
      .fd-page .fdh-subir,.fd-page .fdh-acciones > .fdh-btn{flex:1 1 100%}
      .fd-page .fdh-acciones .pp-btn,.fd-page .fdh-acciones .fdh-btn{width:100%;justify-content:center;min-height:48px}
      .fd-page .fdh-acciones small{text-align:left}
      .fd-page .fdh-preview-bar{display:grid}
      .fd-page .fdh-preview-acc .pp-btn,.fd-page .fdh-preview-acc .fdh-btn{flex:1 1 100%;justify-content:center;min-height:48px}
      .fd-page .fdh-resumen{grid-template-columns:repeat(2,minmax(0,1fr))}
      .fd-page .fdh-panel{padding:14px}
      .fd-page .fdh-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;width:100%}
      .fd-page .fdh-tab{flex:0 0 auto;min-height:40px}
      .fd-page .fdh-grid{grid-template-columns:minmax(0,1fr)}
    }

    /* ---------- PAGOS SPOT v17.10 ---------- */
    @media (max-width:700px){
      .psh-page .hero.psh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .psh-page .hero.psh-hero h1{font-size:24px}
      .psh-page .psh-pasos{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
      .psh-page .psh-paso{flex-direction:column;align-items:flex-start;gap:6px;padding:8px;font-size:11px}
      .psh-page .psh-paso small{display:none}
      .psh-page .psh-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
      .psh-page .psh-acciones{justify-content:stretch;max-width:none}
      .psh-page .psh-acciones .pp-btn,.psh-page .psh-btn{flex:1 1 100%;justify-content:center;min-height:48px}
      .psh-page .psh-panel{padding:14px}
    }

    /* ---------- EXPEDIENTE v17.11 ---------- */
    /* Los estilos de PC están en la página (expediente/pages/centro.js); aquí, con .exh-page delante. */
    @media (max-width:700px){
      .exh-page .hero.exh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .exh-page .hero.exh-hero h1{font-size:24px}
      .exh-page .exh-hero-r{flex-wrap:wrap;gap:14px}
      .exh-page .exh-ring{width:88px;height:88px;flex-basis:88px}
      .exh-page .exh-ring b{font-size:22px}
      .exh-page .exh-zip{flex:1 1 180px}
      .exh-page .exh-zip .pp-btn{width:100%;justify-content:center;min-height:48px}
      .exh-page .exh-panel{padding:14px}
      .exh-page .exh-doc{grid-template-columns:auto minmax(0,1fr)}
      .exh-page .exh-doc .mp-chip,.exh-page .exh-acc{grid-column:1 / -1;justify-self:start;justify-content:flex-start}
      .exh-page .exh-acc .pp-btn{min-height:44px}
      .exh-page .exh-doc.is-anexo{margin-left:16px}
      .exh-page .exh-final{grid-template-columns:auto minmax(0,1fr)}
      .exh-page .exh-final-acc{grid-column:1 / -1;justify-content:stretch}
      .exh-page .exh-final-acc .pp-btn,.exh-page .exh-final-acc .exh-btn{flex:1 1 100%;justify-content:center;min-height:48px}
      .exh-page .exh-subir{grid-template-columns:minmax(0,1fr)}
      .exh-page .exh-subir .pp-tile{display:none}
      .exh-page .exh-subir input{font-size:16px}
      .exh-page .exh-subir .pp-btn{min-height:48px}
    }

    /* ---------- MÓDULOS DE LA MANTENCIÓN v17.13 (Candados, EPP, Vehículos) ---------- */
    @media (max-width:700px){
      .mdh-page .hero.mdh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .mdh-page .hero.mdh-hero h1{font-size:24px}
      .mdh-page .mdh-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
      .mdh-page .mdh-acciones{justify-content:stretch;max-width:none}
      .mdh-page .mdh-btn{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px}
      .mdh-page .mdh-acciones small{text-align:left}
      .mdh-page .mdh-panel{padding:14px}
      .mdh-page .mdh-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;width:100%}
      .mdh-page .mdh-tab{flex:0 0 auto;min-height:40px}
      .mdh-page .mdh-tabla-wrap{border:0}
      .mdh-page .mdh-tabla .pp-btn{min-height:44px}
      .mdh-page .veh-cards{grid-template-columns:minmax(0,1fr)}
    }

    /* ---------- CHANGELOG E HISTORIAL v17.14 ---------- */
    @media (max-width:700px){
      .cgh-page .hero.cgh-hero,.hib-page .hero.hib-hero{grid-template-columns:minmax(0,1fr);gap:14px;padding:20px 18px}
      .cgh-page .hero.cgh-hero h1,.hib-page .hero.hib-hero h1{font-size:24px}
      .cgh-page .cgh-acciones{justify-items:start;text-align:left}
      .cgh-page .cgh-panel,.hib-page .hib-panel,.hib-page .hib-lado{padding:14px}
      .cgh-page .cgh-tools,.cgh-page .cgh-search{width:100%}
      .cgh-page .cgh-search{min-width:0}
      :root .cgh-page .cgh-search{height:46px;min-height:46px}
      .cgh-page .cgh-search input,.hib-page .hib-buscar input{font-size:16px}
      .cgh-page .cgh-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;width:100%}
      /* v29.3.3: el overflow:visible !important de la página (v17.14.1) anulaba el desplazamiento y las
         pestañas (cinco desde «App iPhone») se salían de la pantalla. */
      :root .cgh-page nav.cgh-tabs.changelog-tabs{overflow-x:auto !important}
      .cgh-page .cgh-panel{grid-template-columns:minmax(0,1fr)}
      .cgh-page .cgh-head>*,.cgh-page .cgh-tools{min-width:0;max-width:100%}
      .cgh-page .cgh-tab{flex:0 0 auto;min-height:40px}
      .cgh-page .cgh-tl{padding-left:22px}
      .cgh-page .cgh-tl::before{left:7px}
      .cgh-page .cgh-tl .cgh-rel::before{left:-21px}
      .cgh-page .cgh-mes{margin-left:-22px}
      .cgh-page .cgh-tl .release-period{margin-left:0;width:100%}
      .hib-page .hib-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
      .hib-page .hib-filtros select,.hib-page .hib-filtros .pp-btn{flex:1 1 100%;min-height:46px;font-size:16px}
      .hib-page .hib-buscar .audit-autocomplete{min-height:46px}
    }

    /* ---------- ÓRDENES DE COMPRA v17.15 ---------- */
    @media (max-width:700px){
      .cmh-page .hero.cmh-hero{grid-template-columns:minmax(0,1fr);gap:16px;padding:20px 18px}
      .cmh-page .hero.cmh-hero h1{font-size:24px}
      .cmh-page .cmh-hl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
      .cmh-page .cmh-hero-acts{justify-content:stretch;max-width:none}
      .cmh-page .cmh-btn{flex:1 1 calc(50% - 4px);justify-content:center;min-height:46px}
      .cmh-page .cmh-btn.is-main{flex-basis:100%}
      .cmh-page .cmh-steps{display:grid;gap:10px;margin-top:14px}
      .cmh-page .cmh-step::after{display:none}
      .cmh-page .cmh-duo,.cmh-modal-ancho .cmh-duo{grid-template-columns:minmax(0,1fr)}
      .cmh-page .cmh-stats,.cmh-modal-ancho .cmh-stats{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
      .cmh-page .cmh-card,.cmh-page .cmh-sec{padding:14px}
      .cmh-page .cmh-head h1{font-size:24px}
      .cmh-page .cmh-head .cmh-acts,.cmh-page .cmh-head .cmh-acts .pp-btn{width:100%;min-height:46px}
      .cmh-page .cmh-search{flex-basis:100%;min-height:46px}
      .cmh-page .cmh-search input,.cmh-page select.cmh-select{font-size:16px}
      .cmh-page select.cmh-select{min-height:46px}
      .cmh-page .cmh-chips{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;width:100%}
      .cmh-page .cmh-chip{flex:0 0 auto;min-height:40px}
      .cmh-page .cmh-hbar{grid-template-columns:minmax(0,1fr) auto;gap:4px 10px}
      .cmh-page .cmh-hbar > span:nth-child(2){grid-column:1 / -1;grid-row:2}
      .cmh-page .cmh-bars{gap:6px}
      .cmh-page .cmh-bars > div > span:first-child{font-size:9.5px;white-space:nowrap}
      .cmh-page .cmh-li{padding:12px 8px;min-height:56px}
      .cmh-page .cmh-more{width:44px;height:44px}
      .pg-venc input,.pg-venc select{font-size:16px;min-height:44px}
      .pg-plazos .pp-btn,.factura-plazos .pp-btn{min-height:44px}
      .cmh-menu button,.cmh-menu a{min-height:46px;font-size:15px}
      .cmh-page .ocd-peligro .pp-btn,.cmh-page .ocn-resumen .pp-btn{flex:1 1 100%;min-height:46px}
      .cmh-page .cmh-wrap.dgim-tabla-tarjetas-wrap{border:0}
      .cmh-modal-ancho .cmh-bar .cmh-acts,.cmh-modal-ancho .cmh-bar .cmh-acts .pp-btn{width:100%;justify-content:center;min-height:46px}
    }

    /* ---------- ACTIVOS FIJOS v17.17: ficha arriba y cada unidad en una fila corta ---------- */
    @media (max-width:700px){
      .afh-page .afh-panel{padding:14px}
      .afh-page .afh-duo #afFicha{order:-1}
      .afh-page table.afh-unidades tr{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:4px 10px;padding:10px 12px;margin-bottom:6px}
      .afh-page table.afh-unidades td{display:block;padding:0 !important;border:0;text-align:left}
      .afh-page table.afh-unidades td::before{display:none}
      .afh-page table.afh-unidades td:nth-child(3){text-align:right;font-size:12.5px}
      .afh-page table.afh-unidades td:nth-child(3) small{display:none}
      .afh-page table.afh-unidades td:nth-child(4){grid-column:1 / -1;font-size:12.5px;color:var(--muted)}
      .afh-page table.afh-unidades td:nth-child(4):has(.cmh-sub){display:none}
      .afh-page .afh-seg button,.afh-page .afh-ficha .pp-btn{min-height:46px}
      .afh-page .afh-ficha textarea{font-size:16px}
      .afh-page .afh-pag{min-width:44px;height:44px}
    }

    /* ---------- INVENTARIO Y COSTOS v17.16: cada talla en una fila compacta ---------- */
    @media (max-width:700px){
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:4px 12px;margin:-4px 0 8px 18px;padding:8px 10px 8px 14px}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla[hidden]{display:none}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td{display:block;padding:0 !important;border:0;text-align:left}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td::before{display:none}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td:nth-child(3),.epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td:nth-child(4){display:none}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td:nth-child(2){grid-column:1;grid-row:2;font-size:13px}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td:nth-child(5){grid-column:2;grid-row:1 / span 2}
      .epp-stock-page table.dgim-tabla-tarjetas tr.inv-talla td:nth-child(6){grid-column:3;grid-row:1 / span 2}
      .epp-stock-page .inv-talla td:first-child{padding-left:0 !important;font-weight:800}
    }

    /* ---------- Inicio simple (v16.4) ---------- */
    /* Usuario no administrador con 1 o 2 módulos: en el celular el Panel principal muestra solo
       sus módulos como botones grandes, Mi cuenta y Sugerencias. El resto del panel se oculta. */
    @media (max-width:700px){
      .hub-modo-simple > :not(.hub-simple){display:none !important}
      .hub-modo-simple > .hub-simple{display:block}
      .hub-simple-saludo{padding:6px 2px 16px}
      .hub-simple-saludo strong{display:block;font-size:24px;font-weight:800;line-height:1.2;color:var(--ink)}
      .hub-simple-saludo span{display:block;margin-top:4px;font-size:14px;color:var(--muted)}
      .hub-simple-modulos{display:grid;gap:14px}
      .hub-simple-modulo{
        display:flex;
        align-items:center;
        gap:14px;
        min-height:96px;
        padding:18px 16px;
        border:2px solid var(--accent,var(--orange));
        border-radius:20px;
        background:var(--card);
        color:var(--ink);
        text-decoration:none;
        box-shadow:var(--shadow);
      }
      .hub-simple-modulo:active{transform:scale(.98)}
      .hub-simple-icono{
        flex:none;
        width:58px;
        height:58px;
        display:grid;
        place-items:center;
        border-radius:16px;
        background:var(--orange);
        color:#fff;
        font-size:30px;
      }
      .hub-simple-texto{min-width:0;display:grid;gap:3px}
      .hub-simple-texto strong{font-size:19px;line-height:1.2}
      .hub-simple-texto span{font-size:13px;line-height:1.35;color:var(--muted)}
      .hub-simple-flecha{margin-left:auto;font-size:22px;font-weight:800;color:var(--accent,var(--orange))}
      .hub-simple-extras{display:grid;gap:10px;margin-top:22px}
      .hub-simple-extras a{
        display:flex;
        justify-content:space-between;
        align-items:center;
        min-height:52px;
        padding:12px 16px;
        border:1px solid var(--line);
        border-radius:14px;
        background:var(--card);
        color:var(--ink);
        font-size:15px;
        font-weight:600;
        text-decoration:none;
      }
    }

    /* ---------- AUDITORÍA MENSUAL v18.0 ---------- */
    @media (max-width:700px){
      .au-page .au-nav{align-items:stretch}
      .au-page .au-mes-pick{width:100%}
      .au-page .au-mes-sel{flex:1;min-width:0}
      .au-page .au-buscar{max-width:none;font-size:16px}
      .qs-spot{top:0;left:0;transform:none;width:100%;height:100%;max-height:none;border-radius:0;border:0;animation:qsAparece .16s ease both}
      .qs-spot-campo input,.qs-campo input{font-size:16px}
      .qs-res{min-height:52px}
      .qs-pie{display:none}
      .au-page .au-pag{justify-content:center}
      .au-page .au-pag .btn{min-width:44px;min-height:44px}
      .au-page .au-mes-menu{left:0;right:0;min-width:0}
      .au-page .au-mes-menu a{min-height:44px}
      .au-page .hero.au-hero{grid-template-columns:minmax(0,1fr);gap:14px;padding:20px 18px}
      .au-page .hero.au-hero h1{font-size:28px}
      .au-page .au-hero-r{text-align:left}
      .au-page .au-sync{min-height:44px}
      .au-page .au-av{flex-wrap:wrap}
      .au-page .au-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
      .au-page .au-tab{padding:10px 6px}
      .au-page .au-tab .au-st,.au-page .au-mes-sel small,.au-page .au-fi{font-size:11px}
      .au-page .au-pane{padding:16px 14px}
      .au-page .au-acts{width:100%;margin-left:0}
      .au-page .au-acts .btn{flex:1;justify-content:center;min-height:44px}
      .au-page .au-saved{flex-wrap:wrap}
      .au-page .au-two{grid-template-columns:1fr}
      .au-page .au-tbl-wrap.dgim-tabla-tarjetas-wrap{border:0;overflow:visible}
      .au-page .au-tbl td{white-space:normal}
      .au-page .au-tbl input[type=date]{font-size:16px;min-height:44px}
      .au-page .au-av-mas{font-size:16px;min-height:44px;min-width:44px;justify-content:center}
      .au-page .au-av-lista{margin-left:0}
      .au-page .au-av-fila{flex-wrap:wrap}
      .au-page .au-av-fila .au-av-tx{flex-basis:calc(100% - 40px)}
      .au-page .au-av-lista li{font-size:14px}
      .au-page .au-btn-sm{min-height:44px}
      .au-page .au-dl{width:44px;height:44px;flex-basis:44px}
      .au-rfl-form{grid-template-columns:1fr}
      .au-rfl-form input{font-size:16px}
    }

    /* ===== INFORME ASISTENCIA PLANTA v19.0 ===== */
    @media (max-width:700px){
      .ap-page .hero.cmh-hero{grid-template-columns:minmax(0,1fr);gap:14px;padding:20px 18px}
      .ap-page .ap-ctrl{justify-items:stretch;min-width:0;width:100%}
      .ap-page .ap-seg{display:grid;grid-template-columns:1fr 1fr;width:100%}
      .ap-page .ap-periodo{width:100%;min-width:0}
      .ap-page .ap-seg button{min-height:44px}
      .ap-page .ap-periodo button{width:44px;height:44px;flex:0 0 44px}
      .ap-page .ap-periodo select.cmh-select{flex:1;min-width:0;font-size:16px;min-height:44px}
      .ap-page .cmh-hero-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:none;width:100%}
      .ap-page .cmh-hero-acts .cmh-btn{flex:1;justify-content:center;min-height:44px}
      .ap-page .ap-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
      .ap-page .ap-kpi strong{font-size:22px}
      .ap-page .ap-archivos .ap-acc{margin-left:0;width:100%}
      .ap-page .ap-tabla tr.ap-grupo td{display:block}
      .ap-page .ap-dias{grid-template-columns:repeat(2,minmax(0,1fr))}
      .ap-page .ap-semanas{grid-template-columns:1fr}
      .ap-page .ap-chart{gap:6px}
      .ap-page .ap-bar i{width:14px}
      .ap-page .ap-col-lbl b{font-size:11.5px}
      #apSubirModal .ap-drop{padding:22px 14px}
    }

    /* ===== COMUNICADOS v30.0 ===== */
    @media (max-width:700px){
      .com-page .com-form{padding:16px}
      .com-page .com-campo input[type=text],.com-page .com-campo textarea,.com-page .com-editor,#comSuelto{font-size:16px}
      .com-page .com-port{grid-template-columns:repeat(2,minmax(0,1fr))}
      .com-page .com-grupo-tit .cuantos{font-size:12px}
      .com-page .com-acciones .pp-btn{flex:1 1 100%;min-height:48px}
      .com-page .com-outlook{padding:8px}
      .com-page .com-ol-cuerpo{padding:12px 6px}
      .com-page .com-correo .cuerpo{padding:18px 16px 6px}
      .com-page .com-correo .doc,.com-page .com-correo .firma{margin-left:16px;margin-right:16px}
      .com-page .com-correo .pie{padding:12px 16px}
      .com-page .com-hist{padding:16px}
      .com-page .com-det iframe{height:620px}
      #comConfirmar .com-conf dl{grid-template-columns:1fr;gap:2px}
      #comConfirmar .com-conf dd{margin-bottom:8px}
      #comAgregar .com-ag-suelto{flex-wrap:wrap}
      #comAgregar .com-ag-suelto .btn{flex:1 1 100%;min-height:44px}
    }
    @media (hover:none) and (pointer:coarse){
      .com-page .com-campo input[type=text],.com-page .com-campo textarea,.com-page .com-editor,#comSuelto{font-size:16px}
      .com-page .com-persona button,.com-page .com-adjunto button{width:40px;height:40px;font-size:16px}
      .com-page .com-plegar{width:40px;height:40px}
      .com-page .com-barra button{height:40px;min-width:44px}
      .com-page .com-mas{min-height:40px}
    }

    /* ---------- Préstamo de herramientas ---------- */
    @media (max-width:700px){
      .herr-acc{justify-content:flex-start}
      .herr-sel{flex-direction:column;align-items:stretch;width:100%}
      .herr-tarjeta{padding:12px}
      .herr-mov{flex-direction:column;gap:2px}
      #herrFaltaModal .herr-modal-cantidad{max-width:none}
    }
    @media (hover:none) and (pointer:coarse){
      .herr-sel select,.herr-agregar select,#herrFaltaCantidad{font-size:16px}
    }
    @media (max-width:700px){
      .tc-dos{grid-template-columns:minmax(0,1fr)}
      .tc-fondos{grid-template-columns:repeat(3,minmax(0,1fr))}
      .tc-acciones .tc-der{margin-left:0;width:100%}
      .tc-acciones .tc-der > *{flex:1 1 100%;justify-content:center}
      .com-page .tc-buscar{flex:1 1 100%}
      .tc-contactos .tc-acc{justify-content:flex-start}
    }
    @media (hover:none) and (pointer:coarse){
      .com-page .tc-dest input[type=text],.com-page .tc-buscar{font-size:16px}
      .tc-sug button{min-height:44px}
    }

    /* ===== RENDICIÓN DE GASTOS v32.0 ===== */
    @media (max-width:700px){
      .rnd-page .rnd-tit .rnd-acts,.rnd-page .rnd-tit .rnd-acts .pp-btn{width:100%}
      .rnd-page .rnd-campos{grid-template-columns:minmax(0,1fr)}
      .rnd-page .rnd-dest-ops,.rnd-page .rnd-dest-agregar{grid-template-columns:minmax(0,1fr)}
      .rnd-page .rnd-dest-op{min-height:48px}
      .rnd-page .rnd-dest-op b{font-size:16px}
      .rnd-page .rnd-dest-op small{font-size:14px}
      .rnd-page .rnd-dest-cab .pp-btn{min-height:44px}
      .rnd-page .rnd-tabla{table-layout:auto}
      .rnd-page .rnd-img{max-height:320px}
      .rnd-page .rnd-ficha{scroll-margin-top:84px}
      .rnd-page .rnd-acts .pp-btn{flex:1 1 auto;min-height:44px}
      .rnd-page .rnd-pasos{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr))}
      .rnd-page .rnd-sugerencia .pp-btn{width:100%;min-height:44px}
      #infGasto .rnd-campos,#rndApVisor .rnd-campos{grid-template-columns:minmax(0,1fr)}
      #rndApVisor .rnd-visor-pie{position:sticky;bottom:-16px;z-index:2;margin:12px -16px -16px;padding:10px 16px;border-top:1px solid var(--line);background:var(--card)}
      #rndApVisor .rnd-visor-pie .rnd-acts{flex:1 1 100%}
      #rndApVisor .rnd-visor-pie .pp-btn{flex:1 1 0;min-height:44px}
      #infGasto .rnd-img{max-height:260px}
      #infGasto .rnd-acts .pp-btn{flex:1 1 auto;min-height:44px}
      .rnd-page .rnd-barra-inf{flex-direction:column-reverse;align-items:stretch}
      .rnd-page .rnd-barra-inf > .pp-btn{width:100%;min-height:44px}
      .rnd-page #rndApAcciones{flex-direction:column}
      .rnd-page #rndApAcciones > .rnd-acts{flex-direction:column;align-items:stretch}
      .rnd-page #rndApAcciones .pp-btn{width:100%;min-height:44px}
      #rndVarios .rnd-varios-fila{grid-template-columns:minmax(0,1fr) 44px;padding-bottom:10px;border-bottom:1px dashed var(--line)}
      #rndVarios .rnd-varios-fila > *:not(.quitar){grid-column:1}
      #rndVarios .rnd-varios-fila .quitar{grid-column:2;grid-row:1;width:44px;height:44px}
      /* v35.7: «Usar el mismo nombre» baja debajo del título. */
      .rnd-page .rnd-titulo-fila{flex-wrap:wrap}
      .rnd-page .rnd-titulo-fila input{flex-basis:100%}
    }
    @media (hover:none) and (pointer:coarse){
      .compras-page.rnd-page label.rnd-foto{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;min-height:48px;color:#fff;font-size:15px}
      .rnd-page .rnd-chico{min-height:42px;padding:0 12px}
      /* Rendición, página propia (v34.5): el menú lateral pasa a una fila que se desliza. */
      .rnd-app .rnd-sup{flex-wrap:wrap;gap:8px;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px}
      .rnd-app .rnd-marca{font-size:14px}
      .rnd-app .rnd-marca span,.rnd-app .rnd-quien{display:none}
      .rnd-app .rnd-marco{grid-template-columns:minmax(0,1fr)}
      .rnd-app .rnd-menu{position:static;flex-direction:row;gap:4px;height:auto;padding:6px 10px;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}
      .rnd-app .rnd-menu section{display:flex;gap:4px;flex:none}
      .rnd-app .rnd-menu h2{display:none}
      .rnd-app #rndCarpetasInf{display:contents}
      .rnd-app .rnd-mi{min-height:44px;white-space:nowrap}
      .rnd-app .rnd-sub{align-content:center;min-height:44px;max-width:190px;padding:4px 10px;border:1px solid var(--line)}
      .rnd-app .rnd-page{padding:14px 16px 32px}
      .rnd-page .rnd-sugs button{min-height:44px}
      .rnd-visor-teclas{display:none}
      .rnd-page input,.rnd-page select,.rnd-page textarea,#rndVarios input,#rndVarios select,#infGasto input,#infGasto select,#infAnular textarea{font-size:16px}
    }
