:root{
  --bg:#0b0c0f;--bg2:#15161a;--panel:#1b1d22;--panel2:#24272d;--text:#ffffff;--muted:#c9cbd1;--accent:#f2c230;--accent2:#ffe082;--danger:#ff6b6b;--border:var(--border);--input:#111318;--shadow:rgba(0,0,0,.45)
}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;min-height:100vh}.splash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:20;animation:hideSplash .8s ease 2.1s forwards}.splash-logo{width:180px;height:180px;border-radius:30px;display:flex;align-items:center;justify-content:center;animation:pulse 1.4s ease-in-out infinite;border:1px solid var(--border)}.logo-mark{font-size:42px;font-weight:900;letter-spacing:2px;}@keyframes pulse{50%{transform:scale(1.06)}}@keyframes hideSplash{to{opacity:0;visibility:hidden}}.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.card{width:100%;max-width:430px;border:1px solid var(--border);border-radius:24px;padding:30px;}.brand{text-align:center;margin-bottom:24px}.brand-badge{margin:0 auto 12px;width:86px;height:86px;border-radius:22px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center}.brand h1{margin:0;font-size:30px}.brand p{margin:8px 0 0;}label{display:block;margin:14px 0 7px;font-weight:650}input,select,textarea{width:100%;padding:13px 14px;border:1px solid var(--border);border-radius:14px;font-size:15px}input[type=file]{}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:13px 18px;font-weight:800;text-decoration:none;cursor:pointer;}.btn.secondary{border:1px solid var(--border)}.btn.ghost{border:1px solid var(--accent)}.btn.danger{}.btn.full{width:100%;margin-top:18px}.error{padding:12px 14px;border-radius:12px;border:1px solid var(--border);margin-bottom:14px}.success{padding:12px 14px;border-radius:12px;border:1px solid var(--border);margin-bottom:14px}.layout{max-width:1240px;margin:0 auto;padding:28px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;gap:16px}.topbar h1{margin:0}.actions{display:flex;gap:10px;flex-wrap:wrap}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}.panel{border:1px solid var(--border);border-radius:22px;padding:22px;}.panel h2,.panel h3{margin-top:0}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:840px}.table th,.table td{padding:14px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.table th{font-size:13px;text-transform:uppercase;letter-spacing:.04em}.progress{height:10px;border-radius:999px;overflow:hidden;min-width:120px;border:1px solid var(--border)}.bar{height:100%;}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.mt{margin-top:18px}.muted{}.badge{display:inline-flex;padding:6px 10px;border-radius:999px;border:1px solid var(--border);font-size:13px;font-weight:700}.modal{position:fixed;inset:0;display:none;align-items:flex-start;justify-content:center;overflow:auto;padding:34px 18px;z-index:30}.modal:target{display:flex}.modal-card{width:min(980px,100%);border:1px solid var(--border);border-radius:24px;padding:24px;}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.phase{border:1px solid var(--border);border-radius:18px;padding:16px;margin-top:14px}.phase-title{display:flex;justify-content:space-between;align-items:center;gap:12px}.phase-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px}.hidden{display:none!important}.small{font-size:13px}.nowrap{white-space:nowrap}@media(max-width:720px){.topbar{align-items:flex-start;flex-direction:column}.layout{padding:18px}.card,.panel,.modal-card{border-radius:18px;padding:18px}}
.splash-img{max-width:145px;max-height:145px;object-fit:contain;}.brand-logo{max-width:70px;max-height:70px;object-fit:contain}.icon-btn{width:42px;height:42px;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid var(--accent);font-size:20px;font-weight:900}.actions .icon-btn{flex:0 0 auto}.jarvis-body{overflow:hidden;}.jarvis-stage{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;}.jarvis-grid{position:absolute;inset:0;background-size:42px 42px;mask-image:radial-gradient(circle at center,#000 0,transparent 72%);animation:gridMove 5.5s linear infinite}.jarvis-core{position:relative;z-index:2;width:min(760px,92vw);min-height:420px;border:1px solid var(--border);border-radius:36px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:42px;overflow:hidden}.jarvis-core:before,.jarvis-core:after{content:"";position:absolute;inset:18px;border:1px solid var(--border);border-radius:28px;pointer-events:none}.jarvis-core:after{inset:34px;}.jarvis-logo{width:180px;max-width:56vw;animation:jarvisPulse 1.8s ease-in-out infinite}.jarvis-core h1{font-size:clamp(28px,4vw,52px);line-height:1.05;margin:28px 0 10px;}.jarvis-core p{margin:0;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.scan-line{position:absolute;left:0;right:0;height:2px;animation:scan 2.2s ease-in-out infinite}.jarvis-status{position:absolute;right:24px;bottom:22px;display:flex;gap:10px;align-items:center;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.jarvis-status strong{}.jarvis-orbit{position:absolute;border:1px solid var(--border);border-radius:50%;}.orbit-one{width:620px;height:620px;animation:spin 11s linear infinite}.orbit-two{width:820px;height:360px;transform:rotate(-18deg);animation:spinReverse 14s linear infinite}.orbit-three{width:360px;height:820px;transform:rotate(28deg);animation:spin 16s linear infinite}@keyframes gridMove{to{background-position:42px 42px}}@keyframes jarvisPulse{50%{transform:scale(1.035);}}@keyframes scan{0%,100%{top:16%;opacity:.25}50%{top:84%;opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spinReverse{to{transform:rotate(-360deg)}}@media(max-width:720px){.jarvis-core{min-height:360px;padding:26px}.jarvis-status{position:static;margin-top:22px}.orbit-one{width:420px;height:420px}.orbit-two,.orbit-three{display:none}}
.actions.vertical{flex-direction:column;align-items:stretch}.icon-btn.mini{width:32px;height:32px;border-radius:10px;font-size:15px;margin-left:8px;vertical-align:middle}.modal-card.wide{width:min(1180px,100%)}.inline-form{margin:0}.invoice-icon{width:42px;height:42px;border-radius:14px;border:1px solid var(--border);font-size:24px;font-weight:900;cursor:pointer}.invoice-icon.yes{}.invoice-icon.no{}.positive{font-weight:800}.negative{font-weight:800}
.billing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.metric{border:1px solid var(--border);border-radius:18px;padding:18px}.metric span{display:block;font-size:13px;text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.metric strong{display:block;font-size:28px}.invoice-progress .bar{}.check-cell{width:auto;min-width:22px;transform:scale(1.2)}


/* VESMAR global responsive shell */
.layout{max-width:none;width:100%;padding:28px 28px 34px 82px;box-sizing:border-box}.panel{width:100%;box-sizing:border-box}.table-wrap{width:100%;max-width:100%;overflow-x:auto}.table{min-width:1040px}.topbar{padding-right:120px}.global-menu-toggle{position:fixed;top:22px;left:22px;z-index:120;width:48px;height:48px;border-radius:15px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;transition:transform .25s ease,border-color .25s ease,background .25s ease}.global-menu-toggle:hover{transform:translateY(-1px);}.global-menu-toggle span{width:23px;height:2px;border-radius:999px;display:block;transition:transform .25s ease,opacity .25s ease}.global-menu-toggle.open span:nth-child(1){transform:translateY(8px) rotate(45deg)}.global-menu-toggle.open span:nth-child(2){opacity:0}.global-menu-toggle.open span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}.global-logo{position:fixed;top:18px;right:24px;z-index:95;width:96px;height:auto;max-height:58px;object-fit:contain;}.global-menu-backdrop{position:fixed;inset:0;z-index:98;opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s ease}.global-menu-backdrop.show{opacity:1;visibility:visible}.global-side-menu{position:fixed;top:0;left:0;bottom:0;width:min(360px,86vw);z-index:110;border-right:1px solid var(--border);transform:translateX(-104%);transition:transform .34s cubic-bezier(.2,.8,.2,1);padding:92px 22px 24px;box-sizing:border-box}.global-side-menu.show{transform:translateX(0)}.global-side-menu h3{margin:0 0 18px;font-size:14px;letter-spacing:.14em;text-transform:uppercase}.global-side-menu a{display:flex;align-items:center;justify-content:space-between;gap:12px;text-decoration:none;border:1px solid var(--border);border-radius:18px;padding:16px 16px;margin-bottom:12px;font-weight:850;transition:transform .22s ease,background .22s ease,border-color .22s ease}.global-side-menu a:hover{transform:translateX(4px);}.global-side-menu a small{display:block;font-weight:500;margin-top:4px}.page-loader{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease}.page-loader.show{opacity:1;visibility:visible}.page-loader-card{border:1px solid var(--border);border-radius:26px;padding:30px 38px;text-align:center;}.loader-ring{width:64px;height:64px;border-radius:50%;border:3px solid var(--border);margin:0 auto 18px;animation:spinLoader .85s linear infinite}.page-loader-title{font-size:22px;font-weight:900;}.page-loader-sub{margin-top:8px;font-size:13px;text-transform:uppercase;letter-spacing:.12em}@keyframes spinLoader{to{transform:rotate(360deg)}}.workers-layout{display:grid;grid-template-columns:minmax(320px,470px) 1fr;gap:20px;align-items:start}.worker-card{border:1px solid var(--border);border-radius:20px;padding:16px;margin-bottom:14px}.worker-card h3{margin:0 0 10px}.worker-meta{display:grid;gap:6px;font-size:14px}.calendar-box{border:1px solid var(--border);border-radius:22px;padding:18px}.calendar-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-cell{min-height:76px;border-radius:14px;border:1px solid var(--border);padding:8px;}.calendar-cell.muted-day{opacity:.35}.calendar-cell.today{}.calendar-weekday{font-size:12px;text-transform:uppercase;text-align:center;font-weight:900;padding:6px}@media(max-width:980px){.layout{padding-left:22px;padding-top:92px}.topbar{padding-right:0}.global-logo{width:82px}.workers-layout{grid-template-columns:1fr}.calendar-cell{min-height:54px}}@media(max-width:720px){.layout{padding:92px 14px 24px}.global-menu-toggle{top:18px;left:16px}.global-logo{right:16px;max-height:48px}.table{min-width:900px}}

/* Gestión económica avanzada */
.economic-layout .panel{margin-bottom:20px}.economic-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 20px}.economic-tabs a{display:inline-flex;text-decoration:none;border:1px solid var(--border);border-radius:999px;padding:11px 15px;font-weight:850}.economic-tabs a.active,.economic-tabs a:hover{}.economic-filter-panel{}.economic-filter-actions{align-items:flex-end}.economic-section.tab-hidden{display:none}.metric-grid-xl{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.metric small{display:block;margin-top:9px;font-size:12px}.metric-positive{}.metric-negative{}.economic-table pre{max-width:420px;max-height:240px;overflow:auto;white-space:pre-wrap;border:1px solid var(--border);border-radius:14px;padding:12px;}.compact-form{display:flex;gap:8px;align-items:center;min-width:260px}.compact-form input,.compact-form select{min-width:120px;padding:9px 10px;border-radius:10px}.filters-grid{margin:14px 0 18px;padding:14px;border:1px solid var(--border);border-radius:18px}.purchase-form{padding:16px;border:1px solid var(--border);border-radius:20px}.purchase-line{padding:14px;margin-top:10px;border:1px solid var(--border);border-radius:16px;}.soft-separator{border:0;border-top:1px solid var(--border);margin:22px 0}.mini-table{min-width:760px}.status-rentable{}.status-en-riesgo{}.status-en-pérdida,.status-en-perdida{}.status-sin-datos-suficientes{}
@media(max-width:720px){.economic-tabs{overflow:auto;flex-wrap:nowrap;padding-bottom:6px}.compact-form{min-width:220px}.economic-table{min-width:1180px}}

/* VESMAR economic/work activity extensions */
.vesmar-interactive-bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.52}.center,.layout,.splash,.jarvis-stage{position:relative;z-index:1}.map-layout{max-width:1680px}.map-panel{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;min-height:680px}.map-panel #activityMap{min-height:640px;border-radius:22px;overflow:hidden;border:1px solid var(--border);}.map-summary{border:1px solid var(--border);border-radius:22px;padding:20px;transform-origin:center;transition:transform .22s ease,opacity .22s ease}.map-summary.zoom-in{animation:mapZoom .28s ease both}@keyframes mapZoom{0%{transform:scale(.92);opacity:.62}100%{transform:scale(1);opacity:1}}.map-kv{display:grid;grid-template-columns:1fr;gap:7px;margin-top:14px}.map-kv span{font-size:12px;text-transform:uppercase;letter-spacing:.06em}.map-kv strong{font-size:14px;margin-bottom:4px}.vesmar-marker{width:22px;height:22px;border-radius:999px;border:1px solid var(--border);}.vesmar-marker span{display:block;width:10px;height:10px;margin:5px;border-radius:999px;}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:999px;padding:7px 11px;font-size:13px}.mini-table{font-size:13px}.soft-separator{border:0;border-top:1px solid var(--border);margin:22px 0}.actions.vertical{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.tab-hidden{display:none!important}.economic-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.economic-tabs a{border:1px solid var(--border);border-radius:999px;padding:10px 14px;text-decoration:none;}.economic-tabs a.active{}.metric-positive strong,.positive{}.metric-negative strong,.negative{}.status-rentable{}.status-en-riesgo{}.status-en-pérdida,.status-en-perdida{}.purchase-line,.delivery-line{border:1px solid var(--border);border-radius:18px;padding:14px;margin-bottom:12px;}
@media (max-width: 960px){.map-panel{grid-template-columns:1fr}.map-panel #activityMap{min-height:480px}.map-summary{min-height:auto}.vesmar-interactive-bg{opacity:.32}}

/* Pantalla inicial y ajustes visuales VESMAR */
:root{--user-font-scale:1;--user-font-family:Inter,Arial,sans-serif}
body{font-family:var(--user-font-family);font-size:calc(16px * var(--user-font-scale))}
body.vesmar-light-mode{--bg:#f4f5f7;--bg2:#ffffff;--panel:#ffffff;--panel2:#f1f2f5;--text:#17191d;--muted:#5f6570;--border:var(--border);--input:#ffffff;--shadow:rgba(12,18,28,.14);}
body.vesmar-light-mode .panel,body.vesmar-light-mode .card,body.vesmar-light-mode .modal-card{}
body.vesmar-light-mode .global-side-menu,body.vesmar-light-mode .vesmar-theme-toolbar{}
body.vesmar-light-mode .btn.secondary{}.density-compact .layout{padding-top:86px}.density-compact .panel,.density-compact .card{padding:16px}.density-compact input,.density-compact select,.density-compact textarea{padding:9px 10px}.density-compact .table th,.density-compact .table td{padding:9px}.density-wide .layout{max-width:none}.density-wide .panel,.density-wide .card{padding:28px}.density-wide input,.density-wide select,.density-wide textarea{padding:15px 16px}.density-wide .table th,.density-wide .table td{padding:16px}
.vesmar-theme-toolbar{position:fixed;top:18px;left:86px;right:132px;z-index:115;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;border:1px solid var(--border);border-radius:18px;}
.vesmar-theme-toolbar .toolbar-title{font-weight:900;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.vesmar-theme-toolbar label{margin:0;display:flex;align-items:center;gap:7px;font-size:12px;font-weight:800}.vesmar-theme-toolbar select,.vesmar-theme-toolbar input[type=range]{width:auto;min-width:92px;padding:7px 9px;border-radius:10px;font-size:12px}.vesmar-theme-toolbar input[type=range]{accent-color:var(--accent);padding:0}.toolbar-reset{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-weight:800;cursor:pointer}.layout{padding-top:96px}.global-logo{top:22px}.splash{z-index:999;animation:hideSplash .9s ease 3.15s forwards}.splash-logo{width:min(38vw,280px);height:min(38vw,280px);border-radius:42px}.splash-img{max-width:min(30vw,230px);max-height:min(30vw,230px)}.center{opacity:0;animation:loginReveal .8s ease 3.25s forwards}@keyframes loginReveal{to{opacity:1}}
.splash:before,.splash:after{content:"";position:absolute;border:1px solid var(--border);border-radius:50%;width:min(70vw,720px);height:min(70vw,720px);animation:vesmarOrbit 4.6s linear infinite;}.splash:after{width:min(52vw,520px);height:min(52vw,520px);animation-direction:reverse;animation-duration:6.4s}@keyframes vesmarOrbit{to{transform:rotate(360deg)}}
.hud-card{position:relative;overflow:hidden}.hud-card:before{content:"";position:absolute;inset:0;transform:translateX(-100%);animation:hudSweep 4.8s ease-in-out infinite;pointer-events:none}@keyframes hudSweep{50%{transform:translateX(100%)}100%{transform:translateX(100%)}}
@media(max-width:980px){.vesmar-theme-toolbar{position:relative;top:auto;left:auto;right:auto;margin:82px 14px -72px;z-index:2}.layout{padding-top:104px}.splash-logo{width:210px;height:210px}.splash-img{max-width:168px;max-height:168px}}
@media(max-width:620px){.vesmar-theme-toolbar{display:grid;grid-template-columns:1fr 1fr;margin-top:84px}.vesmar-theme-toolbar .toolbar-title{grid-column:1/-1}.vesmar-theme-toolbar label{display:grid;gap:4px}.vesmar-theme-toolbar select,.vesmar-theme-toolbar input[type=range]{width:100%}}
.internal-accordion>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px}.internal-accordion>summary::-webkit-details-marker{display:none}.internal-accordion>summary h2{margin:0}.internal-accordion[open]>summary .badge{}.office-marker{width:30px!important;height:30px!important;}.office-marker span{width:14px!important;height:14px!important;margin:7px!important;}

/* Ajustes finales de acceso y barra superior */
body.login-page{overflow:hidden;min-height:100vh;}
body.login-page .vesmar-interactive-bg{opacity:.78}
.login-center{height:100vh;min-height:100vh;padding:0;overflow:hidden;opacity:0;animation:loginReveal .45s ease 3s forwards}
.login-panel{width:min(360px,calc(100vw - 42px));border:0;padding:0;text-align:center;}
.login-brand{display:flex;align-items:center;justify-content:center;margin-bottom:22px}.login-logo{width:190px;max-width:70vw;height:auto;}
.login-form{text-align:left}.login-form label{font-size:12px;letter-spacing:.12em;text-transform:uppercase;margin:14px 0 7px}.login-form input{border-radius:12px;}.login-form input:focus{outline:0;}.login-form .btn.full{margin-top:20px;border-radius:12px}.login-panel .error{margin-bottom:14px;text-align:left}
.login-splash{z-index:9999;animation:hideSplash .45s ease 3s forwards;overflow:hidden}.login-splash .splash-logo{position:relative;z-index:3;width:min(42vw,300px);height:min(42vw,300px);border:0;border-radius:0;animation:vesmarSplashLogo 3s ease both}.login-splash .splash-img{max-width:min(34vw,245px);max-height:min(34vw,245px);}.login-splash:before,.login-splash:after{width:min(76vw,760px);height:min(76vw,760px);animation:vesmarOrbit 5s linear infinite}.login-splash:after{width:min(52vw,540px);height:min(52vw,540px);border-style:dashed;animation-duration:7.5s;animation-direction:reverse}.splash-hud{position:absolute;z-index:2;left:50%;top:50%;border:1px solid var(--border);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.splash-hud-a{width:min(86vw,860px);height:min(86vw,860px);animation:vesmarOrbit 9s linear infinite}.splash-hud-b{width:min(60vw,610px);height:min(60vw,610px);border-style:dotted;animation:vesmarOrbit 6s linear infinite reverse}.splash-hud-c{width:min(34vw,360px);height:min(34vw,360px);animation:pulse 1.2s ease-in-out infinite}.splash-status{position:absolute;left:50%;bottom:9vh;transform:translateX(-50%);display:flex;gap:11px;align-items:center;font-size:12px;text-transform:uppercase;letter-spacing:.18em;font-weight:900}.splash-status span{width:72px;height:2px;animation:hudSweep 1.6s ease-in-out infinite}@keyframes vesmarSplashLogo{0%{opacity:0;transform:scale(.82)}18%{opacity:1;transform:scale(1)}76%{opacity:1;transform:scale(1.04)}100%{opacity:0;transform:scale(1.12)}}
.global-logo{width:144px;max-height:87px;right:28px}.topbar{padding-right:178px}.vesmar-theme-toolbar{right:198px}.toolbar-reset,.toolbar-logout{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-weight:800;cursor:pointer;text-decoration:none;font-size:12px;line-height:1}.toolbar-logout{white-space:nowrap}.toolbar-logout:hover{}
@media(max-width:980px){.global-logo{width:118px;max-height:72px}.vesmar-theme-toolbar{right:auto}.topbar{padding-right:0}.login-splash .splash-logo{width:240px;height:240px}.login-splash .splash-img{max-width:195px;max-height:195px}}
@media(max-width:620px){.global-logo{width:102px;max-height:62px}.login-logo{width:160px}.splash-status{width:86%;justify-content:center;text-align:center;line-height:1.5}.splash-status span{display:none}}

/* Corrección definitiva: secuencia inicial login VESMAR a pantalla completa */
html:has(body.login-page),
body.login-page{
  width:100%;
  height:100%;
  min-height:100vh;
  overflow:hidden!important;
  
}
body.login-page .vesmar-interactive-bg{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  z-index:0!important;
}
body.login-page .login-center{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  min-height:100vh!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  margin:0!important;
  overflow:hidden!important;
  z-index:10!important;
  animation:none!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}
body.login-page.login-splash-finished .login-center{
  opacity:1!important;
  visibility:visible!important;
  pointer-events:auto!important;
  transition:opacity .45s ease!important;
}
body.login-page .login-splash{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  min-height:100vh!important;
  margin:0!important;
  padding:0!important;
  display:block!important;
  overflow:hidden!important;
  z-index:99999!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  animation:none!important;
  
}
body.login-page.login-splash-finished .login-splash{
  opacity:0!important;
  visibility:hidden!important;
  transition:opacity .45s ease,visibility 0s linear .45s!important;
}
body.login-page .login-splash .splash-logo{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  width:clamp(170px,24vw,310px)!important;
  height:clamp(170px,24vw,310px)!important;
  margin:0!important;
  border:0!important;
  border-radius:0!important;
  
  
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  z-index:5!important;
  animation:vesmarSplashLogoCentered 3s ease both!important;
}
body.login-page .login-splash .splash-img{
  width:clamp(138px,20vw,255px)!important;
  height:auto!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  
}
body.login-page .login-splash:before,
body.login-page .login-splash:after,
body.login-page .login-splash .splash-hud{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  margin:0!important;
  pointer-events:none!important;
  transform-origin:center center!important;
}
body.login-page .login-splash:before{
  content:""!important;
  width:clamp(320px,72vw,860px)!important;
  height:clamp(320px,72vw,860px)!important;
  border:1px solid var(--border)!important;
  border-radius:50%!important;
  
  animation:vesmarOrbitCentered 8s linear infinite!important;
}
body.login-page .login-splash:after{
  content:""!important;
  width:clamp(240px,48vw,560px)!important;
  height:clamp(240px,48vw,560px)!important;
  border:1px dashed var(--border)!important;
  border-radius:50%!important;
  
  animation:vesmarOrbitCenteredReverse 6.2s linear infinite!important;
}
body.login-page .login-splash .splash-hud-a{
  width:clamp(360px,86vw,980px)!important;
  height:clamp(360px,86vw,980px)!important;
  animation:vesmarOrbitCentered 10.5s linear infinite!important;
}
body.login-page .login-splash .splash-hud-b{
  width:clamp(280px,62vw,680px)!important;
  height:clamp(280px,62vw,680px)!important;
  animation:vesmarOrbitCenteredReverse 7s linear infinite!important;
}
body.login-page .login-splash .splash-hud-c{
  width:clamp(160px,34vw,380px)!important;
  height:clamp(160px,34vw,380px)!important;
  transform:translate(-50%,-50%)!important;
  animation:vesmarHudPulseCentered 1.35s ease-in-out infinite!important;
}
body.login-page .splash-status{
  position:absolute!important;
  left:50%!important;
  bottom:8vh!important;
  transform:translateX(-50%)!important;
  width:min(680px,86vw)!important;
  justify-content:center!important;
  text-align:center!important;
  z-index:6!important;
}
@keyframes vesmarSplashLogoCentered{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.82)}
  18%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  76%{opacity:1;transform:translate(-50%,-50%) scale(1.04)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.10)}
}
@keyframes vesmarOrbitCentered{
  from{transform:translate(-50%,-50%) rotate(0deg)}
  to{transform:translate(-50%,-50%) rotate(360deg)}
}
@keyframes vesmarOrbitCenteredReverse{
  from{transform:translate(-50%,-50%) rotate(360deg)}
  to{transform:translate(-50%,-50%) rotate(0deg)}
}
@keyframes vesmarHudPulseCentered{
  0%,100%{opacity:.62;transform:translate(-50%,-50%) scale(.96)}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}
}
@media(max-width:620px){
  body.login-page .login-splash .splash-logo{width:190px!important;height:190px!important;}
  body.login-page .login-splash .splash-img{width:155px!important;}
  body.login-page .splash-status{bottom:7vh!important;font-size:10px!important;letter-spacing:.12em!important;}
}

/* Vehículo decorativo exclusivo para vesmaradmin en el panel principal */
.dashboard-vehicle-overlay{
  position:fixed;
  right:18px;
  bottom:14px;
  width:min(40vw,620px);
  z-index:2;
  pointer-events:none;
  user-select:none;
  opacity:.97;
}
.dashboard-vehicle-overlay img{
  display:block;
  width:100%;
  height:auto;
  object-fit:contain;
  
}
.layout{position:relative;z-index:3}
.vesmar-interactive-bg{z-index:1}
@media (max-width: 1100px){
  .dashboard-vehicle-overlay{width:min(46vw,500px);right:10px;bottom:10px;opacity:.93}
}
@media (max-width: 780px){
  .dashboard-vehicle-overlay{width:min(58vw,380px);right:6px;bottom:8px;opacity:.88}
}
@media (max-width: 560px){
  .dashboard-vehicle-overlay{width:min(68vw,300px);right:0;bottom:4px;opacity:.84}
}

/* Ajuste final vehículo vesmaradmin: imagen cuadrada fijada abajo a la derecha sin tapar botones */
.dashboard-vehicle-overlay{
  position:fixed!important;
  right:clamp(8px,1.8vw,28px)!important;
  bottom:clamp(6px,1.6vw,22px)!important;
  left:auto!important;
  top:auto!important;
  width:clamp(230px,28vw,430px)!important;
  max-width:42vw!important;
  max-height:42vh!important;
  z-index:2!important;
  pointer-events:none!important;
  user-select:none!important;
  opacity:.96!important;
  transform:none!important;
  overflow:visible!important;
}
.dashboard-vehicle-overlay img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  max-height:42vh!important;
  object-fit:contain!important;
  object-position:right bottom!important;
  
}
.layout{position:relative!important;z-index:3!important;}
@media (max-width: 1180px){
  .dashboard-vehicle-overlay{width:clamp(210px,30vw,360px)!important;max-width:38vw!important;max-height:36vh!important;opacity:.92!important;}
  .dashboard-vehicle-overlay img{max-height:36vh!important;}
}
@media (max-width: 760px){
  .dashboard-vehicle-overlay{width:clamp(170px,42vw,260px)!important;max-width:46vw!important;max-height:28vh!important;opacity:.86!important;right:4px!important;bottom:4px!important;}
  .dashboard-vehicle-overlay img{max-height:28vh!important;}
}
@media (max-width: 520px){
  .dashboard-vehicle-overlay{width:clamp(135px,48vw,210px)!important;max-width:52vw!important;max-height:24vh!important;opacity:.78!important;}
  .dashboard-vehicle-overlay img{max-height:24vh!important;}
}

/* Incremental additions: budget generator, compact works table and delivery notes */
.compact-works-table td { vertical-align: top; }
.work-details-compact { margin-top: 8px; }
.work-details-compact summary { cursor: pointer;  font-weight: 700; }
.compact-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin-top: 10px; padding: 12px; border: 1px solid var(--border); border-radius: 14px;  }
.compact-detail-grid span { font-size: .9rem; }
.budget-generator-page .panel { overflow: visible; }
.budget-main-data h2 { margin-top: 0; }
.budget-generator-form textarea { width: 100%; border-radius: 12px; border: 1px solid var(--border);   padding: 10px; }
.budget-lines-table { min-width: 1550px; }
.budget-lines-table input, .budget-lines-table select { min-width: 90px; }
.budget-lines-table td:nth-child(2) input { min-width: 240px; }
.budget-lines-table .base-cost, .budget-lines-table .profit-amount, .budget-lines-table .taxable { white-space: nowrap; font-weight: 700; }
.budget-totals { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 12px; margin-top: 18px; }
.budget-totals div { min-width: 180px; padding: 14px; border: 1px solid var(--border); border-radius: 16px;  }
.budget-totals span { display: block; font-size: .82rem; opacity: .78; }
.budget-totals strong { display: block; margin-top: 4px; font-size: 1.15rem; }
.delivery-edit-lines .delivery-line, #delivery-lines .delivery-line { border: 1px solid var(--border); border-radius: 14px; padding: 12px; margin-bottom: 10px; }
.nowrap { white-space: nowrap; }
@media (max-width: 900px) {
  .compact-detail-grid { grid-template-columns: 1fr; }
  .budget-totals { justify-content: stretch; }
  .budget-totals div { flex: 1 1 100%; }
}

/* Correcciones incrementales 2026-05-26: facturas compactas y presupuestos Holded en obras */
.economic-row-details{margin-top:8px;max-width:360px}.economic-row-details summary{cursor:pointer;font-weight:800}.economic-row-details pre{max-height:220px;overflow:auto;white-space:pre-wrap;border:1px solid var(--border);border-radius:12px;padding:12px}.collection-status{min-width:160px}.collection-status small{display:block;margin-top:6px;font-weight:700}.mini-table{min-width:620px}.compact-detail-grid+.table-wrap{margin-top:12px}.purchase-line.form-grid{grid-template-columns:2fr repeat(3,minmax(140px,1fr))}

/* Nuevas mejoras incrementales VESMAR */
.incident-stats .panel strong{display:block;font-size:2rem;margin-top:8px;}
.full-span{grid-column:1 / -1}
.status-pendiente{}
.status-en-curso{}
.status-finalizada{}
.status-con-incidencia{}
.zone-work-accordion{border:1px solid var(--border);border-radius:14px;padding:10px;margin-top:10px;}
.zone-work-accordion>summary{cursor:pointer;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.zone-accumulated-label{text-transform:uppercase;font-weight:900;letter-spacing:.03em}
.shipment-line{border:1px solid var(--border);border-radius:14px;padding:12px;margin:10px 0;}
.mini-form{min-width:360px;grid-template-columns:repeat(2,minmax(140px,1fr))}
.budget-lines-table select[name="unit_type[]"], .budget-lines-table select[name="admin_pct[]"]{min-width:90px}

/* VESMAR 2026-06 anticipo + sci-fi obra UI */
.sci-fi-workspace .sci-fi-hero,
.works-visual-layout .works-hero{
  position:relative;
  overflow:hidden;
  border:1px solid var(--border);
  
}
.sci-fi-workspace .sci-fi-hero:after,
.works-visual-layout .works-hero:after{
  content:"";
  position:absolute;
  inset:-40%;
  
  transform:translateX(-45%);
  animation:vesmar-scan 8s linear infinite;
  pointer-events:none;
}
@keyframes vesmar-scan{to{transform:translateX(45%)}}
.work-command-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;align-items:start;margin-top:18px}
.work-command-nav{position:sticky;top:18px;display:grid;gap:10px;padding:14px;border:1px solid var(--border);border-radius:22px;}
.work-command-nav a{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:16px;text-decoration:none;transition:.22s ease}
.work-command-nav a:hover{transform:translateX(4px);}
.work-command-nav span{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:10px;}
.work-command-main{min-width:0;display:grid;gap:18px}
.work-command-main .panel,.works-board{}
.works-visual-table-wrap{border-radius:22px;overflow:hidden;}
.works-visual-table tbody tr{transition:.22s ease;position:relative}
.works-visual-table tbody tr:hover{transform:translateY(-2px);}
.works-visual-table td:first-child strong{display:inline-block;font-size:1.05rem;letter-spacing:.01em;margin-bottom:6px}
.works-visual-table .work-details-compact summary{cursor:pointer;font-weight:700;margin-top:5px}
.compact-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px;margin-top:12px;padding:12px;border:1px solid var(--border);border-radius:16px;}
.phase-fields .phase-total[readonly]{opacity:.88;}
.invoice-progress .bar{}
@media (max-width: 980px){.work-command-layout{grid-template-columns:1fr}.work-command-nav{position:relative;top:auto;grid-template-columns:repeat(2,minmax(0,1fr))}}

