/* Dpunto | Stock Control — sistema visual responsive */
:root{
 --navy:#0b141d;--navy2:#172536;--blue:#5a9be2;--blue-deep:#4476ac;
 --paper:#ffffff;--canvas:#f4f7fa;--muted:#677482;--border:#e0e5eb;
 --ink:#121b26;--radius:18px;--shadow:0 16px 42px rgba(11,20,29,.065);
 --container:1240px;--header:80px
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--canvas);color:var(--ink);font:16px/1.55 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;min-width:320px}
a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{cursor:pointer}img{max-width:100%;height:auto}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #5b95d6;outline-offset:3px}
.skip{position:fixed;left:-999px;z-index:200;background:#ffffff;padding:12px}.skip:focus{left:12px;top:12px}
.container{width:min(calc(100% - 64px),var(--container));margin:0 auto}
.header{position:sticky;top:0;z-index:80;background:#ffffff;border-bottom:1px solid var(--border);box-shadow:0 3px 18px #0b141d09}
.header-inner{width:min(calc(100% - 64px),var(--container));min-height:var(--header);margin:auto;display:flex;justify-content:space-between;align-items:center;gap:26px}
.brand{display:inline-flex;align-items:center;min-width:0;gap:17px;white-space:nowrap}.brand img{display:block;width:138px;max-height:53px;object-fit:contain}.brand-divider{height:29px;border-left:1px solid #dce2e8}.brand-caption{font-size:.79rem;font-weight:650;letter-spacing:.095em;color:#5d6a78}.brand-caption b{color:#426d9d}
.top-nav{display:flex;align-items:center;gap:clamp(10px,1.5vw,24px)}.top-nav>a{font-size:.88rem;font-weight:700;white-space:nowrap;padding:12px 2px;border-bottom:2px solid transparent;color:#3c4a5a}.top-nav>a:hover,.top-nav>a[aria-current=page]{border-bottom-color:var(--blue-deep);color:var(--blue-deep)}.logout{margin:0}.logout button{padding:9px 15px;background:#eff4fa;color:#304c6b;border:0;border-radius:9px;font-weight:750}.logout button:hover{background:#e1ebf7}
.nav-toggle{display:none;border:0;background:transparent;padding:9px;gap:5px}.nav-toggle span{display:block;width:24px;height:2px;background:var(--navy)}
.page-shell{min-height:calc(100svh - var(--header) - 66px);padding:clamp(30px,4vw,56px) 0 68px}.site-footer{background:#ffffff;border-top:1px solid var(--border);color:#7a8693;font-size:.76rem}.site-footer .container{min-height:66px;display:flex;justify-content:space-between;align-items:center;gap:12px}
.eyebrow,.mini-tag{margin:0 0 12px;color:var(--blue-deep);font-size:.77rem;font-weight:850;letter-spacing:.16em;text-transform:uppercase}
h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.035em;line-height:1.15}h1{font-size:clamp(2rem,3.8vw,3.7rem);margin-bottom:14px}h2{font-size:clamp(1.4rem,2.35vw,2.1rem);margin-bottom:15px}h3{font-size:1.12rem;margin-bottom:11px}.lead{font-size:clamp(.98rem,1.2vw,1.13rem);color:#5d6a79;max-width:720px;margin-bottom:0}.muted,.hint,.fine{color:var(--muted)}.hint{margin-bottom:25px}.fine{font-size:.82rem;line-height:1.55}
.page-heading{display:flex;justify-content:space-between;align-items:center;gap:26px;margin:0 0 clamp(26px,3vw,43px)}.page-heading h1{max-width:900px}.page-heading>.btn,.page-heading>a{flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;padding:12px 19px;border-radius:10px;font-size:.91rem;font-weight:800;border:1px solid transparent;white-space:nowrap;text-align:center;transition:background .15s,transform .15s}.btn span{font-size:1.15rem}.btn.primary{color:#ffffff;background:#518ed0}.btn.primary:hover{background:#4476ac;transform:translateY(-1px)}.btn.outline{color:var(--ink);border-color:#c3cdd7;background:#ffffff}.btn.outline:hover{border-color:#518ed0}.btn.full{width:100%;justify-content:space-between}.text-link{font-weight:800;color:var(--blue-deep);border-bottom:1px solid currentColor}.alert{padding:14px 18px;margin:0 0 24px;border-radius:12px;border:1px solid #d0e7d7;background:#f0f9f2;color:#2d593a;overflow-wrap:anywhere}.alert.error{border-color:#ebbfbb;background:#fdf4f2;color:#973a34}
/* Login: alternancia marca azul marino/blanco */
.login-body{background:#ffffff}.login{padding:clamp(32px,5vw,74px) 0}.auth-layout{display:grid;grid-template-columns:1.02fr .98fr;align-items:center;gap:clamp(45px,7vw,115px)}.auth-copy{padding:clamp(30px,5vw,67px);border-radius:22px;min-height:520px;color:#ffffff;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(ellipse at 100% 100%,#2f4f72 0,transparent 58%),linear-gradient(135deg,#0b141d,#172637)}.auth-copy .eyebrow{color:#71a9e9}.auth-copy h1{font-size:clamp(2.5rem,4.6vw,4.5rem)}.auth-copy h1 em{color:#5e9de3;font-style:normal}.auth-copy>p{color:#ced7e1;max-width:520px;font-size:1.03rem}.auth-points{display:flex;gap:22px;flex-wrap:wrap;border-top:1px solid #33455a;padding-top:23px;margin-top:27px}.auth-points span{font-size:.76rem;color:#d3dbe6;display:grid;gap:3px}.auth-points b{font-size:1.4rem;color:#ffffff}.auth-card{width:min(100%,480px);margin-inline:auto;padding:clamp(22px,4vw,42px);background:#ffffff;border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow)}.auth-card h2{font-size:2.2rem}.auth-card>label{margin:16px 0;display:block;font-size:.89rem;font-weight:750}.auth-card .btn{margin-top:17px}.auth-card .fine{margin-top:18px;margin-bottom:0}
/* Forms */
label.field,label.search-field,.filters label,.upload-form label,.user-form label,.answer-form label,.message-form label,.commit-form label{display:block;font-weight:700;font-size:.81rem;color:#3b4959}
input:not([type=checkbox]):not([type=hidden]),textarea,select{display:block;width:100%;margin-top:7px;border:1px solid #d2dbe5;background:#f8fafd;color:var(--ink);border-radius:9px;min-height:44px;padding:10px 12px;font-weight:450;box-shadow:none}
textarea{min-height:102px;resize:vertical}select{appearance:auto}input[type=file]{padding:10px;background:#ffffff}.required{color:#a5434d}.fine{margin-bottom:0}
/* Summary */
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-bottom:43px}.kpi{display:flex;min-height:160px;flex-direction:column;justify-content:space-between;padding:22px 24px;background:#ffffff;border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 28px #0b141d05}.kpi span{font-size:.87rem;font-weight:750;color:#64707f}.kpi b{font-size:clamp(2rem,3.5vw,3.15rem);letter-spacing:-.07em;line-height:1.1}.kpi small,.kpi a{font-size:.78rem;color:#717f8f}.kpi a{font-weight:800;color:var(--blue-deep)}.block-title{display:flex;align-items:end;justify-content:space-between;margin-bottom:20px}.block-title h2{margin-bottom:7px}.block-title p:last-child{max-width:760px;color:var(--muted);margin-bottom:0}.phase-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:32px}
.phase-card{display:flex;flex-direction:column;justify-content:space-between;min-height:188px;border:1px solid var(--border);background:#ffffff;border-top:5px solid var(--phase-color);border-radius:16px;padding:23px 25px;transition:transform .16s,box-shadow .16s}.phase-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.phase-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.phase-no{font-size:.77rem;font-weight:900;letter-spacing:.11em;color:var(--phase-color)}.phase-total{font-size:.76rem;font-weight:800;background:var(--phase-bg);color:var(--phase-color);padding:4px 10px;border-radius:30px}.phase-card h3{font-size:1.26rem;max-width:260px;margin:14px 0}.phase-go{color:var(--phase-color);font-size:.84rem;font-weight:800}.phase-1,.group-1{--phase-color:#a94c73;--phase-bg:#fdf1f6}.phase-2,.group-2{--phase-color:#a07b33;--phase-bg:#fdf5de}.phase-3,.group-3{--phase-color:#5581b1;--phase-bg:#eef5fd}.phase-4,.group-4{--phase-color:#478466;--phase-bg:#ecf7f0}.phase-5,.group-5{--phase-color:#8e6948;--phase-bg:#f6efe9}.phase-6,.group-6{--phase-color:#9a7c36;--phase-bg:#fdf5e1}.group-7{--phase-color:#488b58;--phase-bg:#ecf7ee}.group-8{--phase-color:#8a6c9d;--phase-bg:#f4eef8}
.info-grid,.excel-grid,.users-layout{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel-box,.create-card{padding:clamp(22px,2.5vw,32px);background:#ffffff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0}.panel-box>p:not(.eyebrow){color:#697685}.panel-box h3{font-size:1.3rem}.chip-row{display:flex;gap:9px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;border-radius:40px;padding:5px 10px;font-size:.74rem;font-weight:850;color:#546273;background:#eceff4;white-space:nowrap}.badge.good{color:#36704b;background:#e9f7ed}.badge.defect{color:#9d4b3f;background:#fceceb}.badge.historic{color:#5c6773;background:#eef0f3}
/* Filterable inventory */
.filters{background:#ffffff;border:1px solid var(--border);border-radius:17px;box-shadow:var(--shadow);padding:22px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:22px;align-items:end}.filters .search-field{grid-column:span 2}.filters label{min-width:0}.filters input,.filters select{font-size:.91rem}.filter-actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.filter-actions .btn{padding:11px 15px}.table-shell{background:#ffffff;border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.table-title{padding:18px 23px;display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--border)}.table-title b{font-size:.98rem}.table-title span{font-size:.79rem;color:var(--muted)}.scroll-table{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}table{border-collapse:collapse;width:100%;font-size:.84rem}th{text-align:left;color:#677380;background:#f5f9fc;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;font-weight:850;white-space:nowrap}th,td{padding:13px 16px;border-bottom:1px solid #e9ecf1;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcfe}td{color:#2c3a49}td small{display:block;color:#7d8895;max-width:280px;line-height:1.5;margin-top:4px}.item-link{font-weight:850;color:#406a99;white-space:nowrap}.item-link:hover{text-decoration:underline}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.85em}.table-arrow{font-size:1.15rem;font-weight:900;color:var(--blue-deep)}.phase-chip{display:inline-flex;align-items:center;gap:7px;font-size:.75rem;color:var(--phase-color);font-weight:850;white-space:nowrap}.phase-chip i{width:8px;height:8px;background:var(--phase-color);border-radius:50%;flex-shrink:0}.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:20px}.pager span{margin-right:auto;font-size:.84rem;color:var(--muted)}.empty{text-align:center;padding:35px;color:var(--muted)}
/* Detailed records */
.record-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;background:#0f1b29;color:#ffffff;border-radius:18px;padding:23px 25px;margin-bottom:42px}.record-summary>div{padding:6px 18px;border-right:1px solid #304052;min-width:0}.record-summary>div:first-child{padding-left:0}.record-summary>div:last-child{border-right:0}.record-summary b{display:block;font-size:1.08rem;overflow-wrap:anywhere}.small-title{display:block;color:#a4b3c4;font-size:.69rem;letter-spacing:.1em;font-weight:850;margin-bottom:9px}.record-summary .phase-chip{color:#ffffff}.record-summary .phase-chip i{background:#6fa8e7}
.timeline{list-style:none;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:0 0 40px;padding:0}.timeline-step{min-width:0;display:flex;flex-direction:column;gap:7px;background:#ffffff;border:1px solid var(--border);border-top:4px solid var(--phase-color);border-radius:12px;padding:15px 12px;font-size:.8rem;font-weight:850}.timeline-step .step-num{font-size:.72rem;color:var(--phase-color)}.timeline-step small{font-size:.71rem;font-weight:600;color:#818b96}.timeline-step.later{opacity:.62}.timeline-step.current{background:var(--phase-bg);outline:1px solid var(--phase-color)}.fields-heading{margin-bottom:21px}.stages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.stage-card{overflow:hidden;background:#ffffff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);min-width:0;align-self:start}.stage-head{display:flex;align-items:center;gap:15px;padding:20px 23px;background:var(--phase-bg);border-bottom:1px solid var(--border);border-left:5px solid var(--phase-color)}.stage-head small{font-size:.66rem;color:var(--phase-color);font-weight:900;letter-spacing:.12em}.stage-head h3{margin:3px 0 0;font-size:1.18rem}.stage-mark{font-weight:900;font-size:1rem;color:var(--phase-color);min-width:36px}.status-marker{margin-left:auto;font-size:.71rem;font-weight:800;color:var(--phase-color);white-space:nowrap}.stage-form{padding:23px}.fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.fields-grid label{min-width:0}.field:has(textarea),.notice.inline{grid-column:1/-1}.field input,.field textarea,.field select{font-weight:500}.stage-actions{display:flex;justify-content:flex-end;gap:9px;padding-top:20px;margin-top:20px;border-top:1px solid var(--border)}.stage-actions .btn{font-size:.8rem;padding:11px 16px}.notice{margin:24px 0;background:#eef4fb;border-left:4px solid #5586bc;border-radius:8px;padding:16px 19px;color:#425264}.notice p{margin:5px 0 0;font-size:.85rem}.notice.inline{margin:0}.read-fields{padding:20px 24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:0}.read-fields>div{min-width:0}.read-fields dt{color:var(--muted);font-weight:800;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.read-fields dd{margin:5px 0 0;overflow-wrap:anywhere;font-size:.91rem}.client-note{margin:25px 0;padding:23px 25px;border-radius:15px;background:#eef3f9}.client-note h3{margin:0 0 10px}.client-note p:last-child{margin:0}.message-block{display:grid;grid-template-columns:.85fr 1.15fr;gap:27px;margin-top:25px;padding:30px;background:#ffffff;border:1px solid var(--border);border-radius:17px}.message-block p:not(.eyebrow){color:var(--muted)}.message-form label{display:block}.message-form .btn{margin-top:14px}.conversation,.history{margin-top:18px;padding:19px 24px;background:#ffffff;border-radius:14px;border:1px solid var(--border)}.conversation>div{display:flex;gap:15px;justify-content:space-between}.conversation p{margin:14px 0 0}.conversation blockquote,.request-card blockquote{margin:15px 0 0;padding:16px;background:#eef4fb;border-radius:9px;border-left:4px solid var(--blue-deep)}.history summary{cursor:pointer;font-weight:800}.history li{margin-top:9px;font-size:.82rem}.history code{color:#687482}.create-card{max-width:950px}
/* Workbook exchange and access control */
.excel-grid .panel-box{display:flex;flex-direction:column;align-items:flex-start}.excel-grid .panel-box>p:not(.eyebrow){max-width:510px}.tool-icon{font-size:2rem;font-weight:900;color:#5490d1;background:#eef4fb;display:grid;place-items:center;width:52px;height:52px;border-radius:12px;margin-bottom:20px}.upload-form{display:grid;gap:15px;width:100%;margin-top:auto}.upload-form label{width:100%}.excel-grid .panel-box>form:not(.upload-form){margin-top:auto}.preview{margin-top:27px;padding:23px;background:#ffffff;border:1px solid var(--border);border-radius:16px}.preview>p:not(.eyebrow){color:var(--muted)}.preview .scroll-table{border-radius:9px;border:1px solid var(--border)}.commit-form{display:flex;align-items:end;gap:20px;flex-wrap:wrap;margin-top:20px}.commit-form label:first-child{flex:1 1 290px}.confirm-check{display:flex!important;align-items:center;gap:10px;flex:1 1 290px;font-weight:550!important}.confirm-check input{accent-color:var(--blue-deep);width:18px;height:18px}.user-form{display:grid;gap:15px}.user-form h2{margin-bottom:5px}.user-form .btn{justify-self:start}.users-table{overflow:hidden}.users-table .scroll-table{margin-inline:-15px}.mini-btn{border:1px solid #c2ccd8;background:#f8fafd;color:#3e5165;padding:5px 8px;border-radius:7px;font-size:.72rem}.account-list>div{display:grid;grid-template-columns:110px 1fr;gap:10px;padding:11px 0;border-bottom:1px solid var(--border)}.account-list dt{color:var(--muted)}.account-list dd{margin:0;font-weight:800;overflow-wrap:anywhere}
.tab-filter{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:20px}.tab-filter a{border-radius:8px;padding:9px 15px;border:1px solid var(--border);color:#435365;background:#ffffff;font-size:.84rem;font-weight:800}.tab-filter a.selected{color:#ffffff;background:#477cb5;border-color:#477cb5}.requests-list{display:grid;gap:17px}.request-card{border:1px solid var(--border);border-radius:17px;background:#ffffff;padding:24px}.request-top{display:flex;justify-content:space-between;align-items:start;gap:15px}.request-top h3{font-size:1.35rem;margin:0 0 5px}.request-card>p{padding:18px 0;margin:0;white-space:normal}.answer-form{display:grid;grid-template-columns:1fr 160px auto;align-items:end;gap:14px;border-top:1px solid var(--border);padding-top:15px}.answer-form textarea{min-height:83px}
@media(max-width:1100px){.top-nav{gap:13px}.brand-caption{font-size:.72rem}.header-inner,.container{width:min(calc(100% - 44px),var(--container))}.kpis{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:repeat(3,minmax(0,1fr))}.filters .search-field{grid-column:span 2}.timeline{grid-template-columns:repeat(3,minmax(0,1fr))}.stages{gap:15px}.status-marker{display:none}}
@media(max-width:820px){:root{--header:68px}.nav-toggle{display:grid}.brand img{width:119px}.brand-caption{font-size:.69rem}.top-nav{display:none;position:absolute;top:100%;left:0;right:0;background:#ffffff;border-top:1px solid var(--border);border-bottom:1px solid var(--border);box-shadow:0 15px 25px #0b141d14;flex-direction:column;align-items:stretch;padding:13px 24px;gap:3px}.top-nav.open{display:flex}.top-nav>a{padding:10px;border-bottom:1px solid #ebeef3}.logout button{width:100%;text-align:left}.auth-layout{grid-template-columns:1fr;gap:24px}.auth-copy{min-height:320px}.auth-card{max-width:630px}.page-heading{align-items:start}.phase-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stages,.info-grid,.excel-grid,.users-layout{grid-template-columns:1fr}.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.record-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.record-summary>div:nth-child(2){border:0}.answer-form{grid-template-columns:1fr 1fr}.answer-form label:first-child{grid-column:1/-1}.message-block{grid-template-columns:1fr}.read-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.container,.header-inner{width:calc(100% - 30px)}.brand{gap:9px}.brand img{width:105px}.brand-divider{height:20px}.brand-caption{font-size:.61rem}.page-shell{padding:24px 0 48px}.page-heading{display:block}.page-heading>.btn,.page-heading>a{margin-top:18px;width:100%}.page-heading h1{font-size:2.05rem}.kpis{gap:9px;margin-bottom:31px}.kpi{padding:16px;min-height:133px}.kpi b{font-size:2.05rem}.kpi span{font-size:.77rem}.phase-grid{grid-template-columns:1fr}.phase-card{min-height:140px;padding:18px 20px}.filters{grid-template-columns:1fr;padding:17px;gap:12px}.filters .search-field{grid-column:1}.filter-actions .btn{flex:1}.table-title{display:block}.table-title span{display:block;margin-top:4px}.record-summary{padding:18px 13px;gap:14px}.record-summary>div{padding:8px!important;border:0}.record-summary b{font-size:.9rem}.timeline{grid-template-columns:repeat(2,minmax(0,1fr))}.timeline-step{min-height:98px}.stage-head{padding:16px;gap:8px}.stage-form{padding:16px}.fields-grid,.read-fields{grid-template-columns:1fr;gap:14px}.stage-actions .btn{width:100%}.auth-copy{padding:26px;min-height:340px}.auth-copy h1{font-size:2.6rem}.auth-card{padding:22px}.request-card{padding:16px}.answer-form{grid-template-columns:1fr}.answer-form label:first-child{grid-column:auto}.site-footer .container{align-items:start;flex-direction:column;padding:15px 0;gap:4px}.commit-form,.commit-form .btn{width:100%}}
@media(max-width:370px){.brand-caption{display:none}.brand-divider{display:none}.kpis{grid-template-columns:1fr 1fr}.timeline-step{font-size:.74rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}

/* Gestión de clientes */
.client-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px}
.client-summary>div{display:flex;flex-direction:column;gap:4px;border:1px solid var(--border);background:#ffffff;border-radius:12px;padding:16px 20px}
.client-summary b{font-size:1.65rem;color:#293d54}.client-summary span{font-size:.83rem;color:var(--muted);font-weight:650}
.client-active-checkbox{display:flex!important;align-items:center;gap:10px;font-weight:600!important}
.client-active-checkbox input{width:18px;height:18px;accent-color:var(--blue-deep)}
.mini-btn{cursor:pointer;white-space:nowrap}.mini-btn-danger{color:#8a4037;border-color:#e5c6c3;background:#fdf5f4}.mini-btn-enable{color:#33744c;border-color:#badbc7;background:#eff9f2}
.admin-management{margin-top:20px}.admin-management>summary{cursor:pointer;font-weight:800;font-size:1.03rem;color:#2a3c51;margin-bottom:14px}
.admin-management .user-form{max-width:500px;margin-bottom:24px}
@media(max-width:560px){.client-summary{grid-template-columns:1fr;gap:8px}.client-summary>div{padding:12px 16px}}

/* Códigos independientes y cuentas de acceso */
.client-accounts{margin-top:22px}.users-table .scroll-table{overflow-x:auto}.users-table table{min-width:560px}.mini-btn:disabled{opacity:.4;cursor:not-allowed}

/* Menú compacto: los desplegables flotan sobre la página sin alterar la altura de cabecera. */
.header {z-index:1000;overflow:visible}
.header-inner {position:relative;height:var(--header);min-height:var(--header);overflow:visible}
.top-nav {height:100%;flex-wrap:nowrap;overflow:visible;align-items:center}
.top-nav .nav-group {position:relative;flex:0 0 auto;height:42px;margin:0;padding:0}
.top-nav>a,.top-nav .nav-group>summary {display:inline-flex;align-items:center;height:42px;padding:0 4px;margin:0;color:#3c4a5a;font-size:.88rem;font-weight:700;line-height:1;white-space:nowrap;background:transparent;border:0;border-bottom:2px solid transparent}
.top-nav .nav-group>summary {cursor:pointer;list-style:none;gap:5px}
.top-nav .nav-group>summary::-webkit-details-marker {display:none}
.top-nav .nav-group>summary::after {content:"⌄";font-size:15px;margin-left:3px}
.top-nav .nav-group[open]>summary,.top-nav .nav-group>summary:hover {color:var(--blue-deep);border-bottom-color:var(--blue-deep)}
.top-nav .nav-dropdown {position:absolute;top:calc(100% + 7px);left:0;z-index:1200;display:none;flex-direction:column;gap:3px;min-width:205px;max-width:min(275px,calc(100vw - 24px));margin:0;padding:8px;background:#ffffff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 28px rgba(11,20,29,.13)}
.top-nav .nav-group[open]>.nav-dropdown {display:flex}
.top-nav .nav-group:last-of-type>.nav-dropdown {left:auto;right:0}
.top-nav .nav-dropdown>a {display:block;min-height:40px;padding:9px 12px;font-size:.85rem;font-weight:700;line-height:1.5;color:#3c4a5a;white-space:nowrap;border:0;border-radius:6px}
.top-nav .nav-dropdown>a:hover {background:#eff4fa;color:var(--blue-deep)}
.top-nav .nav-dropdown .logout {width:100%;padding-top:6px;border-top:1px solid var(--border)}
.top-nav .nav-dropdown .logout button {width:100%;text-align:left}
.top-nav .nav-group>summary:focus-visible {outline:3px solid #5b95d6;outline-offset:2px}

/* Operaciones de administración: los formularios son deliberadamente explícitos. */
.action-cell>form {margin-bottom:7px}
.action-cell small {display:block;max-width:180px}
.account-tools {min-width:118px}
.account-tools>summary {cursor:pointer;font-weight:750;color:var(--blue-deep);font-size:.82rem;white-space:nowrap}
.account-tools[open] {margin:5px 0}
.account-tools form {display:grid;gap:8px;min-width:182px;margin:8px 0;padding:9px;background:#f8fafd;border:1px solid var(--border);border-radius:8px}
.account-tools label,.temp-secret label {display:block;font-size:.77rem;font-weight:700;color:#3b4959}
.account-tools input {min-height:37px!important;padding:6px 8px!important;font-size:.8rem!important}
.account-tools .action-buttons {display:flex;flex-wrap:wrap;gap:5px}
.temp-secret {margin-bottom:22px;border-color:#a0b7d2}
.temp-secret input.temp-value {max-width:390px;font-family:ui-monospace,monospace;font-weight:800;letter-spacing:.04em;background:#ffffff}
#codigos,#cuentas {scroll-margin-top:calc(var(--header) + 18px)}

@media(max-width:820px) {
 .top-nav {height:auto;max-height:calc(100svh - var(--header));overflow-y:auto;overflow-x:hidden}
 .top-nav .nav-group {width:100%;height:auto}
 .top-nav .nav-group>summary {display:flex;width:100%;height:44px;justify-content:space-between;padding:0 10px;border-bottom:1px solid var(--border)}
 .top-nav .nav-dropdown,.top-nav .nav-group:last-of-type>.nav-dropdown {position:static;left:auto;right:auto;width:100%;min-width:0;max-width:none;box-shadow:none;border:0;border-left:2px solid var(--border);border-radius:0;margin:0;padding:4px 8px}
 .top-nav .nav-dropdown>a {white-space:normal}
}

/* DPUNTO_LAYOUT_ESTABLE_V7 INICIO
   Reglas de presentación; no cambian datos, rutas ni formularios. */

/* Mantener un ancho constante al entrar en páginas con y sin barra de desplazamiento. */
html { scrollbar-gutter: stable; }

/* Las pestañas del menú conservan siempre las mismas medidas. */
.header, .header-inner { overflow: visible; }
.header-inner { height: var(--header); min-height: var(--header); flex-wrap: nowrap; }
.top-nav { flex: 0 0 auto; flex-wrap: nowrap; align-items: center; height: 100%; overflow: visible; }
.top-nav .nav-group,
.top-nav .nav-group[open] {
    position: relative;
    height: 42px;
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
}
.top-nav > a,
.top-nav .nav-group > summary,
.top-nav .nav-group[open] > summary {
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
    height: 42px;
    margin: 0;
    padding: 0 4px;
    border-width: 0 0 2px;
    border-style: solid;
    font-size: .88rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    transform: none;
}
.top-nav .nav-dropdown,
.top-nav .nav-group[open] > .nav-dropdown {
    position: absolute;
    top: calc(100% + 7px);
    left: 0;
    right: auto;
    width: 225px;
    min-width: 225px;
    max-width: min(275px, calc(100vw - 24px));
    z-index: 1300;
    margin: 0;
    box-sizing: border-box;
}
.top-nav .nav-group:not([open]) > .nav-dropdown { display: none; }
.top-nav .nav-group[open] > .nav-dropdown { display: flex; }
.top-nav .nav-group:last-of-type > .nav-dropdown { left: auto; right: 0; }

/* FICHA DE PRODUCTO: composición por cantidad real de campos. */
.product .record-summary { margin-bottom: 34px; }
.product .timeline {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    margin-bottom: 38px;
}
.product .timeline-step {
    display: grid;
    grid-template-rows: auto 1fr auto;
    align-content: start;
    gap: 9px;
    min-width: 0;
    min-height: 118px;
    padding: 16px 13px;
}
.product .timeline-step > span:nth-child(2) { overflow-wrap: anywhere; }
.product .timeline-step small { align-self: end; }

/* 1 ocupa todo el ancho; 2-3 media fila; 4-5-6 un tercio.
   Estado y Observaciones permanecen separados al final. */
.product .stages {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 20px;
    align-items: stretch;
}
.product .stages > .stage-card {
    grid-column: span 3;
    display: flex;
    flex-direction: column;
    align-self: stretch;
    min-width: 0;
    height: 100%;
}
.product .stages > .group-1 { grid-column: 1 / -1; }
.product .stages > .group-4,
.product .stages > .group-5,
.product .stages > .group-6 { grid-column: span 2; }
.product .stages > .group-7,
.product .stages > .group-8 { grid-column: span 3; margin-top: 20px; }

/* Cabeceras consistentes y títulos con espacio suficiente. */
.product .stage-head {
    min-height: 91px;
    gap: 13px;
    padding: 17px 20px;
    align-items: center;
}
.product .stage-head > div { flex: 1; min-width: 0; }
.product .stage-head h3 {
    font-size: clamp(1.03rem, 1.15vw, 1.18rem);
    line-height: 1.28;
    overflow-wrap: break-word;
}
.product .stage-mark { flex: 0 0 34px; min-width: 34px; }
.product .stage-head .status-marker { flex: 0 0 auto; margin-left: auto; }

/* Los botones Guardar quedan alineados abajo incluso con distinto número de campos. */
.product .stage-form {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
    padding: 20px;
}
.product .stage-form > .fields-grid { align-content: start; }
.product .stage-form > .stage-actions { margin-top: auto; padding-top: 18px; }
.product .read-fields { flex: 1; align-content: start; }
.product .fields-grid { gap: 15px; }
.product .fields-grid .field { min-width: 0; }
.product .fields-grid input,
.product .fields-grid select,
.product .fields-grid textarea { min-width: 0; max-width: 100%; }

/* Recepción: tres columnas equilibradas; descripción ocupa dos. */
.product .stages > .group-1 .fields-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.product .stages > .group-1 .field:has(textarea) { grid-column: span 2; }
/* Bloques breves: un campo por fila, evitando entradas comprimidas. */
.product .stages > .group-4 .fields-grid,
.product .stages > .group-5 .fields-grid,
.product .stages > .group-6 .fields-grid,
.product .stages > .group-7 .fields-grid,
.product .stages > .group-8 .fields-grid { grid-template-columns: minmax(0, 1fr); }

@media (max-width: 1100px) {
    .product .timeline { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .product .stages > .group-4,
    .product .stages > .group-5,
    .product .stages > .group-6 { grid-column: span 3; }
    .product .stages > .group-6 { grid-column: 1 / -1; }
}

@media (max-width: 820px) {
    /* El menú móvil ya es una capa absoluta bajo la cabecera.
       Desplegables anclados BAJO el panel entero, sin empujar las pestañas. */
    .top-nav,
    .top-nav.open {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        height: auto;
        max-height: none;
        min-width: 0;
        overflow: visible;
        flex-direction: column;
        align-items: stretch;
        z-index: 1200;
    }
    .top-nav > a,
    .top-nav .nav-group > summary,
    .top-nav .nav-group[open] > summary {
        display: flex;
        width: 100%;
        height: 44px;
        padding: 0 10px;
        justify-content: space-between;
    }
    .top-nav .nav-group,
    .top-nav .nav-group[open] {
        position: static;
        width: 100%;
        height: 44px;
        flex: 0 0 44px;
    }
    .top-nav .nav-dropdown,
    .top-nav .nav-group:last-of-type > .nav-dropdown,
    .top-nav .nav-group[open] > .nav-dropdown {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        width: 100%;
        min-width: 0;
        max-width: none;
        padding: 9px 18px;
        background: #ffffff;
        border: 1px solid var(--border);
        border-radius: 0 0 12px 12px;
        box-shadow: 0 15px 25px #0b141d20;
    }
}

@media (max-width: 700px) {
    .product .stages > .stage-card,
    .product .stages > .group-1,
    .product .stages > .group-4,
    .product .stages > .group-5,
    .product .stages > .group-6,
    .product .stages > .group-7,
    .product .stages > .group-8 { grid-column: 1 / -1; }
    .product .stages > .group-1 .fields-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .product .stages > .group-1 .field:has(textarea) { grid-column: 1 / -1; }
    .product .stages > .group-7 { margin-top: 16px; }
    .product .stages > .group-8 { margin-top: 0; }
    .product .stage-head { min-height: 82px; }
}

@media (max-width: 470px) {
    .product .timeline { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
    .product .timeline-step { min-height: 104px; }
    .product .stages > .group-1 .fields-grid { grid-template-columns: minmax(0, 1fr); }
    .product .stage-form { padding: 16px; }
}
/* DPUNTO_LAYOUT_ESTABLE_V7 FIN */

/* FASE 1 · Flujo secuencial obligatorio */
.stage-card.stage-locked{opacity:.72;box-shadow:none}
.stage-card.stage-locked .stage-head{filter:saturate(.55)}
.stage-lock-notice{padding:22px 24px;background:#f8fafd;color:#5c6979;border-top:1px solid var(--border)}
.stage-lock-notice b{display:block;color:#3b4a5c;margin-bottom:5px}
.stage-lock-notice p{margin:0;font-size:.84rem}
.timeline-step.done{background:#ffffff}
.timeline-step.done small{color:#3f7455;font-weight:800}
.workflow-error{border-left-color:#b7544c;background:#fdf4f3;color:#733a35}
.workflow-ok{border-left-color:#509269;background:#f1f9f4;color:#38664b}
.workflow-cell{min-width:260px;white-space:normal!important}
.workflow-cell small{display:block;margin-top:5px;color:#6d7987;line-height:1.4}
.workflow-bad,.workflow-good{display:inline-flex;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:850}
.workflow-bad{background:#fbe6e3;color:#94463e}.workflow-good{background:#eaf6ee;color:#39704d}
.btn:disabled,button:disabled,select:disabled,input:disabled{opacity:.55;cursor:not-allowed}
.progress-warning{display:block;margin-top:5px;color:#99603a;font-size:.7rem;font-weight:800}
.timeline-step.legacy-locked{opacity:.82;background:#fef8ef;border-style:dashed}
.timeline-step.legacy-locked small{color:#93653b;font-weight:750}

/* FASE 3 · Ubicaciones de almacén estructuradas */
.storage-editor{grid-column:1/-1;padding:14px 15px;border:1px solid var(--border);border-radius:12px;background:#f8fbfd}
.storage-editor-title{display:block;font-size:.81rem;font-weight:850;color:#3b4959;margin-bottom:10px}
.storage-editor-grid{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(0,1.3fr);gap:13px}
.storage-legacy-note{display:block;margin:-2px 0 10px;color:#92693e;font-size:.73rem;line-height:1.4}
.storage-chip{display:inline-flex;align-items:center;gap:7px;flex-wrap:wrap;max-width:100%;font-size:.73rem}
.storage-chip b{display:inline-flex;padding:4px 8px;border-radius:999px;background:#eceff4;color:#546273;font-size:.68rem;letter-spacing:.04em;text-transform:uppercase}
.storage-chip span{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;color:#354455;overflow-wrap:anywhere}
.storage-chip.palet b{background:#ebf3fb;color:#3f6590}
.storage-chip.balda b{background:#ebf7ef;color:#3d7355}
.storage-chip.otro b{background:#f1edf6;color:#6e5a82}
.storage-chip.legacy b{background:#fcf0e1;color:#895f36}
.record-summary .storage-chip span{color:#ffffff}.record-summary .storage-chip b{background:#314256;color:#e1ebf7}
@media(max-width:560px){.storage-editor-grid{grid-template-columns:1fr}}

/* HOTFIX F3 · edición contextual del perfil del cliente */
.client-profile-summary .inline-profile-editor{margin-top:.55rem}
.client-profile-summary .inline-profile-editor form{display:grid;gap:.55rem;margin-top:.65rem;min-width:min(360px,78vw)}
.client-profile-summary .inline-profile-editor label{display:grid;gap:.25rem;font-size:.82rem}
.client-profile-summary .inline-profile-editor input{width:100%}

/* HOTFIX F3 · modales que no alteran ni reescalan el layout */
.profile-modal-open{margin-top:.55rem}
.app-modal{border:0;padding:0;background:transparent;max-width:none;max-height:none;width:auto;height:auto;color:inherit}
.app-modal::backdrop{background:rgba(11,20,29,.55);backdrop-filter:blur(2px)}
.app-modal-card{width:min(520px,calc(100vw - 32px));max-height:min(82vh,760px);overflow:auto;background:#ffffff;border:1px solid var(--border);border-radius:18px;box-shadow:0 26px 70px rgba(11,20,29,.28);padding:22px}
.app-modal-card.compact{width:min(560px,calc(100vw - 32px))}
.app-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.app-modal-head h2{margin:.15rem 0 0;font-size:1.22rem;color:#1f2e3e}
.modal-close{display:grid;place-items:center;box-sizing:border-box;border:0;padding:0;margin:0;background:#f0f3f7;color:#3f4e60;width:36px;height:36px;border-radius:999px;font-size:1.42rem;font-weight:800;line-height:1;text-align:center;cursor:pointer;flex:0 0 36px;min-width:36px;min-height:36px;overflow:hidden}.modal-close:hover{filter:brightness(.98)}.modal-close:focus-visible{outline:2px solid #5a9be2;outline-offset:2px}

.modal-form{display:grid;gap:13px}
.modal-form label{display:grid;gap:6px;font-size:.82rem;font-weight:750;color:#425161}
.modal-form input{width:100%;min-width:0}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:18px}
.customer-sync-copy p{margin:.25rem 0 1rem;color:#5b6877;line-height:1.5}
.sync-compare{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.sync-compare>div{padding:13px 14px;background:#f6f9fb;border:1px solid var(--border);border-radius:12px;min-width:0}
.sync-compare small{display:block;color:#737f8c;margin-bottom:5px;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;font-weight:800}
.sync-compare b{display:block;color:#273749;overflow-wrap:anywhere}
@media(max-width:560px){.app-modal-card{width:calc(100vw - 20px);padding:18px;border-radius:15px}.sync-compare{grid-template-columns:1fr}.modal-actions{display:grid;grid-template-columns:1fr}.modal-actions .btn{width:100%}}

/* FASE 4 · permisos de administración */
.permission-grid{border:1px solid var(--line,#dfe4ea);border-radius:14px;padding:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px}
.permission-grid legend{padding:0 8px;font-weight:700}.permission-grid label,.permission-editor label{display:flex;align-items:center;gap:8px;font-size:.92rem}.permission-grid input,.permission-editor input{width:auto}
.permission-editor{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;min-width:320px}.permission-editor .mini-btn{grid-column:1/-1;justify-self:start;margin-top:6px}.permission-pill{display:inline-flex;padding:6px 10px;border-radius:999px;background:#f0f6fd;border:1px solid #d1e2f5;font-size:.8rem;font-weight:700}
@media(max-width:720px){.permission-grid,.permission-editor{grid-template-columns:1fr;min-width:0}}

.auth-help{margin:14px 0 0;text-align:center}.auth-help a{font-weight:700;text-decoration:none}.auth-single{grid-template-columns:minmax(0,520px);justify-content:center}.auth-single .auth-card{width:100%;max-width:520px}


/* UX · continuidad visual, errores contextuales y confirmaciones modales */
html{scroll-behavior:auto}
.context-alert{margin:10px 0 12px;box-shadow:0 8px 24px rgba(11,20,29,.08);scroll-margin-top:96px}
.permission-editor>.context-alert,.user-form>.context-alert,.account-tools form>.context-alert{grid-column:1/-1;width:100%}
.app-confirm-modal{position:fixed!important;inset:0!important;margin:auto!important;padding:0!important;width:max-content!important;height:max-content!important;max-width:100vw!important;max-height:100vh!important;overflow:visible!important}
.app-confirm-modal[open]{display:grid!important;place-items:center!important}
.app-confirm-modal::backdrop{background:rgba(11,20,29,.56);backdrop-filter:blur(2px)}
.confirm-modal-card{width:min(500px,calc(100vw - 32px));margin:auto;max-height:min(80vh,680px);overflow:auto;text-align:left}
.confirm-modal-message{margin:0;color:#4d5b6c;line-height:1.58;font-size:.96rem;overflow-wrap:anywhere}
.confirm-danger{background:#a8473f!important;border-color:#a8473f!important}.confirm-danger:hover{background:#8d3832!important}
@media(max-width:560px){.app-confirm-modal{width:100%!important}.confirm-modal-card{width:calc(100vw - 20px);max-height:86vh}.confirm-modal-card .modal-actions{grid-template-columns:1fr}.confirm-modal-card .modal-actions .btn{width:100%}}


/* UX · contraseña temporal contextual */
.temp-secret-inline{margin-top:10px;padding:12px;border:1px solid #c5d6ea;border-radius:12px;background:#f5f8fc;display:grid;gap:7px;min-width:min(330px,72vw);max-width:420px}
.temp-secret-inline>b{color:#27394d;font-size:.82rem}
.temp-secret-inline>small{color:#687584;overflow-wrap:anywhere}
.temp-secret-inline .temp-value{width:100%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:800;letter-spacing:.02em;background:#ffffff}
.temp-secret-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.temp-secret-actions .mini-btn{margin:0}
.temp-hide-btn{opacity:.78}
.temp-copy-status{min-height:1em;color:#397151!important;font-weight:750}
@media(max-width:640px){.temp-secret-inline{min-width:0;max-width:none}.temp-secret-actions{display:grid;grid-template-columns:1fr}.temp-secret-actions .mini-btn{width:100%}}

/* Recuperación de acceso: feedback contextual y errores por campo. */
.auth-inline-feedback{margin:14px 0 4px;width:100%;box-sizing:border-box}
.auth-card .field-error{display:block;margin-top:6px;font-size:.82rem;font-weight:700;color:#9e3e33;line-height:1.35}
.auth-card input[aria-invalid="true"]{border-color:#b65447;box-shadow:0 0 0 3px rgba(182,84,71,.10)}


/* HOTFIX UX V13 · avisos contextuales y nav acordeón */
.global-flash.context-alert,
.context-alert {
  margin: 10px 0 12px;
  width: 100%;
  box-sizing: border-box;
  box-shadow: 0 8px 24px rgba(11,20,29,.08);
  scroll-margin-top: calc(var(--header) + 18px);
}
/* Garantía visual: un details cerrado jamás conserva su panel visible. */
#top-nav details.nav-group:not([open]) > .nav-dropdown { display: none !important; }
#top-nav details.nav-group[open] > .nav-dropdown { display: flex; }
/* El dropdown activo queda por encima sin modificar el flujo del header. */
#top-nav details.nav-group[open] { z-index: 1400; }

/* HOTFIX v14 · Inventario sin scroll horizontal */
.inventory-table-wrap{overflow-x:visible!important;max-width:100%}
.inventory-table{width:100%;table-layout:fixed;font-size:.76rem}
.inventory-table th,.inventory-table td{padding:10px 7px;white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.35}
.inventory-table th{font-size:.62rem;letter-spacing:.035em}
.inventory-table td small{max-width:none;margin-top:2px;font-size:.7rem;line-height:1.35}
.inventory-table .item-link{white-space:normal;display:inline;font-size:.78rem}
.inventory-table .phase-chip,.inventory-table .storage-chip{white-space:normal;max-width:100%}
.inventory-table .storage-chip{gap:4px;padding:5px 6px}
.inventory-table .inventory-open{text-align:center}
.inventory-table th:nth-child(1){width:4%}
.inventory-table th:last-child{width:3%}

@media (min-width:1101px){
  .inventory-table th:nth-child(2){width:9%}
  .inventory-table th:nth-child(3){width:17%}
  .inventory-table th:nth-child(4){width:9%}
  .inventory-table th:nth-child(5){width:8%}
  .inventory-table th:nth-child(6){width:9%}
  .inventory-table th:nth-child(7),
  .inventory-table th:nth-child(8){width:10%}
  .inventory-table th:nth-child(9){width:11%}
  .inventory-table th:nth-child(10){width:7%}
}

/* En pantallas donde 10/11 columnas dejarían de ser legibles,
   cada registro pasa a una ficha compacta: se ven TODOS los datos sin desplazamiento lateral. */
@media (max-width:1100px){
  .inventory-table-wrap{overflow:visible!important}
  .inventory-table,.inventory-table tbody{display:block;width:100%}
  .inventory-table thead{display:none}
  .inventory-table tbody{padding:12px}
  .inventory-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin:0 0 12px;padding:8px 14px;background:#ffffff;border:1px solid var(--border);border-radius:12px;box-shadow:0 4px 14px rgba(11,20,29,.045)}
  .inventory-table tbody tr:hover{background:#ffffff}
  .inventory-table td{display:grid;grid-template-columns:minmax(105px,34%) 1fr;align-items:start;gap:8px;padding:8px 0;border-bottom:1px solid #eff2f5;min-width:0;text-align:left!important}
  .inventory-table td::before{content:attr(data-label);font-size:.64rem;line-height:1.35;text-transform:uppercase;letter-spacing:.055em;font-weight:850;color:#788492}
  .inventory-table td:nth-last-child(-n/**/+2){border-bottom:0}
  .inventory-table .inventory-open{justify-content:start}
  .inventory-table .table-arrow{justify-self:start}
}
@media (max-width:680px){
  .inventory-table tr{grid-template-columns:1fr;padding:8px 12px}
  .inventory-table td{grid-template-columns:112px minmax(0,1fr)}
  .inventory-table td:nth-last-child(2){border-bottom:1px solid #eff2f5}
}

/* UX v14 · gestión en modales centrados */
.management-modal{position:fixed!important;inset:0!important;margin:auto!important;padding:0!important;width:max-content!important;height:max-content!important;max-width:100vw!important;max-height:100vh!important;overflow:visible!important}
.management-modal[open]{display:grid!important;place-items:center!important}
.management-modal::backdrop{background:rgba(11,20,29,.58);backdrop-filter:blur(2px)}
.management-modal .app-modal-card{width:min(620px,calc(100vw - 32px));max-height:min(86vh,780px);overflow:auto;margin:auto}
.management-modal .modal-form{display:grid;gap:14px}
.management-modal .modal-form label{display:grid;gap:6px;font-size:.88rem;font-weight:700;color:#3b4959}
.management-modal .modal-form input,.management-modal .modal-form select{width:100%;min-height:42px}
.management-modal .permission-editor{min-width:0;grid-template-columns:repeat(2,minmax(0,1fr))}
.management-modal .permission-editor .modal-actions{grid-column:1/-1}
.management-modal .modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}
.management-modal .modal-actions .btn{min-width:118px}
.action-cell>button[data-modal-open],td>button[data-modal-open]{margin:0 0 7px}
@media(max-width:620px){.management-modal{width:100%!important}.management-modal .app-modal-card{width:calc(100vw - 20px);max-height:88vh;padding:18px}.management-modal .permission-editor{grid-template-columns:1fr}.management-modal .modal-actions{display:grid;grid-template-columns:1fr}.management-modal .modal-actions .btn{width:100%}}

/* UX v15 · composición simétrica, compacta y orientada al usuario */
#codigos.users-layout{grid-template-columns:minmax(300px,.8fr) minmax(0,1.35fr);gap:18px;align-items:start}
#codigos>.panel-box{padding:clamp(20px,2vw,27px)}
#codigos>.panel-box>h2,#tiendas>h2,.client-accounts h2{margin:.2rem 0 .45rem;line-height:1.2}
#codigos>.panel-box>.fine,#tiendas>.fine,.client-accounts>.fine{margin:.35rem 0 1rem;line-height:1.55}
.client-summary{gap:12px;margin-bottom:18px}
.client-summary>div{min-height:82px;justify-content:center;padding:14px 18px}
.client-summary b{line-height:1}.client-summary span{line-height:1.25}

/* Catálogo: sin sensación de tabla interminable ni desplazamiento lateral en uso normal. */
.client-catalog-panel{overflow:hidden}
.client-catalog-panel .scroll-table{overflow:visible;margin-inline:0}
.client-catalog-table{table-layout:fixed;width:100%}
.client-catalog-table th,.client-catalog-table td{padding:11px 10px;white-space:normal;overflow-wrap:anywhere}
.client-catalog-table th:nth-child(1){width:11%}.client-catalog-table th:nth-child(2){width:25%}
.client-catalog-table th:nth-child(3),.client-catalog-table th:nth-child(4),.client-catalog-table th:nth-child(5){width:8%}
.client-catalog-table th:nth-child(6){width:12%}.client-catalog-table th:nth-child(7){width:28%}
.client-catalog-table td small{max-width:none;margin-top:3px}
.client-catalog-table .action-cell{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-items:stretch}
.client-catalog-table .action-cell>form,.client-catalog-table .action-cell>button{margin:0!important;min-width:0}
.client-catalog-table .action-cell .mini-btn{width:100%;height:100%;min-height:34px;display:inline-flex;align-items:center;justify-content:center;text-align:center}
.client-catalog-table .action-cell>small{grid-column:1/-1;margin:0}
.client-row-extra[hidden]{display:none!important}
.catalog-more-row{display:flex;justify-content:center;align-items:center;padding-top:16px;margin-top:4px;border-top:1px solid #eff2f5}
.catalog-more-btn{min-width:210px;justify-content:center}
.catalog-more-btn span{font-weight:800;color:var(--muted)}

/* Formularios: ritmos iguales y campos alineados. */
#codigos .user-form,#tiendas .user-form,.admin-management .user-form{gap:13px}
#codigos .user-form label,#tiendas .user-form label{margin:0}
#codigos .user-form input,#codigos .user-form select,#tiendas .user-form input,#tiendas .user-form select{min-height:43px}
#codigos .user-form .btn,#tiendas .user-form .btn{min-height:43px;margin-top:2px}

/* Modales de gestión: centro real, medidas coherentes y sin huecos excesivos. */
.management-modal[open],.app-confirm-modal[open]{display:grid!important;place-items:center!important;padding:16px!important}
.management-modal .app-modal-card,.app-confirm-modal .app-modal-card{margin:auto!important;width:min(600px,calc(100vw - 32px));max-height:min(86vh,760px);padding:clamp(19px,2.2vw,25px);overflow:auto}
.management-modal .app-modal-head,.app-confirm-modal .app-modal-head{align-items:center;margin-bottom:15px}
.management-modal .app-modal-head>div,.app-confirm-modal .app-modal-head>div{min-width:0}
.management-modal .app-modal-head h2,.app-confirm-modal .app-modal-head h2{overflow-wrap:anywhere}
.management-modal .modal-form{gap:12px}
.management-modal .modal-form label{gap:5px;margin:0}
.management-modal .modal-actions,.app-confirm-modal .modal-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:9px;margin-top:8px}
.management-modal .modal-actions .btn,.app-confirm-modal .modal-actions .btn{width:100%;min-width:0;justify-content:center;min-height:42px}
.confirm-modal-message{padding:2px 0 8px}

/* Las tablas de gestión pasan a fichas antes de necesitar scroll horizontal. */
@media(max-width:1120px){
  #codigos.users-layout{grid-template-columns:1fr}
  .client-catalog-table thead{display:none}
  .client-catalog-table,.client-catalog-table tbody{display:block;width:100%}
  .client-catalog-table tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 16px;padding:13px 14px;margin-bottom:10px;border:1px solid var(--border);border-radius:13px;background:#ffffff;box-shadow:0 4px 14px rgba(11,20,29,.04)}
  .client-catalog-table td{display:block;padding:7px 0;border:0;min-width:0}
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7){grid-column:span 2}
  .client-catalog-table td:before{display:block;font-size:.66rem;font-weight:850;letter-spacing:.05em;text-transform:uppercase;color:#828c97;margin-bottom:3px}
  .client-catalog-table td:nth-child(1):before{content:"Código"}.client-catalog-table td:nth-child(2):before{content:"Cliente"}
  .client-catalog-table td:nth-child(3):before{content:"Productos"}.client-catalog-table td:nth-child(4):before{content:"Cuentas"}
  .client-catalog-table td:nth-child(5):before{content:"Centros"}.client-catalog-table td:nth-child(6):before{content:"Estado"}
  .client-catalog-table td:nth-child(7):before{content:"Operaciones"}
}
@media(max-width:680px){
  .client-catalog-table tr{grid-template-columns:1fr 1fr;gap:0 12px;padding:12px}
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7){grid-column:1/-1}
  .client-catalog-table .action-cell{grid-template-columns:1fr 1fr}
  .client-summary{grid-template-columns:1fr 1fr}.client-summary>div:last-child{grid-column:1/-1}
  .management-modal[open],.app-confirm-modal[open]{padding:10px!important}
  .management-modal .app-modal-card,.app-confirm-modal .app-modal-card{width:100%;max-height:90vh;padding:18px}
}
@media(max-width:430px){
  .client-catalog-table tr{grid-template-columns:1fr}
  .client-catalog-table td,.client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7){grid-column:1/-1}
  .client-catalog-table .action-cell{grid-template-columns:1fr}
  .client-summary{grid-template-columns:1fr}.client-summary>div:last-child{grid-column:auto}
}

/* UX v16 · catálogos claros, sin scroll lateral y altas en modal */
.catalog-layout{display:block!important}
.client-catalog-panel,.site-catalog-panel,.account-catalog-panel{width:100%;max-width:100%;overflow:hidden}
.section-heading-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;margin-bottom:14px}
.section-heading-actions>div{min-width:0}
.section-heading-actions .eyebrow{margin-top:0}
.section-heading-actions h2{margin:.2rem 0 .4rem}
.section-heading-actions .fine{margin:.25rem 0 0;max-width:820px}
.section-create-btn{white-space:nowrap;min-width:190px;justify-content:center}
.no-horizontal-scroll{overflow-x:visible!important;max-width:100%}
.inline-hint{margin:.25rem 0 1rem;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#f8fbfd}

/* Códigos de cliente: todas las columnas visibles en escritorio. */
.client-catalog-table{width:100%;table-layout:fixed;font-size:.79rem}
.client-catalog-table th,.client-catalog-table td{white-space:normal!important;overflow-wrap:anywhere;word-break:normal;vertical-align:middle;padding:10px 8px}
.client-catalog-table th:nth-child(1){width:10%}
.client-catalog-table th:nth-child(2){width:23%}
.client-catalog-table th:nth-child(3){width:8%}
.client-catalog-table th:nth-child(4){width:8%}
.client-catalog-table th:nth-child(5){width:8%}
.client-catalog-table th:nth-child(6){width:12%}
.client-catalog-table th:nth-child(7){width:31%}
.client-catalog-table .action-cell{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;align-items:stretch}
.client-catalog-table .action-cell>form,.client-catalog-table .action-cell>button{margin:0!important;min-width:0}
.client-catalog-table .action-cell .mini-btn{width:100%;min-width:0;min-height:34px;height:100%;padding:7px 6px;display:inline-flex;justify-content:center;align-items:center;text-align:center;line-height:1.15}
.client-catalog-table .action-cell>small{grid-column:1/-1}

/* Centros: tabla compacta y progresiva por cliente. */
.site-catalog-table{width:100%;table-layout:fixed;font-size:.8rem}
.site-catalog-table th,.site-catalog-table td{white-space:normal!important;overflow-wrap:anywhere;vertical-align:middle;padding:10px 8px}
.site-catalog-table th:nth-child(1){width:15%}
.site-catalog-table th:nth-child(2){width:22%}
.site-catalog-table th:nth-child(3){width:20%}
.site-catalog-table th:nth-child(4){width:10%}
.site-catalog-table th:nth-child(5){width:11%}
.site-catalog-table th:nth-child(6){width:22%}
.site-catalog-table .action-cell{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;align-items:stretch}
.site-catalog-table .action-cell>form,.site-catalog-table .action-cell>button{margin:0!important;min-width:0}
.site-catalog-table .action-cell .mini-btn{width:100%;height:100%;min-height:34px;display:inline-flex;justify-content:center;align-items:center;text-align:center}
.site-more-row td{padding:8px 0 14px!important;border-bottom:0!important;background:transparent!important}
.site-more-btn{width:100%;min-height:38px;justify-content:center;border-style:dashed}
.site-more-btn span{opacity:.72}

/* Cuentas: una sola tarjeta de contenido y alta en modal. */
.client-accounts{display:block!important}
.account-catalog-panel{margin-top:0}
.account-catalog-panel table{width:100%;table-layout:fixed}
.account-catalog-panel th,.account-catalog-panel td{white-space:normal!important;overflow-wrap:anywhere}
.account-catalog-panel th:nth-child(1){width:26%}
.account-catalog-panel th:nth-child(2){width:12%}
.account-catalog-panel th:nth-child(3){width:12%}
.account-catalog-panel th:nth-child(4){width:14%}
.account-catalog-panel th:nth-child(5){width:22%}
.account-catalog-panel th:nth-child(6){width:14%}

/* En ancho medio, convertir catálogos en fichas antes de que aparezca scroll lateral. */
@media(max-width:1180px){
  .client-catalog-table thead,.site-catalog-table thead{display:none}
  .client-catalog-table,.client-catalog-table tbody,.site-catalog-table,.site-catalog-table tbody{display:block;width:100%}
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 16px;margin:0 0 10px;padding:12px 14px;background:#ffffff;border:1px solid var(--border);border-radius:13px;box-shadow:0 4px 14px rgba(11,20,29,.04)}
  .client-catalog-table td,.site-catalog-table td{display:block;padding:7px 0;border:0;min-width:0}
  .client-catalog-table td:before,.site-catalog-table td:before{display:block;font-size:.64rem;font-weight:850;letter-spacing:.05em;text-transform:uppercase;color:#828c97;margin-bottom:3px}
  .client-catalog-table td:nth-child(1):before{content:"Código"}
  .client-catalog-table td:nth-child(2):before{content:"Descripción / contexto"}
  .client-catalog-table td:nth-child(3):before{content:"Productos"}
  .client-catalog-table td:nth-child(4):before{content:"Cuentas"}
  .client-catalog-table td:nth-child(5):before{content:"Centros"}
  .client-catalog-table td:nth-child(6):before{content:"Estado"}
  .client-catalog-table td:nth-child(7):before{content:"Operaciones"}
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7){grid-column:span 2}
  .site-catalog-table td:nth-child(1):before{content:"Cliente"}
  .site-catalog-table td:nth-child(2):before{content:"Tienda / centro"}
  .site-catalog-table td:nth-child(3):before{content:"Ubicación"}
  .site-catalog-table td:nth-child(4):before{content:"Uso"}
  .site-catalog-table td:nth-child(5):before{content:"Estado"}
  .site-catalog-table td:nth-child(6):before{content:"Operaciones"}
  .site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6){grid-column:span 2}
  .site-more-row{display:block!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
  .site-more-row td{display:block!important;width:100%}
}
@media(max-width:760px){
  .section-heading-actions{grid-template-columns:1fr;gap:12px;align-items:stretch}
  .section-create-btn{width:100%;min-width:0}
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row){grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7),.site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6){grid-column:1/-1}
  .client-catalog-table .action-cell{grid-template-columns:1fr 1fr}
  .site-catalog-table .action-cell{grid-template-columns:1fr 1fr}
  .account-catalog-panel table,.account-catalog-panel tbody{display:block;width:100%}
  .account-catalog-panel thead{display:none}
  .account-catalog-panel tr{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;margin-bottom:10px;padding:12px;border:1px solid var(--border);border-radius:13px;background:#ffffff}
  .account-catalog-panel td{display:block;padding:7px 0;border:0;min-width:0}
  .account-catalog-panel td:first-child,.account-catalog-panel td:nth-child(5){grid-column:1/-1}
}
@media(max-width:520px){
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row),.account-catalog-panel tr{grid-template-columns:1fr}
  .client-catalog-table td,.client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7),.site-catalog-table td,.site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6),.account-catalog-panel td,.account-catalog-panel td:first-child,.account-catalog-panel td:nth-child(5){grid-column:1/-1}
  .client-catalog-table .action-cell,.site-catalog-table .action-cell{grid-template-columns:1fr}
}


/* FASE 5 · acciones destructivas claras y compactas en la ficha. */
.page-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.inline-heading-form{display:inline-flex;margin:0}
.btn.danger{background:#fdf4f3;border-color:#deb7b3;color:#903a34}
.btn.danger:hover{background:#a8473f;border-color:#a8473f;color:#ffffff}
@media(max-width:700px){
  .page-heading-actions{width:100%;display:grid;grid-template-columns:1fr;gap:9px;margin-top:16px}
  .page-heading-actions .btn,.page-heading-actions .inline-heading-form{width:100%;margin:0}
  .page-heading-actions .inline-heading-form .btn{width:100%}
}

/* FASE 6 · Inventario ágil: ordenación, paginación y acciones masivas */
.inventory-table-title{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.inventory-table-title>div{min-width:0}.inventory-table-title>div span{display:block;margin-top:3px}
.per-page-form{display:flex;align-items:center;gap:8px;margin-left:auto}
.per-page-form label{display:flex;align-items:center;gap:8px;font-size:.78rem;font-weight:800;color:#677380}
.per-page-form select{width:auto;min-width:76px;padding:8px 32px 8px 10px}
.sort-link{display:inline-flex;align-items:center;gap:5px;color:inherit;text-decoration:none;min-width:0}
.sort-link span{font-size:.82rem;opacity:.45}.sort-link.active{color:#406a98}.sort-link.active span{opacity:1}
.bulk-products-form{margin:0}.bulk-toolbar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#f7fbfe;border-bottom:1px solid var(--border);min-height:58px}
.bulk-toolbar>div{min-width:0;margin-right:auto}.bulk-toolbar b{display:block;color:#273749}.bulk-toolbar small{display:block;color:#737f8c;margin-top:2px}
.bulk-operation-grid{display:grid;gap:14px}.bulk-operation-grid>[data-bulk-panel]{padding:14px;border:1px solid var(--border);border-radius:12px;background:#f8fbfd}
.modal-help{margin:8px 0 0;color:#687584;font-size:.8rem;line-height:1.45}.modal-help.field-error{color:#9e3e33;font-weight:700}
.select-col{text-align:center!important}.select-col input{width:17px;height:17px;margin:0;accent-color:#5a9be2}.inventory-table .select-col{width:3.5%}
.inventory-table .id-col{width:4.5%}.inventory-table .client-col{width:8.5%}.inventory-table .reference-col{width:16%}.inventory-table .serial-col{width:8.5%}.inventory-table .state-col{width:7.5%}.inventory-table .phase-col{width:8.5%}.inventory-table .request-col{width:9.5%}.inventory-table .destination-col{width:9.5%}.inventory-table .location-col{width:10%}.inventory-table .updated-col{width:7%}.inventory-table .open-col{width:3.5%}
.pager{flex-wrap:wrap}.pager-pages{display:flex;align-items:center;gap:5px}.pager-pages a,.pager-pages b{display:grid;place-items:center;min-width:34px;height:34px;padding:0 8px;border:1px solid var(--border);border-radius:9px;background:#ffffff;color:#445466;text-decoration:none;font-size:.8rem}.pager-pages b{background:#548dcc;color:#ffffff;border-color:#548dcc}.pager-pages span{margin:0 2px;color:#788492}
@media(max-width:1100px){.inventory-table .select-col,.inventory-table .id-col,.inventory-table .client-col,.inventory-table .reference-col,.inventory-table .serial-col,.inventory-table .state-col,.inventory-table .phase-col,.inventory-table .request-col,.inventory-table .destination-col,.inventory-table .location-col,.inventory-table .updated-col,.inventory-table .open-col{width:auto}.bulk-toolbar{align-items:flex-start;flex-wrap:wrap}.bulk-toolbar>div{flex:1 1 100%}}
@media(max-width:820px){.inventory-table .select-col{display:grid}.inventory-table tr{position:relative}.inventory-table .select-col{grid-template-columns:112px minmax(0,1fr)}.inventory-table-title{align-items:flex-start}.per-page-form{margin-left:0}.pager{justify-content:center}.pager>span{width:100%;margin:0;text-align:center}.pager-pages{order:3;width:100%;justify-content:center}}
@media(max-width:560px){.bulk-toolbar{display:grid;grid-template-columns:1fr}.bulk-toolbar>div{margin:0}.bulk-toolbar .btn{width:100%}.per-page-form{width:100%}.per-page-form label{width:100%;justify-content:space-between}.pager .btn{flex:1}.pager-pages{overflow-x:auto;justify-content:flex-start;padding-bottom:3px}.bulk-operation-grid .storage-editor-grid{grid-template-columns:1fr}}
/* Anula los anchos históricos por posición: Fase 6 añade columna de selección. */
.inventory-table th.select-col{width:3.5%!important}.inventory-table th.id-col{width:4.5%!important}.inventory-table th.client-col{width:8.5%!important}.inventory-table th.reference-col{width:16%!important}.inventory-table th.serial-col{width:8.5%!important}.inventory-table th.state-col{width:7.5%!important}.inventory-table th.phase-col{width:8.5%!important}.inventory-table th.request-col{width:9.5%!important}.inventory-table th.destination-col{width:9.5%!important}.inventory-table th.location-col{width:10%!important}.inventory-table th.updated-col{width:7%!important}.inventory-table th.open-col{width:3.5%!important}
@media(max-width:1100px){.inventory-table th.select-col,.inventory-table th.id-col,.inventory-table th.client-col,.inventory-table th.reference-col,.inventory-table th.serial-col,.inventory-table th.state-col,.inventory-table th.phase-col,.inventory-table th.request-col,.inventory-table th.destination-col,.inventory-table th.location-col,.inventory-table th.updated-col,.inventory-table th.open-col{width:auto!important}}

/* FASE 7 · Excel guiado y seguro */
.excel-workspace{display:grid;gap:18px}.excel-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.excel-step{display:flex;align-items:center;gap:10px;min-width:0;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#ffffff}.excel-step>span{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:999px;background:#f0f3f7;color:#5f6e7f;font-weight:850}.excel-step div{display:grid;min-width:0}.excel-step b{font-size:.86rem;color:#273648}.excel-step small{color:#727e8d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.excel-step.is-current{border-color:#a8cbf2;box-shadow:0 0 0 3px rgba(90,155,226,.08)}.excel-step.is-current>span,.excel-step.is-done>span{background:#5a9be2;color:#ffffff}.excel-grid-balanced{align-items:stretch}.excel-tool-card{height:100%;display:flex;flex-direction:column}.excel-tool-card .fine{margin-top:auto}.excel-card-actions{margin:2px 0 13px}.excel-drop-form{display:grid;gap:12px}.excel-drop-zone{position:relative;display:grid!important;justify-items:center;text-align:center;gap:5px;padding:20px 16px;border:1.5px dashed #b0bdcc;border-radius:14px;background:#f8fbfd;cursor:pointer;transition:.18s ease}.excel-drop-zone:hover,.excel-drop-zone.is-dragging{border-color:#5a9be2;background:#f4f8fe}.excel-drop-zone.has-file{border-style:solid;border-color:#8db4e1;background:#f7fafe}.excel-drop-zone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.excel-drop-icon{display:grid;place-items:center;min-width:54px;height:34px;padding:0 8px;border-radius:8px;background:#ecf4fd;color:#497eb8;font-size:.72rem;font-weight:900}.excel-drop-zone b{color:#273648}.excel-drop-zone small,.excel-file-name{color:#727e8d;font-size:.8rem}.excel-file-name{margin-top:4px;font-weight:750;overflow-wrap:anywhere}.excel-review{display:grid;gap:16px}.excel-review-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.excel-review-head h2{margin:.15rem 0 .3rem}.excel-review-head p{margin-bottom:0}.excel-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.excel-summary{display:grid;gap:2px;min-width:0;padding:14px;border:1px solid var(--border);border-radius:14px;background:#ffffff}.excel-summary small{color:#74808c;font-weight:750}.excel-summary b{font-size:1.55rem;color:#273648}.excel-summary span{color:#687584;font-size:.78rem}.excel-summary.has-errors{border-color:#e7b9b6;background:#fef8f7}.excel-summary.has-errors b{color:#9e3e33}.excel-summary.is-ok{border-color:#b1d6c1;background:#f8fcf9}.excel-summary.is-ok b{color:#30714d}.excel-preview-table-wrap{width:100%;overflow:visible}.excel-preview-table{width:100%;table-layout:fixed}.excel-preview-table th,.excel-preview-table td{padding:9px 8px;vertical-align:top;overflow-wrap:anywhere}.excel-preview-table th:nth-child(1){width:6%}.excel-preview-table th:nth-child(2){width:10%}.excel-preview-table th:nth-child(3){width:14%}.excel-preview-table th:nth-child(4){width:13%}.excel-preview-table th:nth-child(5){width:10%}.excel-preview-table th:nth-child(6){width:9%}.excel-preview-table th:nth-child(7){width:28%}.excel-preview-table th:nth-child(8){width:10%}.excel-preview-table tr.row-has-error td{background:#fef9f8}.excel-preview-caption{margin:-4px 0 0}.excel-final-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:#f8fbfd}.excel-final-actions>div{display:grid;gap:2px}.excel-final-actions small{color:#6f7c8b}.compact-notice{margin:0}.compact-notice.warning{border-color:#ecd5a8;background:#fefaf2}.compact-notice.warning b{color:#805d26}
@media(max-width:900px){.excel-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.excel-preview-table thead{display:none}.excel-preview-table,.excel-preview-table tbody,.excel-preview-table tr,.excel-preview-table td{display:block;width:100%}.excel-preview-table tr{border:1px solid var(--border);border-radius:13px;margin-bottom:10px;overflow:hidden;background:#ffffff}.excel-preview-table td{display:grid;grid-template-columns:minmax(105px,32%) 1fr;gap:10px;border:0;border-bottom:1px solid #eef2f5}.excel-preview-table td:last-child{border-bottom:0}.excel-preview-table td::before{content:attr(data-label);font-size:.75rem;font-weight:800;color:#687584}.excel-preview-table tr.row-has-error{border-color:#e7b9b6}.excel-preview-table tr.row-has-error td{background:#fef9f8}}
@media(max-width:650px){.excel-steps{grid-template-columns:1fr}.excel-step small{white-space:normal}.excel-review-head,.excel-final-actions{display:grid}.excel-review-head .btn,.excel-final-actions .btn{width:100%}.excel-summary-grid{grid-template-columns:1fr 1fr}}
@media(max-width:430px){.excel-summary-grid{grid-template-columns:1fr}.excel-preview-table td{grid-template-columns:1fr}.excel-preview-table td::before{margin-bottom:-5px}}

/* FASE 8 · Trazabilidad global */
.audit-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}.audit-summary>div{background:#ffffff;border:1px solid var(--border,#dfe4eb);border-radius:16px;padding:18px 20px;display:flex;flex-direction:column;min-width:0}.audit-summary b{font-size:1.6rem;color:#0b141d}.audit-summary span{font-size:.83rem;color:#67717d;margin-top:3px}.audit-filters{align-items:end}.audit-shell{overflow:visible}.audit-per-page{display:flex;align-items:center;gap:8px;font-size:.82rem;color:#6a737f}.audit-per-page select{min-width:78px}.audit-list{display:flex;flex-direction:column}.audit-row{display:grid;grid-template-columns:92px minmax(220px,1.7fr) minmax(120px,.65fr) auto;gap:16px;align-items:center;padding:15px 18px;border-top:1px solid var(--border,#e3e8ec);background:#ffffff}.audit-row:first-child{border-top:0}.audit-row:hover{background:#f8fbfd}.audit-when{display:flex;flex-direction:column}.audit-when b{font-size:.88rem}.audit-when span,.audit-main small,.audit-fields small{color:#717a84;font-size:.78rem}.audit-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.audit-line>b{font-size:.9rem}.audit-action{white-space:nowrap}.audit-fields{display:flex;flex-direction:column;min-width:0}.audit-fields>span{font-size:.84rem;font-weight:700}.audit-fields small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.compact-btn{padding:8px 10px!important;font-size:.78rem!important;white-space:nowrap}.audit-detail-card{width:min(760px,calc(100vw - 32px))}.audit-detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px}.audit-detail-meta>div{background:#f6f9fb;border:1px solid #e3e8ec;border-radius:12px;padding:11px 12px;min-width:0}.audit-detail-meta span,.audit-before-after span{display:block;color:#6f7883;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}.audit-detail-meta b{display:block;overflow-wrap:anywhere;font-size:.86rem}.audit-change-list{display:flex;flex-direction:column;gap:10px;max-height:min(52vh,520px);overflow:auto;padding-right:3px}.audit-change{border:1px solid #e2e6ec;border-radius:13px;padding:12px}.audit-change>b{display:block;font-size:.85rem;margin-bottom:8px}.audit-change>p{margin:0;overflow-wrap:anywhere}.audit-before-after{display:grid;grid-template-columns:1fr 1fr;gap:10px}.audit-before-after>div{background:#f8fafb;border-radius:9px;padding:9px;min-width:0}.audit-before-after p{margin:0;font-size:.84rem;overflow-wrap:anywhere;white-space:normal}.audit-empty{padding:28px}
@media(max-width:900px){.audit-summary{grid-template-columns:1fr 1fr 1fr}.audit-row{grid-template-columns:78px minmax(0,1fr) auto}.audit-fields{grid-column:2/3}.audit-actions{grid-column:3;grid-row:1/3}}
@media(max-width:680px){.audit-summary{grid-template-columns:1fr}.audit-row{grid-template-columns:1fr;gap:8px;padding:14px}.audit-when{flex-direction:row;gap:8px}.audit-fields,.audit-actions{grid-column:auto;grid-row:auto}.audit-actions{justify-content:flex-start}.audit-detail-meta,.audit-before-after{grid-template-columns:1fr}.audit-actions .btn{flex:1}.audit-per-page{width:100%;justify-content:space-between}}

/* FASE 9 · Panel operativo y prioridades */
.dashboard-focus,.dashboard-recent{margin-top:28px}
.block-title.compact{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:14px}
.block-title.compact h2{margin-bottom:4px}
.dashboard-quick-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}
.attention-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.attention-card{min-width:0;text-decoration:none;color:inherit;background:#ffffff;border:1px solid #e1e7ed;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:5px;box-shadow:0 8px 22px rgba(11,20,29,.045);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.attention-card:hover{transform:translateY(-2px);border-color:#5a9be2;box-shadow:0 10px 28px rgba(11,20,29,.08)}
.attention-card span{font-size:.76rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#667281}
.attention-card b{font-size:1.75rem;line-height:1;color:#0b141d}
.attention-card small{color:#707b89;line-height:1.35}
.attention-card.danger{border-left:4px solid #c05b5f}
.attention-card.warning{border-left:4px solid #ce9e4b}
.recent-list{background:#ffffff;border:1px solid #e1e7ed;border-radius:16px;overflow:hidden;box-shadow:0 8px 24px rgba(11,20,29,.04)}
.recent-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;text-decoration:none;color:inherit;border-bottom:1px solid #eef1f4}
.recent-row:last-child{border-bottom:0}
.recent-row:hover{background:#f8fbfe}
.recent-main{min-width:0;display:flex;flex-direction:column;gap:3px}
.recent-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.recent-main span{font-size:.84rem;color:#707b89}
.recent-meta{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.recent-meta time{font-size:.78rem;color:#7e8894;white-space:nowrap}
.empty-state.compact{padding:20px}
@media(max-width:1180px){.attention-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.block-title.compact{align-items:stretch;flex-direction:column}.dashboard-quick-actions{justify-content:flex-start}.attention-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recent-row{align-items:flex-start;flex-direction:column}.recent-meta{justify-content:flex-start}}
@media(max-width:480px){.attention-grid{grid-template-columns:1fr}.dashboard-quick-actions .btn{width:100%;justify-content:center}}

/* FASE 10 · Búsqueda global y acceso rápido */
.nav-search-link{display:inline-flex;align-items:center;gap:.35rem}
.global-search-shell{margin:0 0 1.35rem}
.global-search-form{background:#ffffff;border:1px solid #dfe5eb;border-radius:18px;padding:1.2rem;box-shadow:0 8px 24px rgba(11,20,29,.05)}
.global-search-form>label{display:block;font-weight:800;margin-bottom:.55rem;color:#192737}
.global-search-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.7rem;align-items:stretch}
.global-search-box input{min-width:0;width:100%;font-size:1rem;padding:.82rem .95rem;border:1px solid #cfd7e1;border-radius:12px;background:#ffffff}
.global-search-box .btn{min-width:112px;justify-content:center}
.search-inline-feedback{margin:.8rem 0 1rem}
.search-summary{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;margin:1rem 0 1.2rem;padding:.8rem 1rem;border-radius:14px;background:#f1f6fd;border:1px solid #dce8f7}
.search-summary span,.search-summary small{color:#63707f}.search-summary b{font-size:1.05rem;color:#1b2b3d}
.search-empty-state{display:flex;flex-direction:column;gap:.3rem;align-items:flex-start;padding:1.35rem;border:1px dashed #ccd4dd;border-radius:16px;background:#fbfdff;color:#65717f}
.search-empty-state b{color:#233242;font-size:1.02rem}
.search-group{margin:1.35rem 0 1.8rem}
.search-group-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:.8rem}
.search-group-head h2{margin:.05rem 0 0}
.search-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.search-result-grid.compact-results{grid-template-columns:repeat(3,minmax(0,1fr))}
.search-result-card{display:flex;flex-direction:column;gap:.55rem;min-width:0;padding:1rem;border:1px solid #e0e6ed;border-radius:16px;background:#ffffff;color:inherit;text-decoration:none;box-shadow:0 5px 18px rgba(11,20,29,.035);transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.search-result-card:hover,.search-result-card:focus-visible{border-color:#5a9be2;box-shadow:0 8px 24px rgba(90,155,226,.11);transform:translateY(-1px);outline:none}
.search-result-card p{margin:0;color:#5a6877;overflow-wrap:anywhere}
.search-result-top{display:flex;align-items:center;justify-content:space-between;gap:.7rem;min-width:0}
.search-result-top b{min-width:0;overflow-wrap:anywhere;color:#1b2b3d}
.search-result-meta{display:flex;flex-wrap:wrap;gap:.38rem;margin-top:auto}
.search-result-meta span{font-size:.78rem;padding:.26rem .48rem;border-radius:999px;background:#f1f5f8;color:#5a6877;max-width:100%;overflow-wrap:anywhere}
@media(max-width:900px){.search-result-grid,.search-result-grid.compact-results{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.global-search-box{grid-template-columns:1fr}.global-search-box .btn{width:100%}.search-group-head{align-items:flex-start;flex-direction:column}.search-result-grid,.search-result-grid.compact-results{grid-template-columns:1fr}.search-group-head .btn{width:100%;justify-content:center}}

/* FASE 11 · Bandeja de pendientes */
.pending-overview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:22px}
.pending-kpi{display:flex;flex-direction:column;gap:4px;min-width:0;padding:15px 16px;border:1px solid #dfe5ec;border-radius:15px;background:#ffffff;color:inherit;text-decoration:none;box-shadow:0 6px 20px rgba(11,20,29,.035);transition:.15s ease}
.pending-kpi:hover,.pending-kpi.is-active{border-color:#5a9be2;box-shadow:0 8px 24px rgba(90,155,226,.10);transform:translateY(-1px)}
.pending-kpi.danger{border-left:4px solid #c05b5f}.pending-kpi span{font-size:.74rem;font-weight:850;letter-spacing:.055em;text-transform:uppercase;color:#667281}.pending-kpi b{font-size:1.65rem;line-height:1.05;color:#0b141d}.pending-kpi small{color:#727d8a;line-height:1.3}
.pending-shell{display:grid;gap:14px}.pending-head{margin-bottom:0}.pending-list{display:flex;flex-direction:column;border:1px solid #e1e7ed;border-radius:16px;overflow:hidden;background:#ffffff;box-shadow:0 8px 22px rgba(11,20,29,.035)}
.pending-row{display:grid;grid-template-columns:minmax(0,1fr) 145px auto;gap:18px;align-items:center;padding:14px 16px;border-bottom:1px solid #eef1f4}.pending-row:last-child{border-bottom:0}.pending-row:hover{background:#f8fbfd}
.pending-main{min-width:0;display:grid;gap:6px}.pending-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pending-title>b{min-width:0;overflow-wrap:anywhere;color:#1c2b3b}.pending-main>span{font-size:.82rem;color:#6f7b88}.pending-reasons{display:flex;flex-wrap:wrap;gap:6px}.pending-reasons span{font-size:.72rem;font-weight:800;padding:.28rem .5rem;border-radius:999px;background:#fdf3e6;color:#805b25;border:1px solid #ebd6b3}.pending-meta{display:grid;gap:2px}.pending-meta small{color:#788390;font-size:.73rem}.pending-meta b{font-size:.85rem;color:#2f3f50}.pending-actions{display:flex;justify-content:flex-end}.pending-pager{margin-top:2px}.pager .disabled{pointer-events:none;opacity:.45}
@media(max-width:1100px){.pending-overview{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.pending-overview{grid-template-columns:1fr 1fr}.pending-row{grid-template-columns:1fr auto}.pending-meta{grid-column:1}.pending-actions{grid-column:2;grid-row:1/3;align-self:center}.pending-head .btn{width:100%;justify-content:center}}
@media(max-width:520px){.pending-overview{grid-template-columns:1fr}.pending-row{grid-template-columns:1fr;gap:10px}.pending-meta,.pending-actions{grid-column:auto;grid-row:auto}.pending-actions .btn{width:100%;justify-content:center}}


/* v24 · patrón global Mostrar más */
.record-list-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.record-list-tools label{display:flex;align-items:center;gap:8px;font-size:.86rem;font-weight:700;color:#55606c}
.record-list-tools select{min-width:76px;height:38px;padding:0 30px 0 10px;border:1px solid #dadfe6;border-radius:10px;background:#ffffff}
.progressive-more-control{display:flex;justify-content:center;align-items:center;width:100%;margin-top:12px}
tr.progressive-more-control td{text-align:center!important;padding:14px 8px!important;background:transparent!important;border-bottom:0!important}
.progressive-more-btn{min-width:160px;justify-content:center}
.progressive-hidden{display:none!important}
.search-result-grid>.progressive-more-control,.recent-list>.progressive-more-control{grid-column:1/-1}
.history ol>.progressive-more-control{list-style:none;margin:12px 0 0;padding:0}
@media (max-width:720px){.record-list-tools{width:100%;justify-content:stretch}.record-list-tools label,.record-list-tools .btn{flex:1 1 auto}.progressive-more-btn{width:100%}}

/* FASE 12 · Vistas guardadas del inventario */

/* FASE 13 · Impresión de inventario y fichas */
.dpunto-print-sheet{display:none}
.print-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 8mm;padding-bottom:4mm;border-bottom:1.5px solid #0b141d;color:#0b141d}.print-report-head>div{display:grid;gap:2px}.print-report-head>div:last-child{text-align:right}.print-report-head b{font-size:15pt}.print-report-head span{font-size:10pt;color:#646d78}.print-report-head small{display:block;font-size:8pt;color:#757d86}.print-report-head strong{font-size:10pt}
.print-field-value{display:block;min-height:18px;padding:6px 0;font-weight:650;color:#0b141d;overflow-wrap:anywhere}.print-inventory-table{width:100%}.print-inventory-table table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:7.4pt}.print-inventory-table th,.print-inventory-table td{border:1px solid #cdd3db;padding:2.4mm 2mm;vertical-align:top;overflow-wrap:anywhere}.print-inventory-table th{background:#eff2f6;color:#0b141d;font-weight:800;text-align:left}.print-inventory-table small{display:block;margin-top:1mm;color:#646d78}.print-inventory-table .badge,.print-inventory-table .phase-chip{font-size:7pt;padding:1mm 1.4mm}.print-inventory-table .inventory-table{min-width:0!important}.print-inventory-table .inventory-table-wrap{overflow:visible!important}
@media print{
  @page{size:A4 landscape;margin:9mm}
  body.printing-inventory *{visibility:hidden!important}
  body.printing-inventory #dpunto-print-sheet,body.printing-inventory #dpunto-print-sheet *{visibility:visible!important}
  body.printing-inventory #dpunto-print-sheet{display:block!important;position:absolute;inset:0;width:100%;background:#ffffff;color:#0b141d}
  body.printing-inventory .header,body.printing-inventory .site-footer{display:none!important}
  body.printing-inventory #dpunto-print-sheet .page-heading{margin-bottom:5mm!important}
  body.printing-inventory #dpunto-print-sheet .page-heading h1{font-size:18pt!important}
  body.printing-inventory #dpunto-print-sheet .record-summary{break-inside:avoid;grid-template-columns:repeat(3,1fr)!important;gap:3mm!important}
  body.printing-inventory #dpunto-print-sheet .stages{display:block!important}
  body.printing-inventory #dpunto-print-sheet .stage{break-inside:avoid;margin:0 0 5mm!important;box-shadow:none!important}
  body.printing-inventory #dpunto-print-sheet .fields-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  body.printing-inventory #dpunto-print-sheet .timeline{break-inside:avoid}
  body.printing-inventory #dpunto-print-sheet a{text-decoration:none!important;color:#0b141d!important}
}
@media(max-width:760px){.bulk-toolbar [data-print-inventory]{flex:1 1 100%}}

/* FASE 13.1 · Impresión de la tabla Excel completa */
.excel-print-screen-actions{display:flex;justify-content:flex-end;gap:10px;margin-bottom:18px}
.excel-print-report{background:#ffffff;color:#0b141d}
.excel-print-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:14px;padding-bottom:12px;border-bottom:2px solid #0b141d}
.excel-print-head h1{margin:2px 0 4px;font-size:24px}.excel-print-head p{margin:0;color:#66707b}.excel-print-meta{display:grid;gap:3px;text-align:right;white-space:nowrap}.excel-print-meta b{font-size:18px}.excel-print-meta span{color:#66707b;font-size:13px}
.excel-full-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:9px;line-height:1.22;background:#ffffff}
.excel-full-table th,.excel-full-table td{border:1px solid #c1c8d0;padding:4px 3px;vertical-align:top;overflow-wrap:anywhere;word-break:break-word}
.excel-full-table thead th{background:#edf0f5;color:#0b141d;font-weight:800;text-align:left}
.excel-full-table thead .excel-groups-row th{background:#e0e7ef;text-align:center;font-size:8px}
.excel-full-table tbody tr:nth-child(even){background:#f8fafc}
.excel-full-table .excel-id-col{text-align:center;font-weight:800}
.excel-full-table th:nth-child(5),.excel-full-table td:nth-child(5),.excel-full-table th:nth-child(18),.excel-full-table td:nth-child(18){width:9%}
@media print{
  @page excelLandscape{size:A4 landscape;margin:7mm}
  body:has(.excel-print-report){background:#ffffff!important}
  body:has(.excel-print-report) .header,body:has(.excel-print-report) .site-footer,body:has(.excel-print-report) .skip,body:has(.excel-print-report) .global-flash,body:has(.excel-print-report) .no-print{display:none!important}
  body:has(.excel-print-report) .page-shell,body:has(.excel-print-report) .container{max-width:none!important;width:100%!important;margin:0!important;padding:0!important}
  .excel-print-report{page:excelLandscape;width:100%!important}
  .excel-print-head{margin-bottom:4mm;padding-bottom:3mm;break-after:avoid}
  .excel-print-head h1{font-size:15pt}.excel-print-head p{font-size:7.5pt}.excel-print-meta b{font-size:10pt}.excel-print-meta span{font-size:7pt}
  .excel-full-table{font-size:5.2pt;line-height:1.05;table-layout:fixed}
  .excel-full-table thead{display:table-header-group}
  .excel-full-table tr{break-inside:avoid}
  .excel-full-table th,.excel-full-table td{padding:1.1mm .8mm;border:.25mm solid #b3bac3}
  .excel-full-table thead .excel-groups-row th{font-size:4.9pt}
  .excel-full-table tbody tr:nth-child(even){background:#f6f8fa!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.inventory-table-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
@media(max-width:760px){.inventory-table-actions{width:100%;justify-content:stretch}.inventory-table-actions .btn{flex:1 1 100%;text-align:center}.inventory-table-actions .per-page-form{margin-left:auto}}

/* FASE 13.1 · impresión fiel de tabla Excel A:Y */
.excel-print-screen-actions{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#ffffff;box-shadow:var(--shadow)}
.excel-print-screen-actions>div{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}.excel-print-hint{color:#687584;font-size:.8rem}
.excel-print-report{width:100%;background:#ffffff;color:#0b141d}.excel-print-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:14px;padding-bottom:12px;border-bottom:2px solid #0b141d}.excel-print-head h1{margin:2px 0 4px;font-size:24px}.excel-print-head p{margin:0;color:#66707b}.excel-print-meta{display:grid;gap:3px;text-align:right;white-space:nowrap}.excel-print-meta b{font-size:18px}.excel-print-meta span{color:#66707b;font-size:13px}
.excel-full-table-frame{width:100%;overflow:auto;border:1px solid #bdc5ce;border-radius:10px;background:#ffffff}
.excel-full-table{width:100%;min-width:0;max-width:100%;border-collapse:collapse;table-layout:fixed;font-size:8.4px;line-height:1.15;background:#ffffff}
.excel-full-table th,.excel-full-table td{box-sizing:border-box;border:1px solid #c1c8d0;padding:3px 2.5px;vertical-align:top;white-space:normal;overflow-wrap:anywhere;word-break:normal;hyphens:auto}
.excel-full-table thead th{color:#0b141d;font-weight:850;text-align:left}.excel-full-table .excel-groups-row th{text-align:center;font-size:7.8px;line-height:1.05;padding:4px 2px}.excel-full-table .excel-columns-row th{background:#eff2f6;font-size:7.7px}
.excel-full-table .g1{background:#e1e9f1}.excel-full-table .g2{background:#fae6b2}.excel-full-table .g7{background:#d1e9d0}.excel-full-table .g3{background:#d9e8fa}.excel-full-table .g8{background:#e4d8ea}.excel-full-table .g4{background:#dcefdb}.excel-full-table .g5{background:#e2d6ca}.excel-full-table .g6{background:#f5e6be}.excel-full-table .gmeta{background:#e8edf3}
.excel-full-table tbody tr:nth-child(even){background:#f8fafc}.excel-full-table .excel-id-col{text-align:center;font-weight:850}.excel-full-table td:nth-child(5),.excel-full-table td:nth-child(16),.excel-full-table td:nth-child(18){font-size:8px}
@media(max-width:900px){.excel-print-screen-actions{align-items:stretch;flex-direction:column}.excel-print-screen-actions .btn{width:100%}.excel-print-screen-actions>div{display:grid}.excel-full-table-frame{border-radius:8px}}
@media print{
  @page{size:A4 landscape;margin:6mm}
  html,body{background:#ffffff!important;margin:0!important;padding:0!important}
  body:has(.excel-print-report) .header,body:has(.excel-print-report) .site-footer,body:has(.excel-print-report) .skip,body:has(.excel-print-report) .global-flash,body:has(.excel-print-report) .no-print{display:none!important}
  body:has(.excel-print-report) .page-shell,body:has(.excel-print-report) .container,body:has(.excel-print-report) main{max-width:none!important;width:auto!important;margin:0!important;padding:0!important}
  .excel-print-report{width:100%!important;margin:0!important;padding:0!important}
  .excel-print-head{margin:0 0 3mm!important;padding:0 0 2mm!important;border-bottom:.45mm solid #0b141d!important;break-after:avoid}.excel-print-head h1{font-size:12pt!important}.excel-print-head p{font-size:6.5pt!important}.excel-print-meta b{font-size:8.5pt!important}.excel-print-meta span{font-size:6.2pt!important}
  .excel-full-table-frame{overflow:hidden!important;border:0!important;border-radius:0!important;width:100%!important;max-width:100%!important}
  .excel-full-table{width:100%!important;min-width:0!important;max-width:100%!important;table-layout:fixed!important;font-size:5.6pt!important;line-height:1.02!important}
  .excel-full-table thead{display:table-header-group!important}.excel-full-table tfoot{display:table-footer-group!important}.excel-full-table tr{break-inside:avoid-page!important;page-break-inside:avoid!important}
  .excel-full-table th,.excel-full-table td{padding:.7mm .55mm!important;border:.2mm solid #afb7c0!important;overflow:visible!important;white-space:normal!important;overflow-wrap:anywhere!important;word-break:normal!important}
  .excel-full-table .excel-groups-row th{font-size:5pt!important;padding:.75mm .45mm!important}.excel-full-table .excel-columns-row th{font-size:5.1pt!important}
  .excel-full-table tbody tr:nth-child(even){background:#f6f8fa!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
  .excel-full-table thead th{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
}


/* UX 26.6 · Jerarquía visual de acciones de Inventario */
.inventory-table-actions-compact{gap:8px;flex-wrap:nowrap}
.compact-per-page label{display:flex;align-items:center;gap:8px;margin:0;color:var(--muted);font-size:.78rem;font-weight:750;white-space:nowrap}
.compact-per-page select{min-width:72px;padding:8px 28px 8px 10px;border-radius:9px;background:#ffffff}
.compact-action-btn{min-height:36px;padding:8px 12px!important;font-size:.82rem!important;border-radius:9px!important;gap:7px!important}
.inventory-action-menu{position:relative}
.inventory-action-menu>summary{list-style:none;cursor:pointer;user-select:none}.inventory-action-menu>summary::-webkit-details-marker{display:none}
.inventory-action-menu[open]>summary{border-color:#518ed0;background:#f6fafe}
.inventory-action-popover{position:absolute;z-index:40;right:0;top:calc(100% + 8px);width:min(320px,82vw);padding:8px;background:#ffffff;border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 38px rgba(11,20,29,.14)}
.inventory-action-menu-title{margin:3px 7px 6px;color:#818b96;font-size:.68rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.inventory-action-popover a{display:grid;gap:3px;padding:10px 11px;border-radius:9px;color:var(--ink)}
.inventory-action-popover a:hover{background:#f5f8fb}.inventory-action-popover a b{font-size:.84rem}.inventory-action-popover a small{color:var(--muted);font-size:.74rem;line-height:1.35}
.bulk-toolbar-compact{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 16px;background:#f8fbfe;border-top:1px solid #e1e9f2;border-bottom:1px solid #e1e9f2}
.bulk-toolbar-compact[hidden]{display:none!important}
.bulk-selection-summary{display:flex;align-items:center;gap:10px;min-width:0}.bulk-selection-count{display:grid;place-items:center;min-width:32px;height:32px;padding:0 8px;border-radius:9px;background:#e8f2fc;color:#4676ab;font-size:.88rem;font-weight:900}
.bulk-selection-summary>div{display:grid;gap:1px}.bulk-selection-summary b{font-size:.84rem}.bulk-selection-summary small{font-size:.74rem;color:var(--muted)}
.bulk-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.text-action{border:0;background:transparent;padding:7px 8px;color:#647180;font-size:.78rem;font-weight:800;border-radius:8px}.text-action:hover{background:#edf2f8;color:#273749}
@media(max-width:760px){
  .inventory-table-title{align-items:stretch;flex-direction:column}
  .inventory-table-actions-compact{width:100%;justify-content:space-between;flex-wrap:wrap}
  .inventory-table-actions-compact .inventory-action-menu{margin-left:auto}
  .bulk-toolbar-compact{align-items:stretch;flex-direction:column;gap:10px}
  .bulk-toolbar-actions{justify-content:stretch}
  .bulk-toolbar-actions .btn{flex:1 1 auto!important;width:auto!important}
  .bulk-toolbar-actions .text-action{order:3;width:100%;text-align:center}
}

/* HOTFIX V26.8 · Resumen y trazabilidad en flujo horizontal */
.phase-grid.phase-grid-flow{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:22px;
  align-items:stretch;
  margin-bottom:34px;
}
.phase-grid.phase-grid-flow .phase-card{
  position:relative;
  overflow:visible;
  min-height:146px;
  padding:18px 16px 18px;
  box-shadow:0 8px 24px #0b141d08;
}
.phase-grid.phase-grid-flow .phase-card:not(:last-child)::after,
.timeline.timeline-flow .timeline-step:not(:last-child)::after,
.product .timeline.timeline-flow .timeline-step:not(:last-child)::after{
  content:"→";
  position:absolute;
  top:50%;
  right:-14px;
  transform:translate(50%,-50%);
  width:28px;
  height:28px;
  border-radius:999px;
  display:grid;
  place-items:center;
  font-size:1rem;
  font-weight:900;
  color:var(--phase-color);
  background:#ffffff;
  border:1px solid #dde3ea;
  box-shadow:0 4px 14px #0b141d12;
  z-index:2;
}
.phase-grid.phase-grid-flow .phase-card-head{align-items:flex-start;gap:10px;}
.phase-grid.phase-grid-flow .phase-no{font-size:.88rem;letter-spacing:.12em;}
.phase-grid.phase-grid-flow .phase-total{font-size:.8rem;padding:6px 11px;white-space:nowrap;}
.phase-grid.phase-grid-flow .phase-card h3{margin:10px 0 10px;max-width:none;min-height:2.35em;font-size:1.02rem;line-height:1.15;}
.phase-grid.phase-grid-flow .phase-go{display:inline-flex;align-items:center;gap:6px;margin-top:auto;font-size:.83rem;}
.phase-grid.phase-grid-flow .phase-go b{font-size:1rem;line-height:1;}

.timeline.timeline-flow,
.product .timeline.timeline-flow{
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:22px;
  align-items:stretch;
}
.timeline.timeline-flow .timeline-step,
.product .timeline.timeline-flow .timeline-step{
  position:relative;
  overflow:visible;
  display:grid;
  grid-template-rows:auto 1fr auto;
  align-content:start;
  gap:8px;
  min-height:126px;
  padding:16px 14px 14px;
}
.timeline.timeline-flow .timeline-step .step-num,
.product .timeline.timeline-flow .timeline-step .step-num{font-size:.88rem;font-weight:900;letter-spacing:.12em;}
.timeline.timeline-flow .timeline-step .step-name,
.product .timeline.timeline-flow .timeline-step .step-name{font-size:1.01rem;line-height:1.15;font-weight:850;overflow-wrap:anywhere;}
.timeline.timeline-flow .timeline-step small,
.product .timeline.timeline-flow .timeline-step small{align-self:end;font-size:.73rem;line-height:1.25;}

@media (max-width:1320px){
  .phase-grid.phase-grid-flow,
  .timeline.timeline-flow,
  .product .timeline.timeline-flow{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;}
  .phase-grid.phase-grid-flow .phase-card::after,
  .timeline.timeline-flow .timeline-step::after,
  .product .timeline.timeline-flow .timeline-step::after{display:none;}
}
@media (max-width:820px){
  .phase-grid.phase-grid-flow,
  .timeline.timeline-flow,
  .product .timeline.timeline-flow{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
}
@media (max-width:560px){
  .phase-grid.phase-grid-flow{grid-template-columns:1fr;}
  .timeline.timeline-flow,
  .product .timeline.timeline-flow{grid-template-columns:repeat(2,minmax(0,1fr));}
  .phase-grid.phase-grid-flow .phase-card,
  .timeline.timeline-flow .timeline-step,
  .product .timeline.timeline-flow .timeline-step{min-height:118px;}
}

/* FASE 14 · avisos automáticos de recepción */
.reception-auto-note{align-self:end;margin:0}
.reception-notification-strip{display:grid;grid-template-columns:minmax(210px,.9fr) minmax(380px,1.7fr) auto;gap:20px;align-items:center;margin:0 0 34px;padding:18px 20px;background:#ffffff;border:1px solid var(--border);border-radius:16px;box-shadow:0 8px 28px #0b141d05}
.notification-strip-copy h3{margin:2px 0 4px;font-size:1.03rem}.notification-strip-copy small{color:var(--muted)}
.notification-statuses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.notification-statuses>div{min-width:0;padding:12px 14px;background:#f8fafd;border:1px solid #e5e9ef;border-radius:12px}.notification-statuses span{display:block;color:var(--muted);font-size:.68rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.notification-statuses b{display:block;margin:4px 0 3px;font-size:.82rem;overflow-wrap:anywhere}.notify-state{font-size:.72rem!important;font-weight:850!important;text-transform:none!important;letter-spacing:0!important}.notify-state.sent{color:#3f7455}.notify-state.failed{color:#954842}.notify-state.skipped{color:#936d36}.notify-state.pending{color:#677482}.notification-retry-form{margin:0;white-space:nowrap}
.site-contact-line{display:block!important;margin-top:4px;color:#677482!important;overflow-wrap:anywhere}.site-contact-line.missing{color:#9d6e3b!important}
@media(max-width:980px){.reception-notification-strip{grid-template-columns:1fr}.notification-retry-form .btn{width:auto}}
@media(max-width:560px){.notification-statuses{grid-template-columns:1fr}.notification-retry-form .btn{width:100%}}

/* FASE 15 · Escaneo QR/código de barras y recepción múltiple */
.new-reception-actions{display:flex;gap:10px;flex-wrap:wrap;margin:-8px 0 20px}
.scan-help{display:flex;gap:12px;align-items:center;margin-bottom:18px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#f7fbfe;color:#606e7f;font-size:.82rem}
.scan-help b{color:#29394b;white-space:nowrap}
.scan-field-host,.scan-cell{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:7px;align-items:stretch;width:100%}
.scan-field-host>input,.scan-field-host>textarea,.scan-field-host>select,.scan-cell>input,.scan-cell>textarea,.scan-cell>select{min-width:0;width:100%}
.scan-inline{display:grid;place-items:center;min-width:38px;border:1px solid #c6cfda;border-radius:9px;background:#f6fafe;color:#4c7bb0;font-weight:900;font-size:1.05rem;cursor:pointer;transition:.15s}
.scan-inline:hover{background:#edf5fd;border-color:#8eb3dc;transform:translateY(-1px)}
.batch-reception{margin-top:8px}.batch-shared-card{max-width:none}.batch-shared-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-top:20px}.batch-shared-grid .field{min-width:0}
.batch-scan-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) 190px auto auto;gap:12px;align-items:end;margin:25px 0 14px;padding:16px 18px;border:1px solid #d6dee9;border-radius:14px;background:#f7fbfe}.batch-scan-toolbar h3{margin:2px 0 4px}.batch-scan-toolbar p{margin:0}.batch-scan-toolbar label{font-size:.76rem;font-weight:800;color:#5e6b7a}.batch-scan-toolbar select{margin-top:5px}
.batch-table-wrap{overflow:auto;border:1px solid var(--border);border-radius:14px;background:#ffffff}.batch-table{width:100%;min-width:1120px;border-collapse:collapse}.batch-table th{position:sticky;top:0;background:#f6f9fb;z-index:1;font-size:.72rem;color:#616f80;text-align:left;padding:11px 10px}.batch-table td{padding:9px 10px;border-top:1px solid #eff1f4;vertical-align:middle}.batch-table input,.batch-table select{min-height:38px;padding:8px 9px;font-size:.8rem}.batch-table .scan-cell{grid-template-columns:minmax(0,1fr) 34px;gap:5px}.batch-table .scan-inline{min-width:34px;border-radius:8px}.batch-index{font-weight:900;color:#78838f;width:32px}.batch-summary{display:flex;gap:12px;align-items:center;margin:12px 2px 18px;color:#6f7b8a;font-size:.82rem}.batch-summary b{color:#2a3c50}

@media(max-width:1000px){.batch-shared-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-scan-toolbar{grid-template-columns:1fr 1fr}.batch-scan-toolbar>div{grid-column:1/-1}}
@media(max-width:640px){.new-reception-actions>.btn{flex:1 1 100%}.scan-help{align-items:flex-start;flex-direction:column;gap:3px}.batch-shared-grid{grid-template-columns:1fr}.batch-scan-toolbar{grid-template-columns:1fr}.batch-scan-toolbar>div{grid-column:auto}.batch-scan-toolbar .btn{width:100%}.batch-table-wrap{border:0;overflow:visible}.batch-table{min-width:0}.batch-table thead{display:none}.batch-table,.batch-table tbody,.batch-table tr,.batch-table td{display:block;width:100%}.batch-table tr{margin-bottom:12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#ffffff}.batch-table td{display:grid;grid-template-columns:110px minmax(0,1fr);gap:8px;align-items:center;border:0;padding:6px 0}.batch-table td:nth-child(1)::before{content:"Artículo"}.batch-table td:nth-child(2)::before{content:"Referencia"}.batch-table td:nth-child(3)::before{content:"Artículo nuevo"}.batch-table td:nth-child(4)::before{content:"Descripción"}.batch-table td:nth-child(5)::before{content:"N.º serie"}.batch-table td:nth-child(6)::before{content:"Destino"}.batch-table td:nth-child(7){display:flex;justify-content:flex-end}.batch-table td::before{font-size:.7rem;font-weight:850;color:#6f7b8a}.batch-index{width:auto}}

/* HOTFIX 28.1 · cámara móvil y lectura física */



.scan-field-host input[data-just-scanned="1"],.scan-cell input[data-just-scanned="1"]{outline:2px solid #4b9a6f;outline-offset:1px;background:#f4fef8}
@media(max-width:640px){}

/* HOTFIX 28.3 · OCR desde foto/documento */
.scan-help{justify-content:space-between}.scan-help>div{display:flex;gap:10px;align-items:center;min-width:0}.scan-help .btn{flex:0 0 auto}


/* HOTFIX 28.5 · cámara OCR integrada en el selector de cliente */
.client-photo-picker{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;align-items:stretch}
.client-photo-picker select{min-width:0;width:100%}
.client-photo-btn{display:grid;place-items:center;width:42px;min-width:42px;padding:0;border:1px solid var(--border);border-radius:9px;background:#ffffff;color:#273749;font-size:1rem;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s}
.client-photo-btn:hover,.client-photo-btn:focus-visible{border-color:#5a9be2;background:#f6f9fe;box-shadow:0 0 0 3px rgba(90,155,226,.10);outline:0}
.client-photo-status{display:block;min-height:16px;margin-top:6px;color:#747f8d;font-size:.7rem;line-height:1.35}
.client-photo-status.ok{color:#3f7455;font-weight:750}.client-photo-status.error{color:#974b44;font-weight:700}

/* HOTFIX 28.6 · móvil sin desbordamiento + escáner centrado */
html,body{max-width:100%;overflow-x:hidden}
.header,.header-inner,.page-shell,.site-footer,.container,main{max-width:100%}

/* El modal de códigos ocupa la capa superior y centra la tarjeta de forma real. */





@media(max-width:820px){
  html{scrollbar-gutter:auto}
  body{min-width:0;width:100%}
  .header{width:100%;max-width:100%;overflow:visible}
  .header-inner,.container{width:calc(100% - 24px);max-width:calc(100% - 24px);margin-left:auto;margin-right:auto}
  .header-inner{gap:10px}
  .brand{max-width:calc(100% - 52px);overflow:hidden}
  .brand img{flex:0 0 auto;max-width:110px}
  .brand-caption{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nav-toggle{flex:0 0 auto}
  .top-nav,.top-nav.open{box-sizing:border-box;width:100%;max-width:100%;left:0;right:0;overflow-x:hidden}
  .top-nav .nav-group,.top-nav .nav-dropdown,.top-nav a,.top-nav summary{max-width:100%}
  .page-shell{width:100%;overflow-x:hidden}
  .site-footer{width:100%;overflow:hidden}
  .site-footer .container{width:calc(100% - 24px);max-width:calc(100% - 24px)}
  .panel-box,.create-card,.filters,.table-block,.record-summary,.stages,.stage-card,.batch-reception-card,.batch-table-wrap{max-width:100%;min-width:0}
  input:not([type=checkbox]):not([type=hidden]),textarea,select{max-width:100%;min-width:0}
}

@media(max-width:640px){
  
  
  
  
  
  
  .client-photo-picker{grid-template-columns:minmax(0,1fr) 44px;width:100%;max-width:100%}
}

/* HOTFIX 28.7 · navegación clara, responsive profesional y escáner directo */
html,body{width:100%;max-width:100%;overflow-x:hidden}
body{min-width:0}
.header,.site-footer,.page-shell{width:100%;max-width:100%}
.header-inner,.container{min-width:0}

/* El desplegable nace visualmente justo debajo de su opción. */
.top-nav .nav-group{position:relative}
.top-nav .nav-group>.nav-dropdown{top:100%;margin-top:6px}

/* Escáner: siempre centrado y con una única acción implícita: abrir = iniciar cámara. */













.client-photo-picker{display:block!important;width:100%;max-width:100%}
.client-photo-status{margin-top:5px}

/* Alineación general: columnas equilibradas y controles con alturas coherentes. */
.filters,.batch-shared-grid,.fields-grid,.info-grid,.excel-grid,.users-layout{align-items:end}
.filters>*,.batch-shared-grid>*,.fields-grid>*,.info-grid>*,.excel-grid>*,.users-layout>*{min-width:0}
.scan-field-host{width:100%;max-width:100%;align-items:stretch}
.scan-field-host>input,.scan-field-host>textarea,.scan-field-host>select{min-width:0}
.scan-field-host .scan-inline{align-self:stretch;min-height:44px}
.page-heading,.block-title,.table-title,.record-summary{min-width:0}

@media(max-width:820px){
  .header-inner,.container,.site-footer .container{width:calc(100% - 24px)!important;max-width:calc(100% - 24px)!important;margin-left:auto!important;margin-right:auto!important}
  .header-inner{min-height:68px;gap:10px}
  .brand{max-width:calc(100% - 48px);min-width:0;overflow:hidden}
  .brand img{width:108px;max-width:108px}
  .brand-divider{display:none}
  .brand-caption{font-size:.64rem;overflow:hidden;text-overflow:ellipsis}
  .nav-toggle{display:grid;flex:0 0 auto}

  /* Menú móvil en flujo vertical. Cada desplegable queda inmediatamente bajo su summary. */
  .top-nav,.top-nav.open{
    position:absolute!important;
    top:100%!important;
    left:0!important;
    right:0!important;
    width:100%!important;
    max-width:100%!important;
    max-height:calc(100dvh - 68px)!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    padding:10px 16px 14px!important;
    background:#ffffff!important;
    border-top:1px solid var(--border)!important;
    border-bottom:1px solid var(--border)!important;
    box-shadow:0 16px 28px rgba(11,20,29,.12)!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:2px!important;
  }
  .top-nav:not(.open){display:none!important}
  .top-nav.open{display:flex!important}
  .top-nav>a,.top-nav .nav-group>summary{
    width:100%!important;
    min-height:46px!important;
    height:auto!important;
    padding:11px 10px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    border-bottom:1px solid #eff2f5!important;
    white-space:normal!important;
  }
  .top-nav .nav-group,.top-nav .nav-group[open]{position:static!important;width:100%!important;height:auto!important;min-height:0!important;flex:0 0 auto!important;overflow:visible!important}
  .top-nav .nav-group>.nav-dropdown,.top-nav .nav-group[open]>.nav-dropdown,.top-nav .nav-group:last-of-type>.nav-dropdown{
    position:static!important;
    inset:auto!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:4px 0 7px 16px!important;
    border:0!important;
    border-left:2px solid #dee6ee!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:#fbfdff!important;
  }
  .top-nav .nav-group:not([open])>.nav-dropdown{display:none!important}
  .top-nav .nav-group[open]>.nav-dropdown{display:flex!important}
  .top-nav .nav-dropdown>a,.top-nav .nav-dropdown .logout button{width:100%!important;min-height:42px!important;padding:9px 12px!important;white-space:normal!important;text-align:left!important}

  /* Rejillas móviles: una lectura vertical limpia y alineada. */
  .page-heading,.block-title,.table-title{align-items:flex-start!important}
  .filters{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important;padding:16px!important}
  .filters .search-field{grid-column:1/-1!important}
  .batch-shared-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:13px!important}
  .fields-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:13px!important}
  .panel-box,.create-card,.filters,.table-shell,.record-summary,.stage-card,.batch-shared-card{width:100%;max-width:100%;min-width:0}
  .site-footer .container{min-height:auto;padding:14px 0;display:grid;grid-template-columns:1fr;gap:3px;text-align:center;justify-items:center}
}

@media(max-width:560px){
  .header-inner,.container,.site-footer .container{width:calc(100% - 20px)!important;max-width:calc(100% - 20px)!important}
  .page-shell{padding-top:22px}
  .page-heading{display:grid!important;grid-template-columns:1fr!important;gap:14px!important}
  .page-heading>.btn,.page-heading>a{width:100%!important;margin:0!important}
  .filters,.batch-shared-grid,.fields-grid,.info-grid,.excel-grid,.users-layout{grid-template-columns:1fr!important}
  .filters .search-field{grid-column:auto!important}
  .filter-actions,.stage-actions,.dashboard-quick-actions{width:100%;display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
  .filter-actions .btn,.stage-actions .btn,.dashboard-quick-actions .btn{width:100%!important}
  .record-summary{grid-template-columns:1fr!important}
  
  
  
  
  
  
  .batch-table td{grid-template-columns:96px minmax(0,1fr)!important;align-items:center!important}
  .batch-table td>*{min-width:0;max-width:100%}
}

/* HOTFIX 28.8 · foto integrada en el escáner + OCR visible en directo */








@media(max-width:640px){
  
  
}

/* HOTFIX 28.9 · OCR rápido + QR reforzado + controles de cámara */








@media(max-width:560px){
  
  
  
  
  
}

/* HOTFIX 29.0 · Cámara tipo nativa */




















@media(max-width:640px){
  
  
  
  
  
  
  
  
}

/* HOTFIX 29.3 · Escáner universal 1D/2D/QR — interfaz móvil profesional */


















/* Blindaje móvil: ningún control del escáner puede ensanchar el viewport. */
html,body{max-width:100%;overflow-x:hidden}



@media(max-width:640px){
  
  
  
  
}

/* HOTFIX 29.5 · enfoque táctil realista */






/* HOTFIX 29.6 · responsive global revisado y catálogos de clientes legibles */
*,*::before,*::after{box-sizing:border-box}
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}
.container,.header-inner,.page-shell,.site-footer,.panel-box,.scroll-table{min-width:0;max-width:100%}
.scroll-table.no-horizontal-scroll{overflow:visible!important;width:100%}

/* Resumen de clientes: equilibrado y sin desbordar */
.client-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}
.client-summary>div{min-width:0;display:grid;gap:4px;align-content:center;min-height:92px;padding:16px 18px;border:1px solid var(--border);border-radius:14px;background:#ffffff}
.client-summary b{font-size:1.6rem;line-height:1;color:#273648}
.client-summary span{font-size:.76rem;font-weight:800;color:#6f7b8a;overflow-wrap:anywhere}

/* Catálogos de administración: datos alineados y acciones contenidas */
.client-catalog-panel,.site-catalog-panel,.account-catalog-panel{overflow:hidden}
.client-catalog-table,.site-catalog-table,.account-catalog-panel table{width:100%;max-width:100%}
.client-catalog-table td,.site-catalog-table td,.account-catalog-panel td{vertical-align:middle}
.client-catalog-table td small,.site-catalog-table td small,.account-catalog-panel td small{display:block;margin-top:3px;line-height:1.35;overflow-wrap:anywhere}
.client-catalog-table .action-cell,.site-catalog-table .action-cell{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-items:stretch}
.client-catalog-table .action-cell>form,.site-catalog-table .action-cell>form{margin:0;min-width:0}
.client-catalog-table .action-cell .mini-btn,.site-catalog-table .action-cell .mini-btn{width:100%;height:100%;min-height:36px;white-space:normal;text-align:center;line-height:1.2}

/* En ficha móvil cada valor se presenta con su etiqueta encima. */
@media(max-width:1180px){
  .client-catalog-table td[data-label]::before,
  .site-catalog-table td[data-label]::before,
  .account-catalog-panel td[data-label]::before{
    content:attr(data-label)!important;
    display:block!important;
    margin-bottom:4px;
    font-size:.64rem;
    line-height:1.15;
    font-weight:900;
    letter-spacing:.06em;
    text-transform:uppercase;
    color:#788492;
  }
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row){align-items:start}
}

/* Tablet: dos columnas reales, sin campos flotantes ni alturas incoherentes. */
@media(max-width:820px){
  .client-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
  .client-summary>div{padding:13px 12px;min-height:78px;text-align:center;justify-items:center}
  .client-summary b{font-size:1.35rem}
  .section-heading-actions{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px}
  .section-heading-actions>div{min-width:0}
  .section-heading-actions .section-create-btn{width:auto;min-width:170px}
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row),.account-catalog-panel tr{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:4px 14px!important;
    padding:14px!important;
  }
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7),
  .site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6),
  .account-catalog-panel td:first-child,.account-catalog-panel td:nth-child(5),.account-catalog-panel td:nth-child(6){grid-column:1/-1!important}
  .client-catalog-table .action-cell,.site-catalog-table .action-cell{grid-template-columns:repeat(2,minmax(0,1fr))}
  .management-modal .app-modal-card{width:min(620px,calc(100vw - 28px));max-width:calc(100vw - 28px)}
  .modal-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .modal-form .modal-actions,.modal-form .client-active-checkbox{grid-column:1/-1}
}

/* Móvil: una columna clara, controles a ancho completo y sin desplazamiento lateral. */
@media(max-width:620px){
  .header-inner,.container,.site-footer .container{width:calc(100% - 20px)!important;max-width:calc(100% - 20px)!important}
  .page-shell{padding-left:0;padding-right:0}
  .client-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .client-summary>div{padding:11px 7px;min-height:72px;border-radius:12px}
  .client-summary b{font-size:1.15rem}
  .client-summary span{font-size:.64rem;line-height:1.2;text-align:center}
  .section-heading-actions{grid-template-columns:1fr;align-items:stretch;gap:10px}
  .section-heading-actions .section-create-btn{width:100%;min-width:0}
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row),.account-catalog-panel tr{
    grid-template-columns:1fr!important;
    gap:0!important;
    padding:13px!important;
    border-radius:14px!important;
  }
  .client-catalog-table td,.site-catalog-table td,.account-catalog-panel td,
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7),
  .site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6),
  .account-catalog-panel td:first-child,.account-catalog-panel td:nth-child(5),.account-catalog-panel td:nth-child(6){
    grid-column:1/-1!important;width:100%;min-width:0;padding:8px 0!important
  }
  .client-catalog-table td+td,.site-catalog-table td+td,.account-catalog-panel td+td{border-top:1px solid #eff1f4!important}
  .client-catalog-table .action-cell,.site-catalog-table .action-cell{grid-template-columns:1fr!important;gap:7px;padding-top:10px!important}
  .client-catalog-table .action-cell>button,.client-catalog-table .action-cell>form,
  .site-catalog-table .action-cell>button,.site-catalog-table .action-cell>form{width:100%}
  .mini-btn{min-height:40px;display:inline-flex;align-items:center;justify-content:center;text-align:center;white-space:normal}
  .site-more-btn{width:100%;white-space:normal;text-align:center}
  .modal-form{grid-template-columns:1fr!important;gap:12px!important}
  .modal-form>*{grid-column:1/-1!important;min-width:0}
  .modal-actions{display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
  .modal-actions .btn,.modal-actions button{width:100%!important}
  .app-modal-head{align-items:flex-start;gap:10px}
  .app-modal-head>div{min-width:0}
  .app-modal-head h2,.app-modal-head small{overflow-wrap:anywhere}
  .management-modal[open]{padding:10px!important}
  .management-modal .app-modal-card{width:100%!important;max-width:100%!important;max-height:calc(100dvh - 20px)!important;overflow:auto!important;border-radius:14px!important}
  input,select,textarea,button{max-width:100%}
}

/* Pantallas muy estrechas: resumen apilado para conservar legibilidad. */
@media(max-width:390px){
  .client-summary{grid-template-columns:1fr}
  .client-summary>div{grid-template-columns:auto 1fr;align-items:center;justify-items:start;min-height:0;text-align:left}
  .client-summary span{text-align:left}
}

/* HOTFIX 30.4 · responsive móvil global, compacto y sin overflow */
:root{--mobile-gap:12px;--mobile-radius:14px}
html{width:100%;overflow-x:hidden}
body{width:100%;min-width:0;overflow-x:hidden}
body *{min-width:0}
pre,code,.mono{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
.btn,.mini-btn,button,a,input,select,textarea{min-width:0}
.btn,.mini-btn,button{white-space:normal;overflow-wrap:anywhere}
input,select,textarea{width:100%;max-width:100%}
.page-heading>div,.block-title>div,.section-heading-actions>div,.table-title>div{min-width:0}
.page-heading h1,.block-title h2,.section-heading-actions h2,.panel-box h2,.panel-box h3{overflow-wrap:anywhere}

/* Cabeceras y barras: alineación limpia antes de llegar al móvil */
.page-heading,.block-title,.section-heading-actions,.table-title,.inventory-toolbar,.selection-toolbar,.filter-actions,.dashboard-quick-actions{
  gap:12px;flex-wrap:wrap
}
.section-heading-actions{align-items:center}
.section-heading-actions>div{flex:1 1 360px}
.section-heading-actions>.btn,.section-heading-actions>.section-create-btn{flex:0 0 auto}

/* Paneles, formularios y tarjetas nunca fuerzan el viewport */
.panel-box,.stage-card,.attention-card,.kpi,.phase-card,.record-summary,.filters,.management-modal .app-modal-card{
  min-width:0;max-width:100%
}
.fields-grid,.modal-form,.filters,.record-summary,.attention-grid,.kpis,.phase-grid,.dashboard-quick-actions{min-width:0}
.fields-grid>*,.modal-form>*,.filters>*,.record-summary>*,.attention-grid>*,.kpis>*,.phase-grid>*{min-width:0}

/* Tablas de administración: escritorio estable */
.client-catalog-table,.site-catalog-table,.account-catalog-panel table{table-layout:fixed}
.client-catalog-table th,.client-catalog-table td,.site-catalog-table th,.site-catalog-table td,.account-catalog-panel th,.account-catalog-panel td{
  overflow-wrap:anywhere;word-break:normal
}
.client-catalog-table .action-cell,.site-catalog-table .action-cell{align-items:stretch}
.client-catalog-table .action-cell>*,.site-catalog-table .action-cell>*{min-width:0}

/* Tablet: tarjetas de administración más legibles que una tabla comprimida */
@media(max-width:960px){
  .scroll-table.no-horizontal-scroll{overflow:visible!important}
  .client-catalog-table thead,.site-catalog-table thead,.account-catalog-panel thead{display:none!important}
  .client-catalog-table,.client-catalog-table tbody,.site-catalog-table,.site-catalog-table tbody,.account-catalog-panel table,.account-catalog-panel tbody{display:block!important;width:100%!important}
  .client-catalog-table tr,.site-catalog-table tr:not(.site-more-row),.account-catalog-panel tr{
    display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 16px!important;
    width:100%;margin:0 0 12px!important;padding:14px 16px!important;border:1px solid var(--border)!important;
    border-radius:var(--mobile-radius)!important;background:#ffffff!important;box-shadow:0 5px 18px rgba(11,20,29,.045)!important
  }
  .client-catalog-table td,.site-catalog-table td,.account-catalog-panel td{
    display:block!important;width:100%!important;padding:8px 0!important;border:0!important;vertical-align:top!important
  }
  .client-catalog-table td[data-label]::before,.site-catalog-table td[data-label]::before,.account-catalog-panel td[data-label]::before{
    content:attr(data-label)!important;display:block!important;margin:0 0 4px!important;color:#788491!important;
    font-size:.64rem!important;font-weight:900!important;letter-spacing:.055em!important;line-height:1.15!important;text-transform:uppercase!important
  }
  .client-catalog-table td:nth-child(2),.client-catalog-table td:nth-child(7),
  .site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6),
  .account-catalog-panel td:nth-child(1),.account-catalog-panel td:nth-child(5){grid-column:1/-1!important}
  .site-more-row{display:block!important}
  .site-more-row td{display:block!important;width:100%!important;padding:8px 0 18px!important}
}

/* Móvil: jerarquía compacta, aire suficiente y nada de overflow lateral */
@media(max-width:640px){
  :root{--mobile-gap:10px}
  .header-inner,.container,.site-footer .container{width:calc(100% - 24px)!important;max-width:calc(100% - 24px)!important;margin-inline:auto!important}
  .page-shell{width:100%;padding:22px 0 42px!important;overflow-x:clip}
  .panel-box{padding:16px!important;border-radius:14px!important}
  .page-heading,.block-title,.section-heading-actions,.table-title{display:grid!important;grid-template-columns:1fr!important;align-items:start!important;gap:10px!important}
  .page-heading>.btn,.page-heading>a,.section-heading-actions>.btn,.section-heading-actions>.section-create-btn{width:100%!important;margin:0!important}
  .fine,.page-heading p,.block-title p,.section-heading-actions p{line-height:1.45}

  /* Formularios */
  .filters,.fields-grid,.modal-form,.read-fields,.info-grid,.excel-grid,.users-layout,.message-block,.answer-form{
    grid-template-columns:1fr!important;gap:12px!important
  }
  .filters .search-field,.field:has(textarea),.modal-form>*,.read-fields>*{grid-column:1/-1!important}
  label{min-width:0}
  input,select,textarea{font-size:16px!important;min-height:44px}
  textarea{min-height:92px}

  /* Botoneras */
  .filter-actions,.modal-actions,.stage-actions,.dashboard-quick-actions,.selection-toolbar,.inventory-toolbar{
    display:grid!important;grid-template-columns:1fr!important;width:100%!important;gap:8px!important
  }
  .filter-actions .btn,.modal-actions .btn,.modal-actions button,.stage-actions .btn,.dashboard-quick-actions .btn,
  .selection-toolbar .btn,.inventory-toolbar .btn{width:100%!important;min-height:42px!important;margin:0!important;justify-content:center!important}

  /* Resúmenes: compactos pero respirados */
  .client-summary{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important}
  .client-summary>div{padding:10px 7px!important;min-height:68px!important;border-radius:12px!important;text-align:center!important;justify-items:center!important}
  .client-summary b{font-size:1.18rem!important}
  .client-summary span{font-size:.62rem!important;line-height:1.18!important;text-align:center!important}
  .kpis,.attention-grid{grid-template-columns:1fr 1fr!important;gap:9px!important}
  .kpi,.attention-card{min-height:0!important;padding:14px!important}

  /* CÓDIGOS DE CLIENTE: ficha compacta específica */
  .client-catalog-table tr{
    grid-template-columns:repeat(6,minmax(0,1fr))!important;gap:0 10px!important;padding:14px!important
  }
  .client-catalog-table td{padding:8px 0!important}
  .client-catalog-table td:nth-child(1){grid-column:span 3!important}
  .client-catalog-table td:nth-child(6){grid-column:span 3!important;text-align:right}
  .client-catalog-table td:nth-child(2){grid-column:1/-1!important;padding-top:10px!important;padding-bottom:10px!important;border-top:1px solid #eff1f4!important}
  .client-catalog-table td:nth-child(3),.client-catalog-table td:nth-child(4),.client-catalog-table td:nth-child(5){
    grid-column:span 2!important;text-align:center!important;padding:10px 4px!important;border-top:1px solid #eff1f4!important
  }
  .client-catalog-table td:nth-child(3)::before,.client-catalog-table td:nth-child(4)::before,.client-catalog-table td:nth-child(5)::before{text-align:center}
  .client-catalog-table td:nth-child(7){grid-column:1/-1!important;padding-top:12px!important;border-top:1px solid #eff1f4!important}
  .client-catalog-table .action-cell{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important}
  .client-catalog-table .action-cell>small{grid-column:1/-1!important}
  .client-catalog-table .action-cell .mini-btn{min-height:40px!important;padding:9px 8px!important}

  /* Centros: orden lógico, sin tarjetas interminables */
  .site-catalog-table tr:not(.site-more-row){grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 12px!important;padding:14px!important}
  .site-catalog-table td:nth-child(1),.site-catalog-table td:nth-child(5){grid-column:span 1!important}
  .site-catalog-table td:nth-child(5){text-align:right}
  .site-catalog-table td:nth-child(2),.site-catalog-table td:nth-child(3),.site-catalog-table td:nth-child(6){grid-column:1/-1!important}
  .site-catalog-table td:nth-child(4){grid-column:1/-1!important;padding:9px 0!important}
  .site-catalog-table .action-cell{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;padding-top:10px!important;border-top:1px solid #eff1f4!important}
  .site-catalog-table .action-cell .mini-btn{min-height:40px!important}

  /* Cuentas: nombre primero, datos secundarios en pareja, acciones contenidas */
  .account-catalog-panel tr{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 12px!important;padding:14px!important}
  .account-catalog-panel td:nth-child(1){grid-column:1/-1!important;padding-bottom:10px!important}
  .account-catalog-panel td:nth-child(2),.account-catalog-panel td:nth-child(3){grid-column:span 1!important}
  .account-catalog-panel td:nth-child(4),.account-catalog-panel td:nth-child(6){grid-column:span 1!important;padding-top:10px!important;border-top:1px solid #eff1f4!important}
  .account-catalog-panel td:nth-child(5){grid-column:1/-1!important;padding-top:10px!important;border-top:1px solid #eff1f4!important}
  .account-catalog-panel form,.account-catalog-panel button{max-width:100%}
  .account-catalog-panel .mini-btn{width:100%!important;min-height:40px!important}

  /* Modales: centrados y con respiración */
  dialog.app-modal[open],.management-modal[open]{padding:12px!important;align-items:center!important;justify-content:center!important}
  .app-modal-card,.management-modal .app-modal-card{width:min(100%,560px)!important;max-width:calc(100vw - 24px)!important;max-height:calc(100dvh - 24px)!important;margin:auto!important;overflow:auto!important}
  .app-modal-head{padding:16px!important;gap:12px!important}
  .modal-form{padding:16px!important}

  /* Navegación y pie: siempre dentro del viewport */
  .top-nav,.top-nav.open{max-width:100vw!important;overflow-x:hidden!important}
  .top-nav a,.top-nav summary,.nav-dropdown a{max-width:100%;overflow-wrap:anywhere}
  .site-footer,.site-footer .container{overflow:hidden}
  .site-footer .container{display:grid!important;grid-template-columns:1fr!important;gap:5px!important}
}

@media(max-width:390px){
  .client-summary{grid-template-columns:1fr 1fr 1fr!important}
  .client-summary>div{padding:9px 5px!important}
  .client-summary span{font-size:.58rem!important}
  .kpis,.attention-grid{grid-template-columns:1fr!important}
  .client-catalog-table .action-cell,.site-catalog-table .action-cell{grid-template-columns:1fr!important}
}

/* HOTFIX 30.5 · Responsive real en Android WebView + cero overflow */
html,body{width:100%;max-width:100%;overflow-x:hidden}
html.dpunto-native,html.dpunto-native body{width:100dvw;max-width:100dvw;overflow-x:hidden}
html.dpunto-native body{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
img,video,canvas,svg{max-width:100%;height:auto}
pre,code,.mono{max-width:100%;overflow-wrap:anywhere;word-break:break-word}
button,.btn,.mini-btn,input,select,textarea{max-width:100%;box-sizing:border-box}
.scroll-table,.panel-box,.users-table,.client-catalog-panel,.site-catalog-panel,.account-catalog-panel{max-width:100%;min-width:0}

@media(max-width:720px){
  html,body{font-size:16px}
  .header-inner,.container,.site-footer .container{width:calc(100% - 22px)!important;max-width:calc(100% - 22px)!important}
  .page-shell{padding-top:20px!important}
  .section-heading-actions{gap:14px!important}
  .section-heading-actions .fine{margin-top:4px}

  /* Códigos cliente: composición de ficha, no tabla comprimida. */
  .client-catalog-table tr{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:0 10px!important;
    padding:15px!important;
    margin-bottom:12px!important;
    border-radius:15px!important;
  }
  .client-catalog-table td{min-width:0!important;padding:9px 0!important}
  .client-catalog-table td:nth-child(1){grid-column:span 2!important;text-align:left!important}
  .client-catalog-table td:nth-child(6){grid-column:span 1!important;text-align:right!important;align-self:start!important}
  .client-catalog-table td:nth-child(2){grid-column:1/-1!important;border-top:1px solid #eff1f4!important;padding-top:12px!important}
  .client-catalog-table td:nth-child(3),
  .client-catalog-table td:nth-child(4),
  .client-catalog-table td:nth-child(5){grid-column:span 1!important;text-align:center!important;border-top:1px solid #eff1f4!important;padding:11px 4px!important}
  .client-catalog-table td:nth-child(7){grid-column:1/-1!important;border-top:1px solid #eff1f4!important;padding-top:12px!important}
  .client-catalog-table td:nth-child(1) .mono{display:block;font-size:.92rem;line-height:1.25}
  .client-catalog-table td:nth-child(2)>b{display:block;font-size:.94rem;line-height:1.3}
  .client-catalog-table td:nth-child(2)>small{display:block;margin-top:4px;line-height:1.35;color:var(--muted)}
  .client-catalog-table td[data-label]::before{margin-bottom:5px!important}
  .client-catalog-table td:nth-child(6)::before{text-align:right!important}
  .client-catalog-table .action-cell{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:9px!important}
  .client-catalog-table .action-cell>form,.client-catalog-table .action-cell>button{width:100%!important;min-width:0!important;margin:0!important}
  .client-catalog-table .action-cell form .mini-btn,.client-catalog-table .action-cell>button{width:100%!important;min-height:42px!important;white-space:normal!important;line-height:1.2!important}
  .client-catalog-table .action-cell>small{grid-column:1/-1!important}

  /* Centros/cuentas: bloques alineados y respirados. */
  .site-catalog-table tr:not(.site-more-row),.account-catalog-panel tr{padding:15px!important;gap:0 12px!important;border-radius:15px!important}
  .site-catalog-table td,.account-catalog-panel td{min-width:0!important;overflow-wrap:anywhere!important}
  .site-catalog-table .action-cell,.account-catalog-panel .action-cell{gap:9px!important}

  /* Navegación / footer dentro del ancho del WebView. */
  .header,.top-nav,.top-nav.open,.nav-dropdown,.site-footer{left:0!important;right:0!important;max-width:100%!important}
  .top-nav,.top-nav.open{width:100%!important}
  .nav-dropdown{width:100%!important;box-sizing:border-box!important}
  .site-footer .container>*{min-width:0;overflow-wrap:anywhere}
}

@media(max-width:430px){
  .client-catalog-table .action-cell{grid-template-columns:1fr!important}
  .client-catalog-table td:nth-child(1){grid-column:1/-1!important}
  .client-catalog-table td:nth-child(6){grid-column:1/-1!important;text-align:left!important;padding-top:0!important}
  .client-catalog-table td:nth-child(6)::before{text-align:left!important}
  .client-summary{grid-template-columns:1fr!important}
  .client-summary>div{display:grid!important;grid-template-columns:auto 1fr!important;align-items:center!important;text-align:left!important;min-height:56px!important;gap:12px!important}
  .client-summary span{text-align:left!important;font-size:.72rem!important}
}

/* HOTFIX 30.6 · Códigos de cliente como fichas responsive reales */
.client-code-list{
  display:grid;
  grid-template-columns:1fr;
  gap:12px;
  width:100%;
  min-width:0;
}
.client-code-card{
  display:grid;
  grid-template-columns:minmax(180px,.9fr) minmax(240px,1.45fr) minmax(250px,1fr) minmax(300px,1.2fr);
  grid-template-areas:"head desc metrics actions";
  gap:16px;
  align-items:center;
  width:100%;
  min-width:0;
  padding:16px 18px;
  background:#ffffff;
  border:1px solid var(--border);
  border-radius:16px;
  box-shadow:0 5px 18px rgba(11,20,29,.045);
}
.client-code-card-head{grid-area:head;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;min-width:0}
.client-code-identity{min-width:0}
.client-code-label,.client-code-description>span,.client-code-metrics span{
  display:block;
  margin-bottom:4px;
  color:#788491;
  font-size:.64rem;
  font-weight:900;
  letter-spacing:.055em;
  text-transform:uppercase;
  line-height:1.2;
}
.client-code-value{display:block;max-width:100%;font-size:.94rem;line-height:1.3;overflow-wrap:anywhere;word-break:break-word}
.client-code-status{flex:0 0 auto}
.client-code-description{grid-area:desc;min-width:0;padding-left:16px;border-left:1px solid #eff1f4}
.client-code-description b{display:block;font-size:.94rem;line-height:1.3;overflow-wrap:anywhere}
.client-code-description small{display:block;margin-top:4px;color:var(--muted);line-height:1.35;overflow-wrap:anywhere}
.client-code-metrics{grid-area:metrics;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
.client-code-metrics>div{min-width:0;padding:9px 8px;border-radius:11px;background:#f7fafc;text-align:center}
.client-code-metrics span{margin-bottom:3px;font-size:.58rem}
.client-code-metrics b{display:block;font-size:1rem;line-height:1.1}
.client-code-actions{grid-area:actions;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0}
.client-code-actions>form,.client-code-actions>button{width:100%;min-width:0;margin:0}
.client-code-actions .mini-btn{width:100%;min-width:0;min-height:40px;padding:9px 8px;white-space:normal;line-height:1.2;text-align:center;justify-content:center}
.client-code-permission-note{grid-column:1/-1;color:var(--muted);font-size:.72rem}
.client-code-empty{padding:22px;text-align:center}
.client-code-list .progressive-more-control{display:flex;justify-content:center;padding:4px 0 2px}

@media(max-width:1180px){
  .client-code-card{
    grid-template-columns:minmax(170px,.8fr) minmax(0,1.2fr);
    grid-template-areas:"head desc" "metrics actions";
    align-items:start;
  }
  .client-code-description{padding-left:14px}
}

@media(max-width:720px){
  .client-catalog-panel{padding:14px!important}
  .client-catalog-panel .section-heading-actions{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;align-items:stretch!important}
  .client-catalog-panel .section-heading-actions>div{min-width:0!important}
  .client-catalog-panel .section-create-btn{width:100%!important;min-height:44px!important}
  .client-code-list{gap:11px}
  .client-code-card{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-areas:"head head" "desc desc" "metrics metrics" "actions actions"!important;
    gap:0!important;
    padding:14px!important;
    align-items:start!important;
    overflow:hidden;
  }
  .client-code-card-head{padding:0 0 11px;border-bottom:1px solid #eff1f4;align-items:center}
  .client-code-identity{flex:1 1 auto;min-width:0}
  .client-code-label{font-size:.6rem}
  .client-code-value{font-size:.92rem}
  .client-code-status{margin-left:8px}
  .client-code-description{padding:11px 0!important;border-left:0!important;border-bottom:1px solid #eff1f4}
  .client-code-description>span{font-size:.6rem}
  .client-code-description b{font-size:.92rem}
  .client-code-description small{font-size:.76rem}
  .client-code-metrics{padding:11px 0;gap:7px;border-bottom:1px solid #eff1f4}
  .client-code-metrics>div{padding:9px 5px;border-radius:10px}
  .client-code-metrics span{font-size:.55rem;letter-spacing:.035em}
  .client-code-metrics b{font-size:1.02rem}
  .client-code-actions{padding-top:11px;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .client-code-actions .mini-btn{min-height:42px;font-size:.76rem;padding:9px 7px}
  .client-code-actions>form:last-of-type{grid-column:1/-1}
  .client-code-permission-note{padding-top:2px;text-align:center}
}

@media(max-width:390px){
  .client-catalog-panel{padding:12px!important}
  .client-code-card{padding:12px!important;border-radius:14px!important}
  .client-code-card-head{align-items:flex-start}
  .client-code-status .badge{font-size:.66rem;padding:4px 7px}
  .client-code-metrics{gap:5px}
  .client-code-metrics>div{padding:8px 3px}
  .client-code-metrics span{font-size:.52rem}
  .client-code-actions{grid-template-columns:1fr}
  .client-code-actions>form:last-of-type{grid-column:auto}
}

/* =========================================================
   DPUNTO M1 · BASE MÓVIL GLOBAL v31.0
   Capa final de normalización responsive.
   No cambia inventario, clientes, fases ni lógica de negocio.
   ========================================================= */
:root{
  --tap-size:44px;
  --mobile-side:12px;
}
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
  overflow-x:clip;
}
body{
  max-width:100%;
  overflow-x:clip;
}
body.nav-open{
  overflow:hidden;
}
img,svg,video,canvas{
  max-width:100%;
  height:auto;
}
input,select,textarea,button,.btn,.mini-btn{
  box-sizing:border-box;
}
input,select,textarea{
  min-width:0;
}
button,.btn,.mini-btn,summary,a{
  -webkit-tap-highlight-color:transparent;
}
:where(.panel-box,.stage-card,.filters,.table-shell,.scroll-table,.record-summary,.message-block,.request-card){
  min-width:0;
  max-width:100%;
}
:where(.page-heading,.block-title,.section-heading-actions,.table-title)>*{
  min-width:0;
}

/* Los contenidos anchos se desplazan dentro de su propio contenedor,
   nunca ensanchan toda la aplicación. */
.scroll-table{
  width:100%;
  max-width:100%;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}

/* Modales seguros para Android/iPhone. */
dialog.app-modal[open],
.management-modal[open],
.app-confirm-modal[open]{
  box-sizing:border-box;
  max-width:100vw;
  max-height:100dvh;
}
.app-modal-card,
.management-modal .app-modal-card,
.confirm-modal-card{
  max-width:calc(100vw - 24px);
  max-height:calc(100dvh - 24px);
}

/* Móvil/tablet: menú en flujo vertical. El desplegable queda justo debajo
   de la opción pulsada, no flotando fuera del menú. */
@media(max-width:820px){
  .header{
    overflow:visible!important;
  }
  .header-inner{
    width:calc(100% - 24px)!important;
    max-width:calc(100% - 24px)!important;
    min-width:0!important;
  }
  .nav-toggle{
    min-width:var(--tap-size);
    min-height:var(--tap-size);
    place-content:center;
    border-radius:10px;
  }
  .top-nav,
  .top-nav.open{
    position:absolute!important;
    top:100%!important;
    left:0!important;
    right:0!important;
    width:100%!important;
    height:auto!important;
    max-width:100%!important;
    max-height:calc(100dvh - var(--header) - env(safe-area-inset-bottom))!important;
    padding:8px 12px max(10px,env(safe-area-inset-bottom))!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:2px!important;
    background:#ffffff;
  }
  .top-nav:not(.open){
    display:none!important;
  }
  .top-nav.open{
    display:flex!important;
  }
  .top-nav>a,
  .top-nav .nav-group,
  .top-nav .nav-group[open]{
    position:static!important;
    width:100%!important;
    height:auto!important;
    min-height:var(--tap-size)!important;
    flex:0 0 auto!important;
  }
  .top-nav>a,
  .top-nav .nav-group>summary,
  .top-nav .nav-group[open]>summary{
    width:100%!important;
    min-height:48px!important;
    height:auto!important;
    padding:11px 10px!important;
    justify-content:space-between!important;
    white-space:normal!important;
    line-height:1.25!important;
    border-bottom:1px solid #ebeef3!important;
  }
  .top-nav .nav-dropdown,
  .top-nav .nav-group:last-of-type>.nav-dropdown,
  .top-nav .nav-group[open]>.nav-dropdown{
    position:static!important;
    inset:auto!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    margin:0!important;
    padding:4px 8px 7px 16px!important;
    border:0!important;
    border-left:2px solid var(--border)!important;
    border-radius:0!important;
    box-shadow:none!important;
    background:#ffffff!important;
  }
  .top-nav .nav-dropdown>a,
  .top-nav .nav-dropdown .logout button{
    display:flex;
    align-items:center;
    width:100%;
    min-height:44px;
    padding:10px 10px!important;
    white-space:normal!important;
    line-height:1.3;
  }
  .top-nav .nav-dropdown .logout{
    margin:0;
    padding-top:4px;
  }

  .site-footer .container{
    min-width:0;
  }
}

/* Teléfono: una sola columna, controles táctiles y safe areas. */
@media(max-width:640px){
  html.dpunto-native body{
    width:100%!important;
    max-width:100%!important;
    padding-left:env(safe-area-inset-left)!important;
    padding-right:env(safe-area-inset-right)!important;
  }
  .container,
  .header-inner,
  .site-footer .container{
    width:calc(100% - 24px)!important;
    max-width:calc(100% - 24px)!important;
    margin-inline:auto!important;
  }
  .page-shell{
    width:100%;
    max-width:100%;
    padding-top:20px!important;
    padding-bottom:max(44px,calc(32px + env(safe-area-inset-bottom)))!important;
    overflow-x:clip!important;
  }
  .panel-box,
  .create-card{
    padding:16px!important;
  }

  /* Formularios: una columna y sin zoom automático de iOS. */
  .fields-grid,
  .filters,
  .modal-form,
  .read-fields,
  .info-grid,
  .excel-grid,
  .users-layout,
  .message-block,
  .answer-form{
    grid-template-columns:minmax(0,1fr)!important;
    gap:12px!important;
  }
  .fields-grid>*,
  .filters>*,
  .modal-form>*,
  .read-fields>*,
  .info-grid>*,
  .excel-grid>*,
  .users-layout>*,
  .message-block>*,
  .answer-form>*{
    min-width:0!important;
    grid-column:1/-1!important;
  }
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea{
    width:100%!important;
    max-width:100%!important;
    min-height:44px;
    font-size:16px!important;
  }
  textarea{
    min-height:96px;
  }

  /* Objetivos táctiles principales. */
  .btn,
  .mini-btn,
  button:not(.nav-toggle){
    min-height:44px;
  }
  .filter-actions,
  .modal-actions,
  .stage-actions{
    width:100%;
    gap:8px!important;
  }
  .filter-actions .btn,
  .modal-actions .btn,
  .modal-actions button,
  .stage-actions .btn{
    min-height:44px!important;
  }

  /* Modales centrados sin salir de la pantalla. */
  dialog.app-modal[open],
  .management-modal[open],
  .app-confirm-modal[open]{
    padding:
      max(10px,env(safe-area-inset-top))
      max(10px,env(safe-area-inset-right))
      max(10px,env(safe-area-inset-bottom))
      max(10px,env(safe-area-inset-left))!important;
    align-items:center!important;
    justify-content:center!important;
  }
  .app-modal-card,
  .management-modal .app-modal-card,
  .confirm-modal-card{
    width:100%!important;
    max-width:100%!important;
    max-height:calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom))!important;
    margin:auto!important;
    overflow:auto!important;
  }

  /* Pie simple y legible. */
  .site-footer .container{
    display:grid!important;
    grid-template-columns:1fr!important;
    align-items:start!important;
    gap:4px!important;
    padding-top:14px!important;
    padding-bottom:max(14px,env(safe-area-inset-bottom))!important;
  }
  .site-footer .container>*{
    min-width:0;
    overflow-wrap:anywhere;
  }
}

@media(max-width:390px){
  .container,
  .header-inner,
  .site-footer .container{
    width:calc(100% - 20px)!important;
    max-width:calc(100% - 20px)!important;
  }
}

/* =========================================================
   DPUNTO M2 · INVENTARIO MÓVIL v32.0
   Tarjetas reales, filtros compactos y orden móvil.
   ========================================================= */
.inventory-mobile-quick-actions,
.inventory-mobile-sort,
.inventory-open-mobile{display:none}

@media(max-width:760px){
  /* Búsqueda primero; filtros avanzados bajo demanda. */
  .inventory-filters{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    padding:14px!important;
    border-radius:16px!important;
  }
  .inventory-filters>.search-field{
    display:grid!important;
    grid-column:1!important;
    gap:6px!important;
    margin:0!important;
  }
  .inventory-filters>.search-field input{
    min-height:48px!important;
    border-radius:12px!important;
  }
  .inventory-mobile-quick-actions{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  .inventory-mobile-quick-actions .btn{width:100%;min-height:44px}
  .inventory-filters>label:not(.search-field),
  .inventory-filters>.filter-actions{
    display:none!important;
  }
  .inventory-filters.mobile-filters-open>label:not(.search-field){
    display:grid!important;
  }
  .inventory-filters.mobile-filters-open>.filter-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
  }
  .inventory-filters.mobile-filters-open>.filter-actions .btn{width:100%!important}

  /* Cabecera de resultados limpia y con orden accesible en móvil. */
  .inventory-table-title{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    padding:14px!important;
  }
  .inventory-table-title>div:first-child{min-width:0}
  .inventory-table-title>div:first-child b{font-size:1rem}
  .inventory-table-title>div:first-child span{font-size:.76rem}
  .inventory-mobile-sort{
    display:grid;
    gap:5px;
    font-size:.68rem;
    line-height:1.2;
    font-weight:850;
    letter-spacing:.05em;
    text-transform:uppercase;
    color:#778391;
  }
  .inventory-mobile-sort select{
    min-height:42px!important;
    font-size:.88rem!important;
    text-transform:none;
    letter-spacing:0;
    font-weight:700;
  }
  .inventory-table-actions{width:100%!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important}
  .inventory-table-actions>*{min-width:0!important;width:100%!important}
  .inventory-table-actions .compact-action-btn,
  .inventory-table-actions summary{width:100%!important;justify-content:center!important}

  /* Cada registro pasa a ser una tarjeta móvil, no una tabla comprimida. */
  .inventory-table-wrap{background:transparent!important;padding:0!important}
  .inventory-table,.inventory-table tbody{display:block!important;width:100%!important}
  .inventory-table tbody{padding:10px 0!important}
  .inventory-table thead{display:none!important}
  .inventory-table tr{
    position:relative;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    grid-template-areas:
      "reference reference"
      "client phase"
      "serial state"
      "request request"
      "destination destination"
      "location updated"
      "open open";
    gap:0 12px!important;
    margin:0 0 12px!important;
    padding:15px 14px 12px!important;
    border:1px solid #e0e5eb!important;
    border-radius:16px!important;
    background:#ffffff!important;
    box-shadow:0 5px 18px rgba(11,20,29,.055)!important;
    overflow:hidden;
  }
  .inventory-table tr:has(.select-col input:checked){
    border-color:#5a9be2!important;
    box-shadow:0 0 0 2px rgba(90,155,226,.12),0 7px 20px rgba(11,20,29,.07)!important;
  }
  .inventory-table td{
    display:block!important;
    min-width:0!important;
    padding:8px 0!important;
    border:0!important;
    text-align:left!important;
    overflow-wrap:anywhere;
  }
  .inventory-table td::before{
    display:block!important;
    margin:0 0 3px!important;
    font-size:.61rem!important;
    line-height:1.25!important;
    font-weight:850!important;
    letter-spacing:.055em!important;
    text-transform:uppercase!important;
    color:#828d99!important;
  }
  .inventory-table .reference-col{
    grid-area:reference;
    padding:0 40px 10px 0!important;
    margin-bottom:2px;
    border-bottom:1px solid #eff2f5!important;
  }
  .inventory-table .reference-col::before{content:"Producto"}
  .inventory-table .reference-col .item-link{
    display:block!important;
    font-size:1rem!important;
    line-height:1.25!important;
    font-weight:850!important;
    color:#19293b!important;
    text-decoration:none!important;
  }
  .inventory-table .reference-col small{
    display:block!important;
    margin-top:4px!important;
    font-size:.78rem!important;
    line-height:1.35!important;
    color:#6d7988!important;
  }
  .inventory-table .client-col{grid-area:client}
  .inventory-table .phase-col{grid-area:phase}
  .inventory-table .serial-col{grid-area:serial}
  .inventory-table .state-col{grid-area:state}
  .inventory-table .request-col{grid-area:request}
  .inventory-table .destination-col{grid-area:destination}
  .inventory-table .location-col{grid-area:location}
  .inventory-table .updated-col{grid-area:updated}
  .inventory-table .open-col{grid-area:open}
  .inventory-table .id-col{
    position:absolute;
    top:15px;
    right:14px;
    width:auto!important;
    padding:0!important;
    font-size:.7rem!important;
    color:#97a0aa!important;
  }
  .inventory-table .id-col::before{display:none!important}
  .inventory-table .select-col{
    position:absolute!important;
    top:42px;
    right:12px;
    width:32px!important;
    height:32px!important;
    padding:0!important;
    display:grid!important;
    place-items:center!important;
    z-index:2;
  }
  .inventory-table .select-col::before{display:none!important}
  .inventory-table .select-col input{width:20px!important;height:20px!important;margin:0!important}
  .inventory-table .client-col b{display:block;font-size:.86rem;color:#263649}
  .inventory-table .client-col small{display:block;margin-top:2px;font-size:.72rem;color:#75808c}
  .inventory-table .phase-chip,.inventory-table .state-badge,.inventory-table .storage-chip{max-width:100%;white-space:normal!important}
  .inventory-table .request-col,.inventory-table .destination-col{
    padding-top:9px!important;
    border-top:1px solid #f1f4f7!important;
  }
  .inventory-table .inventory-open{
    padding-top:10px!important;
    margin-top:2px;
    border-top:1px solid #eff2f5!important;
  }
  .inventory-table .inventory-open::before{display:none!important}
  .inventory-card-open{
    width:100%!important;
    min-height:42px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    padding:9px 12px!important;
    border:1px solid #c7d3e1!important;
    border-radius:10px!important;
    background:#f7fbfe!important;
    color:#34567d!important;
    font-size:.84rem!important;
    font-weight:850!important;
    text-decoration:none!important;
  }
  .inventory-open-desktop{display:none!important}
  .inventory-open-mobile{display:inline!important}
  .bulk-toolbar-compact{
    position:sticky;
    bottom:max(8px,env(safe-area-inset-bottom));
    z-index:20;
    border-radius:14px!important;
    box-shadow:0 8px 28px rgba(11,20,29,.16)!important;
  }
  .bulk-toolbar-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%!important;gap:8px!important}
  .bulk-toolbar-actions>*{width:100%!important;min-width:0!important}
  .bulk-toolbar-actions .text-action{grid-column:1/-1}
  .pager{gap:8px!important;justify-content:center!important;flex-wrap:wrap!important}
  .pager>span{width:100%;text-align:center}
}

@media(max-width:420px){
  .inventory-table tr{
    grid-template-columns:1fr!important;
    grid-template-areas:
      "reference"
      "client"
      "phase"
      "serial"
      "state"
      "request"
      "destination"
      "location"
      "updated"
      "open";
  }
  .inventory-mobile-quick-actions,
  .inventory-filters.mobile-filters-open>.filter-actions,
  .inventory-table-actions,
  .bulk-toolbar-actions{grid-template-columns:1fr!important}
  .bulk-toolbar-actions .text-action{grid-column:auto}
  .inventory-table .phase-col,.inventory-table .state-col{padding-top:6px!important}
}

/* =========================================================
   DPUNTO M3 · CÓDIGOS DE CLIENTE + CENTROS MÓVIL v33.0
   Prioriza lectura, acciones principales y cero scroll lateral.
   ========================================================= */
.client-code-centers-link{
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:5px;
}
.client-code-centers-link span{opacity:.72;font-weight:800}
.client-code-more-actions{min-width:0}
.client-code-more-actions>summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:40px;
  padding:9px 10px;
  border:1px solid var(--border);
  border-radius:10px;
  background:#ffffff;
  color:var(--ink);
  font-size:.78rem;
  font-weight:800;
  line-height:1.2;
  user-select:none;
}
.client-code-more-actions>summary::-webkit-details-marker{display:none}
.client-code-more-actions>summary::after{content:"⌄";margin-left:7px;color:var(--muted);font-size:.85em}
.client-code-more-actions[open]>summary::after{content:"⌃"}
.client-code-more-menu{
  display:grid;
  grid-template-columns:1fr;
  gap:7px;
  margin-top:7px;
  padding:8px;
  border:1px solid var(--border);
  border-radius:11px;
  background:#f8fafc;
}
.client-code-more-menu form,.client-code-more-menu .mini-btn{width:100%;margin:0}
.client-site-jump-highlight{animation:clientSitePulse 1.4s ease}
@keyframes clientSitePulse{
  0%,100%{box-shadow:none}
  35%{box-shadow:0 0 0 4px rgba(90,155,226,.18)}
}

@media(max-width:720px){
  .client-summary{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:7px!important;
    margin-bottom:12px!important;
  }
  .client-summary>div{
    min-height:66px!important;
    padding:9px 6px!important;
    display:flex!important;
    flex-direction:column!important;
    justify-content:center!important;
    align-items:center!important;
    gap:3px!important;
    text-align:center!important;
  }
  .client-summary b{font-size:1.08rem!important;line-height:1!important}
  .client-summary span{font-size:.59rem!important;line-height:1.15!important;text-align:center!important}

  .client-code-card{
    border-radius:17px!important;
    box-shadow:0 8px 24px rgba(11,20,29,.065)!important;
  }
  .client-code-card-head{min-height:44px}
  .client-code-label{margin-bottom:5px!important}
  .client-code-value{font-size:1.02rem!important;letter-spacing:.015em}
  .client-code-description b{font-size:1rem!important}
  .client-code-description small{margin-top:5px!important}
  .client-code-metrics>div{
    background:#f5f8fb!important;
    border:1px solid #eff1f4;
  }
  .client-code-actions{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    align-items:start;
  }
  .client-code-actions>.client-code-centers-link,
  .client-code-actions>.client-code-edit-btn{
    min-height:44px!important;
  }
  .client-code-more-actions{
    grid-column:1/-1;
  }
  .client-code-more-actions>summary{min-height:44px;font-size:.79rem}
  .client-code-more-menu{padding:8px;margin-top:8px}

  /* Centros: tabla en escritorio, fichas reales en móvil. */
  .site-catalog-panel{padding:14px!important;overflow:hidden!important}
  .site-catalog-panel .section-heading-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:12px!important;
    align-items:stretch!important;
  }
  .site-catalog-panel .section-create-btn{width:100%!important;min-height:44px!important}
  .site-catalog-panel .scroll-table{
    overflow:visible!important;
    width:100%!important;
  }
  .site-catalog-table,
  .site-catalog-table tbody{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:10px!important;
    width:100%!important;
    min-width:0!important;
  }
  .site-catalog-table thead{display:none!important}
  .site-catalog-table tr:not(.site-more-row){
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    grid-template-areas:
      "client state"
      "site site"
      "location location"
      "usage usage"
      "actions actions"!important;
    gap:0!important;
    width:100%!important;
    min-width:0!important;
    padding:13px!important;
    border:1px solid var(--border)!important;
    border-radius:15px!important;
    background:#ffffff!important;
    box-shadow:0 6px 20px rgba(11,20,29,.05)!important;
  }
  .site-catalog-table tr[hidden]{display:none!important}
  .site-catalog-table td{
    display:block!important;
    width:auto!important;
    min-width:0!important;
    padding:9px 0!important;
    border:0!important;
    background:transparent!important;
    overflow-wrap:anywhere!important;
  }
  .site-catalog-table td::before{
    display:block!important;
    margin:0 0 4px!important;
    color:#788491!important;
    font-size:.58rem!important;
    font-weight:900!important;
    letter-spacing:.05em!important;
    text-transform:uppercase!important;
    line-height:1.15!important;
  }
  .site-catalog-table td:nth-child(1){grid-area:client;padding-top:0!important}
  .site-catalog-table td:nth-child(2){grid-area:site;border-top:1px solid #eff1f4!important}
  .site-catalog-table td:nth-child(3){grid-area:location;border-top:1px solid #eff1f4!important}
  .site-catalog-table td:nth-child(4){grid-area:usage;border-top:1px solid #eff1f4!important}
  .site-catalog-table td:nth-child(5){grid-area:state;padding:0 0 0 8px!important;text-align:right!important}
  .site-catalog-table td:nth-child(5)::before{display:none!important}
  .site-catalog-table td:nth-child(6){grid-area:actions;border-top:1px solid #eff1f4!important;padding-top:11px!important}
  .site-catalog-table td b,.site-catalog-table td small{max-width:100%;overflow-wrap:anywhere}
  .site-catalog-table .action-cell{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
    align-items:start!important;
  }
  .site-catalog-table .action-cell>button,
  .site-catalog-table .action-cell>form{width:100%!important;margin:0!important}
  .site-catalog-table .action-cell .mini-btn{width:100%!important;min-height:42px!important;white-space:normal!important}
  .site-catalog-table .action-cell>form:last-of-type{grid-column:1/-1}
  .site-catalog-table .site-more-row{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    border:0!important;
    background:transparent!important;
    box-shadow:none!important;
  }
  .site-catalog-table .site-more-row td{display:block!important;padding:1px 0 4px!important}
  .site-catalog-table .site-more-row td::before{display:none!important}
  .site-more-btn{width:100%!important;min-height:43px!important;white-space:normal!important}
}

@media(max-width:390px){
  .client-summary{gap:5px!important}
  .client-summary>div{min-height:61px!important;padding:8px 4px!important}
  .client-summary span{font-size:.54rem!important}
  .client-code-actions{grid-template-columns:1fr!important}
  .client-code-more-actions{grid-column:auto}
  .site-catalog-table .action-cell{grid-template-columns:1fr!important}
  .site-catalog-table .action-cell>form:last-of-type{grid-column:auto}
}

/* =========================================================
   DPUNTO M4 · FORMULARIOS + 6 FASES MÓVIL v34.0
   Progreso compacto, formularios de una columna y guardado
   accesible durante toda la edición móvil.
   ========================================================= */
.mobile-phase-progress{display:none}
.mobile-form-section-title{display:none}

@media(max-width:720px){
  .mobile-phase-progress{
    display:block;
    margin:0 0 14px;
    padding:14px;
    border:1px solid var(--border);
    border-radius:16px;
    background:#ffffff;
    box-shadow:0 7px 22px rgba(11,20,29,.055);
  }
  .mobile-phase-progress-top{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
  }
  .mobile-phase-progress-top>div{min-width:0;display:grid;gap:3px}
  .mobile-phase-progress-top span{
    color:#788491;
    font-size:.58rem;
    font-weight:900;
    letter-spacing:.08em;
  }
  .mobile-phase-progress-top b{font-size:1rem;line-height:1.2;color:var(--ink)}
  .mobile-phase-progress-top strong{font-size:.92rem;color:var(--blue);white-space:nowrap}
  .mobile-phase-progress-bar{
    height:8px;
    margin:12px 0 9px;
    overflow:hidden;
    border-radius:999px;
    background:#eff1f4;
  }
  .mobile-phase-progress-bar i{
    display:block;
    height:100%;
    min-width:0;
    border-radius:inherit;
    background:var(--blue);
    transition:width .2s ease;
  }
  .mobile-phase-progress-caption{font-size:.75rem;color:#5a6674;line-height:1.35}
  .mobile-phase-progress-caption span{font-weight:900;color:var(--ink)}
  .mobile-phase-dots{
    display:grid;
    grid-template-columns:repeat(6,minmax(0,1fr));
    gap:6px;
    margin-top:11px;
  }
  .mobile-phase-dots span{
    display:grid;
    place-items:center;
    min-width:0;
    aspect-ratio:1;
    max-width:30px;
    border:1px solid #e0e4e9;
    border-radius:50%;
    background:#f7f9fa;
    color:#8b95a0;
    font-size:.66rem;
    font-weight:900;
  }
  .mobile-phase-dots span.done{background:#eaf6f0;border-color:#c5e4d2;color:#397453}
  .mobile-phase-dots span.current{background:#eef4fc;border-color:#adcaea;color:#4378b1;box-shadow:0 0 0 3px rgba(90,155,226,.09)}

  /* La cronología extensa sigue disponible, pero en móvil pasa a segundo plano. */
  .timeline.timeline-flow{
    overflow-x:auto!important;
    display:flex!important;
    gap:7px!important;
    padding:2px 1px 10px!important;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
  }
  .timeline.timeline-flow .timeline-step{
    flex:0 0 128px!important;
    min-width:128px!important;
    scroll-snap-align:start;
    padding:10px!important;
    border-radius:13px!important;
  }
  .timeline.timeline-flow .step-name{font-size:.72rem!important}
  .timeline.timeline-flow small{font-size:.62rem!important}

  .stages{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:12px!important}
  .stage-card{
    min-width:0!important;
    border-radius:17px!important;
    overflow:visible!important;
    scroll-margin-top:12px;
  }
  .stage-card.stage-current{
    border-color:rgba(90,155,226,.42)!important;
    box-shadow:0 8px 26px rgba(90,155,226,.08)!important;
  }
  .stage-head{padding:13px!important;gap:9px!important;align-items:center!important}
  .stage-head .stage-mark{flex:0 0 auto!important}
  .stage-head h3{font-size:.96rem!important;line-height:1.2!important}
  .stage-head small{font-size:.57rem!important}
  .stage-head .status-marker{margin-left:auto!important;white-space:nowrap!important;font-size:.62rem!important}

  .stage-form{position:relative;min-width:0;padding-bottom:0!important}
  .mobile-form-section-title{
    display:grid;
    gap:3px;
    margin:0 13px 11px;
    padding:11px 12px;
    border-radius:12px;
    background:#f6f9fb;
    border:1px solid #eaedf1;
  }
  .mobile-form-section-title>span{font-size:.57rem;font-weight:900;letter-spacing:.07em;color:#76818d}
  .mobile-form-section-title>b{font-size:.9rem;color:var(--ink)}
  .mobile-form-section-title>small{font-size:.7rem;line-height:1.35;color:#6b7684}

  .stage-form .fields-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:11px!important;
    padding-left:13px!important;
    padding-right:13px!important;
  }
  .stage-form .field,
  .stage-form .storage-editor,
  .stage-form .notice.inline{grid-column:1/-1!important;min-width:0!important;width:100%!important}
  .stage-form label.field{gap:6px!important}
  .stage-form input,
  .stage-form select,
  .stage-form textarea{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    min-height:46px!important;
    font-size:16px!important; /* evita zoom automático en iPhone */
    border-radius:11px!important;
  }
  .stage-form textarea{min-height:96px!important;resize:vertical}
  .stage-form select{padding-right:34px!important}
  .stage-form .required{font-size:.72em!important}

  .storage-editor{padding:11px!important;border-radius:13px!important}
  .storage-editor-grid{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:10px!important;
  }

  /* El botón acompaña al usuario mientras recorre cada fase. */
  .stage-actions{
    position:sticky!important;
    bottom:calc(env(safe-area-inset-bottom, 0px) + 6px)!important;
    z-index:20!important;
    margin-top:13px!important;
    padding:9px 13px calc(9px + env(safe-area-inset-bottom, 0px))!important;
    border-top:1px solid rgba(222,227,233,.9)!important;
    background:rgba(255,255,255,.96)!important;
    backdrop-filter:blur(9px);
    -webkit-backdrop-filter:blur(9px);
  }
  .stage-actions .btn{
    width:100%!important;
    min-height:48px!important;
    justify-content:center!important;
    white-space:normal!important;
    text-align:center!important;
  }
  .stage-lock-notice{margin:0 13px 13px!important;border-radius:12px!important}
  .read-fields{grid-template-columns:minmax(0,1fr)!important}

  /* Resumen de pieza más legible en vertical. */
  .record-summary{
    grid-template-columns:minmax(0,1fr)!important;
    gap:8px!important;
  }
  .record-summary>div{min-width:0!important;padding:11px 12px!important;border-radius:12px!important}
  .record-summary b,.record-summary small{overflow-wrap:anywhere!important}
}

@media(max-width:390px){
  .mobile-phase-progress{padding:12px}
  .mobile-phase-dots{gap:4px}
  .mobile-phase-dots span{max-width:27px;font-size:.61rem}
  .timeline.timeline-flow .timeline-step{flex-basis:116px!important;min-width:116px!important}
  .stage-head{padding:11px!important}
  .mobile-form-section-title{margin-left:11px;margin-right:11px}
  .stage-form .fields-grid{padding-left:11px!important;padding-right:11px!important}
  .stage-actions{padding-left:11px!important;padding-right:11px!important}
}


/* =========================================================
   DPUNTO v38 · navegación simple, layout compacto y escáner
   móvil/web separados. Reglas finales de presentación.
   ========================================================= */
html,body{max-width:100%;overflow-x:hidden}
.page-shell,.container,.header-inner,.panel-box,.create-card,.stage-card,.kpi,.phase-card,.attention-card,.recent-row,.record-summary>div{min-width:0}
h1,h2,h3,p,span,b,small,a,label,button,td,th{overflow-wrap:anywhere}
input,textarea,select,button,.btn{max-width:100%}

/* Navegación sin destinos duplicados. */
.header-inner{gap:18px}
.top-nav{gap:12px;min-width:0}
.top-nav>a{display:inline-flex;align-items:center;min-height:42px;padding:0 2px;line-height:1.2}
.top-nav .logout{flex:0 0 auto}
.top-nav .logout button{min-height:38px;padding:8px 12px;white-space:nowrap}

/* Tarjetas: contenido compacto, alineado y sin huecos artificiales. */
.kpis,.phase-grid,.attention-grid,.info-grid,.excel-grid,.users-layout{align-items:stretch}
.kpi,.phase-card,.attention-card,.panel-box,.create-card{height:100%}
.kpi{min-height:136px;padding:18px 20px}
.phase-card{min-height:164px;padding:19px 21px}
.phase-card h3{margin:10px 0}
.panel-box,.create-card{padding:clamp(18px,2vw,27px)}
.record-summary{align-items:stretch}
.record-summary>div{display:flex;flex-direction:column;justify-content:center;gap:4px}
.page-heading>div,.block-title>div,.recent-main,.recent-meta{min-width:0}
.page-heading-actions,.dashboard-quick-actions,.filter-actions,.stage-actions,.modal-actions{align-items:center}

/* Estado visible de pistola HID en web/PC. */
.hardware-scanner-status{display:flex;align-items:center;gap:11px;width:100%;margin:-14px 0 20px;padding:11px 14px;border:1px solid #d7e1ed;border-radius:13px;background:#f7fbfe;color:#36475a;box-shadow:0 5px 18px rgba(11,20,29,.035)}
.hardware-scanner-status>div{display:grid;gap:1px;min-width:0}
.hardware-scanner-status b{font-size:.82rem;color:#293b50}
.hardware-scanner-status small{font-size:.72rem;color:#6f7b8a;line-height:1.35}
.hardware-scanner-dot{width:9px;height:9px;flex:0 0 9px;border-radius:999px;background:#4ea470;box-shadow:0 0 0 4px rgba(78,164,112,.12)}
.hardware-scanner-status.has-read{border-color:#a9d6bd;background:#f2faf6}
.dpunto-desktop-scanner [data-scan-button],.dpunto-desktop-scanner .mobile-camera-action{display:none!important}

/* Firma discreta del proyecto. */
.footer-right{display:flex;align-items:center;justify-content:flex-end;gap:14px;min-width:0}
.project-signature{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid #e4e8ee;border-radius:999px;color:#87919c;white-space:nowrap}
.project-signature svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.project-signature span{font-size:.67rem;font-weight:750;letter-spacing:.01em}

/* El menú móvil entra antes de que el escritorio pueda saturarse. */
@media(max-width:1080px){
  :root{--header:70px}
  .nav-toggle{display:grid}
  .header-inner{position:relative;height:auto;min-height:var(--header)}
  .top-nav,.top-nav.open{position:absolute;top:100%;left:0;right:0;height:auto;max-height:calc(100svh - var(--header));overflow-y:auto;overflow-x:hidden;background:#ffffff;border-top:1px solid var(--border);border-bottom:1px solid var(--border);box-shadow:0 15px 25px #0b141d14;flex-direction:column;align-items:stretch;padding:10px 20px;gap:0}
  .top-nav{display:none}
  .top-nav.open{display:flex}
  .top-nav>a{width:100%;min-height:44px;padding:10px;border-bottom:1px solid #ebeef3;white-space:normal}
  .top-nav .logout{width:100%;padding-top:8px}
  .top-nav .logout button{width:100%;text-align:left}
  body.nav-open{overflow:hidden}
}

@media(max-width:720px){
  .container,.header-inner{width:min(calc(100% - 28px),var(--container))}
  .page-shell{padding-top:22px;padding-bottom:48px}
  .page-heading{align-items:stretch;gap:15px;margin-bottom:22px}
  .page-heading>.btn,.page-heading>a,.page-heading-actions{width:100%}
  .page-heading-actions{display:grid;grid-template-columns:1fr;gap:8px}
  .page-heading-actions .btn,.page-heading-actions form,.page-heading-actions form .btn{width:100%}
  .kpis{gap:10px;margin-bottom:27px}
  .kpi{min-height:112px;padding:14px 15px}
  .phase-grid{gap:10px}
  .phase-card{min-height:138px;padding:15px 16px}
  .panel-box,.create-card{padding:16px}
  .hardware-scanner-status{margin:-7px 0 15px}
  .site-footer .container{padding:11px 0;min-height:0;align-items:flex-start;flex-direction:column}
  .footer-right{width:100%;justify-content:space-between;align-items:center;gap:8px}
}

@media(max-width:420px){
  .container,.header-inner{width:min(calc(100% - 20px),var(--container))}
  .brand{gap:9px}.brand img{width:112px}.brand-divider{display:none}.brand-caption{font-size:.62rem;letter-spacing:.06em}
  h1{font-size:1.78rem}.lead{font-size:.92rem}
  .footer-right{align-items:flex-start;flex-direction:column}
}

/* =========================================================
   DPUNTO v38.1 · navegación agrupada y aviso de escaneo estable
   ========================================================= */
/* El aviso nunca comparte título/texto en una fila: evita solapes en tarjetas estrechas. */
.scan-help{
  display:block!important;
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  margin:0 0 18px!important;
  padding:12px 14px!important;
  overflow:hidden;
}
.scan-help>div{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:4px!important;
  width:100%;
  min-width:0;
  align-items:start!important;
}
.scan-help b{
  display:block;
  min-width:0;
  white-space:normal!important;
  overflow-wrap:anywhere;
  line-height:1.3;
}
.scan-help span{
  display:block;
  min-width:0;
  max-width:100%;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:normal;
  line-height:1.45;
}

/* Menú principal: tres destinos directos y el resto agrupado por función. */
.top-nav{gap:10px}
.top-nav .nav-group[data-current-group="true"]>summary{
  color:var(--blue-deep);
  border-bottom-color:var(--blue-deep);
}
.top-nav .nav-account-group>.nav-dropdown{left:auto;right:0}
.top-nav .nav-dropdown .logout{margin:0;padding-top:5px}
.top-nav .nav-dropdown .logout button{border-radius:7px;background:#f4f8fb}
.top-nav .nav-dropdown .logout button:hover{background:#ebf1f8}

@media(max-width:1080px){
  .top-nav .nav-group,.top-nav .nav-account-group{width:100%;height:auto}
  .top-nav .nav-group>summary{display:flex;width:100%;min-height:44px;justify-content:space-between;padding:10px;border-bottom:1px solid #ebeef3;white-space:normal}
  .top-nav .nav-dropdown,.top-nav .nav-account-group>.nav-dropdown{position:static!important;left:auto!important;right:auto!important;width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;padding:4px 8px 7px!important;border:0!important;border-left:2px solid var(--border)!important;border-radius:0!important;box-shadow:none!important}
  .top-nav .nav-dropdown>a,.top-nav .nav-dropdown .logout button{white-space:normal!important}
}

/* =========================================================
   DPUNTO v38.2 · navegación de 4 bloques y espaciado global
   ========================================================= */
/* Cuatro opciones principales claramente separadas. */
.header-inner{gap:clamp(22px,3vw,44px)}
.top-nav{gap:clamp(22px,2.6vw,40px);margin-left:auto;padding-inline:8px}
.top-nav>a,.top-nav .nav-group>summary{
  min-height:48px!important;
  padding:0 10px!important;
  border-radius:9px 9px 0 0;
  line-height:1.15!important;
  letter-spacing:.005em;
}
.top-nav>a:hover,.top-nav .nav-group>summary:hover,
.top-nav>a[aria-current=page],.top-nav .nav-group>summary[aria-current=page]{background:#f4f8fb}
.top-nav .nav-group>.nav-dropdown{
  margin-top:10px!important;
  padding:10px!important;
  gap:6px!important;
  min-width:220px!important;
}
.top-nav .nav-dropdown>a,.top-nav .nav-dropdown .logout button{
  min-height:44px!important;
  padding:11px 14px!important;
  border-radius:8px!important;
  line-height:1.35!important;
}
.top-nav .nav-dropdown .logout{margin-top:4px!important;padding-top:8px!important}
.top-nav .nav-more-group>.nav-dropdown{left:auto!important;right:0!important}

/* Ritmo consistente para botones y grupos de acciones. */
.btn,button:not(.nav-toggle),input[type="submit"],input[type="button"]{
  min-height:42px;
  padding:10px 16px;
  line-height:1.25;
}
.actions,.form-actions,.filter-actions,.stage-actions,.modal-actions,.page-heading-actions,
.dashboard-quick-actions,.toolbar-actions,.bulk-actions,.table-actions,.card-actions{
  gap:10px!important;
  row-gap:10px!important;
}
.actions>* ,.form-actions>* ,.filter-actions>* ,.stage-actions>* ,.modal-actions>* ,.page-heading-actions>* ,
.dashboard-quick-actions>* ,.toolbar-actions>* ,.bulk-actions>* ,.table-actions>* ,.card-actions>*{
  margin:0!important;
}
.panel-box .btn+.btn,.create-card .btn+.btn,.stage-card .btn+.btn{margin-left:8px!important}

/* Contenido de tarjetas con respiración uniforme y alineación consistente. */
.kpi,.phase-card,.attention-card,.panel-box,.create-card,.stage-card,.recent-row{
  box-sizing:border-box;
}
.panel-box,.create-card,.stage-card{padding:clamp(20px,2vw,28px)!important}
.panel-box>*:first-child,.create-card>*:first-child,.stage-card>*:first-child{margin-top:0}
.panel-box>*:last-child,.create-card>*:last-child,.stage-card>*:last-child{margin-bottom:0}
.fields-grid,.info-grid,.excel-grid,.users-layout,.phase-grid,.attention-grid,.kpis{gap:clamp(12px,1.6vw,20px)!important}
label{line-height:1.35}
input,select,textarea{box-sizing:border-box;min-height:42px}
textarea{min-height:96px}

@media(max-width:1080px){
  .top-nav,.top-nav.open{padding:14px 18px!important;gap:8px!important}
  .top-nav>a,.top-nav .nav-group>summary{
    min-height:50px!important;
    padding:12px 14px!important;
    border:1px solid #e8ecf2!important;
    border-radius:10px!important;
    background:#ffffff;
  }
  .top-nav .nav-group{margin:0!important}
  .top-nav .nav-group>.nav-dropdown,.top-nav .nav-group[open]>.nav-dropdown{
    margin:6px 0 4px 14px!important;
    width:calc(100% - 14px)!important;
    padding:8px!important;
    border-left:2px solid #e0e6ed!important;
  }
}

@media(max-width:720px){
  .btn,button:not(.nav-toggle),input[type="submit"],input[type="button"]{min-height:44px;padding:11px 14px}
  .actions,.form-actions,.filter-actions,.stage-actions,.modal-actions,.page-heading-actions,
  .dashboard-quick-actions,.toolbar-actions,.bulk-actions,.table-actions,.card-actions{gap:9px!important}
  .panel-box,.create-card,.stage-card{padding:17px!important}
}

/* v38.3 · Nota secundaria del modal de descarga APK */
.app-modal-note{
  margin: 10px 0 0;
  font-size: .82rem;
  line-height: 1.45;
  color: var(--muted, #65717e);
  overflow-wrap: anywhere;
}


/* v38.4 · jerarquía de espaciado del Resumen
   Más aire entre conceptos distintos; compactación solo dentro de cada tarjeta. */
:root{--dashboard-section-gap:36px;--dashboard-card-gap:24px}
.dashboard-focus,.dashboard-recent{margin-top:var(--dashboard-section-gap)!important}
.dashboard-recent + .dashboard-info-grid{margin-top:var(--dashboard-section-gap)!important}
.dashboard-info-grid{
  gap:var(--dashboard-card-gap)!important;
  align-items:stretch!important;
}
.dashboard-info-grid>.panel-box{
  height:100%;
  padding:clamp(22px,2.2vw,30px)!important;
}
.dashboard-info-grid>.panel-box .eyebrow{margin-bottom:12px!important}
.dashboard-info-grid>.panel-box h3{margin:0 0 12px!important}
.dashboard-info-grid>.panel-box p{margin:0 0 16px!important;line-height:1.55}
.dashboard-info-grid>.panel-box .chip-row,
.dashboard-info-grid>.panel-box .text-link{margin-top:auto}

@media(max-width:820px){
  :root{--dashboard-section-gap:28px;--dashboard-card-gap:18px}
  .dashboard-info-grid{grid-template-columns:1fr!important}
}
@media(max-width:560px){
  :root{--dashboard-section-gap:24px;--dashboard-card-gap:16px}
  .dashboard-info-grid>.panel-box{padding:18px!important}
}

/* =========================================================
   DPUNTO v38.5 · CENTROS / CONTRASEÑA RESPONSIVE
   Acciones simétricas y controles sin saltos de composición.
   ========================================================= */
.site-action-cell{min-width:0}
.site-actions-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  width:100%;
  min-width:0;
  align-items:stretch;
}
.site-actions-grid>button,
.site-actions-grid>form{
  width:100%;
  min-width:0;
  margin:0!important;
}
.site-actions-grid>form>.mini-btn,
.site-actions-grid>button{
  width:100%!important;
  min-width:0!important;
  min-height:42px;
  height:100%;
  padding:9px 10px!important;
  white-space:normal!important;
  line-height:1.2!important;
}
.site-actions-grid>.site-action-note{
  grid-column:1/-1;
  display:block;
  padding:8px 10px;
  border-radius:10px;
  background:#f5f8fa;
  text-align:center;
}

.account-password-cell,.account-delete-cell{min-width:0}
.account-password-btn,.account-delete-btn{
  width:100%!important;
  min-width:0!important;
  min-height:42px;
  padding:9px 10px!important;
  white-space:normal!important;
  line-height:1.2!important;
}

@media(max-width:720px){
  .site-catalog-table .site-action-cell{
    display:block!important;
    padding-top:12px!important;
  }
  .site-catalog-table .site-actions-grid{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    gap:9px!important;
  }
  .site-catalog-table .site-actions-grid>form:last-of-type{
    grid-column:auto!important;
  }

  /* En cuentas, contraseña ocupa una banda propia y no compite con acceso/borrado. */
  .account-catalog-panel .account-password-cell{
    grid-column:1/-1!important;
    padding:12px 0!important;
    margin-top:2px;
    border-top:1px solid #eff1f4!important;
    border-bottom:1px solid #eff1f4!important;
  }
  .account-catalog-panel .account-password-cell::before{
    margin-bottom:7px!important;
  }
  .account-catalog-panel .account-password-btn{
    width:100%!important;
    min-height:44px!important;
  }
  .account-catalog-panel .account-delete-cell{
    padding-top:10px!important;
  }
}

@media(max-width:480px){
  .site-catalog-table .site-actions-grid{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  .site-catalog-table .site-actions-grid>form,
  .site-catalog-table .site-actions-grid>button{
    grid-column:1!important;
  }
  .site-catalog-table .site-actions-grid .mini-btn{
    min-height:44px!important;
  }
  .account-catalog-panel td:nth-child(4),
  .account-catalog-panel .account-delete-cell{
    grid-column:1/-1!important;
  }
  .account-catalog-panel .account-delete-cell{
    border-top:0!important;
  }
}

/* v38.6 · Cuentas de acceso: acciones consistentes y rol integrado */
.account-actions-cell{min-width:330px}
.account-actions-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  align-items:stretch;
}
.account-actions-grid>form,
.account-actions-grid>button{min-width:0;margin:0!important}
.account-actions-grid>form>.mini-btn,
.account-actions-grid>.mini-btn{
  width:100%!important;
  min-width:0!important;
  min-height:42px;
  height:100%;
  padding:9px 10px!important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  white-space:normal!important;
  line-height:1.2!important;
}
.role-summary{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0}
.role-summary small{color:var(--muted);font-size:.76rem;line-height:1.25}
.account-protection{display:inline-flex;align-items:center;min-height:28px;padding:5px 9px;border-radius:9px;background:#f4f7f9;color:#5c6672;font-size:.78rem;font-weight:700}

@media(max-width:720px){
  .account-catalog-panel table{min-width:0!important}
  .account-catalog-panel .account-actions-cell{
    grid-column:1/-1!important;
    min-width:0!important;
    padding-top:12px!important;
    margin-top:3px;
    border-top:1px solid #eaedf1!important;
  }
  .account-catalog-panel .account-actions-cell::before{margin-bottom:8px!important}
  .account-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .account-actions-grid>form:first-child{grid-column:1/-1}
  .account-actions-grid>form:first-child>.mini-btn{min-height:44px!important}
  .account-actions-grid>.account-password-btn,
  .account-actions-grid>.account-delete-btn{min-height:44px!important}
  .superadmin-row .role-summary{align-items:flex-end;text-align:right}
}
@media(max-width:480px){
  .account-actions-grid{grid-template-columns:1fr;gap:8px}
  .account-actions-grid>form:first-child{grid-column:1}
  .account-actions-grid .mini-btn{min-height:44px!important}
  .superadmin-row .role-summary{align-items:flex-start;text-align:left}
  .superadmin-row .permission-pill{max-width:100%;white-space:normal}
}

/* =========================================================
   DPUNTO v38.7 · iOS / PWA / escáner Safari
   Android conserva Google Code Scanner. PC conserva HID.
   ========================================================= */
.ios-install-banner{
  display:flex;align-items:center;gap:10px;width:max-content;max-width:100%;
  margin:-12px 0 20px auto;padding:9px 12px;border:1px solid #d6dee8;border-radius:12px;
  background:#f8fbfd;color:#2a3c51;font:inherit;text-align:left;cursor:pointer;
  box-shadow:0 4px 14px rgba(11,20,29,.035)
}
.ios-install-banner>span:first-child{
  display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:9px;
  background:#eef3f8;font-size:1.1rem;font-weight:800
}
.ios-install-banner>span:last-child{display:grid;gap:1px;min-width:0}
.ios-install-banner b{font-size:.78rem;line-height:1.15}
.ios-install-banner small{font-size:.7rem;color:#737d8a;line-height:1.2}
.ios-install-banner:hover{border-color:#b8c8da;background:#f4f7fb}

.ios-scanner-modal{padding:16px}
.ios-scanner-card{width:min(560px,100%);max-height:min(92dvh,820px);overflow:auto}
.ios-reader{
  width:100%;min-height:300px;margin:4px 0 12px;border:1px solid #dce2e8;border-radius:16px;
  overflow:hidden;background:#0b141d
}
.ios-reader video{width:100%!important;max-width:100%!important;height:auto!important;display:block}
.ios-reader img{max-width:100%!important}
.ios-reader #qr-shaded-region{border-width:24px!important}
.ios-scanner-status{
  margin:0 0 14px;padding:10px 12px;border-radius:11px;background:#f3f7f9;color:#4d5a69;
  font-size:.82rem;line-height:1.4;text-align:center
}
.ios-scanner-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ios-scanner-actions .btn{width:100%;margin:0!important}
.ios-install-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0}
.ios-install-steps span{padding:10px 8px;border:1px solid #e0e6ec;border-radius:11px;background:#f7fafc;text-align:center;font-size:.78rem;font-weight:700;color:#455465}

@media(max-width:620px){
  .ios-install-banner{margin:-6px 0 18px;width:100%;justify-content:flex-start}
  .ios-scanner-modal{padding:8px}
  .ios-scanner-card{width:100%;max-height:94dvh;padding:17px!important}
  .ios-reader{min-height:270px;border-radius:14px}
  .ios-scanner-actions{grid-template-columns:1fr}
  .ios-install-steps{grid-template-columns:1fr;gap:7px}
  .ios-install-steps span{text-align:left}
}


/* DPUNTO v38.8 · iOS scanner reliability */
.ios-scanner-actions{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.ios-scanner-actions .btn{min-height:44px;white-space:normal;line-height:1.2}
.ios-reader video{object-fit:cover;background:#0a1016}
@media(max-width:680px){.ios-scanner-actions{grid-template-columns:1fr;gap:9px}}

/* =========================================================
   DPUNTO v39.0 · Escáner iOS ZXing Browser
   ========================================================= */
.ios-reader{position:relative;overflow:hidden;background:#0a1016}
.ios-reader #dpunto-ios-video{width:100%!important;height:auto!important;min-height:300px;max-height:62dvh;display:block;object-fit:cover;background:#0a1016}
.ios-scan-guide{position:absolute;left:8%;right:8%;top:50%;height:min(32%,190px);transform:translateY(-50%);border:2px solid rgba(255,255,255,.9);border-radius:16px;box-shadow:0 0 0 999px rgba(0,0,0,.18),inset 0 0 0 1px rgba(0,0,0,.12);pointer-events:none}
.ios-scan-guide::before,.ios-scan-guide::after{content:"";position:absolute;left:8%;right:8%;height:2px;background:rgba(255,255,255,.7)}
.ios-scan-guide::before{top:32%}.ios-scan-guide::after{bottom:32%}
@media(max-width:640px){.ios-reader #dpunto-ios-video{min-height:280px;max-height:56dvh}.ios-scan-guide{left:6%;right:6%;height:min(30%,165px)}}

/* =========================================================
   DPUNTO v39.1 · Escáner iOS · Dark Professional UI
   ========================================================= */
.ios-scanner-modal{
  padding:0!important;
  background:rgba(0,0,0,.82)!important;
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px)
}
.ios-scanner-modal::backdrop{background:rgba(0,0,0,.82)}
.ios-scanner-card.ios-scanner-pro{
  width:min(520px,100vw)!important;
  height:min(880px,100dvh)!important;
  max-height:100dvh!important;
  padding:0!important;
  margin:auto!important;
  overflow:hidden!important;
  border:0!important;
  border-radius:28px!important;
  background:#0a0c0f!important;
  box-shadow:0 30px 90px rgba(0,0,0,.58)!important
}
.ios-scanner-stage{
  position:relative;
  width:100%;
  height:min(68dvh,610px);
  min-height:430px;
  overflow:hidden;
  background:#050709
}
.ios-scanner-stage #dpunto-ios-video{
  position:absolute;
  inset:0;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  object-fit:cover!important;
  background:#050709
}
.ios-scanner-shade{
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.58) 0%,rgba(0,0,0,.08) 24%,rgba(0,0,0,.04) 64%,rgba(0,0,0,.68) 100%)
}
.ios-scanner-topbar{
  position:absolute;
  z-index:4;
  top:0;
  left:0;
  right:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:max(22px,env(safe-area-inset-top)) 22px 16px;
  color:#ffffff
}
.ios-scanner-title{display:grid;gap:2px;text-shadow:0 2px 12px rgba(0,0,0,.5)}
.ios-scanner-title span{font-size:.64rem;font-weight:900;letter-spacing:.18em;color:rgba(255,255,255,.62)}
.ios-scanner-title strong{font-size:1.08rem;line-height:1.15;letter-spacing:-.01em;color:#ffffff}
.ios-scanner-close{
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  flex:0 0 42px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:999px;
  background:rgba(17,20,23,.62);
  color:#ffffff;
  font:300 1.7rem/1 system-ui,sans-serif;
  cursor:pointer;
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px)
}
.ios-scanner-pro .ios-scan-guide{
  position:absolute!important;
  z-index:3;
  left:50%!important;
  right:auto!important;
  top:50%!important;
  width:min(78%,360px)!important;
  height:min(29%,180px)!important;
  min-height:148px;
  transform:translate(-50%,-48%)!important;
  border:1px solid rgba(255,255,255,.22)!important;
  border-radius:24px!important;
  box-shadow:0 0 0 999px rgba(0,0,0,.16)!important;
  pointer-events:none
}
.ios-scanner-pro .ios-scan-guide::before,.ios-scanner-pro .ios-scan-guide::after{display:none!important}
.ios-scan-guide .corner{position:absolute;width:38px;height:38px;border-color:#ffffff;border-style:solid;filter:drop-shadow(0 0 8px rgba(255,255,255,.18))}
.ios-scan-guide .corner.tl{left:-2px;top:-2px;border-width:3px 0 0 3px;border-radius:24px 0 0 0}
.ios-scan-guide .corner.tr{right:-2px;top:-2px;border-width:3px 3px 0 0;border-radius:0 24px 0 0}
.ios-scan-guide .corner.bl{left:-2px;bottom:-2px;border-width:0 0 3px 3px;border-radius:0 0 0 24px}
.ios-scan-guide .corner.br{right:-2px;bottom:-2px;border-width:0 3px 3px 0;border-radius:0 0 24px 0}
.ios-scan-line{
  position:absolute;
  left:10%;
  right:10%;
  top:50%;
  height:2px;
  border-radius:99px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.95),transparent);
  box-shadow:0 0 12px rgba(255,255,255,.32);
  animation:dpunto-ios-scanline 2.2s ease-in-out infinite
}
@keyframes dpunto-ios-scanline{0%,100%{transform:translateY(-48px);opacity:.45}50%{transform:translateY(48px);opacity:1}}
.ios-scanner-hint{
  position:absolute;
  z-index:4;
  left:50%;
  bottom:24px;
  transform:translateX(-50%);
  width:max-content;
  max-width:88%;
  padding:9px 14px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  background:rgba(11,13,16,.58);
  color:rgba(255,255,255,.9);
  font-size:.76rem;
  font-weight:750;
  text-align:center;
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px)
}
.ios-scanner-bottomsheet{
  position:relative;
  z-index:5;
  padding:18px 20px max(20px,env(safe-area-inset-bottom));
  background:linear-gradient(180deg,#0e1115 0%,#0a0c0f 100%);
  border-top:1px solid rgba(255,255,255,.07)
}
.ios-scanner-pro .ios-scanner-status{
  margin:0 0 14px!important;
  min-height:42px;
  display:grid;
  place-items:center;
  padding:10px 14px!important;
  border:1px solid rgba(255,255,255,.08)!important;
  border-radius:13px!important;
  background:rgba(255,255,255,.045)!important;
  color:rgba(255,255,255,.82)!important;
  font-size:.78rem!important;
  font-weight:650;
  line-height:1.35!important
}
.ios-scanner-pro .ios-scanner-actions{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:10px!important;
  margin:0!important
}
.ios-scanner-action{
  min-height:56px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:15px;
  background:#171b20;
  color:#f5f7fa;
  font:inherit;
  cursor:pointer
}
.ios-scanner-action span{font-size:1.2rem;font-weight:400;line-height:1}
.ios-scanner-action b{font-size:.82rem}
.ios-scanner-action-primary{background:#f4f6f8;color:#0c0e11;border-color:#f4f6f8}
.ios-scanner-mini-note{margin:12px 0 0;text-align:center;color:rgba(255,255,255,.38);font-size:.67rem;letter-spacing:.01em}

@media(max-width:640px){
  .ios-scanner-card.ios-scanner-pro{
    width:100vw!important;
    height:100dvh!important;
    max-height:100dvh!important;
    border-radius:0!important
  }
  .ios-scanner-stage{height:70dvh;min-height:0}
  .ios-scanner-pro .ios-scan-guide{width:82%!important;height:170px!important;transform:translate(-50%,-42%)!important}
  .ios-scanner-topbar{padding-left:18px;padding-right:18px}
  .ios-scanner-bottomsheet{padding-left:16px;padding-right:16px}
}

@media(max-width:380px){
  .ios-scanner-pro .ios-scan-guide{height:150px!important}
  .ios-scanner-pro .ios-scanner-actions{grid-template-columns:1fr!important}
  .ios-scanner-stage{height:66dvh}
}


/* v41.22 · modales sin borde/sombra */
.app-modal-card{border:0!important;box-shadow:none!important;}


/* v41.23 · defensa global contra sombras de dialog */
html[data-theme="dark"] dialog.app-modal,
html[data-theme="dark"] dialog.app-modal .app-modal-card,
html[data-theme="dark"] dialog.management-modal .app-modal-card,
html[data-theme="dark"] dialog.app-confirm-modal .app-modal-card,
html[data-theme="dark"] dialog.ios-scanner-modal .app-modal-card{
  box-shadow:none!important;
  filter:none!important;
}

/* v41.24 · borde modal base */
.app-modal-card{border:1px solid #dae0e7!important;box-shadow:none!important;}
html[data-theme="dark"] .app-modal-card{border-color:#394859!important;box-shadow:none!important;}


/* v41.27 · más espaciado en acciones de cabecera de la ficha */
.page-heading-actions{gap:16px!important;margin-top:10px!important}.page-heading-actions .btn{padding-left:20px!important;padding-right:20px!important}.inline-heading-form{display:inline-flex!important;margin:0!important}@media(max-width:900px){.page-heading-actions{gap:12px!important;margin-top:14px!important}}
