/* Controles propios · compartido por la web, el panel y el TPV.
   Sustituye los controles por defecto del navegador. Lee los colores de cada sección y, si no existen, usa los de la marca. */
:root{
  --u-accent:var(--clay,#a8452a); --u-accent-d:var(--clay-d,#8a3720); --u-ink:var(--ink,#241b16); --u-muted:var(--muted,#6c5e53);
  --u-line:#cdbfa9; --u-soft:var(--cream,#fbf6ee); --u-sand:var(--sand,#eadfcf); --u-bad:var(--bad,var(--danger,#b3261e)); --u-ok:var(--ok,var(--go,#2f6b3a));
  --u-r:11px; --u-ring:0 0 0 4px rgba(168,69,42,.16);
}
body.ui-lock{overflow:hidden}
::selection{background:rgba(217,164,65,.45)}

/* barras de desplazamiento discretas */
*{scrollbar-width:thin;scrollbar-color:#cdbfa9 transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#cdbfa9;border-radius:99px;border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:#b3a38b;background-clip:content-box;border:2px solid transparent}

/* campos de texto */
:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([type=hidden]):not([type=submit]):not([type=button]),textarea){
  -webkit-appearance:none;appearance:none;border:1.5px solid var(--u-line);border-radius:var(--u-r);background:#fff;color:var(--u-ink);font:inherit;
  transition:border-color .15s,box-shadow .15s,background .15s}
:where(input,textarea):focus{outline:none;border-color:var(--u-accent);box-shadow:var(--u-ring)}
:where(input,textarea)::placeholder{color:#9b8d7c}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
input[type=date],input[type=time],input[type=month],input[type=datetime-local]{min-height:42px}
input::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer;filter:sepia(.4) saturate(2) hue-rotate(-12deg)}
input::-webkit-calendar-picker-indicator:hover{opacity:1}
input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}
textarea{resize:vertical;line-height:1.45}
input:disabled,textarea:disabled{background:#f4eee2;color:#9b8d7c;cursor:not-allowed}
input:-webkit-autofill{-webkit-box-shadow:0 0 0 40px #fff inset;-webkit-text-fill-color:var(--u-ink)}

/* casillas y radios */
:where(input[type=checkbox],input[type=radio]){
  -webkit-appearance:none;appearance:none;flex:none;display:inline-grid;place-content:center;width:20px;height:20px;margin:0;
  border:1.5px solid var(--u-line);background:#fff;cursor:pointer;vertical-align:-5px;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;padding:0}
:where(input[type=checkbox]){border-radius:6px}
:where(input[type=radio]){border-radius:50%}
:where(input[type=checkbox])::after{content:"";width:10px;height:6px;border-left:2.5px solid #fff;border-bottom:2.5px solid #fff;transform:rotate(-48deg) scale(0);margin-top:-2px;transition:transform .15s}
:where(input[type=radio])::after{content:"";width:8px;height:8px;border-radius:50%;background:#fff;transform:scale(0);transition:transform .15s}
:where(input[type=checkbox]:checked,input[type=radio]:checked){background:var(--u-accent);border-color:var(--u-accent)}
:where(input[type=checkbox]:checked)::after{transform:rotate(-48deg) scale(1)}
:where(input[type=radio]:checked)::after{transform:scale(1)}
:where(input[type=checkbox]:indeterminate){background:var(--u-accent);border-color:var(--u-accent)}
:where(input[type=checkbox]:indeterminate)::after{width:10px;height:0;border-left:0;border-bottom:2.5px solid #fff;transform:none;margin:0}
:where(input[type=checkbox],input[type=radio]):hover{border-color:var(--u-accent)}
:where(input[type=checkbox],input[type=radio]):focus-visible{outline:none;box-shadow:var(--u-ring);border-color:var(--u-accent)}
:where(input[type=checkbox],input[type=radio]):disabled{opacity:.45;cursor:not-allowed}
input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}
.chk input,.form .chk input,.opt input,.vtable input[type=checkbox],.vtable input[type=radio],.autoprint input{width:20px!important;height:20px!important;padding:0}
input[type=range]{accent-color:var(--u-accent)}

/* desplegables */
.ui-select{position:relative;display:inline-block;max-width:100%;min-width:0;vertical-align:middle}
.ui-select .ui-native{position:absolute!important;left:0;bottom:0;width:100%!important;height:1px!important;opacity:0;pointer-events:none;padding:0!important;border:0!important;margin:0!important}
.ui-select-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:42px;padding:8px 10px 8px 13px;font:inherit;font-weight:400;text-align:left;color:var(--u-ink);
  background:#fff;border:1.5px solid var(--u-line);border-radius:var(--u-r);cursor:pointer;transition:border-color .15s,box-shadow .15s}
.ui-select-btn:hover{border-color:#a99a82}
.ui-select-btn:focus-visible,.ui-select.is-open .ui-select-btn{outline:none;border-color:var(--u-accent);box-shadow:var(--u-ring)}
.ui-select-txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.ui-select.is-empty .ui-select-txt{color:#9b8d7c}
.ui-select-chev{display:grid;color:var(--u-muted);transition:transform .2s}
.ui-select.is-open .ui-select-chev{transform:rotate(180deg);color:var(--u-accent)}
.ui-select.is-disabled .ui-select-btn{background:#f4eee2;color:#9b8d7c;cursor:not-allowed}
.ui-select.is-invalid .ui-select-btn{border-color:var(--u-bad)}
.vtable .ui-select-btn,.filters .ui-select-btn,.pfilter .ui-select-btn{min-height:38px;padding:6px 8px 6px 10px}
.ui-select-panel{position:fixed;z-index:200;max-width:calc(100vw - 16px);display:flex;flex-direction:column;background:#fff;border:1px solid #e0d4c0;border-radius:14px;
  box-shadow:0 4px 8px rgba(36,27,22,.06),0 20px 50px rgba(36,27,22,.22);opacity:0;transform:translateY(-6px) scale(.98);transform-origin:top;transition:opacity .14s,transform .18s cubic-bezier(.2,.7,.2,1);overflow:hidden}
.ui-select-panel.show{opacity:1;transform:none}
.ui-select-list{overflow:auto;padding:6px;overscroll-behavior:contain}
.ui-select-search{margin:8px 8px 2px;width:calc(100% - 16px);padding:9px 12px;font-size:.92rem}
.ui-opt{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:9px;cursor:pointer;color:var(--u-ink);font-size:.97rem;outline:none}
.ui-opt svg{color:var(--u-accent);flex:none}
.ui-opt.is-active,.ui-opt:focus{background:var(--u-soft)}
.ui-opt.is-sel{font-weight:700;color:var(--u-accent-d)}
.ui-opt.is-disabled{opacity:.4;cursor:not-allowed}
.ui-optgroup{padding:10px 12px 4px;font:700 .7rem system-ui,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--u-muted)}
.ui-backdrop{position:fixed;inset:0;background:rgba(36,27,22,.5);z-index:190;animation:uifade .2s}
.ui-select-panel.sheet{left:0!important;right:0;bottom:0!important;top:auto!important;width:100%;max-width:none;min-width:0!important;max-height:72vh!important;border-radius:20px 20px 0 0;transform:translateY(100%);transition:transform .28s cubic-bezier(.2,.7,.2,1);padding-bottom:env(safe-area-inset-bottom)}
.ui-select-panel.sheet.show{transform:none}
.ui-select-panel.sheet .ui-opt{padding:14px 14px;font-size:1.02rem}
@keyframes uifade{from{opacity:0}}

/* campo de archivo */
.ui-file{display:flex;align-items:center;gap:10px;min-width:0}
.ui-file .ui-native{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ui-file-name{color:var(--u-muted);font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ui-file.has-file .ui-file-name{color:var(--u-ink);font-weight:600}

/* botones genéricos del sistema */
.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;min-height:42px;border-radius:99px;border:1.5px solid var(--u-line);background:#fff;color:var(--u-ink);font:600 .93rem system-ui,sans-serif;cursor:pointer;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s}
.ui-btn:hover{border-color:var(--u-ink)}
.ui-btn:active{transform:scale(.97)}
.ui-btn:focus-visible{outline:none;box-shadow:var(--u-ring)}
.ui-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.ui-btn-primary{background:var(--u-accent);border-color:var(--u-accent);color:#fff}
.ui-btn-primary:hover{background:var(--u-accent-d);border-color:var(--u-accent-d)}
.ui-btn-danger{background:var(--u-bad);border-color:var(--u-bad);color:#fff}
.ui-btn-danger:hover{filter:brightness(.92);border-color:var(--u-bad)}

/* + / − */
.ui-stepper{display:inline-flex;align-items:stretch;border:1.5px solid var(--u-line);border-radius:var(--u-r);background:#fff;overflow:hidden}
.ui-stepper input{border:0!important;border-radius:0!important;width:56px!important;text-align:center;padding:10px 0!important;box-shadow:none!important;min-width:0}
.ui-step{width:40px;border:0;background:var(--u-soft);color:var(--u-ink);font:600 1.2rem system-ui;cursor:pointer;transition:background .15s}
.ui-step:hover{background:var(--u-sand)}
.ui-step:active{background:#e0d2bb}

/* diálogos */
.ui-overlay{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:16px;background:rgba(36,27,22,0);transition:background .18s}
.ui-overlay.show{background:rgba(36,27,22,.55)}
.ui-modal{width:min(440px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:20px;padding:24px;box-shadow:0 30px 80px rgba(0,0,0,.35);transform:translateY(14px) scale(.97);opacity:0;transition:transform .22s cubic-bezier(.2,.7,.2,1),opacity .18s;color:var(--u-ink);font:15px/1.5 system-ui,sans-serif}
.ui-overlay.show .ui-modal{transform:none;opacity:1}
.ui-modal-title{margin:0 0 8px;font:700 1.35rem Georgia,"Iowan Old Style",serif}
.ui-modal-text{margin:0 0 16px;color:var(--u-muted)}
.ui-field{display:block;margin:0 0 12px;font-weight:600;font-size:.88rem}
.ui-field .ui-input{display:block;width:100%;margin-top:5px;padding:11px 13px;border:1.5px solid var(--u-line);border-radius:var(--u-r);font:inherit;font-weight:400}
.ui-modal-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}
@media (max-width:560px){
  .ui-overlay{align-items:end;padding:0}
  .ui-modal{width:100%;border-radius:22px 22px 0 0;padding:22px 18px calc(18px + env(safe-area-inset-bottom));transform:translateY(100%)}
  .ui-modal-btns .ui-btn{flex:1}
}

/* tablas anchas */
.tablewrap-auto{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px}

/* biblioteca de archivos */
.media-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.dropzone{display:grid;justify-items:center;gap:4px;text-align:center;padding:30px 18px;border:2px dashed #cdbfa9;border-radius:16px;background:#fffdf9;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.dropzone svg{width:34px;height:34px;color:var(--u-accent);margin-bottom:4px}
.dropzone:hover,.dropzone.over,.dropzone:focus-visible{border-color:var(--u-accent);background:#fdf3ee;outline:none}
.dropzone.over{transform:scale(1.01)}
.uplist{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}
.up-item{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(60px,1fr) minmax(90px,auto);gap:10px;align-items:center;padding:8px 12px;border-radius:10px;background:var(--u-soft);font-size:.88rem}
.up-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up-bar{height:6px;border-radius:99px;background:#e6dbc8;overflow:hidden}
.up-bar i{display:block;height:100%;width:0;background:var(--u-accent);transition:width .2s}
.up-item.ok .up-bar i{background:var(--u-ok)}
.up-item.bad{background:#fdecea}.up-item.bad .up-bar{display:none}
.up-item.bad .up-state,.up-err{color:var(--u-bad);font-weight:600}
.up-item.bad{grid-template-columns:minmax(0,1fr);}
.up-state{text-align:right;color:var(--u-muted)}
.mgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.mcard{background:#fff;border:1px solid #e5dccd;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s,transform .2s}
.mcard:hover{box-shadow:0 10px 30px rgba(36,27,22,.12);transform:translateY(-2px)}
.mimg{display:block;aspect-ratio:1;background:#f3ead9}
.mimg img{width:100%;height:100%;object-fit:cover}
.mbody{padding:10px 12px 12px;display:grid;gap:6px}
.mname{margin:0;font-weight:600;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msize{margin:0;font-size:.76rem}
.uses{margin:0;display:flex;gap:4px;flex-wrap:wrap;min-height:4px}
.malt{width:100%;padding:7px 10px;font-size:.82rem}
.malt.saved{border-color:var(--u-ok);box-shadow:0 0 0 3px rgba(47,107,58,.15)}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.slot{display:flex;gap:14px;align-items:center;padding:12px;border:1px solid #e5dccd;border-radius:14px;background:#fffdf9}
.slot-prev{width:84px;height:84px;border-radius:12px;background:#f3ead9;display:grid;place-items:center;overflow:hidden;flex:none;color:#b3a38b}
.slot-prev img{width:100%;height:100%;object-fit:cover}
.slot-prev svg{width:30px;height:30px}
.slot-body{display:grid;gap:4px;min-width:0}
.slot-body small{line-height:1.3}
.slot-btns{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.picker{width:min(760px,100%)}
.picker-up{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;max-height:46vh;overflow:auto;padding:2px;margin-top:10px}
.pg-item{position:relative;aspect-ratio:1;padding:0;border:2.5px solid transparent;border-radius:12px;overflow:hidden;background:#f3ead9;cursor:pointer;transition:border-color .12s,transform .12s}
.pg-item img{width:100%;height:100%;object-fit:cover;display:block}
.pg-item:hover{transform:scale(1.03)}
.pg-item.sel{border-color:var(--u-accent)}
.pg-check{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;background:var(--u-accent);color:#fff;display:grid;place-items:center;font-size:.8rem;font-weight:800;transform:scale(0);transition:transform .15s}
.pg-item.sel .pg-check{transform:scale(1)}
.picked{margin-top:12px}
.picked-note{margin:8px 0 0;font-size:.85rem}
@media (max-width:640px){.mgrid{grid-template-columns:repeat(2,1fr);gap:10px}.slots{grid-template-columns:1fr}.up-item{grid-template-columns:1fr}.up-state{text-align:left}.picker-grid{grid-template-columns:repeat(3,1fr)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}
