:root{font-family:Inter,Segoe UI,system-ui,sans-serif;color:#252c37;background:#f5f6f8;font-size:14px;line-height:1.5;--accent:#b73553;--line:#e2e6ec;--muted:#687381}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;color:#303846;border-radius:7px;padding:9px 13px;font-size:13px}button:hover:not(:disabled){border-color:#b5beca;background:#f8f9fb}button:disabled{opacity:.55;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:white}button.danger{color:#b0203d;border-color:#f1c8d2}button.quiet{border:0;background:transparent;color:var(--muted);text-align:left;padding:6px 0}a{color:var(--accent)}input,select,textarea{display:block;width:100%;padding:10px 11px;border:1px solid #d7dde5;border-radius:6px;background:white;color:inherit;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #e8b5c2;outline-offset:1px}input[type=checkbox]{width:auto;display:inline-block}textarea{min-height:75px;resize:vertical}label{display:grid;gap:6px;font-size:12px;color:#596573}select[multiple]{min-height:110px}h1{font-size:26px;margin:0;font-weight:600;letter-spacing:-.5px}h2{font-size:18px;font-weight:600;margin:0}h3{font-size:14px;font-weight:600;margin:0 0 12px}p{margin:10px 0}.muted{color:var(--muted);font-size:12px}small{display:block;color:var(--muted);font-size:11px}strong{font-weight:600}.brand{font-size:30px;letter-spacing:4px;font-weight:700;color:var(--accent)}.brand small{font-size:10px;letter-spacing:1px;font-weight:400;color:var(--muted)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:390px;background:white;border:1px solid var(--line);border-radius:14px;padding:32px;box-shadow:0 12px 48px #15254008}.login-card h1{font-size:23px;margin-top:28px}.login-card label{margin-top:17px}.login-card .primary{width:100%;margin-top:23px}#login-error,#form-error{color:#b0203d;font-size:13px}#app{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:100vh}aside{background:white;border-right:1px solid var(--line);padding:26px 16px;display:flex;flex-direction:column;gap:32px}aside .brand{padding-left:10px}nav{display:grid;gap:5px}nav button{border:0;background:transparent;text-align:left;padding:12px 13px;color:#5b6675}nav button.active{color:var(--accent);background:#faedf1;box-shadow:inset 3px 0 var(--accent)}.profile{margin-top:auto;padding:15px 10px 0;border-top:1px solid var(--line);display:grid;gap:3px}.workspace{min-width:0}header{height:63px;background:white;border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);gap:10px}#connection{font-size:11px}main{padding:30px;max-width:1600px}footer{padding:0 30px 22px;color:#808995;font-size:11px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-bottom:24px}.page-head .muted{margin:5px 0 0}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:18px}.page-head .actions{margin:0}.panel{background:white;border:1px solid var(--line);border-radius:9px;padding:20px;margin-bottom:18px;min-width:0}.panel.flush{padding:0;overflow:hidden}.section-title{padding:16px 18px;border-bottom:1px solid var(--line)}.catalog{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px;align-items:start}.tree{padding:12px}.tree button{display:block;width:100%;border:0;background:transparent;text-align:left;padding:8px 9px;font-size:12px}.tree button.selected{background:#faedf1;color:var(--accent)}.tree details{margin-left:10px}.tree summary{cursor:pointer;font-size:12px;padding:7px 0;color:#596573}.tree summary button{display:inline;width:auto}.path{font-size:12px;color:var(--muted);margin-bottom:13px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:15px;align-items:center}.toolbar input{max-width:300px}.toolbar select{width:auto}.scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{font-size:11px;color:#737e8a;font-weight:500;background:#fafbfc;white-space:nowrap}th,td{padding:14px 17px;border-bottom:1px solid #e9edf2;vertical-align:top}tr:last-child td{border-bottom:0}.number{text-align:right;font-variant-numeric:tabular-nums}.row-link{color:var(--accent);border:0;background:transparent;text-align:left;padding:0;font-weight:500}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.row-actions button{padding:5px 8px;font-size:11px}.tag{display:inline-block;background:#eff2f5;border-radius:5px;padding:3px 7px;font-size:11px;color:#566273;white-space:nowrap}.tag.good{background:#eaf6ef;color:#317551}.tag.warn{background:#fff3dc;color:#926423}.empty{padding:45px 25px;text-align:center;color:var(--muted)}.empty h3{font-size:16px;color:#454f5d}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid .full{grid-column:1/-1}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat{padding:19px;background:white;border:1px solid var(--line);border-radius:9px}.stat b{display:block;font-weight:500;font-size:28px;margin-top:5px;font-variant-numeric:tabular-nums}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}.tabs button.active{color:var(--accent);background:#faedf1;border-color:#edc4ce}.check{display:flex;gap:9px;align-items:center;margin:12px 0}.check input{accent-color:var(--accent)}hr{border:0;border-top:1px solid var(--line);margin:20px 0}.notice{background:#fff7e8;color:#856027;padding:13px 16px;border-radius:7px;font-size:12px;margin-bottom:18px}.detail-title{display:flex;justify-content:space-between;gap:15px;align-items:center}.kv{display:grid;grid-template-columns:170px 1fr;gap:9px;margin:12px 0}.kv span:first-child{color:var(--muted)}.file-list{display:grid;gap:8px;margin:12px 0}.file-list a{display:block;padding:10px 12px;background:#f7f8fa;border-radius:5px;text-decoration:none}.file-list img{max-width:160px;max-height:120px;object-fit:contain;display:block;margin:6px 0}.upload-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.upload-row input{max-width:340px}dialog{width:min(720px,calc(100% - 28px));max-height:90vh;border:1px solid var(--line);border-radius:12px;padding:0;box-shadow:0 20px 100px #1a243332}dialog::backdrop{background:#15202f66}#editor{padding:24px}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.dialog-head button{font-size:21px;border:0;padding:1px 10px}#dialog-actions{border-top:1px solid var(--line);padding-top:17px}#toast{position:fixed;bottom:24px;right:24px;background:#263340;color:white;border-radius:8px;padding:14px 20px;max-width:90vw;box-shadow:0 5px 25px #0002;z-index:30}#refresh-banner{padding:10px 30px;background:#fff3dc;font-size:13px}#print-area{display:none}.print-preview{background:#f0f2f5;padding:25px;display:flex;justify-content:center;overflow:auto}.label-sheet{background:white;color:black;border:1px solid #ccd2da;padding:12px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;max-width:100%;width:300px;min-height:180px}.label-sheet strong{font-size:24px}.print-doc{padding:25px;background:white;color:black;max-width:600px;width:100%}.print-doc h2{margin:20px 0}.print-doc small{color:#555}.lot-line{display:grid;grid-template-columns:1fr 110px;gap:10px;align-items:end;margin-bottom:12px}.audit-json{font-size:11px;white-space:pre-wrap;overflow-wrap:anywhere}.network-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1000px){#app{grid-template-columns:170px minmax(0,1fr)}main{padding:22px}.catalog{grid-template-columns:170px minmax(0,1fr)}}@media(max-width:760px){#app{display:block}aside{padding:14px;gap:15px;border-right:0;border-bottom:1px solid var(--line)}aside .brand{font-size:22px}nav{display:flex;flex-wrap:wrap;gap:2px}nav button{padding:8px 10px;font-size:12px}.profile{margin:0;padding-top:8px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.profile small{display:none}header{padding:12px 16px;height:auto;flex-wrap:wrap}main{padding:18px}.catalog,.grid,.stats,.network-grid{grid-template-columns:1fr}.tree details{margin-left:12px}h1{font-size:23px}.kv{grid-template-columns:1fr;gap:2px}input,select,textarea{font-size:16px}.lot-line{grid-template-columns:1fr 90px}footer{padding:0 18px 18px}th,td{padding:12px}#editor{padding:18px}}
.avatar{width:46px;height:46px;border-radius:50%;object-fit:cover;background:#f8eaf0;flex-shrink:0}.initials{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);font-size:19px}.employee-name{display:flex;align-items:center;gap:12px}.permission-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 20px;margin-top:20px}.branding-upload{display:flex;align-items:center;gap:24px;margin-top:18px}.favicon-preview{width:72px;height:72px;object-fit:contain;background:#f3f4f7;border-radius:12px}.custom-label{flex-shrink:0;box-sizing:border-box;background:white;color:black;border:1px solid #cbd1d9;padding:2mm;white-space:pre-wrap;overflow-wrap:anywhere;overflow:hidden;line-height:1.25;display:flex;flex-direction:column;justify-content:center}.print-preview{justify-content:safe center}#profile-avatar .avatar{width:38px;height:38px}.profile #profile-avatar{margin-bottom:5px}@media(max-width:760px){.permission-grid{grid-template-columns:1fr}.branding-upload{align-items:flex-start;flex-wrap:wrap}}
@media print{body>*{display:none!important}#print-area{display:block!important;color:#000;background:#fff}#print-area .label-sheet{border:0;margin:0;padding:0;max-width:none;width:100%;height:100%;min-height:0}#print-area .print-doc{max-width:none;padding:0}#print-area th,#print-area td{color:black;border-color:#aaa}#print-area small{color:#333}@page{size:A4;margin:15mm}}
