:root{--sy-green: #1f5c45;--sy-green-soft: #e9f1ed;--sy-ink: #1d2a25;--sy-muted: #5d6b66;--sy-line: #e2e8e5;--sy-bg: #f5f7f6}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:var(--sy-ink);background:var(--sy-bg)}.sy-app{display:flex;height:100vh;overflow:hidden}.sy-sidebar-root{position:relative;flex:none;z-index:20}.sy-sidebar{width:64px;height:100%;background:#fff;border-right:1px solid var(--sy-line);display:flex;flex-direction:column}.sy-brand{height:56px;display:grid;place-items:center;color:var(--sy-green);border-bottom:1px solid var(--sy-line)}.sy-rail{flex:1;padding:10px 6px;display:flex;flex-direction:column;gap:4px;overflow-y:auto}.sy-rail-cell{position:relative;border-radius:10px}.sy-rail-btn{width:100%;min-height:46px;border:0;background:transparent;border-radius:10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--sy-muted)}.sy-rail-btn:hover,.sy-rail-btn.is-expanded{background:var(--sy-green-soft);color:var(--sy-green)}.sy-rail-btn.is-active{background:var(--sy-green);color:#fff}.sy-rail-label{font-size:10px;line-height:1}.sy-rail-btn:focus-visible{outline:2px solid var(--sy-green);outline-offset:2px}.sy-flyout{position:absolute;left:64px;background:#fff;border:1px solid var(--sy-line);border-radius:0 12px 12px 0;box-shadow:8px 6px 24px #1d2a251f;padding:14px;display:flex;gap:14px;min-width:240px;max-width:720px;max-height:calc(100vh - 24px);overflow-y:auto}.sy-flyout-cols-1{min-width:240px}.sy-flyout-cols-2{min-width:420px}.sy-flyout-cols-3,.sy-flyout-cols-4{min-width:560px}.sy-flyout-cols-5,.sy-flyout-cols-6{min-width:700px}.sy-flyout-col{min-width:180px;display:flex;flex-direction:column;gap:4px}.sy-flyout-col-head{display:flex;align-items:center;gap:6px;padding:4px 8px 8px;font-size:12px;color:var(--sy-green);font-weight:600;border-bottom:1px dashed var(--sy-line);margin-bottom:4px}.sy-flyout-col-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.sy-flyout-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:0;background:transparent;border-radius:6px;cursor:pointer;font-size:13px;color:var(--sy-ink);text-align:left}.sy-flyout-item:hover{background:var(--sy-green-soft);color:var(--sy-green)}.sy-flyout-item.is-active{background:var(--sy-green);color:#fff}.sy-flyout-item-label{flex:1}.sy-flyout-history{display:inline-flex;align-items:center}.sy-history-tag{font-size:10px;padding:1px 6px;border-radius:4px;background:#e7f4ec;color:#1f5c45;font-weight:500}.sy-flyout-item:hover .sy-history-tag,.sy-flyout-item.is-active .sy-history-tag{background:#ffffff40;color:inherit}.sy-flyout-check{flex:none}.sy-flyout-item:focus-visible{outline:2px solid var(--sy-green);outline-offset:-2px}.sy-main{flex:1;display:flex;flex-direction:column;min-width:0}.sy-topbar{height:56px;background:#fff;border-bottom:1px solid var(--sy-line);display:flex;align-items:center;justify-content:space-between;padding:0 20px}.sy-breadcrumb{font-size:13px;color:var(--sy-muted)}.sy-breadcrumb strong{color:var(--sy-ink)}.sy-user{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--sy-muted)}.sy-avatar{width:28px;height:28px;border-radius:50%;background:var(--sy-green);color:#fff;display:grid;place-items:center;font-size:13px}.sy-content{flex:1;overflow-y:auto;padding:28px}.sy-hero{background:#fff;border:1px solid var(--sy-line);border-radius:14px;padding:24px}.sy-eyebrow{display:inline-block;font-size:12px;color:var(--sy-green);margin-bottom:8px;font-weight:600}.sy-hero h1{font-size:24px;margin-bottom:10px}.sy-hero p{font-size:14px;color:var(--sy-muted);line-height:1.7;max-width:720px}.sy-cards{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.sy-card{background:#fff;border:1px solid var(--sy-line);border-radius:12px;padding:16px}.sy-card strong{display:block;font-size:14px;color:var(--sy-green);margin-bottom:6px}.sy-card span{font-size:13px;color:var(--sy-muted);line-height:1.6}:root{--primary: #1f5c45;--primary-strong: #174a37;--primary-soft: #e6f0ea;--danger: #c0392b;--danger-soft: #fbeae7;--warn: #b7791f;--text: #1c2b26;--text-soft: #5c6f66;--border: #dfe8e3;--bg: #f4f7f5;--card: #ffffff;--radius: 10px;--shadow: 0 1px 3px rgb(28 43 38 / 8%), 0 4px 14px rgb(28 43 38 / 6%)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:PingFang SC,Microsoft YaHei,Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg);font-size:14px}.app-shell{display:flex;height:100vh;overflow:hidden}.workspace{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 22px;background:var(--card);border-bottom:1px solid var(--border)}.topbar .breadcrumb{margin:0 0 2px;font-size:12px;color:var(--text-soft)}.topbar h1{margin:0;font-size:18px}.topbar-actions{display:flex;align-items:center;gap:10px}.user-switch{position:relative;display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:8px;padding:4px 8px;background:#fafcfb}.user-switch select{border:none;background:transparent;font-size:13px;color:var(--text);outline:none;cursor:pointer;padding-right:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.user-switch svg{position:absolute;right:6px;pointer-events:none;color:var(--text-soft)}.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px}.notice-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 22px 0;padding:9px 14px;border-radius:8px;background:var(--primary-soft);color:var(--primary-strong);border:1px solid #cfe3d6;font-size:13px}.content{padding:20px 22px;overflow-y:auto;flex:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.context-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;background:linear-gradient(120deg,var(--primary) 0%,#2a7a5c 100%);color:#fff;border-radius:var(--radius);padding:22px 26px;margin-bottom:18px;box-shadow:var(--shadow)}.context-banner .eyebrow{font-size:12px;opacity:.85;letter-spacing:1px}.context-banner h2{margin:4px 0 6px;font-size:20px}.context-banner p{margin:0;opacity:.92;max-width:640px;line-height:1.6}.banner-actions{display:flex;gap:10px;flex-shrink:0}.banner-actions .primary-button{background:#fff;color:var(--primary-strong)}.banner-actions .primary-button:hover{background:#f0f7f3}.metric-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px}.metric-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}.metric-icon{width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary-strong);display:flex;align-items:center;justify-content:center}.metric-card b{display:block;font-size:20px;line-height:1.2}.metric-card span{font-size:12px;color:var(--text-soft)}.supplier-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;margin-bottom:18px;box-shadow:var(--shadow)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-heading h2{margin:0 0 2px;font-size:16px}.panel-heading p{margin:0;font-size:12px;color:var(--text-soft)}.filterbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.status-filter{position:relative;display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:8px;padding:6px 10px;background:#fafcfb}.status-filter select{border:none;background:transparent;font-size:13px;color:var(--text);outline:none;padding-right:18px;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.status-filter svg{position:absolute;right:7px;pointer-events:none;color:var(--text-soft)}.primary-button,.secondary-button{display:inline-flex;align-items:center;gap:6px;border-radius:8px;padding:8px 14px;font-size:13px;cursor:pointer;border:1px solid transparent;transition:background .15s ease}.primary-button{background:var(--primary);color:#fff}.primary-button:hover:not(:disabled){background:var(--primary-strong)}.primary-button:disabled{opacity:.55;cursor:not-allowed}.secondary-button{background:#fff;color:var(--text);border-color:var(--border)}.secondary-button:hover:not(:disabled){background:#f0f5f2}.primary-link{color:var(--primary);background:none;border:none;cursor:pointer;font-size:13px;display:inline-flex;align-items:center;gap:4px}.icon-button{background:none;border:none;cursor:pointer;color:var(--text-soft);display:inline-flex;padding:4px;border-radius:6px}.icon-button:hover{background:var(--primary-soft);color:var(--primary-strong)}.state-view{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:48px 20px;color:var(--text-soft);text-align:center}.state-view strong{color:var(--text);font-size:15px}.state-view p{margin:0;font-size:13px;max-width:420px;line-height:1.6}.state-view em{font-style:normal;color:var(--primary)}.error-state{color:var(--danger)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.am-error,.form-error{color:var(--danger);font-size:13px;margin:8px 0}.form-error{background:var(--danger-soft);padding:8px 12px;border-radius:8px}.ops-list{display:flex;flex-direction:column;gap:10px}.ops-list article{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}.ops-list article>svg{color:var(--primary);flex-shrink:0}.ops-list article>div{flex:1;min-width:0}.ops-list article strong{font-size:14px}.ops-list article p{margin:3px 0;font-size:12px;color:var(--text-soft)}.ops-list article small{font-size:11px;color:#8fa39a}.status-pill{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;white-space:nowrap}.status-pending{background:#fdf3e0;color:#8a5a10}.status-approved{background:var(--primary-soft);color:var(--primary-strong)}.status-rejected{background:var(--danger-soft);color:var(--danger)}.inventory-available{background:#e3f2ea;color:#1e6b4a}.row-actions{display:flex;gap:8px;flex-shrink:0}.row-actions button{display:inline-flex;align-items:center;gap:4px;background:none;border:1px solid var(--border);border-radius:7px;padding:5px 10px;font-size:12px;cursor:pointer;color:var(--text)}.row-actions button:hover{background:var(--primary-soft);color:var(--primary-strong)}.chat-layout{display:flex}.chat-panel{display:flex;flex-direction:column;min-height:0}.chat-body{display:flex;min-height:520px;height:calc(100vh - 230px);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.chat-sidebar{width:220px;border-right:1px solid var(--border);background:#fafcfb;overflow-y:auto;flex-shrink:0}.chat-channel-item{display:flex;align-items:center;gap:10px;width:100%;padding:11px 14px;border:none;background:none;cursor:pointer;text-align:left;border-bottom:1px solid #eef3f0}.chat-channel-item:hover{background:var(--primary-soft)}.chat-channel-item.is-active{background:var(--primary-soft);border-left:3px solid var(--primary)}.chat-channel-icon{color:var(--text-soft);display:inline-flex}.chat-channel-name{flex:1;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-channel-meta{font-size:11px;color:#8fa39a}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0}.chat-messages{flex:1;overflow-y:auto;padding:18px 20px;display:flex;flex-direction:column;gap:12px}.chat-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-soft);text-align:center;height:100%}.chat-empty p{margin:0;font-size:12px;max-width:380px;line-height:1.7}.chat-msg{display:flex;flex-direction:column;gap:6px}.chat-bubble{max-width:72%;padding:9px 13px;border-radius:12px;background:#fff;border:1px solid var(--border);align-self:flex-start}.chat-bubble.mine{align-self:flex-end;background:var(--primary);color:#fff;border-color:var(--primary)}.chat-msg-head{display:flex;align-items:center;gap:8px;font-size:11px;opacity:.75;margin-bottom:3px}.chat-bubble.mine .chat-msg-head{color:#e8f2ec}.chat-msg-content{font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.chat-msg-image{display:block;max-width:220px;max-height:220px;border-radius:10px;margin-bottom:6px}.read-status{display:block;margin-top:4px;font-size:10px;font-style:normal;color:var(--text-soft);text-align:right}.chat-bubble.mine .read-status{color:#d9efe1}.chat-msg time{font-size:10px}.chat-input{display:flex;gap:10px;padding:12px 14px;border-top:1px solid var(--border);background:#fff}.chat-input input{flex:1;border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:13px;outline:none}.chat-input input:focus{border-color:var(--primary)}.recognition-card{align-self:flex-start;max-width:72%;border-radius:12px;padding:10px 14px;background:#f4f9f6;border:1px solid #cfe3d6;font-size:12px}.recognition-card.status-pending{background:#fdfbf4;border-color:#e8dcb8}.recognition-card.status-failed{background:var(--danger-soft);border-color:#f0c9c2}.recognition-head{display:flex;align-items:center;gap:6px;font-weight:600;color:var(--text)}.recognition-head svg{color:var(--primary)}.status-failed .recognition-head svg{color:var(--danger)}.recognition-confidence{margin-left:auto;font-weight:400;color:var(--text-soft);font-size:11px}.recognition-fields{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}.recognition-field b{color:var(--text-soft);font-weight:500;margin-right:4px}.recognition-reply{margin:7px 0 0;color:var(--primary-strong)}.recognition-error{margin:7px 0 0;color:var(--danger)}.recognition-actions{display:flex;gap:10px;margin-top:8px}.recognition-actions button{display:inline-flex;align-items:center;gap:4px;background:none;border:none;color:var(--primary);cursor:pointer;font-size:12px;padding:0}.recognition-actions .primary-link{color:var(--primary)}.drawer-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.drawer-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f1e1873;border:none;cursor:pointer}.drawer{position:absolute;top:0;right:0;height:100%;width:min(480px,92vw);background:var(--card);box-shadow:-8px 0 30px #00000024;display:flex;flex-direction:column;border-radius:0}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}.drawer-header .eyebrow{font-size:11px;color:var(--text-soft);letter-spacing:1px}.drawer-header h2{margin:3px 0 0;font-size:16px}.drawer-body{flex:1;overflow-y:auto;padding:16px 22px}.form-content{display:flex;flex-direction:column;gap:12px;padding:4px 0}.form-content label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-soft)}.form-content input,.form-content textarea,.form-content select{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;font-family:inherit;color:var(--text);outline:none;background:#fff}.form-content input:focus,.form-content textarea:focus{border-color:var(--primary)}.form-content textarea{resize:vertical;min-height:44px}.form-content input:disabled{background:#f4f7f5;color:var(--text-soft)}.form-note{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-soft);padding:8px 0}.drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--border);background:#fafcfb}.member-picker{display:flex;flex-wrap:wrap;gap:8px}.member-chip{border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12px;background:#fff;cursor:pointer;color:var(--text)}.member-chip.selected{background:var(--primary);border-color:var(--primary);color:#fff}.howto-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.howto-step{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;background:#fff}.howto-step b{font-size:14px;color:var(--primary-strong)}.howto-step p{font-size:12px;color:var(--text-soft);line-height:1.7;margin:6px 0 0}.howto-step code{background:#eef3f0;border-radius:4px;padding:1px 5px;font-size:11px}.master-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.master-cols h3{display:flex;align-items:center;gap:6px;font-size:14px;margin:0 0 10px}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th,.data-table td{text-align:left;padding:7px 9px;border-bottom:1px solid #eef3f0}.data-table th{color:var(--text-soft);font-weight:500;font-size:12px}.data-table tbody tr.clickable-row{cursor:pointer;transition:background .12s}.data-table tbody tr.clickable-row:hover{background:#f4f8f5}.login-page{display:flex;align-items:flex-start;justify-content:center;padding-top:8vh}.login-card{width:min(380px,92vw);background:var(--card);border:1px solid var(--border);border-radius:16px;padding:30px 32px;box-shadow:var(--shadow);text-align:center}.login-brand{width:56px;height:56px;margin:0 auto 12px;border-radius:16px;background:var(--primary);color:#fff;display:flex;align-items:center;justify-content:center}.login-card h2{margin:0 0 2px;font-size:20px}.login-sub{margin:0 0 22px;font-size:12px;color:var(--text-soft)}.login-card form{display:flex;flex-direction:column;gap:14px;text-align:left}.login-card label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--text-soft)}.login-card input{border:1px solid var(--border);border-radius:9px;padding:10px 12px;font-size:14px;outline:none}.login-card input:focus{border-color:var(--primary)}.login-btn{justify-content:center;margin-top:4px;padding:11px 0;font-size:15px}.login-hint{display:flex;align-items:flex-start;gap:6px;margin-top:18px;padding:10px 12px;border-radius:9px;background:var(--primary-soft);color:var(--primary-strong);font-size:11px;text-align:left;line-height:1.5}.login-hint svg{flex-shrink:0;margin-top:2px}.role-chip{font-size:11px;color:var(--primary-strong);background:var(--primary-soft);border-radius:999px;padding:3px 10px}.overview-head{font-size:14px;margin:18px 0 8px;color:var(--primary-strong)}@media (max-width: 760px){.content{padding:14px}.chat-body{flex-direction:column;height:auto;min-height:0}.chat-sidebar{width:100%;max-height:180px;border-right:none;border-bottom:1px solid var(--border)}.chat-bubble,.recognition-card{max-width:92%}.context-banner{flex-direction:column;align-items:flex-start}}
