.swan-wh{--ink:#2e2340;--muted:#756b83;--purple:#7547a0;--pink:#e582b4;--teal:#188b89;--line:#e9e1ef;color:var(--ink);background:#f7f4f9;font:15px/1.5 system-ui,-apple-system,sans-serif;padding:32px;border-radius:30px;max-width:1440px;margin:auto;box-sizing:border-box;isolation:isolate}.swan-wh *{box-sizing:border-box}.swan-wh [hidden]{display:none!important}.swan-wh h1,.swan-wh h2,.swan-wh h3,.swan-wh p{margin:0;font-family:inherit}.swan-wh h1{font-size:clamp(30px,4vw,46px);line-height:1.15;letter-spacing:-1.7px;font-weight:750;margin:8px 0}.swan-wh h2{font-size:22px;font-weight:700;letter-spacing:-.5px}.swan-wh h3{font-size:17px}.swan-wh p{color:var(--muted)}.wh-header,.wh-bar,.wh-section-head,.wh-scene-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.wh-header{margin-bottom:28px}.wh-eyebrow{font-size:10px;letter-spacing:2px;font-weight:750;color:var(--purple)}.swan-wh button,.swan-wh input,.swan-wh select{font:inherit;color:var(--ink);border-radius:13px;border:1px solid var(--line);min-height:44px;background:white;padding:10px 13px;max-width:100%}.swan-wh button{cursor:pointer;font-weight:650;transition:background .15s,box-shadow .15s;white-space:normal}.swan-wh button:hover{background:#f0e8f6;border-color:#c8addd}.swan-wh button:focus-visible,.swan-wh input:focus-visible,.swan-wh select:focus-visible,.swan-wh canvas:focus-visible{outline:3px solid #9d69c3;outline-offset:3px}.swan-wh button:disabled{opacity:.5;cursor:wait}.swan-wh .primary,.swan-wh button[aria-pressed=true]{background:var(--purple);color:white;border-color:var(--purple)}.wh-sync,.wh-pill{padding:8px 13px;font-size:12px;border-radius:100px;background:#e7f3ef;color:#237d68;white-space:nowrap}.wh-sync.error{background:#fff0dc;color:#94621b}.wh-bar{padding:18px;background:white;border:1px solid var(--line);border-radius:20px;align-items:end}.swan-wh label{display:grid;gap:5px;font-size:12px;font-weight:650;min-width:0}.wh-bar label:first-child{flex:1}.wh-search{flex:1.4}.wh-bar select,.wh-bar input{width:100%;background:#fcfafd}.wh-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.wh-stat{padding:17px 20px;border:1px solid var(--line);border-radius:18px;background:#fff}.wh-stat strong{display:block;font-size:25px;letter-spacing:-1px}.wh-stat span{font-size:12px;color:var(--muted)}.wh-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.wh-tabs button{border-radius:100px}.wh-workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px}.wh-scene-card,.wh-detail,.wh-grid-panel,.wh-stock-panel,.wh-setup{background:white;border:1px solid var(--line);border-radius:24px;overflow:hidden}.wh-scene-top{padding:22px 24px 0}.wh-canvas-wrap{position:relative;height:420px;overflow:hidden;background:radial-gradient(ellipse at 50% 75%,#f8f0fc,#fff 80%)}.wh-canvas-wrap canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}.wh-scene-hint{position:absolute;bottom:13px;left:0;width:100%;text-align:center;font-size:11px;color:var(--muted);pointer-events:none}.wh-controls{display:flex;align-items:center;gap:10px;padding:0 22px}.wh-controls input{flex:1;width:80px;accent-color:var(--purple);padding:0}.wh-walls{display:flex;gap:8px;padding:12px 22px;justify-content:center}.wh-walls button{flex:1;min-width:0;font-size:12px;min-height:36px;padding:6px}.wh-legend{display:flex;justify-content:center;gap:16px;padding:0 14px 18px;color:var(--muted);font-size:10px;flex-wrap:wrap}.wh-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.teal{background:#47b2a7}.purple{background:#9862ba}.gray{background:#cec5d6}.wh-detail{padding:22px;align-self:start;min-height:320px}.wh-detail h2{margin:9px 0}.wh-detail p{font-size:13px}.wh-detail form{display:grid;gap:13px;margin-top:18px}.wh-detail .wh-check{display:flex;align-items:center;gap:10px;font-size:14px}.wh-check input{min-height:22px;width:22px;accent-color:var(--teal)}.wh-detail ul{padding:0;list-style:none;margin:16px 0 0}.wh-detail li{padding:12px 0;border-top:1px solid var(--line);font-size:13px}.wh-detail small{display:block;color:var(--muted)}.wh-grid-panel,.wh-stock-panel{margin-top:20px;padding:24px}.wh-section-head{margin-bottom:20px}.wh-grids{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.wh-grid-wall h3{margin-bottom:10px}.wh-grid{display:grid;gap:5px}.swan-wh .wh-cell{min-width:0;min-height:43px;padding:6px 3px;border-radius:8px;background:#f5f2f7;border-color:#e9e1ef;color:#a195ac;font-size:10px;overflow:hidden;text-overflow:ellipsis}.swan-wh .wh-cell.enabled{background:#e8f5f2;color:#267d75;border-color:#b8ddd5}.swan-wh .wh-cell.occupied{background:#eee3f5;color:#70448c;border-color:#d9bfe7}.swan-wh .wh-cell.selected{box-shadow:0 0 0 2px #7c49a0;border-color:#7c49a0}.wh-note,.wh-notice,.wh-pending{font-size:13px;background:#fff4e6;border-radius:16px;padding:16px;margin-top:16px;color:#745132!important}.wh-notice.success{background:#e7f3ee;color:#257c63!important}.wh-pending button{margin:10px 5px 0 0}.wh-setup{padding:24px;margin-top:20px}.wh-setup button{margin:16px 10px 0 0}.wh-stock-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:18px 0;border-top:1px solid var(--line)}.wh-stock-row h3{font-size:15px}.wh-stock-row p,.wh-stock-row small{font-size:12px;color:var(--muted)}.wh-stock-row button{grid-column:1/-1;justify-self:start;font-size:12px}.wh-stock-row .wh-quantity{text-align:right;font-weight:700}.wh-footer{font-size:11px;color:var(--muted);padding:20px 4px 0;display:flex;gap:20px;justify-content:space-between}.swan-wh dialog{border:1px solid var(--line);border-radius:24px;width:min(480px,calc(100vw - 28px));max-height:85vh;overflow:auto;padding:26px;color:var(--ink)}.swan-wh dialog::backdrop{background:#26123480}.swan-wh dialog form{display:grid;gap:15px}.wh-dialog-actions{display:flex;justify-content:flex-end;gap:10px}.swan-wh .wh-empty{padding:24px;text-align:center;color:var(--muted)}.swan-wh [data-unmapped]{margin-top:20px;font-size:13px}.swan-wh [data-unmapped] button{margin:8px 6px 0 0;font-size:12px}.swan-wh .wh-match{box-shadow:0 0 0 2px #dd78b0}.swan-wh.busy{cursor:progress}
@media(max-width:950px){.swan-wh{padding:22px}.wh-workspace{grid-template-columns:minmax(0,1fr) 260px}.wh-canvas-wrap{height:360px}}@media(max-width:720px){.swan-wh{padding:16px 12px;border-radius:22px}.wh-header{align-items:flex-start;gap:8px;margin-bottom:18px}.wh-header p{font-size:12px}.wh-sync{font-size:10px;max-width:125px;white-space:normal}.wh-bar{flex-wrap:wrap;padding:12px;gap:10px}.wh-bar label:first-child{flex-basis:100%}.wh-search{flex:1}.wh-bar button{font-size:12px}.wh-stats{gap:7px;margin:15px 0}.wh-stat{padding:12px 10px;border-radius:13px}.wh-stat strong{font-size:23px}.wh-stat span{font-size:10px}.wh-tabs{gap:6px}.wh-tabs button{font-size:11px;padding:8px 11px;min-height:39px}.wh-workspace{grid-template-columns:minmax(0,1fr)}.wh-scene-top{padding:16px 16px 0}.wh-canvas-wrap{height:315px}.wh-controls{padding:0 12px;gap:7px}.wh-controls button{font-size:12px;padding:8px 10px}.wh-walls{padding:10px 12px}.wh-detail{min-height:0;padding:18px}.wh-grids{grid-template-columns:minmax(0,1fr)}.wh-grid-panel,.wh-stock-panel{padding:17px}.wh-section-head{gap:8px;align-items:flex-start}.wh-section-head h2{font-size:20px}.wh-section-head button{font-size:11px;max-width:140px}.wh-footer{display:block}.wh-footer span{display:block;margin-top:5px}.swan-wh h1{letter-spacing:-1px}.wh-detail h2{font-size:20px}}@media(prefers-reduced-motion:reduce){.swan-wh *{transition:none!important;scroll-behavior:auto!important}}

.swan-wh.wh-stock-ready canvas,.swan-wh.wh-stock-ready .wh-draggable{touch-action:none;-webkit-touch-callout:none;user-select:none}.swan-wh canvas,.swan-wh .wh-cell{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.swan-wh.wh-dragging{user-select:none}.swan-wh .wh-drop-target{outline:3px solid #e477b1;background:#f8e2ed!important}.wh-drag-status{position:fixed;z-index:999999;bottom:calc(16px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);padding:14px 20px;border-radius:18px;background:#49315e;color:white;box-shadow:0 6px 24px #24113240;pointer-events:none;font-size:14px}.swan-wh [data-stock-pick]{display:block;margin-top:8px}.swan-wh [data-transfer-dialog]{max-width:calc(100vw - 28px)}
.wh-tool-buttons{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.wh-photo{margin:12px 0;background:#f3eff6;border-radius:16px;min-height:48px;display:grid;place-items:center;color:#756c80;overflow:hidden}.wh-photo img{display:block;width:100%;max-height:240px;object-fit:contain}.wh-photo-upload{font-size:13px!important}.wh-photo-upload input{max-width:100%}.swan-wh textarea{width:100%;min-height:90px;padding:12px;border:1px solid #ddd3e5;border-radius:12px;font:inherit;box-sizing:border-box}.wh-history{border-bottom:1px solid #ddd3e5;padding:16px 0}.wh-labels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.wh-labels article{text-align:center;border:1px solid #ccc;padding:12px;break-inside:avoid}.wh-labels svg{width:100%;max-width:210px;height:auto}.wh-labels small{overflow-wrap:anywhere}.swan-wh [data-scan-video]{width:100%;max-height:320px;background:#221e29;border-radius:16px}.swan-wh [data-tool-error]{color:#9a294a}.swan-wh [data-tools-dialog]{max-width:640px;width:calc(100% - 40px);box-sizing:border-box}.swan-wh dialog form label{display:block;margin:12px 0}.swan-wh dialog input,.swan-wh dialog select{max-width:100%;box-sizing:border-box}
@media print{body.wh-printing>*{visibility:hidden}body.wh-printing .swan-wh [data-tools-dialog],body.wh-printing .swan-wh [data-tools-dialog] *{visibility:visible}body.wh-printing .swan-wh [data-tools-dialog]{position:absolute;inset:0;width:100%;max-width:none;max-height:none;overflow:visible;border:0;margin:0}body.wh-printing .swan-wh [data-tools-dialog] button,body.wh-printing .swan-wh [data-tools-dialog] h2,body.wh-printing .swan-wh [data-tools-dialog] p{display:none}body.wh-printing dialog::backdrop{display:none}.wh-labels{grid-template-columns:repeat(3,1fr)}}
.swan-wh [data-product-locations]{display:block;margin:8px 0}.wh-detail li>strong{display:block;font-size:15px}.wh-photo-upload{margin-bottom:12px}
