:root{--primary: #1677ff;--primary-hover: #4096ff;--primary-active: #0958d9;--success: #52c41a;--warning: #faad14;--danger: #ff4d4f;--cyan: #13c2c2;--text: #262626;--text-secondary: #595959;--text-muted: #8c8c8c;--border: #d9d9d9;--border-light: #f0f0f0;--bg: #f5f7fa;--surface: #ffffff;--surface-soft: #fafafa;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-card: 0 2px 10px rgba(0, 0, 0, .06);--shadow-pop: 0 16px 48px rgba(0, 0, 0, .14);--transition: .18s ease;color-scheme:light;color:var(--text);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html{font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;color:var(--text);line-height:1.5715;background:var(--bg)}button,input,select,textarea{font:inherit}button{min-height:34px;border:1px solid var(--border);border-radius:var(--radius-md);padding:6px 12px;color:var(--text);background:var(--surface);cursor:pointer;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition),color var(--transition)}.portal-button{display:inline-flex;align-items:center;justify-content:center;min-height:34px;border:1px solid var(--border);border-radius:var(--radius-md);padding:6px 12px;color:var(--text);background:var(--surface);text-decoration:none;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition),color var(--transition)}button:hover:not(:disabled){border-color:var(--primary-hover);color:var(--primary);background:#f8fbff;box-shadow:0 2px 8px #1677ff1f}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid rgba(22,119,255,.28);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.45}button.primary,.portal-button.primary{border-color:var(--primary);color:#fff;background:var(--primary)}button.primary:hover:not(:disabled),.portal-button.primary:hover{border-color:var(--primary-active);color:#fff;background:var(--primary-active)}button.danger{border-color:#ffccc7;color:#cf1322;background:#fff2f0}button.danger:hover:not(:disabled){border-color:var(--danger);color:#a8071a;background:#fff1f0;box-shadow:0 2px 8px #ff4d4f24}input,select,textarea{width:100%;min-height:34px;border:1px solid var(--border);border-radius:var(--radius-md);padding:7px 10px;color:var(--text);background:var(--surface);outline:none;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #1677ff1f}textarea{resize:vertical}input[type=checkbox],input[type=radio]{width:16px;height:16px;min-height:0;padding:0;accent-color:var(--primary);vertical-align:middle}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--surface-soft)}::-webkit-scrollbar-thumb{border-radius:999px;background:#c6cbd3}::-webkit-scrollbar-thumb:hover{background:#aeb5bf}.portal-root,.portal-shell{min-height:100vh;background:var(--bg)}.portal-root{display:flex;flex-direction:column}.portal-root>.portal-shell,.portal-root>.login-page,.portal-root>.portal-bind-confirm-page{flex:1 0 auto;min-height:0}.portal-message-wrap{position:fixed;top:16px;left:50%;z-index:90;width:min(420px,calc(100vw - 32px));transform:translate(-50%);pointer-events:none}.portal-message{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;border:1px solid;border-radius:var(--radius-md);padding:9px 12px 9px 14px;background:var(--surface);box-shadow:var(--shadow-pop);pointer-events:auto}.portal-message span{min-width:0;overflow-wrap:anywhere}.portal-message button{flex:0 0 auto;min-height:26px;border:0;padding:2px 0;color:inherit;background:transparent;box-shadow:none}.portal-message button:hover:not(:disabled){border-color:transparent;color:inherit;background:transparent;box-shadow:none}.portal-message--success{border-color:#b7eb8f;color:#237804;background:#f6ffed}.portal-message--error{border-color:#ffccc7;color:#cf1322;background:#fff2f0}.portal-bind-confirm-page{display:grid;min-height:100vh;place-items:center;padding:32px 20px;background:linear-gradient(180deg,#f8fafc,#f3f5f8)}.portal-bind-confirm{position:relative;display:grid;gap:0;width:min(100%,520px);overflow:hidden;border-color:#e8edf3;border-radius:10px;padding:0;box-shadow:0 18px 54px #1c2b441f}.portal-bind-confirm:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,#1677ff,#13c2c2)}.portal-bind-confirm-header{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;padding:22px 24px 18px}.portal-bind-confirm-header .portal-brand-mark{width:42px;height:42px;border-radius:10px}.portal-bind-confirm-eyebrow{display:block;margin-bottom:3px;color:var(--primary);font-size:12px;font-weight:700}.portal-bind-confirm-content{display:grid;gap:16px;padding:0 24px 22px}.portal-bind-confirm-header h1{margin:0;color:var(--text);font-size:22px;line-height:1.2;letter-spacing:0}.portal-bind-confirm-content p{margin:0;color:var(--text-secondary);font-size:14px;line-height:1.7}.portal-bind-summary{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid #e8edf3;border-radius:8px;background:#fbfcfe}.portal-bind-summary div{display:grid;gap:5px;min-width:0;padding:14px 16px}.portal-bind-summary div+div{border-left:1px solid #e8edf3}.portal-bind-summary span{color:var(--text-muted);font-size:12px}.portal-bind-summary strong{overflow:hidden;color:var(--text);font-size:15px;font-weight:650;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.portal-bind-note{border:1px solid #d6e4ff;border-radius:8px;padding:10px 12px;color:#1d39c4;background:#f0f5ff;font-size:13px}.portal-bind-confirm-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--border-light);padding:16px 24px;background:#fafbfc}.portal-bind-confirm-actions button{min-width:96px;min-height:38px}.portal-bind-confirm-actions .switch-account{margin-right:auto;border-color:#91caff;color:var(--primary);background:#f0f7ff}@media (max-width: 560px){.portal-bind-confirm-page{align-items:stretch;padding:16px}.portal-bind-summary{grid-template-columns:1fr}.portal-bind-summary div+div{border-top:1px solid #e8edf3;border-left:0}.portal-bind-confirm-actions{display:grid;grid-template-columns:1fr}.portal-bind-confirm-actions .switch-account{margin-right:0}}.portal-shell{display:flex;flex-direction:column;padding-bottom:72px}.portal-app-header{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;min-height:58px;padding:0 20px;border-bottom:1px solid var(--border-light);background:#fffffff5;box-shadow:0 1px #0000000a;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.portal-brand{display:flex;align-items:center;gap:10px;min-width:0}.portal-brand>div{min-width:0}.portal-brand-mark{display:inline-grid;flex:0 0 auto;place-items:center;width:34px;height:34px;overflow:hidden;border-radius:var(--radius-md);color:var(--primary-active);background:#e6f4ff;font-size:13px;font-weight:800}.portal-brand-mark img{display:block;width:100%;height:100%;object-fit:cover}.portal-brand-mark>span{line-height:1}.portal-brand strong,.portal-brand h1{display:block;margin:0;overflow:hidden;color:var(--text);font-size:17px;line-height:1.2;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.portal-brand small,.portal-brand p{display:block;margin:3px 0 0;overflow:hidden;color:var(--text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portal-app-header-status,.portal-app-header-actions,.portal-topbar-actions,.portal-user,.portal-inline-form,.portal-table-footer{display:flex;align-items:center;gap:8px}.portal-app-header-status{min-width:0;flex-wrap:wrap;justify-content:flex-end}.portal-app-header-actions,.portal-topbar-actions{flex-wrap:wrap;justify-content:flex-end}.portal-shell-loading-indicator{display:inline-flex;align-items:center;gap:7px;min-height:28px;border:1px solid #d6e4ff;border-radius:999px;padding:3px 9px;color:var(--primary-active);background:#f8fbff;font-size:12px;font-weight:600;white-space:nowrap}.portal-shell-spinner{width:14px;height:14px;flex:0 0 14px;border:2px solid rgba(22,119,255,.18);border-top-color:var(--primary);border-radius:50%;animation:portal-shell-spinner-spin .8s linear infinite}.status-pill{display:inline-flex;align-items:center;min-height:24px;max-width:100%;overflow:hidden;border-radius:999px;padding:2px 9px;color:var(--primary-active);background:#e6f4ff;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portal-workspace-layout{flex:1;display:grid;grid-template-columns:244px minmax(0,1fr);gap:16px;width:min(1560px,100%);margin:0 auto;padding:16px 18px 24px}.portal-legal-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 18px;width:min(1560px,100%);margin:0 auto;padding:0 18px 18px;color:var(--text-muted);font-size:12px;line-height:1.7;text-align:center}.portal-root>.portal-shell+.portal-legal-footer{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.portal-legal-footer a{color:inherit;text-decoration:none}.portal-legal-footer a:hover{color:var(--primary)}.portal-sidebar{position:sticky;top:74px;align-self:start;max-height:calc(100vh - 90px);overflow:auto}.portal-nav,.portal-panel,.login-panel{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card)}.portal-panel-loading{position:relative}.portal-panel-loading .portal-table-wrap{opacity:.72}@keyframes portal-shell-progress-move{0%{transform:translate(0)}to{transform:translate(380%)}}@keyframes portal-shell-spinner-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.portal-shell-progress:before,.portal-shell-spinner{animation:none}}.portal-nav{display:grid;gap:6px;padding:8px}.portal-nav button{display:grid;justify-items:start;gap:3px;width:100%;min-height:40px;border-color:transparent;padding:7px 10px;color:var(--text-secondary);background:transparent;text-align:left}.portal-nav button span,.portal-nav button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-nav button span{max-width:100%}.portal-nav button small{color:var(--text-muted);font-size:12px}.portal-nav button.active,.portal-nav button:hover:not(:disabled){color:var(--primary);background:linear-gradient(135deg,#1677ff1f,#13c2c214);box-shadow:none}.portal-nav button.active{font-weight:600}.portal-main{position:relative;display:grid;min-width:0;gap:16px}.portal-shell-progress{position:absolute;top:0;right:0;left:0;z-index:3;height:2px;overflow:hidden;border-radius:999px;background:#1677ff1f;pointer-events:none}.portal-shell-progress:before{position:absolute;top:0;bottom:0;left:-36%;width:36%;border-radius:inherit;background:linear-gradient(90deg,transparent,var(--primary),var(--cyan),transparent);content:"";animation:portal-shell-progress-move 1.2s ease-in-out infinite}.portal-warehouse-floating-entry{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom));z-index:45;display:inline-flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);min-height:44px;border:1px solid #91caff;border-radius:var(--radius-md);padding:8px 12px 8px 10px;color:var(--primary-active);background:var(--surface);box-shadow:0 10px 28px #1677ff2e;text-decoration:none;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition),color var(--transition),transform var(--transition)}.portal-warehouse-floating-entry:hover{border-color:var(--primary);color:var(--primary-active);background:#f8fbff;box-shadow:0 12px 34px #1677ff3d;transform:translateY(-1px)}.portal-warehouse-floating-entry:focus-visible{outline:2px solid rgba(22,119,255,.28);outline-offset:2px}.portal-warehouse-floating-entry span{display:inline-flex;width:26px;height:26px;flex:0 0 26px;align-items:center;justify-content:center;border-radius:6px;color:#fff;background:var(--primary);font-size:14px;font-weight:700;line-height:1}.portal-warehouse-floating-entry strong{min-width:0;overflow:hidden;font-size:14px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.portal-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:94px;border:1px solid var(--border-light);border-radius:var(--radius-lg);padding:18px 20px;background:linear-gradient(135deg,#1677ff14,#13c2c20d),var(--surface);box-shadow:var(--shadow-card)}.portal-topbar>div:first-child{min-width:0}.page-eyebrow{color:var(--primary);font-size:12px;font-weight:700}.portal-topbar h1{margin:4px 0 0;color:var(--text);font-size:24px;line-height:1.2;letter-spacing:0}.portal-topbar p{margin:6px 0 0;overflow:hidden;color:var(--text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portal-alert{display:flex;align-items:center;gap:10px;border:1px solid;border-radius:var(--radius-md);padding:10px 12px}.portal-alert span{flex:1}.portal-alert button{min-height:28px;padding:4px 8px}.portal-alert.error{border-color:#ffccc7;color:#a8071a;background:#fff2f0}.portal-alert.success{border-color:#b7eb8f;color:#237804;background:#f6ffed}.portal-alert.info{border-color:#91caff;color:var(--primary-active);background:#e6f4ff}.portal-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:18px;background:#0f172a6b}.portal-modal{width:min(100%,420px);overflow:hidden;border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-pop)}.portal-editor-modal{width:min(100%,680px)}.portal-modal header,.portal-modal footer{display:flex;align-items:center;gap:10px;padding:14px 16px}.portal-modal header{justify-content:space-between;border-bottom:1px solid var(--border-light)}.portal-modal header h3{margin:0;font-size:16px;letter-spacing:0}.portal-modal-body{padding:16px}.portal-modal-body p{margin:0;color:var(--text-secondary)}.portal-modal footer{justify-content:flex-end;border-top:1px solid var(--border-light);background:var(--surface-soft)}.portal-metrics{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.portal-metrics article{position:relative;min-height:92px;overflow:hidden;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:14px;background:var(--surface);box-shadow:var(--shadow-card)}.portal-metrics article:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--primary)}.portal-metrics span,.portal-metrics small{display:block;color:var(--text-muted);font-size:12px}.portal-metrics strong{display:block;margin:8px 0 4px;color:var(--text);font-size:24px;line-height:1}.portal-panel{overflow:hidden;padding:0}.portal-link-panel-body{padding:16px}.portal-panel-title,.portal-filter-slot{padding:14px 16px;border-bottom:1px solid var(--border-light)}.portal-panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface)}.portal-panel-title h2{margin:0;color:var(--text);font-size:15px;letter-spacing:0}.portal-panel-title span{color:var(--text-muted);font-size:12px}.portal-warehouse-status{display:grid;gap:14px;padding:16px}.portal-status-badge{display:inline-flex;width:max-content;min-height:26px;align-items:center;border-radius:999px;padding:3px 10px;font-size:13px;font-weight:600}.portal-status-badge.success{color:#389e0d;background:#f6ffed}.portal-status-badge.warning{color:#d46b08;background:#fff7e6}.portal-definition-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border-light);border-radius:var(--radius-md);overflow:hidden}.portal-definition-grid div{display:grid;gap:6px;min-width:0;padding:12px 14px;background:var(--surface-soft)}.portal-definition-grid div+div{border-left:1px solid var(--border-light)}.portal-definition-grid span{color:var(--text-muted);font-size:12px}.portal-definition-grid strong{overflow:hidden;color:var(--text);font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.portal-warehouse-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--border-light);padding:14px 16px}.portal-desktop-client-panel{display:grid}.portal-desktop-status-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;padding:16px}.portal-desktop-status-card{min-width:0;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:12px;background:var(--surface-soft)}.portal-desktop-status-card span{display:block;color:var(--text-muted);font-size:12px}.portal-desktop-status-card strong{display:block;margin-top:8px;overflow-wrap:anywhere;color:var(--text);font-size:15px}.portal-desktop-status-card small{display:block;margin-top:6px;color:var(--text-muted);font-size:12px;line-height:1.45;overflow-wrap:anywhere}.portal-desktop-status-card strong.success{color:#237804}.portal-desktop-status-card strong.warning{color:#d46b08}.portal-desktop-status-card strong.danger{color:#a8071a}.portal-desktop-status-card strong.muted{color:var(--text-muted)}.portal-desktop-actions{display:flex;flex-wrap:wrap;gap:10px;padding:0 16px 12px}.portal-desktop-download{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px;border:1px solid #e6f4ff;border-radius:var(--radius-md);padding:16px;background:#f0f8ff}.portal-desktop-download h3{margin:0 0 6px;color:var(--text);font-size:16px}.portal-desktop-download p{margin:0;color:#0958d9;font-size:13px;line-height:1.55}.portal-desktop-download small,.portal-desktop-download-unavailable{display:block;margin-top:8px;color:var(--text-muted);font-size:12px;line-height:1.45}.portal-desktop-download .portal-button{flex:0 0 auto;min-width:144px}.portal-desktop-note{margin:0 16px 12px;border:1px solid #e6f4ff;border-radius:var(--radius-md);padding:10px 12px;color:#0958d9;background:#f0f8ff;font-size:13px}.portal-desktop-events{display:grid;gap:0;margin:0 16px 16px;overflow:hidden;border:1px solid var(--border-light);border-radius:var(--radius-md)}.portal-desktop-events div{display:grid;grid-template-columns:180px 170px minmax(0,1fr);gap:10px;align-items:start;padding:9px 12px;border-bottom:1px solid var(--border-light)}.portal-desktop-events div:last-child{border-bottom:0}.portal-desktop-events span{color:var(--text-muted);font-size:12px}.portal-desktop-events strong{color:var(--text)}.portal-desktop-events small{min-width:0;overflow-wrap:anywhere;color:var(--text-secondary);font-size:12px;line-height:1.45}.portal-desktop-events div.warning strong{color:#d46b08}.portal-desktop-events div.danger strong{color:#a8071a}.portal-desktop-events p{margin:0;padding:14px 12px;color:var(--text-muted)}.portal-usage-guide-panel{display:grid}.portal-guide-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;padding:16px}.portal-guide-main{display:grid;gap:16px;min-width:0}.portal-guide-section{border:1px solid var(--border-light);border-radius:var(--radius-md);overflow:hidden;background:var(--surface-soft)}.portal-guide-section h3{margin:0;border-bottom:1px solid var(--border-light);padding:12px 14px;color:var(--text);font-size:15px}.portal-guide-steps{display:grid;gap:0;margin:0;padding:0;list-style:none}.portal-guide-steps li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;padding:12px 14px;border-bottom:1px solid var(--border-light)}.portal-guide-steps li:last-child{border-bottom:0}.portal-guide-steps li>span{display:inline-flex;width:26px;height:26px;align-items:center;justify-content:center;border-radius:50%;color:#0958d9;background:#e6f4ff;font-size:13px;font-weight:700}.portal-guide-steps strong,.portal-guide-checks strong{display:block;color:var(--text);font-size:14px}.portal-guide-steps p,.portal-guide-checks p,.portal-guide-contact p{margin:6px 0 0;color:var(--text-secondary);font-size:13px;line-height:1.55}.portal-guide-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.portal-guide-checks div{min-width:0;padding:12px 14px;border-right:1px solid var(--border-light);border-bottom:1px solid var(--border-light)}.portal-guide-checks div:nth-child(2n){border-right:0}.portal-guide-checks div:nth-last-child(-n+2){border-bottom:0}.portal-guide-contact{align-self:start;display:grid;gap:14px;border:1px solid #e6f4ff;border-radius:var(--radius-md);padding:14px;background:#f0f8ff}.portal-guide-contact span{color:#0958d9;font-size:12px;font-weight:600}.portal-guide-contact h3{margin:4px 0 0;color:var(--text);font-size:17px}.portal-guide-contact figure{margin:0;border-radius:var(--radius-md);padding:10px;text-align:center;background:var(--surface)}.portal-guide-contact img{display:block;width:100%;max-width:180px;height:auto;margin:0 auto}.portal-guide-contact figcaption{margin-top:8px;color:var(--text-muted);font-size:12px}.portal-filter-slot{border-top:1px solid var(--border-light);background:var(--surface-soft);display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px}.portal-filter-slot .portal-inline-form{padding:0}.portal-filter-actions{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;padding-bottom:0}.portal-filter-actions button{min-width:92px}.portal-form-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:12px;align-items:end;padding:16px}.portal-form-grid label,.portal-inline-form label{display:grid;gap:6px;min-width:0}.portal-form-grid label>span,.portal-inline-form label>span{color:var(--text-secondary);font-size:13px}.portal-form-grid .wide,.portal-check{grid-column:span 2}.portal-editor-grid{padding:0}.portal-editor-grid .wide{grid-column:1 / -1}.portal-check{display:flex!important;align-items:center;gap:8px!important}.portal-check input{width:16px;min-height:0}.portal-inline-form{flex-wrap:wrap;align-items:flex-end;gap:10px;padding:14px 16px}.portal-inline-form label{flex:0 1 220px}.portal-inline-form .portal-input-wrap,.portal-inline-form input{width:100%}.portal-field{color:var(--text-secondary)}.portal-input-wrap{position:relative;display:flex;align-items:center;min-width:0}.portal-input-wrap input{padding-right:52px}.portal-input-clear{position:absolute;right:4px;min-height:26px;border-color:transparent;border-radius:var(--radius-sm);padding:2px 7px;color:var(--text-muted);background:transparent;font-size:12px}.portal-input-clear:hover:not(:disabled){border-color:transparent;color:var(--primary);background:#eef6ff;box-shadow:none}.portal-inline-form-actions{display:inline-flex;align-items:center;gap:8px;padding-bottom:0}.portal-inline-form-actions button{min-width:72px}.portal-resource-error{margin:8px 0 0;color:#a8071a;font-size:13px}.portal-table-wrap{width:100%;overflow:auto}table{width:100%;min-width:860px;border-collapse:collapse}th,td{border-bottom:1px solid var(--border-light);padding:11px 12px;text-align:left;vertical-align:middle}th{position:sticky;top:0;z-index:1;color:var(--text-secondary);background:var(--surface-soft);font-size:12px;font-weight:600;white-space:nowrap}td{color:var(--text);white-space:nowrap}th.portal-cell-has-ellipsis,td.portal-cell-has-ellipsis{max-width:220px}.portal-cell-ellipsis{display:block;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}th.portal-cell-title,th.portal-cell-name,th.portal-cell-resourceName,th.portal-cell-productName,th.portal-cell-goodsTitle,th.portal-cell-skuName,th.portal-cell-message,th.portal-cell-reason,th.portal-cell-blockedReason,th.portal-cell-safeErrorMessage,td.portal-cell-title,td.portal-cell-name,td.portal-cell-resourceName,td.portal-cell-productName,td.portal-cell-goodsTitle,td.portal-cell-skuName,td.portal-cell-message,td.portal-cell-reason,td.portal-cell-blockedReason,td.portal-cell-safeErrorMessage{min-width:220px;max-width:420px}td.portal-cell-title,td.portal-cell-name,td.portal-cell-resourceName,td.portal-cell-productName,td.portal-cell-goodsTitle,td.portal-cell-skuName,td.portal-cell-message,td.portal-cell-reason,td.portal-cell-blockedReason,td.portal-cell-safeErrorMessage{white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.45}tbody tr{transition:background var(--transition)}tbody tr:hover td{background:#f7fbff}.portal-table-select{width:44px;text-align:center!important}.portal-table-select input{width:16px;height:16px;min-height:16px;padding:0}.portal-empty{color:var(--text-muted);text-align:center;padding:28px 16px}.portal-summary-wrap{border-top:1px solid var(--border-light)}.portal-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr))}.portal-summary-item{display:grid;align-content:start;gap:6px;min-width:0;min-height:74px;border-right:1px solid var(--border-light);border-bottom:1px solid var(--border-light);padding:14px 16px}.portal-summary-item:nth-child(4n){border-right:0}.portal-summary-item span{overflow:hidden;color:var(--text-muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portal-summary-item strong{min-width:0;overflow:hidden;color:var(--text);font-size:15px;font-weight:650;line-height:1.45;overflow-wrap:anywhere;text-overflow:ellipsis}.portal-summary-item strong.portal-badge{justify-self:start;font-size:12px;font-weight:600}.portal-table-footer{justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid var(--border-light);padding:12px 16px 14px;color:var(--text-secondary);font-size:13px}.portal-table-footer-meta,.portal-table-footer-actions{display:inline-flex;align-items:center;flex-wrap:wrap;gap:10px;min-width:0}.portal-table-footer-meta{justify-content:flex-start}.portal-table-footer-actions{justify-content:flex-end;margin-left:auto}.portal-summary-footer{border-top:0}.portal-pagination{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.portal-pagination button{min-height:30px;padding:4px 10px}.portal-page-jump,.portal-page-size{display:inline-flex;align-items:center;gap:6px}.portal-page-jump input{width:64px;min-height:30px;padding:4px 8px;text-align:center}.portal-page-size select{width:74px;min-height:30px;padding:4px 8px}.portal-badge{display:inline-flex;align-items:center;min-height:22px;max-width:220px;overflow:hidden;border-radius:999px;padding:2px 8px;color:var(--text-secondary);background:var(--surface-soft);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.portal-badge.success{color:#237804;background:#f6ffed}.portal-badge.warn{color:#d48806;background:#fff7e6}.portal-badge.danger{color:#a8071a;background:#fff2f0}.portal-result{margin:12px 16px 16px;max-height:260px;overflow:auto;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:12px;color:var(--text);background:var(--surface-soft);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;white-space:pre-wrap}.portal-action-grid{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:16px}.portal-cell-actions{width:132px;min-width:132px;text-align:right;white-space:nowrap}.portal-row-actions{display:inline-flex;justify-content:flex-end;gap:8px}.portal-row-actions button{min-height:30px;padding:4px 10px}.portal-drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;justify-content:flex-end;background:#0f172a52}.portal-resource-drawer{display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;width:min(960px,100vw);height:100vh;min-width:0;overflow:hidden;border-left:1px solid var(--border-light);background:var(--surface);box-shadow:var(--shadow-pop)}.portal-resource-drawer-header,.portal-resource-drawer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border-light)}.portal-resource-drawer-header>div{min-width:0}.portal-resource-drawer-header h2{margin:2px 0;overflow:hidden;color:var(--text);font-size:18px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.portal-resource-drawer-header p{margin:0;color:var(--text-muted);font-size:13px}.portal-resource-drawer .portal-alert{margin:12px 20px 0}.portal-resource-search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:14px 20px;border-bottom:1px solid var(--border-light)}.portal-resource-search label{display:grid;gap:6px;min-width:0;color:var(--text-secondary);font-size:13px}.portal-binding-layout{grid-row:4;display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);min-height:0;overflow:hidden}.portal-binding-layout--single{display:block;overflow:auto}.portal-binding-layout--single .portal-binding-editor{overflow:visible}.portal-binding-products,.portal-binding-editor{min-width:0;min-height:0;overflow:auto;padding:16px 20px}.portal-binding-products{border-right:1px solid var(--border-light);background:#fbfcfe}.portal-section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.portal-section-title h3{margin:0;color:var(--text);font-size:15px;line-height:1.4}.portal-section-title span{color:var(--text-muted);font-size:12px}.portal-candidate-list{display:grid;gap:8px}.portal-candidate-row{display:grid;gap:4px;width:100%;min-height:64px;justify-items:start;padding:10px 12px;text-align:left;background:var(--surface)}.portal-candidate-row.active{border-color:var(--primary);background:#f0f7ff;box-shadow:0 0 0 2px #1677ff1a}.portal-candidate-row strong,.portal-candidate-row span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-candidate-row strong{color:var(--text);font-size:14px}.portal-candidate-row span{color:var(--text-muted);font-size:12px}.portal-resource-select{display:grid;gap:7px;margin-bottom:14px;color:var(--text-secondary);font-size:13px;font-weight:700}.portal-resource-select select{width:100%;min-height:38px;background:var(--surface)}.portal-resource-cascader{display:grid;grid-template-columns:minmax(120px,180px) minmax(0,1fr);gap:10px}.portal-resource-cascader label{display:grid;gap:6px}.portal-resource-cascader label>span{color:var(--text-muted);font-size:12px;font-weight:400}.portal-resource-select small{color:var(--text-muted);font-size:12px;font-weight:400}.portal-resource-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.portal-empty.compact{padding:18px 10px;border:1px dashed var(--border);border-radius:var(--radius-md);background:var(--surface)}.portal-binding-mode,.portal-binding-flags{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px}.portal-binding-mode label,.portal-binding-flags label{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary)}.portal-binding-mode input,.portal-binding-flags input{width:16px;min-height:16px}.portal-binding-summary{display:grid;gap:8px;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:14px;background:var(--surface-soft)}.portal-binding-summary strong{color:var(--text)}.portal-binding-summary span{color:var(--text-secondary)}.portal-binding-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:14px;background:var(--surface-soft)}.portal-binding-fields label{display:grid;gap:7px;color:var(--text-secondary);font-size:13px;font-weight:700}.portal-binding-fields input,.portal-binding-fields select,.portal-supplier-lookup-select select{width:100%;box-sizing:border-box;border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text);font:inherit;background:var(--surface)}.portal-supplier-lookup{grid-column:1 / -1;display:grid;gap:10px}.portal-supplier-lookup-entry{justify-items:flex-start}.portal-supplier-lookup-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.portal-supplier-lookup-actions input{min-width:0}.portal-supplier-lookup-mode{display:flex;flex-wrap:wrap;gap:8px}.portal-supplier-lookup-mode label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--text-secondary);background:var(--surface);font-size:13px;font-weight:700;cursor:pointer}.portal-supplier-lookup-mode label.is-active{border-color:var(--primary);color:var(--primary);background:#1677ff14}.portal-supplier-lookup-mode input{width:auto;margin:0;accent-color:var(--primary)}.portal-supplier-lookup-candidates{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.portal-supplier-lookup-candidates .portal-resource-option{min-height:72px;align-items:flex-start;text-align:left}.portal-supplier-lookup-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-supplier-lookup-fields--single{grid-template-columns:minmax(0,1fr)}.portal-supplier-lookup-select{display:grid;gap:8px;color:var(--text-secondary);font-size:13px;font-weight:700}.portal-sku-table-wrap{overflow:auto;border:1px solid var(--border-light);border-radius:var(--radius-md)}.portal-sku-table-wrap--compact{margin-bottom:14px;background:var(--surface)}.portal-sku-table-wrap table{width:100%;border-collapse:collapse}.portal-sku-table-wrap th,.portal-sku-table-wrap td{border-bottom:1px solid var(--border-light);padding:10px 12px;text-align:left}.portal-sku-table-wrap tr:last-child td{border-bottom:0}.portal-sku-table-wrap tbody tr{cursor:pointer}.portal-sku-table-wrap input[type=radio]{width:16px;height:16px;min-height:0;padding:0;accent-color:var(--primary)}.portal-sku-current td{background:#f0f7ff}.portal-link-button{min-height:0;border:0;padding:0;color:var(--primary);background:transparent;box-shadow:none}.portal-link-button:hover:not(:disabled){color:var(--primary-active);background:transparent;box-shadow:none}.portal-sku-draft-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-2px 0 14px;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:10px 12px;background:var(--surface-soft)}.portal-sku-draft-summary span{color:var(--text-muted);font-size:12px}.portal-sku-draft-summary button{min-height:34px}.portal-inline-alert{margin-bottom:14px}.portal-sku-editor-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:24px;background:#0f172a6b}.portal-sku-editor-modal{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(760px,100%);max-height:min(760px,calc(100vh - 48px));overflow:hidden;border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-pop)}.portal-supplier-lookup-modal{width:min(680px,100%)}.portal-sku-editor-header,.portal-sku-editor-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border-light)}.portal-sku-editor-header>div{min-width:0}.portal-sku-editor-header h3{margin:2px 0;overflow:hidden;color:var(--text);font-size:18px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.portal-sku-editor-header p{margin:0;color:var(--text-muted);font-size:13px}.portal-sku-editor-body{display:grid;gap:14px;min-height:0;overflow:auto;padding:16px 18px}.portal-sku-editor-footer{justify-content:flex-end;border-top:1px solid var(--border-light);border-bottom:0}.portal-resource-drawer-footer{grid-row:5;justify-content:flex-end;border-top:1px solid var(--border-light);border-bottom:0}.login-page{display:grid;align-items:center;min-height:100vh;padding:32px 16px;background:var(--bg)}.login-panel{display:grid;gap:16px;width:min(460px,100%);margin:0 auto;overflow:hidden;padding:22px}.login-panel>*{min-width:0}.login-brand{padding-bottom:16px;border-bottom:1px solid var(--border-light)}.login-title{margin:0 -22px;padding:0 22px;border-bottom:0}.login-form{display:grid;gap:14px}.login-form .portal-check{grid-column:auto;width:fit-content;color:var(--text-secondary);font-size:13px}.login-form button.primary{width:100%;min-height:40px}.authorization-result{display:grid;gap:6px;min-width:0;border:1px solid var(--border-light);border-radius:var(--radius-md);padding:12px;color:var(--text-secondary);background:var(--surface-soft)}.authorization-result strong{color:var(--text)}.authorization-result a{min-width:0;overflow-wrap:anywhere;color:var(--primary-active);font-weight:700;text-decoration:none}.authorization-result a:hover{color:var(--primary)}.login-error{margin:0;color:#a8071a}@media (max-width: 1100px){.portal-workspace-layout{grid-template-columns:208px minmax(0,1fr)}.portal-form-grid,.portal-metrics,.portal-definition-grid,.portal-desktop-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-desktop-events div{grid-template-columns:150px minmax(120px,160px) minmax(0,1fr)}.portal-definition-grid div:nth-child(odd){border-left:0}.portal-definition-grid div:nth-child(n+3){border-top:1px solid var(--border-light)}}@media (max-width: 900px){.portal-app-header{grid-template-columns:1fr;align-items:start;padding:12px 16px}.portal-app-header-status,.portal-app-header-actions{justify-content:flex-start}.portal-workspace-layout{grid-template-columns:1fr;padding:12px}.portal-warehouse-floating-entry{right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.portal-sidebar{position:static;max-height:none}.portal-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-topbar{flex-direction:column;align-items:stretch}.portal-topbar-actions{justify-content:flex-start}.portal-action-grid,.portal-binding-layout,.portal-binding-fields,.portal-desktop-status-grid,.portal-definition-grid,.portal-form-grid,.portal-metrics,.portal-desktop-events div{grid-template-columns:1fr}.portal-desktop-download{align-items:stretch;flex-direction:column}.portal-desktop-download .portal-button{width:100%}.portal-guide-layout,.portal-guide-checks{grid-template-columns:1fr}.portal-guide-checks div,.portal-guide-checks div:nth-child(2n),.portal-guide-checks div:nth-last-child(-n+2){border-right:0;border-bottom:1px solid var(--border-light)}.portal-guide-checks div:last-child{border-bottom:0}.portal-binding-products{border-right:0;border-bottom:1px solid var(--border-light)}.portal-form-grid .wide,.portal-check{grid-column:span 1}.portal-summary-grid{grid-template-columns:1fr}.portal-summary-item,.portal-summary-item:nth-child(4n){border-right:0}.portal-definition-grid div+div{border-top:1px solid var(--border-light);border-left:0}}@media (max-width: 560px){.portal-shell{padding-bottom:64px}.portal-warehouse-floating-entry{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));min-height:40px;padding:7px 10px 7px 8px}.portal-warehouse-floating-entry span{width:24px;height:24px;flex-basis:24px;font-size:13px}.portal-warehouse-floating-entry strong{font-size:13px}.portal-nav{grid-template-columns:1fr}.portal-inline-form,.portal-table-footer{align-items:stretch;flex-direction:column}.portal-inline-form label,.portal-inline-form-actions,.portal-table-footer-meta,.portal-table-footer-actions,.portal-pagination{width:100%}.portal-inline-form-actions,.portal-pagination{display:grid;grid-template-columns:1fr 1fr}.portal-inline-form-actions button:only-child{grid-column:span 2}.portal-inline-form input,.portal-inline-form button,.portal-resource-search button,.portal-table-footer button{width:100%}.portal-input-clear{width:auto!important}.portal-page-jump,.portal-page-size{grid-column:span 2;width:100%;justify-content:space-between}.portal-page-jump input,.portal-page-size select{width:min(180px,58%)}.portal-resource-search,.portal-resource-drawer-header,.portal-resource-drawer-footer{align-items:stretch;flex-direction:column}.portal-legal-footer{padding:0 12px 14px}.portal-resource-search{grid-template-columns:1fr}.login-panel{padding:18px}.login-title{margin:0 -18px;padding:0 18px}}