/* VESMAR 2026-06-01 - barra superior ocultable y modales centrados */
.toolbar-hide,.toolbar-show{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-weight:800;cursor:pointer;text-decoration:none;font-size:12px;line-height:1;white-space:nowrap}
.toolbar-hide{}
.toolbar-show{position:fixed;top:14px;right:210px;z-index:116;display:none;}
body.vesmar-toolbar-hidden .vesmar-theme-toolbar{transform:translateY(-145%);opacity:0;pointer-events:none;transition:transform .35s ease,opacity .25s ease}
body.vesmar-toolbar-hidden .toolbar-show{display:inline-flex;align-items:center;justify-content:center}
.vesmar-theme-toolbar{transition:transform .35s ease,opacity .25s ease}
body.vesmar-toolbar-hidden .layout{padding-top:42px}
body.vesmar-toolbar-hidden .global-logo{top:18px}
.modal{align-items:center!important;justify-content:center!important;padding:24px!important}
.modal-card{max-height:calc(100vh - 48px);overflow:auto}
.modal-header{position:sticky;top:-24px;z-index:3;padding-top:4px;padding-bottom:12px}
.invoice-observations{margin-top:14px;padding:14px;border:1px solid var(--border);border-radius:16px;}
.invoice-observations textarea{min-height:84px;resize:vertical}
.invoice-observation-meta{margin-top:8px;font-size:12px;font-weight:700}
.billing-hint{display:block;margin-top:4px;font-size:12px}
@media(max-width:980px){.toolbar-show{right:18px}.modal{padding:14px!important}.modal-card{max-height:calc(100vh - 28px)}}

/* Mejoras UX, accesibilidad, tablas y confirmaciones */
:focus-visible{outline:3px solid #f2c230;outline-offset:3px;border-radius:8px}
label{font-weight:650} input:invalid,select:invalid,textarea:invalid,.field-invalid input{}
.empty-state{padding:22px!important;text-align:center;border-radius:12px}
.table-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 12px;padding:10px;border:1px solid var(--border);border-radius:14px;}
.table-tools label{display:flex;align-items:center;gap:8px;margin:0}.table-tools input,.table-tools select{min-height:34px}.table-pages{display:flex;gap:6px;margin-left:auto}.table-count{font-size:12px}.table-search-label{min-width:260px}.table-search{width:220px}.table-prev:disabled,.table-next:disabled{opacity:.45;cursor:not-allowed}
.vesmar-confirm-overlay{position:fixed;inset:0;z-index:99999;display:none;align-items:center;justify-content:center;padding:18px}.vesmar-confirm-overlay.show{display:flex}.vesmar-confirm-card{width:min(480px,94vw);border:1px solid var(--border);border-radius:20px;padding:22px;}.vesmar-confirm-card h2{margin-top:0}.vesmar-toast{position:fixed;right:18px;bottom:18px;z-index:100000;max-width:360px;padding:12px 14px;border-radius:14px;border:1px solid var(--border);opacity:0;transform:translateY(12px);transition:.25s}.vesmar-toast.show{opacity:1;transform:translateY(0)}
.work-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.work-tab{padding:9px 12px;border:1px solid var(--border);border-radius:999px;text-decoration:none;}.work-tab.active{}.work-tab-panel[hidden]{display:none!important}.work-tab-panel{scroll-margin-top:90px}.work-summary-grid,.warehouse-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.summary-item,.warehouse-card{border:1px solid var(--border);border-radius:14px;padding:12px;}.warehouse-card h3{grid-column:1/-1;margin-top:0}.full{grid-column:1/-1}
@media(max-width:760px){.table-tools{align-items:stretch}.table-search-label,.table-search{width:100%;min-width:0}.table-pages{margin-left:0;width:100%}.table-pages .btn{flex:1}.work-tabs{position:static}}

/* Horas de trabajadores + partidas concluidas */
.worker-hours-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.worker-hours-toggle{display:flex;gap:8px;flex-wrap:wrap}.worker-hours-view[hidden]{display:none!important}.worker-hour-form{margin-bottom:18px}.worker-hours-calendar{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.worker-day-card{border:1px solid var(--border);border-radius:18px;padding:14px}.worker-day-card h3{margin:0 0 10px}.worker-day-card .worker-hour-entry{border-top:1px solid var(--border);padding:9px 0}.worker-day-card .worker-hour-entry:first-of-type{border-top:0}.worker-hour-total{font-weight:900;}.phase-completed-row{}.phase-completed-row td{}.phase-completed-label{display:inline-flex;align-items:center;gap:6px;font-weight:900}.conclude-form{margin:0}.conclude-form .btn{padding:8px 10px;font-size:12px}

/* Corrección 2026-06-11: aviso de adjudicación de avances al crear zonas */
.zone-assignment-warning{margin:12px 0;padding:12px 14px;border:1px solid var(--border);border-radius:14px;}.zone-assigned-summary{display:inline-flex;margin-left:8px;font-weight:900;}.zone-assigned-summary.negative{}.zone-line small{display:block;margin-top:6px}

/* Gestión de obras e informe económico · 2026-07-20 */
.create-work-disclosure{padding:0;overflow:hidden}
.create-work-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:56px;padding:14px 18px;cursor:pointer;font-size:18px;font-weight:850;letter-spacing:.01em;list-style:none;user-select:none}
.create-work-disclosure>summary::-webkit-details-marker{display:none}
.create-work-disclosure>summary::after{content:"+";display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--border);font-size:22px;line-height:1;transition:transform .18s ease,background .18s ease}
.create-work-disclosure[open]>summary::after{content:"−";transform:rotate(180deg);}
.create-work-disclosure>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.create-work-disclosure>.create-work-content{padding:0 18px 18px}
.work-row-actions{display:grid;grid-template-columns:repeat(3,max-content);gap:6px;align-items:center;justify-content:start}
.work-row-actions .btn{min-height:34px;padding:7px 10px;font-size:12px;white-space:nowrap}
.work-row-actions form{margin:0}

.work-command-main-full{min-width:0;width:100%;margin-top:12px}
.work-tabs{position:sticky;z-index:38;top:76px;display:flex;flex-wrap:nowrap;gap:2px;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;margin:14px 0 18px;padding:7px;border:1px solid var(--border);border-radius:3px;}
.work-tab{position:relative;isolation:isolate;flex:1 0 max-content;min-height:48px;display:flex;align-items:center;justify-content:center;padding:11px 24px 11px 20px;border:1px solid var(--border);border-radius:0!important;clip-path:polygon(0 0,calc(100% - 13px) 0,100% 50%,calc(100% - 13px) 100%,0 100%,13px 50%);text-decoration:none;font-size:13px;font-weight:800;letter-spacing:.035em;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}
.work-tab:first-child{clip-path:polygon(0 0,calc(100% - 13px) 0,100% 50%,calc(100% - 13px) 100%,0 100%)}
.work-tab:hover{}
.work-tab.active{}
.work-tab:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.work-tab-panel{scroll-margin-top:150px}
.economic-heading,.budget-section-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.economic-heading h2,.budget-section-header h2{margin:0}
.economic-updated{white-space:nowrap}
.budget-section-header{justify-content:flex-start;margin-bottom:14px}
.budget-section-header .actions{margin-left:4px}
.budget-section-header .btn{min-height:40px}

.budget-actions-strip{gap:9px!important;padding:11px 12px!important;border-radius:8px!important}
.budget-actions-strip .btn,.budget-actions-strip .icon-btn{min-height:40px!important;display:inline-flex;align-items:center;justify-content:center;padding:9px 13px!important;font-size:13px!important;line-height:1.15!important;border-radius:6px!important}
.budget-actions-strip .actions-label{font-size:11px!important;margin-right:6px!important}
.budget-actions-strip .pdf-actions{display:inline-flex;flex-wrap:wrap;gap:7px}
.budget-actions-strip .pdf-btn{}
.budget-actions-strip .danger{margin-left:2px}

.budget-detail-card{width:97vw!important;max-width:none!important;height:94vh;max-height:94vh!important;display:flex;flex-direction:column;overflow:hidden;padding:16px!important}
.budget-detail-card>.modal-header{position:sticky;top:0;z-index:3;flex:0 0 auto;margin:0 0 10px;padding:2px 2px 12px;border-bottom:1px solid var(--border)}
.budget-detail-table-wrap{flex:1 1 auto;min-height:0;overflow:auto;border:1px solid var(--border);border-radius:7px}
.budget-detail-table{width:100%;table-layout:fixed;font-size:12px}
.budget-detail-table thead{position:sticky;top:0;z-index:2;}
.budget-detail-table th,.budget-detail-table td{padding:8px 7px;vertical-align:middle}
.budget-detail-table th:nth-child(1){width:19%}.budget-detail-table th:nth-child(2){width:7%}.budget-detail-table th:nth-child(3),.budget-detail-table th:nth-child(4){width:8%}.budget-detail-table th:nth-child(5),.budget-detail-table th:nth-child(7){width:9%}.budget-detail-table th:nth-child(6){width:6%}.budget-detail-table th:nth-child(8),.budget-detail-table th:nth-child(9){width:8%}.budget-detail-table th:nth-child(10){width:10%}.budget-detail-table th:nth-child(11){width:8%}
.budget-detail-table td:first-child{overflow-wrap:anywhere;line-height:1.3}
.budget-detail-table .progress{min-width:54px;height:7px}
.budget-detail-table .conclude-form .btn{min-height:32px;padding:6px 8px;font-size:11px}

.zone-config-modal{padding:6px!important}
.zone-config-card{width:calc(100vw - 12px)!important;max-width:none!important;height:calc(100vh - 12px);max-height:calc(100vh - 12px)!important;display:flex;flex-direction:column;overflow:hidden;padding:10px 12px!important;border-radius:10px!important}
.zone-config-card>.modal-header{flex:0 0 auto;min-height:44px;margin:0 0 6px;padding:0 0 7px;top:0}
.zone-config-card>.modal-header h2{margin:0;font-size:20px;line-height:1.2}
.zone-config-card>.modal-header .btn{min-height:34px;padding:6px 10px}
.zone-config-form{display:flex;flex-direction:column;min-height:0;flex:1}
.zone-config-list{overflow:auto;min-height:0;padding-right:3px}
.zone-phase-accordion{margin:5px 0;border:1px solid var(--border);border-radius:8px;overflow:hidden}
.zone-phase-accordion>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:50px;padding:8px 11px;cursor:pointer;list-style:none;}
.zone-phase-accordion>summary::-webkit-details-marker{display:none}
.zone-phase-accordion>summary::before{content:"+";flex:0 0 27px;display:grid;place-items:center;width:27px;height:27px;border:1px solid var(--border);font-weight:900}
.zone-phase-accordion[open]>summary::before{content:"−"}
.zone-phase-accordion>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.zone-phase-summary-main{display:flex;flex-direction:column;gap:4px;min-width:0;margin-right:auto}
.zone-phase-summary-main strong{font-size:15px;white-space:normal;overflow-wrap:anywhere}
.zone-phase-summary-main span{font-size:12px;}
.zone-phase-summary-meta{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.warning-badge{}
.zone-phase-body{padding:9px 10px}
.zone-progress-line{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:9px}
.zone-progress-line>div{padding:6px 8px;border:1px solid var(--border);}
.zone-progress-line span{display:block;margin-bottom:4px;font-size:10px;letter-spacing:.06em;text-transform:uppercase;}
.zone-progress-line strong{font-size:13px}
.zone-progress{height:7px;margin-bottom:13px}
.zone-lines{display:flex!important;flex-direction:column;gap:8px!important}
.zone-line{display:grid!important;grid-template-columns:minmax(250px,1.5fr) minmax(210px,.8fr) auto!important;gap:10px;align-items:end;padding:10px;border:1px solid var(--border);border-radius:6px;}
.zone-line label{display:block;margin-bottom:5px;font-size:11px;font-weight:750}
.zone-line input{width:100%;min-height:38px}
.zone-quantity-control{display:flex;align-items:center;gap:7px}
.zone-quantity-control span{white-space:nowrap;font-size:11px}
.zone-line-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-height:38px}
.zone-protected{padding:5px 7px;border:1px solid var(--border);font-size:10px;text-transform:uppercase;letter-spacing:.05em}
.remove-zone:disabled{opacity:.4;cursor:not-allowed}
.zone-validation-message{min-height:20px;margin-top:9px;font-size:12px;font-weight:700}
.zone-validation-message.valid{}.zone-validation-message.invalid{}
.zone-save-actions{flex:0 0 auto;margin-top:6px!important;padding-top:7px;border-top:1px solid var(--border)}

.invoice-name-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end;margin:12px 0;padding:11px;border:1px solid var(--border);border-radius:7px;}
.invoice-name-form label{display:block;margin-bottom:5px}.invoice-name-form input{width:100%}.invoice-name-form small{grid-column:1/-1}

.economic-heading{margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}
.economic-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:9px;margin-top:13px}
.economic-kpi{min-height:94px;padding:12px;border:1px solid var(--border);border-radius:7px;}
.economic-kpi>span{display:block;min-height:30px;font-size:10px;line-height:1.35;letter-spacing:.07em;text-transform:uppercase;}
.economic-kpi>strong{display:block;font-size:18px;line-height:1.25;overflow-wrap:anywhere}
.economic-kpi .progress{height:6px;margin-top:9px}
.economic-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.economic-detail{border:1px solid var(--border);border-radius:7px;overflow:hidden}
.economic-detail>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:10px 12px;cursor:pointer;font-weight:800;list-style:none}
.economic-detail>summary::-webkit-details-marker{display:none}.economic-detail>summary::before{content:"+";font-size:18px}.economic-detail[open]>summary::before{content:"−"}
.economic-detail>summary>span{margin-left:auto;padding:3px 7px;border:1px solid var(--border);font-size:11px;}
.economic-detail>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.economic-detail>.table-wrap{max-height:360px;overflow:auto;border-top:1px solid var(--border)}
.compact-table{font-size:12px}.compact-table th,.compact-table td{padding:8px}
.economic-data-quality{margin-top:13px;padding:12px 14px;border:1px solid var(--border);border-radius:7px;}
.economic-data-quality h3{margin:0 0 7px;font-size:14px}.economic-data-quality ul{margin:0;padding-left:20px;}

@media (max-width:1280px){
  .economic-kpi-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}
  .work-tab{padding-inline:18px;font-size:12px}
}
@media (max-width:1024px){
  .work-tabs{top:68px}
  .economic-kpi-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}
  .economic-detail-grid{grid-template-columns:1fr}
  .budget-detail-card{width:98vw!important;height:95vh;max-height:95vh!important}
  .budget-detail-table{min-width:1080px;table-layout:auto}
  .zone-progress-line{grid-template-columns:1fr}
}
@media (max-width:760px){
  .work-row-actions{grid-template-columns:1fr;align-items:stretch}.work-row-actions .btn,.work-row-actions form,.work-row-actions button{width:100%}
  .work-tabs{position:sticky;top:58px;margin-inline:-4px;padding:5px}.work-tab{flex:0 0 auto;min-height:44px;padding:9px 18px;font-size:11px}
  .budget-section-header{align-items:flex-start}.budget-section-header .actions{width:100%;margin-left:0}.budget-section-header .actions .btn{flex:1}
  .budget-actions-strip{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.budget-actions-strip .actions-label{grid-column:1/-1}.budget-actions-strip form,.budget-actions-strip .btn,.budget-actions-strip .pdf-actions{width:100%}.budget-actions-strip form .btn{width:100%}.budget-actions-strip .pdf-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}
  .economic-kpi-grid{grid-template-columns:1fr}.economic-kpi{min-height:82px}.economic-detail-grid{grid-template-columns:1fr}
  .zone-config-modal{padding:0!important}.zone-config-card{width:100vw!important;height:100vh;max-height:100vh!important;border-radius:0!important;padding:8px!important}.zone-phase-accordion>summary{align-items:flex-start;flex-wrap:wrap}.zone-phase-summary-meta{width:100%;justify-content:flex-start;padding-left:42px}.zone-line{grid-template-columns:1fr!important}.zone-line-actions{justify-content:space-between}.invoice-name-form{grid-template-columns:1fr}.invoice-name-form .btn{width:100%}
  .budget-detail-card{width:100vw!important;height:100vh;max-height:100vh!important;border-radius:0!important;padding:10px!important}.budget-detail-table-wrap{overflow:auto}.budget-detail-table{min-width:1030px}
}
@media (max-width:430px){
  .budget-actions-strip{grid-template-columns:1fr}.budget-actions-strip .pdf-actions{grid-template-columns:1fr}.economic-heading{align-items:flex-start}.economic-updated{white-space:normal}
}

/* VESMAR 2026.07.20-obras.2: ajustes visuales seguros, panel principal y jerarquía económica. */
:root{--user-primary:var(--accent);--user-success:#42d17b;--user-warning:#ffbb48;--user-background:#0b0c0f;--user-panel:rgba(27,29,34,.95);--user-border:var(--border);--user-radius:22px;--user-panel-blur:8px;--user-panel-gap:18px;--user-button-height:44px;--user-max-width:1240px;--user-line-height:1.5;--user-heading-scale:1;--user-secondary-opacity:.78;--user-animation-scale:1}
body{font-family:var(--user-font-family,Inter,Arial,sans-serif);line-height:var(--user-line-height);}
.layout{max-width:var(--user-max-width)}
.grid,.form-grid,.economic-kpi-grid,.economic-detail-grid{gap:var(--user-panel-gap)}
.panel,.card,.modal-card,.vesmar-theme-toolbar,.global-side-menu{border-radius:var(--user-radius);}
.panel,.card,.modal-card{}
.btn,button.btn,a.btn{min-height:var(--user-button-height);border-radius:calc(var(--user-radius)*.64)}
h1{font-size:calc(2em*var(--user-heading-scale))}h2{font-size:calc(1.5em*var(--user-heading-scale))}h3{font-size:calc(1.17em*var(--user-heading-scale))}.muted{opacity:var(--user-secondary-opacity)}
body.vesmar-animations-off *,body.vesmar-animations-off *::before,body.vesmar-animations-off *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
body.vesmar-background-off .vesmar-interactive-bg{display:none!important}
body.table-density-compact .table th,body.table-density-compact .table td{padding:7px 8px}body.table-density-comfortable .table th,body.table-density-comfortable .table td{padding:17px 15px}
.toolbar-advanced{border:1px solid var(--border);border-radius:10px;padding:8px 10px;font-weight:800;cursor:pointer;font-size:12px;line-height:1}
.visual-settings-overlay{position:fixed;inset:0;z-index:2000;display:none;align-items:stretch;justify-content:flex-end;}.visual-settings-overlay.open{display:flex}.visual-settings-open{overflow:hidden}
.visual-settings-panel{width:min(760px,100vw);height:100dvh;display:flex;flex-direction:column;border-left:1px solid var(--border);}
.visual-settings-header,.visual-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px;border-bottom:1px solid var(--border)}.visual-settings-header h2{margin:0}.visual-settings-header p{margin:5px 0 0;}.visual-settings-close{width:42px;height:42px;border:1px solid var(--border);font-size:26px;cursor:pointer}.visual-settings-body{padding:18px;overflow:auto;flex:1}.visual-settings-footer{border-top:1px solid var(--border);border-bottom:0;flex-wrap:wrap}
.visual-profile-manager{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:14px;border:1px solid var(--border);border-radius:14px;}.visual-profile-manager label{margin-top:0}.visual-profile-status{grid-column:1/-1;display:flex;gap:8px;align-items:center}.visual-profile-actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:7px}.visual-profile-actions .btn{padding:8px 11px;font-size:12px;min-height:38px}
.visual-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.visual-settings-grid fieldset{min-width:0;border:1px solid var(--border);border-radius:14px;padding:13px}.visual-settings-grid legend{padding:0 7px;font-weight:850}.visual-settings-grid label{font-size:12px}.visual-settings-grid input[type=color]{height:40px;padding:4px}.switchline{display:flex!important;align-items:center;gap:8px}.switchline input{width:auto}
.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}.dashboard-grid>.panel{display:flex;flex-direction:column;min-height:190px}.dashboard-grid>.panel .btn{margin-top:auto;align-self:flex-start}
.works-visual-layout{padding-top:86px}.works-hero-compact{justify-content:flex-start!important;align-items:center!important;gap:12px!important;margin:0 0 8px!important;padding:0!important;min-height:44px!important}.works-hero-compact .actions{margin:0}.works-hero-compact .btn{min-height:36px;padding:7px 12px}.works-hero-compact h1{font-size:26px}
.create-work-disclosure{margin-top:4px}.create-work-disclosure>summary{min-height:42px;padding:8px 12px;font-size:15px}.create-work-disclosure>summary::after{width:27px;height:27px;font-size:18px}.create-work-disclosure>.create-work-content{padding:0 12px 12px}.create-work-disclosure .form-grid{gap:9px}.create-work-disclosure label{margin:8px 0 4px;font-size:12px}.create-work-disclosure input,.create-work-disclosure select{padding:9px 10px;border-radius:9px;font-size:13px}
.budget-actions-strip .btn,.budget-actions-strip button{text-transform:uppercase}
.economic-detail-grid{grid-template-columns:1fr!important}
.economic-kpi-grid.economic-hierarchy{display:flex;flex-direction:column;gap:14px}.economic-group{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px}.economic-group-title{grid-column:1/-1;margin:0;font-size:12px;letter-spacing:.1em;text-transform:uppercase;}.economic-kpi.is-primary{min-height:122px}.economic-kpi.is-primary>strong{font-size:28px}.economic-kpi.is-income{}.economic-kpi.is-income>strong,.economic-kpi.is-positive>strong{}.economic-kpi.is-expense{}.economic-kpi.is-expense>strong,.economic-kpi.is-negative>strong{}.economic-kpi.is-warning{}.economic-kpi.is-warning>strong{}
.delivery-image-status{display:flex;flex-direction:column;gap:6px;min-width:120px}.delivery-image-status .badge{align-self:flex-start}.delivery-image-actions{display:flex;gap:6px;flex-wrap:wrap}.delivery-image-actions .btn{min-height:32px;padding:6px 8px;font-size:10px}
@media(max-width:1024px){.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.economic-group{grid-template-columns:repeat(2,minmax(160px,1fr))}.visual-settings-grid{grid-template-columns:1fr}}
@media(max-width:720px){.dashboard-grid{grid-template-columns:1fr}.visual-profile-manager{grid-template-columns:1fr}.visual-profile-status,.visual-profile-actions{grid-column:1}.visual-settings-panel{width:100vw}.works-visual-layout{padding-top:98px}.works-hero-compact{flex-direction:row!important}.economic-group{grid-template-columns:1fr}}
.economic-kpi .kpi-indicator{display:block;margin:-20px 0 7px;font-size:9px;letter-spacing:.08em;text-align:right}.economic-kpi.is-income .kpi-indicator,.economic-kpi.is-positive .kpi-indicator{}.economic-kpi.is-expense .kpi-indicator,.economic-kpi.is-negative .kpi-indicator{}.economic-kpi.is-warning .kpi-indicator{}

/* Cobertura física de anticipos */
.advance-covered-row td{}
.coverage-badge{display:block;width:max-content;margin-top:.35rem;padding:.18rem .45rem;border:1px solid var(--border);border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.04em;}

/* VESMAR 2026.07.21-economia.008: compras por obra, cobros y dashboard profesional. */
.dashboard-grid-professional{gap:16px}
.dashboard-card{position:relative;isolation:isolate;overflow:hidden;min-height:210px!important;border-radius:0!important;padding:22px!important;border:1px solid var(--border)!important;}
.dashboard-card::before{content:"";position:absolute;inset:0;z-index:-2;background-repeat:no-repeat;background-position:right 16px center;background-size:auto 82%;opacity:.16}
.dashboard-card::after{content:"";position:absolute;inset:0;z-index:-1;}
.dashboard-card--works{--dashboard-image:url('../img/dashboard/works.svg')}.dashboard-card--projects{--dashboard-image:url('../img/dashboard/internal.svg')}.dashboard-card--internal{--dashboard-image:url('../img/dashboard/internal.svg')}.dashboard-card--economics{--dashboard-image:url('../img/dashboard/economics.svg')}.dashboard-card--workers{--dashboard-image:url('../img/dashboard/workers.svg')}.dashboard-card--incidents{--dashboard-image:url('../img/dashboard/incidents.svg')}.dashboard-card--map{--dashboard-image:url('../img/dashboard/map.svg')}.dashboard-card--account{--dashboard-image:url('../img/dashboard/account.svg')}.dashboard-card--security{--dashboard-image:url('../img/dashboard/security.svg')}.dashboard-card--data{--dashboard-image:url('../img/dashboard/data.svg')}
.dashboard-card-copy{position:relative;max-width:78%}.dashboard-card h2{margin:0 0 4px;line-height:1.12}.dashboard-card p{margin:0;line-height:1.35}.dashboard-card .dashboard-open{width:100%;align-self:stretch!important;justify-content:center;margin-top:auto;border-radius:0!important;min-height:46px}.dashboard-card .dashboard-open:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.purchase-work-panel{scroll-margin-top:140px}.purchase-panel-heading{align-items:flex-start}.purchase-create-disclosure,.purchase-card{border:1px solid var(--border);}.purchase-create-disclosure{margin:14px 0 18px}.purchase-create-disclosure>summary{cursor:pointer;padding:14px 16px;font-weight:850;list-style:none}.purchase-create-disclosure>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.purchase-invoice-form{padding:0 16px 16px}.purchase-header-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.purchase-wide-field{grid-column:span 3}.purchase-lines{display:flex;flex-direction:column;gap:9px;margin:14px 0}.purchase-line{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(180px,1.3fr) minmax(100px,.55fr) minmax(120px,.7fr) minmax(130px,.7fr) auto;gap:9px;align-items:end;border-radius:0!important;padding:11px!important;margin:0!important}.purchase-line-calculation{display:flex;flex-direction:column;gap:3px}.purchase-line-calculation strong{font-size:14px}.purchase-line-calculation small{}.purchase-remove-line{min-height:39px}.purchase-form-footer{display:flex;align-items:center;gap:12px;justify-content:space-between;flex-wrap:wrap}.purchase-form-totals{display:flex;gap:14px;flex-wrap:wrap;margin-left:auto}.purchase-form-totals span{display:flex;gap:5px;}.purchase-form-totals strong{}.purchase-list{display:grid;gap:12px}.purchase-card{padding:15px}.purchase-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.purchase-card-head h3{margin:0 0 4px}.purchase-card-meta,.purchase-card-totals{display:flex;gap:8px;flex-wrap:wrap}.purchase-card-totals{justify-content:flex-end}.purchase-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.purchase-check{display:flex;align-items:center;gap:7px}.purchase-check input{width:auto}.invoice-payment-table{min-width:1350px}.invoice-payment-actions{min-width:210px;align-items:stretch}.payment-paid{}.payment-pending{}.invoice-payment-summary{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:8px;margin:10px 0;padding:10px;border:1px solid var(--border);}.invoice-payment-summary div{min-width:0}.invoice-payment-summary span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;}.invoice-payment-summary strong{font-size:14px}.invoice-payment-summary form{align-self:end}
@media(max-width:1024px){.purchase-header-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.purchase-wide-field{grid-column:span 2}.purchase-line{grid-template-columns:repeat(2,minmax(0,1fr))}.purchase-concept,.purchase-description{grid-column:span 2}.invoice-payment-summary{grid-template-columns:repeat(3,minmax(120px,1fr))}}
@media(max-width:720px){.dashboard-card-copy{max-width:100%}.dashboard-card::before{background-position:right -20px center;opacity:.1}.purchase-header-grid,.purchase-line{grid-template-columns:1fr}.purchase-wide-field,.purchase-concept,.purchase-description{grid-column:1}.purchase-form-footer>*{width:100%}.purchase-form-totals{margin-left:0;justify-content:space-between}.purchase-card-head{flex-direction:column}.purchase-card-totals{justify-content:flex-start}.invoice-payment-summary{grid-template-columns:1fr 1fr}}

