:root{--ink:#172b25;--muted:#687a73;--line:#d8e3de;--paper:#f3f6f4;--green:#1b6b52;--green2:#2c8968;--mint:#e3f2eb;--white:#fff;--amber:#a5660b;--red:#a4453d;--shadow:0 12px 38px rgba(19,50,40,.08)}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei UI","PingFang SC",system-ui,sans-serif}.hidden{display:none!important}.eyebrow{margin:0;color:#71877e;letter-spacing:.18em;font-size:10px;font-weight:800}.login-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 20% 15%,#dceee6,transparent 38%),#f4f7f5}.login-card{width:min(410px,100%);background:#fff;padding:38px;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(17,52,41,.13)}.portal-logo{width:48px;height:48px;display:grid;place-items:center;background:#153c31;color:#fff;font-family:Georgia,serif;font-size:28px;margin-bottom:24px}.login-card h1,.portal-head h1{font:700 32px Georgia,"Songti SC",serif;margin:7px 0}.sub{color:var(--muted);margin:0 0 26px}.login-card label,.form-grid label{display:grid;gap:7px;font-size:13px;font-weight:700;margin-top:15px}.login-card input,.form-grid input,.form-grid select,.form-grid textarea,.settlement-card textarea,.card-head input{width:100%;border:1px solid #cbd9d3;border-radius:8px;padding:11px;background:#fff;font:inherit;color:var(--ink);outline:none}.login-card input:focus,.form-grid input:focus,.form-grid select:focus,textarea:focus{border-color:#438c72;box-shadow:0 0 0 3px rgba(67,140,114,.12)}button{border:0;border-radius:8px;padding:11px 16px;font:700 13px inherit;cursor:pointer}.login-card button,.primary{background:var(--green);color:white}.login-card button{width:100%;margin-top:22px}.ghost{background:white;border:1px solid var(--line);color:var(--ink)}button:disabled{opacity:.5;cursor:not-allowed}.login-error{min-height:20px;color:var(--red);font-size:12px}.portal{max-width:1380px;margin:auto;padding:28px 42px 60px}.portal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.portal-head #welcome{margin:4px 0 0;color:var(--muted)}.head-actions{display:flex;gap:8px}.notice{background:#e5f1ec;border-left:4px solid var(--green);padding:14px 17px;margin-bottom:16px;display:flex;gap:12px;font-size:13px}.notice span{color:var(--muted)}.metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:13px;margin-bottom:16px}.metric,.card{background:white;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}.metric{padding:18px}.metric b{font:700 26px Georgia,serif;display:block;margin:9px 0 3px}.metric small{color:var(--muted)}.card{padding:21px;margin-bottom:16px}.card h2{font:700 21px Georgia,"Songti SC",serif;margin:5px 0 15px}.card-head{display:flex;align-items:center;justify-content:space-between}.card-head input{max-width:280px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#647970;background:#f2f6f4;padding:10px;white-space:nowrap}td{padding:11px 10px;border-bottom:1px solid #ebf0ed;vertical-align:top}.sku{font-family:Consolas,monospace;font-weight:800;color:var(--green)}.cell-note{display:block;color:var(--muted);margin-top:4px}.stock{font:700 18px Georgia,serif}.badge{display:inline-block;padding:5px 8px;border-radius:99px;background:#eef2f0;font-size:11px}.badge.good{background:var(--mint);color:var(--green)}.badge.wait{background:#fff0d5;color:var(--amber)}.two-column{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid>label:nth-of-type(n+3),.form-grid>.sku-lines,.form-grid>.add-line,.form-grid>.primary{grid-column:1/-1}.sku-lines{display:grid;gap:8px;margin-top:10px}.sku-line{display:grid;grid-template-columns:1fr 100px 36px;gap:8px}.sku-line .remove-line{background:#f8ecea;color:var(--red);padding:7px}.add-line{justify-self:start}.settlement-card{display:flex;flex-direction:column}.settlement-card p{color:var(--muted);font-size:13px;line-height:1.7}.settle-amount{background:#eef6f2;border:1px solid #d3e6dd;border-radius:10px;padding:18px;margin:3px 0 12px}.settle-amount span{display:block;color:var(--muted);font-size:12px}.settle-amount b{font:700 30px Georgia,serif;display:block;margin-top:8px}.settlement-card .primary{margin-top:12px}.empty{text-align:center;color:var(--muted);padding:30px}#portal-toast{position:fixed;right:24px;bottom:24px;background:#153c31;color:#fff;padding:13px 17px;border-radius:9px;opacity:0;transform:translateY(20px);transition:.2s;pointer-events:none}#portal-toast.show{opacity:1;transform:none}#portal-toast.error{background:#913b35}@media(max-width:900px){.portal{padding:22px}.metrics{grid-template-columns:repeat(2,1fr)}.two-column{grid-template-columns:1fr}}@media(max-width:600px){.portal{padding:16px 12px}.portal-head{align-items:flex-start}.portal-head h1{font-size:25px}.metrics{grid-template-columns:1fr 1fr}.notice{display:block}.notice span{display:block;margin-top:5px}.card{padding:16px}.card-head{display:block}.card-head input{max-width:none;margin-bottom:12px}.form-grid{grid-template-columns:1fr}.form-grid>*{grid-column:1!important}.sku-line{grid-template-columns:1fr 75px 34px}}
.portal-product-groups{display:grid;gap:14px}.portal-product-group{border:1px solid var(--line);border-radius:11px;overflow:hidden}.portal-product-head{display:flex;gap:13px;align-items:center;padding:13px 14px;background:linear-gradient(90deg,#edf6f2,#fbfdfc);border-bottom:1px solid var(--line)}.portal-product-head>div{min-width:0;flex:1}.portal-product-head h3{font:700 17px Georgia,"Songti SC",serif;margin:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal-product-head p{font-size:12px;color:var(--muted);margin:0}.portal-product-toggle{display:flex;align-items:center;gap:8px;flex:0 0 auto;border:1px solid #c9dcd4;border-radius:99px;padding:9px 13px;background:#fff;color:var(--accent);font-weight:700;cursor:pointer}.portal-product-toggle i{font-style:normal;font-size:16px;transition:transform .18s ease}.portal-product-toggle[aria-expanded="true"] i{transform:rotate(180deg)}.portal-product-details[hidden]{display:none}.portal-product-photo,.portal-sku-photo{display:grid;place-items:center;overflow:hidden;flex:0 0 auto;background:#e2ece7;border:1px solid #d3dfda;color:var(--muted)}.portal-product-photo{width:66px;height:66px;border-radius:9px}.portal-sku-photo{width:44px;height:44px;border-radius:7px}.portal-product-photo img,.portal-sku-photo img{width:100%;height:100%;object-fit:cover}.image-empty span{font-size:10px;text-align:center;padding:4px}.portal-sku-cell{display:flex;align-items:center;gap:9px;min-width:145px}@media(max-width:600px){.portal-product-photo{width:54px;height:54px}.portal-product-head{align-items:flex-start;flex-wrap:wrap}.portal-product-toggle{margin-left:67px}}
.settlement-preview{border:1px solid var(--line);border-radius:9px;margin:2px 0 12px;background:#fbfdfc}.settlement-preview summary{cursor:pointer;padding:11px 13px;font-weight:700;color:var(--green)}.settlement-preview>div{padding:0 10px 10px}.settlement-preview table{font-size:12px}.settlement-preview tfoot th{border-top:2px solid var(--line)}
.settlement-blocked-hint{display:flex!important;gap:9px;align-items:flex-start;margin:11px 0 0!important;padding:11px 12px;border:1px solid #d9a757;border-radius:8px;background:#fff5df;color:#76500f!important}.settlement-blocked-hint[hidden]{display:none!important}.settlement-blocked-hint i{font-size:19px;margin-top:1px}.settlement-blocked-hint span{line-height:1.55}
.payment-profile-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.payment-profile-form label{display:grid;gap:7px;font-size:13px;font-weight:700}.payment-profile-form input,.payment-profile-form select{width:100%;border:1px solid #cbd9d3;border-radius:8px;padding:11px;background:#fff;font:inherit}.payment-profile-status{display:flex;align-items:center;gap:10px}.payment-profile-status img{width:74px;height:74px;object-fit:cover;border:1px solid var(--line);border-radius:9px}.payment-profile-status small{display:block;color:var(--muted);margin-top:5px}@media(max-width:720px){.payment-profile-form{grid-template-columns:1fr}.payment-profile-card .card-head{display:block}.payment-profile-status{margin:12px 0}}
