:root{--bg: #f4f5f9;--surface: #ffffff;--surface-2: #f8fafc;--border: #e2e8f0;--text: #0f172a;--text-dim: #64748b;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--danger: #dc2626;--danger-soft: #fef2f2;--warn: #b45309;--warn-soft: #fffbeb;--ok: #047857;--ok-soft: #ecfdf5;--radius: 12px;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px -12px rgba(15, 23, 42, .18);--sidebar: 236px}@media (prefers-color-scheme: dark){:root{--bg: #0b1120;--surface: #111827;--surface-2: #0f172a;--border: #1f2937;--text: #e5e7eb;--text-dim: #94a3b8;--primary: #6366f1;--primary-hover: #818cf8;--primary-soft: #1e1b4b;--danger: #f87171;--danger-soft: #2a1215;--warn: #fbbf24;--warn-soft: #2a2113;--ok: #34d399;--ok-soft: #0d2a22;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -12px rgba(0, 0, 0, .6)}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 15px;border:1px solid var(--border);border-radius:9px;background:var(--surface);font-weight:550;font-size:13.5px;cursor:pointer;white-space:nowrap;transition:background .14s,border-color .14s,transform .05s}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-dim)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:#fff}.btn-sm{padding:5px 10px;font-size:12.5px;border-radius:7px}.btn-icon{padding:6px;width:30px;height:30px;border-radius:7px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12.5px;font-weight:600;color:var(--text-dim)}.input,.select,.textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);outline:none;transition:border-color .14s,box-shadow .14s}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.textarea{resize:vertical;min-height:76px}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:40}.brand{display:flex;align-items:center;gap:10px;padding:20px 18px;font-weight:700;font-size:16px;letter-spacing:-.02em}.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--primary);color:#fff;display:grid;place-items:center;font-size:15px}.nav{flex:1;padding:4px 12px;display:flex;flex-direction:column;gap:2px}.nav-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:var(--text-dim);font-weight:550;transition:background .14s,color .14s}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--primary-soft);color:var(--primary)}.sidebar-foot{padding:14px 12px;border-top:1px solid var(--border)}.user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px}.avatar{width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:700;font-size:13px}.user-chip .meta{min-width:0;flex:1}.user-chip .name{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip .role{font-size:11.5px;color:var(--text-dim)}.main{flex:1;margin-left:var(--sidebar);min-width:0;padding:26px 30px 60px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-head h1{font-size:21px;font-weight:700;letter-spacing:-.02em}.page-head p{color:var(--text-dim);font-size:13px}.mobile-bar{display:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:12px;margin-bottom:18px}.stat{padding:14px 16px}.stat .label{font-size:12px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.stat .value{font-size:22px;font-weight:700;letter-spacing:-.02em;margin-top:3px}.stat.alert .value{color:var(--warn)}.stat.danger .value{color:var(--danger)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}.search{position:relative;flex:1;min-width:210px}.search .input{padding-left:34px}.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-dim);pointer-events:none}.select-sm{width:auto;min-width:130px}.toggle-group{display:flex;border:1px solid var(--border);border-radius:9px;overflow:hidden}.toggle-group button{padding:8px 11px;background:var(--surface);border:none;cursor:pointer;color:var(--text-dim);display:grid;place-items:center}.toggle-group button.active{background:var(--primary-soft);color:var(--primary)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.product-card{overflow:hidden;display:flex;flex-direction:column;transition:transform .14s,box-shadow .14s}.product-card:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0f172a14,0 16px 32px -16px #0f172a4d}.thumb{aspect-ratio:1 / 1;background:var(--surface-2);display:grid;place-items:center;overflow:hidden;position:relative}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb .empty{color:var(--text-dim);opacity:.45}.img-count{position:absolute;right:8px;bottom:8px;background:#0f172ab8;color:#fff;font-size:11px;font-weight:600;padding:2px 7px;border-radius:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.product-body{padding:12px 13px 13px;display:flex;flex-direction:column;gap:7px;flex:1}.product-name{font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.product-sku{font-size:11.5px;color:var(--text-dim);font-family:ui-monospace,SF Mono,Menlo,monospace}.product-price{font-size:16px;font-weight:700;letter-spacing:-.02em}.product-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:9px;border-top:1px solid var(--border)}.stepper{display:flex;align-items:center;gap:2px}.stepper button{width:25px;height:25px;border:1px solid var(--border);border-radius:6px;background:var(--surface);cursor:pointer;display:grid;place-items:center;font-size:15px;line-height:1;color:var(--text-dim)}.stepper button:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.stepper button:disabled{opacity:.4;cursor:not-allowed}.stepper .qty{min-width:34px;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.price-edit{display:inline-flex;align-items:center;gap:6px;padding:2px 6px;margin-left:-6px;border:1px solid transparent;border-radius:8px;background:none;cursor:pointer;text-align:left;transition:background .14s,border-color .14s}.price-edit:hover,.price-edit:focus-visible{background:var(--primary-soft);border-color:var(--primary);outline:none}.price-edit .pen{color:var(--text-dim);display:grid;place-items:center;flex-shrink:0}.price-edit:hover .pen,.price-edit:focus-visible .pen{color:var(--primary)}.price-target{display:flex;align-items:center;gap:11px;min-width:0}.price-target img{width:44px;height:44px;border-radius:9px;object-fit:cover;flex-shrink:0}.price-target-name{font-weight:600;line-height:1.35}.price-target-old{font-size:12.5px;color:var(--text-dim)}.price-display{position:relative;display:flex;align-items:baseline;justify-content:flex-end;gap:8px;padding:16px 46px 16px 18px;border:1px solid var(--border);border-radius:11px;background:var(--surface-2)}.price-value{font-size:32px;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.1;overflow:hidden;text-overflow:ellipsis}.price-currency{font-size:14px;font-weight:600;color:var(--text-dim)}.price-clear{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:26px;height:26px;border:none;border-radius:50%;background:var(--border);color:var(--text-dim);cursor:pointer;display:grid;place-items:center}.price-clear:hover{background:var(--danger-soft);color:var(--danger)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.keypad-key{padding:15px 0;border:1px solid var(--border);border-radius:11px;background:var(--surface);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .1s,transform .05s}.keypad-key:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.keypad-key:active{transform:translateY(1px);background:var(--primary);border-color:var(--primary);color:#fff}.keypad-back{color:var(--text-dim)}@media (max-width: 860px){.keypad-key{padding:17px 0;font-size:21px}}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-low{background:var(--warn-soft);color:var(--warn)}.badge-out{background:var(--danger-soft);color:var(--danger)}.badge-cat{background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border)}.dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.table-wrap{overflow-x:auto;border-radius:var(--radius)}table{width:100%;border-collapse:collapse;min-width:780px}th{text-align:left;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap}td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.cell-product{display:flex;align-items:center;gap:11px;min-width:210px}.cell-thumb{width:40px;height:40px;border-radius:8px;object-fit:cover;background:var(--surface-2);flex-shrink:0}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.row-actions{display:flex;gap:6px;justify-content:flex-end}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:flex-start;justify-content:center;padding:28px 16px;overflow-y:auto;z-index:100}.modal{background:var(--surface);border:1px solid var(--border);border-radius:15px;width:100%;max-width:620px;box-shadow:0 24px 60px -20px #0f172a80;animation:pop .16s ease-out}.modal-sm{max-width:420px}@keyframes pop{0%{opacity:0;transform:translateY(-8px) scale(.985)}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px;font-weight:700}.modal-body{padding:20px;display:flex;flex-direction:column;gap:15px}.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 20px;border-top:1px solid var(--border)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:13px}.dropzone{border:1.5px dashed var(--border);border-radius:11px;padding:18px;text-align:center;color:var(--text-dim);cursor:pointer;transition:border-color .14s,background .14s}.dropzone:hover,.dropzone.over{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.image-strip{display:flex;gap:9px;flex-wrap:wrap}.image-tile{position:relative;width:78px;height:78px;border-radius:9px;overflow:hidden;border:1px solid var(--border);cursor:grab}.image-tile img{width:100%;height:100%;object-fit:cover;display:block}.image-tile .remove{position:absolute;top:3px;right:3px;width:19px;height:19px;border-radius:50%;border:none;background:#0f172abf;color:#fff;cursor:pointer;display:grid;place-items:center;font-size:12px;line-height:1}.image-tile .cover-tag{position:absolute;left:0;bottom:0;right:0;background:var(--primary);color:#fff;font-size:9.5px;font-weight:700;text-align:center;padding:1px;letter-spacing:.04em}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#080c16f0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;flex-direction:column;color:#f1f5f9;animation:fade .16s ease-out;overscroll-behavior:contain}@keyframes fade{0%{opacity:0}}.lightbox-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left));flex-shrink:0;z-index:2}.lightbox-title{display:flex;align-items:baseline;gap:10px;min-width:0;font-size:14px}.lightbox-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lightbox-count{color:#94a3b8;font-size:12.5px;font-variant-numeric:tabular-nums;flex-shrink:0}.lightbox-tools{display:flex;align-items:center;gap:6px;flex-shrink:0}.lb-btn,.lb-zoom{display:grid;place-items:center;height:34px;border:1px solid rgba(255,255,255,.16);border-radius:9px;background:#ffffff12;color:#f1f5f9;cursor:pointer;transition:background .14s}.lb-btn{width:34px}.lb-zoom{padding:0 11px;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;min-width:58px}.lb-btn:hover:not(:disabled),.lb-zoom:hover{background:#ffffff29}.lb-btn:disabled{opacity:.35;cursor:not-allowed}.lb-close:hover{background:var(--danger);border-color:var(--danger);color:#fff}.lightbox-stage{flex:1;min-height:0;display:grid;place-items:center;overflow:hidden;touch-action:none;cursor:zoom-in}.lightbox-stage img{max-width:94vw;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transform-origin:center center;will-change:transform}.lightbox-stage img.grabbable{cursor:grab}.lightbox-stage img.grabbable:active{cursor:grabbing}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.16);border-radius:50%;background:#0f172ab3;color:#f1f5f9;cursor:pointer;z-index:2}.lightbox-nav:hover{background:#fff3}.lightbox-nav.prev{left:14px}.lightbox-nav.next{right:14px}.lightbox-strip{display:flex;gap:8px;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding:10px 16px;flex-shrink:0}.lb-thumb{width:52px;height:52px;flex-shrink:0;border:2px solid transparent;border-radius:8px;overflow:hidden;padding:0;background:none;cursor:pointer;opacity:.5;transition:opacity .14s,border-color .14s}.lb-thumb img{width:100%;height:100%;object-fit:cover;display:block}.lb-thumb:hover{opacity:.85}.lb-thumb.active{opacity:1;border-color:var(--primary)}.lightbox-hint{text-align:center;font-size:11.5px;color:#64748b;padding-bottom:12px;flex-shrink:0}.thumb img,.cell-thumb{cursor:zoom-in}@media (max-width: 860px){.lightbox-nav{width:36px;height:36px}.lightbox-nav.prev{left:6px}.lightbox-nav.next{right:6px}.lightbox-hint{display:none}.lb-zoom{min-width:50px}}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(1000px 500px at 50% -10%,var(--primary-soft),transparent 70%),var(--bg)}.login-card{width:100%;max-width:384px;padding:30px;display:flex;flex-direction:column;gap:17px}.login-card .brand{padding:0;justify-content:center;font-size:19px}.login-card .sub{text-align:center;color:var(--text-dim);font-size:13px;margin-top:-8px}.alert{padding:9px 13px;border-radius:9px;font-size:13px;font-weight:550}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-ok{background:var(--ok-soft);color:var(--ok)}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 18px;border-radius:10px;font-weight:600;font-size:13px;box-shadow:var(--shadow);z-index:200;animation:rise .18s ease-out}@keyframes rise{0%{opacity:0;transform:translate(-50%,10px)}}.empty-state{padding:56px 20px;text-align:center;color:var(--text-dim)}.empty-state h3{color:var(--text);font-size:15px;margin-bottom:5px}.spinner{width:17px;height:17px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .65s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{min-height:100vh;display:grid;place-items:center;color:var(--text-dim)}@media (max-width: 860px){.sidebar{transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow)}.sidebar.open{transform:translate(0)}.main{margin-left:0;padding:16px 16px 60px}.mobile-bar{display:flex;align-items:center;gap:11px;margin-bottom:16px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:39}.form-row,.form-row-3{grid-template-columns:1fr}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.table-wrap.stack{overflow-x:visible;background:none;border:none;box-shadow:none}.stack table,.stack tbody,.stack tr,.stack td{display:block;min-width:0;width:auto}.stack thead{display:none}.stack tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:11px;overflow:hidden}.stack tbody tr:last-child{margin-bottom:0}.stack tbody tr:hover{background:var(--surface)}.stack td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 13px;border-bottom:1px solid var(--border);text-align:right}.stack td:before{content:attr(data-label);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);text-align:left;flex-shrink:0}.stack tbody tr td:last-child{border-bottom:none}.stack td.cell-main{display:block;padding:12px 13px;background:var(--surface-2);text-align:left}.stack td.cell-main:before{display:none}.stack .cell-product{min-width:0}.stack .cell-thumb{width:46px;height:46px}.stack td.cell-actions{justify-content:flex-end}.stack td.cell-actions:before{display:none}.stack .row-actions{flex-wrap:wrap}}
