:root{--bg:#f4f4f9;--surface:#ffffff;--surface-2:#f8f8fc;--line:#dadae8;--text:#01011b;--muted:#6c6c85;--sidebar:#45455c;--sidebar-text:#dadae8;--sidebar-active:#5c5c75;--primary:#7b04df;--primary-hover:#6a03c2;--primary-soft:#f1e6fb;--link:#006be0;--success:#32a727;--success-soft:#e7f6e5;--warning:#b86e00;--warning-soft:#fff4dc;--danger:#e0262d;--danger-soft:#fde8e8;--info-soft:#fff8d6;--radius:8px;--font:system-ui,-apple-system,"Segoe UI",Roboto,Ubuntu,Cantarell,"Noto Sans",sans-serif}*{box-sizing:border-box}body,html{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 var(--font)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--primary);outline-offset:1px}h1{font-size:24px;font-weight:700;margin:0}h2{font-size:18px;font-weight:400;margin:0 0 16px}.layout{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-text);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;padding-bottom:8px}.logo{display:flex;align-items:center;gap:10px;height:52px;padding:0 14px;color:#fff;font-size:22px;font-weight:700;letter-spacing:-.01em}.logo:hover{text-decoration:none}.logo-mark{width:22px;height:22px;border:3.5px solid #fff;border-radius:3px}.sidebar nav{display:flex;flex-direction:column;gap:2px;padding:8px;flex:1 1}.nav-item{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:var(--radius);color:var(--sidebar-text);border:0;background:transparent;text-align:left;width:100%}.nav-item:hover{background:rgba(255,255,255,.07);text-decoration:none}.nav-item.active{background:var(--sidebar-active);color:#fff}.nav-bottom{margin:0 8px;width:auto}.nav-badge{margin-left:auto;background:var(--primary);color:#fff;border-radius:12px;padding:0 8px;font-size:12px;line-height:20px}.nav-badge.error{background:var(--danger)}.workspace{min-width:0;display:flex;flex-direction:column}.header{height:52px;background:var(--surface);border-bottom:1px solid var(--line);gap:16px;padding:0 20px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.header,.header-search{display:flex;align-items:center}.header-search{gap:8px;width:294px;max-width:40vw;height:32px;border:1px solid var(--line);border-radius:var(--radius);padding:0 10px;color:var(--muted)}.header-search input{border:0;outline:0;flex:1 1;min-width:0;color:var(--text);background:transparent}.header-status{margin-left:auto;display:flex;gap:8px}.status-pill{padding:5px 12px;border-radius:16px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line);font-size:13px}.status-pill:hover{text-decoration:none}.status-pill.warn{background:var(--warning-soft);color:var(--warning);border-color:transparent}.status-pill.error{background:var(--danger-soft);color:var(--danger);border-color:transparent}.content{padding:24px 20px 40px;display:flex;flex-direction:column;gap:16px}.page-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-height:40px}.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.back{display:inline-flex;color:var(--text)}.card{background:var(--surface);border-radius:var(--radius);padding:20px 16px}.card.flush{padding:0;overflow:hidden}.card-title{font-size:18px;margin:0 0 16px;font-weight:400;display:flex;gap:8px}.btn,.card-title{align-items:center}.btn{display:inline-flex;justify-content:center;gap:6px;height:40px;padding:0 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font-weight:500;white-space:nowrap;color:var(--text)}.btn:hover:not(:disabled){background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover:not(:disabled){background:var(--primary-hover)}.btn.danger{color:var(--danger)}.btn.sm{height:32px;padding:0 12px;font-size:13px}.btn.link{border:0;background:none;color:var(--link);padding:0;height:auto;font-weight:400}.btn.link:hover{text-decoration:underline;background:none}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);color:var(--text)}.icon-btn[aria-pressed=true]{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.input,.select,.textarea{height:40px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:0 12px;width:100%}.textarea{height:auto;min-height:140px;padding:10px 12px;resize:vertical;line-height:1.5}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--primary)}.input::placeholder,.textarea::placeholder{color:#a3a3b8}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.label{font-weight:700;font-size:14px}.hint{color:var(--muted);font-size:13px}.hint.error{color:var(--danger)}.hidden-mark{color:var(--muted);font-size:12px;font-style:italic}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.row{flex-wrap:wrap;align-items:flex-end}.row,.stack{display:flex;gap:16px}.stack{flex-direction:column}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.check input{width:18px;height:18px;accent-color:var(--primary);margin:0}.badge{display:inline-flex;align-items:center;gap:6px;border-radius:12px;padding:1px 10px;font-size:13px;background:var(--surface-2);color:var(--muted);white-space:nowrap}.badge.primary{background:var(--primary-soft);color:var(--primary)}.badge.ok{background:var(--success-soft);color:var(--success)}.badge.warn{background:var(--warning-soft);color:var(--warning)}.badge.error{background:var(--danger-soft);color:var(--danger)}.dot{width:8px;height:8px;border-radius:50%;background:#b4b4c6;flex:none}.dot.synced{background:var(--success)}.dot.pending{background:#f0a400;animation:pulse 1.2s infinite}.dot.error{background:var(--danger)}.dot.none{background:transparent;border:1.5px solid #b4b4c6}@keyframes pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.dot.pending{animation:none}}.notice{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:var(--radius);background:var(--info-soft);border:1px solid #f5d36b}.notice.error{background:var(--danger-soft);border-color:#f3b0b2}.muted{color:var(--muted)}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.empty{padding:48px 16px;text-align:center;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:var(--surface);border-radius:var(--radius)}.stat{padding:20px 32px;border-left:1px solid var(--line)}.stat:first-child{border-left:0}.stat .k{font-size:14px;margin-bottom:4px}.stat .v{font-size:18px;font-weight:700}.stat .v small{font-size:14px;font-weight:400;color:var(--muted)}.stat .v.error{color:var(--danger)}.stat .v.warn{color:var(--warning)}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:16px;border-bottom:1px solid var(--line)}.toolbar .input{max-width:560px;flex:1 1 260px}.toolbar .select{width:auto;min-width:180px}.seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;height:40px}.seg button{border:0;border-right:1px solid var(--line);background:var(--surface);padding:0 14px}.seg button:last-child{border-right:0}.seg button[aria-pressed=true]{background:var(--primary-soft);color:var(--primary);font-weight:500}.bulkbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 16px;background:var(--primary-soft);border-bottom:1px solid var(--line)}.bulkbar .select{width:auto}.bulkbar .input{width:90px}.table-wrap{overflow-x:auto}table.table{border-collapse:collapse;width:100%;min-width:760px}.table th{text-align:left;font-weight:700;padding:14px 12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:bottom}.table th small{display:block;font-weight:400;color:var(--muted);font-size:12px}.table td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:#fbfbfe}.table tbody tr.selected td{background:#faf5fe}.table .num{text-align:right}.table .w-check{width:44px}.thumb{width:64px;height:64px;border-radius:4px;background:#e6e6ef;display:grid;place-items:center;color:#fff;overflow:hidden;flex:none}.thumb img{width:100%;height:100%;object-fit:cover}.name-cell{display:flex;gap:12px;min-width:240px;max-width:420px}.name-cell .sub{color:var(--muted);font-size:13px;margin-top:4px}.cell-input{width:92px;height:32px;border:1px solid transparent;background:transparent;border-radius:6px;padding:0 8px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cell-input:hover{border-color:var(--line)}.cell-input:focus{border-color:var(--primary);background:var(--surface);outline:none}.store-price{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text)}a.store-price:hover{text-decoration:none;color:var(--primary)}.store-price.manual{color:var(--link)}.store-price b{font-weight:700}.pager{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--line)}.pager .spacer{flex:1 1}.with-tree{display:grid;grid-template-columns:260px minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}.tree{background:var(--surface);border-radius:var(--radius);padding:12px 8px;position:-webkit-sticky;position:sticky;top:68px;max-height:calc(100vh - 84px);overflow:auto}.tree-title{font-weight:700;padding:4px 8px 8px}.tree-head{align-items:baseline}.tree-head,.tree-node{display:flex;justify-content:space-between}.tree-node{gap:8px;width:100%;border:0;background:none;padding:6px 8px;border-radius:6px;text-align:left}.tree-node:hover{background:var(--surface-2)}.tree-node.active{background:var(--primary-soft);color:var(--primary);font-weight:500}.tree-node .n{color:var(--muted);font-size:12px}.edit-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-gap:16px;gap:16px;align-items:start}.side-col{display:flex;flex-direction:column;gap:16px;position:-webkit-sticky;position:sticky;top:68px}.photos{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.photos .thumb{width:100%;height:auto;aspect-ratio:1}.pool{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));grid-gap:12px;gap:12px}.pool-item{position:relative;margin:0;display:flex;flex-direction:column;gap:6px}.pool-item .thumb{width:100%;height:auto;aspect-ratio:1;border:1px solid var(--line)}.pool-tools{display:flex;gap:4px;justify-content:center}.pool-local,.pool-main{position:absolute;left:6px;font-size:12px;border-radius:10px;padding:1px 8px}.pool-main{top:6px;background:var(--primary);color:#fff}.pool-local{bottom:44px;background:rgba(1,1,27,.6);color:#fff}.icon-btn.sm{width:30px;height:30px}.icon-btn.danger{color:var(--danger)}.icon-btn:disabled{opacity:.4;cursor:default}.picker{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.pick{position:relative;padding:0;aspect-ratio:1;border:2px solid var(--line);border-radius:6px;overflow:hidden;background:#e6e6ef;opacity:.55}.pick img{width:100%;height:100%;object-fit:cover;display:block}.pick.on{border-color:var(--primary);opacity:1}.pick-n{position:absolute;top:4px;left:4px;min-width:22px;height:22px;border-radius:11px;background:var(--primary);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}.table.compact td{padding:6px 12px;border-bottom:0}.quality-groups{display:flex;flex-wrap:wrap;gap:16px;margin-top:16px;align-items:flex-start}.q-group{display:flex;flex-direction:column;gap:4px;min-width:240px;flex:1 1;background:var(--surface);border-radius:var(--radius);padding:12px}.q-group-title{font-weight:700;margin-bottom:4px}.q-type{display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left;border:0;background:none;padding:6px 8px;border-radius:6px;color:var(--text)}.q-type:hover{background:var(--surface-2)}.q-type.on{background:var(--primary-soft);color:var(--primary)}.q-type.zero{color:var(--muted)}.q-type b{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.quality-groups>.q-type{background:var(--surface);padding:12px 16px;min-width:200px}.quality-groups>.q-type.on{background:var(--primary-soft)}.issues-box{display:flex;flex-direction:column;gap:6px}.issues-box li{margin-left:18px}.combo{position:relative}.combo .input{padding-right:26px}.combo-arrow{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none;font-size:12px}.combo-list{position:absolute;z-index:20;left:0;top:calc(100% + 2px);min-width:100%;max-height:260px;overflow:auto;margin:0;padding:4px 0;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(1,1,27,.14)}.combo-item{display:flex;justify-content:space-between;gap:12px;padding:7px 12px;cursor:pointer;white-space:nowrap}.combo-item .muted{font-size:12px}.combo-item.active{background:var(--surface-2)}.combo-item.current{color:var(--primary);font-weight:600;background:var(--primary-soft)}.combo-item.current>span:first-child:before{content:"✓ "}.combo-meta{display:inline-flex;align-items:center;gap:6px}.std-tag{font-size:11px;line-height:16px;padding:0 6px;border-radius:8px;font-weight:500;background:var(--success-soft);color:var(--success)}.combo-empty{padding:7px 12px;color:var(--muted);font-size:13px;white-space:nowrap}.modal.wide{width:min(880px,100%)}.picker-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}@media (max-width:700px){.picker-grid{grid-template-columns:1fr}}.pick-list{border:1px solid var(--line);border-radius:var(--radius);height:340px;overflow:auto}.pick-item{display:flex;justify-content:space-between;gap:12px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;color:var(--text)}.pick-item:hover{background:var(--surface-2)}.pick-item.on{background:var(--primary-soft);color:var(--primary)}.pick-item .muted{white-space:nowrap;font-size:12px}.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:-4px}.tab{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 14px;border:0;border-bottom:2px solid transparent;background:none;color:var(--muted);font-weight:500;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.on{color:var(--primary);border-bottom-color:var(--primary)}.tab-note{font-size:12px;color:var(--muted);font-weight:400}.tab-dirty{color:var(--warning);font-weight:700;font-size:18px;line-height:1}.rt{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden}.rt:focus-within{border-color:var(--primary)}.rt-head{gap:8px;justify-content:space-between;padding:6px 8px;border-bottom:1px solid var(--line);background:var(--surface-2)}.rt-head,.rt-toolbar{display:flex;align-items:center;flex-wrap:wrap}.rt-toolbar{gap:2px}.rt-btn{min-width:30px;height:30px;padding:0 6px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font-size:13px}.rt-btn:hover:not(:disabled){background:var(--surface);border-color:var(--line)}.rt-btn.on{background:var(--primary-soft);color:var(--primary)}.rt-btn:disabled{opacity:.35;cursor:default}.rt-sep{width:1px;height:18px;background:var(--line);margin:0 4px}.rt-mode button{height:30px;font-size:13px}.rt-source{border:0;border-radius:0;font-family:ui-monospace,Consolas,monospace;font-size:12px}.rich,.rt-source{min-height:var(--rt-min)}.rich{max-height:600px;overflow:auto;padding:10px 14px;outline:none;line-height:1.55}.rich>*+*{margin-top:.6em}.rich p{margin:0}.rich h2,.rich h3,.rich h4{margin:.8em 0 .3em;line-height:1.3}.rich ol,.rich ul{padding-left:1.4em;margin:0}.rich a{color:var(--link);text-decoration:underline}.rich table{border-collapse:collapse;width:auto;max-width:100%;margin:.6em 0}.rich td,.rich th{border:1px solid var(--line);padding:4px 8px;vertical-align:top;min-width:60px}.rich th{background:var(--surface-2);font-weight:600}.rich .selectedCell{background:var(--primary-soft)}.rt.readonly{background:var(--surface-2)}.rt.readonly .rich{max-height:280px}.inherited{border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;display:flex;flex-direction:column;gap:10px}.inherited .value{white-space:pre-wrap}.table.chars{table-layout:fixed;width:100%}.table.chars td,.table.chars th{padding:4px 6px}.table.chars .input{height:34px}.unsent{color:var(--warning)}.sale,.unsent{font-size:12px;white-space:nowrap}.sale{color:var(--danger);font-weight:600}.radio{display:inline-flex;align-items:center;gap:8px;font-weight:400;cursor:pointer}.checks{display:flex;flex-direction:column;gap:8px}.kv{display:grid;grid-template-columns:auto 1fr;grid-gap:6px 12px;gap:6px 12px;margin:0}.kv dt{color:var(--muted)}.kv dd{margin:0;overflow-wrap:anywhere}.store-card{border:1px solid var(--line);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:14px}.store-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.store-card-head .name{font-weight:700;font-size:16px}.price-box{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--surface-2);border-radius:var(--radius);padding:12px 14px}.price-box b{font-size:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sticky-actions{position:-webkit-sticky;position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 20px;margin:0 -20px -40px;display:flex;gap:8px;justify-content:flex-end;z-index:5}.modal-backdrop{position:fixed;inset:0;background:rgba(1,1,27,.45);display:grid;place-items:center;z-index:50;padding:16px}.modal{background:var(--surface);border-radius:12px;width:min(560px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:24px;display:flex;flex-direction:column;gap:16px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0;font-size:20px;font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.toasts{position:fixed;right:20px;bottom:20px;display:flex;flex-direction:column;gap:8px;z-index:60}.toast{background:var(--text);color:#fff;padding:12px 16px;border-radius:var(--radius);max-width:420px;box-shadow:0 6px 20px rgba(0,0,0,.15)}.toast.error{background:var(--danger)}.login-page{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:min(400px,100%);background:var(--surface);border-radius:12px;padding:32px;display:flex;flex-direction:column;gap:16px}.login-brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:700}.login-brand .logo-mark{border-color:var(--sidebar)}@media (max-width:1100px){.edit-layout{grid-template-columns:minmax(0,1fr)}.side-col{position:static}.with-tree{grid-template-columns:minmax(0,1fr)}.tree{position:static;max-height:280px}.stats{grid-template-columns:repeat(2,1fr)}.stat:nth-child(3){border-left:0}}@media (max-width:760px){.layout{grid-template-columns:minmax(0,1fr)}.sidebar{position:static;height:auto;flex-direction:row;align-items:center;overflow-x:auto;padding:0}.sidebar nav{flex-direction:row;flex:none}.nav-bottom{margin:0}.header-search{width:auto;flex:1 1;max-width:none}.header-status{display:none}.content{padding:16px}.grid-2{grid-template-columns:1fr}.stat{padding:14px 16px}}