:root{
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  color:#172b2f;
  background:#f5f7f8;
  --primary:#087c79;
  --primary-strong:#05615f;
  --primary-soft:#e8f5f4;
  --sidebar:#10383b;
  --sidebar-hover:#16484b;
  --sidebar-active:#1b5c5f;
  --text:#172b2f;
  --muted:#67777b;
  --border:#dfe6e8;
  --border-strong:#c9d4d6;
  --surface:#ffffff;
  --surface-subtle:#f8fafb;
  --success:#17785b;
  --success-bg:#e9f7f1;
  --warning:#9a5a09;
  --warning-bg:#fff6e8;
  --danger:#b33a2b;
  --danger-bg:#fff0ed;
  --info:#2767a8;
  --info-bg:#edf5ff;
  --shadow-sm:0 1px 2px rgba(17,45,49,.05),0 1px 4px rgba(17,45,49,.04);
  --shadow-md:0 12px 32px rgba(17,45,49,.10);
  --radius:10px;
  --radius-lg:14px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#f5f7f8;color:var(--text);font-size:14px;line-height:1.45}
button,input,select,textarea{font:inherit}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:none}
[hidden]{display:none!important}
.icon{display:block;flex:0 0 auto}
.skip-link{position:fixed;left:12px;top:-60px;z-index:1000;background:#fff;padding:10px 14px;border-radius:8px;box-shadow:var(--shadow-md)}
.skip-link:focus{top:12px}

.shell{display:flex;min-height:100vh}
.sidebar{width:268px;background:var(--sidebar);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:40;transition:width .2s ease,transform .22s ease;box-shadow:1px 0 0 rgba(255,255,255,.04)}
.sidebar-head{height:72px;padding:14px 16px;display:flex;align-items:center;gap:11px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-mark{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:#fff;color:var(--primary-strong);font-weight:900;font-size:20px;letter-spacing:-.04em;box-shadow:0 2px 10px rgba(0,0,0,.12);overflow:hidden}
.brand-mark img{width:100%;height:100%;object-fit:contain;padding:0}
.brand-copy{display:grid;min-width:0;line-height:1.1}
.brand-copy strong{font-size:17px;letter-spacing:.08em}
.brand-copy small{font-size:11px;color:#b8d2d3;margin-top:5px;white-space:nowrap}
.sidebar-close{display:none;margin-left:auto;border:0;background:transparent;color:#fff;padding:6px;border-radius:8px;cursor:pointer}
.sidebar-nav{flex:1;overflow-y:auto;padding:14px 10px 18px;display:grid;align-content:start;gap:5px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent}
.nav-item,.nav-group>summary{min-height:42px;display:flex;align-items:center;gap:11px;color:#dceced;padding:9px 11px;border-radius:9px;cursor:pointer;list-style:none;font-weight:620;transition:background .15s ease,color .15s ease}
.nav-item:hover,.nav-group>summary:hover{background:var(--sidebar-hover);color:#fff}
.nav-item.active{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 #74d5d1}
.nav-group>summary::-webkit-details-marker{display:none}
.nav-group>summary .nav-chevron{margin-left:auto;transition:transform .18s ease;opacity:.7}
.nav-group[open]>summary .nav-chevron{transform:rotate(180deg)}
.nav-group>div{display:grid;gap:2px;margin:3px 0 6px 21px;padding-left:17px;border-left:1px solid rgba(255,255,255,.12)}
.nav-group>div .nav-item{min-height:34px;padding:7px 10px;font-size:13px;font-weight:520;position:relative}
.nav-group>div .nav-item::before{content:"";width:5px;height:5px;border-radius:50%;background:#739194;position:absolute;left:-20px}
.nav-group>div .nav-item.active::before{background:#86e0dc;box-shadow:0 0 0 3px rgba(134,224,220,.12)}
.sidebar-footer{padding:11px;border-top:1px solid rgba(255,255,255,.08);display:grid;gap:10px;flex:0 0 auto}
.sidebar-profile{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:4px 8px}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#25585b;color:#fff;font-weight:800;text-transform:uppercase}
.sidebar-secondary{display:grid;gap:6px;padding:4px 0 8px;margin-bottom:2px;border-bottom:1px solid rgba(255,255,255,.08)}
.logout-button{border:0;background:transparent;color:#dceced;width:100%;display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;cursor:pointer}
.logout-button:hover{background:var(--sidebar-hover);color:#fff}
.sidebar-backdrop{display:none}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{min-height:72px;background:rgba(255,255,255,.96);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 24px;position:sticky;top:0;z-index:30}
.topbar-left{display:flex;align-items:center;gap:12px;min-width:0}
.menu-toggle,.sidebar-collapse{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:9px;background:#fff;color:#4d6266;cursor:pointer;transition:.15s ease}
.menu-toggle:hover,.sidebar-collapse:hover{border-color:var(--border-strong);background:var(--surface-subtle);color:var(--primary)}
.menu-toggle{display:none}
.page-context{min-width:0;display:grid;gap:1px}
.page-section{font-size:11px;color:#829196;text-transform:uppercase;letter-spacing:.08em;font-weight:750}
.page-title{margin:0;font-size:18px;line-height:1.25;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{display:flex;align-items:center;gap:9px;min-width:0}
.company-switcher{display:flex;align-items:center;gap:7px;padding:5px 8px;border:1px solid var(--border);border-radius:10px;background:#fff;max-width:330px}
.company-switcher .company-logo{width:26px;height:26px;border-radius:6px;object-fit:contain;background:#fff}
.company-switcher label{font-size:11px;color:var(--muted);font-weight:700;display:none}
.company-switcher select{border:0;padding:3px 26px 3px 2px;box-shadow:none;background-color:#fff;max-width:245px;font-weight:650}
.role-chip{display:inline-flex;align-items:center;height:28px;padding:0 9px;border-radius:999px;background:#f1f5f5;color:#52676a;font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.user-name{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:#4f6165}
.content{padding:24px clamp(16px,2.4vw,34px) 42px;max-width:1800px;width:100%;margin:0 auto;display:flex;flex-direction:column;flex:1;min-height:calc(100vh - 72px)}
.content>*{width:100%}

.panel,.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.panel{padding:20px;margin-bottom:18px}
.card{padding:18px}
.panel>h2:first-child,.panel>h3:first-child{margin-top:0}
h1,h2,h3{color:#183236;letter-spacing:-.015em}
h2{font-size:16px;margin:0 0 14px;font-weight:740}
h3{font-size:14px;margin:0 0 10px}
p{margin:0 0 12px}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:2px 0 18px}
.page-head h1{margin:0 0 4px;font-size:24px}
.muted{color:var(--muted)}
.hint{font-size:12px;color:var(--muted)}

.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 18px}
.cards-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.card span{display:block;color:var(--muted);margin-bottom:9px;font-size:12px;font-weight:650}
.card strong{font-size:27px;line-height:1;color:#14383b;letter-spacing:-.035em}
.grid-two{display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:18px}
.grid-two-wide{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.45fr);gap:18px}
.narrow{max-width:720px}
.top-gap{margin-top:12px}

.form-stack{display:grid;gap:13px;align-items:start}
.form-stack>label:not(.check){width:min(100%,560px)}
.form-stack>textarea{width:min(100%,680px)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,360px));gap:12px;justify-content:start;align-items:start;max-width:1120px;width:100%}
.form-grid>label{width:100%;min-width:0}
.form-grid input,.form-grid select,.form-grid textarea{max-width:360px}
.form-grid input[type=file]{max-width:360px}
.form-stack>input:not([type=hidden]),.form-stack>select{max-width:560px}
.form-stack>textarea{max-width:680px}
.form-stack label,.toolbar label,.form-grid label{display:grid;gap:6px;font-weight:650;font-size:12px;color:#3a5054}
input,select,textarea{width:100%;min-height:38px;border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;background:#fff;color:var(--text);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
textarea{min-height:90px;resize:vertical}
input:hover,select:hover,textarea:hover{border-color:#aebdc0}
input:focus,select:focus,textarea:focus{border-color:#4aa6a2;box-shadow:0 0 0 3px rgba(8,124,121,.11)}
input:disabled,select:disabled,textarea:disabled{background:#f3f5f6;color:#849397;cursor:not-allowed}
input[type=checkbox],input[type=radio]{width:16px;min-height:16px;height:16px;accent-color:var(--primary);padding:0}
input[type=file]{padding:6px;background:var(--surface-subtle)}
select[multiple]{min-height:110px}
.small{max-width:130px}

/* Estándar global de ancho de campos */
.panel form:not(.inline) input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.panel form:not(.inline) select,
.panel form:not(.inline) textarea{width:100%}
.panel form.inline input:not([type=checkbox]):not([type=radio]):not([type=hidden]){width:auto;min-width:180px;max-width:420px}
.panel form.inline select{width:auto;min-width:170px;max-width:320px}
.panel form.inline textarea{max-width:520px}

.check{display:flex!important;align-items:center;gap:8px!important;font-weight:560!important}
.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;border:1px solid var(--border-strong);background:#fff;color:#273f43;border-radius:8px;padding:7px 12px;font-weight:680;font-size:13px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease,transform .05s ease}
.btn:hover{background:#f7f9fa;border-color:#adbdc0;color:#15383b}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(8,124,121,.15)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 1px 2px rgba(5,97,95,.2)}
.btn.primary:hover{background:var(--primary-strong);border-color:var(--primary-strong)}
.btn.warn{background:var(--warning-bg);border-color:#f0d3a8;color:#83500d}
.btn.danger{background:#fff;border-color:#e7b4ad;color:var(--danger)}
.btn.danger:hover{background:var(--danger-bg);border-color:#dc968c}
.btn.ghost{border-color:transparent;background:transparent}
.btn.icon-only{width:36px;padding:0}
.btn[disabled],.btn.is-loading{opacity:.65;cursor:wait;pointer-events:none}
.btn.is-loading::before{content:"";width:13px;height:13px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:nowrap;background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:0 0 16px;box-shadow:var(--shadow-sm)}
.toolbar>form,.toolbar form.inline{display:flex;align-items:center;gap:8px;flex:1 1 auto;min-width:0;flex-wrap:nowrap}
.toolbar input[name=q],.toolbar input[type=search]{min-width:260px;max-width:520px;flex:0 1 520px}
.toolbar select{width:auto;min-width:180px;max-width:320px}
.toolbar .btn{min-height:38px}
.toolbar .muted{margin:0;flex:1 1 auto}
.toolbar>*:last-child{flex:0 0 auto}

.table-panel{display:flex;flex-direction:column;min-height:280px}
.table-panel .table-wrap{flex:1 1 auto;min-height:0;overflow:auto}
.table-panel .pagination-shell{margin-top:auto}
.table-panel-fill{flex:1 1 auto;min-height:460px}
.table-panel-fill .table-wrap{min-height:0}

.table-wrap{width:100%;overflow:auto;border:1px solid var(--border);border-radius:10px;background:#fff;max-height:calc(100vh - 220px);scrollbar-width:thin;scrollbar-color:#c6d2d4 transparent}
table{border-collapse:separate;border-spacing:0;width:100%;white-space:nowrap;background:#fff}
th,td{padding:10px 12px;border-bottom:1px solid #e9eef0;text-align:left;font-size:12.5px;vertical-align:middle}
th{background:#f7f9fa;color:#53666a;font-size:11px;text-transform:uppercase;letter-spacing:.045em;font-weight:780;position:sticky;top:0;z-index:3;box-shadow:0 1px 0 var(--border)}
th.sortable-th{cursor:pointer;user-select:none;padding-right:28px;position:sticky}
th.sortable-th:hover{background:#eef4f4;color:#29484c}
th.sortable-th:focus-visible{outline:2px solid rgba(8,124,121,.45);outline-offset:-2px}
.sort-indicator{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11px;color:#849599;line-height:1}
th[aria-sort="ascending"] .sort-indicator,th[aria-sort="descending"] .sort-indicator{color:var(--primary);font-weight:900}

tbody tr{transition:background .12s ease}
tbody tr:hover{background:#fafcfc}
tbody tr:last-child td{border-bottom:0}
td strong,td b{font-weight:700;color:#20383c}
.wrap-cell{white-space:normal;min-width:220px;max-width:430px;line-height:1.45}
.table-logo{width:38px;height:38px;object-fit:contain;border:1px solid var(--border);border-radius:8px;background:#fff;padding:3px;margin-bottom:5px}
.file-compact{max-width:160px}
.empty-state{text-align:center;color:var(--muted);padding:34px!important;white-space:normal;vertical-align:middle;min-height:180px}

.badge,.tag,.company-chip{display:inline-flex;align-items:center;justify-content:center;min-height:23px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:780;letter-spacing:.025em;line-height:1.2}
.badge{background:#eff4f5;color:#53676b}
.badge.ok{background:var(--success-bg);color:var(--success)}
.badge.warn{background:var(--warning-bg);color:var(--warning)}
.badge.danger{background:var(--danger-bg);color:var(--danger)}
.badge.info{background:var(--info-bg);color:var(--info)}
.tag{background:#eff4f5;color:#53676b;margin:2px}
.company-chip{background:var(--primary-soft);color:var(--primary-strong)}

.alert{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border-radius:10px;margin-bottom:16px;border:1px solid transparent}
.alert strong{display:block;margin-bottom:3px}
.alert ul{margin:5px 0 0;padding-left:20px}
.alert.success{background:var(--success-bg);border-color:#cdeadd;color:#185f4b}
.alert.danger{background:var(--danger-bg);border-color:#f0ccc6;color:#8e3125}
.alert.warning{background:var(--warning-bg);border-color:#f1d9b7;color:#85510d}
.alert.info{background:var(--info-bg);border-color:#d3e5f8;color:#245b92}
.toast-stack{position:fixed;right:20px;top:84px;z-index:100;display:grid;gap:10px;width:min(390px,calc(100vw - 28px));pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;background:#fff;border:1px solid #cdeadd;border-left:4px solid var(--success);border-radius:10px;padding:12px 12px 12px 11px;box-shadow:var(--shadow-md);animation:toast-in .2s ease}
.toast.danger{border-color:#f0ccc6;border-left-color:var(--danger);color:#8e3125}.toast.danger .toast-message{color:#7a3a31}.toast-error-list{margin:4px 0 0;padding-left:18px}
.toast-content{flex:1;min-width:0}.toast-title{font-weight:760;margin-bottom:2px}.toast-message{color:#4d6266}
.toast-close{border:0;background:transparent;color:#728387;cursor:pointer;padding:2px;border-radius:5px}
.toast-close:hover{background:#f1f5f5;color:#40565a}
.toast-close:focus-visible,.modal-close:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(8,124,121,.15)}
.toast-leave{opacity:0;transform:translateY(-6px);transition:.2s ease}
@keyframes toast-in{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}


/* Modales de administración */
body.modal-open{overflow:hidden}
.app-modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:24px}
.app-modal[hidden]{display:none!important}
.modal-backdrop{position:absolute;inset:0;background:rgba(10,29,32,.48);backdrop-filter:blur(2px)}
.modal-dialog{position:relative;width:min(760px,calc(100vw - 32px));max-height:min(88vh,900px);display:flex;flex-direction:column;background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 70px rgba(12,37,40,.22);overflow:hidden}
.modal-dialog.modal-wide{width:min(940px,calc(100vw - 32px))}
.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--border);background:#fff}
.modal-title-wrap{min-width:0}
.modal-title{margin:0;font-size:17px;color:#183236}
.modal-subtitle{margin:3px 0 0;color:var(--muted);font-size:12px}
.modal-close{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--border);border-radius:8px;background:#fff;color:#53676b;cursor:pointer;flex:0 0 auto}
.modal-close:hover{background:var(--surface-subtle);border-color:var(--border-strong)}
.modal-body{padding:20px;overflow:auto;min-height:0;overscroll-behavior:contain}
.modal-body .edit-box{margin:0;padding:0;border:0;background:transparent;min-width:0}
.modal-section{padding-top:16px;margin-top:16px;border-top:1px solid var(--border)}
.modal-section:first-child{padding-top:0;margin-top:0;border-top:0}
.modal-section-title{font-size:13px;font-weight:760;color:#274246;margin-bottom:10px}
.license-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:760px;margin-bottom:12px}.license-summary>div{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle)}.license-summary strong{font-size:13px;color:#20383c}.license-adjust-box{max-width:760px}.license-adjust-box>summary{width:max-content}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border);background:#fbfcfc;flex:0 0 auto}

.pagination-shell{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 2px 0;flex-wrap:wrap;color:var(--muted);font-size:12px}
.pagination-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.pagination-size{display:flex;align-items:center;gap:7px}
.pagination-size select{width:auto;min-height:32px;padding:4px 25px 4px 8px;font-size:12px}
.pagination-links{display:flex;align-items:center;gap:4px}
.page-link,.page-ellipsis{min-width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:#fff;color:#40565a;font-weight:650}
a.page-link:hover{border-color:#92b9b7;color:var(--primary-strong);background:#f7fbfb}
.page-link.active{background:var(--primary);border-color:var(--primary);color:#fff}
.page-link.disabled{opacity:.45}.page-ellipsis{border-color:transparent;background:transparent}

.nav-group details,details{color:inherit}
details>summary{cursor:pointer;color:#365055;font-weight:650}
.panel details>summary,td details>summary{display:inline-flex;align-items:center;min-height:32px;border:1px solid var(--border);border-radius:7px;padding:5px 9px;background:#fff;font-size:12px;list-style:none}
.panel details>summary::-webkit-details-marker,td details>summary::-webkit-details-marker{display:none}
.panel details>summary:hover,td details>summary:hover{background:#f7f9fa;border-color:var(--border-strong)}
.edit-box{margin-top:8px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#fbfcfc;min-width:260px;white-space:normal}
.payment-history{display:grid;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:12px;white-space:normal}
.code-block,pre{background:#f7f9fa;border:1px solid var(--border);border-radius:9px;padding:12px;max-height:420px;overflow:auto;font-size:12px;white-space:pre-wrap}
.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:10px}
.permission-grid fieldset{border:1px solid var(--border);border-radius:9px;padding:10px;background:#fbfcfc}
.permission-grid legend{font-weight:700;font-size:12px;padding:0 4px}
.permission-grid.compact{grid-template-columns:repeat(2,minmax(170px,1fr));min-width:540px}
.detail-list{display:grid;grid-template-columns:minmax(150px,210px) 1fr;gap:9px 14px}.detail-list dt{font-weight:700}.detail-list dd{margin:0;color:var(--muted)}
.bar-list{display:grid;gap:11px}.bar-list>div{display:grid;grid-template-columns:48px 1fr 44px;gap:10px;align-items:center}.bar-list progress{width:100%;height:8px;border:0;border-radius:999px;overflow:hidden}.bar-list progress::-webkit-progress-bar{background:#edf1f2;border-radius:999px}.bar-list progress::-webkit-progress-value{background:var(--primary);border-radius:999px}

.login-page,.auth-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 20% 0,#e9f7f6 0,transparent 38%),#f4f7f8;padding:20px}
.login-card,.auth-card{width:min(430px,100%);background:#fff;border:1px solid var(--border);border-radius:18px;padding:30px;box-shadow:0 18px 50px rgba(17,45,49,.11)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.login-brand .brand-mark{background:var(--primary);color:#fff}.login-brand-copy{display:grid}.login-brand-copy strong{font-size:19px;letter-spacing:.08em}.login-brand-copy span{font-size:12px;color:var(--muted)}
.login-card h1,.auth-card h1{margin:0 0 4px;font-size:21px}.auth-links{margin-top:16px;text-align:center;font-size:13px}

body.sidebar-collapsed .sidebar{width:82px}
body.sidebar-collapsed .brand-copy,body.sidebar-collapsed .nav-label,body.sidebar-collapsed .nav-chevron,body.sidebar-collapsed .logout-label{display:none}
body.sidebar-collapsed .sidebar-head{justify-content:center;padding-inline:10px}
body.sidebar-collapsed .sidebar-nav{padding-inline:10px}
body.sidebar-collapsed .nav-item,body.sidebar-collapsed .nav-group>summary{justify-content:center;padding-inline:0}
body.sidebar-collapsed .nav-group>div{display:none}
body.sidebar-collapsed .sidebar-profile{justify-content:center;padding-inline:0}.sidebar-secondary .nav-group>div{margin-bottom:2px}
body.sidebar-collapsed .logout-button{justify-content:center}

@media(max-width:1180px){.cards,.cards-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-two,.grid-two-wide{grid-template-columns:1fr}.user-name{display:none}}
@media(max-width:820px){
  body.sidebar-collapsed .sidebar{width:min(88vw,320px)}
  body.sidebar-collapsed .brand-copy,body.sidebar-collapsed .nav-label,body.sidebar-collapsed .nav-chevron,body.sidebar-collapsed .logout-label{display:initial}
  body.sidebar-collapsed .nav-group>div{display:grid}
  .shell{display:block}.sidebar{position:fixed;left:0;top:0;width:min(88vw,320px);height:100vh;transform:translateX(-105%);box-shadow:16px 0 40px rgba(0,0,0,.2)}body.sidebar-open .sidebar{transform:translateX(0)}
  .sidebar-backdrop{position:fixed;inset:0;background:rgba(8,30,33,.42);z-index:35;backdrop-filter:blur(2px)}body.sidebar-open .sidebar-backdrop{display:block}
  .sidebar-close{display:grid;place-items:center}.menu-toggle{display:grid}.sidebar-collapse{display:none}
  .topbar{padding:9px 13px;min-height:64px}.page-section{display:none}.page-title{font-size:16px}.top-actions{gap:6px}.role-chip{display:none}.company-switcher{max-width:190px;padding:4px 6px}.company-switcher select{max-width:150px;font-size:12px}
  .content{padding:14px 12px 32px}.panel{padding:14px}.cards,.cards-4{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr;max-width:none}.form-grid input,.form-grid select,.form-grid textarea{max-width:none}.permission-grid,.permission-grid.compact{grid-template-columns:1fr;min-width:0}.toolbar{align-items:stretch;padding:10px;flex-wrap:wrap}.toolbar>form,.toolbar form.inline{width:100%;flex-wrap:wrap}.toolbar input[name=q],.toolbar input[type=search]{min-width:0;flex:1 1 100%}.table-panel{min-height:auto}.table-panel-fill{flex:none;min-height:auto}.table-wrap{max-height:none}.wrap-cell{min-width:190px}.page-head{display:block}.pagination-shell{align-items:flex-start}.pagination-meta{width:100%;justify-content:space-between}.toast-stack{right:14px;top:72px}.grid-two{display:block}.grid-two>.panel{margin-bottom:14px}.app-modal{padding:10px}.modal-dialog,.modal-dialog.modal-wide{width:100%;max-height:94vh}.modal-header,.modal-body,.modal-footer{padding-left:14px;padding-right:14px}
}
@media(max-width:520px){
  .license-summary{grid-template-columns:1fr}
  .top-actions .company-logo{display:none}.company-switcher{border:0;padding:0;max-width:150px}.company-switcher select{max-width:145px;background:#f8fafb;border:1px solid var(--border)}.page-title{max-width:42vw}
  .cards,.cards-4{gap:10px}.card{padding:15px}.card strong{font-size:24px}.panel{border-radius:12px}.toolbar form.inline{display:grid;grid-template-columns:1fr}.toolbar form.inline>*{width:100%;max-width:none}.inline.mobile-stack{display:grid;grid-template-columns:1fr}.pagination-links{max-width:100%;overflow:auto}.pagination-size{margin-left:auto}.login-card,.auth-card{padding:23px 20px}.detail-list{grid-template-columns:1fr}.detail-list dd{padding-bottom:7px;border-bottom:1px solid var(--border)}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* V1.7 · menú de usuario y seguridad de contraseña */
.user-menu{position:relative;flex:0 0 auto}
.user-menu-trigger{display:flex;align-items:center;gap:8px;min-height:38px;border:1px solid transparent;background:transparent;border-radius:10px;padding:4px 7px;cursor:pointer;color:var(--text);transition:background .15s ease,border-color .15s ease}
.user-menu-trigger:hover,.user-menu-trigger[aria-expanded="true"]{background:#f7f9fa;border-color:var(--border)}
.user-menu-trigger .user-name{display:block;max-width:180px}
.user-menu-chevron{color:#738589;transition:transform .15s ease}
.user-menu-trigger[aria-expanded="true"] .user-menu-chevron{transform:rotate(180deg)}
.user-menu-popover{position:absolute;right:0;top:calc(100% + 8px);width:260px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-md);padding:7px;z-index:80}
.user-menu-identity{display:grid;gap:2px;padding:9px 10px 10px;border-bottom:1px solid var(--border);margin-bottom:5px;min-width:0}
.user-menu-identity strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-menu-identity span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.user-menu-item{width:100%;display:flex;align-items:center;gap:9px;min-height:38px;border:0;background:transparent;color:#31494d;border-radius:8px;padding:8px 10px;text-align:left;font-weight:620;cursor:pointer}
.user-menu-item:hover{background:#f4f8f8;color:var(--primary-strong)}
.user-menu-item.danger-text{color:var(--danger)}
.user-menu-item.danger-text:hover{background:var(--danger-bg);color:var(--danger)}
.user-menu-popover form{margin:0}
.sidebar-footer{padding-bottom:12px}
.sidebar-secondary{border-bottom:0;margin-bottom:0;padding-bottom:0}
.account-password-panel{margin-left:auto;margin-right:auto}
.account-password-actions{justify-content:flex-start}
.temporary-password-alert{align-items:flex-start}
.temporary-password-copy{display:grid;gap:5px;min-width:0}
.temporary-password-value{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:3px}
.temporary-password-value code{font-size:15px;font-weight:800;letter-spacing:.04em;background:#fff;border:1px solid #ecd4a8;border-radius:7px;padding:7px 10px;color:#6f470d}

@media(max-width:820px){
  .user-menu-trigger .role-chip{display:none}
  .user-menu-trigger .user-name{max-width:115px}
  .user-menu-popover{right:-3px;width:min(280px,calc(100vw - 26px))}
}
@media(max-width:520px){
  .user-menu-trigger .user-name{display:none}
  .user-menu-trigger{padding-inline:6px}
}

/* V1.11 · diálogos propios y tablas responsive en tarjetas */
.app-system-dialog{z-index:170}
.app-system-dialog .modal-confirm{width:min(520px,calc(100vw - 32px))}
.system-dialog-body{display:grid;gap:12px}
.system-dialog-message{margin:0;color:#31494d;white-space:pre-line}
.system-dialog-detail{padding:11px 12px;border:1px solid var(--border);border-radius:8px;background:#f7f9fa;color:#183236;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:750;letter-spacing:.04em;word-break:break-all;user-select:all}
.mobile-table-sort{display:none}

@media(max-width:820px){
  .mobile-card-wrap{border:0;background:transparent;overflow:visible;border-radius:0}
  .mobile-card-wrap .mobile-table-sort{display:flex;align-items:flex-end;gap:8px;margin:0 0 10px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#fff}
  .mobile-table-sort label{display:grid;gap:5px;flex:1;min-width:0;font-size:11px;font-weight:700;color:#53666a}
  .mobile-table-sort select{min-width:0;width:100%;max-width:none}
  .mobile-table-sort .btn{flex:0 0 auto;min-height:38px}
  table.mobile-card-table{display:block;width:100%;background:transparent;white-space:normal;border:0}
  table.mobile-card-table thead{display:none}
  table.mobile-card-table tbody{display:grid;gap:10px;width:100%}
  table.mobile-card-table tbody tr{display:block;width:100%;background:#fff;border:1px solid var(--border);border-radius:11px;overflow:hidden;box-shadow:var(--shadow-sm)}
  table.mobile-card-table tbody tr:hover{background:#fff}
  table.mobile-card-table tbody td{display:grid;grid-template-columns:minmax(108px,34%) minmax(0,1fr);gap:10px;align-items:start;width:100%;padding:10px 12px;border-bottom:1px solid #e9eef0;white-space:normal;overflow-wrap:anywhere;text-align:left}
  table.mobile-card-table tbody td:last-child{border-bottom:0}
  table.mobile-card-table tbody td::before{content:attr(data-label);font-size:10px;line-height:1.35;font-weight:800;letter-spacing:.045em;text-transform:uppercase;color:#6c7e82}
  table.mobile-card-table tbody td .inline{min-width:0;flex-wrap:wrap}
  table.mobile-card-table tbody td .btn{max-width:100%}
  table.mobile-card-table tbody tr.mobile-empty-row{display:block}
  table.mobile-card-table tbody tr.mobile-empty-row td.empty-state{display:block;text-align:center;padding:28px 16px!important;min-height:0;border-bottom:0}
  table.mobile-card-table tbody tr.mobile-empty-row td.empty-state::before{display:none}
}

@media(max-width:520px){
  .mobile-card-wrap .mobile-table-sort{align-items:stretch;display:grid;grid-template-columns:1fr}
  .mobile-table-sort .btn{width:100%}
  table.mobile-card-table tbody td{grid-template-columns:1fr;gap:4px;padding:10px 12px}
}

/* V1.12 — jerarquía visual compacta y formularios/modal consistentes */
.modal-inline-target{display:block!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important;max-width:none!important;width:100%!important}
.modal-inline-target>h2:first-child,.modal-inline-target>h3:first-child{display:none}
.table-action-modal-content{width:100%}
.table-action-modal-content>.edit-box{margin:0;padding:0;border:0;background:transparent;min-width:0}
.role-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px}
.role-guide>div{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}
.role-guide strong{font-size:12px;color:#234246}.role-guide span{font-size:11px;color:var(--muted);line-height:1.4}
.settings-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.settings-head h2{margin-bottom:4px}.settings-head p{margin:0}
.import-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.import-card{display:flex;flex-direction:column;gap:10px;padding:14px}.import-card h3{margin:0}.import-card form{margin-top:auto}.import-card input[type=file]{max-width:none}.import-flow{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(280px,1.5fr) auto;gap:10px;align-items:end;margin-top:14px}.import-flow label{display:grid;gap:6px;font-weight:650;font-size:12px;color:#3a5054}.import-flow .btn{min-height:38px}.import-flow input[type=file]{max-width:none}
.report-filter-bar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.report-filter-bar label{display:grid;gap:6px;font-size:12px;font-weight:650;color:#3a5054}.report-filter-bar input,.report-filter-bar select{width:auto;min-width:150px}.report-filter-bar .report-actions{display:flex;gap:8px;align-items:center;margin-left:auto}
.report-export-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.report-export-bar .muted{margin-right:auto}
.cards.compact-cards,.cards-4.compact-cards{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:14px}.compact-cards .card{padding:12px 14px;min-height:78px}.compact-cards .card span{margin-bottom:5px;font-size:11px}.compact-cards .card strong{font-size:22px}
.dashboard-lower{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.4fr);gap:14px;flex:1 1 auto;min-height:300px;align-items:stretch}.dashboard-lower>.panel{margin-bottom:0;min-height:300px}.dashboard-lower>.panel:first-child{display:flex;flex-direction:column}.dashboard-lower>.panel:first-child .bar-list{flex:1 1 auto}
.filter-line{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.filter-line label{display:grid;gap:6px;font-size:12px;font-weight:650;color:#3a5054}.filter-line .filter-hint{margin-left:auto;align-self:center;color:var(--muted)}
.toolbar .inline.compact-form{flex:0 1 auto;width:auto;align-items:flex-end}.toolbar .inline.compact-form select{min-width:150px}.toolbar .inline.compact-form input{min-width:120px}.toolbar-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.device-empty-help{display:grid;gap:6px;text-align:center;padding:32px 18px;color:var(--muted)}.device-empty-help strong{color:var(--text)}
.modal-role-note{padding:10px 12px;border-radius:9px;background:var(--surface-subtle);border:1px solid var(--border);font-size:12px;color:var(--muted)}
.stock-movement-note{font-size:12px;color:var(--muted)}

@media(max-width:1180px){.import-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.role-guide{grid-template-columns:1fr}.dashboard-lower{grid-template-columns:1fr}}
@media(max-width:820px){.import-grid{grid-template-columns:1fr}.import-flow{grid-template-columns:1fr}.import-flow>*{width:100%;max-width:none}.report-filter-bar{display:grid;grid-template-columns:1fr 1fr}.report-filter-bar label,.report-filter-bar input,.report-filter-bar select{width:100%;max-width:none}.report-filter-bar .report-actions{margin-left:0;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.report-export-bar{display:grid;grid-template-columns:1fr 1fr}.report-export-bar .muted{grid-column:1/-1}.filter-line{display:grid;grid-template-columns:1fr}.filter-line .filter-hint{margin-left:0}.cards.compact-cards,.cards-4.compact-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.report-filter-bar,.report-filter-bar .report-actions,.report-export-bar{grid-template-columns:1fr}.cards.compact-cards,.cards-4.compact-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-cards .card{min-height:68px;padding:10px 12px}.compact-cards .card strong{font-size:20px}}


/* V1.17 Fase 1 · actas de cierre imprimibles */
@media print{
  .sidebar,.sidebar-backdrop,.topbar,.toolbar,.toast-stack,.app-modal{display:none!important}
  .shell,.main,.content{display:block!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important}
  body{background:#fff!important;color:#111!important}
  .panel,.card{box-shadow:none!important;break-inside:avoid}
  .table-wrap{max-height:none!important;overflow:visible!important}
  table{font-size:9pt!important}
  a{color:inherit!important;text-decoration:none!important}
}

/* V1.17 Fase 2 · ámbito operativo e importaciones configurables */
.access-scope-box{display:grid;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-subtle,#f7f9fa)}
.access-scope-box legend{font-size:12px;font-weight:800;padding:0 5px;color:#29474b}
.warehouse-check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px 14px;padding-top:4px}
.import-flow{grid-template-columns:minmax(180px,.8fr) minmax(220px,1fr) auto minmax(260px,1.2fr) auto}
.table-wrap input[name^="mapping"],.table-wrap input[name^="defaults"]{width:100%;max-width:none;min-width:180px}
@media(max-width:1180px){.import-flow{grid-template-columns:1fr 1fr}.import-flow .btn{width:100%}}
@media(max-width:820px){.import-flow{grid-template-columns:1fr}.warehouse-check-grid{grid-template-columns:1fr}}

/* V1.21 Fase B: columnas de referencia fijas en tablas operativas anchas. */
@media (min-width:821px){
  table.sticky-edge-columns thead th:first-child{left:0;z-index:7;box-shadow:1px 1px 0 var(--border),5px 0 8px -8px rgba(21,50,54,.42)}
  table.sticky-edge-columns tbody td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 var(--border),5px 0 8px -8px rgba(21,50,54,.34)}
  table.sticky-edge-columns tbody tr:hover td:first-child{background:#fafcfc}
  table.sticky-actions-column thead th:last-child{right:0;z-index:7;box-shadow:-1px 1px 0 var(--border),-5px 0 8px -8px rgba(21,50,54,.42)}
  table.sticky-actions-column tbody td:last-child{position:sticky;right:0;z-index:2;background:#fff;box-shadow:-1px 0 0 var(--border),-5px 0 8px -8px rgba(21,50,54,.34)}
  table.sticky-actions-column tbody tr:hover td:last-child{background:#fafcfc}
}

/* V1.21 Fase B: columnas de referencia fijas en tablas operativas anchas. */
@media (min-width:821px){
  table.sticky-edge-columns thead th:first-child{left:0;z-index:7;box-shadow:1px 1px 0 var(--border),5px 0 8px -8px rgba(21,50,54,.42)}
  table.sticky-edge-columns tbody td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 var(--border),5px 0 8px -8px rgba(21,50,54,.34)}
  table.sticky-edge-columns tbody tr:hover td:first-child{background:#fafcfc}
  table.sticky-actions-column thead th:last-child{right:0;z-index:7;box-shadow:-1px 1px 0 var(--border),-5px 0 8px -8px rgba(21,50,54,.42)}
  table.sticky-actions-column tbody td:last-child{position:sticky;right:0;z-index:2;background:#fff;box-shadow:-1px 0 0 var(--border),-5px 0 8px -8px rgba(21,50,54,.34)}
  table.sticky-actions-column tbody tr:hover td:last-child{background:#fafcfc}
}

/* V1.21 Fase C: autocompletado remoto de catálogos operativos. */
.catalog-autocomplete{display:block;position:relative;width:100%;min-width:0;font-weight:400}
.catalog-autocomplete-control{display:block;position:relative;width:100%}
.catalog-autocomplete-control>input{padding-right:36px;max-width:none!important}
.catalog-autocomplete-clear{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:0;border-radius:7px;background:transparent;color:#607478;cursor:pointer;font-size:19px;line-height:1;display:grid;place-items:center}
.catalog-autocomplete-clear:hover,.catalog-autocomplete-clear:focus-visible{background:var(--surface-subtle);color:var(--text);outline:0}
.catalog-autocomplete-results{position:fixed;z-index:220;display:block;overflow:auto;padding:5px;background:#fff;border:1px solid var(--border-strong);border-radius:9px;box-shadow:0 16px 38px rgba(17,45,49,.18)}
.catalog-autocomplete-results[hidden]{display:none!important}
.catalog-autocomplete-option{display:grid;width:100%;gap:2px;padding:9px 10px;border:0;border-radius:7px;background:#fff;color:var(--text);text-align:left;cursor:pointer}
.catalog-autocomplete-option:hover,.catalog-autocomplete-option.active{background:#eef7f6}
.catalog-autocomplete-option strong{font-size:12px;line-height:1.35;font-weight:760}
.catalog-autocomplete-option small{font-size:10px;line-height:1.35;color:var(--muted)}
.catalog-autocomplete-empty{display:block;padding:12px 10px;color:var(--muted);font-size:12px;text-align:center}
.catalog-autocomplete-status{display:block;margin-top:4px;color:var(--muted);font-size:10px;font-weight:500;line-height:1.25}
td .catalog-autocomplete{min-width:210px}
@media(max-width:820px){td .catalog-autocomplete{min-width:0}.catalog-autocomplete-results{max-width:calc(100vw - 16px)}}

/* V1.21 Fase C: KPI operativos navegables. */
a.dashboard-kpi-card{position:relative;text-decoration:none;color:inherit;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
a.dashboard-kpi-card:hover{border-color:#a9c8c7;box-shadow:0 6px 18px rgba(17,45,49,.09);transform:translateY(-1px)}
a.dashboard-kpi-card:focus-visible{outline:0;box-shadow:0 0 0 3px rgba(8,124,121,.14)}
.dashboard-kpi-card em{display:block;margin-top:7px;color:#087c79;font-size:10px;font-style:normal;font-weight:760}
.dashboard-kpi-card.disabled{opacity:.72}

/* V1.21.5 · compactación de UI, accesos rápidos y encabezado homogéneo */
.topbar{min-height:68px;padding:10px 20px}
.content{padding:16px clamp(14px,2vw,26px) 24px;max-width:1760px}
.page-head{margin:0 0 14px}
.panel{padding:18px;margin-bottom:16px}
.card{padding:14px}
.cards{gap:12px;margin:0 0 14px}
.card span{margin-bottom:6px}
.card strong{font-size:24px}
.company-switcher,.user-menu-trigger{min-height:46px;border-radius:12px}
.company-switcher{padding:6px 10px;gap:8px;align-self:stretch}
.company-switcher .company-logo{width:24px;height:24px}
.company-switcher form.inline{gap:0}
.company-switcher select{min-height:32px;padding:3px 26px 3px 2px}
.user-menu-trigger{padding:6px 10px;border:1px solid var(--border);background:#fff}
.role-chip{height:26px}
.toolbar.toolbar-split{justify-content:space-between}
.export-actions{justify-content:flex-end}
.quick-link-grid{display:flex;flex-wrap:wrap;gap:8px}
.campaign-summary-panel{padding-bottom:14px}
.campaign-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.campaign-summary-tags{display:flex;flex-wrap:wrap;gap:8px}
.table-panel-fill{min-height:400px}
@media(max-width:980px){
  .topbar{padding:10px 14px}
  .toolbar.toolbar-split{flex-wrap:wrap}
  .toolbar.toolbar-split>form,.toolbar.toolbar-split>.export-actions{width:100%}
  .export-actions{justify-content:flex-start}
}
@media(max-width:640px){
  .company-switcher{max-width:none}
  .company-switcher select{max-width:170px}
}

/* Bloque 1 SaaS · planes de suscripción */
.subscription-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}
.subscription-plan-card{margin-bottom:0;display:flex;flex-direction:column;min-width:0}
/* Tarjetas de planes: alinear la primera fila de precios aunque la descripcion cambie de longitud. */
 .subscription-plan-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;min-height:112px;box-sizing:border-box;padding-bottom:14px;border-bottom:1px solid var(--border)}
 .subscription-plan-head>div{min-width:0}
.subscription-plan-head h2{font-size:20px;margin:8px 0 4px}.subscription-plan-head p{margin:0;max-width:320px}
.subscription-prices{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:14px 0;border-bottom:1px solid var(--border)}
.subscription-prices>div,.subscription-limits>div{border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle);padding:10px 11px}
.subscription-prices span,.subscription-limits span{display:block;color:var(--muted);font-size:10px;font-weight:700;margin-bottom:3px}.subscription-prices strong{font-size:18px;color:#14383b}
.subscription-limits{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:14px 0}.subscription-limits strong{font-size:13px;color:#20383c}
.subscription-feature-list{display:grid;gap:7px;margin-top:auto;padding-top:2px}.subscription-feature{display:flex;align-items:center;gap:7px;font-size:12px}.subscription-feature.enabled{color:#185f4b}.subscription-feature.disabled{color:#89979a}.subscription-feature-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}
.subscription-current{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-subtle)}
.subscription-current-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.subscription-usage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.subscription-usage>div{border-top:1px solid var(--border);padding-top:8px;font-size:11px}.subscription-usage strong{display:block;font-size:14px}
@media(max-width:1100px){.subscription-plan-grid{grid-template-columns:1fr}.subscription-plan-card{max-width:none}.subscription-plan-head{min-height:0}.subscription-feature-editor{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.subscription-feature-editor,.subscription-usage{grid-template-columns:1fr}.subscription-prices{grid-template-columns:1fr}}

/* V1.22 Bloque 2 · suscripción, transferencias y renovación */
.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;background:var(--warning-bg);color:var(--warning);font-size:10px;font-weight:800}
.billing-only-banner{margin-bottom:14px}
.eyebrow{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.subscription-page-head{align-items:center}
.subscription-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-bottom:14px}
.subscription-plan-current,.subscription-usage-panel{margin-bottom:0}
.subscription-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.subscription-title-row h2{margin:0 0 3px;font-size:18px}
.subscription-dates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.subscription-dates>div{border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle);padding:10px 12px}
.subscription-dates span{display:block;color:var(--muted);font-size:10px;margin-bottom:3px}.subscription-dates strong{font-size:14px}
.subscription-usage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.usage-item{display:grid;gap:7px;border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle);padding:10px 12px}.usage-item>div{display:flex;justify-content:space-between;gap:10px;font-size:11px}.usage-item span{color:var(--muted)}.usage-item progress{width:100%;height:7px;border:0;border-radius:999px;overflow:hidden}.usage-item progress::-webkit-progress-bar{background:#e7edef}.usage-item progress::-webkit-progress-value{background:var(--primary)}
.subscription-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.subscription-plan-card{border:1px solid var(--border);border-radius:12px;background:#fff;padding:14px;display:flex;flex-direction:column;min-width:0}.subscription-plan-card.current{border-color:#90c8c5;box-shadow:0 0 0 2px rgba(8,124,121,.07)}
.subscription-plan-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.subscription-plan-card h3{font-size:18px;margin:2px 0 0}.plan-level{font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.07em}.subscription-plan-card>p{color:var(--muted);font-size:12px;min-height:36px}
.plan-prices{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0}.plan-prices>div,.plan-limits span{border:1px solid var(--border);border-radius:8px;background:var(--surface-subtle);padding:8px 9px}.plan-prices strong{display:block;font-size:15px}.plan-prices span{font-size:10px;color:var(--muted)}
.plan-limits{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.plan-limits span{font-size:10px;padding:5px 7px}
.plan-feature-list{list-style:none;padding:0;margin:auto 0 0;display:grid;gap:5px}.plan-feature-list li{display:flex;gap:6px;align-items:flex-start;font-size:11px;color:#41575b}.plan-feature-list .icon{color:var(--success);margin-top:1px}
/* Mi suscripción: las dos tarjetas y los campos no deben invadir la columna vecina. */
.subscription-payment-layout{
  grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);
  align-items:start;
}
.subscription-payment-layout > .panel,
.subscription-payment-layout [data-subscription-payment-form],
.subscription-payment-layout .payment-request-list,
.subscription-payment-layout .payment-request-item{
  min-width:0;
  max-width:100%;
}
.subscription-payment-layout [data-subscription-payment-form],
.subscription-payment-layout .bank-account-list,
.subscription-payment-layout .payment-request-list{
  grid-template-columns:minmax(0,1fr);
}
.subscription-payment-layout .form-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  min-width:0;
  max-width:100%;
  width:100%;
}
.subscription-payment-layout .form-grid > label{
  min-width:0;
  max-width:100%;
  width:100%;
}
.subscription-payment-layout .form-grid :is(input,select,textarea){
  display:block;
  min-width:0;
  max-width:100%;
  width:100%;
}
.subscription-payment-layout .form-grid input[type=file]{
  overflow:hidden;
}
.subscription-payment-layout .payment-amount-preview,
.subscription-payment-layout .bank-account-list article,
.subscription-payment-layout .payment-request-head > div{
  min-width:0;
  max-width:100%;
  overflow-wrap:anywhere;
}
.subscription-payment-layout .payment-amount-preview{flex-wrap:wrap}
@media(max-width:1180px){
  .subscription-payment-layout{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:720px){
  .subscription-payment-layout .form-grid{grid-template-columns:minmax(0,1fr)}
}

.payment-amount-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #b7d8d6;background:var(--primary-soft);border-radius:10px;padding:11px 13px}.payment-amount-preview span{font-size:11px;color:#476265;font-weight:700}.payment-amount-preview strong{font-size:19px;color:var(--primary-strong)}
.bank-account-list{display:grid;gap:8px}.bank-account-list article{display:grid;gap:2px;border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle);padding:10px 12px}.bank-account-list article strong{font-size:12px}.bank-account-list article span,.bank-account-list article small{font-size:11px;color:var(--muted)}
.payment-request-list{display:grid;gap:9px}.payment-request-item{display:grid;gap:8px;border:1px solid var(--border);border-radius:10px;padding:11px 12px;background:#fff}.payment-request-head{display:flex;justify-content:space-between;gap:10px}.payment-request-head>div{display:grid;gap:2px}.payment-request-head span:not(.badge){font-size:10px;color:var(--muted)}.payment-request-meta{display:flex;justify-content:space-between;gap:10px;font-size:11px}.payment-request-meta span{color:var(--muted)}.payment-review-note{margin:0;padding:8px 9px;border-radius:7px;background:var(--surface-subtle);font-size:11px}
.payment-review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.payment-review-grid section{display:grid;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle)}.payment-review-grid span{color:var(--muted);font-size:10px}.payment-review-grid strong{font-size:12px}.payment-receipt-action{margin-top:12px}
@media(max-width:1080px){.subscription-overview,.subscription-payment-layout{grid-template-columns:1fr}.subscription-plan-grid{grid-template-columns:1fr}.payment-review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.subscription-dates,.subscription-usage-grid,.payment-review-grid{grid-template-columns:1fr}.plan-prices{grid-template-columns:1fr}.subscription-title-row,.payment-request-head{align-items:flex-start;flex-direction:column}.payment-request-meta{flex-direction:column}}
.btn.compact{min-height:32px;padding:5px 9px;font-size:12px}

/* V1.22.3 · Comunidad INVENT */
.forum-notification-link{position:relative;width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--border);border-radius:10px;background:#fff;color:#53676b;flex:0 0 auto}
.forum-notification-link:hover{background:var(--surface-subtle);color:var(--primary)}
.forum-notification-count{position:absolute;right:-5px;top:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:var(--danger);color:#fff;font-size:9px;font-weight:800;border:2px solid #fff}
.forum-page-head{align-items:center}
.forum-kpis .card{min-height:74px}
.forum-toolbar form{gap:7px}
.forum-toolbar input[type=search]{min-width:220px;max-width:390px}
.forum-toolbar select{min-width:145px;max-width:210px}
.forum-topics-panel{min-height:390px}
.forum-topic-cell{min-width:320px;max-width:620px}
.forum-topic-title-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:3px}
.forum-topic-title-line a{color:#193b3e}
.forum-topic-meta{font-size:10.5px;color:var(--muted);line-height:1.35}
.forum-tags{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:7px}
.forum-vote-cell{display:grid;text-align:center;gap:1px}.forum-vote-cell strong{font-size:16px}.forum-vote-cell span{font-size:10px}
.forum-row-actions{flex-wrap:nowrap}
.forum-form-panel{max-width:860px}
.forum-form-actions{margin:4px -20px -20px;padding-bottom:0}
.forum-attachments{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.forum-thread-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,330px);gap:16px;min-height:0}
.forum-thread-main{display:flex;flex-direction:column;gap:14px;min-width:0}
.forum-thread-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.forum-thread-side>.panel{margin-bottom:0}
.forum-post{margin:0;background:#fff}
.forum-post-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--border)}
.forum-author{display:grid;gap:2px;min-width:0}.forum-author strong{font-size:13px}.forum-author span{font-size:10.5px;color:var(--muted)}
.forum-post-body{padding:14px 0;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
.forum-post-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;border-top:1px solid var(--border);padding-top:10px;margin-top:10px}
.forum-replies-panel{display:flex;flex-direction:column;min-height:320px;max-height:calc(100vh - 260px);margin-bottom:0}
.forum-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex:0 0 auto}.forum-section-head h2{margin:0}
.forum-reply-list{overflow:auto;min-height:0;display:grid;gap:10px;padding-right:3px}
.forum-reply{border:1px solid var(--border);border-radius:10px;padding:12px;background:#fff}
.forum-reply-parent{margin:10px 0 0;padding:8px 10px;border-left:3px solid var(--border-strong);background:var(--surface-subtle);font-size:11px;color:var(--muted);border-radius:4px}
.forum-reply-composer{margin-bottom:0}
.forum-summary-card .detail-list{grid-template-columns:110px 1fr}
.forum-moderator-box{max-height:calc(100vh - 250px);overflow:auto}
.forum-unread-row{background:#f2f9f8}tbody tr.forum-unread-row:hover{background:#ecf6f5}
.forum-moderation-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);grid-template-rows:minmax(310px,1fr) minmax(240px,.75fr);gap:14px;min-height:calc(100vh - 150px);max-height:calc(100vh - 150px)}
.forum-moderation-panel{margin:0;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.forum-reports-panel{grid-row:1 / span 2}
.forum-logs-panel{grid-column:2}
.forum-moderation-scroll{overflow:auto;min-height:0;flex:1 1 auto;padding-right:3px}
.forum-report-card{border:1px solid var(--border);border-radius:9px;padding:11px;margin-bottom:9px;background:#fff}.forum-report-card p{margin:6px 0;font-size:11px}.forum-report-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.forum-report-excerpt{padding:7px 8px;background:var(--surface-subtle);border-radius:6px;color:#40565a}
.forum-category-admin{margin-bottom:7px}.forum-category-admin>summary{width:100%!important;justify-content:flex-start}
@media(max-width:1100px){.forum-thread-layout{grid-template-columns:1fr}.forum-thread-side{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.forum-moderation-grid{display:grid;grid-template-columns:1fr;grid-template-rows:auto;max-height:none}.forum-reports-panel,.forum-logs-panel{grid-row:auto;grid-column:auto}.forum-moderation-panel{max-height:520px}}
@media(max-width:820px){.forum-toolbar{display:block}.forum-toolbar form{display:grid;grid-template-columns:1fr 1fr;align-items:stretch}.forum-toolbar input[type=search],.forum-toolbar select{width:100%;min-width:0;max-width:none}.forum-thread-side{grid-template-columns:1fr}.forum-post-footer{align-items:stretch;flex-direction:column}.forum-row-actions{flex-wrap:wrap}}
@media(max-width:520px){.forum-toolbar form{grid-template-columns:1fr}.forum-page-head{align-items:flex-start}.forum-page-head>.inline{width:100%;display:grid;grid-template-columns:1fr}.forum-page-head>.inline .btn{width:100%}}
.forum-attachment-item{display:inline-flex;align-items:center;gap:4px}.forum-attachment-item form{margin:0}
@media(min-width:1101px){
  .forum-thread-layout{height:calc(100vh - 170px);max-height:calc(100vh - 170px)}
  .forum-thread-main,.forum-thread-side{overflow:auto;overscroll-behavior:contain;padding-right:3px}
  .forum-replies-panel{max-height:none;min-height:340px}
  .forum-form-panel{max-height:calc(100vh - 150px);overflow:auto;overscroll-behavior:contain}
}


/* V1.22.3 QA · integración segura de UI operativa V1.21.5 */
.filter-toolbar,.filter-toolbar>form{flex-wrap:wrap}
.filter-toolbar>form{row-gap:8px}
.campaign-shortcuts{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:290px}
.campaign-shortcuts .btn.compact{min-height:31px;padding:5px 8px;font-size:11px}
@media(min-width:1181px){
  body.warehouse-map-page{overflow:hidden}
  body.warehouse-map-page .content{height:calc(100vh - 72px);min-height:0;overflow:hidden;padding-top:16px;padding-bottom:16px}
}
@media(max-width:720px){.campaign-shortcuts{min-width:0}}

/* INVENT · compactación y altura útil del escritorio. No afecta impresión ni móvil. */
@media screen and (min-width:821px) {
  html,body{height:100%;}
  body:has(.shell){overflow:hidden;font-size:12px;}
  .shell{height:100dvh;min-height:0;overflow:hidden;}
  .main{height:100%;min-height:0;overflow:hidden;}
  .main>.content{height:auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:10px 14px 12px;}
  .content:has(>.table-panel-fill){overflow:hidden;}
  .content>.table-panel-fill{min-height:0;flex:1 1 0;overflow:hidden;}
  .content>.table-panel-fill>.table-wrap{flex:1 1 0;min-height:0;max-height:none;overflow:auto;}
  .table-panel .pagination-shell{flex:0 0 auto;margin-top:0;padding:7px 2px 0;}
  .topbar{flex:0 0 auto;min-height:58px;padding:6px 14px;}
  .sidebar-head{height:58px;min-height:58px;padding:9px 12px;}
  .nav-item,.nav-group>summary{min-height:35px;padding:6px 9px;font-size:12px;}
  .nav-group>div .nav-item{min-height:29px;padding:5px 8px;font-size:11px;}
  .content>.panel:not(.table-panel){flex-shrink:0;}
  .content>.toolbar,.content>.alert,.content>.cards{flex-shrink:0;}
  .toolbar{padding:6px 9px;gap:7px;margin-bottom:9px;}
  .toolbar .btn,.btn{min-height:30px;padding:5px 8px;font-size:11px;line-height:1.25;}
  input,select,textarea{font-size:12px;}
  .toolbar input,.toolbar select,.toolbar button,.pagination-size select{min-height:29px;}
  .panel{padding:10px 12px;margin-bottom:9px;}
  .panel h2{margin-top:0;margin-bottom:7px;}
  .card{padding:9px;}
  .card strong{font-size:19px;}
  .cards,.cards.compact-cards,.cards-4.compact-cards{margin-bottom:9px;gap:8px;}
  .compact-cards .card{min-height:57px;padding:8px 10px;}
  .compact-cards .card strong{font-size:18px;}
  .pagination-shell{font-size:11px;}
  .table-wrap table{font-size:11px;}
  .table-wrap th,.table-wrap td{padding:6px 8px;}
  .table-wrap td:last-child>.inline,.table-wrap td:last-child>.actions{flex-wrap:nowrap;white-space:nowrap;}
  .table-wrap td:last-child .btn{white-space:nowrap;}
  .modal-dialog{width:min(620px,calc(100vw - 32px));max-height:83dvh;}
  .modal-dialog.modal-wide{width:min(820px,calc(100vw - 32px));}
  .modal-header,.modal-body,.modal-footer{padding:11px 14px;}
  .modal-footer .btn{width:auto;max-width:220px;}
  .difference-summary{grid-template-columns:repeat(4,minmax(0,1fr))!important;}
  .import-flow{align-items:end;}
  .import-flow .filter-hint{align-self:center;}
}
.invent-ellipsis{display:inline-block;max-width:200px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media(max-width:820px){.invent-ellipsis{max-width:175px;}}

/* INVENT Word review: desktop work area, stable paginator and non-wrapping actions. */
@media screen and (min-width:821px) {
  .content:has(>.table-panel-fill) {display:flex;flex-direction:column;height:100%;min-height:0;}
  .content:has(>.table-panel-fill)>.table-panel-fill {display:flex;flex-direction:column;min-height:0;flex:1 1 0;}
  .content:has(>.table-panel-fill)>.table-panel-fill>.table-wrap {min-height:0;max-height:none;flex:1 1 0;overflow:auto;}
  .content:has(>.table-panel-fill)>.table-panel-fill>.pagination-shell{flex:0 0 auto;}
  .content:has(>.table-panel-fill)>.cards {flex:0 0 auto;}
  .subscription-overview,.subscription-payment-layout {gap:10px;}
  .subscription-overview .panel,.subscription-payment-layout .panel{padding:10px;}
  .subscription-page-head{margin-bottom:8px;}
  .campaign-shortcuts {display:flex;flex-wrap:nowrap;gap:5px;white-space:nowrap;}
  .campaign-shortcuts .btn {white-space:nowrap;}
  .app-modal .modal-dialog {max-height:88dvh;}
  .modal-dialog .form-grid {grid-template-columns:repeat(2,minmax(0,1fr));}
  .modal-dialog .form-grid input,.modal-dialog .form-grid select {min-width:0;width:100%;}
  .unit-summary{align-items:center;flex-wrap:wrap;font-size:11px;}
  .unit-summary span {border:1px solid var(--border);border-radius:6px;padding:3px 7px;}
}


/* INVENT · estandar tipografico transversal (web y escritorio movil navegador).
   KPI: 14 px. Etiquetas KPI, tablas, acciones y paginacion: 11 px.
   Conserva titulos de pagina, textos extensos, branding y estilos de impresion. */
@media screen {
  :root { --invent-kpi-font-size:14px; --invent-compact-font-size:11px; }
  .cards .card > strong,
  .cards.compact-cards .card > strong,
  .dashboard-kpi-card > strong,
  .subscription-usage strong,
  .payment-amount-preview > strong { font-size:var(--invent-kpi-font-size); }
  .cards .card > span,
  .cards.compact-cards .card > span { font-size:var(--invent-compact-font-size); }

  table th, table td { font-size:var(--invent-compact-font-size); }
  table td :is(.badge,.tag,.company-chip,.forum-topic-meta),
  table td .forum-author :is(strong,span),
  table td .forum-vote-cell :is(strong,span),
  table td .catalog-autocomplete-option :is(strong,small),
  table td small { font-size:var(--invent-compact-font-size); }

  .btn,.btn.compact,.toolbar .btn,.campaign-shortcuts .btn.compact,
  .panel details > summary,td details > summary,
  .user-menu-trigger,.user-menu-item { font-size:var(--invent-compact-font-size); }

  .pagination-shell,.pagination-size select,
  .pagination-links .page-link,.pagination-links .page-ellipsis {
    font-size:var(--invent-compact-font-size);
  }
}


/* INVENT 1.24.2 · catálogo comercial de planes: mismo orden y tamaño en las tres columnas. */
.subscription-catalog-plan-grid{align-items:stretch}
.subscription-catalog-card .subscription-feature-list{margin-top:0;grid-auto-rows:minmax(23px,auto);gap:4px;align-content:start}
.subscription-catalog-card .subscription-feature{min-height:23px;align-items:flex-start;padding:3px 0;line-height:1.35}
.subscription-catalog-card .subscription-feature .icon{flex:none}
.subscription-catalog-card .subscription-limits{align-content:start}
.subscription-catalog-manager{margin-top:14px;padding:16px}
.subscription-catalog-manager summary{display:flex;flex-wrap:wrap;align-items:center;gap:10px;cursor:pointer}
.subscription-catalog-manager summary .muted{font-size:11px}
.subscription-catalog-manager>p{font-size:11px;margin:12px 0}
.subscription-catalog-rows{display:grid;gap:7px}
.subscription-catalog-row{border:1px solid var(--border);border-radius:9px;background:var(--surface-subtle);padding:10px;display:flex;align-items:end;gap:8px;flex-wrap:wrap}
.subscription-catalog-editor{display:flex;align-items:end;gap:8px;flex:1;flex-wrap:wrap;min-width:0}
.subscription-catalog-editor>label:not(.check){display:grid;gap:4px;min-width:140px;flex:1;font-size:11px}
.subscription-catalog-editor>label:nth-child(2){min-width:72px;max-width:82px;flex:none}
.subscription-catalog-editor input[type=text],.subscription-catalog-editor input[type=number]{min-height:36px;padding:6px 8px;width:100%}
.subscription-catalog-editor .check{align-self:center;font-size:11px;display:flex;gap:5px;align-items:center;white-space:nowrap}
.subscription-catalog-kind{font-size:10px;white-space:nowrap;align-self:center}
.subscription-catalog-archived{opacity:.75}
@media(max-width:1100px){.subscription-catalog-card .subscription-feature-list{grid-auto-rows:auto}}