/* Control económico canónico 008 */
body.eco-body{overflow-x:hidden}.eco-stage{position:relative;z-index:1;min-height:100vh;padding:86px 24px 30px;max-width:1800px;margin:0 auto}.eco-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}.eco-title h1{margin:0;font-size:38px;letter-spacing:-.035em}.eco-title p{margin:5px 0 0;}.eco-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.eco-period-filter{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:12px;margin-bottom:14px;border:1px solid var(--border);}.eco-period-filter label{display:grid;gap:5px;font-size:11px;}.eco-period-filter input{min-width:150px}.eco-period-filter small{flex:1 1 260px;}
.eco-kpis{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px}.eco-kpi{position:relative;overflow:hidden;min-height:112px;padding:14px;border:1px solid var(--border);border-radius:8px;}.eco-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;}.eco-kpi b{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;}.eco-kpi small{display:block;margin-top:4px;}.eco-kpi strong{display:block;margin-top:12px;font-size:21px;line-height:1.1}.eco-tone-green{--eco-tone:#42d17b}.eco-tone-blue{--eco-tone:#5dacfF}.eco-tone-orange{--eco-tone:#ffbb48}.eco-tone-red{--eco-tone:#ff6b6b}.eco-tone-gray{--eco-tone:#8d96a5}.eco-tone-green strong,.eco-value-positive{}.eco-tone-blue strong{}.eco-tone-orange strong,.eco-value-warning{}.eco-tone-red strong,.eco-value-negative{}
.eco-grid{display:grid;gap:16px;margin-top:16px}.eco-card{border:1px solid var(--border);border-radius:10px;padding:16px;}.eco-card h2{margin:0 0 10px}.eco-radar{padding:0}.eco-radar>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none;padding:16px}.eco-radar>summary::-webkit-details-marker{display:none}.eco-radar>summary span:first-child{display:flex;flex-direction:column;gap:3px}.eco-radar>summary small{font-weight:400}.eco-radar>summary::after{content:"+";display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--border);font-size:20px}.eco-radar[open]>summary::after{content:"−"}.eco-radar>summary:focus-visible,.eco-work-row>summary:focus-visible,.fixed-expense-create>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.eco-radar-body{padding:0 12px 12px}
.eco-work-row{border-top:1px solid var(--border)}.eco-work-row>summary{display:grid;grid-template-columns:minmax(240px,1.4fr) repeat(4,minmax(125px,.75fr)) auto;gap:8px;align-items:center;cursor:pointer;list-style:none;padding:10px 6px}.eco-work-row>summary::-webkit-details-marker{display:none}.eco-work-row>summary>span{min-width:0}.eco-work-row>summary small{display:block;margin-bottom:2px;font-size:10px;text-transform:uppercase;letter-spacing:.05em}.eco-work-row>summary strong{font-size:13px;overflow-wrap:anywhere}.eco-work-name strong{font-size:15px!important}.eco-work-name small{text-transform:none!important;letter-spacing:0!important}.eco-expand-label{padding:7px 9px;border:1px solid var(--border);font-size:11px}.eco-work-row[open] .eco-expand-label{}.eco-work-detail{padding:4px 6px 14px}.eco-compact-indicators{display:grid;grid-template-columns:repeat(8,minmax(110px,1fr));gap:6px}.eco-compact-indicators>div{min-height:58px;padding:8px;border:1px solid var(--border);}.eco-compact-indicators small{display:block;margin-bottom:4px;font-size:9px;text-transform:uppercase}.eco-compact-indicators strong{font-size:13px}.eco-compact-indicators .btn{width:100%;min-height:38px;padding:6px}.eco-work-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.eco-work-summary-grid section{padding:10px;border:1px solid var(--border);}.eco-work-summary-grid h3{margin:0 0 7px;font-size:13px}.eco-work-summary-grid dl{margin:0}.eco-work-summary-grid dl>div{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-top:1px solid var(--border);font-size:11px}.eco-work-summary-grid dt{}.eco-work-summary-grid dd{margin:0;text-align:right;font-weight:750}
.eco-section-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.eco-section-heading h2{margin:0 0 4px}.eco-section-heading p{margin:0;}.eco-section-heading>strong{font-size:24px}.fixed-expenses-panel{scroll-margin-top:90px}.fixed-expense-create{margin:14px 0;border:1px solid var(--border)}.fixed-expense-create>summary{cursor:pointer;padding:12px;font-weight:850;list-style:none}.fixed-expense-form{padding:0 12px 12px}.fixed-expense-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:12px}.fixed-expense-grid label{display:grid;gap:5px;font-size:11px}.fixed-wide{grid-column:span 2}.fixed-checkbox{display:flex!important;align-items:center;gap:8px}.fixed-checkbox input{width:auto}.fixed-filters{display:grid;grid-template-columns:2fr repeat(3,minmax(140px,1fr)) auto;gap:8px;align-items:end;margin:12px 0}.fixed-filters label{display:grid;gap:4px;font-size:10px;}.fixed-expense-table{min-width:1250px}.fixed-actions{display:flex;gap:5px;flex-wrap:wrap}.fixed-actions .btn{min-height:34px;padding:6px 8px;font-size:10px}.fixed-expense-modal{width:min(1200px,96vw)!important;max-width:none!important;max-height:92vh;overflow:auto}
.eco-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0 12px}.eco-tabs button{min-height:38px;padding:8px 11px;border:1px solid var(--border);cursor:pointer}.eco-tabs button.active{}.eco-tab-panel{display:none}.eco-tab-panel.active{display:block}.eco-table{width:100%;border-collapse:collapse;font-size:11px}.eco-table th,.eco-table td{padding:8px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.eco-table th{font-size:9px;text-transform:uppercase;letter-spacing:.06em}.audit-filters{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr)) auto;gap:8px;align-items:end;margin-bottom:10px}.audit-filters label{display:grid;gap:4px;font-size:10px;}
@media(max-width:1450px){.eco-kpis{grid-template-columns:repeat(4,minmax(150px,1fr))}.eco-compact-indicators{grid-template-columns:repeat(4,minmax(110px,1fr))}}
@media(max-width:1050px){.eco-stage{padding-inline:14px}.eco-hero{flex-direction:column}.eco-actions{justify-content:flex-start}.eco-kpis{grid-template-columns:repeat(3,minmax(140px,1fr))}.eco-work-row>summary{grid-template-columns:minmax(220px,1.2fr) repeat(2,minmax(120px,.7fr))}.eco-work-row>summary>span:nth-child(4),.eco-work-row>summary>span:nth-child(5){display:none}.eco-work-summary-grid{grid-template-columns:1fr}.fixed-expense-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fixed-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.audit-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.eco-stage{padding:76px 8px 20px}.eco-title h1{font-size:29px}.eco-actions,.eco-actions>*{width:100%}.eco-actions .btn,.eco-actions form .btn{width:100%}.eco-period-filter>*{width:100%}.eco-kpis{grid-template-columns:1fr 1fr}.eco-kpi{min-height:95px;padding:12px}.eco-kpi strong{font-size:17px}.eco-radar>summary{align-items:flex-start}.eco-radar>summary>span:nth-child(2){display:none}.eco-work-row>summary{grid-template-columns:1fr auto}.eco-work-row>summary>span:not(.eco-work-name):not(.eco-expand-label){display:none}.eco-compact-indicators{grid-template-columns:1fr 1fr}.fixed-expense-grid,.fixed-filters,.audit-filters{grid-template-columns:1fr}.fixed-wide{grid-column:1}.eco-section-heading{flex-direction:column}.eco-section-heading>strong{font-size:20px}}

/* Actualización 009: Compras paginadas, coste de horas, herramientas y resumen de facturación */
.purchase-create-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:14px}.purchase-create-disclosure>summary small{font-weight:600}.purchase-lines-heading,.purchase-list-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.purchase-lines-heading{margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--border)}.purchase-lines-heading h3,.purchase-list-heading h3{margin:0}.purchase-lines-heading p,.purchase-list-heading p{margin:4px 0 0}.purchase-list-heading{margin:20px 0 10px}.purchase-invoice-disclosure{border:1px solid var(--border);}.purchase-invoice-disclosure>summary{display:grid;grid-template-columns:150px minmax(220px,1.5fr) 90px minmax(150px,.8fr) 180px;gap:14px;align-items:center;padding:15px 16px;cursor:pointer;list-style:none}.purchase-invoice-disclosure>summary::-webkit-details-marker{display:none}.purchase-invoice-disclosure>summary:hover{}.purchase-invoice-disclosure>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.purchase-invoice-disclosure>summary span{min-width:0}.purchase-invoice-disclosure>summary small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}.purchase-invoice-disclosure>summary strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.purchase-invoice-disclosure>summary em{display:block;font-size:12px;font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}.purchase-summary-total{text-align:right}.purchase-summary-total strong{font-size:18px;}.purchase-summary-lines{text-align:center}.purchase-invoice-detail{padding:16px;border-top:1px solid var(--border);}.purchase-detail-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.purchase-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;flex:1}.purchase-meta-grid span{padding:10px;border:1px solid var(--border);}.purchase-meta-grid small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em}.purchase-meta-grid strong{display:block;margin-top:4px}.purchase-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.purchase-actions form{margin:0}.purchase-notes{margin:12px 0;padding:10px 12px;border-left:3px solid var(--accent);}.purchase-pagination{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:16px}.purchase-pagination.compact{margin:0}.worker-hour-entry-grid{grid-template-columns:1.25fr .8fr .65fr .8fr .8fr 1.4fr}.worker-cost-preview{display:flex;align-items:center;min-height:43px;padding:0 12px;border:1px solid var(--border);font-weight:900;}.tools-create-form{margin-top:14px;padding:16px;border:1px solid var(--border);}.tools-general-list{display:grid;gap:9px}.tool-record,.tool-work-group{border:1px solid var(--border);}.tool-record>summary{display:grid;grid-template-columns:140px minmax(220px,1fr) minmax(180px,1fr) minmax(180px,1fr);gap:12px;padding:13px 15px;cursor:pointer;list-style:none}.tool-record>summary::-webkit-details-marker,.tool-work-group>summary::-webkit-details-marker{display:none}.tool-record>summary small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em}.tool-record>summary strong{display:block;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-edit-form{padding:15px;border-top:1px solid var(--border)}.tool-record-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:12px}.tool-delete-form{padding:0 15px 15px;display:flex;justify-content:flex-end}.tools-by-work{padding-top:14px;border-top:1px solid var(--border)}.tool-work-group{margin-top:8px}.tool-work-group>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;cursor:pointer}.tool-work-group>summary strong,.tool-work-group>summary small{display:block}.tool-work-group>summary small{margin-top:3px}.work-billing-overview{width:min(1380px,96vw)}.billing-summary-sections{display:grid;gap:14px}.billing-summary-sections section{padding:14px;border:1px solid var(--border);}.billing-summary-sections h3{margin:0 0 10px}.work-progress-overview{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.work-progress-overview>div{padding:14px;border:1px solid var(--border);}.progress-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.work-progress-overview small{display:block;margin-top:7px}.billing-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
@media(max-width:1100px){.purchase-invoice-disclosure>summary{grid-template-columns:130px minmax(210px,1fr) 80px 150px}.purchase-summary-file{display:none}.purchase-meta-grid{grid-template-columns:repeat(2,minmax(130px,1fr))}.worker-hour-entry-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.tool-record>summary{grid-template-columns:130px 1fr 1fr}.tool-record>summary span:last-child{grid-column:2/4}.work-progress-overview{grid-template-columns:1fr}}
@media(max-width:720px){.purchase-create-disclosure>summary,.purchase-lines-heading,.purchase-list-heading{align-items:flex-start;flex-direction:column}.purchase-invoice-disclosure>summary{grid-template-columns:1fr 110px}.purchase-summary-date,.purchase-summary-title{grid-column:1}.purchase-summary-lines,.purchase-summary-total{grid-column:2}.purchase-summary-file{display:none}.purchase-meta-grid{grid-template-columns:1fr}.purchase-actions{width:100%}.purchase-actions .btn,.purchase-actions form,.purchase-actions form .btn{width:100%}.worker-hour-entry-grid{grid-template-columns:1fr}.tool-record>summary{grid-template-columns:1fr}.tool-record>summary span:last-child{grid-column:auto}.tool-work-group>summary{align-items:flex-start;flex-direction:column}}

/* Actualización 011: jerarquía económica, albaranes de horas y PDF de imágenes */
.eco-actions{display:grid;grid-template-columns:repeat(5,minmax(142px,1fr));align-items:stretch;gap:9px;min-width:min(820px,100%)}
.eco-actions>*{min-width:0;margin:0!important}
.eco-actions form{display:flex}
.eco-actions .btn,.eco-actions form .btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:10px 14px!important;border:1px solid var(--border)!important;border-radius:0!important;font-size:12px!important;font-weight:900!important;line-height:1.15!important;text-align:center;letter-spacing:.02em;}
.eco-actions .btn:hover,.eco-actions .btn:focus-visible,.eco-actions form .btn:hover,.eco-actions form .btn:focus-visible{transform:translateY(-1px)}
.eco-actions .btn:active,.eco-actions form .btn:active{transform:none}

.eco-financial-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(330px,.92fr);gap:16px;align-items:stretch;margin:16px 0 12px}
.eco-financial-block{position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:430px;padding:20px;border:1px solid var(--border);border-radius:0;}
.eco-financial-block::before{content:"";position:absolute;inset:0 0 auto;height:4px;}
.eco-income-block{--eco-block-color:#5dacfF}.eco-expense-block{--eco-block-color:#ff6b6b}.eco-benefit-block{--eco-block-color:#42d17b}.eco-benefit-negative{--eco-block-color:#ff6b6b}
.eco-financial-block>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:15px;border-bottom:1px solid var(--border)}
.eco-financial-block h2{margin:2px 0 0;font-size:25px;line-height:1}.eco-block-kicker{display:block;font-size:9px;font-weight:850;letter-spacing:.14em}.eco-status-chip{padding:6px 8px;border:1px solid currentColor;font-size:9px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.eco-status-blue{}.eco-status-red{}.eco-status-green{}
.eco-block-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:126px;padding:18px 0}.eco-block-hero>div:first-child{min-width:0}.eco-block-hero small,.eco-benefit-main small{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.07em}.eco-block-hero strong,.eco-benefit-main>div>strong{display:block;margin-top:7px;font-size:31px;line-height:1;letter-spacing:-.035em;overflow-wrap:anywhere}.eco-block-hero span,.eco-benefit-main span{display:block;margin-top:7px;font-size:11px}.eco-expense-hero{min-height:108px}
.eco-donut{--eco-angle:0deg;position:relative;flex:0 0 94px;width:94px;height:94px;display:grid;place-content:center;text-align:center;border-radius:50%;}.eco-donut::after{content:"";position:absolute;inset:10px;border-radius:50%;}.eco-donut span,.eco-donut small{position:relative;z-index:1;margin:0}.eco-donut span{font-size:19px;font-weight:900}.eco-donut small{font-size:8px;text-transform:uppercase;}.eco-donut-blue{--eco-donut-color:#5dacfF}
.eco-major-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.eco-major-metrics>div{min-width:0;padding:10px;border:1px solid var(--border);}.eco-major-metrics small{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.05em}.eco-major-metrics strong{display:block;margin-top:6px;font-size:14px;overflow-wrap:anywhere}
.eco-progress-list{display:grid;gap:12px;margin-top:auto;padding-top:17px}.eco-progress-list span{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px;font-size:10px}.eco-progress-list b{}.eco-linear{height:7px;overflow:hidden}.eco-linear i{display:block;height:100%;max-width:100%;}.eco-linear-green i{}
.eco-expense-composition{display:flex;height:16px;margin:3px 0 10px;overflow:hidden}.eco-expense-composition span{display:block;height:100%}.eco-expense-direct{}.eco-expense-fixed{}.eco-expense-legend{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:16px}.eco-expense-legend span{display:flex;align-items:center;gap:6px;font-size:10px}.eco-expense-legend i{width:8px;height:8px}.eco-expense-legend i.direct{}.eco-expense-legend i.fixed{}.eco-expense-legend b{}
.eco-horizontal-bars{display:grid;gap:11px;margin-top:auto}.eco-horizontal-bars>div>span{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px;font-size:10px}.eco-horizontal-bars>div>span b{text-align:right}.eco-horizontal-bars>div>i{display:block;height:8px;overflow:hidden}.eco-horizontal-bars em{display:block;height:100%;max-width:100%;}
.eco-benefit-main{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 0 10px}.eco-gauge{--eco-angle:0deg;position:relative;flex:0 0 105px;width:105px;height:58px;overflow:hidden;text-align:center}.eco-gauge::before{content:"";position:absolute;left:4px;right:4px;top:3px;height:96px;border-radius:96px 96px 0 0;}.eco-gauge::after{content:"";position:absolute;left:17px;right:17px;top:16px;height:75px;border-radius:75px 75px 0 0;}.eco-gauge span,.eco-gauge small{position:relative;z-index:1;display:block}.eco-gauge span{margin-top:27px;font-size:17px;font-weight:900}.eco-gauge small{margin-top:0;font-size:8px;text-transform:uppercase;}
.eco-column-chart{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:12px;height:172px;margin:12px 0 15px;padding:13px 11px 9px;border:1px solid var(--border);}.eco-column-chart>div{height:100%;display:grid;grid-template-rows:1fr auto auto;align-items:end;text-align:center;min-width:0}.eco-column-chart i{display:block;width:min(52px,70%);min-height:4px;margin:0 auto;}.eco-column-chart i.expense{}.eco-column-chart i.profit{}.eco-column-chart i.loss{}.eco-column-chart span{margin-top:7px;font-size:9px;text-transform:uppercase}.eco-column-chart b{margin-top:3px;font-size:10px;overflow-wrap:anywhere}.eco-benefit-metrics{margin-top:auto}
.eco-secondary-metrics{display:grid;grid-template-columns:repeat(6,minmax(135px,1fr));gap:8px;margin:0 0 16px}.eco-secondary-metrics>div{min-height:82px;padding:11px 12px;border:1px solid var(--border);border-radius:0;}.eco-secondary-metrics small{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.07em}.eco-secondary-metrics strong{display:block;margin-top:7px;font-size:16px}.eco-secondary-metrics span{display:block;margin-top:4px;font-size:9px}

.delivery-section-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.delivery-section-actions .btn{min-width:158px;justify-content:center}
.delivery-hours-row td{}.delivery-hours-badge{}
.hour-delivery-form{padding-top:4px}.hour-delivery-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--border)}.hour-delivery-heading h3{margin:0}.hour-delivery-heading p{margin:4px 0 0}.hour-delivery-lines{display:grid;gap:10px}.hour-delivery-line{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1.2fr) minmax(105px,.62fr) minmax(125px,.75fr) minmax(92px,.52fr) minmax(105px,.55fr) minmax(115px,.62fr) auto;gap:8px;align-items:end;padding:11px;border:1px solid var(--border);}.hour-delivery-line>div{min-width:0}.hour-delivery-line label{font-size:10px}.hour-delivery-line output{display:flex;align-items:center;min-height:42px;padding:9px 10px;border:1px solid var(--border);font-weight:850}.hour-line-action{display:flex;align-items:end}.hour-line-action .btn{min-height:42px;padding-inline:10px}.hour-delivery-grand-total{display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-top:12px;padding:13px 15px;border:1px solid var(--border);}.hour-delivery-grand-total span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.hour-delivery-grand-total strong{font-size:23px;}
.invoice-delivery-images-btn{}.invoice-delivery-images-btn:hover,.invoice-delivery-images-btn:focus-visible{}

@media(max-width:1400px){.eco-actions{grid-template-columns:repeat(3,minmax(145px,1fr));min-width:min(520px,100%)}.eco-financial-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.eco-benefit-block{grid-column:1/-1;min-height:360px}.eco-benefit-main{max-width:620px}.eco-column-chart{height:150px}.eco-secondary-metrics{grid-template-columns:repeat(3,minmax(135px,1fr))}.hour-delivery-line{grid-template-columns:repeat(4,minmax(120px,1fr))}.hour-description{grid-column:span 2}}
@media(max-width:1050px){.eco-actions{min-width:0;width:100%;grid-template-columns:repeat(3,minmax(130px,1fr))}.eco-financial-overview{grid-template-columns:1fr}.eco-benefit-block{grid-column:auto}.eco-secondary-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.hour-delivery-line{grid-template-columns:repeat(2,minmax(0,1fr))}.hour-description{grid-column:span 2}}
@media(max-width:680px){.eco-actions{grid-template-columns:1fr}.eco-actions>*{width:100%}.eco-financial-block{min-height:auto;padding:15px}.eco-block-hero,.eco-benefit-main{align-items:flex-start}.eco-block-hero strong,.eco-benefit-main>div>strong{font-size:25px}.eco-major-metrics{grid-template-columns:1fr}.eco-secondary-metrics{grid-template-columns:1fr 1fr}.eco-donut{flex-basis:82px;width:82px;height:82px}.eco-column-chart{height:145px;gap:6px}.eco-column-chart b{font-size:8px}.delivery-section-actions{width:100%}.delivery-section-actions .btn{width:100%}.hour-delivery-heading{flex-direction:column}.hour-delivery-heading .btn{width:100%}.hour-delivery-line{grid-template-columns:1fr}.hour-description{grid-column:auto}.hour-line-action .btn{width:100%}.hour-delivery-grand-total{justify-content:space-between;align-items:flex-end}.hour-delivery-grand-total strong{font-size:20px}}
.delivery-upload-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.delivery-upload-actions .btn{min-width:158px;justify-content:center}
.delivery-images-pdf-btn{}.delivery-images-pdf-btn:hover,.delivery-images-pdf-btn:focus-visible{}
@media(max-width:680px){.delivery-upload-actions{width:100%}.delivery-upload-actions .btn{width:100%}}

/* Ajustes visuales solicitados · 2026-07-22 */
/* La navegación de la obra forma parte del flujo normal y nunca invade los modales. */
.work-tabs{
  position:static!important;
  top:auto!important;
  z-index:auto!important;
  margin-top:0!important;
}
.modal{z-index:1000!important}

/* Reserva una franja limpia bajo el botón del menú en todas las cabeceras principales. */
.layout,.eco-stage,.data-stage{
  padding-top:max(96px,calc(70px + 1.5rem))!important;
}

/* Lenguaje visual rectangular: todos los controles que actúan como botones quedan sin vértices redondeados. */
button,
input[type="button"],input[type="submit"],input[type="reset"],
.btn,.icon-btn,.toolbar-reset,.toolbar-show,.global-menu-toggle,
.global-side-menu a,.work-tab,.calendar-mode-tabs a,.economic-tabs a,
.drawer-tab,.close-x,.eco-expand-label,.glass-btn,.mini-btn,.radial-action,
.quick-chip,.leaflet-control-zoom a,[role="button"]{
  border-radius:0!important;
}
:focus-visible{border-radius:0!important}

/* El resumen desplegado de cada obra reproduce la jerarquía visual del resumen económico general. */
.eco-work-financial-overview{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  margin:6px 0 12px;
}
.eco-work-financial-overview .eco-financial-block{
  min-height:360px;
  padding:15px;
  
}
.eco-work-financial-overview .eco-financial-block h2{font-size:20px}
.eco-work-financial-overview .eco-block-hero{min-height:108px;padding:14px 0}
.eco-work-financial-overview .eco-expense-hero{min-height:92px}
.eco-work-financial-overview .eco-block-hero strong,
.eco-work-financial-overview .eco-benefit-main>div>strong{font-size:24px}
.eco-work-financial-overview .eco-donut{flex-basis:78px;width:78px;height:78px}
.eco-work-financial-overview .eco-donut::after{inset:8px}
.eco-work-financial-overview .eco-donut span{font-size:15px}
.eco-work-financial-overview .eco-column-chart{height:132px;margin:9px 0 12px}
.eco-work-financial-overview .eco-gauge{transform:scale(.88);transform-origin:right center}

@media(max-width:1250px){
  .eco-work-financial-overview{grid-template-columns:1fr 1fr}
  .eco-work-financial-overview .eco-benefit-block{grid-column:1/-1}
}
@media(max-width:820px){
  .eco-work-financial-overview{grid-template-columns:1fr}
  .eco-work-financial-overview .eco-benefit-block{grid-column:auto}
}
@media(max-width:680px){
  .layout,.eco-stage,.data-stage{padding-top:94px!important}
}

/* ========================================================================== 
   VESMAR · Responsive móvil integral / iPhone · 2026-07-22
   Capa no destructiva: conserva estructura, datos, permisos y lógica PHP.
   ========================================================================== */
:root{
  --app-height:100dvh;
  --app-width:100vw;
  --viewport-offset-top:0px;
  --viewport-offset-left:0px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px);
  --mobile-gutter:clamp(12px,3.8vw,20px);
  --touch-target:44px;
}
html{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--safe-top) + 84px);
}
body{
  width:100%;
  max-width:100%;
  min-height:100svh;
  min-height:var(--app-height);
  overflow-x:clip;
  overflow-wrap:anywhere;
  -webkit-font-smoothing:antialiased;
  overscroll-behavior-x:none;
}
body.overlay-open{overflow:hidden!important;overscroll-behavior:none}
img,svg,video,canvas,iframe{max-width:100%}
button,input,select,textarea{max-width:100%;min-width:0;font:inherit}
textarea{resize:vertical}
button,.btn,.icon-btn,summary,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button:not(.trash-check),.btn,.icon-btn,.global-menu-toggle,.close-x,.drawer-tab,.work-tab,.eco-tabs button,.economic-tabs a{
  min-height:var(--touch-target);
}
input[type="checkbox"],input[type="radio"]{width:auto;min-width:20px;min-height:20px}
input[type="number"]{font-variant-numeric:tabular-nums}
:focus-visible{outline:3px solid rgba(242,194,48,.72)!important;outline-offset:3px}
[hidden]{display:none!important}

