:root{--brand: #2fa88a;--brand-strong: #22886f;--brand-soft: #e6f6f1;--brand-fade: rgba(47, 168, 138, .12);--accent: #4aa8c0;--accent-soft: #e7f4f8;--warn: #e8a33d;--warn-soft: #fdf3e3;--danger: #dd626c;--danger-soft: #fbecee;--violet: #8d7bd4;--violet-soft: #f0ecfb;--ink: #1b2b28;--ink-2: #4a5f5b;--ink-3: #849893;--ink-4: #b3c2be;--line: #e6ecea;--line-strong: #d3dedb;--surface: #ffffff;--surface-2: #f7faf9;--surface-3: #eff5f3;--page: #f4f8f7;--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--radius-pill: 999px;--shadow-xs: 0 1px 2px rgba(21, 52, 46, .05);--shadow-sm: 0 2px 8px rgba(21, 52, 46, .06);--shadow: 0 6px 24px rgba(21, 52, 46, .08);--shadow-lg: 0 18px 48px rgba(21, 52, 46, .14);--topbar-h: 60px;--ease: cubic-bezier(.32, .72, 0, 1)}*{box-sizing:border-box}html,body,#root{height:100%}html:has(.c7n-modal-wrap:not([style*="display: none"]) .c7n-modal:not([hidden])),html:has(.drawer[aria-modal=true]){overflow:hidden!important;overscroll-behavior:none}body:has(.c7n-modal-wrap:not([style*="display: none"]) .c7n-modal:not([hidden])),body:has(.drawer[aria-modal=true]){overflow:hidden!important;overscroll-behavior:none}.c7n-modal-wrap,.drawer-body{overscroll-behavior:contain}body{margin:0;background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:auto 0 0 0;height:320px;pointer-events:none;z-index:0;background:radial-gradient(60% 100% at 20% 100%,rgba(47,168,138,.1),transparent 70%),radial-gradient(50% 90% at 85% 100%,rgba(74,168,192,.09),transparent 70%)}a{color:var(--brand-strong);text-decoration:none}a:hover{color:var(--brand)}.app-shell{min-height:100%;display:flex;flex-direction:column;position:relative;z-index:1}.container{width:100%;max-width:1180px;margin:0 auto;padding:26px 22px 72px}.container-narrow{max-width:960px}.settings-split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:18px;align-items:start}@media (max-width: 860px){.settings-split{grid-template-columns:1fr}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:22px}.eyebrow{display:inline-block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--brand);font-weight:600;margin-bottom:6px}.page-title{margin:0;font-size:27px;line-height:1.25;font-weight:650;letter-spacing:-.01em}.page-sub{margin:6px 0 0;color:var(--ink-2);font-size:13.5px}.date-chip{font-size:13px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);padding:7px 16px;box-shadow:var(--shadow-xs);white-space:nowrap}.topbar{position:sticky;top:0;z-index:60;height:var(--topbar-h);display:flex;align-items:center;gap:14px;padding:0 22px;background:#ffffffdb;-webkit-backdrop-filter:saturate(160%) blur(14px);backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid var(--line)}.topbar-brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:650;font-size:15.5px}.topbar-brand:hover{color:var(--ink)}.topbar-brand img,.topbar-brand svg{width:30px;height:30px;display:block}.topbar-brand small{display:block;font-size:11px;font-weight:500;color:var(--ink-3);letter-spacing:.04em}.topbar-nav{display:flex;gap:4px;margin-left:10px}.topbar-nav a{padding:7px 15px;border-radius:var(--radius-pill);font-size:13.5px;color:var(--ink-2);font-weight:500;transition:background .16s var(--ease),color .16s var(--ease)}.topbar-nav a:hover{background:var(--surface-3);color:var(--ink)}.topbar-nav a.active{background:var(--brand-soft);color:var(--brand-strong);font-weight:600}.topbar-spacer{flex:1}.topbar-user{display:flex;align-items:center;gap:9px;padding:5px 6px 5px 5px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface);cursor:pointer;font-size:13px;color:var(--ink-2);transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}.topbar-user:hover{border-color:var(--brand);box-shadow:var(--shadow-xs);color:var(--ink)}.avatar{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(140deg,#3cc39c,#1f8f8f);color:#fff;font-size:12px;font-weight:600;flex:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px;box-shadow:var(--shadow-xs)}.card-title{display:flex;align-items:center;gap:10px;justify-content:space-between;margin-bottom:16px}.card-title h3{margin:0;font-size:15.5px;font-weight:620;display:flex;align-items:center;gap:8px}.card-title h3 .icon{color:var(--brand);font-size:17px}.card-title .link{font-size:13px;color:var(--ink-3)}.card-title .link:hover{color:var(--brand)}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 14px}.section-title h2{margin:0;font-size:17px;font-weight:630}.section-title .muted{font-size:12.5px}.muted{color:var(--ink-3)}.small{font-size:12.5px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:14px;margin-bottom:20px}.stat-grid.is-six{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat-card{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:17px 18px 15px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}.stat-card.is-clickable{cursor:pointer}.stat-card.is-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-strong)}.stat-card:after{content:"";position:absolute;right:-26px;top:-26px;width:78px;height:78px;border-radius:50%;background:var(--brand-soft);opacity:.7}.stat-card.tone-accent:after{background:var(--accent-soft)}.stat-card.tone-warn:after{background:var(--warn-soft)}.stat-card.tone-danger:after{background:var(--danger-soft)}.stat-card.tone-violet:after{background:var(--violet-soft)}.stat-label{position:relative;font-size:12.5px;color:var(--ink-2);display:flex;align-items:center;gap:6px}.stat-label .icon{font-size:14px;color:var(--ink-3)}.stat-value{position:relative;font-size:26px;font-weight:660;letter-spacing:-.02em;margin:6px 0 2px;font-variant-numeric:tabular-nums}.stat-value small{font-size:13px;font-weight:500;color:var(--ink-3);margin-left:3px}.stat-sub{position:relative;font-size:12px;color:var(--ink-3)}.action-hub{background:linear-gradient(180deg,#fff,#fbfdfc);border:1px solid var(--line);border-radius:var(--radius-lg);padding:20px 22px 18px;margin-bottom:20px;box-shadow:var(--shadow-xs)}.action-hub-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px}.action-hub-head strong{font-size:15px;font-weight:630}.action-hub-head span{font-size:12.5px;color:var(--ink-3)}.quick-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:10px;margin-bottom:16px}.quick-btn{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13.5px;font-weight:500;cursor:pointer;text-align:left;transition:all .18s var(--ease)}.quick-btn .icon{font-size:17px;color:var(--brand);flex:none;transition:transform .18s var(--ease)}.quick-btn:hover{border-color:var(--brand);background:var(--brand-soft);transform:translateY(-1px)}.quick-btn:hover .icon{transform:scale(1.1)}.quick-btn.primary{background:linear-gradient(140deg,#34b795,#23886f);border-color:transparent;color:#fff;box-shadow:0 6px 16px #23886f47}.quick-btn.primary .icon{color:#fff}.quick-btn.primary:hover{background:linear-gradient(140deg,#3cc39c,#1f7d67)}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.filters .field{min-width:132px}.filters .field.grow{flex:1;min-width:220px}.chart-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;margin-bottom:20px}@media (max-width: 860px){.chart-grid{grid-template-columns:1fr}}.donut-layout{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.donut-legend{display:flex;flex-direction:column;gap:3px;flex:1;min-width:130px}.legend-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--radius-sm);font-size:12.5px;color:var(--ink-2);cursor:pointer;border:none;background:none;text-align:left;width:100%;transition:background .15s var(--ease)}.legend-item:hover{background:var(--surface-3);color:var(--ink)}.legend-item .dot{width:9px;height:9px;border-radius:3px;flex:none}.legend-item .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-item strong{font-variant-numeric:tabular-nums;font-weight:620}.chart-legend-inline{display:flex;gap:16px;font-size:12.5px;color:var(--ink-2);margin-top:8px}.chart-legend-inline span{display:inline-flex;align-items:center;gap:6px}.chart-legend-inline i{width:9px;height:9px;border-radius:3px;display:inline-block}.expiry-list{display:flex;flex-direction:column;gap:8px}.expiry-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:var(--radius);background:var(--surface-2);border:1px solid transparent;transition:background .16s var(--ease),border-color .16s var(--ease)}.expiry-row:hover{background:var(--surface);border-color:var(--line)}.expiry-row .grow{flex:1;min-width:0}.expiry-clear{display:flex;align-items:center;gap:10px;padding:16px 18px;border-radius:var(--radius);background:var(--brand-soft);color:var(--brand-strong);font-size:13.5px}.expiry-clear .dot{width:8px;height:8px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--brand-fade);flex:none}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:14px}.item-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}.item-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-strong)}.item-card-top{display:flex;align-items:flex-start;gap:11px;margin-bottom:10px}.thumb{width:46px;height:46px;border-radius:12px;overflow:hidden;flex:none;background:var(--surface-3);display:grid;place-items:center;color:var(--ink-4);font-size:17px}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.item-open{display:flex;align-items:center;gap:11px;flex:1;border:none;background:none;padding:0;cursor:pointer;text-align:left;min-width:0}.item-name{font-size:14.5px;font-weight:620;color:var(--ink);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-meta{font-size:12px;color:var(--ink-3);display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-stock{font-size:17px;font-weight:650;color:var(--brand-strong);letter-spacing:-.01em;margin-bottom:8px;font-variant-numeric:tabular-nums}.item-traits{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;min-height:22px}.item-card-footer{margin-top:auto;padding-top:11px;border-top:1px dashed var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}.item-card-footer{flex-wrap:wrap}.item-actions{display:flex;flex-wrap:wrap;gap:6px;flex:none}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:var(--radius-pill);font-size:11.5px;font-weight:500;background:var(--surface-3);color:var(--ink-2);white-space:nowrap;line-height:1.7}.badge.brand{background:var(--brand-soft);color:var(--brand-strong)}.badge.accent{background:var(--accent-soft);color:#2b7f92}.badge.warn{background:var(--warn-soft);color:#a4701d}.badge.danger{background:var(--danger-soft);color:#b3414b}.badge.violet{background:var(--violet-soft);color:#6752b5}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:46px 24px;gap:6px}.empty-state svg{margin-bottom:8px}.empty-state h3{margin:0;font-size:16px;font-weight:620}.empty-state p{margin:0 0 14px;font-size:13px;color:var(--ink-3);max-width:380px}.drawer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f231f47;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;animation:fade-in .22s var(--ease)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);background:var(--surface);z-index:1001;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:slide-in .28s var(--ease)}@keyframes slide-in{0%{transform:translate(28px);opacity:.6}to{transform:none;opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.drawer-head{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 16px;border-bottom:1px solid var(--line)}.drawer-head h2{margin:0;font-size:19px;font-weight:650}.drawer-body{flex:1;overflow-y:auto;padding:20px 22px 30px}.drawer-hero{display:flex;gap:14px;margin-bottom:20px}.drawer-cover{width:92px;height:92px;border-radius:var(--radius);object-fit:cover;background:var(--surface-3);flex:none;display:grid;place-items:center;color:var(--ink-4);font-size:12px;text-align:center}.drawer-section{padding:16px 0;border-top:1px dashed var(--line)}.drawer-section:first-of-type{border-top:none;padding-top:0}.facts{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin:0}.facts>div{min-width:0}.facts dt{font-size:11.5px;color:var(--ink-3);margin-bottom:2px}.facts dd{margin:0;font-size:13.5px;color:var(--ink);overflow-wrap:anywhere}.trait-list{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}.trait-list .k{font-size:11.5px;color:var(--ink-3)}.trait-list .v{font-size:13.5px}.photo-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.photo-gallery img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line)}.activity-list{display:flex;flex-direction:column;gap:10px}.activity-item{padding:10px 13px;border-radius:var(--radius-sm);background:var(--surface-2);border-left:3px solid var(--brand-fade)}.activity-item .head{display:flex;justify-content:space-between;font-size:12.5px;gap:8px}.activity-item .head strong{font-weight:600}.activity-item .head time{color:var(--ink-3);font-variant-numeric:tabular-nums;flex:none}.activity-item p{margin:3px 0 0;font-size:12.5px;color:var(--ink-2)}.activity-item small{color:var(--ink-3);font-size:11.5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.form-grid .span-2{grid-column:1 / -1}@media (max-width: 720px){.form-grid,.facts,.trait-list{grid-template-columns:1fr}.container{padding:18px 14px 60px}.page-title{font-size:22px}.donut-layout{justify-content:center}}@media (max-width: 720px){.topbar{gap:8px;padding:0 12px}.topbar-brand{gap:7px;font-size:14px;white-space:nowrap;flex:none}.topbar-brand img,.topbar-brand svg{width:26px;height:26px}.topbar-brand small{display:none}.topbar-nav{margin-left:0;gap:2px;min-width:0;overflow-x:auto;scrollbar-width:none}.topbar-nav::-webkit-scrollbar{display:none}.topbar-nav a{padding:6px 11px;font-size:13px;white-space:nowrap}.topbar-user{padding:4px;gap:0;flex:none}.topbar-user>span:not(.avatar){display:none}.topbar-user .icon{display:none}.stat-grid,.stat-grid.is-six{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat-card{padding:14px 15px 12px}.stat-value{font-size:22px}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.action-hub{padding:16px 15px 14px}.card,.panel{padding:16px 15px}.item-grid{grid-template-columns:1fr}.expiry-row{gap:9px;padding:10px 11px}}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label{font-size:12.5px;font-weight:530;color:var(--ink-2)}.field .hint{font-size:11.5px;color:var(--ink-3)}.form-actions{display:flex;gap:10px;justify-content:flex-end;padding-top:18px;margin-top:20px;border-top:1px solid var(--line)}.qty-panel{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.qty-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.qty-row .field{flex:1;min-width:96px}.qty-eq{padding-bottom:8px;color:var(--ink-3);font-size:13px;flex:none}.qty-total{margin-top:12px;padding:10px 14px;border-radius:var(--radius-sm);background:var(--brand-soft);color:var(--brand-strong);font-size:13px;font-weight:500}.tier-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.tier-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);font-size:12px;color:var(--ink-2)}.tier-chip b{color:var(--ink);font-weight:600}.tier-chip .icon{font-size:12px;color:var(--ink-3);cursor:pointer}.tier-chip .icon:hover{color:var(--danger)}.ai-panel{border:1px dashed var(--brand);border-radius:var(--radius);background:linear-gradient(180deg,#f4fdfa,#fff);padding:16px 18px}.ai-panel-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.ai-panel-head .icon{color:var(--brand);font-size:17px}.ai-panel-head strong{font-size:14px;font-weight:620}.ai-panel-head .badge{margin-left:auto}.ai-hint{font-size:12px;color:var(--ink-3);margin-top:8px}.ai-suggest{margin-top:10px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}.ai-suggest dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0}.ai-suggest dt{color:var(--ink-3)}.ai-suggest dd{margin:0;color:var(--ink);overflow-wrap:anywhere}.login-page{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;position:relative;z-index:1}@media (max-width: 900px){.login-page{grid-template-columns:1fr}.login-art{display:none}}.login-art{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:44px;background:linear-gradient(150deg,#2fb392,#249a86 45%,#1b7f86);color:#fff}.login-art:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(70% 60% at 15% 20%,rgba(255,255,255,.18),transparent 70%),radial-gradient(60% 60% at 90% 85%,rgba(255,255,255,.12),transparent 70%);pointer-events:none}.login-art-inner{position:relative;z-index:1}.login-art h1{font-size:32px;line-height:1.28;margin:22px 0 12px;font-weight:640;letter-spacing:-.015em}.login-art p{font-size:14px;color:#ffffffd6;max-width:380px;margin:0}.login-art-points{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px}.login-art-points div{display:flex;align-items:center;gap:10px;font-size:13.5px;color:#ffffffe6}.login-art-points .icon{font-size:16px;opacity:.9}.login-form-side{display:flex;align-items:center;justify-content:center;padding:40px 28px;background:var(--surface)}.login-card{width:100%;max-width:412px}.login-card h2{margin:0 0 6px;font-size:23px;font-weight:650}.login-card>.muted{margin-bottom:22px;display:block;font-size:13px}.login-foot{margin-top:18px;font-size:12px;color:var(--ink-3);text-align:center}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.right{margin-left:auto}.divider{height:1px;background:var(--line);margin:18px 0}.center-loading{display:grid;place-items:center;min-height:260px}.tabs-wrap{margin-bottom:18px}.mono{font-variant-numeric:tabular-nums}.scroll-anchor{scroll-margin-top:calc(var(--topbar-h) + 16px)}.c7n-btn-flat.c7n-btn-primary{background-color:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 2px 8px #2fa88a3d}.c7n-btn-flat.c7n-btn-primary:hover,.c7n-btn-flat.c7n-btn-primary:focus{background-color:var(--brand-strong);border-color:var(--brand-strong);color:#fff}.c7n-btn-flat.c7n-btn-primary>i.icon,.c7n-btn-flat.c7n-btn-primary>a:only-child{color:#fff}.c7n-btn-flat.c7n-btn-primary[disabled],.c7n-btn-flat.c7n-btn-primary.c7n-btn-disabled,.c7n-btn-flat.c7n-btn-primary.disabled{background-color:var(--surface-3);border-color:var(--line);color:var(--ink-4);box-shadow:none}.c7n-btn-flat.c7n-btn-danger:not([disabled]):hover{background-color:var(--danger-soft);border-color:var(--danger);color:#b3414b}.c7n-input:focus,.c7n-input-affix-wrapper-focused,select.c7n-input:focus,input.c7n-input:focus,textarea.c7n-input:focus{outline:none;border-color:var(--brand)!important;box-shadow:0 0 0 3px var(--brand-fade)}.c7n-message{font-size:13px}input.c7n-input,select.c7n-input,textarea.c7n-input{background-color:var(--surface);color:var(--ink);transition:border-color .16s var(--ease),box-shadow .16s var(--ease)}input.c7n-input::placeholder,textarea.c7n-input::placeholder{color:var(--ink-4)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
