:root{--bg: #f4f6f8;--surface: #ffffff;--text: #1b2430;--muted: #667085;--line: #e3e7ec;--primary: #1f5f8b;--primary-soft: #e6f0f7;--danger: #c0392b;--warn-bg: #fff4e0;--warn: #9a5b00;--success-bg: #e7f6ec;--success: #1e7a3c;--error-bg: #fdecea;--radius: 12px;--tabbar: 64px;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%}@media (prefers-color-scheme: dark){:root{--bg: #12161b;--surface: #1c232b;--text: #e8edf2;--muted: #98a2b3;--line: #2c3540;--primary: #5aa7dc;--primary-soft: #1d3446;--warn-bg: #3a2c12;--warn: #f0b85a;--success-bg: #163222;--success: #6fd394;--error-bg: #3d1d1a;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--primary);text-decoration:none}h1,h2{margin:0}h2{font-size:1.05rem}code{font-size:.9em}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{width:100%;font-size:16px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);-webkit-appearance:none;-moz-appearance:none;appearance:none}select{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px}input:disabled{color:var(--muted)}input[type=checkbox]{width:22px;height:22px;padding:0;-webkit-appearance:checkbox;-moz-appearance:auto;appearance:auto;accent-color:var(--primary);flex:none}.app{min-height:100vh}.content{max-width:760px;margin:0 auto;padding:0 12px calc(var(--tabbar) + env(safe-area-inset-bottom) + 24px)}.center-screen{display:grid;place-items:center;min-height:100vh;color:var(--muted)}.pad{padding:12px 4px}.center{text-align:center}.muted{color:var(--muted)}.small{font-size:.85rem}.page-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;padding:calc(env(safe-area-inset-top) + 10px) 0 10px;background:var(--bg)}.page-header h1{flex:1;font-size:1.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;gap:4px}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:0;border-radius:10px;background:transparent;color:var(--primary)}.icon-btn:active{background:var(--primary-soft)}.icon-spacer{width:0}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:space-around;height:calc(var(--tabbar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:.7rem;color:var(--muted)}.tabbar a.active{color:var(--primary)}.tab-add .plus{display:grid;place-items:center;width:44px;height:32px;border-radius:16px;background:var(--primary);color:#fff}.tabbar a.tab-add.active .plus{background:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--text);font-weight:600;white-space:nowrap;cursor:pointer}.btn:active{opacity:.8}.btn:disabled{opacity:.5}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-danger{color:var(--danger)}.btn-block{width:100%}.text-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 8px;border:0;background:none;color:var(--primary);font-weight:600;font-size:.9rem;cursor:pointer}.text-btn.danger{color:var(--danger)}.auth-page{display:grid;place-items:center;min-height:100vh;padding:16px}.card,.form{display:flex;flex-direction:column;gap:14px;width:100%;max-width:420px;padding:20px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--line)}.form{max-width:none;margin-bottom:16px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.85rem;font-weight:600;color:var(--muted)}.field-hint{font-size:.8rem;color:var(--muted)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.with-button{display:flex;gap:8px}.checkbox-row{display:flex;align-items:center;gap:10px;font-weight:600}.inline-form{display:flex;gap:8px;margin-bottom:12px}.inline-form.wrap{flex-wrap:wrap}.inline-form.wrap input{flex:2 1 200px}.inline-form.wrap select{flex:1 1 160px;width:auto}.alert{padding:10px 12px;border-radius:10px;margin-bottom:12px;font-size:.95rem}.alert-error{background:var(--error-bg);color:var(--danger)}.alert-success{background:var(--success-bg);color:var(--success)}.alert-warn{background:var(--warn-bg);color:var(--warn)}.empty{padding:32px 16px;text-align:center;color:var(--muted)}.greeting{margin:0 4px 12px;color:var(--muted)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px}.stat{display:flex;flex-direction:column;gap:2px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.stat-value{font-size:1.3rem;font-weight:700}.stat-label{font-size:.8rem;color:var(--muted)}.section{margin-bottom:20px}.section h2,.group-title{margin:16px 4px 8px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.list:empty{display:none}.list li+li{border-top:1px solid var(--line)}.row{display:flex;align-items:center;gap:12px;padding:10px 12px;color:inherit;min-height:56px}.row-button{width:100%;border:0;background:none;text-align:left;cursor:pointer}.row-main{flex:1;min-width:0;display:flex;flex-direction:column}.row-main>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-value{font-weight:600;font-size:.9rem;white-space:nowrap}.row-icon{color:var(--primary);display:grid}.row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px}.tree li{padding-right:0}.tree .row{padding-left:0}.check{margin-right:-4px}.badge{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:10px;font-size:.75rem;font-weight:600}.badge-warn{background:var(--warn-bg);color:var(--warn)}.thumb{flex:none;border-radius:8px;object-fit:cover;background:var(--bg)}.thumb-empty{display:grid;place-items:center;color:var(--muted)}.merge-box{display:flex;flex-direction:column;gap:8px;padding:12px;margin:0 12px 12px;background:var(--primary-soft);border-radius:10px}.search{display:flex;align-items:center;gap:8px;padding:0 12px;margin-bottom:8px;background:var(--surface);border:1px solid var(--line);border-radius:10px;color:var(--muted)}.search input{border:0;padding-left:0;background:transparent}.search input:focus{outline:none}.filters{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.filters select{font-size:15px;padding:9px 30px 9px 10px}.summary{display:flex;justify-content:space-between;align-items:center;margin:0 4px 8px;color:var(--muted);font-size:.9rem}.select-bar{position:fixed;left:0;right:0;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom));z-index:9;display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--surface);border-top:1px solid var(--line)}.select-bar span{flex:1;font-weight:600}.photo-strip{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}.photo-tile,.photo-add{position:relative;flex:none;width:104px;height:104px;border-radius:10px;overflow:hidden}.photo-tile img{width:100%;height:100%;object-fit:cover}.photo-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1.5px dashed var(--line);background:var(--bg);color:var(--primary);font-size:.75rem;font-weight:600;cursor:pointer}.photo-remove{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:26px;height:26px;border:0;border-radius:13px;background:#0009;color:#fff}.cover-label,.photo-cover{position:absolute;left:0;right:0;bottom:0;padding:3px;border:0;background:#0000008c;color:#fff;font-size:.7rem;text-align:center}.gallery{margin-bottom:12px}.gallery-main{width:100%;max-height:60vh;object-fit:contain;border-radius:var(--radius);background:var(--surface)}.gallery-thumbs{display:flex;gap:8px;margin-top:8px;overflow-x:auto}.gallery-thumbs button{flex:none;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:none}.gallery-thumbs button.active{border-color:var(--primary)}.gallery-thumbs img{display:block;width:56px;height:56px;object-fit:cover}.detail{padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.detail-title{font-size:1.35rem;margin-bottom:12px}.props{margin:0}.props div{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-top:1px solid var(--line)}.props dt{color:var(--muted)}.props dd{margin:0;text-align:right;font-weight:500}.notes{margin:12px 0 0;white-space:pre-wrap}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.actions .btn{flex:1}.log{list-style:none;margin:0;padding:0;font-size:.9rem}.log li{display:flex;gap:12px;padding:6px 4px}.log li span:first-child{color:var(--muted);width:84px;flex:none}@media (min-width: 700px){.stats,.filters{grid-template-columns:repeat(4,1fr)}}.row-wrap{flex-wrap:wrap;row-gap:2px}.row-wrap .row-main{flex:1 1 100%}.row-wrap .row-actions{justify-content:flex-start;margin-left:-8px}.desktop-only{display:none}@media (hover: hover) and (pointer: fine){.camera-only,.touch-only{display:none}.desktop-only{display:inline}.row:hover{background:var(--bg)}.btn:hover{filter:brightness(.97)}.btn-primary:hover{filter:brightness(1.08)}.text-btn:hover{text-decoration:underline}}.sidebar{display:none}@media (min-width: 900px){:root{--sidebar: 240px}.tabbar{display:none}.select-bar{bottom:0;left:var(--sidebar);padding-bottom:12px}.sidebar{position:fixed;top:0;bottom:0;left:0;width:var(--sidebar);display:flex;flex-direction:column;gap:16px;padding:20px 14px;background:var(--surface);border-right:1px solid var(--line);overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:0 6px;font-size:1.15rem;font-weight:700}.sidebar-brand img{border-radius:8px}.sidebar-new{color:#fff}.sidebar-new.active{filter:brightness(1.1)}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-nav a{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:8px;color:var(--text);font-weight:500}.sidebar-nav a:hover{background:var(--bg)}.sidebar-nav a.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.sidebar-group{margin:14px 10px 4px;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0 6px}.content{max-width:none;margin:0 0 0 var(--sidebar);padding:0 32px 48px}.content>*{max-width:1200px}.page-header{padding-top:24px;padding-bottom:16px}.page-header h1{font-size:1.6rem}.form,.inline-form,.merge-box,.form-narrow{max-width:760px}.stats{grid-template-columns:repeat(4,1fr);gap:16px}.stat{padding:20px}.stat-value{font-size:1.6rem}.search{max-width:760px}.filters{grid-template-columns:repeat(4,minmax(0,220px))}.row{padding:10px 16px}.row-value{min-width:120px;text-align:right}.row-main{flex-direction:row;align-items:baseline;gap:16px}.row-main>strong{flex:0 0 34%}.row-main>.muted{flex:1 1 0}.row-wrap .row-main{flex-direction:column;gap:0;flex-basis:auto;flex-grow:1}.row-wrap{flex-wrap:nowrap}.row-wrap .row-actions{justify-content:flex-end;margin-left:0}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}.detail-layout.single{grid-template-columns:minmax(0,760px)}.detail-layout .gallery{margin-bottom:0;position:sticky;top:90px}.gallery-main{max-height:70vh}.actions{max-width:760px}.actions .btn{flex:0 0 auto}.photo-add{border-style:dashed}}@media (min-width: 1400px){.content{padding:0 48px 48px}}.label-preview{display:flex;justify-content:center;padding:16px;margin-bottom:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}.inv-label{width:80mm;height:50mm;flex:none;box-sizing:border-box;padding:4mm;display:flex;flex-direction:column;background:#fff;color:#000;font-family:Arial,Helvetica,sans-serif;border:1px dashed #b5bcc5;border-radius:2mm;overflow:hidden}.inv-label-top{display:flex;align-items:center;gap:4mm;flex:1;min-height:0}.inv-label-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:1mm}.inv-label-no{font-weight:700;font-size:3.6mm}.inv-label-name{align-self:flex-start;max-width:100%;padding:.8mm 2mm;border-radius:1mm;background:#000;color:#fff;font-weight:700;font-size:4.6mm;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;-webkit-print-color-adjust:exact;print-color-adjust:exact}.inv-label-meta{font-size:3.2mm;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inv-label-qr{width:22mm;height:22mm;flex:none}.inv-label-qr svg{display:block;width:22mm;height:22mm}#print-root{display:none}@media print{body.printing>*:not(#print-root){display:none!important}body.printing{background:#fff}body.printing #print-root{display:block}#print-root .inv-label{border:0;border-radius:0}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.scanner{position:relative;width:100%;max-width:560px;aspect-ratio:4 / 3;margin:0 auto 8px;border-radius:var(--radius);overflow:hidden;background:#000}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scanner-idle video{opacity:.25}.scanner-frame{position:absolute;left:27.5%;right:27.5%;top:20%;bottom:20%;border:3px solid rgba(255,255,255,.9);border-radius:12px;box-shadow:0 0 0 100vmax #00000059}.scanner-start{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.scanner-alt{display:flex;flex-direction:column;gap:8px;max-width:560px;margin:12px auto}.scanner-alt .inline-form{margin-bottom:0}.scan-result{padding:16px;margin-bottom:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.scan-result-head{display:flex;gap:14px;align-items:center;margin-bottom:12px}.scan-result-head h3{margin:0 0 2px;font-size:1.2rem}.scan-result .actions{margin-bottom:0}@media (min-width: 900px){.scanner,.scanner-alt{margin-left:0}.scan-result{max-width:760px}.label-preview{justify-content:flex-start;max-width:760px}}.scan-raw{margin:-4px 4px 8px;word-break:break-all}.scan-subtitle{margin:16px 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.scan-result .list{border-radius:10px}.badge-count{flex:none;padding:3px 10px;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-weight:700;font-size:.85rem}