/* Safe areas and global navigation */
.global-menu-toggle{
  top:calc(var(--safe-top) + 14px)!important;
  left:calc(var(--safe-left) + 14px)!important;
  z-index:920!important;
}
.global-logo{
  top:calc(var(--safe-top) + 13px)!important;
  right:calc(var(--safe-right) + 16px)!important;
}
.global-menu-backdrop{z-index:890!important}
.global-side-menu{
  z-index:910!important;
  width:min(390px,92vw)!important;
  height:var(--app-height);
  padding:
    calc(var(--safe-top) + 86px)
    calc(var(--safe-right) + 18px)
    calc(var(--safe-bottom) + 22px)
    calc(var(--safe-left) + 18px)!important;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.global-side-menu a{min-height:54px}
.page-loader{padding:var(--mobile-gutter);z-index:1500!important}
.page-loader-card{max-width:100%}

.layout,.eco-stage,.data-stage{
  width:100%;
  max-width:100%;
  padding-left:max(28px,calc(var(--safe-left) + 28px))!important;
  padding-right:max(28px,calc(var(--safe-right) + 28px))!important;
  padding-bottom:max(30px,calc(var(--safe-bottom) + 24px))!important;
}
.topbar>*{min-width:0}
.topbar h1,.eco-title h1,.data-hero h1{overflow-wrap:anywhere}
.actions>*{max-width:100%}
.panel,.card,.eco-card,.data-card{min-width:0;max-width:100%}
.grid,.form-grid,.billing-grid,.phase-fields{min-width:0}

/* Scrollable navigation without moving the whole page horizontally */
.work-tabs,.economic-tabs,.eco-tabs,.drawer-tabs,.calendar-mode-tabs{
  max-width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  flex-wrap:nowrap!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-inline:contain;
  scrollbar-width:thin;
  scroll-snap-type:x proximity;
}
.work-tabs>* ,.economic-tabs>* ,.eco-tabs>* ,.drawer-tabs>* ,.calendar-mode-tabs>*{
  flex:0 0 auto;
  scroll-snap-align:start;
}

/* Modals: viewport real, keyboard virtual, safe areas and reliable stacking */
.modal{
  position:fixed!important;
  left:var(--viewport-offset-left,0px)!important;
  top:var(--viewport-offset-top,0px)!important;
  right:auto!important;
  bottom:auto!important;
  width:var(--app-width,100vw)!important;
  height:var(--app-height,100dvh)!important;
  z-index:1200!important;
  align-items:center!important;
  justify-content:center!important;
  padding:
    max(12px,calc(var(--safe-top) + 10px))
    max(12px,calc(var(--safe-right) + 10px))
    max(12px,calc(var(--safe-bottom) + 10px))
    max(12px,calc(var(--safe-left) + 10px))!important;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.modal-card{
  max-width:100%;
  max-height:calc(var(--app-height) - var(--safe-top) - var(--safe-bottom) - 24px)!important;
  overflow:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  scroll-padding-top:76px;
}
.modal .modal-header{
  position:sticky;
  top:-1px;
  z-index:4;
  padding:4px 0 12px;
  
}
.modal .modal-header .btn{flex:0 0 auto}
.vesmar-confirm-overlay{z-index:1700!important;padding:max(14px,var(--safe-top)) max(14px,var(--safe-right)) max(14px,var(--safe-bottom)) max(14px,var(--safe-left))}
.vesmar-confirm-card{max-height:calc(var(--app-height) - 28px);overflow:auto}

/* Generic data tables become complete labelled cards on phones. No column is removed. */
table.responsive-table td{overflow-wrap:anywhere}
@media(max-width:760px){
  .table-wrap.mobile-card-wrap{overflow:visible!important;padding:0!important}
  table.responsive-table{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    border-collapse:separate!important;
    border-spacing:0!important;
    
  }
  table.responsive-table thead{
    position:absolute!important;
    width:1px!important;height:1px!important;
    padding:0!important;margin:-1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;
    white-space:nowrap!important;border:0!important;
  }
  table.responsive-table tbody{display:grid!important;gap:12px!important;width:100%!important}
  table.responsive-table tbody tr{
    display:block!important;
    width:100%!important;
    margin:0!important;
    padding:8px 12px!important;
    border:1px solid var(--border)!important;
    
    
  }
  table.responsive-table tbody tr[style*="display: none"]{display:none!important}
  table.responsive-table tbody td{
    display:grid!important;
    grid-template-columns:minmax(108px,42%) minmax(0,58%)!important;
    align-items:start!important;
    gap:12px!important;
    width:100%!important;
    min-width:0!important;
    padding:10px 0!important;
    border:0!important;
    border-bottom:1px solid var(--border)!important;
    text-align:right!important;
    white-space:normal!important;
  }
  table.responsive-table tbody td:last-child{border-bottom:0!important}
  table.responsive-table tbody td::before{
    content:attr(data-label);
    
    font-size:10px;
    font-weight:850;
    letter-spacing:.055em;
    line-height:1.35;
    text-align:left;
    text-transform:uppercase;
  }
  table.responsive-table tbody td[data-label=""]::before{content:"Dato"}
  table.responsive-table tbody td[colspan]{display:block!important;text-align:left!important}
  table.responsive-table tbody td[colspan]::before{display:none!important}
  table.responsive-table td .actions,
  table.responsive-table td .work-row-actions,
  table.responsive-table td .trash-actions,
  table.responsive-table td .fixed-actions{
    width:100%;
    justify-content:flex-end;
  }
  table.responsive-table td form{max-width:100%}
  table.responsive-table td .btn{white-space:normal;text-align:center}
  .table-tools{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important}
  .table-search-label{grid-column:1/-1!important;width:100%!important}
  .table-search{width:100%!important;min-width:0!important}
  .table-count{grid-column:1/-1!important}
  .table-pages{grid-column:1/-1!important;display:grid!important;grid-template-columns:1fr 1fr!important;width:100%!important;margin-left:0!important}
  .table-pages .btn{width:100%!important}
}

/* Forms, cards and action groups */
@media(max-width:760px){
  input:not([type="checkbox"]):not([type="radio"]),select,textarea{font-size:16px!important}
  .layout,.eco-stage,.data-stage{
    padding-top:calc(var(--safe-top) + 86px)!important;
    padding-left:max(var(--mobile-gutter),calc(var(--safe-left) + 10px))!important;
    padding-right:max(var(--mobile-gutter),calc(var(--safe-right) + 10px))!important;
    padding-bottom:max(24px,calc(var(--safe-bottom) + 20px))!important;
  }
  .topbar,.eco-hero,.data-hero,.modal-header,.phase-title,.calendar-header{
    align-items:stretch!important;
    flex-direction:column!important;
  }
  .topbar{gap:14px;margin-bottom:18px}
  .topbar h1,.eco-title h1,.data-hero h1{font-size:clamp(26px,8vw,34px)!important;line-height:1.08}
  .topbar .actions,.eco-actions,.data-actions{width:100%}
  .topbar .actions>.btn,.topbar>.btn,.topbar>a.btn,
  .actions.mobile-stack>.btn,.actions.mobile-stack>form,.actions.mobile-stack>form .btn{width:100%}
  .panel,.card,.modal-card,.eco-card{padding:clamp(14px,4vw,18px)!important}
  .grid,.form-grid,.billing-grid,.phase-fields,.filters-grid,.warehouse-grid,.workers-layout{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .form-grid>*{min-width:0}
  .form-grid>.actions,.phase-fields>.actions{width:100%}
  .form-grid>.actions .btn,.phase-fields>.actions .btn{width:100%}
  label{margin-top:12px}
  .btn{padding:11px 14px;white-space:normal;text-align:center}
  .actions{gap:8px}
  details>summary{min-height:var(--touch-target);cursor:pointer}
  .metric strong{font-size:clamp(21px,7vw,28px);overflow-wrap:anywhere}
  .calendar-grid{gap:4px}
  .calendar-cell{min-height:48px;padding:5px;font-size:12px}
  .calendar-weekday{font-size:9px;padding:4px 1px}
  .modal{align-items:center!important;justify-content:center!important;padding-bottom:max(12px,calc(var(--safe-bottom) + 10px))!important}
  .modal-card{
    width:100%!important;
    max-height:calc(var(--app-height) - var(--safe-top) - 8px)!important;
    border-bottom:0!important;
    border-left:0!important;
    border-right:0!important;
  }
  .modal .modal-header{flex-direction:row!important;align-items:flex-start!important}
  .modal .modal-header>div{min-width:0}
}
@media(max-width:430px){
  .global-logo{width:88px!important;max-height:48px!important}
  .global-menu-toggle{width:46px;height:46px}
  .actions:not(.no-mobile-stack)>.btn,
  .actions:not(.no-mobile-stack)>a.btn,
  .actions:not(.no-mobile-stack)>form,
  .actions:not(.no-mobile-stack)>form .btn{width:100%}
  .panel h2,.eco-card h2{font-size:20px}
  .modal .modal-header{flex-direction:column!important}
  .modal .modal-header .btn{width:100%}
}

/* Gestión económica: jerarquía explícita Ingresos → Gastos → Beneficios */
.eco-financial-block strong,.eco-secondary-metrics strong,.eco-work-row strong,.eco-work-summary-grid dd{
  font-variant-numeric:tabular-nums;
}
.eco-work-row>summary .eco-work-income,
.eco-work-row>summary .eco-work-expense,
.eco-work-row>summary .eco-work-profit,
.eco-work-row>summary .eco-work-progress{min-width:0}
@media(max-width:1050px){
  .eco-work-row>summary>span.eco-work-expense,
  .eco-work-row>summary>span.eco-work-profit{display:flex!important}
}
@media(max-width:760px){
  .eco-stage{padding-inline:max(10px,var(--mobile-gutter))!important}
  .eco-hero{gap:16px}
  .eco-title p{font-size:14px;line-height:1.55}
  .eco-actions{display:grid!important;grid-template-columns:1fr!important;min-width:0!important}
  .eco-actions>* ,.eco-actions .btn{width:100%!important}
  .eco-period-filter{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}
  .eco-period-filter>*{width:100%!important}
  .eco-period-filter small{line-height:1.45}
  .eco-financial-overview{display:grid!important;grid-template-columns:1fr!important;gap:12px!important}
  .eco-income-block{order:1}.eco-expense-block{order:2}.eco-benefit-block{order:3}
  .eco-financial-block{min-height:0!important;padding:16px!important}
  .eco-financial-block>header{align-items:flex-start!important}
  .eco-financial-block h2{font-size:24px!important}
  .eco-block-hero,.eco-benefit-main{min-height:0!important;padding:17px 0!important}
  .eco-block-hero strong,.eco-benefit-main>div>strong{
    max-width:100%;
    font-size:clamp(25px,8.2vw,34px)!important;
    line-height:1.08!important;
    overflow-wrap:anywhere;
  }
  .eco-major-metrics{grid-template-columns:1fr!important;gap:7px!important}
  .eco-major-metrics>div{display:flex;align-items:center;justify-content:space-between;gap:14px}
  .eco-major-metrics small{margin:0}
  .eco-major-metrics strong{margin:0!important;text-align:right}
  .eco-secondary-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .eco-secondary-metrics>div{min-height:86px!important}
  .eco-secondary-metrics strong{font-size:clamp(14px,4.6vw,18px)!important;overflow-wrap:anywhere}
  .eco-column-chart{height:160px!important;overflow:hidden}
  .eco-column-chart b{font-size:clamp(8px,2.6vw,11px)!important;overflow-wrap:anywhere}
  .eco-radar>summary{gap:12px;padding:15px!important}
  .eco-radar-body{padding:8px!important}
  .eco-work-row{margin-bottom:12px}
  .eco-work-row>summary{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:8px!important;
    align-items:stretch!important;
    padding:12px!important;
  }
  .eco-work-row>summary>span{display:flex!important;min-width:0!important}
  .eco-work-row>summary .eco-work-name{
    grid-column:1/-1!important;
    flex-direction:column!important;
    align-items:flex-start!important;
    padding:2px 2px 10px!important;
  }
  .eco-work-row>summary .eco-work-income,
  .eco-work-row>summary .eco-work-expense,
  .eco-work-row>summary .eco-work-profit{
    flex-direction:column!important;
    justify-content:space-between!important;
    gap:6px!important;
    min-height:82px!important;
    padding:10px!important;
    border:1px solid var(--border)!important;
    
  }
  .eco-work-row>summary .eco-work-income{border-top:3px solid var(--border)!important}
  .eco-work-row>summary .eco-work-expense{border-top:3px solid var(--border)!important}
  .eco-work-row>summary .eco-work-profit{border-top:3px solid var(--border)!important}
  .eco-work-row>summary .eco-work-progress{
    grid-column:1/3!important;
    align-items:center!important;
    justify-content:space-between!important;
    padding:9px 10px!important;
    border:1px solid var(--border)!important;
  }
  .eco-work-row>summary .eco-expand-label{
    grid-column:3!important;
    align-items:center!important;
    justify-content:center!important;
    padding:9px!important;
  }
  .eco-work-row>summary small{font-size:8px!important;line-height:1.35}
  .eco-work-row>summary strong{font-size:clamp(12px,3.6vw,16px)!important;line-height:1.25;overflow-wrap:anywhere}
  .eco-work-detail{padding:10px!important}
  .eco-work-financial-overview{grid-template-columns:1fr!important}
  .eco-work-financial-overview .eco-financial-block{min-height:0!important}
  .eco-compact-indicators{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .eco-compact-indicators>div{min-width:0}
  .eco-compact-indicators .btn{width:100%}
  .eco-work-summary-grid{grid-template-columns:1fr!important}
  .eco-work-summary-grid dl div{grid-template-columns:minmax(0,1fr) auto!important;gap:12px!important}
  .eco-work-summary-grid dd{text-align:right;overflow-wrap:anywhere}
  .fixed-actions{display:grid!important;grid-template-columns:1fr!important}
  .fixed-actions>* ,.fixed-actions .btn{width:100%!important}
}
@media(max-width:430px){
  .eco-secondary-metrics{grid-template-columns:1fr!important}
  .eco-block-hero,.eco-benefit-main{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important}
  .eco-donut{width:76px!important;height:76px!important;flex-basis:76px!important}
  .eco-gauge{transform:scale(.82);transform-origin:right center}
  .eco-work-row>summary{grid-template-columns:1fr!important}
  .eco-work-row>summary .eco-work-name,
  .eco-work-row>summary .eco-work-income,
  .eco-work-row>summary .eco-work-expense,
  .eco-work-row>summary .eco-work-profit,
  .eco-work-row>summary .eco-work-progress,
  .eco-work-row>summary .eco-expand-label{grid-column:1!important}
  .eco-work-row>summary .eco-work-income,
  .eco-work-row>summary .eco-work-expense,
  .eco-work-row>summary .eco-work-profit{
    min-height:0!important;
    flex-direction:row!important;
    align-items:center!important;
  }
  .eco-work-row>summary .eco-work-income strong,
  .eco-work-row>summary .eco-work-expense strong,
  .eco-work-row>summary .eco-work-profit strong{text-align:right}
  .eco-compact-indicators{grid-template-columns:1fr!important}
}

/* Obras, compras, albaranes y formularios dinámicos */
@media(max-width:760px){
  .work-command-layout{grid-template-columns:1fr!important}
  .work-command-nav{grid-template-columns:1fr 1fr!important;position:static!important}
  .work-tabs{width:100%;padding-bottom:7px}
  .work-tab{min-width:max-content}
  .work-tab-panel{padding:14px!important}
  .purchase-header-grid,.purchase-line,.worker-hour-entry-grid,.hour-delivery-line{
    grid-template-columns:1fr!important;
  }
  .purchase-wide-field,.purchase-concept,.purchase-description,.hour-description{grid-column:1!important}
  .purchase-actions,.purchase-form-footer,.delivery-upload-actions,.delivery-section-actions{width:100%}
  .purchase-actions .btn,.purchase-actions form,.purchase-actions form .btn,
  .purchase-form-footer>* ,.delivery-upload-actions .btn,.delivery-section-actions .btn{width:100%!important}
  .purchase-invoice-disclosure>summary,.tool-record>summary{grid-template-columns:1fr!important}
  .purchase-invoice-disclosure>summary>* ,.tool-record>summary>*{grid-column:auto!important}
  .invoice-payment-summary{grid-template-columns:1fr!important}
  .hour-delivery-grand-total{align-items:flex-start!important;flex-direction:column!important}
  .hour-delivery-grand-total strong{font-size:23px!important;overflow-wrap:anywhere}
  .work-billing-overview .actions .btn{width:100%}
  .compact-detail-grid{grid-template-columns:1fr!important}
}

/* Login, account and restricted screens on short iPhone viewports */
.login-page .center,.login-center,.restricted-shell{
  min-height:100svh!important;
  min-height:var(--app-height)!important;
  padding:
    max(18px,calc(var(--safe-top) + 14px))
    max(16px,calc(var(--safe-right) + 14px))
    max(18px,calc(var(--safe-bottom) + 14px))
    max(16px,calc(var(--safe-left) + 14px))!important;
}
.login-panel,.restricted-card{max-width:100%}
@media(max-height:650px){
  .login-center{align-items:flex-start!important;overflow:auto}
  .login-panel{margin-block:8px}
  .login-logo{max-height:88px;width:auto}
}

/* Reduced motion and touch-capability refinements */
@media(hover:none) and (pointer:coarse){
  .btn:hover,.global-side-menu a:hover,.work-card:hover{transform:none!important}
  .btn,.icon-btn,summary{cursor:default}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* Eficiencia de obra y control de producción — actualización 013 */
.work-efficiency-button{display:flex!important;width:100%;justify-content:center;margin-top:8px;min-height:38px;align-items:center}
.worker-hour-entry-grid-linked{grid-template-columns:repeat(4,minmax(170px,1fr))}
.worker-hour-entry-grid-linked .worker-hour-observations{grid-column:span 2}
.worker-hours-linked-table{min-width:1580px}
.worker-production-hint{display:block;margin-top:5px;font-size:.84em;line-height:1.35}

.efficiency-stage{width:min(1460px,calc(100% - 44px));margin:0 auto;padding:100px 0 54px;font-size:1.06em}
.efficiency-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px;padding:24px 28px;border:1px solid var(--user-border,var(--border));border-radius:var(--user-radius,22px)}
.efficiency-hero h1{margin:5px 0 7px;font-size:clamp(1.62em,2.45vw,2.25em);line-height:1.08}
.efficiency-hero p{margin:0;font-size:1.03em}
.efficiency-kicker{font-size:.78em;letter-spacing:.17em;text-transform:uppercase;font-weight:800}
.efficiency-budget-list{display:grid;gap:14px}
.efficiency-budget{border:1px solid var(--user-border,var(--border));border-radius:var(--user-radius,22px);overflow:hidden}
.efficiency-budget>summary,.efficiency-phase>summary{list-style:none;cursor:pointer}
.efficiency-budget>summary::-webkit-details-marker,.efficiency-phase>summary::-webkit-details-marker{display:none}
.efficiency-budget>summary:focus-visible,.efficiency-phase>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.efficiency-budget>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px 22px}
.efficiency-summary-main{display:flex;align-items:center;gap:14px;min-width:0}
.efficiency-summary-main>div{min-width:0}
.efficiency-summary-main strong,.efficiency-summary-main small{display:block}
.efficiency-summary-main strong{font-size:1.24em;line-height:1.25;overflow-wrap:anywhere}
.efficiency-summary-main small{margin-top:5px;font-size:.94em}
.efficiency-budget-body{border-top:1px solid var(--user-border,var(--border));padding:14px}
.efficiency-phase{border:1px solid var(--user-border,var(--border));margin-bottom:12px;border-radius:calc(var(--user-radius,22px) * .72);overflow:hidden}
.efficiency-phase:last-child{margin-bottom:0}
.efficiency-phase>summary{display:grid;grid-template-columns:minmax(220px,.75fr) minmax(420px,1.5fr) auto;align-items:center;gap:16px;padding:18px}
.efficiency-phase-title strong,.efficiency-phase-title small{display:block}
.efficiency-phase-title strong{font-size:1.22em;margin:4px 0;line-height:1.28;overflow-wrap:anywhere}
.efficiency-phase-title small{font-size:.94em}
.efficiency-phase-code{font-size:.75em;letter-spacing:.11em;text-transform:uppercase;font-weight:800}
.efficiency-phase-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.efficiency-phase-summary>span,.efficiency-hour-summary>span{display:block;padding:12px 13px;border:1px solid var(--border);font-size:.98em;line-height:1.4;overflow-wrap:anywhere}
.efficiency-phase-summary b,.efficiency-hour-summary b{display:block;margin-bottom:4px;font-size:1.02em}
.efficiency-phase-summary small{display:block;margin-top:5px;font-size:.9em}
.efficiency-hour-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.efficiency-overrun{}
.efficiency-status{border-left:4px solid var(--user-border,var(--border))!important}
.efficiency-status-correct{border-left-color:var(--user-success,#42d17b)!important;}
.efficiency-status-below{border-left-color:var(--danger)!important;}
.efficiency-status-neutral{border-left-color:var(--accent)!important}
.efficiency-phase-body{border-top:1px solid var(--user-border,var(--border));padding:16px}
.efficiency-hours-progress{height:16px;margin:0 0 16px;border:1px solid var(--user-border,var(--border));border-radius:999px;overflow:hidden}
.efficiency-hours-progress-bar{height:100%;border-radius:inherit}
.efficiency-zone-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;width:100%}
.efficiency-zone{width:100%;border:1px solid var(--user-border,var(--border));padding:18px;min-width:0;border-radius:calc(var(--user-radius,22px) * .65)}
.efficiency-zone header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.efficiency-zone header span:first-child{font-size:.78em;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.efficiency-zone h3{margin:5px 0 14px;font-size:1.28em;line-height:1.3;overflow-wrap:anywhere}
.efficiency-zone dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px;margin:0}
.efficiency-zone dl>div{padding:13px 0;border-top:1px solid var(--border);min-width:0}
.efficiency-zone-wide{grid-column:1/-1}
.efficiency-zone dt{font-size:.82em;text-transform:uppercase;letter-spacing:.065em;font-weight:800}
.efficiency-zone dd{margin:6px 0 0;font-size:1.08em;line-height:1.45;overflow-wrap:anywhere}
.efficiency-detail-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.efficiency-detail-list li{display:flex;justify-content:space-between;gap:16px;align-items:baseline;padding:7px 0;border-bottom:1px solid var(--border)}
.efficiency-detail-list li:last-child{border-bottom:0}
.efficiency-detail-list b{white-space:nowrap}
.efficiency-empty{padding:26px;text-align:center;font-size:1.04em}

@media(max-width:1180px){
  .worker-hour-entry-grid-linked{grid-template-columns:repeat(2,minmax(170px,1fr))}
  .efficiency-phase>summary{grid-template-columns:1fr auto}
  .efficiency-phase-summary,.efficiency-hour-summary{grid-column:1/-1}
}
@media(max-width:760px){
  .efficiency-stage{width:min(100% - 20px,1460px);padding-top:78px;font-size:1em}
  .efficiency-hero{display:block;padding:19px}
  .efficiency-hero .actions{margin-top:18px;display:grid;grid-template-columns:1fr}
  .efficiency-budget>summary,.efficiency-phase>summary{display:flex;align-items:flex-start;flex-direction:column;gap:12px;padding:16px}
  .efficiency-summary-main{width:100%;align-items:flex-start}
  .efficiency-phase-summary,.efficiency-hour-summary{grid-template-columns:1fr;width:100%}
  .efficiency-phase-body{padding:12px}
  .efficiency-zone{padding:15px}
  .efficiency-zone dl{grid-template-columns:1fr}
  .efficiency-zone-wide{grid-column:auto}
  .efficiency-detail-list li{align-items:flex-start}
  .worker-hour-entry-grid-linked{grid-template-columns:1fr}
  .worker-hour-entry-grid-linked .worker-hour-observations{grid-column:auto}
  .worker-hours-toolbar{align-items:flex-start}
  .worker-hours-toggle{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .worker-hours-toggle a{grid-column:1/-1}
  .work-efficiency-button{margin-top:10px}
}

.threshold-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:9px}
.threshold-input-row>[data-threshold-unit]{font-size:.88em;font-weight:800;white-space:nowrap}
.worker-production-hint{display:block;margin-top:5px;line-height:1.35;}
[data-worker-production-unit]{font-weight:800;}

/* Eficiencia de obra v014: métricas principales, estados completos y zonas desplegables */
.efficiency-phase-state-correct{
  
  
  }
.efficiency-phase-state-below{
  
  
  }
.efficiency-phase-state-correct>summary,.efficiency-phase-state-correct>.efficiency-phase-body{}
.efficiency-phase-state-below>summary,.efficiency-phase-state-below>.efficiency-phase-body{}
.efficiency-phase-state-correct .efficiency-phase-code{}
.efficiency-phase-state-below .efficiency-phase-code{}
.efficiency-primary-metric{display:grid!important;grid-template-columns:auto auto;grid-template-rows:auto auto;align-items:end;column-gap:8px;min-height:108px}
.efficiency-primary-metric>b{grid-column:1/-1;margin:0!important;font-size:1em!important;letter-spacing:.06em;text-transform:uppercase;}
.efficiency-metric-number{font-size:clamp(2.45em,4vw,4.25em)!important;line-height:.9;font-weight:900;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.efficiency-metric-unit{display:inline!important;margin:0 0 .18em!important;font-size:1.12em!important;font-weight:800;white-space:nowrap}
.efficiency-metric-unavailable{grid-column:1/-1;font-size:1.18em;line-height:1.15;align-self:center}
.efficiency-status{min-height:108px;display:flex!important;flex-direction:column;justify-content:center}
.efficiency-budget>summary,.efficiency-phase>summary,.efficiency-zone>summary,.efficiency-zone-detail>summary{position:relative}
.efficiency-zone>summary,.efficiency-zone-detail>summary{list-style:none;cursor:pointer}
.efficiency-zone>summary::-webkit-details-marker,.efficiency-zone-detail>summary::-webkit-details-marker{display:none}
.disclosure-state{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border:1px solid var(--user-border,var(--border));font-size:0;line-height:1}
.disclosure-state:before{content:'+';font-size:20px;font-weight:800;line-height:1;transform:translateY(-1px)}
.efficiency-budget[open]>summary>.disclosure-state:before,.efficiency-phase[open]>summary>.disclosure-state:before,.efficiency-zone[open]>summary>.disclosure-state:before,.efficiency-zone-detail[open]>summary>.disclosure-state:before{content:'−'}
.efficiency-zone{padding:0!important;overflow:hidden}
.efficiency-zone>summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;padding:17px 18px;}
.efficiency-zone>summary:focus-visible,.efficiency-zone-detail>summary:focus-visible{outline:2px solid var(--accent);outline-offset:-3px}
.efficiency-zone>summary>div{min-width:0}
.efficiency-zone>summary span:first-child{font-size:.78em;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.efficiency-zone>summary h3{margin:4px 0 0;font-size:1.32em;line-height:1.25;overflow-wrap:anywhere}
.efficiency-zone-summary-hours{font-size:.95em;font-weight:800;white-space:nowrap;}
.efficiency-zone-body{border-top:1px solid var(--border);padding:16px 18px 18px}
.efficiency-zone-metrics-scroll{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding-bottom:4px;scrollbar-width:thin}
.efficiency-zone-metrics{display:grid!important;grid-template-columns:repeat(5,minmax(168px,1fr))!important;gap:0!important;min-width:930px;margin:0!important;border:1px solid var(--border)}
.efficiency-zone-metrics>div{min-width:0;padding:13px 14px!important;border:0!important;border-right:1px solid var(--border)!important;}
.efficiency-zone-metrics>div:last-child{border-right:0!important}
.efficiency-zone-metrics dt{font-size:.76em!important;line-height:1.25;min-height:2.5em}
.efficiency-zone-metrics dd{font-size:1.05em!important;line-height:1.3;margin-top:7px!important}
.efficiency-zone-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}
.efficiency-zone-detail{border:1px solid var(--border);overflow:hidden}
.efficiency-zone-detail>summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:13px 14px;font-weight:850;letter-spacing:.035em}
.efficiency-zone-detail>summary small{font-size:.78em;font-weight:700;white-space:nowrap}
.efficiency-zone-detail .disclosure-state{width:24px;height:24px;flex-basis:24px}
.efficiency-zone-detail .disclosure-state:before{font-size:17px}
.efficiency-zone-detail-body{border-top:1px solid var(--border);padding:12px 14px;min-height:52px}
.work-report-button{grid-column:1/-1!important;display:flex!important;width:100%;justify-content:center;align-items:center;margin-top:3px;font-weight:900}
@media(max-width:980px){
  .efficiency-metric-number{font-size:clamp(2.35em,7vw,3.5em)!important}
  .efficiency-zone-detail-grid{grid-template-columns:1fr}
}
@media(max-width:720px){
  .efficiency-primary-metric{min-height:94px;width:100%}
  .efficiency-phase-summary .efficiency-primary-metric,.efficiency-phase-summary .efficiency-status{width:100%}
  .efficiency-zone>summary{grid-template-columns:minmax(0,1fr) auto;gap:10px}
  .efficiency-zone-summary-hours{grid-column:1/-1;grid-row:2;white-space:normal}
  .efficiency-zone>summary>.disclosure-state{grid-column:2;grid-row:1}
  .efficiency-zone-body{padding:12px}
  .efficiency-zone-metrics{grid-template-columns:repeat(5,minmax(154px,1fr))!important;min-width:820px}
  .efficiency-zone-detail>summary{grid-template-columns:minmax(0,1fr) auto}
  .efficiency-zone-detail>summary small{grid-column:1;grid-row:2;white-space:normal}
  .efficiency-zone-detail>summary>.disclosure-state{grid-column:2;grid-row:1/3}
}

/* Integración API de control horario v015 */
.works-list-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap}
.works-list-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.timeclock-sync-form{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.timeclock-sync-form [data-timeclock-sync-status]{font-size:.86em}
.timeclock-last-sync{margin:.3rem 0 0}
.timeclock-project-field{grid-column:span 2;display:grid;grid-template-columns:minmax(180px,.65fr) minmax(240px,1.35fr);gap:8px 12px;align-items:end}
.timeclock-project-field>label,.timeclock-project-field>small{grid-column:1/-1}
.timeclock-project-field input[type="search"],.timeclock-project-field select{width:100%;min-width:0}
.work-detail-two-column{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.8fr);gap:18px;align-items:start;margin-top:12px}
.work-detail-main,.working-now-panel{min-width:0}
.working-now-panel{border:1px solid var(--user-border,var(--border));padding:16px;border-radius:calc(var(--user-radius,22px) * .7)}
.working-now-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:11px;border-bottom:1px solid var(--border)}
.working-now-heading h3{margin:0 0 4px}.working-now-heading small{}
.active-count{display:inline-flex;min-width:30px;height:30px;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--border);font-weight:900;}
.working-now-list{display:grid;gap:9px;margin-top:12px}
.working-now-worker{display:grid;gap:5px;padding:11px 12px;border:1px solid var(--border);min-width:0}
.working-now-worker>div{display:flex;align-items:center;justify-content:space-between;gap:9px;min-width:0}
.working-now-worker strong{overflow-wrap:anywhere}.working-now-worker small{overflow-wrap:anywhere}
.active-indicator{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-size:.74em;text-transform:uppercase;letter-spacing:.06em;font-weight:900;}
.active-indicator:before{content:'';width:8px;height:8px;border-radius:50%;}
.timeclock-stale-warning,.timeclock-api-warning{margin:12px 0 0;padding:9px 10px;border-left:3px solid var(--accent);font-size:.88em}
.timeclock-api-warning{border-left-color:var(--danger);}
.worker-assignment-form select:disabled{opacity:.6;cursor:not-allowed;}
.worker-assignment-status{display:block;margin-top:5px;line-height:1.35;}
@media(max-width:900px){
  .work-detail-two-column{grid-template-columns:1fr}
  .timeclock-project-field{grid-column:1/-1}
}
@media(max-width:680px){
  .works-list-header,.works-list-header-actions,.timeclock-sync-form{align-items:stretch;width:100%}
  .works-list-header-actions{justify-content:stretch}
  .timeclock-sync-form{display:grid;grid-template-columns:1fr}
  .timeclock-sync-form .btn{width:100%;justify-content:center}
  .timeclock-project-field{grid-template-columns:1fr}
  .timeclock-project-field>label,.timeclock-project-field>small{grid-column:auto}
  .working-now-worker>div{align-items:flex-start;flex-direction:column}
}

/* Cobros acumulados de facturas */
.invoice-payment-table{min-width:1540px}
.invoice-payment-actions{min-width:330px;align-items:stretch;display:flex;flex-direction:column;gap:8px}
.payment-partial{}
.invoice-partial-payment-form{display:flex;flex-direction:column;gap:5px;min-width:310px;padding:9px;border:1px solid var(--border);}
.invoice-partial-payment-form label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.invoice-partial-payment-control{display:grid;grid-template-columns:minmax(115px,1fr) auto;gap:7px;align-items:stretch}
.invoice-partial-payment-control input{min-width:0;width:100%;font-variant-numeric:tabular-nums}
.invoice-partial-payment-control .btn{white-space:nowrap}
.invoice-partial-payment-form small{line-height:1.35}
@media(max-width:760px){
  .invoice-payment-table{min-width:1320px}
  .invoice-payment-actions{min-width:280px}
  .invoice-partial-payment-form{min-width:260px}
  .invoice-partial-payment-control{grid-template-columns:1fr}
  .invoice-partial-payment-control .btn{width:100%}
}

/* Trazabilidad interna v021 */
.trace-layout{max-width:1800px}.trace-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.trace-chip{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;border:1px solid transparent;font-size:.78rem;font-weight:700;line-height:1.2}.trace-success{--trace:#39c77a}.trace-error{--trace:#ef5b67}.trace-update{--trace:#e5bb45}.trace-view{--trace:#4c9ee8}.trace-security{--trace:#a475e8}.trace-billing{--trace:#ef943e}.trace-chip.trace-success,.trace-chip.trace-error,.trace-chip.trace-update,.trace-chip.trace-view,.trace-chip.trace-security,.trace-chip.trace-billing{}.trace-row{border-left:5px solid var(--trace)}.trace-row td{vertical-align:top}.trace-row small,.trace-events td small{display:block;margin-top:5px;font-size:.75rem}.trace-events details{min-width:180px}.trace-events summary{cursor:pointer;font-weight:700}.trace-events pre{max-width:560px;max-height:320px;overflow:auto;white-space:pre-wrap;word-break:break-word;padding:12px;border-radius:8px;font-size:.72rem}.trace-events h4{margin:12px 0 5px}.trace-filters{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px;align-items:end}.trace-filters label{display:grid;gap:6px}.trace-filters .trace-search{grid-column:span 2}.trace-filters .actions{grid-column:span 2}.trace-pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:18px}.trace-back{display:inline-block;margin-bottom:8px}.trace-state-activo,.trace-result-success{}.trace-state-bloqueado,.trace-state-eliminado,.trace-result-error{}@media(max-width:1000px){.trace-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.trace-filters .trace-search,.trace-filters .actions{grid-column:span 2}}@media(max-width:640px){.trace-filters{grid-template-columns:1fr}.trace-filters .trace-search,.trace-filters .actions{grid-column:span 1}.trace-legend{align-items:flex-start}.trace-pagination{flex-wrap:wrap}.trace-events pre{max-width:78vw}.trace-users td:last-child .btn{white-space:nowrap}}
.security-trace-entry{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px}.security-trace-entry h2{margin-bottom:5px}@media(max-width:640px){.security-trace-entry{align-items:flex-start;flex-direction:column}.security-trace-entry .btn{width:100%;text-align:center}}


/* v021.3 · Optimización de lista de obras, anticipos y tabla de facturación */
.works-visual-table{min-width:920px}
.works-visual-table th:nth-child(1){width:45%}
.works-visual-table th:nth-child(2){width:27%}
.works-visual-table th:nth-child(3){width:28%}
.work-detail-documentation{display:flex!important;align-items:center;gap:8px;flex-wrap:wrap}
.compact-documentation-link{padding:6px 10px!important;min-height:30px;font-size:11px}
.work-progress-cell{min-width:260px}
.work-progress-disclosure{min-width:240px}
.work-progress-disclosure>summary{list-style:none;cursor:pointer;border-radius:12px;padding:7px 8px;margin:-7px -8px;transition:background .18s ease}
.work-progress-disclosure>summary::-webkit-details-marker{display:none}
.work-progress-disclosure>summary:hover,.work-progress-disclosure>summary:focus-visible{outline:none}
.work-progress-summary{display:grid;grid-template-columns:minmax(125px,1fr) auto 18px;gap:9px;align-items:center}
.work-progress-summary .progress{min-width:0;width:100%}
.work-progress-summary strong{white-space:nowrap;font-variant-numeric:tabular-nums;}
.work-progress-summary .disclosure-state:before{content:'⌄';display:block;font-size:18px;line-height:1;transition:transform .18s ease}
.work-progress-disclosure[open] .work-progress-summary .disclosure-state:before{transform:rotate(180deg)}
.work-progress-detail-grid{display:grid;gap:7px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}
.work-progress-detail-grid>div{display:grid;grid-template-columns:minmax(105px,1fr) auto;gap:3px 10px;padding:8px 9px;border:1px solid var(--border)}
.work-progress-detail-grid span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.035em}
.work-progress-detail-grid strong{white-space:nowrap;font-variant-numeric:tabular-nums}
.work-progress-detail-grid small{grid-column:1/-1;line-height:1.35}
.work-row-actions{grid-template-columns:max-content 36px 36px;gap:6px}
.work-action-icon{width:36px!important;min-width:36px!important;height:34px!important;min-height:34px!important;padding:6px!important;border-radius:10px!important}
.work-action-icon svg{width:18px;height:18px;display:block;fill:currentColor}
.work-row-actions .work-icon-form{width:36px!important}
.work-report-button{grid-column:1/-1!important}

.advance-invoice-table{min-width:1050px;table-layout:fixed}
.advance-invoice-table .advance-select-col{width:92px}
.advance-invoice-table .advance-concept-col{width:auto}
.advance-invoice-table .advance-units-col{width:190px}
.advance-invoice-table .advance-base-col{width:135px}
.advance-invoice-table .advance-tax-col{width:82px}
.advance-invoice-table .advance-total-col{width:135px}
.advance-invoice-table .advance-covered-col{width:145px}
.advance-invoice-table th:nth-child(n+3),.advance-invoice-table td:nth-child(n+3){white-space:nowrap;font-variant-numeric:tabular-nums}
.advance-invoice-table th:first-child,.advance-invoice-table td:first-child{text-align:center}
.advance-invoice-table td:nth-child(2){overflow-wrap:anywhere;line-height:1.4}

