:root{--bg: #fafaf9;--panel: #ffffff;--field: #fafaf9;--line: #e7e5e4;--border: var(--line);--ink: #1c1917;--text: var(--ink);--muted: #78716c;--brand-400: #f59e0b;--brand: #d97706;--brand-600: #b45309;--brand-tint: #fdf4e7;--brand-ring: rgba(217, 119, 6, .22);--primary: var(--brand);--danger: #dc2626;--ok: #16a34a;--accent: #d97706;--side: #fbfbfa;--side-line: #e7e5e4;--side-ink: #44403c;--side-strong: #1c1917;--side-mut: #78716c;--side-item: #ffffff;--side-hover: #f5f5f4;--side-btn: #ffffff;--side-btn-hover: #f5f5f4;--side-bar: #ebe9e7;--side-chip: #f5f5f4;--side-active-bg: var(--brand-tint);--side-active-bd: var(--brand);--sh-1: 0 1px 2px rgba(28, 25, 23, .05);--sh-2: 0 1px 3px rgba(28, 25, 23, .06), 0 10px 26px -18px rgba(28, 25, 23, .45);--sh-pop: 0 24px 60px -22px rgba(28, 25, 23, .4);--r-sm: 7px;--r: 10px;--r-lg: 14px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:8px;padding:7px 12px;transition:background .12s,border .12s}button:hover{background:#f5f5f4}button.primary{background:var(--primary);color:#fff;border-color:var(--primary)}button.primary:hover{background:var(--brand-600)}button.danger{color:var(--danger);border-color:#fecaca}button.danger:hover{background:#fef2f2}button.block{width:100%}button.icon{padding:3px 7px;border:none;background:transparent}button.sm{padding:5px 9px;font-size:12px}input,textarea,select{font:inherit;width:100%;padding:10px 12px;min-height:40px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--text);line-height:1.4}textarea{min-height:64px;resize:vertical}input::placeholder,textarea::placeholder{color:#a8a29e}input:focus,textarea:focus,select:focus{outline:2px solid var(--brand-ring);border-color:var(--primary)}label{display:block;font-size:12px;color:var(--muted);margin:8px 0 3px}.app{display:flex;height:100%}.mobile-header{display:none}.hamburger{font-size:20px;padding:4px 12px;line-height:1}.mh-title{font-weight:700}.mh-wh{margin-left:auto;color:var(--muted);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:45%}.sidebar-overlay{display:none}.sidebar{width:260px;min-width:260px;background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:14px;gap:10px}.brand{font-size:17px;font-weight:700;margin-bottom:4px}.wh-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.wh-item{position:relative;border:1px solid var(--border);border-radius:10px;padding:10px;cursor:pointer}.wh-item:hover{border-color:#d6d3d1}.wh-item.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.wh-name{font-weight:600}.wh-meta{font-size:12px;color:var(--muted);margin:3px 0 6px}.wh-item .icon.danger{position:absolute;top:6px;right:6px;color:var(--danger);opacity:0;transition:opacity .15s}.wh-item:hover .icon.danger,.wh-item .icon.danger:focus-visible{opacity:1}@media (hover: none){.wh-item .icon.danger{opacity:1}}.wh-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.wh-chip{font-size:11px;background:#f5f5f4;border:1px solid var(--border);border-radius:6px;padding:1px 6px;white-space:nowrap}.bar{height:6px;background:#ebe9e7;border-radius:4px;overflow:hidden}.bar-fill{height:100%;background:var(--primary)}.empty{color:var(--muted);font-size:13px;text-align:center;padding:20px 0}.notif-btn{display:flex;align-items:center;gap:6px;justify-content:center}.notif-btn b{background:var(--danger);color:#fff;border-radius:10px;padding:0 7px;font-size:12px}.main{flex:1;display:flex;flex-direction:column;overflow:hidden}.placeholder{margin:auto;text-align:center;color:var(--muted);max-width:420px}.placeholder h2{color:var(--text)}.ph-icon{width:84px;height:84px;margin:0 auto 6px;border-radius:22px;display:flex;align-items:center;justify-content:center;background:var(--brand-tint);color:var(--brand-600);border:1px solid var(--line)}.topbar{padding:12px 18px;border-bottom:1px solid var(--border);background:var(--panel);display:flex;align-items:center;gap:18px}.topbar h1{font-size:18px;margin:0;cursor:pointer}.floors{display:flex;gap:6px;flex-wrap:wrap}.wh-totals{margin-left:auto;display:flex;gap:0;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:2px;box-shadow:var(--sh-1)}.tot{display:flex;align-items:center;gap:5px;background:transparent;border:none;border-radius:0;padding:4px 12px}.tot+.tot{border-left:1px solid var(--line)}.tot-ico{font-size:15px}.tot b{font-size:16px;color:var(--text)}.tot-lbl{font-size:11px;color:var(--muted)}.floor-tab{border-radius:999px;padding:5px 14px}.floor-tab.active{background:var(--text);color:#fff;border-color:var(--text)}.floor-tab.add{border-style:dashed;color:var(--muted)}.workspace{flex:1;display:flex;overflow:hidden}.canvas-area{flex:1;display:flex;flex-direction:column;padding:14px 18px;overflow:hidden}.mode-switch{display:flex;gap:8px;margin-bottom:10px;align-items:center}.mode-switch button.active{background:var(--text);color:#fff;border-color:var(--text)}.badge{font-size:12px;color:var(--primary);background:var(--brand-tint);padding:3px 8px;border-radius:6px}.level-selector{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;padding:8px 10px;background:#fafaf9;border:1px solid var(--border);border-radius:10px}.level-chip{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:74px;padding:5px 8px;border-radius:8px}.level-chip.active{background:var(--text);color:#fff;border-color:var(--text)}.level-chip b{font-size:12px}.lc-bar{width:100%;height:4px;background:#e7e5e4;border-radius:3px;overflow:hidden}.level-chip.active .lc-bar{background:#ffffff4d}.lc-fill{display:block;height:100%;background:var(--primary)}.level-chip.active .lc-fill{background:#fcd34d}.lv-badge{display:inline-block;background:#334155;color:#fff;font-size:10px;border-radius:4px;padding:0 5px;margin-right:6px;vertical-align:middle}.editor-canvas-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden}.canvas-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.canvas-toolbar .spacer,.mode-switch .spacer{flex:1}.view-gizmo{display:inline-flex;gap:3px;padding:3px;background:#f5f5f4;border:1px solid var(--border);border-radius:9px}.giz-btn{padding:4px 9px;font-size:12px;font-weight:700;border:1px solid transparent;background:#fff;border-radius:6px}.giz-btn:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.dim{font-size:12px;color:var(--muted)}.canvas-scroll{flex:1;overflow:auto;background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px}.grid-svg{display:block}.editor-canvas-wrap,.view3d,.grid-svg,.view3d svg{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.grid-svg text,.view3d svg text{pointer-events:none}.grid-svg.mode-select,.grid-svg.mode-dead{cursor:crosshair}.grid-svg.mode-draw{cursor:copy}.grid-svg.mode-label{cursor:text}.grid-svg.mode-rack{cursor:crosshair}.grid-svg.trimming{cursor:not-allowed}.label-bar,.trim-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 10px;border-radius:8px;margin-bottom:8px;font-size:13px}.label-bar{background:#f5f5f4}.trim-bar{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.label-input{width:140px;padding:5px 8px}.legend{display:flex;gap:14px 18px;flex-wrap:wrap;margin-top:12px;font-size:12.5px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:6px}.legend .sw{width:14px;height:14px;border-radius:3px;display:inline-block}.login-wrap{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{width:360px;max-width:90vw;background:#fff;border:1px solid var(--border);border-radius:14px;padding:22px;display:flex;flex-direction:column}.login-card .dim{margin-bottom:6px}.login-err{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;border-radius:8px;padding:8px 10px;font-size:13px;margin-top:8px}.login-hint{margin-top:16px;font-size:12px;color:var(--muted);background:#fafaf9;border-radius:8px;padding:10px;line-height:1.7}.user-badge{display:flex;align-items:center;gap:8px;border-top:1px solid var(--border);padding-top:10px;margin-top:2px}.user-badge .grow{flex:1}.ub-name{font-weight:600;font-size:13px}.ub-role{font-size:11px;color:var(--muted)}.user-badge>div:first-child{flex:1}.ro-badge{font-size:11px;background:#fef3c7;color:#92400e;padding:2px 8px;border-radius:999px;margin-left:10px;vertical-align:middle}.canvas-with-rack{display:flex;gap:12px;flex:1;min-height:0}.rack-rail{width:150px;min-width:150px;background:linear-gradient(#fafaf9,#f0efee);border:1px solid var(--border);border-radius:12px;padding:8px;display:flex;flex-direction:column}.rack-title{font-size:12px;font-weight:700;color:var(--muted);text-align:center;margin-bottom:6px}.rack-body{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.rack-shelf{text-align:left;border:1px solid var(--border);border-radius:8px;padding:7px 8px;background:#fff;border-left:4px solid #d6d3d1}.rack-shelf.active{border-left-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.rack-shelf-top{display:flex;align-items:center;gap:5px;font-size:12px}.rack-lv{background:#0f172a;color:#fff;border-radius:4px;padding:0 5px;font-size:10px}.rack-name{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rack-pct{color:var(--muted)}.rack-bar{height:5px;background:#e7e5e4;border-radius:3px;margin:5px 0 3px;overflow:hidden}.rack-bar-fill{height:100%;background:var(--primary)}.rack-shelf-meta{font-size:11px;color:var(--muted)}.rack-base{text-align:center;font-size:10px;color:#a8a29e;letter-spacing:1px;margin-top:6px}.admin-page{height:100%;display:flex;flex-direction:column;background:var(--bg)}.admin-head{display:flex;align-items:center;gap:14px;padding:14px 20px;background:var(--panel);border-bottom:1px solid var(--border)}.admin-head h1{font-size:18px;margin:0}.admin-head .dim{margin-left:auto}.admin-scroll{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:12px;max-width:1000px;width:100%;margin:0 auto}.admin-toolbar{display:flex;gap:10px;align-items:center}.wh-filter{flex:1;max-width:380px}.wh-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px}.admins-card{background:#fbfaff}.wh-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.wh-card-head .spacer{flex:1}.wh-card-title{font-weight:700;font-size:15px}.wh-card-meta{font-size:12px;color:var(--muted)}.wh-users{display:flex;gap:24px;margin:12px 0;flex-wrap:wrap}.wh-users-col{flex:1;min-width:220px}.wh-users-label{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:6px}.dim.sm{font-size:12px}.user-chips{display:flex;gap:6px;flex-wrap:wrap;flex:1}.user-chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;background:#f5f5f4;border:1px solid var(--border);border-radius:999px;padding:3px 10px;margin-bottom:4px}.chip-x{border:none;background:transparent;color:var(--danger);padding:0 2px;font-size:12px;cursor:pointer}.add-user-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;border-top:1px dashed var(--border);padding-top:10px}.add-user-row input{width:150px}.add-user-row input[type=password],.add-user-row select{width:120px}.detail-rows{display:flex;flex-direction:column;gap:5px}.detail-rows>div{display:flex;justify-content:space-between;gap:10px;font-size:13px;border-bottom:1px dashed var(--border);padding-bottom:4px}.detail-rows span{color:var(--muted)}.detail-rows b{text-align:right}.view3d{flex:1;display:flex;flex-direction:column;padding:14px 18px;overflow:hidden}.view3d .canvas-scroll{background:linear-gradient(#fff,#f5f5f4)}.shelf-overview{flex:1;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:14px}.shelf-hint{color:var(--muted);font-size:13px}.shelf-level{display:flex;gap:16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px;cursor:pointer}.shelf-level:hover{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.shelf-side{width:150px;min-width:150px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.shelf-level-name{font-weight:700}.shelf-badge{font-size:11px;color:var(--muted);background:#f5f5f4;padding:2px 8px;border-radius:999px}.donut.sm{width:72px;height:72px;margin:4px 0}.donut.sm:before{width:46px;height:46px}.donut.sm span{font-size:13px}.mini-open{margin-top:4px;font-size:12px}.shelf-grid-wrap{flex:1;overflow:auto;border:1px solid var(--border);border-radius:8px;padding:8px;background:#fff}.shelf-grid{display:block}.inspector{width:320px;min-width:320px;border-left:1px solid var(--border);background:var(--panel);padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.search-box{position:relative}.search-input{padding:9px 30px 9px 32px}.search-ico{position:absolute;left:11px;top:20px;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search-clear{position:absolute;right:4px;top:20px;transform:translateY(-50%);color:var(--muted)}.search-clear:hover{color:var(--text)}.search-results{margin-top:6px;border:1px solid var(--border);border-radius:10px;overflow:hidden;max-height:320px;overflow-y:auto;background:#fff}.search-row{display:flex;align-items:center;gap:8px;padding:9px 10px;border-bottom:1px solid var(--border);cursor:pointer}.search-row:last-child{border-bottom:none}.search-row .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-row .s{font-size:12px;color:var(--muted)}.stat-card{border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:grid;grid-template-columns:auto 1fr;column-gap:16px;align-items:center;text-align:left}.stat-title{font-weight:600;margin-bottom:8px;grid-column:1 / -1}.donut{width:92px;height:92px;border-radius:50%;margin:0;display:flex;align-items:center;justify-content:center;position:relative}.donut:before{content:"";position:absolute;width:58px;height:58px;background:#fff;border-radius:50%}.donut span{position:relative;font-weight:700;font-size:16px}.stat-rows{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.stat-rows>div{display:flex;align-items:baseline;gap:6px}.stat-rows b{color:var(--text);font-size:15px;min-width:40px;text-align:right}.stat-note{grid-column:1 / -1;margin-top:8px;font-size:11px}.form-card{border:1px solid var(--border);border-radius:12px;padding:14px}.collapse-head{display:flex;align-items:center;gap:8px;width:100%;border:none;background:transparent;padding:0;box-shadow:none;text-align:left;cursor:pointer}.collapse-head:hover{background:transparent}.collapse-head .dim{flex:1;text-align:right;font-size:12px}.collapse-head .chev{color:var(--muted);transition:transform .15s}.collapse-head .chev.up{transform:rotate(180deg)}.collapse-head+.row{margin-top:10px}.form-card.highlight{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.section-title{font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:6px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.end{justify-content:flex-end;margin-top:12px}.field{flex:1}.chip{padding:6px 12px;border-radius:999px}.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.bg-upload{border-top:1px dashed var(--border);margin-top:10px;padding-top:10px;display:flex;flex-direction:column;gap:6px}.file-btn{display:inline-block;text-align:center;border:1px solid var(--primary);color:var(--primary);background:var(--brand-tint);border-radius:8px;padding:8px 12px;cursor:pointer;font-size:14px}.file-btn:hover{background:#fbe6cf}.kind-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.kind-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;font-size:11px}.kind-btn.active{background:var(--brand-tint);border-color:var(--primary);color:var(--primary)}.kind-area{font-size:22px;line-height:1;color:#a8a29e}.alloc-list{display:flex;flex-direction:column;gap:6px}.alloc-row{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:10px;padding:8px;cursor:pointer}.alloc-row:hover{border-color:#d6d3d1}.alloc-row.active{border-color:var(--text);box-shadow:0 0 0 1px var(--text)}.alloc-row .grow,.notif-row .grow{flex:1;min-width:0}.alloc-row .t,.notif-row .t{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alloc-row .s,.notif-row .s{font-size:12px;color:var(--muted)}.alloc-row.group-row{cursor:pointer;background:#f5f5f4;align-items:center}.alloc-row.group-row .caret{width:14px;color:var(--muted);font-size:12px}.alloc-row.group-row .rack-badge{font-weight:700}.alloc-list .alloc-row.sub{margin-left:16px;border-left:3px solid #d6d3d1}.dot{width:12px;height:12px;border-radius:3px;display:inline-block;flex-shrink:0}.pill{font-size:12px;padding:3px 9px;border-radius:999px;white-space:nowrap}.pill.green{background:#dcfce7;color:#166534}.pill.amber{background:#fef3c7;color:#92400e}.pill.red{background:#fee2e2;color:#991b1b}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;display:flex;align-items:flex-start;justify-content:center;padding-top:8vh;z-index:50}.modal{background:#fff;border-radius:14px;width:480px;max-width:90vw;max-height:80vh;overflow-y:auto;padding:16px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.modal-head h3{margin:0}.notif-row{display:flex;align-items:center;gap:10px;padding:10px;border-top:1px solid var(--border);flex-wrap:wrap}.notif-row:hover{background:#fafaf9}.rack-modal{width:880px;max-width:94vw}.rack-modal-body{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}.rack-grid-wrap{flex:1 1 380px;overflow-x:auto}.rack-frame{display:inline-block;border:3px solid #475569;border-radius:6px;background:repeating-linear-gradient(135deg,#f0efee,#f0efee 6px,#e9e7e4 6px,#e9e7e4 12px);padding:6px 8px 2px}.rack-grid{border-collapse:collapse}.rack-grid th{font-size:11px;color:#334155;text-align:right;padding:0 8px 0 2px;white-space:nowrap;font-weight:700}.rack-grid td{padding:4px;border-bottom:3px solid #a8a29e}.rack-grid tr.rack-row:first-child td{border-top:3px solid #a8a29e}.rack-grid td.bay-end{border-right:3px solid #57534e}.rack-slot{width:34px;height:30px;border:1px solid var(--border);border-radius:5px;background:#fafaf9;display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer;padding:0}.rack-slot.filled{border-color:#33415580;box-shadow:inset 0 0 0 1px #ffffff59}.rack-slot.empty:hover{background:#e7e5e4}.rack-slot.sel{outline:2px solid var(--primary);outline-offset:1px}.rack-slot.ro{cursor:default}.rack-base-bar{text-align:center;color:#78716c;font-size:11px;font-weight:700;letter-spacing:1px;padding:3px 0 1px}.slot-flag{position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;border:1px solid #fff}.slot-flag.due{background:#dc2626}.slot-flag.soon{background:#f59e0b}.rack-grid-foot{text-align:center;margin-top:8px}.rack-palette{flex:0 0 250px;width:250px}.firma-chips{display:flex;flex-direction:column;gap:6px;margin:8px 0 10px}.firma-chip{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--border);border-radius:9px;background:#fff;cursor:pointer;text-align:left;font-size:13px}.firma-chip:hover{background:#fafaf9}.firma-chip.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.firma-chip.static{cursor:default}.rack-hint p{font-size:13px;line-height:1.5}.firma-chip .grow{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.firma-chip .cnt{font-size:11px;color:var(--muted);font-weight:700}.size-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:4px}.size-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 6px;border:1px solid var(--border);border-radius:9px;background:#fff;cursor:pointer}.size-btn b{font-size:14px}.size-btn span{font-size:11px;color:var(--muted)}.size-btn.active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary);background:var(--brand-tint)}.new-firma{border-top:1px dashed var(--border);padding-top:8px}.new-firma label{display:block;font-size:11px;color:var(--muted);margin:6px 0 2px}.new-firma input,.new-firma textarea{width:100%}@media (max-width: 720px){.rack-palette{flex-basis:100%;width:100%}}.log-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:9px;background:#fff;cursor:pointer;white-space:nowrap}.open-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:9px;font-weight:700;white-space:nowrap;border:1px solid var(--border);background:#fff}.open-btn.on{background:#f0fdf4;border-color:#16a34a;color:#15803d}.open-btn.off{background:#fef2f2;border-color:#dc2626;color:#b91c1c}button.open-btn{cursor:pointer}.log-btn b{background:var(--text);color:#fff;border-radius:999px;padding:0 6px;font-size:11px}.event-row{display:flex;gap:10px;padding:10px;border-top:1px solid var(--border);align-items:flex-start}.event-row .t{font-size:13px}.event-row .s{font-size:11px;margin-top:1px}.event-ico{font-size:18px}.report-bar{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border)}.report-bar .field{display:flex;flex-direction:column}.report-bar .field label{margin:0 0 2px}.report-bar input,.report-bar select{min-height:34px;padding:6px 8px;width:auto}.report-bar .spacer{flex:1}.rack-glow{animation:rackpulse 1.1s ease-in-out infinite}@keyframes rackpulse{0%,to{opacity:1}50%{opacity:.25}}button.warn{background:#fff7ed;border-color:#fdba74;color:#9a3412}.row.wrap{display:flex;flex-wrap:wrap}.price-box{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:9px;padding:8px 10px;margin:8px 0;font-size:13px}.wh-price{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 0 2px;border-top:1px solid var(--border);margin-top:6px}body{background:radial-gradient(1100px 560px at 100% -12%,#f6ece0 0%,transparent 62%),var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}b,strong,.tot b,.stat-rows b,.donut span,.pill,.wh-chip,.rack-pct{font-variant-numeric:tabular-nums}h1,h2,h3,.brand,.section-title,.wh-card-title{letter-spacing:-.012em}*{scrollbar-width:thin;scrollbar-color:#d6d3d1 transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#d6d3d1;border-radius:999px;border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#bab5b0;background-clip:content-box}button{border-radius:var(--r-sm);border-color:var(--line);color:var(--ink);box-shadow:var(--sh-1);transition:background .15s,border-color .15s,box-shadow .15s,color .15s,transform .06s}button:hover{background:#f7f6f5;border-color:#d6d3d1}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--brand);outline-offset:2px}button.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 1px 2px #b4530938}button.primary:hover{background:var(--brand-600);border-color:var(--brand-600)}button.danger{background:#fff}button.danger:hover{background:#fef2f2;border-color:#fca5a5}button.icon{box-shadow:none}button.icon:hover{background:#0f17290f}input,textarea,select{background:var(--field);border-color:var(--line);border-radius:var(--r-sm);transition:background .15s,border-color .15s,box-shadow .15s}input:hover,textarea:hover,select:hover{border-color:#d6d3d1}input:focus,textarea:focus,select:focus{outline:none;background:#fff;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}label{font-weight:600}.sidebar{background:var(--side);border-right:1px solid var(--side-line);color:var(--side-ink)}.brand{color:var(--side-strong)}.sidebar .dim,.sidebar .empty{color:var(--side-mut)}.wh-item{background:var(--side-item);border-color:var(--side-line);color:var(--side-ink);transition:background .15s,border-color .15s,box-shadow .15s}.wh-item:hover{background:var(--side-hover);border-color:var(--side-active-bd)}.wh-item.active{background:var(--side-active-bg);border-color:var(--side-active-bd);box-shadow:0 0 0 1px var(--side-active-bd)}.wh-name{color:var(--side-strong)}.wh-meta{color:var(--side-mut)}.bar{background:var(--side-bar)}.bar-fill{background:linear-gradient(90deg,var(--brand),var(--brand-400))}.wh-chip{background:var(--side-chip);border-color:var(--side-line);color:var(--side-ink)}.sidebar button{background:var(--side-btn);border-color:var(--side-line);color:var(--side-ink);box-shadow:none}.sidebar button:hover{background:var(--side-btn-hover);border-color:var(--side-active-bd)}.sidebar button.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 1px 2px #b4530933}.sidebar button.icon{background:transparent;border:none;color:var(--side-mut)}.sidebar button.icon:hover{background:var(--side-hover);color:var(--side-strong)}.sidebar .wh-item .icon.danger{color:var(--danger)}.user-badge{border-top-color:var(--side-line)}.ub-name{color:var(--side-strong)}.ub-role{color:var(--side-mut)}.topbar{background:#ffffffe0;-webkit-backdrop-filter:saturate(1.5) blur(8px);backdrop-filter:saturate(1.5) blur(8px);border-bottom-color:var(--line);box-shadow:0 8px 22px -22px #0f1729e6}.topbar h1{font-weight:700}.tot-ico{color:var(--muted)}.floor-tab{background:#fff;box-shadow:none}.floor-tab:hover{background:#f5f5f4}.floor-tab.active{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 1px 2px #0f17294d}.floor-tab.add{background:transparent}.ro-badge{font-weight:600}.mode-switch button{border-radius:999px}.mode-switch button.active{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 1px 2px #0f17294d}.badge{background:var(--brand-tint);color:var(--brand-600);border-radius:999px;font-weight:600}.canvas-scroll{background:#fff;border-color:var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-2),inset 0 1px #fff}.view3d .canvas-scroll{background:radial-gradient(900px 520px at 50% 0%,#fff,#f0efee)}.label-bar{background:linear-gradient(180deg,#faf9f8,#f0efee);border:1px solid var(--line);border-radius:10px}.trim-bar{border-radius:10px}.legend .sw{box-shadow:inset 0 0 0 1px #0f17291a}.view-gizmo{background:#f0efee;border-color:var(--line)}.giz-btn{box-shadow:none}.canvas-toolbar button.active{background:var(--ink);border-color:var(--ink);color:#fff}.rack-rail{background:linear-gradient(180deg,#fff,#f0efee);box-shadow:var(--sh-1);border-radius:var(--r)}.rack-shelf{box-shadow:var(--sh-1)}.rack-shelf.active{border-left-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.rack-bar-fill,.lc-fill{background:linear-gradient(90deg,var(--brand-400),var(--brand))}.inspector{background:var(--panel)}.form-card,.stat-card{background:#fff;border-color:var(--line);border-radius:var(--r);box-shadow:var(--sh-1)}.form-card.highlight{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand),var(--sh-2)}.stat-card{background:linear-gradient(180deg,#fff,#fcfbfa)}.donut:before{box-shadow:inset 0 0 0 1px #0f17290d}.donut span{font-size:19px}.search-results{box-shadow:var(--sh-2);border-color:var(--line)}.search-row:hover{background:var(--brand-tint)}.alloc-row{background:#fff;border-radius:10px;box-shadow:var(--sh-1);transition:border-color .15s,box-shadow .15s,background .15s}.alloc-row:hover{border-color:#d6d3d1;box-shadow:var(--sh-2)}.alloc-row.active{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.alloc-row.group-row{background:linear-gradient(180deg,#faf9f8,#f0efee)}.alloc-list .alloc-row.sub{border-left-color:var(--brand);background:#fcfdff}.dot{border-radius:4px;box-shadow:inset 0 0 0 1px #0f17291f}.pill{font-weight:600}.lv-badge{background:var(--ink);font-weight:700}.chip{box-shadow:none}.chip.active{box-shadow:0 1px 2px #1d4ed84d}.kind-btn{box-shadow:none;border-radius:10px}.kind-btn.active{background:var(--brand-tint);box-shadow:0 0 0 1px var(--brand)}.size-btn{box-shadow:none}.file-btn{border-radius:10px;background:var(--brand-tint)}.price-box{border-radius:10px}.modal-overlay{background:#090e1a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-pop);padding:18px}.modal-head{border-bottom:1px solid var(--line);padding-bottom:10px}.modal-head h3{font-size:16px}.notif-row,.event-row{border-top-color:var(--line)}.notif-row:hover{background:#f8f7f6}.open-btn,.log-btn{border-radius:999px;box-shadow:var(--sh-1)}.log-btn:hover{background:#f7f6f5}.rack-frame{border-radius:10px;box-shadow:var(--sh-1)}.rack-slot{transition:background .12s,box-shadow .12s,border-color .12s}.rack-slot.empty:hover{background:#eceae8}.rack-slot.sel{box-shadow:0 0 0 3px var(--brand-ring)}.firma-chip{box-shadow:var(--sh-1)}.admin-head{background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.wh-card{border-radius:var(--r);box-shadow:var(--sh-1)}.admins-card{background:linear-gradient(180deg,#fbfaff,#f5f4ff)}.user-chip{background:#f5f5f4}.login-wrap{background:radial-gradient(900px 520px at 50% -10%,#f6ece0,transparent 62%),var(--bg)}.login-card{border-radius:var(--r-lg);box-shadow:var(--sh-pop)}.login-hint{border-radius:10px}@media (max-width: 820px){.app{flex-direction:column}.mobile-header{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30}.sidebar{position:fixed;top:0;left:0;bottom:0;width:82%;max-width:320px;transform:translate(-100%);transition:transform .22s ease;z-index:45;box-shadow:2px 0 16px #0003}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:40}.main{min-height:0}.topbar{flex-wrap:wrap;gap:8px;padding:10px 12px}.topbar h1{font-size:16px}.floors{overflow-x:auto;flex-wrap:nowrap;max-width:100%;padding-bottom:4px;-webkit-overflow-scrolling:touch}.floor-tab{white-space:nowrap}.wh-totals{margin-left:0;width:100%;overflow-x:auto;padding-bottom:4px}.workspace{flex-direction:column;overflow-y:auto}.canvas-area{flex:none;overflow:visible;padding:10px 12px}.editor-canvas-wrap{flex:none}.canvas-scroll{flex:none;height:58vh;max-height:none}.inspector{flex:none;width:auto;min-width:0;border-left:none;border-top:1px solid var(--border);max-height:none;overflow:visible}.canvas-with-rack{flex-direction:column}.rack-rail{width:auto;min-width:0;flex-direction:column}.rack-body{flex-direction:row;overflow-x:auto;gap:8px}.rack-shelf{min-width:128px}.rack-base{display:none}.mode-switch{flex-wrap:wrap}.level-selector{overflow-x:auto}.admin-body{flex-direction:column}.admin-users{width:auto;min-width:0}.admin-scroll{padding:12px}.wh-users{flex-direction:column;gap:10px}button,input,select,textarea{min-height:40px}.chip,.level-chip,.floor-tab,button.icon,.chip-x,.kind-btn{min-height:0}.modal{width:94vw}}@media (max-width: 480px){.canvas-scroll{max-height:52vh}.stat-rows{font-size:12px}.wh-totals .tot-lbl{display:none}}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark;--bg: #121110;--panel: #1b1918;--field: #171514;--line: #2e2b28;--border: var(--line);--ink: #eeece9;--text: var(--ink);--muted: #a5a09b;--brand-tint: rgba(217, 119, 6, .18);--brand-ring: rgba(245, 158, 11, .32);--side: linear-gradient(180deg, #151312 0%, #0e0d0c 100%);--side-line: rgba(255, 255, 255, .08);--side-ink: #d5d1cc;--side-strong: #ffffff;--side-mut: #a09a94;--side-item: rgba(255, 255, 255, .045);--side-hover: rgba(255, 255, 255, .09);--side-btn: rgba(255, 255, 255, .06);--side-btn-hover: rgba(255, 255, 255, .12);--side-bar: rgba(255, 255, 255, .12);--side-chip: rgba(255, 255, 255, .08);--side-active-bg: rgba(217, 119, 6, .2);--side-active-bd: #f59e0b;--sh-1: 0 1px 2px rgba(0, 0, 0, .4);--sh-2: 0 2px 6px rgba(0, 0, 0, .35), 0 12px 28px -18px rgba(0, 0, 0, .9);--sh-pop: 0 30px 70px -20px rgba(0, 0, 0, .75)}[data-theme=dark] body{background:radial-gradient(1100px 560px at 100% -12%,#2a241c 0%,transparent 62%),var(--bg);color:var(--ink)}[data-theme=dark] *{scrollbar-color:#3a3632 transparent}[data-theme=dark] *::-webkit-scrollbar-thumb{background:#3a3632;background-clip:content-box}[data-theme=dark] *::-webkit-scrollbar-thumb:hover{background:#4a453f;background-clip:content-box}[data-theme=dark] button{background:#242120;border-color:var(--line);color:var(--ink)}[data-theme=dark] button:hover{background:#2d2a27;border-color:#3a3632}[data-theme=dark] button.icon{background:transparent}[data-theme=dark] button.icon:hover{background:#ffffff14}[data-theme=dark] button.danger{background:#242120;color:#fca5a5;border-color:#5c2531}[data-theme=dark] button.danger:hover{background:#2a1620}[data-theme=dark] button.warn{background:#2a2012;border-color:#7c4a12;color:#fcd34d}[data-theme=dark] input,[data-theme=dark] textarea,[data-theme=dark] select{background:var(--field);color:var(--ink);border-color:var(--line)}[data-theme=dark] input:hover,[data-theme=dark] textarea:hover,[data-theme=dark] select:hover{border-color:#3a3632}[data-theme=dark] input:focus,[data-theme=dark] textarea:focus,[data-theme=dark] select:focus{background:#191716}[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:#78716c}[data-theme=dark] .topbar,[data-theme=dark] .admin-head{background:#111a2be0}[data-theme=dark] .wh-totals{background:var(--panel);border-color:var(--line)}[data-theme=dark] .floor-tab{background:#242120}[data-theme=dark] .floor-tab:hover{background:#2d2a27}[data-theme=dark] .floor-tab.active,[data-theme=dark] .mode-switch button.active{background:#eeece9;color:#121110;border-color:#eeece9}[data-theme=dark] .badge{background:var(--brand-tint);color:#fbbf24}[data-theme=dark] .ro-badge{background:#f59e0b2e;color:#fcd34d}[data-theme=dark] .canvas-scroll{background:#171514;border-color:var(--line)}[data-theme=dark] .view3d .canvas-scroll{background:radial-gradient(900px 520px at 50% 0%,#242120,#0d1626)}[data-theme=dark] .label-bar{background:linear-gradient(180deg,#242120,#1e1c1a);border-color:var(--line)}[data-theme=dark] .trim-bar{background:#2a1620;color:#fecaca;border-color:#5c2531}[data-theme=dark] .view-gizmo{background:#1e1c1a;border-color:var(--line)}[data-theme=dark] .giz-btn{background:#242120;color:var(--ink)}[data-theme=dark] .rack-rail{background:linear-gradient(180deg,#242120,#1b1917)}[data-theme=dark] .rack-shelf{background:#1e1c1a;border-color:var(--line)}[data-theme=dark] .rack-bar,[data-theme=dark] .lc-bar{background:#2e2b28}[data-theme=dark] .rack-lv{background:#334155}[data-theme=dark] .rack-base,[data-theme=dark] .rack-base-bar{color:#8f8983}[data-theme=dark] .inspector,[data-theme=dark] .mobile-header,[data-theme=dark] .admin-page{background:var(--panel)}[data-theme=dark] .admin-page{background:var(--bg)}[data-theme=dark] .form-card,[data-theme=dark] .wh-card,[data-theme=dark] .alloc-row,[data-theme=dark] .modal,[data-theme=dark] .search-results,[data-theme=dark] .firma-chip,[data-theme=dark] .size-btn,[data-theme=dark] .shelf-level,[data-theme=dark] .login-card{background:var(--panel);border-color:var(--line);color:var(--ink)}[data-theme=dark] .stat-card{background:linear-gradient(180deg,#201d1b,#1b1918);border-color:var(--line)}[data-theme=dark] .donut:before{background:var(--panel)}[data-theme=dark] .alloc-row.group-row{background:linear-gradient(180deg,#242120,#1e1c1a)}[data-theme=dark] .alloc-list .alloc-row.sub{background:#1b1917;border-left-color:var(--brand-400)}[data-theme=dark] .alloc-row:hover,[data-theme=dark] .firma-chip:hover{background:#242120;border-color:#3a3632}[data-theme=dark] .search-row:hover,[data-theme=dark] .notif-row:hover{background:#242120}[data-theme=dark] .lv-badge{background:#334155;color:#eeece9}[data-theme=dark] .shelf-grid-wrap{background:#171514;border-color:var(--line)}[data-theme=dark] .admins-card{background:linear-gradient(180deg,#201d24,#1a1822)}[data-theme=dark] .user-chip,[data-theme=dark] .shelf-badge{background:#242120;border-color:var(--line);color:#d6d3d1}[data-theme=dark] .kind-btn.active,[data-theme=dark] .size-btn.active{background:var(--brand-tint)}[data-theme=dark] .kind-area{color:#78716c}[data-theme=dark] .file-btn{background:var(--brand-tint);color:#fbbf24;border-color:#b453098c}[data-theme=dark] .file-btn:hover{background:#3b82f642}[data-theme=dark] .modal-overlay{background:#0a0908ad}[data-theme=dark] .pill.green{background:#16a34a2e;color:#86efac}[data-theme=dark] .pill.amber{background:#f59e0b2e;color:#fcd34d}[data-theme=dark] .pill.red{background:#dc262633;color:#fca5a5}[data-theme=dark] .price-box{background:#16a34a24;border-color:#22c55e52;color:#86efac}[data-theme=dark] .open-btn{background:#242120}[data-theme=dark] .open-btn.on{background:#16a34a29;color:#86efac;border-color:#22c55e80}[data-theme=dark] .open-btn.off{background:#dc262629;color:#fca5a5;border-color:#f8717180}[data-theme=dark] .log-btn{background:#242120}[data-theme=dark] .log-btn:hover{background:#2d2a27}[data-theme=dark] .log-btn b{background:#eeece9;color:#121110}[data-theme=dark] .login-wrap{background:radial-gradient(900px 520px at 50% -10%,#2a241c,transparent 62%),var(--bg)}[data-theme=dark] .login-hint{background:var(--field)}[data-theme=dark] .login-err{background:#dc262626;border-color:#f8717159;color:#fecaca}[data-theme=dark] .rack-frame{background:repeating-linear-gradient(135deg,#242120,#242120 6px,#1e1c1a 6px,#1e1c1a 12px);border-color:#4a453f}[data-theme=dark] .rack-grid th{color:#d6d3d1}[data-theme=dark] .rack-grid td{border-bottom-color:#4a453f}[data-theme=dark] .rack-grid tr.rack-row:first-child td{border-top-color:#4a453f}[data-theme=dark] .rack-grid td.bay-end{border-right-color:#57534e}[data-theme=dark] .rack-slot{background:var(--field);border-color:var(--line)}[data-theme=dark] .rack-slot.empty:hover{background:#2d2a27}[data-theme=dark] button.primary{background:var(--brand);border-color:var(--brand);color:#fff}[data-theme=dark] button.primary:hover{background:var(--brand-600)}[data-theme=dark] .chip.active,[data-theme=dark] .giz-btn:hover{background:var(--brand);border-color:var(--brand);color:#fff}[data-theme=dark] .canvas-toolbar button.active{background:#eeece9;border-color:#eeece9;color:#121110}.ops-btns{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.ops-btns .log-btn{padding:6px 10px}.item-row{display:grid;grid-template-columns:1.4fr 1fr 64px 130px 28px;gap:4px;align-items:center;margin-bottom:4px}.item-row input{min-height:32px;padding:5px 8px;font-size:13px}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.qr-label{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:8px;background:#fff;break-inside:avoid}.qr-label-txt{display:flex;flex-direction:column;gap:2px;min-width:0}.qr-label-txt b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qr-label-txt span{font-size:11px;color:var(--muted)}@media print{body.printing-qr *{visibility:hidden}body.printing-qr .qr-print-area,body.printing-qr .qr-print-area *{visibility:visible}body.printing-qr .qr-print-area{position:absolute;top:0;right:0;bottom:0;left:0;padding:10mm}body.printing-qr .modal{box-shadow:none;border:none;max-height:none;overflow:visible}.no-print{display:none!important}}@media (max-width: 820px){.ops-btns{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.item-row{grid-template-columns:1fr 1fr}.item-row input[type=date]{grid-column:span 2}}[data-theme=dark] .qr-label{background:#fff}.rack-grid th .lv-size{display:inline-block;margin-top:3px;padding:1px 6px;font-size:10px;font-weight:700;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);box-shadow:none}.rack-grid th button.lv-size:hover{border-color:var(--brand);color:var(--brand)}.rack-grid th .lv-size.ro{cursor:default}.rack-slot.closed{cursor:not-allowed;opacity:.55;border-style:dashed;background:repeating-linear-gradient(135deg,transparent,transparent 4px,rgba(100,116,139,.22) 4px,rgba(100,116,139,.22) 6px)}.docs-page .admin-head h1{white-space:nowrap}.docs-head-role{margin-left:auto}.docs-nav{display:flex;gap:6px;padding:10px 20px;overflow-x:auto;background:var(--panel);border-bottom:1px solid var(--border);scrollbar-width:none}.docs-nav::-webkit-scrollbar{display:none}.docs-nav a{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;border:1px solid var(--border);background:var(--field);transition:all .2s}.docs-nav a:hover{color:var(--text)}.docs-nav a.on{color:#fff;background:var(--brand);border-color:var(--brand)}.docs-scroll{flex:1;overflow-y:auto;scroll-behavior:smooth}.docs-content{max-width:1040px;margin:0 auto;padding:22px 24px 90px;display:flex;flex-direction:column;gap:22px}.docs-hero h2{margin:6px 0 4px;font-size:26px;letter-spacing:-.01em}.docs-hero p{margin:0;color:var(--muted)}.vs{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:18px;scroll-margin-top:12px;animation:vs-in .6s both}.vs-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.vs-head h3{margin:0;font-size:19px}.vs-sub{color:var(--muted);font-size:13px}.vs-num{font:800 13px ui-monospace,Menlo,monospace;color:var(--brand);background:var(--brand-tint);border-radius:8px;padding:5px 8px}.vs-roles{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.vs-role{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--field);border:1px solid var(--border)}.vs-role.admin{color:#7c3aed}.vs-role.manager{color:var(--brand)}.vs-role.owner{color:#0284c7}.vs-role.tenant{color:var(--ok)}.vs-body{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(220px,1fr);gap:18px;align-items:stretch}.vs-stage{position:relative;background:var(--field);border:1px solid var(--border);border-radius:12px;overflow:hidden}.vs-stage svg{display:block;width:100%;height:auto;overflow:hidden}.vs-caption{position:absolute;left:10px;bottom:10px;font-size:13px;font-weight:700;background:var(--panel);border:1px solid var(--border);border-radius:999px;padding:5px 12px;box-shadow:0 4px 14px #00000014;animation:cap-in .4s both}.vs-cap-n{color:var(--brand);font-family:ui-monospace,Menlo,monospace;margin-right:4px}.vs-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;justify-content:center}.vs-steps li{position:relative;display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;cursor:pointer;overflow:hidden;transition:background .25s}.vs-steps li:hover{background:var(--field)}.vs-steps li .grow{display:flex;flex-direction:column;min-width:0}.vs-steps li b{font-size:14px;color:var(--muted);transition:color .25s}.vs-steps li span:not(.vs-dot){font-size:12px;color:var(--muted);max-height:0;opacity:0;transition:all .3s}.vs-steps li.on{background:var(--brand-tint)}.vs-steps li.on b,.vs-steps li.done b{color:var(--text)}.vs-steps li.on span:not(.vs-dot){max-height:20px;opacity:1}.vs-dot{flex-shrink:0;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;background:var(--field);border:1px solid var(--border);color:var(--muted);transition:all .25s}.vs-steps li.on .vs-dot{background:var(--brand);border-color:var(--brand);color:#fff;transform:scale(1.1)}.vs-steps li.done .vs-dot{background:var(--ok);border-color:var(--ok);color:#fff}.vs-bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--brand);transform-origin:left;animation-name:vs-bar;animation-timing-function:linear;animation-fill-mode:both}.vs.hero{border-color:var(--brand-ring);box-shadow:0 10px 40px -18px var(--brand-ring)}@keyframes vs-bar{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes vs-in{0%{opacity:0;transform:translateY(14px)}}@keyframes cap-in{0%{opacity:0;transform:translateY(6px)}}.sc-floor{fill:var(--panel);stroke:var(--line);stroke-width:1.5}.sc-cell{fill:var(--field);stroke:var(--line);stroke-width:.6}.sc-card{fill:var(--panel);stroke:var(--line);stroke-width:1;filter:drop-shadow(0 3px 6px rgba(0,0,0,.12))}.sc-field{fill:var(--field);stroke:var(--line)}.sc-field.on{fill:var(--brand-tint);stroke:var(--brand)}.sc-t{fill:var(--text);font:700 8.5px system-ui,sans-serif}.sc-s{fill:var(--muted);font:500 7.5px system-ui,sans-serif}.sc-w{fill:#fff;font:700 7.5px system-ui,sans-serif}.sc-big{fill:var(--text);font:800 15px system-ui,sans-serif}.sc-op{fill:var(--muted);font:800 12px system-ui,sans-serif}.sc-ink{fill:var(--text)}.sc-line{fill:var(--line);transform-box:fill-box;transform-origin:left;transition:transform .6s}.sc-rule{stroke:var(--line)}.sc-hatch-bg{fill:var(--field)}.sc-hatch-ln{stroke:var(--muted);opacity:.45}.sc-dead{stroke:var(--muted);stroke-width:.8}.sc-outline{fill:none;stroke:var(--brand);stroke-width:3;stroke-linejoin:round;stroke-dasharray:1;transition:stroke-dashoffset 1.8s cubic-bezier(.5,0,.3,1)}.sc-rack{fill:var(--brand-tint);stroke:var(--brand);stroke-width:1.4}.sc-rack-ln{stroke:var(--brand);stroke-width:.6;opacity:.5}.sc-rack-t{fill:var(--brand-600);font:800 8px system-ui,sans-serif}[data-theme=dark] .sc-rack-t{fill:var(--brand-400)}.sc-beam{fill:var(--brand)}.sc-post{fill:var(--muted)}.sc-slot{fill:var(--field);stroke:var(--line);stroke-dasharray:2 2}.sc-sel{fill:var(--brand-tint);stroke:var(--brand);stroke-width:1.6;stroke-dasharray:4 3;transform-box:fill-box;transform-origin:0 0;transition:transform 1.1s .25s cubic-bezier(.4,0,.2,1),opacity .4s;animation:ants 1s linear infinite}.sc-hi{fill:none;stroke:var(--brand);stroke-width:2;stroke-dasharray:4 3;animation:ants 1s linear infinite}@keyframes ants{to{stroke-dashoffset:-14}}.sc-trailer{fill:#57534e}.sc-cab{fill:var(--brand)}.sc-win{fill:#fde68a}.sc-wheel{fill:#1c1917;stroke:#a8a29e;stroke-width:1.5}.sc-stamp{fill:none;stroke:var(--danger);stroke-width:2}.sc-stamp-t{fill:var(--danger);font:900 9px system-ui,sans-serif;letter-spacing:.08em}.sc-token{fill:var(--brand-tint);stroke:var(--brand)}.sc-check{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:opacity .3s}.sc-check.sm{stroke-width:1.8}.sc-tl{stroke:var(--line);stroke-width:3;transition:stroke .5s}.sc-tl.on{stroke:var(--brand)}.sc-tl-dot{fill:var(--panel);stroke:var(--line);stroke-width:2.5;transition:all .5s}.sc-tl-dot.on{fill:var(--brand);stroke:var(--brand)}.sc-printer{fill:#57534e}.sc-pallet{fill:#a16f3d}.sc-label{fill:#fff;stroke:#d6d3d1}.sc-qr,.sc-move .sc-label~.sc-ink{fill:#1c1917}.sc-phone{fill:#1c1917}.sc-screen{fill:var(--panel)}.sc-scan{fill:var(--danger);opacity:.8;animation:scan 1.3s ease-in-out infinite alternate}@keyframes scan{to{transform:translateY(60px)}}.sc-pin{animation:pin .8s ease-in-out infinite alternate}@keyframes pin{to{transform:translateY(-4px)}}.sc-coin{transform-box:fill-box;transform-origin:center;animation:coin 1.2s ease-in-out infinite}@keyframes coin{50%{transform:scale(1.12) rotate(-8deg)}}.sc-pop{transform-box:fill-box;transform-origin:center;transition:opacity .45s,transform .5s cubic-bezier(.34,1.56,.64,1)}.sc-pop.off{opacity:0;transform:scale(.6)}.sc-move{transition:transform .9s cubic-bezier(.4,0,.2,1)}.sc-move.slow{transition-duration:1.6s}.sc-load{transition:opacity .45s,transform .5s cubic-bezier(.34,1.56,.64,1)}.sc-load.off{opacity:0}.sc-load.drop.off{transform:translateY(-14px)}.sc-slat{fill:#00000047}.sc-box{fill:#ffffff38}.sc-mark{transform-box:fill-box;transform-origin:center;transition:opacity .3s,transform .4s cubic-bezier(.34,1.56,.64,1)}.sc-mark.off{opacity:0;transform:scale(.2)}.sc-cursor{transition:transform .9s cubic-bezier(.4,0,.2,1),opacity .3s}.sc-cursor-p{fill:#1c1917;stroke:#fff;stroke-width:1.2}.sc-ripple{fill:none;stroke:var(--brand);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center;animation:ripple .7s .95s ease-out both}@keyframes ripple{0%{opacity:.9;transform:scale(.2)}to{opacity:0;transform:scale(1.6)}}.sc-cursor.drag-j{animation:drag-j 1.3s .3s cubic-bezier(.4,0,.2,1) both}@keyframes drag-j{0%{transform:translate(126px,66px)}to{transform:translate(206px,102px)}}.sc-cursor.drag-r{animation:drag-r 1s .2s cubic-bezier(.4,0,.2,1) both}@keyframes drag-r{0%{transform:translate(56px,148px)}to{transform:translate(152px,148px)}}.sc-cursor.trace{animation:trace 1.8s cubic-bezier(.5,0,.3,1) both}@keyframes trace{0%{transform:translate(60px,30px)}33%{transform:translate(300px,30px)}45%{transform:translate(300px,110px)}58%{transform:translate(220px,110px)}70%{transform:translate(220px,170px)}to{transform:translate(60px,170px)}}.role-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.role-card{position:relative;display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:12px;border:1px solid var(--border);background:var(--field);animation:vs-in .5s both;transition:transform .2s}.role-card:hover{transform:translateY(-2px)}.role-card.me{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-ring)}.role-me{position:absolute;top:10px;right:10px;font-size:11px;font-weight:800;color:#fff;background:var(--brand);border-radius:999px;padding:2px 8px}.role-ico{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;color:#fff}.role-card.admin .role-ico{background:#7c3aed}.role-card.manager .role-ico{background:var(--brand)}.role-card.owner .role-ico{background:#0284c7}.role-card.tenant .role-ico{background:var(--ok)}.role-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.role-card li svg{color:var(--ok)}.alert-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.alert-card{position:relative;display:flex;flex-direction:column;gap:2px;padding:16px;border-radius:12px;background:var(--field);border:1px solid var(--border);border-top:3px solid var(--c)}.alert-ico{position:absolute;top:14px;right:14px;color:var(--c);animation:ring 2.4s ease-in-out infinite}@keyframes ring{0%,70%,to{transform:rotate(0)}75%{transform:rotate(14deg)}85%{transform:rotate(-12deg)}95%{transform:rotate(6deg)}}.alert-big{font-size:26px;font-weight:900;color:var(--c)}.alert-t{font-weight:700}.alert-d{font-size:12.5px;color:var(--muted)}.key-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.key-chip{display:flex;align-items:center;gap:6px;padding:8px 12px;border-radius:10px;background:var(--field);border:1px solid var(--border);font-size:13px}.docs-page kbd{font:700 11.5px ui-monospace,Menlo,monospace;background:var(--panel);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px}.faq{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px}.faq details{border:1px solid var(--border);border-radius:10px;background:var(--field);padding:10px 14px}.faq summary{cursor:pointer;font-weight:700;font-size:14px;list-style:none;display:flex;justify-content:space-between}.faq summary:after{content:"+";color:var(--brand);font-weight:800;transition:transform .2s}.faq details[open] summary:after{transform:rotate(45deg)}.faq p{margin:8px 0 0;color:var(--muted);font-size:13.5px}@media (max-width: 820px){.docs-head-role{display:none}.docs-page .admin-head{gap:8px}.docs-page .admin-head h1{font-size:16px}.docs-nav{padding:8px 16px}.docs-content{padding:16px 16px 60px;gap:16px}.vs{padding:14px}.vs-head{flex-wrap:wrap}.vs-body{grid-template-columns:1fr}.vs-caption{display:none}.vs-steps li{padding:6px 8px}}@media (prefers-reduced-motion: reduce){.vs,.role-card,.sc-scan,.sc-pin,.sc-coin,.alert-ico,.sc-sel,.sc-hi{animation:none!important}}
