:root {
  --blue: #003d7a;
  --blue-dk: #002855;
  --blue-lt: #1565c0;
  --green: #16a34a;
  --red: #dc2626;
  --warn: #b85a00;
  --g50: #fafafa;
  --g100: #f4f4f5;
  --g200: #e4e4e7;
  --g300: #d4d4d8;
  --g400: #a1a1aa;
  --g500: #71717a;
  --g600: #52525b;
  --g700: #3f3f46;
  --g800: #27272a;
  --text: #18181b;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:13px;line-height:1.4;color:var(--text);background:#fff;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}

.topbar{background:var(--blue-dk);color:#fff;padding:0 16px;height:40px;display:flex;align-items:center;position:sticky;top:0;z-index:100}
.topbar-inner{width:100%;max-width:1440px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}
.brand{display:flex;align-items:baseline;gap:10px}
.brand h1{font-size:12px;font-weight:700;letter-spacing:1px}
.brand-sub{font-size:11px;opacity:.6}
.topbar-right{display:flex;align-items:center;gap:10px}
.user-name{font-size:11px;opacity:.8}
.btn-logout{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3);padding:3px 10px;font-size:11px;cursor:pointer;font-weight:600}
.btn-logout:hover{background:var(--red);border-color:var(--red)}

.login-wrap{display:flex;justify-content:center;padding:48px 16px}
.login-box{background:#fff;border:1px solid var(--g200);padding:28px 24px;width:100%;max-width:380px}
.login-box h2{font-size:14px;color:var(--blue-dk);margin-bottom:4px}
.hint{color:var(--g400);font-size:11px;margin-bottom:14px}
.field{margin-bottom:10px;display:flex;flex-direction:column;position:relative}
label{font-size:11px;font-weight:600;margin-bottom:3px;color:var(--g600)}
input[type=text],input[type=email],input[type=password],input[type=number]{width:100%;padding:6px 8px;font-size:13px;border:1px solid var(--g300);background:#fff;color:var(--text);font-family:inherit}
input:focus{outline:none;border-color:var(--blue)}
.err{color:var(--warn);font-size:11px;min-height:1em;margin:2px 0 4px}
.btn-primary{width:100%;background:var(--blue);color:#fff;border:none;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer}
.btn-primary:hover:not(:disabled){background:var(--blue-lt)}
.btn-primary:disabled{background:var(--g400);cursor:not-allowed}
.captcha-field{background:var(--g50);padding:10px;border:1px dashed var(--g300)}
.captcha-q{font-family:monospace;font-size:13px;font-weight:700;color:var(--blue);background:#fff;padding:1px 6px}
.captcha-field input{max-width:100px}
.captcha-reload{position:absolute;right:8px;top:30px;background:none;border:none;font-size:14px;cursor:pointer;color:var(--blue);padding:2px 6px}
.login-footer{margin-top:16px;padding-top:12px;border-top:1px solid var(--g200);text-align:center}
.login-footer p{margin:3px 0;font-size:11px;color:var(--g500)}
.tiny{font-size:10px;color:var(--g400)}

.dashboard{max-width:1440px;margin:0 auto;padding:8px 16px 24px;width:100%}
.info-bar{display:flex;gap:14px;flex-wrap:wrap;align-items:center;padding:6px 10px;border-bottom:1px solid var(--g200);margin-bottom:8px;font-size:11px;color:var(--g500)}
.info-bar strong{color:var(--g700)}
.badge{color:var(--green);font-size:11px;font-weight:700;text-transform:uppercase}

.portal-tabs{display:flex;gap:0;border-bottom:2px solid var(--g200);margin-bottom:0}
.portal-tab{padding:7px 16px;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;font-size:12px;color:var(--g400);font-weight:500;white-space:nowrap}
.portal-tab:hover{color:var(--blue)}
.portal-tab.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:700}
.cart-count{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;background:var(--red);color:#fff;border-radius:8px;font-size:10px;font-weight:700;margin-left:4px;padding:0 4px}
.cart-count.empty{background:var(--g300)}

.portal-section{padding:12px 0;min-height:200px}

.cat-toolbar{display:flex;gap:12px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.search-input{flex:1;min-width:180px;max-width:360px;padding:5px 8px;border:1px solid var(--g300);font-size:12px;background:var(--g50)}
.search-input:focus{outline:none;border-color:var(--blue);background:#fff}
.cat-info{font-size:11px;color:var(--g400);white-space:nowrap}

.familia-filters{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.fam-btn{padding:3px 8px;border:none;background:none;color:var(--g500);font-size:11px;cursor:pointer;border-bottom:2px solid transparent}
.fam-btn:hover{color:var(--blue)}
.fam-btn.active{color:var(--blue);font-weight:700;border-bottom-color:var(--blue)}

.table-wrap{overflow-x:auto}
.cat-table{width:100%;border-collapse:collapse;font-size:12px}
.cat-table th{padding:5px 8px;text-align:left;font-weight:600;color:var(--g500);border-bottom:1px solid var(--g200);font-size:10px;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;background:#fff}
.cat-table td{padding:4px 8px;vertical-align:middle}
.cat-table tbody tr:hover{background:var(--g50)}
.cat-table tbody tr.in-cart{background:#f0fdf4}
.cat-table tbody tr.in-cart:hover{background:#dcfce7}
.col-check{width:32px;text-align:center}
.col-code{width:110px}
.col-name{min-width:180px}
.col-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.col-qty{width:64px;text-align:center}
.col-sub{width:100px}
.col-caja{width:60px;text-align:center;font-size:11px;color:var(--g500)}
.col-iva{width:44px;text-align:right;font-size:11px;color:var(--g500)}
.col-act{width:32px;text-align:center}
.mono{font-family:monospace;font-size:11px;color:var(--g500)}
.pvp-price{color:var(--g500)}
.may-price{color:var(--blue);font-weight:700}

.qty-input{width:48px;padding:3px 2px;text-align:center;border:1px solid var(--g300);font-size:12px;font-family:inherit;background:#fff}
.qty-input:focus{outline:none;border-color:var(--blue)}
.qty-input.has-value{border-color:var(--green);background:#f0fdf4;font-weight:600}

.btn-cart{width:24px;height:24px;border:none;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;justify-content:center;background:var(--blue);color:#fff}
.btn-cart:hover{background:var(--green)}
.btn-cart.added{background:var(--green)}
.btn-remove{background:var(--g200);color:var(--g600);font-size:12px}
.btn-remove:hover{background:var(--red);color:#fff}
.subtotal-cell{color:var(--green);font-weight:600}
.subtotal-cell.empty{color:var(--g300)}

.pagination{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:8px;padding-top:8px;border-top:1px solid var(--g100)}
.pg-btn{padding:4px 12px;background:var(--blue);color:#fff;border:none;cursor:pointer;font-size:11px}
.pg-btn:hover{background:var(--blue-lt)}
.pg-info{font-size:11px;color:var(--g400)}

.pedido-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.pedido-header h3{font-size:14px;color:var(--blue-dk)}
.btn-clear-cart{background:none;border:1px solid var(--g300);color:var(--g500);padding:3px 10px;font-size:11px;cursor:pointer}
.btn-clear-cart:hover{border-color:var(--red);color:var(--red)}
.pedido-total-label{text-align:right;font-weight:700;font-size:13px;color:var(--g800);padding:10px 8px}
.pedido-total-value{text-align:right;font-weight:800;font-size:14px;color:var(--blue);padding:10px 8px}
.pedido-empty{text-align:center;padding:30px 16px;color:var(--g400);font-size:12px}
.pedido-actions{margin-top:14px;text-align:right}
.pedido-note{font-size:11px;color:var(--g400);margin-bottom:8px}
.btn-confirm-order{width:auto;padding:8px 32px;font-size:13px;background:var(--green)}
.btn-confirm-order:hover:not(:disabled){background:#15803d}

.saldo-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding:10px 12px;border:1px solid var(--g200)}
.saldo-big{display:flex;flex-direction:column}
.saldo-label{font-size:11px;color:var(--g400)}
.saldo-amount{font-size:20px;font-weight:800;color:var(--blue)}
.saldo-estado{font-size:12px;font-weight:700}

.must-change-password{background:#fffbeb;border:1px solid #f59e0b;padding:14px;max-width:380px}
.must-change-password h3{color:var(--warn);font-size:13px;margin-bottom:4px}
.must-change-password p{font-size:12px;margin-bottom:10px}

.float-cart{position:fixed;bottom:16px;right:16px;z-index:200}
.float-cart-btn{width:44px;height:44px;border-radius:50%;background:var(--blue);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;position:relative}
.float-cart-btn:hover{background:var(--green)}
.float-cart-count{position:absolute;top:-3px;right:-3px;background:var(--red);color:#fff;border-radius:8px;min-width:16px;height:16px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px}

footer{background:var(--blue-dk);color:rgba(255,255,255,.7);padding:8px 16px;font-size:10px;text-align:center}
footer a{color:#fff}
footer strong{color:#fff}

.hidden{display:none!important}

@media(max-width:768px){
  .topbar{padding:0 8px;height:36px}
  .brand h1{font-size:11px}
  .brand-sub{display:none}
  .dashboard{padding:6px 8px 16px}
  .portal-tab{padding:6px 10px;font-size:11px}
  .cat-toolbar{flex-direction:column;align-items:stretch}
  .search-input{max-width:100%}
  .info-bar{flex-direction:column;gap:2px;padding:6px 8px;font-size:10px}
  .saldo-header{flex-direction:column;gap:6px;text-align:center}
  .saldo-amount{font-size:16px}
  .cat-table th,.cat-table td{padding:3px 4px;font-size:11px}
  .qty-input{width:40px;font-size:11px}
  .btn-confirm-order{width:100%}
  .pedido-actions{text-align:center}
}

.fam-group-row{display:flex;flex-wrap:wrap;gap:2px;align-items:center;padding:1px 0}
.fam-group-label{font-weight:700;color:var(--blue-dk);font-size:11px;padding:3px 8px;border-bottom:2px solid transparent;background:none;border-top:none;border-left:none;border-right:none;cursor:pointer}
.fam-group-label:hover{color:var(--blue-lt)}
.fam-group-label.active{color:var(--blue-dk);border-bottom-color:var(--blue-dk)}
.total-neto-row td{border-top:1px solid var(--g200);padding:5px 8px;font-size:12px}
.neto-val{color:var(--g600)}
.iva-row td{padding:4px 8px;font-size:11px}
.iva-label{color:var(--g500);font-weight:500}
.iva-val{color:var(--g500)}
.total-grand-row td{border-top:2px solid var(--g300);padding:8px 8px}
.grand-label{color:var(--blue-dk);font-size:14px}
.pedido-tax-note{font-size:10px;color:var(--g400);margin-bottom:8px;text-align:right;font-style:italic}

.prod-link{color:var(--text);text-decoration:none}
.prod-link:hover{color:var(--blue)}
.prod-ext{font-size:9px;color:var(--g400);vertical-align:super}
.prod-detalle{font-size:.72rem;color:var(--g400);margin-top:3px;line-height:1.4;font-weight:400;letter-spacing:0}
.badge-promo{display:inline-block;background:#f59e0b;color:#fff;font-size:9px;font-weight:700;padding:1px 5px;letter-spacing:.3px;vertical-align:middle;margin-left:4px}

.badge-muestra{display:inline-block;background:#6b7280;color:#fff;font-size:9px;font-weight:700;padding:1px 5px;letter-spacing:.3px;vertical-align:middle;margin-left:4px}
.row-muestra{background:#f9fafb;opacity:.85}
.row-muestra:hover{background:#f3f4f6}
.muestra-icon{color:#9ca3af;font-size:10px;cursor:default}
.nd{color:var(--g300);font-style:normal}
@media(max-width:480px){
  .col-code{display:none}
  .captcha-reload{top:48px;right:4px}
  input[type=text],input[type=email],input[type=password],input[type=number]{font-size:16px}
}

/* Mi Cuenta */
.cuenta-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px 24px;margin-bottom:16px;max-width:580px}
.cuenta-card-title{font-size:.93rem;font-weight:700;color:var(--blue-dk);margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid var(--border)}
.cuenta-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 32px;margin-bottom:16px}
.cuenta-field{display:flex;flex-direction:column;gap:3px}
.cf-label{font-size:.7rem;color:var(--g300);text-transform:uppercase;letter-spacing:.05em;font-weight:600}
.cf-value{font-size:.88rem;color:var(--text);font-weight:500;word-break:break-word}
.must-change-alert{background:#fef3c7;border:1px solid #f59e0b;border-radius:6px;padding:9px 13px;margin-bottom:14px;font-size:.82rem;color:#92400e;font-weight:500}
.hint-contact{font-size:.78rem;color:var(--g300);margin-top:4px}
.hint-contact a{color:var(--blue);text-decoration:none}
.hint-contact a:hover{text-decoration:underline}
@media(max-width:500px){.cuenta-fields{grid-template-columns:1fr}}