.invoice-payment-table{min-width:1260px}
.invoice-payment-table th:first-child{min-width:245px}
.invoice-payment-table th:nth-child(2){min-width:175px}
.invoice-identity-cell,.invoice-amounts-cell{padding-top:9px!important;padding-bottom:9px!important}
.invoice-stacked-cell{display:grid;gap:0;border:1px solid var(--border);min-width:0}
.invoice-stacked-cell>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;align-items:baseline;padding:8px 9px}
.invoice-stacked-cell>div+div{border-top:1px solid var(--border)}
.invoice-stacked-cell span{font-size:10px;text-transform:uppercase;letter-spacing:.055em;font-weight:800}
.invoice-stacked-cell strong{min-width:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.invoice-amounts-cell .invoice-stacked-cell>div{grid-template-columns:72px 1fr}
.invoice-amounts-cell strong{white-space:nowrap}

@media(max-width:720px){
  .works-visual-table{min-width:760px}
  .work-progress-cell{min-width:230px}
  .work-row-actions{grid-template-columns:1fr 36px 36px;align-items:stretch}
  .work-row-actions>.btn:first-child{width:100%}
  .work-row-actions .work-action-icon{width:36px!important}
  .work-row-actions .work-icon-form{width:36px!important}
  .work-report-button{width:100%!important}
  .invoice-stacked-cell>div{grid-template-columns:78px minmax(0,1fr)}
}

/* v021.5 · Importes monetarios siempre en una sola línea */
.money-nowrap{white-space:nowrap!important;font-variant-numeric:tabular-nums}
.money-nowrap input,.money-nowrap select,.money-nowrap output,.money-nowrap strong,.money-nowrap b,.money-nowrap span{white-space:nowrap}
.money-nowrap .delivery-fee-amount{display:inline;margin-left:6px}



/* Trabajadores activos: una fila horizontal por trabajador */
.working-now-list{max-width:100%;overflow-x:auto;padding-bottom:2px}
.working-now-worker.working-now-worker-row{display:grid;grid-template-columns:minmax(170px,1.35fr) max-content max-content max-content;align-items:center;gap:10px 16px;min-width:620px;padding:10px 12px;white-space:nowrap}
.working-now-worker-row .working-now-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.working-now-worker-row .working-now-entry,.working-now-worker-row .working-now-elapsed{font-size:.84rem;white-space:nowrap}
.working-now-worker-row b{font-variant-numeric:tabular-nums}
.working-now-worker-row .active-indicator{justify-self:end}
@media(max-width:680px){.working-now-worker.working-now-worker-row{grid-template-columns:minmax(155px,1fr) max-content max-content max-content;min-width:590px}.working-now-list{margin-right:-6px}}

/* Resumen y pago de facturas de compra */
.purchase-invoice-disclosure>summary{grid-template-columns:140px minmax(210px,1.35fr) 120px 78px minmax(145px,.75fr) 170px}
.purchase-summary-paid{text-align:center;padding:8px 9px;border:1px solid var(--border);}
.purchase-summary-paid strong{font-size:17px!important;font-variant-numeric:tabular-nums}
.purchase-summary-paid.purchase-payment-unpaid{}
.purchase-summary-paid.purchase-payment-unpaid strong{}
.purchase-summary-paid.purchase-payment-partial{}
.purchase-summary-paid.purchase-payment-partial strong{}
.purchase-summary-paid.purchase-payment-paid{}
.purchase-summary-paid.purchase-payment-paid strong{}
.purchase-detail-top{display:grid;grid-template-columns:minmax(420px,1fr) minmax(390px,.8fr);align-items:start}
.purchase-meta-grid{grid-template-columns:repeat(3,minmax(125px,1fr))}
.purchase-actions{display:grid;gap:9px;align-items:stretch;min-width:0}
.purchase-file-payment-actions{display:grid;grid-template-columns:max-content minmax(270px,1fr);gap:9px;align-items:stretch}
.purchase-file-actions{display:flex;gap:7px;align-items:flex-start;flex-wrap:wrap}
.purchase-paid-form{display:grid;gap:5px;padding:9px;border:1px solid var(--border);min-width:0}
.purchase-paid-form label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:900;}
.purchase-paid-form>div{display:grid;grid-template-columns:minmax(105px,1fr) auto;gap:7px}
.purchase-paid-form input{min-width:0;width:100%;font-variant-numeric:tabular-nums}
.purchase-paid-form small{line-height:1.35}
.purchase-secondary-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.purchase-secondary-actions form{margin:0}
.purchase-payment-badge{display:inline-flex;min-width:76px;justify-content:center;padding:5px 8px;border:1px solid transparent;font-weight:900;white-space:nowrap}
.purchase-payment-unpaid{}
.purchase-payment-partial{}
.purchase-payment-paid{}

/* Indicadores de tesorería en gestión económica */
.eco-payment-breakdown{display:flex!important;align-items:center!important;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}
.eco-payment-breakdown span{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1}
.eco-payment-breakdown small{white-space:nowrap}
.eco-purchase-payment-table{min-width:1180px}
.eco-purchase-payment-table th:nth-child(n+5),.eco-purchase-payment-table td:nth-child(n+5){white-space:nowrap;font-variant-numeric:tabular-nums}

