:root{--color-bg:#f4f5f7;--color-surface:#fff;--color-border:#d5d9e0;--color-text:#1f2430;--color-muted:#6b7280;--color-accent:#2456c4;--color-accent-dark:#1b4499;--color-danger:#b3261e;--color-danger-dark:#8f1d17;--color-notice-bg:#e8f2e9;--color-notice-border:#9dc6a4;--color-error-bg:#fdeceb;--color-error-border:#e0a19c;--radius:8px;--shadow:0 1px 2px #1f243014, 0 6px 20px #1f24300f}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:Segoe UI,PT Sans,Roboto,Arial,sans-serif;font-size:15px;line-height:1.45}h1{margin:0 0 12px;font-size:22px}h2{margin:0 0 12px;font-size:17px}a{color:var(--color-accent)}.muted{color:var(--color-muted)}.small{font-size:13px}.mono{font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:12px}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);align-items:center;gap:24px;padding:12px 24px;display:flex}.app-brand{align-items:center;gap:8px;font-weight:600;display:inline-flex}.brand-mark{flex:none;width:24px;height:24px;display:block}.app-nav{flex:1;gap:4px;display:flex}.nav-link{border-radius:var(--radius);color:var(--color-text);padding:6px 12px;text-decoration:none}.nav-link:hover{background:var(--color-bg)}.nav-link-active{background:var(--color-accent);color:#fff}.app-user{align-items:center;gap:8px;display:flex}.app-user-name{cursor:pointer;align-items:center;gap:8px;font-weight:500;list-style:none;display:inline-flex}.app-user-name::-webkit-details-marker{display:none}.user-menu{position:relative}.user-menu-list{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);z-index:20;flex-direction:column;gap:4px;min-width:160px;padding:8px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000001f}.user-menu-list a,.user-menu-list button{text-align:left;color:inherit;padding:4px 8px;text-decoration:none}.user-menu-list a:hover,.user-menu-list button:hover{background:var(--color-accent-soft,#0000000d);border-radius:var(--radius)}.role-badge{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);text-align:center;min-width:24px;padding:2px 6px;font-weight:600;display:inline-block}.invoice-fieldset{border:0;min-width:0;margin:0;padding:0}.app-main{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:24px}.app-main-wide{max-width:none}.page{flex-direction:column;gap:20px;display:flex}.page-head{justify-content:space-between;align-items:center;gap:16px;display:flex}.page-head h1{margin:0}.page-loader{text-align:center;padding:24px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card.card-drop-active{border-color:var(--color-accent);box-shadow:0 0 0 3px #2456c426, var(--shadow);background:#f7f9ff}.field{margin-bottom:14px;display:block}.field>span{color:var(--color-muted);margin-bottom:4px;font-size:14px;display:block}input[type=text],input[type=password],select{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;color:var(--color-text);font:inherit;background:#fff;padding:8px 10px}input:focus,select:focus{outline:2px solid var(--color-accent);outline-offset:1px}input:disabled,select:disabled{background:var(--color-bg);color:var(--color-muted)}.form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 16px;display:grid}.form-actions{align-items:center;gap:8px;margin-top:12px;display:flex}.fieldset{border:1px solid var(--color-border);border-radius:var(--radius);margin:8px 0 0;padding:12px 14px}.fieldset legend{color:var(--color-muted);padding:0 6px;font-size:14px}.button{border:1px solid var(--color-accent);border-radius:var(--radius);background:var(--color-accent);color:#fff;font:inherit;cursor:pointer;padding:8px 16px}.button:hover:not(:disabled){background:var(--color-accent-dark)}.button-secondary{color:var(--color-text);border-color:var(--color-border);background:#fff}.button-secondary:hover:not(:disabled){background:var(--color-bg)}.button-danger{background:var(--color-danger);border-color:var(--color-danger)}.button-danger:hover:not(:disabled){background:var(--color-danger-dark)}.button-small{padding:4px 10px;font-size:13px}.button:disabled,.link-button:disabled{opacity:.55;cursor:not-allowed}.select-small{width:auto;min-width:120px;padding:4px 6px}.link-button{color:var(--color-accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0}.link-button:hover{text-decoration:underline}.banner{border-radius:var(--radius);border:1px solid #0000;margin:0 0 12px;padding:10px 12px}.banner-error{background:var(--color-error-bg);border-color:var(--color-error-border);color:#6d1a15}.banner-notice{background:var(--color-notice-bg);border-color:var(--color-notice-border);color:#1f4a26}.details{grid-template-columns:max-content 1fr;gap:6px 20px;margin:0;display:grid}.details dt{color:var(--color-muted)}.details dd{margin:0}.table-scroll{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top;padding:8px 10px}.table th{color:var(--color-muted);white-space:nowrap;font-size:13px;font-weight:500}.table tbody tr:hover{background:#fafbfc}.row-muted{color:var(--color-muted)}.cell-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.cell-actions .button,.cell-actions .link-button,.table td.num{white-space:nowrap}.state{border-radius:999px;padding:2px 8px;font-size:13px;display:inline-block}.state-on{background:var(--color-notice-bg);color:#1f4a26}.state-off{background:var(--color-error-bg);color:#6d1a15}.stores-picker{margin-top:4px}.store-list{border:1px solid var(--color-border);border-radius:var(--radius);max-height:260px;margin:0;padding:0;list-style:none;overflow-y:auto}.store-list li+li{border-top:1px solid var(--color-border)}.store-item{cursor:pointer;align-items:center;gap:10px;padding:6px 10px;display:flex}.store-item:hover{background:var(--color-bg)}.store-name{flex:1}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-card{width:100%;max-width:380px}.login-brand{align-items:center;gap:10px;margin-bottom:16px;font-weight:600;display:flex}.login-brand .brand-mark{width:32px;height:32px}.login-card .button{width:100%;margin-top:4px}.modal-backdrop{z-index:20;background:#1f243073;justify-content:center;align-items:flex-start;padding:48px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:460px;box-shadow:var(--shadow)}.modal-wide{max-width:760px}.modal-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:16px;padding:14px 20px;display:flex}.modal-header h2{margin:0}.modal-body{padding:16px 20px 20px}.inline-confirm{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.sessions-panel{flex-direction:column;gap:12px;display:flex}.list-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);cursor:pointer;font:inherit;border-radius:999px;padding:5px 12px;font-size:13px}.chip:hover{background:var(--color-bg)}.chip-active,.chip-active:hover{background:var(--color-accent);border-color:var(--color-accent);color:#fff}.search{border:1px solid var(--color-border);border-radius:var(--radius);min-width:180px;max-width:320px;font:inherit;flex:1;margin-left:auto;padding:7px 10px}.state-needs_review{background:var(--color-error-bg);color:#6d1a15}.state-ready{background:var(--color-notice-bg);color:#1f4a26}.state-approved{color:#2b3350;background:#e7eaf3}.badge{border-radius:999px;padding:1px 7px;font-size:12px;line-height:1.6;display:inline-block}.badge-error{background:var(--color-error-bg);color:#6d1a15}.badge-warn{color:#6b4b00;background:#fff6e0}.badge-ok{background:var(--color-notice-bg);color:#1f4a26}.badge-neutral{background:var(--color-bg);color:var(--color-muted)}.banner-warn{color:#6b4b00;background:#fff6e0;border-color:#e2c169}.warnings .row{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.warnings ul{margin:8px 0 0;padding-left:20px}.supply-title{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.supply-title h1{margin:0}.supply-workspace{grid-template-columns:minmax(320px,420px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.supply-main{min-width:0}@media (width<=1100px){.supply-workspace{grid-template-columns:1fr}.supply-workspace .upload-source-pane{position:static}}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.breadcrumb{margin-bottom:-8px}.meta{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-wrap:wrap;gap:8px 24px;padding:12px 16px;font-size:14px;display:flex}.inline-edit{justify-content:flex-end;gap:4px;display:inline-flex}.inline-edit .qty{width:64px}.inline-edit .price{width:72px}.inline-edit .unit{width:48px}.table td.num input.price{border:1px solid var(--color-border);width:84px;font:inherit;text-align:right;border-radius:6px;padding:4px 6px;font-size:13px}.inline-edit input{border:1px solid var(--color-border);font:inherit;text-align:right;border-radius:6px;padding:4px 6px;font-size:13px}.total-line{border-top:1px solid var(--color-border);flex-wrap:wrap;justify-content:flex-end;gap:8px 24px;margin-top:12px;padding-top:12px;display:flex}.total-error{color:#a4453c}.candidate-list{flex-direction:column;gap:8px;max-height:50vh;margin:0 0 12px;padding:0;list-style:none;display:flex;overflow:auto}.candidate-list li{border:1px solid var(--color-border);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:16px;padding:10px 12px;display:flex}.table input{font:inherit;font-size:13px}@media (width<=760px){.page-head{flex-direction:column;align-items:flex-start}.app-header{flex-wrap:wrap;gap:8px 16px}.meta{flex-direction:column}}.product-search{width:100%;max-width:none;margin:0 0 12px}.upload-picker{align-items:center;gap:12px;margin:12px 0;display:flex}.upload-previews{flex-wrap:wrap;gap:12px;margin:12px 0;padding:0;list-style:none;display:flex}.upload-previews li{flex-direction:column;gap:4px;width:140px;display:flex}.upload-previews img{object-fit:cover;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);width:140px;height:100px}.upload-status{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.upload-status h2{margin:0}.upload-status-actions{align-items:center;gap:8px;display:flex}.status-badge{background:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:3px 10px;font-size:13px;display:inline-block}.status-recognized{background:var(--color-notice-bg);border-color:var(--color-notice-border)}.status-failed{background:var(--color-error-bg);border-color:var(--color-error-border);color:var(--color-danger-dark)}.upload-workspace{grid-template-columns:minmax(360px,.95fr) minmax(560px,1.25fr);align-items:start;gap:20px;display:grid}.upload-workspace-single{flex-direction:column;gap:20px;display:flex}.upload-source-pane{position:sticky;top:16px}.upload-gallery{flex-direction:column;gap:12px;margin-top:12px;display:flex}.upload-image{width:100%;margin:0}.upload-image-frame{border:1px solid var(--color-border);border-radius:var(--radius);cursor:grab;-webkit-user-select:none;user-select:none;background:#eef0f3;justify-content:flex-start;align-items:flex-start;width:100%;min-height:420px;max-height:72vh;padding:0;display:flex;overflow:auto}.upload-image-frame.is-panning{cursor:grabbing}.upload-image-frame img{object-fit:contain;-webkit-user-drag:none;flex:none;max-width:none;max-height:none;margin:auto;transition:transform .2s,width .2s}.upload-image-zoom{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;padding:8px 10px;display:flex}.upload-image-zoom-control{flex:180px;align-items:center;gap:8px;min-width:140px;display:flex}.upload-image-zoom-control input[type=range]{flex:1;min-width:120px}.upload-image figcaption{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;padding-top:4px;display:flex}.upload-image-actions{flex-wrap:wrap;gap:10px;display:flex}.upload-lightbox{z-index:1000;background:#0c0f16c7;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.upload-lightbox-body{border-radius:var(--radius);background:var(--color-surface);flex-direction:column;width:min(1400px,96vw);height:92vh;display:flex;overflow:hidden;box-shadow:0 10px 40px #00000059}.upload-lightbox-tools{border-bottom:1px solid var(--color-border);align-items:center;gap:8px;padding:8px 12px;display:flex}.upload-lightbox-hint{margin-left:auto}.upload-lightbox-canvas{cursor:grab;-webkit-user-select:none;user-select:none;background:#20242c;flex:1;justify-content:flex-start;align-items:flex-start;padding:12px;display:flex;overflow:auto}.upload-lightbox-canvas.is-panning{cursor:grabbing}.upload-lightbox-canvas img{transform-origin:50%;-webkit-user-drag:none;flex:none;margin:auto;transition:transform .15s,width .15s}.upload-header-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 16px;display:grid}.table-wrap{margin:8px 0;overflow-x:auto}.upload-lines{min-width:720px}.upload-lines td{vertical-align:top}.cell-input{width:100%;min-width:90px}.cell-input.cell-number{text-align:right;min-width:80px}.cell-input.cell-unit{min-width:64px}.column-head{align-items:center;gap:4px;display:inline-flex}.column-shift{flex-direction:column;line-height:1;display:inline-flex}.shift-button{color:var(--color-muted);font:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:11px;line-height:12px}.shift-button:hover:not(:disabled){color:var(--color-accent)}.shift-button:disabled{opacity:.3;cursor:default}.upload-lines .drag-cell{width:24px;padding-right:0}.drag-handle{color:var(--color-muted);cursor:grab;-webkit-user-select:none;user-select:none;padding:4px 2px;display:inline-block}.drag-handle:active{cursor:grabbing}.upload-lines tr.dragging td{opacity:.5}.upload-lines tr.drop-before td{box-shadow:inset 0 2px 0 var(--color-accent)}.upload-lines tr.drop-after td{box-shadow:inset 0 -2px 0 var(--color-accent)}.line-needs-check td{background:#fff8e5}.line-mismatch td{background:var(--color-error-bg)}.field-error{color:var(--color-danger);margin-top:2px;font-size:12px;display:block}.combobox,.combobox-input{position:relative}.combobox-input input{width:100%;padding-right:28px}.combobox-clear{width:22px;height:22px;color:var(--color-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;font-size:16px;line-height:1;position:absolute;top:50%;right:6px}.combobox-clear:hover{background:var(--color-bg);color:var(--color-text)}.combobox-list{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;max-height:280px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #1f24301f}.combobox-option{cursor:pointer;flex-direction:column;gap:2px;padding:6px 10px;display:flex}.combobox-option.is-active,.combobox-option:hover{background:var(--color-bg)}.combobox-option .combobox-name{font-size:14px}.combobox-option .combobox-requisites{color:var(--color-muted);font-size:12px}.combobox-empty{color:var(--color-muted);padding:8px 10px;font-size:13px}.supplier-hint{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.upload-totals{flex-wrap:wrap;align-items:center;gap:16px;margin-top:8px;display:flex}.upload-summary{margin:8px 0 0;padding-left:20px}.upload-summary li{margin-bottom:2px}@media (width<=960px){.upload-workspace{grid-template-columns:1fr}.upload-source-pane{position:static}}@media (width<=640px){.upload-image-frame{min-height:260px}.upload-status,.upload-picker{flex-direction:column;align-items:flex-start}}
