:root{--brand-50: #eef2ff;--brand-100: #e0e7ff;--brand-200: #c7d2fe;--brand-300: #a5b4fc;--brand-400: #818cf8;--brand-500: #6366f1;--brand-600: #4f46e5;--brand-700: #4338ca;--brand-800: #3730a3;--brand-900: #312e81;--slate-50: #f8fafc;--slate-100: #f1f5f9;--slate-200: #e2e8f0;--slate-300: #cbd5e1;--slate-400: #94a3b8;--slate-500: #64748b;--slate-600: #475569;--slate-700: #334155;--slate-800: #1e293b;--slate-900: #0f172a;--slate-950: #020617;--bg: var(--slate-50);--bg-subtle: var(--slate-100);--surface: #ffffff;--surface-2: var(--slate-50);--border: var(--slate-200);--border-strong: var(--slate-300);--text: var(--slate-900);--text-soft: var(--slate-700);--muted: var(--slate-500);--primary: var(--brand-600);--primary-hover: var(--brand-700);--primary-soft: var(--brand-50);--ring: rgba(99, 102, 241, .35);--warn-bg: #fef3c7;--warn-text: #92400e;--warn-border: #fde68a;--danger-bg: #fee2e2;--danger-text: #991b1b;--danger-border: #fecaca;--success-bg: #dcfce7;--success-text: #15803d;--success-border: #bbf7d0;--entry: #2563eb;--entry-bg: #dbeafe;--exit: #dc2626;--exit-bg: #fee2e2;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-full: 9999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .04);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08), 0 2px 4px rgba(15, 23, 42, .04);--shadow-lg: 0 12px 28px rgba(15, 23, 42, .12), 0 4px 8px rgba(15, 23, 42, .06);--shadow-focus: 0 0 0 3px var(--ring);--ease: cubic-bezier(.4, 0, .2, 1);--t-fast: .12s;--t-base: .18s;--t-slow: .28s;--header-h: 60px;--container: 1400px}@media (prefers-color-scheme: dark){:root{--bg: var(--slate-950);--bg-subtle: var(--slate-900);--surface: #0b1220;--surface-2: #0f172a;--border: #1f2a3d;--border-strong: #2c3a53;--text: #e2e8f0;--text-soft: #cbd5e1;--muted: #94a3b8;--primary: var(--brand-500);--primary-hover: var(--brand-400);--primary-soft: rgba(99, 102, 241, .15);--ring: rgba(129, 140, 248, .4);--warn-bg: rgba(251, 191, 36, .12);--warn-text: #fbbf24;--warn-border: rgba(251, 191, 36, .3);--danger-bg: rgba(248, 113, 113, .12);--danger-text: #fca5a5;--danger-border: rgba(248, 113, 113, .3);--success-bg: rgba(74, 222, 128, .12);--success-text: #86efac;--success-border: rgba(74, 222, 128, .3);--entry: #60a5fa;--entry-bg: rgba(96, 165, 250, .15);--exit: #f87171;--exit-bg: rgba(248, 113, 113, .15);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4), 0 2px 4px rgba(0, 0, 0, .3);--shadow-lg: 0 12px 28px rgba(0, 0, 0, .5), 0 4px 8px rgba(0, 0, 0, .3)}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html,body{overflow-x:hidden;max-width:100vw}html{-webkit-text-size-adjust:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-weight:600;letter-spacing:-.01em}button{font-family:inherit}input,select,textarea{font-family:inherit;color:var(--text)}::selection{background:var(--brand-200);color:var(--brand-900)}@media (prefers-color-scheme: dark){::selection{background:var(--brand-700);color:var(--brand-50)}}.login-screen{min-height:100vh;display:grid;place-items:center;padding:1rem;background:radial-gradient(1200px 600px at 10% -10%,rgba(99,102,241,.14),transparent 60%),radial-gradient(900px 500px at 110% 110%,rgba(56,189,248,.12),transparent 55%),var(--bg);position:relative;overflow:hidden}.login-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:48px 48px;opacity:.4;mask-image:radial-gradient(ellipse at center,black 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at center,black 30%,transparent 75%);pointer-events:none}.login-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:2.5rem 2rem;width:100%;max-width:400px;box-shadow:var(--shadow-lg);animation:fadeInUp .5s var(--ease)}.login-brand{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:var(--r-lg);background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;margin:0 auto 1.25rem;box-shadow:0 8px 20px #6366f140}.login-card h1{margin:0 0 .35rem;font-size:1.5rem;text-align:center;letter-spacing:-.02em}.login-card .subtitle{text-align:center;color:var(--muted);margin:0 0 1.75rem;font-size:.9rem}.login-google{display:flex;justify-content:center;margin-top:.25rem}.login-footer{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--border);text-align:center;font-size:.75rem;color:var(--muted)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--surface) 85%,transparent);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border);padding:0 1.5rem;height:var(--header-h);display:flex;align-items:center;gap:1.5rem}.brand{display:flex;align-items:center;gap:.625rem;font-weight:600;font-size:.95rem;letter-spacing:-.01em;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-md);background:linear-gradient(135deg,var(--brand-500),var(--brand-700));color:#fff;flex-shrink:0}.brand-sub{color:var(--muted);font-weight:400;font-size:.8rem}.nav{display:flex;gap:.125rem;flex:1;flex-wrap:nowrap;align-items:center;min-width:0}.nav a{display:inline-flex;align-items:center;gap:.35rem;text-decoration:none;color:var(--muted);padding:.4rem .6rem;border-radius:var(--r-md);font-weight:500;font-size:.85rem;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}@media (max-width: 1280px){.nav{gap:0}.nav a{padding:.4rem .5rem;font-size:.82rem;gap:.3rem}}.nav a svg{opacity:.85}.nav a:hover{background:var(--bg-subtle);color:var(--text)}.nav a.active{background:var(--primary-soft);color:var(--primary)}.nav a.active svg{opacity:1}.user-box{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.user-avatar{width:32px;height:32px;border-radius:var(--r-full);background:linear-gradient(135deg,var(--brand-400),var(--brand-600));color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;letter-spacing:.02em;flex-shrink:0;box-shadow:var(--shadow-xs)}.user-meta{display:flex;flex-direction:column;line-height:1.15}.user-meta strong{font-size:.82rem;color:var(--text);font-weight:600}.user-meta .role{font-size:.7rem;color:var(--muted);text-transform:capitalize}.user-logout{background:none;border:1px solid transparent;color:var(--muted);border-radius:var(--r-md);padding:.35rem .5rem;cursor:pointer;font-size:.8rem;transition:all var(--t-fast) var(--ease);display:inline-flex;align-items:center;gap:.3rem}.user-logout:hover{background:var(--bg-subtle);color:var(--text);border-color:var(--border)}.nav-toggle{display:none;background:none;border:1px solid var(--border);border-radius:var(--r-md);padding:.35rem .5rem;cursor:pointer;color:var(--text)}.app-main{padding:1.75rem 1.5rem 3rem;padding-bottom:calc(3rem + env(safe-area-inset-bottom,0));max-width:var(--container);width:100%;margin:0 auto;animation:fadeIn .25s var(--ease)}.nav a:focus-visible,.user-logout:focus-visible,.nav-toggle:focus-visible,.toast-close:focus-visible,.icon-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.page-header h2{margin:0 0 .2rem;font-size:1.5rem;letter-spacing:-.02em}.page-header p.muted{margin:0;font-size:.875rem}.filters{display:flex;gap:.75rem 1rem;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:.875rem 1rem;margin-bottom:1.25rem;box-shadow:var(--shadow-xs)}.filters label{display:flex;flex-direction:column;gap:.3rem;font-size:.75rem;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.filters input,.filters select{padding:.45rem .7rem;border:1px solid var(--border);border-radius:var(--r-md);font-size:.875rem;background:var(--surface);min-width:180px;color:var(--text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.filters input:focus,.filters select:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.875rem;margin-bottom:1.25rem}.kpi{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.1rem 1.15rem;box-shadow:var(--shadow-xs);transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease);overflow:hidden}.kpi:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.kpi-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.kpi-label{color:var(--muted);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em}.kpi-icon{width:32px;height:32px;border-radius:var(--r-md);display:inline-flex;align-items:center;justify-content:center;background:var(--primary-soft);color:var(--primary)}.kpi-icon.warn{background:var(--warn-bg);color:var(--warn-text)}.kpi-icon.success{background:var(--success-bg);color:var(--success-text)}.kpi-value{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;line-height:1.1;color:var(--text)}.kpi-value.warn{color:var(--warn-text)}.kpi-hint{color:var(--muted);font-size:.75rem;margin-top:.25rem}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow-x:auto;box-shadow:var(--shadow-xs)}table{width:100%;border-collapse:collapse}thead th{font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--surface-2);padding:.7rem .95rem;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}tbody td{padding:.72rem .95rem;border-bottom:1px solid var(--border);font-size:.875rem}tbody tr{transition:background var(--t-fast) var(--ease)}tbody tr:hover{background:var(--bg-subtle)}tbody tr:last-child td{border-bottom:none}.num{text-align:right;font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.empty{text-align:center;color:var(--muted);padding:3rem 1rem!important;font-size:.9rem}.row-entry{background:color-mix(in srgb,var(--entry-bg) 25%,transparent)}.row-entry:hover{background:color-mix(in srgb,var(--entry-bg) 45%,transparent)!important}.row-exit{background:color-mix(in srgb,var(--exit-bg) 25%,transparent)}.row-exit:hover{background:color-mix(in srgb,var(--exit-bg) 45%,transparent)!important}.row-warn{background:color-mix(in srgb,var(--warn-bg) 45%,transparent)}.row-warn:hover{background:color-mix(in srgb,var(--warn-bg) 60%,transparent)!important}.row-warn td{color:var(--warn-text)}.row-danger{background:color-mix(in srgb,var(--danger-bg) 45%,transparent)}.row-danger:hover{background:color-mix(in srgb,var(--danger-bg) 60%,transparent)!important}.row-danger td{color:var(--danger-text)}.row-ordered{background:color-mix(in srgb,var(--warn-bg) 45%,transparent)}.row-ordered:hover{background:color-mix(in srgb,var(--warn-bg) 60%,transparent)!important}.row-ordered td{color:var(--warn-text)}.row-inactive td{color:var(--muted);opacity:.75}.row-unassigned td{background:color-mix(in srgb,var(--bg-subtle) 55%,transparent)}.badge.assigned{background:var(--entry-bg);color:var(--entry)}.badge.unassigned{background:var(--bg-subtle);color:var(--muted)}.tabs{display:flex;gap:.25rem;margin-bottom:1.25rem;border-bottom:1px solid var(--border)}.tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:.6rem .9rem;font-size:.9rem;font-weight:600;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;transition:color var(--t-fast),border-color var(--t-fast)}.tab:hover{color:var(--text)}.tab--active{color:var(--primary);border-bottom-color:var(--primary)}.tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.4rem;padding:0 .4rem;height:1.4rem;border-radius:var(--r-full);background:var(--bg-subtle);color:var(--muted);font-size:.72rem;font-weight:600}.tab--active .tab-count{background:var(--primary-soft);color:var(--primary)}.assign-popover{z-index:50;width:220px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:.85rem;display:flex;flex-direction:column;gap:.7rem;text-align:left}.assign-popover-field{display:flex;flex-direction:column;gap:.3rem;font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.assign-popover-field input{padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--r-md);font-size:.9rem;background:var(--surface);color:var(--text);text-align:right;font-variant-numeric:tabular-nums}.assign-popover-field input:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.assign-popover-actions{display:flex;justify-content:flex-end;gap:.5rem}.assign-popover-actions .btn{padding:.4rem .7rem;font-size:.82rem}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .6rem;border-radius:var(--r-full);font-size:.72rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge:before{content:"";display:inline-block;width:6px;height:6px;border-radius:var(--r-full);background:currentColor}.badge.entry{background:var(--entry-bg);color:var(--entry)}.badge.exit{background:var(--exit-bg);color:var(--exit)}.badge.role-admin{background:var(--primary-soft);color:var(--primary)}.badge.role-warehouse_su{background:var(--entry-bg);color:var(--entry)}.badge-contract{margin-left:.4rem}.badge-contract.fijo{background:var(--primary-soft);color:var(--primary)}.badge-contract.variable{background:var(--warn-bg);color:var(--warn-text)}.bq-status{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:.85rem 1.1rem;margin-bottom:1rem;display:flex;flex-direction:column;gap:.4rem}.bq-status-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.bq-status-stats{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;font-size:.9rem}.bq-status-stats .badge-contract{margin-left:0}.chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1rem;box-shadow:var(--shadow-xs)}.empty-chart{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:0}.empty-chart .empty{padding:3rem 1.5rem!important}.kpis-reset{align-self:flex-end;margin-bottom:.25rem;font-size:.82rem}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.5rem;max-width:680px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:1rem;box-shadow:var(--shadow-xs)}.form-card label,.modal label{display:flex;flex-direction:column;gap:.35rem;font-weight:500;font-size:.82rem;color:var(--text-soft)}.form-card input,.form-card select,.form-card textarea,.modal input,.modal select,.modal textarea{padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--r-md);font-size:.9rem;background:var(--surface);color:var(--text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.form-card input:focus,.form-card select:focus,.form-card textarea:focus,.modal input:focus,.modal select:focus,.modal textarea:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.form-card textarea{resize:vertical}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.computed{padding:.75rem .9rem;background:linear-gradient(135deg,var(--primary-soft),transparent);border:1px dashed var(--border-strong);border-radius:var(--r-md);display:flex;flex-direction:column;justify-content:center;gap:.15rem}.computed .big{font-size:1.65rem;font-weight:700;letter-spacing:-.02em;color:var(--primary);line-height:1.1}.hint{display:block;font-size:.78rem;color:var(--muted);margin-top:.25rem;line-height:1.35}.hint-active{color:var(--primary)}.hint-active strong{font-weight:600}.actions{display:flex;justify-content:flex-end;gap:.5rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.6rem 1.1rem;min-height:44px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--r-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast);white-space:nowrap}.btn:hover{background:var(--bg-subtle);border-color:var(--border-strong)}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary);box-shadow:var(--shadow-xs)}.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn.danger{background:var(--danger-text);color:#fff;border-color:var(--danger-text);box-shadow:var(--shadow-xs)}.btn.danger:hover{filter:brightness(.92)}.filter-checkbox{flex-direction:row!important;align-items:center!important;gap:.5rem!important;text-transform:none!important;letter-spacing:0!important;font-size:.875rem!important;color:var(--text)!important}.filter-checkbox input[type=checkbox]{min-width:0;width:auto;flex:none;margin:0}.min-stock-input{width:90px;padding:.35rem .55rem;border:1px solid var(--border);border-radius:var(--r-sm);font-size:.85rem;text-align:right;font-variant-numeric:tabular-nums;background:var(--surface);color:var(--text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.min-stock-input:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.min-stock-input:disabled{background:var(--bg-subtle);color:var(--muted);cursor:not-allowed}.min-stock-input--changed{border-color:var(--primary)}.login-dev-hint{margin-top:1rem;text-align:center}.login-error{margin-top:1rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:hover{background:var(--surface);border-color:var(--border);transform:none}.link{background:none;border:none;color:var(--primary);cursor:pointer;font-size:.82rem;font-weight:500;padding:.25rem .4rem;border-radius:var(--r-sm);transition:background var(--t-fast)}.link:hover{background:var(--primary-soft)}.link:disabled{color:var(--muted);cursor:not-allowed;opacity:.65}.link:disabled:hover{background:transparent}.link:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.error{padding:.7rem .95rem;border-radius:var(--r-md);font-size:.875rem;border:1px solid;display:flex;align-items:center;gap:.5rem;background:var(--danger-bg);color:var(--danger-text);border-color:var(--danger-border)}.muted{color:var(--muted)}.small{font-size:.78rem}.loading{padding:3rem;text-align:center;color:var(--muted);font-size:.9rem}.spinner{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .75s linear infinite;vertical-align:-2px;margin-right:.4rem}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-subtle) 0%,var(--surface-2) 50%,var(--bg-subtle) 100%);background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:var(--r-sm);display:block}.skeleton-table{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1rem;display:flex;flex-direction:column;gap:.6rem}.skeleton-row{height:14px;width:100%}.skeleton-row:nth-child(2n){width:85%}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:grid;place-items:center;padding:1rem;z-index:50;animation:fadeIn .15s var(--ease)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:1.5rem;width:100%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:fadeInUp .2s var(--ease)}.modal h3{margin:0 0 1rem;font-size:1.15rem;letter-spacing:-.01em}.modal form{display:flex;flex-direction:column;gap:.9rem}.row-inline{display:flex;gap:.5rem;align-items:center}.row-inline select{flex:1}.new-supplier{background:var(--bg-subtle);border:1px dashed var(--border-strong);border-radius:var(--r-md);padding:.85rem;display:flex;flex-direction:column;gap:.55rem}.product-search{position:relative}.product-search input{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:var(--r-md);font-size:.9rem;background:var(--surface);color:var(--text);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.product-search input:focus{outline:none;border-color:var(--primary);box-shadow:var(--shadow-focus)}.product-search input:disabled{background:var(--bg-subtle);color:var(--muted);cursor:not-allowed}.product-search-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);max-height:280px;overflow-y:auto;z-index:10;box-shadow:var(--shadow-md)}.product-search-item{display:block;width:100%;text-align:left;padding:.75rem .85rem;min-height:44px;border:none;background:none;border-bottom:1px solid var(--border);cursor:pointer;transition:background var(--t-fast);color:var(--text);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.product-search-item:last-child{border-bottom:none}@media (hover: hover){.product-search-item:hover{background:var(--primary-soft)}}.product-search-item:active{background:var(--primary-soft)}.padded{padding:.85rem}.product-selected{display:flex;justify-content:space-between;align-items:center;padding:.75rem .95rem;background:var(--primary-soft);border:1px solid color-mix(in srgb,var(--primary) 25%,transparent);border-radius:var(--r-md);gap:.5rem}.product-selected strong{color:var(--text)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (max-width: 1024px){.app-header{padding:0 1rem;gap:.75rem}.brand-sub{display:none}.nav-toggle{display:inline-flex}.nav{display:none;position:absolute;top:var(--header-h);left:0;right:0;flex-direction:column;align-items:stretch;background:var(--surface);border-bottom:1px solid var(--border);padding:.5rem;gap:.25rem;box-shadow:var(--shadow-md)}.nav.open{display:flex}.nav a{padding:.85rem .8rem;font-size:.9rem;min-height:44px}.user-meta{display:block}.user-meta .role{display:none}.app-main{padding:1.25rem 1rem 2.5rem}.grid2{grid-template-columns:1fr}.filters input,.filters select{min-width:140px}}@media (max-width: 720px){.form-card input,.form-card select,.form-card textarea,.modal input,.modal select,.modal textarea,.filters input,.filters select{padding:.7rem .85rem;font-size:1rem;min-height:48px}.form-card{padding:1.1rem;gap:.85rem}.form-card label{gap:.3rem}.actions{justify-content:stretch}.actions .btn{flex:1}.exit-items{padding:.6rem}.empty{padding:2rem 1rem!important}}@media (max-width: 560px){.page-header h2{font-size:1.25rem}.kpi-value{font-size:1.4rem}.app-main{padding:1rem .75rem 2rem}.form-card{padding:.9rem}}.exit-items{display:flex;flex-direction:column;gap:.6rem;padding:.75rem;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-subtle)}.exit-items-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.25rem}.exit-item{display:grid;grid-template-columns:1fr 140px 44px;grid-template-areas:"product units delete";gap:.5rem;align-items:start;animation:itemIn .22s var(--ease)}.exit-item-product{grid-area:product;min-width:0}.exit-item-units{grid-area:units;width:100%}.exit-item-remove{grid-area:delete}@media (max-width: 720px){.exit-item{grid-template-columns:1fr 44px;grid-template-areas:"product product" "units delete"}}@keyframes itemIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.exit-item-removing{animation:itemOut .2s var(--ease) forwards;pointer-events:none}@keyframes itemOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)}}.exit-add-line{align-self:flex-start;margin-top:.25rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;border:1px solid var(--border);background:var(--surface);color:var(--text-soft);border-radius:var(--r-md);cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease);-webkit-tap-highlight-color:transparent}.icon-btn:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--border-strong);color:var(--text)}.icon-btn:active:not(:disabled){background:var(--bg-subtle)}.icon-btn:focus-visible{outline:none;box-shadow:var(--shadow-focus)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.toast-stack{position:fixed;left:0;right:0;bottom:1rem;z-index:1100;display:flex;flex-direction:column;align-items:center;gap:.5rem;pointer-events:none;padding:0 1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom))}.toast{display:flex;align-items:center;gap:.6rem;width:100%;max-width:480px;padding:.7rem .85rem;border:1px solid;border-radius:var(--r-md);font-size:.875rem;box-shadow:var(--shadow-md);pointer-events:auto;animation:toastIn .2s var(--ease)}.toast-message{flex:1}.toast-close{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:inherit;opacity:.7;border-radius:var(--r-sm);cursor:pointer;-webkit-tap-highlight-color:transparent}.toast-close:hover{opacity:1;background:#0000000f}.toast-success{background:var(--success-bg);color:var(--success-text);border-color:var(--success-border)}.toast-error{background:var(--danger-bg);color:var(--danger-text);border-color:var(--danger-border)}.toast-info{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.toast-leaving{animation:toastOut .22s var(--ease) forwards}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}.nav-backdrop{position:fixed;inset:var(--header-h) 0 0 0;background:#00000059;z-index:30;animation:fadeIn var(--t-fast) var(--ease);display:none}@media (max-width: 1024px){.nav-backdrop{display:block}}