/* Trazabilidad interna: tarjetas semánticas y diferencias legibles */
.trace-layout{max-width:1720px}
.trace-hero{margin-bottom:16px}
.trace-legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.trace-action-badge,.trace-result,.trace-user-state{display:inline-flex;align-items:center;justify-content:center;padding:5px 9px;border:1px solid transparent;font-size:.74rem;font-weight:900;line-height:1.2;text-transform:uppercase;letter-spacing:.035em;white-space:nowrap}
.trace-kind-create,.trace-kind-login{--trace-color:#39c77a;--trace-bg:rgba(57,199,122,.11)}
.trace-kind-update{--trace-color:#e5bb45;--trace-bg:rgba(229,187,69,.11)}
.trace-kind-delete,.trace-kind-error{--trace-color:#ef5b67;--trace-bg:rgba(239,91,103,.11)}
.trace-kind-restore{--trace-color:#3fcac3;--trace-bg:rgba(63,202,195,.11)}
.trace-kind-view{--trace-color:#4c9ee8;--trace-bg:rgba(76,158,232,.11)}
.trace-kind-security{--trace-color:#a475e8;--trace-bg:rgba(164,117,232,.11)}
.trace-kind-billing{--trace-color:#ef943e;--trace-bg:rgba(239,148,62,.11)}
.trace-action-badge[class*="trace-kind-"]{}
.trace-users-overview>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;cursor:pointer;list-style:none}
.trace-users-overview>summary::-webkit-details-marker{display:none}
.trace-users-overview>summary strong,.trace-users-overview>summary small{display:block}.trace-users-overview>summary small{margin-top:3px;}
.trace-user-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:10px;margin-top:16px}
.trace-user-card{display:grid;gap:7px;padding:13px;border:1px solid var(--border);text-decoration:none}
.trace-user-card:hover,.trace-user-card:focus-visible,.trace-user-card.is-selected{outline:none}
.trace-user-card>div{display:flex;justify-content:space-between;gap:8px;align-items:center}.trace-user-card>span{font-weight:800}.trace-user-card small{}
.trace-state-activo{}
.trace-state-bloqueado,.trace-state-eliminado{}
.trace-state-histórico{}
.trace-filter-panel{margin-top:16px}
.trace-filters{display:grid;grid-template-columns:repeat(5,minmax(145px,1fr));gap:12px;align-items:end}
.trace-filters label{display:grid;gap:6px;min-width:0}.trace-filters label,.trace-filters input,.trace-filters select{width:100%}
.trace-filters .trace-search{grid-column:span 3}.trace-filters .actions{grid-column:span 2;display:flex;justify-content:flex-end}
.trace-timeline{display:grid;gap:13px;margin-top:16px}
.trace-event-card{--trace-color:#4c9ee8;--trace-bg:rgba(76,158,232,.06);border:1px solid var(--border);border-left:6px solid var(--trace-color);}
.trace-event-card.trace-kind-create,.trace-event-card.trace-kind-login{--trace-color:#39c77a;--trace-bg:rgba(57,199,122,.07)}
.trace-event-card.trace-kind-update{--trace-color:#e5bb45;--trace-bg:rgba(229,187,69,.07)}
.trace-event-card.trace-kind-delete,.trace-event-card.trace-kind-error{--trace-color:#ef5b67;--trace-bg:rgba(239,91,103,.07)}
.trace-event-card.trace-kind-restore{--trace-color:#3fcac3;--trace-bg:rgba(63,202,195,.07)}
.trace-event-card.trace-kind-view{--trace-color:#4c9ee8;--trace-bg:rgba(76,158,232,.07)}
.trace-event-card.trace-kind-security{--trace-color:#a475e8;--trace-bg:rgba(164,117,232,.07)}
.trace-event-card.trace-kind-billing{--trace-color:#ef943e;--trace-bg:rgba(239,148,62,.07)}
.trace-event-header{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(160px,.8fr) max-content max-content;align-items:center;gap:14px;padding:13px 15px;border-bottom:1px solid var(--border)}
.trace-event-time strong,.trace-event-time span,.trace-event-user span,.trace-event-user strong,.trace-event-user small{display:block}.trace-event-time span,.trace-event-user span,.trace-event-user small{font-size:.76rem;margin-top:3px}
.trace-result-success{}
.trace-result-error{}
.trace-event-body{padding:15px}.trace-event-body h3{margin:10px 0 13px;font-size:1.12rem}
.trace-event-path{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:.8rem}.trace-event-path strong{}
.trace-context-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.trace-context-grid>div{padding:10px 12px;border:1px solid var(--border);}.trace-context-grid small,.trace-context-grid strong,.trace-context-grid span{display:block}.trace-context-grid small{font-size:.69rem;text-transform:uppercase;letter-spacing:.055em}.trace-context-grid strong{margin-top:4px}.trace-context-grid span{font-size:.76rem;margin-top:3px}
.trace-change-list{margin-top:14px}.trace-change-list h4{margin:0 0 8px}.trace-change-list>div{display:grid;grid-template-columns:minmax(145px,.65fr) minmax(150px,1fr) 18px minmax(150px,1fr);gap:9px;align-items:start;padding:9px 10px;border-top:1px solid var(--border)}.trace-change-list>div:first-of-type{border-top:0}.trace-change-list strong{}.trace-change-list .trace-before,.trace-change-list .trace-after{white-space:normal;overflow-wrap:anywhere}.trace-change-list .trace-before{}.trace-change-list .trace-after{}.trace-event-summary{margin:13px 0 0}
.trace-technical-details{border-top:1px solid var(--border);padding:0 15px 14px}.trace-technical-details>summary{cursor:pointer;padding:12px 0;font-weight:800;}
.trace-technical-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.trace-technical-grid>div{padding:9px;border:1px solid var(--border);min-width:0}.trace-technical-grid small,.trace-technical-grid code{display:block}.trace-technical-grid small{margin-bottom:5px}.trace-technical-grid code{white-space:pre-wrap;overflow-wrap:anywhere}.trace-tech-wide{grid-column:1/-1}
.trace-technical-details h4{margin:14px 0 6px}.trace-technical-details pre{max-height:360px;overflow:auto;padding:12px;border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.76rem}
.trace-pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin:20px 0;flex-wrap:wrap}
@media(max-width:1200px){.purchase-invoice-disclosure>summary{grid-template-columns:130px minmax(190px,1fr) 105px 72px 155px}.purchase-summary-file{display:none}.purchase-detail-top{grid-template-columns:1fr}.trace-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.trace-filters .trace-search{grid-column:span 2}.trace-filters .actions{grid-column:span 1}.trace-event-header{grid-template-columns:1fr 1fr max-content}.trace-event-header .trace-result{grid-column:3}}
@media(max-width:760px){
  .purchase-invoice-disclosure>summary{grid-template-columns:minmax(0,1fr) 112px!important}.purchase-summary-date,.purchase-summary-title,.purchase-summary-file{grid-column:1}.purchase-summary-paid,.purchase-summary-lines,.purchase-summary-total{grid-column:2}.purchase-summary-file{display:none}.purchase-file-payment-actions{grid-template-columns:1fr}.purchase-file-actions,.purchase-secondary-actions{display:grid;grid-template-columns:1fr 1fr}.purchase-file-actions .btn,.purchase-secondary-actions .btn,.purchase-secondary-actions form{width:100%}.purchase-paid-form>div{grid-template-columns:1fr}.purchase-paid-form .btn{width:100%}.purchase-meta-grid{grid-template-columns:1fr 1fr}.purchase-actions{width:100%}
  .trace-filters{grid-template-columns:1fr 1fr}.trace-filters .trace-search,.trace-filters .actions{grid-column:1/-1}.trace-event-header{grid-template-columns:1fr 1fr}.trace-event-header .trace-action-badge,.trace-event-header .trace-result{grid-column:auto}.trace-context-grid{grid-template-columns:1fr}.trace-change-list>div{grid-template-columns:1fr}.trace-change-list>div>b{display:none}.trace-change-list .trace-before:before{content:'Antes: ';font-weight:800;}.trace-change-list .trace-after:before{content:'Después: ';font-weight:800;}.trace-technical-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){.purchase-meta-grid,.purchase-file-actions,.purchase-secondary-actions{grid-template-columns:1fr}.trace-filters,.trace-event-header,.trace-technical-grid{grid-template-columns:1fr}.trace-event-header .trace-action-badge,.trace-event-header .trace-result{justify-self:start}.trace-user-cards{grid-template-columns:1fr}}

/* v022.1 · Colores semánticos fijos y compatibles */

/* Lista de obras: aviso contextual y controles de observaciones. */
.works-visual-table tbody tr.work-row-has-observations{
  position:relative;
  
  
}
.works-visual-table tbody tr.work-row-has-observations:hover{
  
}
.works-visual-table tbody tr.work-row-has-observations>td:first-child>strong{}
.work-progress-cell{vertical-align:top}
.work-observations-controls{
  position:relative;
  display:block;
  width:100%;
  margin-top:11px;
}
.work-observations-button{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%;
  min-height:36px!important;
  margin:0!important;
  padding:8px 12px!important;
  font-size:11px!important;
  font-weight:900!important;
  letter-spacing:.055em;
  white-space:nowrap;
}
.work-observations-controls.has-observations .work-observations-button{width:calc(100% - 46px)!important}
.work-observations-button.has-observations,
.work-observations-controls.has-observations .work-observations-button{
  
  
  border:1px solid var(--border)!important;
  
  
}
.work-observations-button.has-observations:hover,
.work-observations-controls.has-observations .work-observations-button:hover{
  
  
  
}
.work-observations-button.has-observations:active,
.work-observations-controls.has-observations .work-observations-button:active{
  
  
  transform:translateY(1px);
}
.work-observations-viewer{display:block;width:100%;min-height:36px}
.work-observations-toggle{
  position:absolute;
  top:0;
  right:0;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:38px!important;
  min-width:38px!important;
  height:36px!important;
  min-height:36px!important;
  padding:0!important;
  margin:0!important;
  border:1px solid var(--border)!important;
  border-radius:10px!important;
  
  
  
  cursor:pointer;
  list-style:none;
  appearance:none;
  
}
.work-observations-toggle::-webkit-details-marker{display:none}
.work-observations-toggle::marker{content:''}
.work-observations-toggle:hover{}
.work-observations-toggle:active{transform:translateY(1px)}
.work-observations-toggle-icon{display:block;line-height:1;transition:transform .18s ease}
.work-observations-toggle-icon::before{content:'▼';font-size:13px;font-weight:900;}
.work-observations-viewer[open] .work-observations-toggle-icon{transform:rotate(180deg)}
.work-observations-content{
  width:100%;
  margin-top:7px;
  padding:11px 12px;
  border:1px solid var(--border);
  border-left:4px solid var(--border);
  border-radius:12px;
  
  
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  word-break:break-word;
  line-height:1.45;
}
.work-observations-button:focus-visible,.work-observations-toggle:focus-visible,.work-action-icon:focus-visible{
  outline:3px solid #ffffff!important;
  outline-offset:3px!important;
}
.work-observations-form{display:grid;gap:10px}
.work-observations-form textarea{width:100%;min-height:190px;resize:vertical;white-space:pre-wrap}
.work-observations-form .actions{margin-top:4px}

/* Acciones de obra: PNG originales visibles sobre fondos fijos; el tema no puede volverlos amarillos. */
.work-action-icon,
a.btn.work-action-icon,
button.btn.work-action-icon{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:36px!important;
  min-width:36px!important;
  height:36px!important;
  min-height:36px!important;
  padding:0!important;
  overflow:hidden!important;
  border-radius:10px!important;
  
}
.work-action-icon img,
a.btn.work-action-icon img,
button.btn.work-action-icon img{
  display:block!important;
  width:22px!important;
  height:22px!important;
  max-width:22px!important;
  max-height:22px!important;
  object-fit:contain!important;
  
  border:0!important;
  opacity:1!important;
  visibility:visible!important;
  
}
.work-action-icon-graphic{display:none!important}
.work-action-edit,
a.btn.work-action-edit{
  
  
  border:1px solid var(--border)!important;
  
  
}
.work-action-edit:hover,a.btn.work-action-edit:hover{
  
  
  
}
.work-action-edit:active,a.btn.work-action-edit:active{
  
  
  transform:translateY(1px) scale(.97);
}
.work-action-delete,
button.btn.work-action-delete{
  
  
  border:1px solid var(--border)!important;
  
  
}
.work-action-delete:hover,button.btn.work-action-delete:hover{
  
  
  
}
.work-action-delete:active,button.btn.work-action-delete:active{
  
  
  transform:translateY(1px) scale(.97);
}
body.vesmar-light-mode .work-action-edit,
body.vesmar-light-mode .work-action-delete{}

/* Facturas de compra: estados fijos y visibles, sin depender de color-mix ni del color principal del tema. */
.purchase-invoice-disclosure{
  position:relative;
  overflow:hidden;
  border-left-width:8px!important;
  
}
.purchase-invoice-disclosure>summary{
  position:relative;
  z-index:1;
  grid-template-columns:132px minmax(210px,1fr) 150px 126px 76px minmax(150px,.72fr)!important;
  column-gap:14px!important;
}
.purchase-invoice-disclosure .purchase-invoice-detail{position:relative;z-index:1;border-top:0!important}

.purchase-invoice-disclosure[data-payment-state="unpaid"],
.purchase-invoice-disclosure.purchase-invoice-state-unpaid{
  border:2px solid var(--border)!important;
  border-left:8px solid var(--border)!important;
  
}
.purchase-invoice-disclosure[data-payment-state="unpaid"]>summary,
.purchase-invoice-disclosure.purchase-invoice-state-unpaid>summary{
  
}
.purchase-invoice-disclosure[data-payment-state="unpaid"]>summary:hover,
.purchase-invoice-disclosure.purchase-invoice-state-unpaid>summary:hover{}
.purchase-invoice-disclosure[data-payment-state="unpaid"] .purchase-invoice-detail,
.purchase-invoice-disclosure.purchase-invoice-state-unpaid .purchase-invoice-detail{}
.purchase-invoice-disclosure[data-payment-state="unpaid"] .purchase-summary-paid,
.purchase-invoice-disclosure.purchase-invoice-state-unpaid .purchase-summary-paid{}
.purchase-invoice-disclosure[data-payment-state="unpaid"] .purchase-summary-paid strong,
.purchase-invoice-disclosure.purchase-invoice-state-unpaid .purchase-summary-paid strong{}

.purchase-invoice-disclosure[data-payment-state="partial"],
.purchase-invoice-disclosure.purchase-invoice-state-partial{
  border:2px solid var(--border)!important;
  border-left:8px solid var(--border)!important;
  
}
.purchase-invoice-disclosure[data-payment-state="partial"]>summary,
.purchase-invoice-disclosure.purchase-invoice-state-partial>summary{}
.purchase-invoice-disclosure[data-payment-state="partial"]>summary:hover,
.purchase-invoice-disclosure.purchase-invoice-state-partial>summary:hover{}
.purchase-invoice-disclosure[data-payment-state="partial"] .purchase-invoice-detail,
.purchase-invoice-disclosure.purchase-invoice-state-partial .purchase-invoice-detail{}
.purchase-invoice-disclosure[data-payment-state="partial"] .purchase-summary-paid,
.purchase-invoice-disclosure.purchase-invoice-state-partial .purchase-summary-paid{}
.purchase-invoice-disclosure[data-payment-state="partial"] .purchase-summary-paid strong,
.purchase-invoice-disclosure.purchase-invoice-state-partial .purchase-summary-paid strong{}

.purchase-invoice-disclosure[data-payment-state="paid"],
.purchase-invoice-disclosure.purchase-invoice-state-paid{
  border:2px solid var(--border)!important;
  border-left:8px solid var(--border)!important;
  
}
.purchase-invoice-disclosure[data-payment-state="paid"]>summary,
.purchase-invoice-disclosure.purchase-invoice-state-paid>summary{}
.purchase-invoice-disclosure[data-payment-state="paid"]>summary:hover,
.purchase-invoice-disclosure.purchase-invoice-state-paid>summary:hover{}
.purchase-invoice-disclosure[data-payment-state="paid"] .purchase-invoice-detail,
.purchase-invoice-disclosure.purchase-invoice-state-paid .purchase-invoice-detail{}
.purchase-invoice-disclosure[data-payment-state="paid"] .purchase-summary-paid,
.purchase-invoice-disclosure.purchase-invoice-state-paid .purchase-summary-paid{}
.purchase-invoice-disclosure[data-payment-state="paid"] .purchase-summary-paid strong,
.purchase-invoice-disclosure.purchase-invoice-state-paid .purchase-summary-paid strong{}

.purchase-invoice-disclosure[open]>summary{border-bottom:1px solid var(--border)!important}
.purchase-invoice-disclosure .purchase-summary-total strong{}
.purchase-summary-total{text-align:right!important}
.purchase-summary-total strong,.purchase-summary-paid strong,.purchase-summary-lines strong{white-space:nowrap!important}

/* Modo claro: mantiene estados semánticos con fondos claros visibles. */
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="unpaid"],
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-unpaid{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="unpaid"]>summary,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-unpaid>summary{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="unpaid"] .purchase-invoice-detail,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-unpaid .purchase-invoice-detail{}

body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="partial"],
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-partial{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="partial"]>summary,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-partial>summary{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="partial"] .purchase-invoice-detail,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-partial .purchase-invoice-detail{}

body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="paid"],
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-paid{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="paid"]>summary,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-paid>summary{}
body.vesmar-light-mode .purchase-invoice-disclosure[data-payment-state="paid"] .purchase-invoice-detail,
body.vesmar-light-mode .purchase-invoice-disclosure.purchase-invoice-state-paid .purchase-invoice-detail{}

/* Tabla de líneas: 20 + 20 + 10 + 14 + 12 + 10 + 14 = 100 %. */
.purchase-lines-table-wrap{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}
.purchase-lines-table{
  width:100%!important;
  min-width:1040px!important;
  table-layout:fixed!important;
  border-collapse:collapse!important;
}
.purchase-lines-table col.purchase-col-concept{width:20%!important}
.purchase-lines-table col.purchase-col-description{width:20%!important}
.purchase-lines-table col.purchase-col-units{width:10%!important}
.purchase-lines-table col.purchase-col-price{width:14%!important}
.purchase-lines-table col.purchase-col-base{width:12%!important}
.purchase-lines-table col.purchase-col-tax{width:10%!important}
.purchase-lines-table col.purchase-col-total{width:14%!important}
.purchase-lines-table th,.purchase-lines-table td{box-sizing:border-box!important;min-width:0!important;vertical-align:top!important}
.purchase-lines-table th:nth-child(1),.purchase-lines-table td:nth-child(1){white-space:normal!important;overflow-wrap:anywhere!important;word-break:break-word!important}
.purchase-lines-table th:nth-child(2),.purchase-lines-table td:nth-child(2){white-space:normal!important;overflow:visible!important;word-break:normal!important}
.purchase-lines-table th:nth-child(n+3),.purchase-lines-table td:nth-child(n+3){
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  font-variant-numeric:tabular-nums!important;
  text-align:right!important;
}
.purchase-lines-table td:nth-child(3),.purchase-lines-table th:nth-child(3){text-align:center!important}
.purchase-description textarea{min-height:72px;resize:vertical;white-space:pre-wrap}
.purchase-line-description-cell{padding-top:9px!important;padding-bottom:9px!important}
.purchase-line-description{width:100%;min-width:0;border:1px solid var(--border);}
.purchase-line-description>summary{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:3px;
  min-width:0;
  padding:7px 9px;
  cursor:pointer;
  list-style:none;
}
.purchase-line-description>summary::-webkit-details-marker{display:none}
.purchase-line-description>summary:hover{}
.purchase-line-description>summary:focus-visible{outline:2px solid var(--accent2);outline-offset:-2px}
.purchase-line-description-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:900;white-space:nowrap}
.purchase-line-description-label::after{content:'+';font-size:15px;line-height:1}
.purchase-line-description[open] .purchase-line-description-label::after{content:'−'}
.purchase-line-description-preview{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
.purchase-line-description[open] .purchase-line-description-preview{display:none}
.purchase-line-description-content{
  padding:9px;
  border-top:1px solid var(--border);
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  word-break:break-word;
  line-height:1.45;
}
.purchase-line-description-empty{}
body.vesmar-light-mode .purchase-line-description{}
body.vesmar-light-mode .purchase-line-description-content{}

@media(max-width:760px){.work-observations-content{font-size:.88rem}}

/* Trazabilidad v2: composición limpia, responsiva y aislada de estilos antiguos. */
.trace-v2-layout{
  width:min(1660px,calc(100% - 34px))!important;
  max-width:1660px!important;
  margin-inline:auto!important;
  padding-bottom:42px!important;
}
.trace-v2-page-header{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:24px;
  padding:28px 30px;
  margin-bottom:16px;
  border:1px solid var(--border);
  border-left:6px solid var(--accent);
  
  
}
.trace-v2-page-header h1{margin:5px 0 7px;font-size:clamp(1.7rem,3vw,2.55rem);line-height:1.05}
.trace-v2-page-header p{margin:0;max-width:820px;line-height:1.55}
.trace-v2-eyebrow{display:block;font-size:.72rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.trace-v2-stats{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:16px;
}
.trace-v2-stats article{
  position:relative;
  overflow:hidden;
  min-height:122px;
  padding:18px 19px;
  border:1px solid var(--border);
  
  
}
.trace-v2-stats article:before{content:"";position:absolute;inset:0 auto 0 0;width:4px;}
.trace-v2-stats article.is-success:before{}
.trace-v2-stats article.is-error:before{}
.trace-v2-stats small,.trace-v2-stats strong,.trace-v2-stats span{display:block}
.trace-v2-stats small{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.trace-v2-stats strong{margin:8px 0 5px;font-size:2rem;line-height:1;font-variant-numeric:tabular-nums}
.trace-v2-stats span{font-size:.78rem}
.trace-v2-filter-panel{padding:0!important;margin-bottom:16px!important;overflow:hidden}
.trace-v2-filter-drawer>summary,.trace-v2-users>summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:17px 19px;
  list-style:none;
  cursor:pointer;
  border-bottom:1px solid transparent;
}
.trace-v2-filter-drawer[open]>summary,.trace-v2-users[open]>summary{}
.trace-v2-filter-drawer>summary::-webkit-details-marker,.trace-v2-users>summary::-webkit-details-marker{display:none}
.trace-v2-filter-drawer>summary strong,.trace-v2-filter-drawer>summary small,.trace-v2-users>summary strong,.trace-v2-users>summary small{display:block}
.trace-v2-filter-drawer>summary small,.trace-v2-users>summary small{margin-top:4px;font-size:.78rem}
.trace-v2-filter-count{padding:6px 10px;border:1px solid var(--border);font-size:.72rem;font-weight:900;text-transform:uppercase;white-space:nowrap}
.trace-v2-filters{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  padding:18px 19px 20px;
  
}
.trace-v2-filters label{display:grid;gap:6px;min-width:0;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.045em}
.trace-v2-filters input,.trace-v2-filters select{width:100%;min-width:0;text-transform:none;letter-spacing:normal}
.trace-v2-search{grid-column:span 3}
.trace-v2-filter-actions{grid-column:span 2;display:flex;align-items:end;justify-content:flex-end;gap:9px}
.trace-v2-users{margin-bottom:16px!important}
.trace-v2-user-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:16px 18px 19px}
.trace-v2-user-card{display:grid;gap:7px;min-width:0;padding:13px 14px;border:1px solid var(--border);text-decoration:none}
.trace-v2-user-card:hover,.trace-v2-user-card:focus-visible,.trace-v2-user-card.is-selected{outline:none}
.trace-v2-user-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.trace-v2-user-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trace-v2-user-card>span{font-weight:900}
.trace-v2-user-card small{font-size:.74rem;overflow-wrap:anywhere}
.trace-v2-user-state{padding:4px 7px;border:1px solid var(--border);font-size:.63rem;font-weight:900;text-transform:uppercase;white-space:nowrap}
.trace-v2-user-state.is-activo{}
.trace-v2-user-state.is-bloqueado,.trace-v2-user-state.is-eliminado{}
.trace-v2-feed{display:grid;gap:12px}
.trace-v2-feed-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:2px 2px 5px}
.trace-v2-feed-header h2{margin:0 0 4px}
.trace-v2-feed-header p{margin:0;font-size:.8rem}
.trace-v2-legend{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.trace-v2-legend span,.trace-v2-action-badge,.trace-v2-result{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;border:1px solid transparent;font-size:.66rem;font-weight:900;text-transform:uppercase;letter-spacing:.045em;white-space:nowrap}
.trace-v2-legend .is-create{}
.trace-v2-legend .is-update{}
.trace-v2-legend .is-delete,.trace-v2-legend .is-error{}
.trace-v2-legend .is-view{}
.trace-v2-legend .is-security{}
.trace-v2-legend .is-billing{}
.trace-v2-event-list{display:grid;gap:12px}
.trace-v2-event{
  --tv2-accent:#4c9ee8;
  --tv2-soft:rgba(76,158,232,.10);
  overflow:hidden;
  border:1px solid var(--border);
  border-left:7px solid var(--tv2-accent);
  
  
}
.trace-v2-event.trace-v2-kind-create,.trace-v2-event.trace-v2-kind-login{--tv2-accent:#39c77a;--tv2-soft:rgba(57,199,122,.11)}
.trace-v2-event.trace-v2-kind-update{--tv2-accent:#e5bb45;--tv2-soft:rgba(229,187,69,.11)}
.trace-v2-event.trace-v2-kind-delete,.trace-v2-event.trace-v2-kind-error{--tv2-accent:#ef5b67;--tv2-soft:rgba(239,91,103,.11)}
.trace-v2-event.trace-v2-kind-restore{--tv2-accent:#3fcac3;--tv2-soft:rgba(63,202,195,.11)}
.trace-v2-event.trace-v2-kind-view{--tv2-accent:#4c9ee8;--tv2-soft:rgba(76,158,232,.11)}
.trace-v2-event.trace-v2-kind-security{--tv2-accent:#a475e8;--tv2-soft:rgba(164,117,232,.11)}
.trace-v2-event.trace-v2-kind-billing{--tv2-accent:#ef943e;--tv2-soft:rgba(239,148,62,.11)}
.trace-v2-event-header{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:18px;align-items:start;padding:17px 19px 14px;border-bottom:1px solid var(--border)}
.trace-v2-event-heading{min-width:0}
.trace-v2-badges{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.trace-v2-action-badge{}
.trace-v2-result.is-success{}
.trace-v2-result.is-error{}
.trace-v2-path{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:.76rem}
.trace-v2-path strong{}
.trace-v2-event-heading h3{margin:7px 0 0;font-size:1.08rem;line-height:1.38}
.trace-v2-event-time{text-align:right;white-space:nowrap}
.trace-v2-event-time strong,.trace-v2-event-time span{display:block}
.trace-v2-event-time strong{font-variant-numeric:tabular-nums}
.trace-v2-event-time span{margin-top:4px;font-size:.72rem}
.trace-v2-context{display:grid;grid-template-columns:minmax(160px,.65fr) minmax(220px,1fr) minmax(240px,1.25fr);gap:9px;padding:13px 19px}
.trace-v2-context>div{min-width:0;padding:10px 12px;border:1px solid var(--border);}
.trace-v2-context small,.trace-v2-context strong,.trace-v2-context span{display:block}
.trace-v2-context small{font-size:.65rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em}
.trace-v2-context strong{margin-top:4px;overflow-wrap:anywhere}
.trace-v2-context span{margin-top:3px;font-size:.72rem;overflow-wrap:anywhere}
.trace-v2-changes{padding:0 19px 15px}
.trace-v2-changes h4{margin:2px 0 8px;font-size:.86rem}
.trace-v2-change-table{overflow:hidden;border:1px solid var(--border);}
.trace-v2-change-row{display:grid;grid-template-columns:minmax(145px,.65fr) minmax(170px,1fr) 24px minmax(170px,1fr);gap:10px;align-items:start;padding:10px 11px;border-top:1px solid var(--border)}
.trace-v2-change-row:first-child{border-top:0}
.trace-v2-change-row>strong{font-size:.78rem}
.trace-v2-before,.trace-v2-after{overflow-wrap:anywhere;white-space:normal;font-size:.82rem;line-height:1.45}
.trace-v2-before{}
.trace-v2-after{}
.trace-v2-arrow{text-align:center;font-weight:900}
.trace-v2-summary{margin:0 19px 15px;padding:11px 12px;border-left:3px solid var(--tv2-accent);line-height:1.5}
.trace-v2-summary.is-muted{}
.trace-v2-technical{border-top:1px solid var(--border);padding:0 19px 15px}
.trace-v2-technical>summary{padding:12px 0;cursor:pointer;font-size:.78rem;font-weight:850;list-style-position:inside}
.trace-v2-tech-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.trace-v2-tech-grid>div{min-width:0;padding:9px 10px;border:1px solid var(--border);}
.trace-v2-tech-grid .is-wide{grid-column:1/-1}
.trace-v2-tech-grid small,.trace-v2-tech-grid code{display:block}
.trace-v2-tech-grid small{margin-bottom:4px;font-size:.68rem;text-transform:uppercase}
.trace-v2-tech-grid code{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.73rem}
.trace-v2-technical h4{margin:14px 0 6px;font-size:.82rem}
.trace-v2-technical pre{max-height:330px;overflow:auto;margin:0;padding:11px;border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.72rem;line-height:1.45}
.trace-v2-empty{padding:22px!important;text-align:center;}
.trace-v2-pagination{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin:20px 0}
.trace-v2-pagination span{font-size:.82rem}

@media(max-width:1260px){
  .purchase-invoice-disclosure>summary{grid-template-columns:124px minmax(190px,1fr) 140px 116px 72px!important}
  .purchase-summary-file{display:none!important}
  .trace-v2-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trace-v2-filters{grid-template-columns:repeat(3,minmax(0,1fr))}
  .trace-v2-search{grid-column:span 2}
  .trace-v2-filter-actions{grid-column:span 1}
  .trace-v2-user-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:860px){
  .trace-v2-layout{width:min(100% - 20px,1660px)!important}
  .trace-v2-page-header{align-items:flex-start;flex-direction:column;padding:22px}
  .trace-v2-page-header .btn{width:100%}
  .trace-v2-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trace-v2-search,.trace-v2-filter-actions{grid-column:1/-1}
  .trace-v2-filter-actions{justify-content:stretch}
  .trace-v2-filter-actions .btn{flex:1}
  .trace-v2-user-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trace-v2-feed-header{align-items:flex-start;flex-direction:column}
  .trace-v2-legend{justify-content:flex-start}
  .trace-v2-event-header{grid-template-columns:1fr}
  .trace-v2-event-time{text-align:left}
  .trace-v2-context{grid-template-columns:1fr 1fr}
  .trace-v2-context>div:last-child{grid-column:1/-1}
  .trace-v2-tech-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:700px){
  .purchase-invoice-disclosure>summary{
    grid-template-columns:minmax(0,1fr) 118px!important;
    grid-template-areas:"date total" "invoice paid" "invoice lines"!important;
    align-items:start!important;
  }
  .purchase-summary-date{grid-area:date!important}
  .purchase-summary-title{grid-area:invoice!important}
  .purchase-summary-total{grid-area:total!important}
  .purchase-summary-paid{grid-area:paid!important}
  .purchase-summary-lines{grid-area:lines!important}
  .purchase-summary-file{display:none!important}
  .trace-v2-stats{grid-template-columns:1fr}
  .trace-v2-filters{grid-template-columns:1fr}
  .trace-v2-search,.trace-v2-filter-actions{grid-column:1}
  .trace-v2-user-grid{grid-template-columns:1fr}
  .trace-v2-context{grid-template-columns:1fr}
  .trace-v2-context>div:last-child{grid-column:auto}
  .trace-v2-change-row{grid-template-columns:1fr}
  .trace-v2-change-row .trace-v2-arrow{display:none}
  .trace-v2-before:before{content:"Antes: ";font-weight:900;}
  .trace-v2-after:before{content:"Después: ";font-weight:900;}
  .trace-v2-tech-grid{grid-template-columns:1fr}
  .trace-v2-tech-grid .is-wide{grid-column:auto}
}
@media(max-width:480px){
  .trace-v2-page-header{padding:18px}
  .trace-v2-filter-drawer>summary,.trace-v2-users>summary{align-items:flex-start;flex-direction:column}
  .trace-v2-filters{padding:14px}
  .trace-v2-filter-actions{display:grid;grid-template-columns:1fr}
  .trace-v2-event-header,.trace-v2-context,.trace-v2-changes,.trace-v2-technical{padding-left:13px;padding-right:13px}
}

/* v023 · Indicador global de operaciones 0–100 */
.vesmar-operation-loader{
  position:fixed;
  inset:0;
  z-index:10050;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
  
  
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .18s ease,visibility .18s ease;
}
.vesmar-operation-loader.show{opacity:1;visibility:visible;pointer-events:auto}
.vesmar-operation-loader-card{
  display:grid;
  grid-template-columns:54px minmax(0,1fr) auto;
  gap:12px 15px;
  align-items:center;
  width:min(520px,calc(100vw - 34px));
  padding:20px;
  border:1px solid color-mix(in srgb,var(--accent) 48%,var(--border));
  border-radius:18px;
  
  
}
.vesmar-operation-loader-mark{
  grid-row:span 2;
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  border:2px solid color-mix(in srgb,var(--accent) 74%,white);
  border-radius:15px;
  
  
  animation:vesmar-loader-pulse 1.15s ease-in-out infinite;
}
.vesmar-operation-loader-mark span{font-size:1.42rem;font-weight:950}
.vesmar-operation-loader-copy{min-width:0}
.vesmar-operation-loader-copy strong,.vesmar-operation-loader-copy span{display:block}
.vesmar-operation-loader-copy strong{font-size:1.02rem}
.vesmar-operation-loader-copy span{margin-top:4px;font-size:.8rem;line-height:1.35}
.vesmar-operation-loader-value{font-size:1.35rem;font-weight:950;font-variant-numeric:tabular-nums;}
.vesmar-operation-loader-track{
  grid-column:2/4;
  position:relative;
  height:11px;
  overflow:hidden;
  border:1px solid var(--border);
  border-radius:999px;
  
}
.vesmar-operation-loader-track span{
  display:block;
  width:0;
  height:100%;
  border-radius:inherit;
  
  
  transition:width .16s linear;
}
.vesmar-operation-loader-track:after{
  content:"";
  position:absolute;
  inset:0;
  
  transform:translateX(-100%);
  animation:vesmar-loader-sweep 1.2s linear infinite;
}
.vesmar-operation-loader-card>small{grid-column:2/4;font-size:.7rem}
body.vesmar-operation-loading{cursor:progress}
body.vesmar-operation-loading>*:not(.vesmar-operation-loader){user-select:none}
@keyframes vesmar-loader-pulse{50%{transform:scale(1.055);}}
@keyframes vesmar-loader-sweep{to{transform:translateX(100%)}}
@media(max-width:560px){
  .vesmar-operation-loader-card{grid-template-columns:44px minmax(0,1fr) auto;padding:16px;gap:10px 11px}
  .vesmar-operation-loader-mark{width:44px;height:44px;border-radius:12px}
  .vesmar-operation-loader-track,.vesmar-operation-loader-card>small{grid-column:1/4}
  .vesmar-operation-loader-copy span{font-size:.74rem}
  .vesmar-operation-loader-value{font-size:1.15rem}
}
@media(prefers-reduced-motion:reduce){.vesmar-operation-loader-mark,.vesmar-operation-loader-track:after{animation:none}.vesmar-operation-loader-track span{transition:none}}

/* v023 · Trazabilidad simplificada por acciones y obras */
.trace-v2-layout{width:min(100% - 28px,1720px)!important}
.trace-v2-page-header{padding:22px 24px!important}
.trace-v2-page-header p{font-size:.88rem!important}
.trace-v2-stats{gap:10px!important;margin:12px 0!important}
.trace-v2-stats article{min-height:112px!important;padding:15px 16px!important;border-radius:14px}
.trace-v2-stats strong{font-size:1.72rem!important}
.trace-v2-filter-drawer>summary,.trace-v2-users>summary{padding:14px 17px!important}
.trace-v2-filters{padding:14px 17px 17px!important;gap:10px!important}
.trace-v2-filters label{font-size:.66rem!important}
.trace-v3-works{margin-bottom:14px!important;padding:16px!important}
.trace-v3-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px}
.trace-v3-section-head h2{margin:0;font-size:1.05rem}
.trace-v3-section-head p{margin:3px 0 0;font-size:.76rem}
.trace-v3-work-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;max-height:252px;overflow:auto;padding-right:3px}
.trace-v3-work-card{
  display:grid;
  grid-template-columns:34px minmax(0,1fr);
  grid-template-rows:auto auto;
  column-gap:9px;
  align-items:center;
  min-width:0;
  padding:10px 11px;
  border:1px solid var(--border);
  border-radius:11px;
  
  
  text-decoration:none;
}
.trace-v3-work-card:hover,.trace-v3-work-card:focus-visible{outline:none}
.trace-v3-work-card.is-selected{}
.trace-v3-work-icon{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--border);border-radius:9px;font-size:1rem;font-weight:950}
.trace-v3-work-card.is-selected .trace-v3-work-icon{}
.trace-v3-work-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.83rem}
.trace-v3-work-card small{font-size:.68rem}
.trace-v2-feed-header{padding-top:7px!important}
.trace-v2-legend span{gap:5px;border-radius:999px}
.trace-v2-legend b,.trace-v2-action-badge b{display:inline-grid;place-items:center;min-width:15px;font-size:.82rem;line-height:1}
.trace-v2-event{border-radius:14px!important}
.trace-v2-event-header{grid-template-columns:42px minmax(0,1fr) max-content!important;gap:12px!important;padding:14px 16px 12px!important}
.trace-v3-event-icon{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--tv2-accent);border-radius:11px;font-size:1.2rem;font-weight:950}
.trace-v2-badges{margin-bottom:5px!important}
.trace-v2-action-badge{gap:5px!important;border-radius:999px}
.trace-v2-event-heading h3{margin-top:5px!important;font-size:.98rem!important}
.trace-v2-path{font-size:.69rem!important}
.trace-v2-context{padding:10px 16px!important;gap:7px!important}
.trace-v2-context>div{padding:8px 10px!important;border-radius:9px}
.trace-v2-context small{font-size:.59rem!important}
.trace-v2-context strong{font-size:.8rem}
.trace-v2-context span{font-size:.66rem!important}
.trace-v2-changes{padding:0 16px 11px!important}
.trace-v2-change-row{padding:8px 10px!important;font-size:.78rem}
.trace-v2-summary{margin:0 16px 11px!important;padding:8px 10px!important;font-size:.78rem}
.trace-v2-technical{padding:0 16px 11px!important}
.trace-v2-technical>summary{padding:9px 0!important;font-size:.7rem!important}
body.vesmar-light-mode .trace-v3-work-card{}
body.vesmar-light-mode .trace-v2-context>div{}
@media(max-width:920px){
  .trace-v3-work-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trace-v2-event-header{grid-template-columns:40px minmax(0,1fr)!important}
  .trace-v2-event-time{grid-column:2;text-align:left!important}
}
@media(max-width:620px){
  .trace-v2-layout{width:min(100% - 12px,1720px)!important}
  .trace-v3-section-head{align-items:flex-start;flex-direction:column}
  .trace-v3-work-grid{grid-template-columns:1fr;max-height:320px}
  .trace-v2-event-header{grid-template-columns:34px minmax(0,1fr)!important;padding:12px!important}
  .trace-v3-event-icon{width:34px;height:34px;border-radius:9px;font-size:1rem}
  .trace-v2-event-time{grid-column:1/3;padding-left:46px}
  .trace-v2-context,.trace-v2-changes,.trace-v2-technical{padding-left:12px!important;padding-right:12px!important}
}

/* Incidencias · Informes de reuniones */
.meeting-reports-page{max-width:1580px}
.meeting-reports-eyebrow{margin:0 0 5px;font-size:.72rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.meeting-report-section-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}
.meeting-report-section-heading h2{margin:0}
.meeting-report-stat{position:relative;overflow:hidden;border-left:5px solid currentColor}
.meeting-report-stat span{display:block;font-size:.78rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.meeting-report-stat strong{display:block;margin-top:7px;font-size:2.1rem;line-height:1}
.meeting-report-stat--realizado{}
.meeting-report-stat--sin-realizar{}
.meeting-report-stat--en-proceso{}
.meeting-report-table{min-width:1180px}
.meeting-report-row{transition:background .2s ease}
.meeting-report-row--realizado{}
.meeting-report-row--sin-realizar{}
.meeting-report-row--en-proceso{}
.meeting-report-status{border-width:1px;border-style:solid;white-space:nowrap}
.meeting-report-status--realizado{}
.meeting-report-status--sin-realizar{}
.meeting-report-status--en-proceso{}
.meeting-report-table details{margin-top:8px;max-width:430px}
.meeting-report-table summary{cursor:pointer;font-size:.78rem;font-weight:800}
.meeting-report-table details p{white-space:normal;line-height:1.55}
.meeting-report-file{max-width:240px;justify-content:flex-start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meeting-report-file-size,.meeting-report-updated{display:block;margin-top:7px}
.meeting-report-status-form{display:grid;grid-template-columns:minmax(145px,1fr) auto;gap:7px;align-items:center;min-width:260px}
.meeting-report-status-form select,.meeting-report-status-form .btn{min-height:42px;padding:9px 11px}
body.vesmar-light-mode .meeting-report-row--realizado{}
body.vesmar-light-mode .meeting-report-row--sin-realizar{}
body.vesmar-light-mode .meeting-report-row--en-proceso{}
@media(max-width:720px){
  .meeting-report-section-heading{align-items:flex-start;flex-direction:column}
  .meeting-report-status-form{min-width:230px}
}

/* Gestión de proyectos internos */
.project-management-page,.project-detail-page,.project-calendar-page{max-width:1580px}
.project-eyebrow{margin:0 0 5px;font-size:.72rem;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.project-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.project-section-heading h2,.project-section-heading p{margin-top:0}
.project-list-heading{margin-bottom:14px}
.project-overview-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.project-stat{position:relative;overflow:hidden;border-left:5px solid currentColor}
.project-stat span{display:block;font-size:.76rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.project-stat strong{display:block;margin-top:7px;font-size:2.08rem;line-height:1}
.project-stat--no-hecha{}
.project-stat--en-proceso{}
.project-stat--completada{}
.project-stat--mine{}
.project-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,390px),1fr));gap:16px}
.project-card,.project-task,.project-hero{position:relative;overflow:hidden;border-left:5px solid transparent}
.project-card--no-hecha,.project-task--no-hecha,.project-hero--no-hecha{border-left-color:#ef5656;}
.project-card--en-proceso,.project-task--en-proceso,.project-hero--en-proceso{border-left-color:#f19833;}
.project-card--completada,.project-task--completada,.project-hero--completada{border-left-color:#35c778;}
.project-card-head,.project-card-footer,.project-task-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.project-card h3{margin:18px 0 8px;font-size:1.18rem}
.project-card>p{min-height:3.2em;line-height:1.58}
.project-card-footer{align-items:flex-end;margin-top:18px}
.project-status{border:1px solid currentColor;white-space:nowrap}
.project-status--no-hecha{}
.project-status--en-proceso{}
.project-status--completada{}
.project-progress{height:9px;margin-top:16px;overflow:hidden;border:1px solid var(--border);border-radius:999px;}
.project-progress span{display:block;height:100%;border-radius:inherit;transition:width .25s ease}
.project-progress-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;font-size:.77rem}
.project-progress-meta strong{font-size:.92rem}
.project-task-counts{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.project-count{padding:5px 9px;border:1px solid currentColor;border-radius:999px;font-size:.7rem;font-weight:850}
.project-count--no-hecha{}
.project-count--en-proceso{}
.project-count--completada{}
.project-empty{text-align:center;padding:38px 22px}
.project-empty h3{margin:0 0 7px}
.project-hero .project-section-heading{align-items:center}
.project-hero .project-section-heading p{max-width:940px;margin:12px 0 0;line-height:1.62}
.project-hero-progress{display:flex;flex-direction:column;align-items:flex-end;flex:0 0 auto}
.project-hero-progress strong{font-size:2.4rem;line-height:1;}
.project-hero-progress span{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}
.project-hero>small{display:block;margin-top:15px}
.project-details-panel>summary,.project-task-history>summary{cursor:pointer;font-weight:850}
.project-task-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,480px),1fr));gap:16px}
.project-task{scroll-margin-top:18px}
.project-task-head>div{display:flex;align-items:center;gap:9px}
.project-task h3{margin:18px 0 8px;font-size:1.13rem}
.project-responsible{font-size:.78rem;text-align:right}
.project-task-description{min-height:3em;line-height:1.6}
.project-task-update-form{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:12px;margin-top:18px;padding:15px;border:1px solid var(--border);border-radius:12px;}
.project-task-update-form .actions{align-self:end}
.project-task-update-form textarea{min-height:78px}
.project-readonly-note{margin:18px 0 0;padding:11px 13px;border:1px solid var(--border);border-radius:10px;font-size:.78rem;}
.project-task-history{margin-top:16px;border-top:1px solid var(--border);padding-top:13px}
.project-history-list{display:grid;gap:8px;margin-top:12px}
.project-history-item{padding:11px 12px;border:1px solid var(--border);border-radius:10px;}
.project-history-item>div{display:flex;align-items:center;justify-content:space-between;gap:10px}
.project-history-item time{font-size:.68rem}
.project-history-item p{margin:6px 0 0;font-size:.78rem;line-height:1.5}
.project-history-transition{font-weight:850}
.project-microtasks{margin-top:18px;padding:15px;border:1px solid var(--border);border-radius:13px;}
.project-microtasks-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,220px);align-items:center;gap:14px}
.project-microtasks-heading strong,.project-microtasks-heading span{display:block}
.project-microtasks-heading span{margin-top:3px;font-size:.72rem}
.project-micro-progress{height:7px;overflow:hidden;border-radius:999px;}
.project-micro-progress span{display:block;height:100%;border-radius:inherit;}
.project-micro-empty{margin:13px 0 0;font-size:.78rem}
.project-micro-list{display:grid;gap:8px;margin-top:13px}
.project-micro-item{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(125px,160px) auto;align-items:center;gap:9px;margin:0;padding:9px 10px;border:1px solid currentColor;border-radius:10px}
.project-micro-item.is-pending{}
.project-micro-item.is-done{}
.project-micro-item.is-done>strong{text-decoration:line-through;text-decoration-thickness:2px;opacity:.75}
.project-micro-indicator{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;font-size:.8rem;font-weight:950}
.project-micro-item select{min-height:36px;padding:7px 9px;}
.project-micro-item .btn{min-height:36px;padding:7px 10px}
.project-micro-create{margin-top:13px;padding-top:13px;border-top:1px solid var(--border)}
.project-micro-create label{display:block;margin-bottom:6px;font-size:.72rem;font-weight:850}
.project-micro-create>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.project-micro-create input{min-width:0}
.project-create-panel--compact{width:min(720px,100%);padding:0!important;overflow:hidden}
.project-create-panel--compact>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 17px;cursor:pointer;list-style:none}
.project-create-panel--compact>summary::-webkit-details-marker{display:none}
.project-create-panel--compact>summary span,.project-create-panel--compact>summary strong,.project-create-panel--compact>summary small{display:block}
.project-create-panel--compact>summary strong{font-size:.86rem;text-transform:uppercase;letter-spacing:.08em}
.project-create-panel--compact>summary small{margin-top:3px;font-size:.72rem}
.project-create-panel--compact>summary b{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--border);border-radius:9px;font-size:1.2rem;transition:transform .2s ease}
.project-create-panel--compact[open]>summary{border-bottom:1px solid var(--border)}
.project-create-panel--compact[open]>summary b{transform:rotate(45deg)}
.project-create-panel--compact>form{margin:0!important;padding:17px}
.project-due{display:flex;align-items:center;gap:7px;width:max-content;max-width:100%;margin:13px 0 10px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;font-size:.74rem}
.project-due span{font-size:1rem}
.project-due--overdue{}
.project-due--today{}
.project-due--upcoming{}
.archive-view-button{}
.project-calendar-button{}
.archive-action{}
.project-archive-notice{margin:0 0 14px;padding:12px 15px;border:1px solid var(--border);border-radius:12px;}
.work-archive-form{display:inline-flex;margin:9px 0 0 8px;vertical-align:middle}
.project-calendar-stats{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}
.project-calendar-stats article{border-left:5px solid var(--border);}
.project-calendar-stats article:nth-child(2){border-left-color:#4c9ee8;}
.project-calendar-stats article.project-calendar-stat-completed{border-left-color:#35c778;}
.project-calendar-stats span{display:block;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.project-calendar-stats strong{display:block;margin-top:7px;font-size:2rem;line-height:1}
.project-calendar-shell{padding:0!important;overflow:hidden}
.project-calendar-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:20px 22px;border-bottom:1px solid var(--border)}
.project-calendar-toolbar h2{margin:0;font-size:1.55rem}
.project-calendar-legend{display:flex;flex-wrap:wrap;gap:7px;padding:12px 22px;border-bottom:1px solid var(--border);}
.project-calendar-legend span{padding:5px 9px;border:1px solid currentColor;border-radius:999px;font-size:.67rem;font-weight:850}
.project-calendar-legend .is-project{}
.project-calendar-legend .is-task{}
.project-calendar-legend .is-completion{}
.project-calendar-legend .is-overdue{}
.project-calendar-scroll{overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
.project-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(138px,1fr));min-width:966px}
.project-calendar-weekdays{border-bottom:1px solid var(--border);}
.project-calendar-weekdays>div{padding:10px 8px;border-left:1px solid var(--border);font-size:.68rem;font-weight:900;text-align:center;text-transform:uppercase;letter-spacing:.055em}
.project-calendar-days{grid-auto-rows:minmax(150px,auto)}
.project-calendar-day{min-width:0;padding:9px;border-left:1px solid var(--border);border-top:1px solid var(--border);}
.project-calendar-day.is-outside{opacity:.56}
.project-calendar-day.is-today{}
.project-calendar-day>time{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.project-calendar-day>time span{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;font-size:.82rem;font-weight:900}
.project-calendar-day.is-today>time span{}
.project-calendar-day>time small{font-size:.62rem;text-transform:uppercase}
.project-calendar-events{display:grid;gap:6px}
.project-calendar-event{display:grid;grid-template-columns:24px minmax(0,1fr);gap:7px;align-items:start;padding:7px;border:1px solid currentColor;border-radius:9px;text-decoration:none;transition:transform .16s ease,filter .16s ease}
.project-calendar-event:hover{transform:translateY(-1px);}
.project-calendar-event.is-task{}
.project-calendar-event.is-completion{}
.project-calendar-event.is-overdue{}
.project-calendar-event.is-archived{opacity:.57;}
.project-calendar-event-icon{display:grid;place-items:center;width:23px;height:23px;border-radius:7px;font-size:.68rem;font-weight:950}
.project-calendar-event>span:last-child{min-width:0}
.project-calendar-event strong,.project-calendar-event small{display:block;overflow-wrap:anywhere;line-height:1.3}
.project-calendar-event strong{font-size:.68rem}
.project-calendar-event small{margin-top:3px;font-size:.59rem}
body.vesmar-light-mode .project-card--no-hecha,body.vesmar-light-mode .project-task--no-hecha,body.vesmar-light-mode .project-hero--no-hecha{}
body.vesmar-light-mode .project-card--en-proceso,body.vesmar-light-mode .project-task--en-proceso,body.vesmar-light-mode .project-hero--en-proceso{}
body.vesmar-light-mode .project-card--completada,body.vesmar-light-mode .project-task--completada,body.vesmar-light-mode .project-hero--completada{}
body.vesmar-light-mode .project-task-update-form,body.vesmar-light-mode .project-history-item,body.vesmar-light-mode .project-readonly-note{}
body.vesmar-light-mode .project-microtasks{}
body.vesmar-light-mode .project-micro-create{}
body.vesmar-light-mode .project-archive-notice{}
body.vesmar-light-mode .project-create-panel--compact[open]>summary,body.vesmar-light-mode .project-calendar-toolbar,body.vesmar-light-mode .project-calendar-legend,body.vesmar-light-mode .project-calendar-weekdays{}
body.vesmar-light-mode .project-calendar-day{}
body.vesmar-light-mode .project-calendar-day.is-outside{}
body.vesmar-light-mode .project-calendar-stats article{}
@media(max-width:980px){
  .project-overview-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
  .project-section-heading,.project-card-footer,.project-task-head{align-items:flex-start;flex-direction:column}
  .project-hero-progress{align-items:flex-start}
  .project-responsible{text-align:left}
  .project-task-update-form{grid-template-columns:1fr}
  .project-microtasks-heading{grid-template-columns:1fr}
  .project-micro-item{grid-template-columns:28px minmax(0,1fr)}
  .project-micro-item select,.project-micro-item .btn,.project-micro-item .badge{grid-column:2}
  .work-archive-form{display:flex;margin:9px 0 0}
  .project-calendar-stats{grid-template-columns:1fr}
  .project-calendar-toolbar{align-items:flex-start;flex-direction:column}
  .project-calendar-toolbar .actions{width:100%}
  .project-calendar-toolbar .btn{flex:1}
}
@media(max-width:480px){
  .project-overview-stats{grid-template-columns:1fr}
}


/* VESMAR 2026.08.28 - Densidad Ultracondensado.
   Mantiene el tamano tipografico configurado y recupera espacio reduciendo
   margenes, rellenos, alturas y separaciones en toda la aplicacion. */
body.density-ultracompact{--user-panel-gap:6px;--user-button-height:30px;--user-line-height:1.18}
body.density-ultracompact .layout{padding:70px 8px 10px 58px!important}
body.density-ultracompact .topbar{gap:6px!important;margin-bottom:7px!important;padding-right:164px!important}
body.density-ultracompact .topbar h1{font-size:calc(1.55rem * var(--user-heading-scale,1));line-height:1.06}
body.density-ultracompact .topbar p{margin:2px 0!important;line-height:1.18}
body.density-ultracompact .grid,body.density-ultracompact .form-grid,body.density-ultracompact .billing-grid{gap:6px!important}
body.density-ultracompact .panel,body.density-ultracompact .card,body.density-ultracompact .modal-card{padding:8px!important;border-radius:min(var(--user-radius,22px),10px)!important}
body.density-ultracompact .phase,body.density-ultracompact .metric,body.density-ultracompact .worker-card,body.density-ultracompact .calendar-box{padding:6px!important;margin-top:5px!important;margin-bottom:5px!important;border-radius:8px!important}
body.density-ultracompact h1,body.density-ultracompact h2,body.density-ultracompact h3,body.density-ultracompact h4{margin-top:0;margin-bottom:4px;line-height:1.08}
body.density-ultracompact p{margin-top:3px;margin-bottom:4px}
body.density-ultracompact label{margin:3px 0 2px!important;line-height:1.12}
body.density-ultracompact input,body.density-ultracompact select,body.density-ultracompact textarea{padding:4px 6px!important;min-height:28px!important;border-radius:7px!important;font-size:inherit;line-height:1.15}
body.density-ultracompact textarea{min-height:54px!important}
body.density-ultracompact .btn,body.density-ultracompact .toolbar-reset,body.density-ultracompact .toolbar-advanced,body.density-ultracompact .toolbar-logout,body.density-ultracompact .toolbar-hide,body.density-ultracompact .toolbar-show{min-height:28px!important;padding:4px 7px!important;gap:4px!important;border-radius:7px!important;line-height:1.08}
body.density-ultracompact .icon-btn{width:30px!important;height:30px!important;min-height:30px!important;border-radius:7px!important;font-size:15px!important}
body.density-ultracompact .actions{gap:4px!important}
body.density-ultracompact .mt{margin-top:6px!important}
body.density-ultracompact .badge{padding:2px 5px!important;border-radius:6px!important;font-size:11px!important;line-height:1.15}
body.density-ultracompact .table th,body.density-ultracompact .table td{padding:3px 5px!important;line-height:1.14}
body.density-ultracompact .table th{font-size:11px!important;letter-spacing:.025em}
body.density-ultracompact .table-wrap{border-radius:6px!important}
body.density-ultracompact .progress{height:6px!important;min-width:70px!important}
body.density-ultracompact .modal{padding:4px!important}
body.density-ultracompact .modal-header{gap:6px!important;margin-bottom:5px!important}
body.density-ultracompact .phase-fields{gap:5px!important}
body.density-ultracompact details>summary{line-height:1.15}
body.density-ultracompact .vesmar-theme-toolbar{top:7px!important;left:58px!important;right:160px!important;gap:5px!important;padding:4px 6px!important;border-radius:9px!important}
body.density-ultracompact .vesmar-theme-toolbar .toolbar-title{font-size:11px!important}
body.density-ultracompact .vesmar-theme-toolbar label{gap:3px!important;font-size:11px!important}
body.density-ultracompact .vesmar-theme-toolbar select{min-width:80px!important;padding:3px 5px!important;font-size:11px!important}
body.density-ultracompact .vesmar-theme-toolbar input[type=range]{min-height:16px!important;padding:0!important}
body.density-ultracompact .global-menu-toggle{top:7px!important;left:7px!important;width:40px!important;height:40px!important;border-radius:9px!important}
body.density-ultracompact .global-logo{top:7px!important;right:8px!important;width:136px!important;max-height:54px!important}
body.density-ultracompact .global-side-menu{padding:58px 9px 10px!important;width:min(320px,88vw)!important}
body.density-ultracompact .global-side-menu h3{margin-bottom:6px!important}
body.density-ultracompact .global-side-menu a{gap:6px!important;margin-bottom:4px!important;padding:7px 8px!important;border-radius:8px!important}
body.density-ultracompact .global-side-menu a small{margin-top:1px!important;line-height:1.1}
body.density-ultracompact .visual-settings-body{padding:8px!important}
body.density-ultracompact .visual-settings-grid{gap:6px!important}
body.density-ultracompact fieldset{padding:7px!important;margin:0!important}
body.density-ultracompact .error,body.density-ultracompact .success{padding:6px 8px!important;margin-bottom:5px!important;border-radius:7px!important}
body.density-ultracompact .economic-kpi-grid,body.density-ultracompact .economic-detail-grid,body.density-ultracompact .purchase-meta-grid{gap:4px!important;margin-top:5px!important}
body.density-ultracompact .economic-kpi{min-height:58px!important;padding:6px!important;border-radius:7px!important}
body.density-ultracompact .economic-kpi>span{min-height:0!important;margin-bottom:2px!important}
body.density-ultracompact .economic-kpi>strong{font-size:16px!important}
body.density-ultracompact .purchase-invoice-disclosure>summary,body.density-ultracompact .tool-record>summary{gap:5px!important;padding:6px 7px!important}
body.density-ultracompact .purchase-invoice-detail,body.density-ultracompact .tool-edit-form{padding:6px!important}
@media(max-width:980px){body.density-ultracompact .layout{padding:58px 6px 8px!important}body.density-ultracompact .vesmar-theme-toolbar{position:relative!important;top:auto!important;left:auto!important;right:auto!important;margin:52px 6px -48px!important}body.density-ultracompact .topbar{padding-right:0!important}}
@media(max-width:620px){body.density-ultracompact .vesmar-theme-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px!important}body.density-ultracompact .layout{padding-inline:4px!important}body.density-ultracompact .panel,body.density-ultracompact .card,body.density-ultracompact .modal-card{padding:6px!important}}
.btn.neon-report-button{font-weight:900}.btn.neon-report-button:hover{transform:translateY(-1px)}

/* 2026-09-01 v046 · La barra visual ocupa espacio real y nunca cubre el contenido. */
body.vesmar-toolbar-enabled .vesmar-theme-toolbar{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  right:auto!important;
  width:auto;
  max-height:300px;
  margin:8px 198px 0 86px!important;
  overflow:hidden;
  transition:max-height .32s ease,margin .32s ease,padding .32s ease,border-width .32s ease,transform .32s ease,opacity .22s ease!important;
}
body.vesmar-toolbar-enabled .layout,
body.vesmar-toolbar-enabled .eco-stage,
body.vesmar-toolbar-enabled .data-stage{
  padding-top:14px!important;
  transition:padding-top .32s ease;
}
body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .vesmar-theme-toolbar{
  max-height:0;
  margin-top:0!important;
  margin-bottom:0!important;
  padding-top:0!important;
  padding-bottom:0!important;
  border-top-width:0!important;
  border-bottom-width:0!important;
  transform:translateY(-12px);
  opacity:0;
}
.toolbar-show-hotspot{
  position:fixed;
  top:0;
  right:0;
  z-index:117;
  display:none;
  width:72px;
  height:72px;
  
}
body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .toolbar-show-hotspot{display:block}
body.vesmar-toolbar-enabled .toolbar-show{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  top:max(7px,var(--safe-top))!important;
  right:max(7px,var(--safe-right))!important;
  z-index:119;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-12px);
  transition:opacity .18s ease,visibility .18s ease,transform .22s ease;
}
body.vesmar-toolbar-enabled:not(.vesmar-toolbar-hidden) .toolbar-show{display:none!important}
body.vesmar-toolbar-enabled.vesmar-toolbar-hidden.vesmar-toolbar-reveal .toolbar-show,
body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .toolbar-show:focus-visible{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateY(0);
}
@media(max-width:980px){
  body.vesmar-toolbar-enabled .vesmar-theme-toolbar{margin:calc(var(--safe-top) + 72px) 14px 0!important}
  body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .vesmar-theme-toolbar{margin-top:0!important}
  body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .layout,
  body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .eco-stage,
  body.vesmar-toolbar-enabled.vesmar-toolbar-hidden .data-stage{padding-top:64px!important}
}

/* VESMAR 2026.09.02 v047 · Modo claro global de alta legibilidad.
   Mantiene los colores semánticos VESMAR (oro, rojo, verde, azul) y transforma
   únicamente las superficies neutras oscuras para garantizar contraste en toda la app. */
body.vesmar-light-mode:not(.login-page){
  color-scheme:light;
  --bg:#edf1f6;
  --bg2:#ffffff;
  --panel:#ffffff;
  --panel2:#f4f7fa;
  --text:#17202a;
  --muted:#5b6675;
  --border:var(--border);
  --input:#ffffff;
  --shadow:rgba(23,32,42,.12);
  
  
}
body.vesmar-light-mode:not(.login-page) :is(h1,h2,h3,h4,h5,h6,strong,b,legend,summary){}
body.vesmar-light-mode:not(.login-page) :is(.muted,small,.small){}
body.vesmar-light-mode:not(.login-page) :is(.panel,.card,.hud-card,.modal-card,.phase,.metric,.filters-grid,.purchase-form,.purchase-line,.delivery-line,.calendar-box,.worker-card,.worker-compact,.tool-record,.economic-filter-panel,.map-summary,.local-budget-card,.local-budget-archive-panel,.br-inline-form-card,.br-dialog-card,.br-doc-section,.br-doc-file-card,.br-linked-budget,.trash-card,.data-card,.storage-card,.zone-config-card,.zone-import-panel,.zone-move-panel,.progress-discount-card){
  
  
  
  
}
body.vesmar-light-mode:not(.login-page) :is(.phase,.filters-grid,.purchase-form,.purchase-line,.delivery-line,.worker-compact,.tool-record,.br-inline-form-card,.br-doc-section,.br-doc-file-card,.br-linked-budget,.zone-config-card,.zone-import-panel,.zone-move-panel){}
body.vesmar-light-mode:not(.login-page) :is(input,select,textarea,output){
  
  
  
  
}
body.vesmar-light-mode:not(.login-page) :is(input,select,textarea):focus{
  
  outline:0!important;
  
}
body.vesmar-light-mode:not(.login-page) :is(input,textarea)::placeholder{opacity:1}
body.vesmar-light-mode:not(.login-page) :is(input,select,textarea):disabled,
body.vesmar-light-mode:not(.login-page) :is(input,select,textarea)[readonly]{opacity:1}
body.vesmar-light-mode:not(.login-page) select option{}
body.vesmar-light-mode:not(.login-page) input[type=file]{}
body.vesmar-light-mode:not(.login-page) :is(.table-wrap,.data-table-wrap,.storage-table-wrap,.br-budget-lines-wrap){
  
  
  
}
body.vesmar-light-mode:not(.login-page) :is(.table,.data-table,.storage-table,.trash-table,.br-budget-lines-table) :is(th,td){}
body.vesmar-light-mode:not(.login-page) :is(.table,.data-table,.storage-table,.trash-table,.br-budget-lines-table) th{
  
  
  
}
body.vesmar-light-mode:not(.login-page) :is(.table,.data-table,.storage-table,.trash-table,.br-budget-lines-table) tbody tr:hover td{}
body.vesmar-light-mode:not(.login-page) .progress{}
body.vesmar-light-mode:not(.login-page) .badge{}
body.vesmar-light-mode:not(.login-page) .btn.secondary{}
body.vesmar-light-mode:not(.login-page) .btn.secondary:hover{}
body.vesmar-light-mode:not(.login-page) .btn.ghost{}
body.vesmar-light-mode:not(.login-page) :is(.icon-btn,.invoice-icon,.toolbar-reset){}
body.vesmar-light-mode:not(.login-page) .modal{}
body.vesmar-light-mode:not(.login-page) :is(.global-side-menu,.vesmar-theme-toolbar){
  
  
  
  
}
body.vesmar-light-mode:not(.login-page) .global-side-menu a{}
body.vesmar-light-mode:not(.login-page) .global-side-menu a:hover{}
body.vesmar-light-mode:not(.login-page) .global-menu-toggle{}
body.vesmar-light-mode:not(.login-page) .global-menu-toggle span{}
body.vesmar-light-mode:not(.login-page) .global-menu-backdrop{}
body.vesmar-light-mode:not(.login-page) .global-logo{border:1px solid var(--border)!important;border-radius:13px!important;padding:5px!important;}
body.vesmar-light-mode:not(.login-page) :is(.toolbar-reset,.toolbar-advanced){}
body.vesmar-light-mode:not(.login-page) .toolbar-logout{}
body.vesmar-light-mode:not(.login-page) :is(details>summary,.internal-accordion>summary){}
body.vesmar-light-mode:not(.login-page) .economic-tabs a{}
body.vesmar-light-mode:not(.login-page) .economic-tabs a:is(.active,:hover){}
body.vesmar-light-mode:not(.login-page) .economic-table pre{}
body.vesmar-light-mode:not(.login-page) .map-summary{}
body.vesmar-light-mode:not(.login-page) .map-kv span{}
body.vesmar-light-mode:not(.login-page) .map-kv strong{}
body.vesmar-light-mode:not(.login-page) .chip{}
body.vesmar-light-mode:not(.login-page) .soft-separator{}
body.vesmar-light-mode:not(.login-page) :is(.error,.success){font-weight:700}
body.vesmar-light-mode:not(.login-page) .error{}
body.vesmar-light-mode:not(.login-page) .success{}
body.vesmar-light-mode:not(.login-page) :is(.positive,.metric-positive strong){}
body.vesmar-light-mode:not(.login-page) :is(.negative,.metric-negative strong){}
body.vesmar-light-mode:not(.login-page) .status-rentable{}
body.vesmar-light-mode:not(.login-page) :is(.status-en-riesgo){}
body.vesmar-light-mode:not(.login-page) :is(.status-en-pérdida,.status-en-perdida){}

/* Gestión interna y solicitudes */
body.vesmar-light-mode:not(.login-page) :is(.internal-quick-nav,.br-period-bar,.br-search-details,.br-filters){}
body.vesmar-light-mode:not(.login-page) :is(.br-period-title,.br-period-group-label,.br-search-details small,.br-doc-file-meta,.br-linked-budget small,.br-budget-summary span,.br-empty,.br-doc-empty){}
body.vesmar-light-mode:not(.login-page) .br-period-separator{}
body.vesmar-light-mode:not(.login-page) .br-period-chip{}
body.vesmar-light-mode:not(.login-page) .br-period-chip:is(:hover,.is-active),body.vesmar-light-mode:not(.login-page) .br-page-number[aria-current="page"]{}
body.vesmar-light-mode:not(.login-page) .br-dialog-card{}
body.vesmar-light-mode:not(.login-page) .br-doc-header{}
body.vesmar-light-mode:not(.login-page) .br-doc-upload-form{}
body.vesmar-light-mode:not(.login-page) .br-doc-edit-form{}
body.vesmar-light-mode:not(.login-page) .br-budget-link-form{}
body.vesmar-light-mode:not(.login-page) .br-budget-summary span{}
body.vesmar-light-mode:not(.login-page) .br-documentation-button{}
body.vesmar-light-mode:not(.login-page) .local-budget-card{}
body.vesmar-light-mode:not(.login-page) :is(.local-budget-action-group,.local-budget-fact,.local-budget-metric){}
body.vesmar-light-mode:not(.login-page) .local-budgets-hero{}

/* Chat y zona de alertas */
body.vesmar-light-mode:not(.login-page) :is(.vesmar-chat-window,.vesmar-chat-sidebar,.vesmar-chat-main,.vesmar-alerts-pane){}
body.vesmar-light-mode:not(.login-page) :is(.vesmar-chat-hero,.vesmar-alerts-head,.vesmar-chat-form){}
body.vesmar-light-mode:not(.login-page) :is(.vesmar-chat-switch,.vesmar-alert-card){}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-switch.active{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-msg{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-msg.own{}
body.vesmar-light-mode:not(.login-page) .vesmar-alert-card.is-unread{}
body.vesmar-light-mode:not(.login-page) :is(.vesmar-alerts-head span,.vesmar-alert-card time,.vesmar-alert-card p,.vesmar-alert-actions span){}
body.vesmar-light-mode:not(.login-page) .vesmar-alerts-head button{}

/* Gestión de datos, trabajadores, zonas y otros módulos con superficies propias. */
body.vesmar-light-mode:not(.login-page).data-body,body.vesmar-light-mode:not(.login-page) .data-stage{}
body.vesmar-light-mode:not(.login-page) :is(.data-kpi,.scope-item,.data-import-box,.storage-kpi,.engine-chip,.storage-badge){}
body.vesmar-light-mode:not(.login-page) :is(.data-hero p,.scope-item small,.backup-row small,.storage-status,.storage-empty,.storage-note){}
body.vesmar-light-mode:not(.login-page) :is(.data-warning,.storage-protected){}
body.vesmar-light-mode:not(.login-page) .data-danger{}
body.vesmar-light-mode:not(.login-page) .storage-filters :is(input,select){}
body.vesmar-light-mode:not(.login-page) .storage-bar-track{}
body.vesmar-light-mode:not(.login-page) :is(.worker-head,.day-report){}
body.vesmar-light-mode:not(.login-page) :is(.worker-toggle,.calendar-mode-tabs a,.day-entry){}
body.vesmar-light-mode:not(.login-page) .calendar-mode-tabs a.active{}
body.vesmar-light-mode:not(.login-page) .vesmar-day{}
body.vesmar-light-mode:not(.login-page) :is(.zone-import-choice,.zone-hierarchy-root>details,.zone-group,.zone-subgroup,.progress-zone-group,.progress-zone-subgroup,.progress-zone-collection,.zone-line,.project-task-update-form,.project-history-item,.project-readonly-note,.project-microtasks){}
body.vesmar-light-mode:not(.login-page) .zone-select-control{}
body.vesmar-light-mode:not(.login-page) .zone-accumulated-value{}
body.vesmar-light-mode:not(.login-page) .progress-discount-dialog{}
body.vesmar-light-mode:not(.login-page) :is(.project-progress,.project-micro-progress){}
body.vesmar-light-mode:not(.login-page) :is(.project-calendar-toolbar,.project-calendar-legend,.project-calendar-weekdays){}
body.vesmar-light-mode:not(.login-page) .project-calendar-day{}
body.vesmar-light-mode:not(.login-page) .project-calendar-day.is-outside{}

/* Elementos nativos y selección: contraste consistente sin alterar colores de estado. */
body.vesmar-light-mode:not(.login-page) hr{}
body.vesmar-light-mode:not(.login-page) code,body.vesmar-light-mode:not(.login-page) pre{}
body.vesmar-light-mode:not(.login-page) ::selection{}

/* Complementos de modo claro para componentes definidos en estilos embebidos. */
body.vesmar-light-mode:not(.login-page) :is(.br-request-item,.br-request-facts>div,.br-kpis>div){}
body.vesmar-light-mode:not(.login-page) .br-request-item[open]>summary{}
body.vesmar-light-mode:not(.login-page) :is(.br-summary-date small,.br-summary-status small,.br-request-facts dt,.br-kpis span){}
body.vesmar-light-mode:not(.login-page) .br-priority-toggle:hover{}
body.vesmar-light-mode:not(.login-page) :is(.expense-upload-panel,.expense-line-row){}
body.vesmar-light-mode:not(.login-page) #facturas-gasto :is(.expense-field input,.expense-field select,.expense-field textarea,.expense-line-field input,.expense-line-field textarea){}
body.vesmar-light-mode:not(.login-page) #facturas-gasto :is(.expense-field label,.expense-line-field label){}
body.vesmar-light-mode:not(.login-page) #facturas-gasto :is(.expense-lines-header,.expense-actions){}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-msg.mine{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-sidebar button{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-sidebar button.active{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-close{}
body.vesmar-light-mode:not(.login-page) .vesmar-chat-form input[name=message]{}
body.vesmar-light-mode.jarvis-body .jarvis-stage{}
body.vesmar-light-mode.jarvis-body .jarvis-grid{}
body.vesmar-light-mode.jarvis-body .jarvis-core{}
body.vesmar-light-mode.jarvis-body .jarvis-core h1{}
body.vesmar-light-mode.jarvis-body .jarvis-core p{}
body.vesmar-light-mode.jarvis-body .jarvis-status{}
body.vesmar-light-mode.jarvis-body .jarvis-logo{border-radius:18px;padding:10px;}

/* v049 · Recepción reversible y compacta en el resumen de compras */
.purchase-invoice-disclosure[data-payment-state]>summary{grid-template-columns:140px minmax(210px,1.35fr) 120px 78px minmax(145px,.75fr) 170px 118px!important}
.purchase-received-form{display:none!important}
.purchase-received-toggle{align-self:center;min-height:28px;padding:5px 7px;border:1px solid var(--border);border-radius:7px;font-size:8px;font-weight:950;line-height:1.15;letter-spacing:.035em;text-align:center;cursor:pointer;white-space:normal}
.purchase-received-toggle:hover,.purchase-received-toggle:focus-visible{}
.purchase-received-toggle.is-received{}
body.vesmar-light-mode .purchase-received-toggle{}
body.vesmar-light-mode .purchase-received-toggle.is-received{}
@media(max-width:1260px){.purchase-invoice-disclosure[data-payment-state]>summary{grid-template-columns:124px minmax(190px,1fr) 140px 116px 72px 118px!important}}
@media(max-width:700px){.purchase-invoice-disclosure[data-payment-state]>summary{grid-template-columns:minmax(0,1fr) 118px!important;grid-template-areas:"date total" "invoice paid" "invoice lines" "received received"!important}.purchase-received-toggle{grid-area:received!important;justify-self:stretch;margin-top:3px}}
/* Actualización: detalles de ingresos y retenciones */
.eco-income-detail-btn{display:inline-flex;align-items:center;justify-content:center;margin-top:.2rem;padding:.45rem .7rem;border:1px solid var(--border);border-radius:8px;text-decoration:none;font-weight:800;cursor:pointer}.eco-income-detail-btn:hover{transform:translateY(-1px)}
.invoice-retention-box{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(220px,1fr);gap:12px;align-items:end;padding:14px;border:1px solid var(--border);border-radius:10px}.invoice-retention-box small{grid-column:1/-1}
@media(max-width:700px){.invoice-retention-box{grid-template-columns:1fr}}

/* v0480 · Gestión de obras: listado profesional en tarjetas */
.works-board-v2{padding:0!important;overflow:hidden}
.works-list-header-v2{position:relative!important;top:auto!important;padding:22px 24px!important;border-bottom:1px solid var(--border);}
.works-list-header-v2 h2{margin:4px 0 0;font-size:clamp(1.45rem,2.4vw,2rem)}
.works-section-kicker{display:block;font-size:10px;font-weight:900;letter-spacing:.16em;text-transform:uppercase}
.works-count-badge{min-height:34px;display:inline-flex;align-items:center;padding-inline:12px}
.works-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:20px}
.works-empty-state{display:grid;gap:6px;margin:20px;padding:28px;border:1px dashed var(--border);border-radius:18px;text-align:center;}
.works-empty-state strong{font-size:1.05rem}.works-empty-state span{}
.work-card-v2{position:relative;display:flex;flex-direction:column;min-width:0;border:1px solid var(--border);border-radius:20px;overflow:hidden;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.work-card-v2:hover{transform:translateY(-2px);}
.work-card-v2.work-card-has-observations{}
.work-card-v2-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 20px 17px;border-bottom:1px solid var(--border);}
.work-card-heading{min-width:0}.work-card-heading h3{margin:7px 0 5px;font-size:clamp(1.15rem,1.8vw,1.48rem);line-height:1.18;overflow-wrap:anywhere}.work-card-heading p{margin:0;line-height:1.45}.work-card-heading p strong{}
.work-card-title-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.work-card-title-meta>span:first-child{font-size:10px;font-weight:900;letter-spacing:.1em}.work-card-title-meta .badge{font-size:10px}
.work-live-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--border);border-radius:999px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.045em}.work-live-badge i{width:7px;height:7px;border-radius:50%;}
.work-card-enter{flex:0 0 auto;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:10px;min-width:150px;min-height:44px!important;padding:10px 14px!important}.work-card-enter b{font-size:20px;line-height:1}
.work-card-v2-body{display:grid;gap:16px;padding:18px 20px 0;flex:1}
.work-card-meta-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.work-card-meta-grid>div{min-width:0;padding:10px 11px;border:1px solid var(--border);border-radius:12px;}.work-card-meta-grid small,.work-card-meta-grid strong{display:block}.work-card-meta-grid small{margin-bottom:4px;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.07em}.work-card-meta-grid strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.88rem}
.work-card-progress-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.work-progress-metric{min-width:0;padding:12px;border:1px solid var(--border);border-radius:14px;}.work-progress-metric>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px}.work-progress-metric span{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.work-progress-metric strong{font-size:1.05rem;font-variant-numeric:tabular-nums}.work-progress-metric .progress{height:7px;margin:0 0 8px}.work-progress-metric small{display:block;font-size:10px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.work-progress-billing .bar{}.work-progress-collection .bar{}
.work-card-observation-alert{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;border:1px solid var(--border);border-radius:13px;}.work-card-observation-alert>div{min-width:0;display:grid;gap:3px}.work-card-observation-alert strong{font-size:.86rem}.work-card-observation-alert span{font-size:.77rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.work-card-observation-alert .btn{flex:0 0 auto;width:auto!important;min-height:34px!important;padding:7px 10px!important}
.work-card-details-v2{margin:0 -20px;border-top:1px solid var(--border);}.work-card-details-v2>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;cursor:pointer;list-style:none;font-size:12px;font-weight:850;transition:background .16s ease,color .16s ease}.work-card-details-v2>summary::-webkit-details-marker{display:none}.work-card-details-v2>summary:hover,.work-card-details-v2>summary:focus-visible{outline:none}.work-card-details-v2 .disclosure-state:before{content:'+';display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--border);border-radius:8px;font-size:16px;}.work-card-details-v2[open] .disclosure-state:before{content:'−'}.work-card-details-content{padding:0 20px 18px;border-top:1px solid var(--border)}.work-card-details-content .work-detail-two-column{margin-top:16px}.work-card-details-content .compact-detail-grid{margin-top:0}
.work-card-v2-actions{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:8px;padding:14px 20px 18px;border-top:1px solid var(--border);}.work-card-v2-actions>*{grid-column:span 3}.work-card-v2-actions>*:nth-child(n+5){grid-column:span 4}.work-card-v2-actions .btn,.work-card-v2-actions .work-card-action-form,.work-card-v2-actions .work-card-action-form .btn{width:100%;min-width:0;min-height:38px!important;margin:0;display:flex;align-items:center;justify-content:center;text-align:center;font-size:11px;white-space:nowrap}.work-card-v2-actions .work-observations-button{letter-spacing:0!important}.work-card-action-form{display:block}
body.vesmar-light-mode .work-card-v2{}
body.vesmar-light-mode .work-card-v2-header,body.vesmar-light-mode .works-list-header-v2{}
body.vesmar-light-mode .work-card-meta-grid>div,body.vesmar-light-mode .work-progress-metric,body.vesmar-light-mode .work-card-details-v2,body.vesmar-light-mode .work-card-v2-actions{}
@media(max-width:1180px){.works-card-grid{grid-template-columns:1fr}.work-card-progress-grid{grid-template-columns:repeat(3,minmax(160px,1fr))}}
@media(max-width:760px){.works-list-header-v2{padding:18px!important}.works-card-grid{padding:14px;gap:14px}.work-card-v2-header{flex-direction:column;padding:17px}.work-card-enter{width:100%}.work-card-v2-body{padding:15px 16px 0}.work-card-meta-grid{grid-template-columns:1fr 1fr}.work-card-meta-grid>div:last-child{grid-column:1/-1}.work-card-progress-grid{grid-template-columns:1fr}.work-card-details-v2{margin:0 -16px}.work-card-details-v2>summary,.work-card-details-content{padding-left:16px;padding-right:16px}.work-card-v2-actions{grid-template-columns:repeat(2,minmax(0,1fr));padding:13px 16px 16px}.work-card-v2-actions>*,.work-card-v2-actions>*:nth-child(n+5){grid-column:span 1}.work-card-v2-actions>*:last-child{grid-column:1/-1}.work-card-observation-alert{align-items:flex-start;flex-direction:column}.work-card-observation-alert .btn{width:100%!important}.working-now-worker.working-now-worker-row{min-width:560px}}
@media(max-width:460px){.work-card-meta-grid,.work-card-v2-actions{grid-template-columns:1fr}.work-card-meta-grid>div:last-child{grid-column:auto}.work-card-v2-actions>*,.work-card-v2-actions>*:nth-child(n+5),.work-card-v2-actions>*:last-child{grid-column:1}.work-card-heading p span{display:block;margin-top:3px}.work-card-title-meta{align-items:flex-start}.work-card-v2-actions .btn{min-height:42px!important}}

/* Primary light-theme overrides (consolidated from style.css). */
/* Neutral light design system. No external fonts, icon library or animation runtime. */
:root,html[data-theme],body[data-theme]{color-scheme:light;--bg:#f5f7fb;--bg2:#eef1f7;--panel:#fff;--panel2:#f8fafc;--text:#202a3b;--muted:#647086;--accent:#5147e8;--accent2:#5147e8;--danger:#b8324b;--border:#e3e8f0;--input:#fff;--shadow:rgba(21,34,61,.045);--font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-scale:1;--sidebar:248px}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body,body.vesmar-toolbar-enabled{margin:0;background:var(--bg)!important;color:var(--text)!important;font:14px/1.55 var(--font-family);min-height:100vh;overflow-x:hidden;padding-top:0!important;letter-spacing:0}body a{color:var(--accent);text-decoration:none}body a:hover{text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #a9a3ff;outline-offset:3px}input:focus,select:focus,textarea:focus{outline:none;border-color:#7a72ee!important;box-shadow:0 0 0 3px #eeecff!important}input,select,textarea{background:#fff!important;color:var(--text)!important;border:1px solid #dce2ec!important;border-radius:8px!important;padding:10px 12px!important;min-height:42px;font-size:14px;width:100%;box-shadow:none!important}input[type=checkbox],input[type=radio]{width:17px!important;height:17px;min-height:0;accent-color:var(--accent);flex-shrink:0}input::placeholder,textarea::placeholder{color:#8a93a3}textarea{resize:vertical;min-height:90px}label{font-size:12px;font-weight:650;color:#465269;margin:0 0 6px;display:block}label>input,label>select,label>textarea{margin-top:7px}label small{font-weight:400;color:var(--muted)}h1,h2,h3,h4,p{letter-spacing:0}h1{font-size:30px;line-height:1.2;font-weight:680;letter-spacing:-1px}h2{font-size:18px;font-weight:660;line-height:1.4}h3{font-size:15px;font-weight:650}p{margin:8px 0 16px}.muted,small.muted{color:var(--muted)!important}small{font-size:12px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.8px;color:#78829a;text-transform:uppercase}.btn,button.primary-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent)!important;color:#fff!important;border:1px solid var(--accent)!important;box-shadow:0 2px 3px #5147e812!important;border-radius:8px!important;padding:10px 15px!important;font-size:13px;font-weight:600;line-height:1.5;min-height:40px;cursor:pointer;text-transform:none;letter-spacing:0;transform:none!important;transition:background .15s,border-color .15s!important}.btn:hover,.primary-button:hover{background:#443bcc!important;border-color:#443bcc!important}.btn.secondary,.btn.ghost,button.text-button,.text-button{color:#455268!important;background:#fff!important;border:1px solid #dfe4ee!important;box-shadow:none!important}.btn.secondary:hover,.btn.ghost:hover{background:#f5f6fb!important;border-color:#c6cddd!important}.btn.danger{background:#fff4f5!important;border-color:#f0d1d7!important;color:#ae2e46!important}.btn.small,.btn-sm{padding:7px 11px!important;min-height:32px;font-size:12px}.btn[disabled],button:disabled{opacity:.5;cursor:not-allowed}.btn.full{width:100%;margin-top:10px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:16px;align-items:start}.form-grid label{margin:0}.form-grid .form-wide{grid-column:1/-1}.form-grid .form-actions{grid-column:1/-1;border-top:1px solid var(--border);padding-top:16px;display:flex;justify-content:flex-end;gap:10px}.inline-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-form input,.inline-form select{width:auto;max-width:100%}body .panel,body .card,body .modal-card{background:#fff!important;border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:0 2px 4px var(--shadow)!important;backdrop-filter:none!important;color:var(--text)}body .panel{padding:24px;margin-bottom:0}.panel::before,.panel::after,.dashboard-card::before,.dashboard-card::after{display:none!important}.panel h2{margin:0 0 8px}.grid{display:grid;gap:20px}.mt{margin-top:20px}body .layout{width:auto!important;max-width:1680px!important;margin:64px 0 0 var(--sidebar)!important;padding:32px!important;min-width:0}body .layout>.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0!important;margin:0 0 28px!important;background:transparent!important;position:static!important;border:0!important;box-shadow:none!important}.topbar h1{margin:0}.topbar p{margin:7px 0 0}.table-wrap{overflow-x:auto;max-width:100%;border-radius:10px}table.table{width:100%;border-collapse:collapse;background:#fff;color:var(--text);min-width:720px}table.table th{background:#f8f9fc;color:#7a8496;font-size:10px;text-transform:uppercase;letter-spacing:.8px;font-weight:650;text-align:left;padding:12px 16px;white-space:nowrap;border-bottom:1px solid var(--border)}table.table td{border-bottom:1px solid #edf0f6;padding:15px 16px;vertical-align:middle;font-size:13px}table.table tbody tr:hover{background:#fafbfe}table.table tbody tr:last-child td{border-bottom:0}.table-tools{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;padding:14px 0;background:transparent!important}.table-tools label{margin:0}.table-tools input{max-width:280px}.table-tools .table-search-label{flex:1;min-width:180px}.table-pages{display:flex;gap:6px}.table-count{font-size:11px}.badge,.status-badge{display:inline-flex;align-items:center;gap:5px;border-radius:5px;padding:4px 8px;line-height:1.5;font-size:10px;font-weight:650;background:#f0f2f7;color:#637189;border:1px solid #e5e9f1;white-space:nowrap}.status-badge::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.status-active,.status-paid{background:#eef8f3;color:#247452;border-color:#dcefe4}.status-trial,.status-partial{background:#f0edff;color:#6f53b7;border-color:#e3ddff}.status-pending,.status-paused{background:#fff8e9;color:#9b6a12;border-color:#f2e6ca}.status-overdue,.status-suspended{background:#fff0f2;color:#b54761;border-color:#f4dce3}.status-void,.status-cancelled{background:#f0f2f6;color:#7a8291;border-color:#e2e6ed}.error,.success,.notice,.info-banner{border:1px solid var(--border);background:#f2f4ff;color:#474f81;padding:14px 16px;border-radius:9px;margin-bottom:18px;font-size:13px}.error,.notice-error{background:#fff3f4!important;color:#ad324c!important;border-color:#f1d4db!important}.success{background:#edf8f2!important;color:#287454!important;border-color:#cfe9dc!important}.progress{height:7px;background:#eceef5!important;border:0;border-radius:20px}.progress .bar{background:var(--accent)!important;border-radius:20px}.empty-state{padding:40px 24px;text-align:center;color:var(--muted);background:#fafbfe;border:1px dashed #dce1ec;border-radius:10px}.empty-state strong{display:block;color:var(--text);margin-bottom:6px}.empty-state p{margin:0}.global-logo,.login-logo,.splash,.login-splash,.page-loader,.vesmar-interactive-bg,.vesmar-theme-toolbar,.toolbar-show,.toolbar-show-hotspot,.visual-settings-overlay,.jarvis-stage,.brand-mark,.splash-logo{display:none!important}
/* Persistent, predictable navigation. */
body .global-side-menu{position:fixed!important;left:0!important;top:0!important;bottom:0!important;width:var(--sidebar)!important;height:100dvh!important;padding:0 16px!important;background:#fff!important;border:0!important;border-right:1px solid var(--border)!important;border-radius:0!important;transform:none!important;opacity:1!important;visibility:visible!important;z-index:45;box-shadow:none!important;overflow-y:auto;display:flex!important;flex-direction:column;gap:3px}.global-side-menu .workspace-title{display:block!important;margin:0 -16px 14px;padding:20px 25px!important;min-height:84px;border:0!important;border-bottom:1px solid #f0f2f7!important;border-radius:0!important;font-size:16px;line-height:1.4;font-weight:700;letter-spacing:-.4px;color:#2b3446!important;background:transparent!important}.workspace-title small{display:block;font-size:8px;letter-spacing:1.6px;color:#8b94a5;margin-top:5px}.nav-section-label{font-size:8px;font-weight:750;letter-spacing:1.7px;color:#9ba3b1;margin:17px 13px 8px}.global-side-menu .nav-item{display:flex!important;gap:11px;align-items:center;min-height:40px;margin:0!important;padding:10px 13px!important;border:0!important;border-radius:7px!important;background:transparent!important;color:#667185!important;font-size:12px;font-weight:500;line-height:1.4;transform:none!important}.global-side-menu .nav-item svg{width:17px;height:17px;flex-shrink:0;color:#8a93a4}.global-side-menu .nav-item:hover{background:#f5f6fa!important;color:#39445b!important}.global-side-menu .nav-item.is-active{background:#efedff!important;color:#5345ce!important;font-weight:650}.nav-item.is-active svg{color:#6556db!important}.nav-account{margin-top:auto;padding:18px 0 20px;display:flex;gap:5px;border-top:1px solid var(--border)}.global-side-menu .account-link{padding:0 3px!important;border:0!important;background:transparent!important;display:flex;align-items:center;gap:10px;min-width:0;flex:1;color:var(--text)!important}.account-link strong{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;max-width:136px}.account-link small{display:block;font-size:9px;color:#8b95a6}.user-avatar{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:9px;background:#e9edf4;color:#647086;font-size:12px;font-weight:650}.global-side-menu .logout-link{padding:5px!important;border:0!important;background:transparent!important;color:#8c95a4!important;display:flex;align-items:center}.workspace-header{position:fixed;top:0;right:0;left:var(--sidebar);height:64px;z-index:35;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;background:#fff;border-bottom:1px solid var(--border);font-size:11px}.workspace-header>div{display:flex;align-items:center;gap:14px}.workspace-eyebrow{color:#8a94a5}.breadcrumb-divider{color:#d1d7e1}.workspace-header strong{font-weight:550}.workspace-header-right{gap:22px!important}.connection-status{color:#7a8695;font-size:10px;display:inline-flex;gap:6px;align-items:center}.connection-status i{width:5px;height:5px;border-radius:50%;background:#55a586}.header-account{display:flex;align-items:center;gap:8px;color:#667184}.global-menu-toggle,.global-menu-backdrop{display:none!important}.skip-link{position:fixed;left:260px;top:-80px;background:#fff;padding:12px;z-index:9999}.skip-link:focus{top:8px}
/* Platform console */
.page-heading .eyebrow{margin:0 0 8px}.page-heading h1{font-size:29px;letter-spacing:-.9px}.page-heading p{font-size:12px;color:#8290a3}.heading-actions{display:flex;gap:10px;align-items:center}.heading-date{font-size:11px;color:#8190a2;display:flex;gap:7px;align-items:center}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:26px}.stat-card{background:#fff;border:1px solid var(--border);border-radius:11px;padding:20px 22px;box-shadow:0 2px 4px var(--shadow)}.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;color:#7d899b;font-size:10px;font-weight:500}.stat-top svg{color:#9dabc0;width:17px;height:17px}.stat-value{font-size:27px;font-weight:650;letter-spacing:-1px;line-height:1.15;color:#273044;font-variant-numeric:tabular-nums}.stat-value small{font-size:13px;color:#9aa4b4;font-weight:400;letter-spacing:0}.stat-bottom{display:flex;gap:7px;align-items:center;margin-top:12px;font-size:10px;color:#97a0b0}.stat-bottom .positive{color:#4c8c71}.stat-bottom .warning{color:#b57546}.console-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}.console-panel{background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;box-shadow:0 2px 4px var(--shadow)}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 22px;border-bottom:1px solid #edf0f5}.section-head h2{margin:0;font-size:14px;font-weight:650}.section-head h2 .count-pill{margin-left:8px}.section-head p{font-size:11px;color:#8c98a9;margin:5px 0 0}.section-link{font-size:10px;color:#7f72da;white-space:nowrap}.count-pill{background:#f1f3f8;color:#8994a8;font-size:10px;padding:3px 6px;border-radius:5px;vertical-align:middle}.filterbar{display:flex;align-items:center;gap:12px;padding:16px 22px;flex-wrap:wrap}.filterbar input{min-height:36px;font-size:11px;padding:8px 11px!important}.filterbar .search-field{flex:1;min-width:180px;position:relative}.search-field svg{position:absolute;left:10px;top:10px;color:#9ea6b4;width:15px;height:15px}.search-field input{padding-left:33px!important}.filterbar select{width:auto;min-height:36px;font-size:11px;padding:8px 10px!important}.filterbar label{margin:0}.company-list-header,.company-summary{display:grid;grid-template-columns:minmax(175px,2fr) minmax(90px,1fr) minmax(100px,1fr) 85px 20px;gap:12px;align-items:center}.company-list-header{background:#fafbfe;padding:10px 22px;font-size:8px;font-weight:600;letter-spacing:.65px;text-transform:uppercase;color:#99a1b0;border-top:1px solid #f0f2f6;border-bottom:1px solid #edf0f6}.company-row{border-bottom:1px solid #edf0f6;background:#fff}.company-row:last-child{border-bottom:0}.company-summary{list-style:none;padding:18px 22px;cursor:pointer}.company-summary::-webkit-details-marker{display:none}.company-summary:hover{background:#fafbff}.company-summary>span:last-child{color:#a2a9b9;font-size:18px;transition:transform .15s}.company-row[open]>.company-summary>span:last-child{transform:rotate(90deg)}.company-identity{display:flex;gap:11px;align-items:center;min-width:0}.company-monogram{width:34px;height:36px;border-radius:8px;background:#f2f3f9;display:flex;align-items:center;justify-content:center;color:#8b91b2;flex-shrink:0}.company-monogram svg{width:17px;height:17px}.company-name{display:block;font-size:12px;font-weight:600;color:#3a455a}.company-sub{display:block;font-size:9px;color:#96a0b1;margin-top:3px}.company-amount{font-size:11px;font-weight:550;color:#626f84;font-variant-numeric:tabular-nums}.company-amount small{display:block;font-size:9px;font-weight:400;color:#9aa4b4}.company-users-count{font-size:11px;color:#8b96a9;display:inline-flex;gap:6px;align-items:center}.company-detail{padding:20px 22px;background:#fafbfe;border-top:1px solid #edf0f6}.company-detail .detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.company-detail dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 20px}.company-detail dt{font-size:9px;color:#95a0b2}.company-detail dd{font-size:12px;margin:4px 0 0;overflow-wrap:anywhere}.company-detail .table{background:transparent;min-width:630px}.company-detail .table th,.company-detail .table td{padding:10px;font-size:11px}.panel-footnote{padding:12px 22px;font-size:9px;color:#9ca6b5;border-top:1px solid #edf0f6;display:flex;justify-content:space-between}.side-stack{display:grid;gap:20px}.side-stack .section-head{padding:20px}.side-stack .section-head h2{font-size:12px}.due-item{display:flex;gap:12px;align-items:center;padding:16px 20px;border-bottom:1px solid #f0f2f6}.date-tile{flex-shrink:0;width:38px;background:#f4f5fa;text-align:center;border-radius:7px;padding:6px 0;line-height:1.2}.date-tile strong{display:block;font-size:14px;font-weight:600;color:#606b81}.date-tile small{font-size:7px;color:#9a9fac;text-transform:uppercase}.due-item .due-copy{flex:1;min-width:0}.due-copy strong{font-size:10px;display:block;font-weight:600;color:#4e5b72}.due-copy small{font-size:9px;color:#9ba4b3}.due-value{font-size:10px;color:#647187;white-space:nowrap}.insight-box{padding:20px;background:#f7f6ff;border:1px solid #e8e4ff;border-radius:11px}.insight-box .eyebrow{font-size:8px;color:#9a8ccd}.insight-box h3{font-size:13px;color:#6b5b9d;margin:12px 0 7px}.insight-box p{font-size:10px;line-height:1.8;color:#958bad;margin:0}.activity-item{padding:15px 20px;display:flex;gap:12px;border-bottom:1px solid #f1f3f7}.activity-dot{height:7px;width:7px;flex-shrink:0;border-radius:50%;background:#c3bcee;margin-top:6px}.activity-item strong{font-size:10px;font-weight:550;color:#69758a;display:block}.activity-item small{font-size:9px;color:#a0a8b5}.console-bottom{display:flex;justify-content:space-between;gap:10px;padding:22px 0 0;color:#a7aeba;font-size:9px}.security-banner{display:flex;align-items:center;justify-content:space-between;gap:15px;background:#fdfcff;border:1px solid #e6e3f6;padding:13px 17px;border-radius:9px;margin-bottom:24px}.security-banner p{margin:0;font-size:11px;color:#8d86a2}.security-banner strong{color:#696180;font-weight:550}.security-banner button{flex-shrink:0;font-size:11px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:22px}.tabs a{padding:12px 16px;color:var(--muted);font-size:12px}.tabs a.active{color:var(--accent);border-bottom:2px solid var(--accent)}.user-cell{display:flex;align-items:center;gap:9px}.user-cell strong{font-size:12px}.user-cell small{display:block;color:var(--muted);font-size:10px}.text-right{text-align:right}.nowrap{white-space:nowrap}.check-label{display:flex;align-items:center;gap:9px;font-weight:500;font-size:12px}.check-label input{margin:0}.form-note{font-size:11px;color:var(--muted);line-height:1.7;margin:0 0 16px}.mini-hint{font-size:10px;display:block;color:#959eb0;margin-top:5px}.long-wrap{overflow-wrap:anywhere}
/* Accessible native dialogs; :target remains available for original modules. */
dialog.console-dialog{width:min(700px,calc(100% - 32px));max-height:90dvh;overflow-y:auto;border:1px solid #e1e5f0;border-radius:14px;background:#fff;color:var(--text);padding:0;box-shadow:0 24px 80px #25345225}dialog.console-dialog::backdrop{background:#14203c45;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:22px 25px;border-bottom:1px solid var(--border)}.dialog-heading h2{margin:0;font-size:18px}.dialog-close{border:0;background:#f3f5f9;color:#7b879b;width:30px;height:30px;border-radius:7px;font-size:22px;cursor:pointer}.dialog-body{padding:25px}.modal,.vesmar-confirm-overlay{background:#14203c45!important;backdrop-filter:blur(3px)}.modal{z-index:80}.modal .modal-card{box-shadow:0 20px 80px #25345225!important}.modal-header{border-bottom:1px solid var(--border);padding-bottom:15px;margin-bottom:20px}.vesmar-confirm-card{background:#fff!important;color:var(--text)!important;border:1px solid var(--border)!important;border-radius:12px}.vesmar-toast{background:#28354c!important;color:white!important;border-radius:8px!important}.vesmar-chat-window,.vesmar-alerts-window,.vesmar-chat-sidebar,.vesmar-chat-main{background:#fff!important;color:var(--text)!important}.vesmar-chat-message,.vesmar-alert-card{background:#f5f6fc!important;color:var(--text)!important}.vesmar-chat-message.mine{background:#efedff!important}.vesmar-chat-launcher,.vesmar-alerts-launcher{background:var(--accent)!important;color:#fff!important;box-shadow:0 4px 12px #5147e833!important;border:0!important}.dashboard-card{min-height:165px!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:space-between!important;gap:14px!important;transform:none!important}.dashboard-card .dashboard-card-copy{padding:0!important}.dashboard-card h2{font-size:16px!important}.dashboard-card p{font-size:12px!important;line-height:1.7}.dashboard-card .dashboard-open{margin:0!important}.dashboard-grid-professional{grid-template-columns:repeat(3,minmax(0,1fr))!important}.dashboard-card-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;background:#f2f1fc;border-radius:8px;color:#8479d8;margin-bottom:16px}
/* Neutral access area. */
body.login-page{background:#f6f8fc!important}.access-layout{min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr}.access-story{padding:48px clamp(36px,6vw,100px);display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(140deg,#f0f3fa,#f7f8ff);border-right:1px solid #e7ebf4;position:relative;overflow:hidden}.access-label{font-size:10px;font-weight:650;letter-spacing:1.4px;color:#8891a9}.access-story h1{font-size:clamp(36px,4.4vw,62px);font-weight:620;line-height:1.16;letter-spacing:-2.4px;color:#2d3650;margin:36px 0 24px}.access-story h1 span{color:#8d83cd}.access-story p{color:#8b94a9;font-size:14px;max-width:350px;line-height:1.9}.access-features{display:grid;gap:20px;margin:34px 0}.access-feature{display:flex;align-items:center;gap:12px;color:#8189a1;font-size:12px}.access-feature svg{color:#9d93cd}.access-story footer{font-size:10px;color:#a3aabe}.access-form-area{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px 28px;background:#fff}.access-form{width:100%;max-width:340px}.access-form .eyebrow{font-size:8px;color:#9b95b4;margin-bottom:15px}.access-form h2{font-size:27px;letter-spacing:-.8px;margin:0 0 8px;font-weight:620}.access-form p{font-size:12px;line-height:1.9;color:#929bac;margin-bottom:30px}.access-form label{font-size:11px;color:#727c91;font-weight:500}.access-form input{margin:7px 0 18px;min-height:45px;font-size:12px}.access-form .btn{font-size:12px;min-height:44px}.access-form details{margin-bottom:14px}.access-form summary{font-size:10px;color:#9890af;cursor:pointer}.access-form .forgot-link{font-size:10px;display:block;text-align:center;margin:22px 0;color:#958ba9}.access-form .access-privacy{border-top:1px solid #eef0f6;padding-top:20px;text-align:center;font-size:9px;color:#b0b7c4;line-height:1.8}.password-field{position:relative}.password-field input{padding-right:52px!important}.password-toggle{position:absolute;right:10px;top:19px;border:0;background:transparent;color:#9d94b3;font-size:10px;cursor:pointer}.login-panel{background:#fff!important;padding:32px!important;border:1px solid var(--border)!important;border-radius:12px!important;box-shadow:0 6px 25px var(--shadow)!important;width:min(460px,100%)!important}.login-center{padding:28px!important}.login-form label{margin:15px 0 5px}.login-page:not(:has(.access-layout)) .login-panel h1{font-size:24px}.pagination{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:16px 22px;font-size:11px;color:var(--muted)}[hidden]{display:none!important}
@media(min-width:1900px){body .layout{margin-right:auto!important}}
@media(max-width:1280px){:root{--sidebar:220px}body .layout{padding:26px!important}.workspace-header{padding:0 26px}.console-grid{grid-template-columns:minmax(0,1fr)}.side-stack{grid-template-columns:1fr 1fr}.side-stack .insight-box{grid-column:1/-1}.company-list-header,.company-summary{grid-template-columns:minmax(170px,2fr) 1fr 1fr 85px 20px}.stat-card{padding:18px}.stat-value{font-size:24px}}
@media(max-width:1000px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid-professional{grid-template-columns:repeat(2,minmax(0,1fr))!important}.heading-date{display:none}.company-list-header,.company-summary{grid-template-columns:minmax(145px,2fr) 100px 95px 20px}.company-summary .company-users-count,.company-list-header>span:nth-child(4){display:none}.access-story{padding:35px}.access-story h1{font-size:43px}}
@media(max-width:760px){:root{--sidebar:0px}body .global-side-menu{width:248px!important;transform:translateX(-100%)!important;transition:transform .2s!important;visibility:hidden!important}body .global-side-menu.show{transform:translateX(0)!important;visibility:visible!important}body .layout{margin:60px 0 0!important;padding:22px 16px!important}.workspace-header{height:60px;padding:0 16px 0 55px}.workspace-header-right .connection-status{display:none}.workspace-eyebrow,.breadcrumb-divider{display:none}.workspace-header strong{max-width:175px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-account{font-size:10px}.global-menu-toggle{display:flex!important;position:fixed!important;top:14px!important;left:15px!important;width:30px;height:30px;z-index:48;background:transparent!important;border:0!important;padding:6px!important;flex-direction:column;justify-content:center;gap:4px;border-radius:5px}.global-menu-toggle span{display:block;width:18px;height:1.5px;background:#758197!important;margin:0;transform:none!important}.global-menu-toggle.open{left:255px!important;background:#fff!important}.global-menu-backdrop.show{display:block!important;position:fixed;inset:0;background:#24334b55!important;z-index:44}.page-heading h1,.topbar h1{font-size:25px}.layout>.topbar{align-items:flex-start!important}.page-heading .eyebrow{font-size:8px}.page-heading p{font-size:11px}.heading-actions{flex-wrap:wrap}.heading-actions .btn{font-size:11px;min-height:36px;padding:8px 12px!important}.stat-grid{gap:12px;margin-bottom:20px}.stat-card{padding:16px}.stat-top{font-size:9px;margin-bottom:12px}.stat-value{font-size:22px}.stat-bottom{font-size:8px;gap:4px}.side-stack{grid-template-columns:1fr}.side-stack .insight-box{grid-column:auto}.section-head,.filterbar{padding:17px}.company-list-header,.company-summary{padding:15px 17px;gap:8px;grid-template-columns:minmax(130px,1fr) 90px 18px}.company-summary>.company-amount,.company-list-header>span:nth-child(3){display:none}.company-list-header>span:nth-child(4){display:none}.company-name{font-size:11px}.company-sub{font-size:8px}.company-monogram{width:29px;height:31px}.company-detail{padding:17px}.company-detail dl{grid-template-columns:repeat(2,minmax(0,1fr))}.security-banner{align-items:flex-start;padding:12px}.security-banner p{font-size:10px}.security-banner button{font-size:10px!important;min-height:32px!important}.security-banner .banner-secondary{display:none}.dashboard-grid-professional{grid-template-columns:1fr!important}.panel{padding:18px!important}.console-bottom{font-size:8px}.access-layout{grid-template-columns:1fr}.access-story{display:none}.access-form-area{min-height:100dvh;padding:36px 25px}.access-form{max-width:360px}.access-form h2{font-size:29px}.access-form input{font-size:16px}.skip-link{left:60px}dialog.console-dialog{width:calc(100% - 20px);max-height:94dvh}.dialog-heading,.dialog-body{padding:20px}.form-grid{grid-template-columns:1fr}.inline-form{flex-wrap:wrap}.grid{grid-template-columns:1fr}.table-tools{gap:8px}.table-count{width:100%}.tabs{overflow:auto}.tabs a{white-space:nowrap}.console-dialog .form-actions{position:sticky;bottom:-20px;background:#fff;padding-bottom:15px}.company-users-count{display:none!important}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{body .global-side-menu,.workspace-header,.global-menu-toggle,.actions,.btn,.filterbar,.security-banner,.console-bottom{display:none!important}body .layout{margin:0!important;padding:0!important}body{background:#fff!important}.console-grid{display:block}.panel,.console-panel,.stat-card{box-shadow:none!important;break-inside:avoid}details.company-row:not([open])>summary{display:grid}.table-wrap{overflow:visible}table.table{min-width:0}}
/* Final navigation and readability constraints. */
.global-side-menu .nav-item{justify-content:flex-start!important;text-align:left!important}.global-side-menu .nav-item span{flex:1;text-align:left!important}.global-side-menu .account-link{justify-content:flex-start!important}.stat-top{font-size:11px}.stat-bottom{font-size:11px}.company-name{font-size:13px}.company-sub,.company-users-count,.panel-footnote,.company-amount small{font-size:11px}.company-amount{font-size:12px}.company-list-header{font-size:10px}.section-head p,.filterbar input,.filterbar select{font-size:12px}.section-link,.due-copy small,.due-value,.activity-item small,.console-bottom{font-size:11px}.due-copy strong,.activity-item strong{font-size:12px}.nav-section-label{font-size:9px}.insight-box p{font-size:12px;color:#716586}.stat-bottom,.panel-footnote,.company-sub,.company-amount small,.console-bottom{color:#758197}.access-form p,.access-story p{color:#6d7890}.access-form .access-privacy{color:#78849a}.access-form .forgot-link{font-size:12px;color:#796da0}.access-form label{font-size:12px}.access-form summary{font-size:11px;color:#7d7196}.workspace-header{min-width:0}.workspace-header-right{flex-shrink:0}.header-account{white-space:nowrap}.company-row>summary::marker{content:''}.nav-account{flex-shrink:0}.global-side-menu{scrollbar-width:thin}.company-detail pre,pre.long-wrap{white-space:pre-wrap;max-width:340px}.table-wrap .table-tools{padding-left:16px;padding-right:16px}
@media(max-width:1280px){html:root,html[data-theme]{--sidebar:220px}}
@media(max-width:760px){html:root,html[data-theme]{--sidebar:0px}.workspace-header{left:0!important;width:100%!important}.workspace-header-right{gap:10px!important}.page-heading h1,.layout>.topbar h1{font-size:25px!important;line-height:1.2!important}.stat-top{font-size:10px}.stat-bottom{font-size:10px}.company-name{font-size:12px}.company-sub{font-size:10px}.company-list-header{font-size:9px}.section-head{flex-wrap:wrap}.panel-footnote{font-size:10px}.console-bottom{font-size:10px}.status-badge{font-size:10px}.company-detail dl{font-size:11px}.access-form summary{font-size:12px}.company-detail .detail-actions .btn{font-size:11px}}

/* Unified operational components. */
.module-icon{width:43px;height:43px;display:grid;place-items:center;background:#f0eefc;color:#8b7ec5;border-radius:11px;margin-bottom:22px}.dashboard-card{align-items:flex-start!important;text-align:left!important;min-height:230px!important;display:flex!important;flex-direction:column!important;gap:0!important}.dashboard-card-copy{margin-bottom:22px;flex:1}.dashboard-card h2{font-size:17px!important;letter-spacing:-.3px!important}.dashboard-card p{font-size:13px!important;line-height:1.65!important}.dashboard-card .dashboard-open{width:auto!important;align-self:flex-start!important;margin-top:auto!important}.dashboard-card::before,.dashboard-card::after{display:none!important}.restricted-card{background:#fff!important;color:#3a485f!important;border-color:#e1e6ef!important;box-shadow:0 6px 24px #26395908!important}.restricted-shell{margin-left:var(--sidebar);min-height:calc(100vh - 70px)!important}.restricted-card p{color:#66748d!important}.page-loader,.brand-mark,.manager-mark{display:none!important}.page-heading p{line-height:1.65!important}.grid.dashboard-grid-professional{grid-template-columns:repeat(3,minmax(0,1fr))!important}.dashboard-card--works,.dashboard-card--projects{background:#fff!important}body .topbar h1{text-transform:none!important;letter-spacing:-.8px!important}
@media(max-width:1100px){.grid.dashboard-grid-professional{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:760px){.grid.dashboard-grid-professional{grid-template-columns:1fr!important}.restricted-shell{margin-left:0;padding-top:90px!important}.dashboard-card{min-height:200px!important}}

.create-work-disclosure>summary::after{display:none!important}.create-work-disclosure>summary{justify-content:space-between!important}.work-card-v2-header{gap:14px!important}.work-card-heading h3{font-size:20px!important;line-height:1.3!important}.work-card-title-meta>span:first-child,.work-card-meta-grid small{font-size:10px!important;color:#7c879b!important;letter-spacing:.6px!important}.work-progress-metric>div:first-child{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:6px!important}.work-progress-metric>div>span{font-size:10px!important;color:#7b879a!important;text-transform:none!important;word-break:normal!important}.work-progress-metric strong{font-size:19px!important;white-space:nowrap!important;word-break:normal!important}.work-progress-metric .progress{margin:10px 0!important}.work-card-meta-grid strong{font-size:12px!important}.work-card-enter{font-size:12px!important;white-space:nowrap}.work-card-details-v2>summary{font-weight:600!important}.work-card-meta-grid>div,.work-progress-metric{background:#fafbfe!important}.work-card-observation-alert{background:#faf9ff!important}.work-card-progress-grid{gap:8px!important}.work-card-v2-header .work-card-heading{min-width:0}

/* Neutral operation feedback: no decorative brand mark. */
.vesmar-operation-loader{background:rgba(235,239,246,.78);backdrop-filter:blur(3px)}
.vesmar-operation-loader-card{background:#fff;color:#29344a;border:1px solid #dce3ef;border-radius:14px;box-shadow:0 18px 60px #25345018;grid-template-columns:minmax(0,1fr) auto!important;padding:24px;gap:18px}
.vesmar-operation-loader-copy{grid-column:1}.vesmar-operation-loader-copy span,.vesmar-operation-loader-card>small{color:#77839a}
.vesmar-operation-loader-value{color:#5145dd}.vesmar-operation-loader-track,.vesmar-operation-loader-card>small{grid-column:1/-1!important}
.vesmar-operation-loader-track{background:#e9edf5;border-radius:20px}.vesmar-operation-loader-track span{background:#5145dd;border-radius:20px}

/* Independent SaaS control: calm, clear boundaries between platform and companies. */
.platform-scope-note{margin:24px 16px 14px;padding:14px;border:1px solid #e4e8f0;border-radius:10px;font-size:11px;line-height:1.7;color:#69788e;background:#fafbfe}
.platform-logout-form{margin:0;display:flex}.platform-logout-form .logout-link{border:0;background:transparent;cursor:pointer;padding:7px}.platform-entry-link{display:flex;align-items:center;justify-content:center;gap:9px;padding:14px;margin-top:20px;border:1px solid #e1e6ef;border-radius:9px;font-size:12px;text-decoration:none;color:#5145a0;background:#fafaff}.platform-entry-link:hover{background:#f0eefb}.access-form .company-selector{margin:0 0 20px;padding:10px 12px;border:1px solid #e5e9f1;border-radius:8px;background:#fafbfe}.company-selector summary{font-weight:600;cursor:pointer}.company-selector summary span{font-weight:400}.company-selector[open] label{margin-top:14px}.company-access-alert{margin:16px 0;padding:12px 15px;border:1px solid #f2d3d5;border-radius:8px;background:#fff5f5;color:#9b3c43;font-size:12px;line-height:1.6}.platform-account-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px}.platform-account-grid .panel{min-width:0}.platform-account-grid .form-grid{grid-template-columns:1fr}.admin-login-note{margin-bottom:22px;padding:14px 16px;border:1px solid #e4e8f0;border-radius:10px;background:#fafbfe;font-size:12px;line-height:1.7;color:#6d7890}.detail-actions{flex-wrap:wrap}.global-side-menu .workspace-title{line-height:1.5}.account-page .topbar h1{font-size:30px}
@media(max-width:900px){.platform-account-grid{grid-template-columns:1fr}}

/* 2026-09-27 UI consolidation: collapsible sidebar, responsive grouped records, semantic states. */
body .layout,.workspace-header,.restricted-shell{transition:margin-left .2s ease,left .2s ease,width .2s ease}
.global-side-menu{transition:transform .2s ease,visibility .2s ease!important}
.global-menu-toggle{display:flex!important;position:fixed!important;top:17px!important;left:calc(var(--sidebar) - 17px)!important;width:34px!important;height:30px!important;z-index:49!important;align-items:center!important;justify-content:center!important;padding:0!important;border:1px solid #dedcf7!important;border-radius:999px!important;background:#fff!important;color:var(--accent)!important;box-shadow:0 4px 15px #29355418!important;cursor:pointer!important;transition:left .2s ease,transform .2s ease,box-shadow .2s ease!important}
.global-menu-toggle:hover{box-shadow:0 6px 20px #29355428!important}
.global-menu-toggle .global-menu-toggle-icon{display:flex!important;align-items:center!important;justify-content:center!important;width:auto!important;height:auto!important;background:transparent!important}
.global-menu-toggle svg{display:block!important;transition:transform .2s ease!important}
body:not(.nav-collapsed) .global-menu-toggle svg{transform:rotate(180deg)!important}
body.nav-collapsed .global-side-menu{transform:translateX(-100%)!important;visibility:hidden!important}
body.nav-collapsed .layout{margin-left:0!important}
body.nav-collapsed .workspace-header{left:0!important}
body.nav-collapsed .restricted-shell{margin-left:0!important}
body.nav-collapsed .global-menu-toggle{left:14px!important}
.dashboard-card .dashboard-open,.dashboard-card .dashboard-open.secondary{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}
.dashboard-card .dashboard-open:hover{background:#5648d7!important;border-color:#5648d7!important;color:#fff!important}
.works-card-grid{grid-template-columns:1fr!important}
.purchase-create-disclosure>summary:after{content:'›';font-size:22px;line-height:1;color:var(--accent);transform:rotate(90deg);transition:transform .18s ease}
.purchase-create-disclosure[open]>summary:after{transform:rotate(-90deg)}
.purchase-invoice-disclosure[data-payment-state="unpaid"]{border-left:4px solid #dc3f4b!important}
.purchase-invoice-disclosure[data-payment-state="partial"]{border-left:4px solid #e58a18!important}
.purchase-invoice-disclosure[data-payment-state="paid"]{border-left:4px solid #2e9567!important}
.purchase-invoice-disclosure[data-payment-state="unpaid"] .purchase-summary-paid{background:#fff1f2!important;color:#a82c37!important}
.purchase-invoice-disclosure[data-payment-state="partial"] .purchase-summary-paid{background:#fff7e8!important;color:#9c5b08!important}
.purchase-invoice-disclosure[data-payment-state="paid"] .purchase-summary-paid{background:#ecf9f2!important;color:#22734f!important}
.purchase-summary-paid{padding:8px 10px!important;border-radius:8px!important}
.purchase-received-toggle{min-height:38px!important;padding:8px 11px!important;border:1px solid #d6dce7!important;border-radius:8px!important;background:#f7f9fc!important;color:#68758a!important;font-size:9px!important;font-weight:800!important;letter-spacing:.04em!important;box-shadow:none!important}
.purchase-received-toggle.is-received{border-color:#2e9567!important;background:#2e9567!important;color:#fff!important;box-shadow:0 0 0 3px #2e95671a!important}
.purchase-is-received>summary{background:linear-gradient(90deg,#f0fbf5 0,#fff 24%)!important}
.invoice-payment-table{min-width:980px!important;table-layout:fixed!important}
.invoice-payment-table .invoice-col-data{width:31%}.invoice-payment-table .invoice-col-amounts{width:31%}.invoice-payment-table .invoice-col-status{width:13%}.invoice-payment-table .invoice-col-emission{width:13%}.invoice-payment-table .invoice-col-date{width:12%}
.invoice-payment-table th,.invoice-payment-table td{vertical-align:top!important;white-space:normal!important}
.invoice-stacked-cell{display:grid!important;gap:7px!important}.invoice-stacked-cell>div{min-width:0!important}.invoice-stacked-cell span{display:block!important;font-size:9px!important;text-transform:uppercase!important;letter-spacing:.05em!important;color:var(--muted)!important}.invoice-stacked-cell strong{display:block!important;margin-top:2px!important;overflow-wrap:anywhere!important}
.invoice-payment-actions-row td,.delivery-actions-row td{padding-top:10px!important;padding-bottom:14px!important;background:#fafbfe!important;border-bottom:2px solid #e3e7ef!important}
.invoice-payment-main-row td,.delivery-note-main-row td{border-bottom:0!important}
.invoice-payment-actions{display:flex!important;flex-direction:row!important;align-items:flex-end!important;gap:9px!important;flex-wrap:wrap!important;min-width:0!important}
.invoice-payment-actions form{margin:0!important}.invoice-payment-actions .invoice-partial-payment-form{flex:1 1 380px!important;max-width:620px!important}.invoice-partial-payment-control{display:flex!important;gap:7px!important;align-items:center!important}.invoice-partial-payment-control input{min-width:150px!important}
.delivery-notes-table{min-width:1120px!important;table-layout:fixed!important}.delivery-col-check{width:7%}.delivery-col-type{width:8%}.delivery-col-date{width:9%}.delivery-col-number{width:11%}.delivery-col-supplier{width:14%}.delivery-col-amounts{width:21%}.delivery-col-user{width:10%}.delivery-col-file{width:13%}.delivery-col-detail{width:7%}
.delivery-notes-table th,.delivery-notes-table td{vertical-align:top!important;white-space:normal!important}.delivery-amounts-cell{min-width:220px!important}.delivery-stacked-amounts{grid-template-columns:1fr!important}.delivery-stacked-amounts>div{display:grid!important;grid-template-columns:minmax(95px,1fr) auto!important;align-items:baseline!important;gap:12px!important;padding-bottom:5px!important;border-bottom:1px solid #edf0f5!important}.delivery-stacked-amounts>div:last-child{border-bottom:0!important;padding-bottom:0!important}.delivery-stacked-amounts strong{text-align:right!important;white-space:nowrap!important}.delivery-actions-strip{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important}.delivery-actions-strip form{margin:0!important}
@media(max-width:760px){
  body.nav-collapsed .global-side-menu{transform:translateX(-100%)!important;visibility:hidden!important}
  body .global-side-menu.show,body.nav-collapsed .global-side-menu.show{transform:translateX(0)!important;visibility:visible!important}
  body .layout{margin-left:0!important}.workspace-header{left:0!important}
  .global-menu-toggle{top:14px!important;left:15px!important;width:31px!important;height:31px!important;background:#fff!important}
  .global-menu-toggle.open{left:255px!important;background:#fff!important}
  body:not(.nav-collapsed) .global-menu-toggle svg{transform:none!important}.global-menu-toggle.open svg{transform:rotate(180deg)!important}
  .global-menu-toggle .global-menu-toggle-icon{width:auto!important;height:auto!important;background:transparent!important}
  .invoice-payment-table,.delivery-notes-table{min-width:900px!important}
}
