/* 商城后台原型 - 设计系统
   取值来源：原站计算样式（2026-10-09 采集）
   主色 #FB6638 / 顶栏 #1E222B / 内容底 #F4F3F7 / 侧栏 160px / 控件高 38px 圆角 4px */
:root{
  --c-primary:#FB6638;--c-primary-h:#FF7A50;--c-primary-l:#FFF1EC;--c-primary-d:#E8552A;
  --c-header:#1E222B;--c-bg:#F4F3F7;--c-card:#FFFFFF;
  --c-text:#333333;--c-text-2:#666666;--c-text-3:#999999;--c-text-4:#C5C8CE;
  --c-border:#DCDEE2;--c-border-l:#F2F2F2;--c-th:#F9F9FC;--c-beige:#F6F2ED;
  --c-blue:#2D8CF0;--c-blue-l:#EAF4FE;--c-success:#19BE6B;--c-success-l:#E8F8F0;--c-warning:#FF9900;--c-warning-l:#FFF5E6;--c-error:#ED4014;--c-error-l:#FDECE9;
  --radius:4px;--radius-l:12px;--h-top:64px;--w-side:160px;
  --shadow:0 2px 10px rgba(0,0,0,.04);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{font-family:"PingFang SC","Microsoft YaHei",微软雅黑,Arial,sans-serif;font-size:14px;color:var(--c-text);background:var(--c-bg);line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--c-primary);text-decoration:none;cursor:pointer}
a.muted{color:var(--c-text-2)}
ul{list-style:none}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--c-text);outline:none}
svg{display:inline-block;vertical-align:middle}
.ico{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* ---------- 顶栏 ---------- */
.topbar{position:fixed;top:0;left:0;right:0;height:var(--h-top);background:var(--c-header);display:flex;align-items:center;padding:0 24px 0 20px;z-index:100}
.topbar .logo{display:flex;align-items:center;gap:8px;color:#fff;font-size:22px;font-weight:600;letter-spacing:5px;margin-right:30px;white-space:nowrap}
.topbar .logo .mark{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#F7B267,#FB6638);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;letter-spacing:0;font-weight:700;flex:none}
.topbar .logo .mark-empty{background:none;border:1px dashed rgba(255,255,255,.35)}
.topnav{display:flex;align-items:center;height:100%;gap:4px}
.topnav a{display:flex;align-items:center;height:var(--h-top);padding:0 14px;color:rgba(255,255,255,.72);font-size:15px;border-bottom:3px solid transparent;border-top:3px solid transparent}
.topnav a:hover{color:#fff}
.topnav a.active{color:#fff;border-bottom-color:var(--c-primary)}
.topbar .right{margin-left:auto;display:flex;align-items:center;gap:16px;color:#fff}
.topbar .shop-name{display:flex;align-items:center;gap:6px;font-size:14px;color:#fff;cursor:pointer}
.topbar .avatar{width:32px;height:32px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#F3D9BE,#B98A5E);border:2px solid rgba(255,255,255,.25)}
.topbar .icon-btn{width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.4);display:flex;align-items:center;justify-content:center;color:#fff}

/* ---------- 侧栏 ---------- */
.sidebar{position:fixed;top:var(--h-top);left:0;bottom:0;width:var(--w-side);background:#fff;border-right:1px solid var(--c-border-l);overflow-y:auto;padding-top:10px;z-index:90}
.sidebar a{display:flex;align-items:center;gap:10px;height:45px;padding:0 20px;color:var(--c-text);font-size:14px;position:relative}
.sidebar a .ico{width:18px;height:18px;flex:none;color:var(--c-text-2);stroke-width:1.6}
.sidebar a:hover{color:var(--c-primary)}
.sidebar a.active{color:var(--c-primary);background:var(--c-primary-l)}
.sidebar a.active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;background:var(--c-primary);border-radius:0 2px 2px 0}
.sidebar a.active .ico{color:var(--c-primary)}

/* ---------- 主区 ---------- */
.main{padding-top:var(--h-top);min-height:100vh}
body.has-side .main{padding-left:var(--w-side)}
.page-bar{height:48px;background:#fff;display:flex;align-items:center;padding:0 20px;font-size:14px;color:var(--c-text);border-bottom:1px solid var(--c-border-l);gap:8px}
.page-bar .back{display:inline-flex;align-items:center;gap:2px;color:var(--c-text-3)}
.page-bar .sep{color:var(--c-text-4)}
.page-bar .cur{color:var(--c-text)}
.page-bar .spacer{flex:1}
.page{padding:20px}
.page.narrow{max-width:1200px}

/* ---------- 卡片 ---------- */
.card{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.card+.card{margin-top:16px}
.card.soft{border-radius:var(--radius-l);padding:22px 24px}
.card-head{display:flex;align-items:center;margin-bottom:16px}
.card-head h3{font-size:18px;font-weight:600;color:var(--c-text)}
.card-head .extra{margin-left:auto;font-size:13px;color:var(--c-text-3);display:flex;align-items:center;gap:12px}
.card-head.sm h3{font-size:15px}
.section{padding:18px 0;border-bottom:1px solid var(--c-border-l)}
.section:last-child{border-bottom:0}
.section-title{font-size:15px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.section-title::before{content:"";width:3px;height:14px;background:var(--c-primary);border-radius:2px}
.row{display:flex;gap:16px}
.row>*{flex:1;min-width:0}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}.mt20{margin-top:20px}.mb12{margin-bottom:12px}.mb16{margin-bottom:16px}.mb20{margin-bottom:20px}.ml8{margin-left:8px}.ml12{margin-left:12px}.mr8{margin-right:8px}
.flex{display:flex;align-items:center}.gap8{gap:8px}.gap12{gap:12px}.gap16{gap:16px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}
.right{text-align:right}.center{text-align:center}
.t2{color:var(--c-text-2)}.t3{color:var(--c-text-3)}.t4{color:var(--c-text-4)}.tp{color:var(--c-primary)}.ts{color:var(--c-success)}.tw{color:var(--c-warning)}.te{color:var(--c-error)}.tb{color:var(--c-blue)}
.fs12{font-size:12px}.fs13{font-size:13px}.fs16{font-size:16px}.fs18{font-size:18px}.fs20{font-size:20px}.fs24{font-size:24px}.fs28{font-size:28px}
.bold{font-weight:600}.num{font-weight:600;font-variant-numeric:tabular-nums}
.divider{height:1px;background:var(--c-border-l);margin:16px 0}
.hidden{display:none}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;height:38px;padding:0 18px;border-radius:var(--radius);border:1px solid var(--c-border);background:#fff;color:var(--c-text);font-size:14px;white-space:nowrap;line-height:1;vertical-align:middle}
.btn:hover{color:var(--c-primary);border-color:var(--c-primary)}
.btn.primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.btn.primary:hover{background:var(--c-primary-h);border-color:var(--c-primary-h);color:#fff}
.btn.blue{background:var(--c-blue);border-color:var(--c-blue);color:#fff}
.btn.blue:hover{opacity:.9;color:#fff}
.btn.ghost{border-color:var(--c-primary);color:var(--c-primary)}
.btn.sm{height:32px;padding:0 14px;font-size:13px}
.btn.xs{height:26px;padding:0 10px;font-size:12px}
.btn.text{border:0;background:transparent;color:var(--c-primary);padding:0 6px;height:auto}
.btn.disabled{opacity:.5;pointer-events:none}
.btn .ico{width:15px;height:15px}
.btns{display:flex;align-items:center;gap:10px}
.btns.right{justify-content:flex-end}

/* ---------- 表单控件 ---------- */
.input,.select,.textarea{display:inline-flex;align-items:center;height:38px;padding:0 10px;border:1px solid rgba(0,0,0,.1);border-radius:var(--radius);background:#fff;color:var(--c-text);width:100%;font-size:14px}
.input:hover,.select:hover,.textarea:hover{border-color:var(--c-primary)}
.input input{border:0;background:transparent;width:100%;height:100%;font-size:14px}
.input .suffix{color:var(--c-text-3);font-size:12px;margin-left:6px;white-space:nowrap}
.input .prefix{color:var(--c-text-2);margin-right:6px;white-space:nowrap}
.input .ico,.select .ico{width:14px;height:14px;color:var(--c-text-3)}
.input.ph input::placeholder,.ph{color:var(--c-text-4)}
.select{justify-content:space-between;cursor:pointer}
.select .ph{color:var(--c-text-4)}
.select.w-auto{width:auto;min-width:160px}
.textarea{height:auto;min-height:90px;align-items:flex-start;padding:8px 10px;position:relative;display:block}
.textarea .count{position:absolute;right:10px;bottom:6px;font-size:12px;color:var(--c-text-3)}
.w120{width:120px!important}.w160{width:160px!important}.w200{width:200px!important}.w240{width:240px!important}.w280{width:280px!important}.w320{width:320px!important}.w400{width:400px!important}.w440{width:440px!important}.w500{width:500px!important}.w-full{width:100%}
.form-item{display:flex;align-items:flex-start;margin-bottom:22px}
.form-item>.lbl{width:130px;flex:none;text-align:right;padding-right:16px;padding-top:9px;color:var(--c-text);font-size:14px;line-height:1.4}
.form-item>.lbl.req::before{content:"*";color:var(--c-error);margin-right:4px}
.form-item>.ctl{flex:1;min-width:0}
.form-item.inline{align-items:center;margin-bottom:0}
.form-item.inline>.lbl{padding-top:0}
.form-tip{font-size:12px;color:var(--c-text-3);margin-top:6px;line-height:1.6}
.form-tip a{margin-left:4px}
.form-wide .form-item>.lbl{width:170px}
.radio,.checkbox{display:inline-flex;align-items:center;gap:6px;margin-right:22px;cursor:pointer;font-size:14px;line-height:38px}
.radio i{width:16px;height:16px;border-radius:50%;border:1px solid var(--c-border);background:#fff;display:inline-block;position:relative;flex:none}
.radio.on i{border-color:var(--c-primary);border-width:5px}
.checkbox i{width:16px;height:16px;border-radius:3px;border:1px solid var(--c-border);background:#fff;display:inline-block;position:relative;flex:none}
.checkbox.on i{border-color:var(--c-primary);background:var(--c-primary)}
.checkbox.on i::after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.checkbox.part i{border-color:var(--c-primary)}
.checkbox.part i::after{content:"";position:absolute;left:3px;top:6px;width:8px;height:2px;background:var(--c-primary)}
.checkbox.solo,.radio.solo{margin-right:0;line-height:1}
.switch{display:inline-block;width:44px;height:22px;border-radius:11px;background:#CCCCCC;position:relative;vertical-align:middle;cursor:pointer;flex:none}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}
.switch.on{background:var(--c-primary)}
.switch.on::after{left:24px}
.switch-row{display:flex;align-items:center;gap:10px;font-size:14px}
.switch-row .desc{color:var(--c-text-3);font-size:12px}
.upload{width:96px;height:96px;border:1px dashed var(--c-border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--c-text-4);background:#fff;cursor:pointer}
.upload:hover{border-color:var(--c-primary);color:var(--c-primary)}
.upload .ico{width:24px;height:24px;stroke-width:1.3}
.upload.sm{width:80px;height:80px}
.upload.lg{width:120px;height:120px}
.thumb{width:96px;height:96px;border-radius:var(--radius);background:linear-gradient(135deg,#F8E7DD,#E7B8A1);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:12px;text-align:center;line-height:1.3;padding:6px;flex:none}
.thumb.sm{width:56px;height:56px;font-size:11px;padding:4px}
.thumb.xs{width:40px;height:40px;font-size:10px;padding:2px}
.thumb.game{background:linear-gradient(135deg,#2F3A57,#5B6B9A)}
.thumb.g2{background:linear-gradient(135deg,#6B3F2E,#C87B4A)}
.thumb.g3{background:linear-gradient(135deg,#2E4F3F,#5AA07C)}
.thumb.g4{background:linear-gradient(135deg,#3C2E5B,#8F6FD6)}
.thumb.g5{background:linear-gradient(135deg,#9B2E2E,#E06D5A)}
.color-box{width:60px;height:38px;border-radius:var(--radius);background:#FF2F46;border:1px solid var(--c-border)}
.num-input{display:inline-flex;align-items:stretch;border:1px solid rgba(0,0,0,.1);border-radius:var(--radius);height:38px;width:140px;background:#fff}
.num-input span{flex:1;display:flex;align-items:center;padding:0 10px}
.num-input .ctrls{display:flex;flex-direction:column;border-left:1px solid var(--c-border-l);width:26px}
.num-input .ctrls i{flex:1;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--c-text-3);font-style:normal}
.num-input .ctrls i+i{border-top:1px solid var(--c-border-l)}

/* ---------- 筛选区 ---------- */
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.filters{display:flex;flex-wrap:wrap;gap:14px 36px;padding:20px 0 0}
.filters .f{display:flex;align-items:center;gap:10px}
.filters .f .lbl{color:var(--c-text);white-space:nowrap}
.filters .f .input,.filters .f .select{width:270px}
.filters .f .input.w200,.filters .f .select.w200{width:200px}
.filters-foot{display:flex;align-items:center;gap:12px;padding-top:16px}
.filters-foot .adv{color:var(--c-primary);display:inline-flex;align-items:center;gap:2px;margin-right:4px}

/* ---------- Tab ---------- */
.tabs{display:flex;align-items:center;gap:0;border-bottom:1px solid var(--c-border-l);margin:0 0 16px}
.tabs a{display:inline-flex;align-items:center;height:44px;padding:0 18px;color:var(--c-text);font-size:14px;border-bottom:2px solid transparent;margin-bottom:-1px}
.tabs a.active{color:var(--c-primary);border-bottom-color:var(--c-primary)}
.tabs a:hover{color:var(--c-primary)}
.tabs.card-tabs{margin:-20px -20px 20px;padding:0 20px}
.seg{display:inline-flex;border:1px solid var(--c-border);border-radius:var(--radius);overflow:hidden}
.seg a{padding:0 14px;height:30px;display:inline-flex;align-items:center;font-size:13px;color:var(--c-text);background:#fff}
.seg a+a{border-left:1px solid var(--c-border)}
.seg a.active{background:var(--c-primary);color:#fff}

/* ---------- 表格 ---------- */
.bulk{display:flex;align-items:center;gap:14px;padding:4px 12px 14px;font-size:14px}
.bulk .ops{color:var(--c-text-4);display:flex;gap:10px}
.bulk .ops a{color:var(--c-text-4)}
.bulk.on .ops a{color:var(--c-primary)}
.table{width:100%;border-collapse:collapse;font-size:14px}
.table th{background:var(--c-th);color:var(--c-text);font-weight:600;text-align:left;padding:13px 12px;white-space:nowrap;border-bottom:1px solid var(--c-border-l)}
.table th .sort{display:inline-flex;flex-direction:column;margin-left:4px;vertical-align:middle;color:var(--c-text-4);font-size:8px;line-height:1}
.table td{padding:16px 12px;border-bottom:1px solid var(--c-border-l);vertical-align:middle;color:var(--c-text)}
.table tr:hover td{background:#FAFAFB}
.table .c{text-align:center}
.table .r{text-align:right}
.table .goods{display:flex;align-items:center;gap:12px}
.table .goods .info{min-width:0}
.table .goods .name{line-height:1.45;margin-bottom:6px;color:var(--c-text)}
.table .ops{white-space:nowrap}
.table .ops a{color:var(--c-primary)}
.table .ops a+a::before{content:"|";color:var(--c-border);margin:0 8px}
.table .ops a.danger{color:var(--c-error)}
.table.compact td{padding:11px 12px}
.table.bordered td,.table.bordered th{border:1px solid var(--c-border-l)}
.table .muted{color:var(--c-text-3)}
.table .sub{color:var(--c-text-3);font-size:12px;margin-top:2px}
.pager{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:18px 0 4px;font-size:13px;color:var(--c-text-2)}
.pager .total{margin-right:8px}
.pager a{min-width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--c-border);border-radius:var(--radius);color:var(--c-text);padding:0 6px;background:#fff}
.pager a.active{border-color:var(--c-primary);color:var(--c-primary)}
.pager a.dis{color:var(--c-text-4)}
.pager .size{height:32px;border:1px solid var(--c-border);border-radius:var(--radius);padding:0 10px;display:inline-flex;align-items:center;gap:6px;background:#fff}
.pager .jump{display:inline-flex;align-items:center;gap:6px}
.pager .jump span.box{width:44px;height:32px;border:1px solid var(--c-border);border-radius:var(--radius);display:inline-block;background:#fff}

/* ---------- 标签 / 状态 ---------- */
.tag{display:inline-flex;align-items:center;height:22px;padding:0 7px;border-radius:3px;font-size:12px;line-height:1;white-space:nowrap;vertical-align:middle}
.tag.orange{background:var(--c-primary-l);color:var(--c-primary)}
.tag.green{background:var(--c-success-l);color:var(--c-success)}
.tag.blue{background:var(--c-blue-l);color:var(--c-blue)}
.tag.gray{background:#F2F3F5;color:var(--c-text-2)}
.tag.red{background:var(--c-error-l);color:var(--c-error)}
.tag.yellow{background:var(--c-warning-l);color:var(--c-warning)}
.tag.line{background:#fff;border:1px solid currentColor;height:20px}
.tag+.tag{margin-left:6px}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--c-success);margin-right:6px;vertical-align:middle}
.dot.gray{background:var(--c-text-4)}.dot.orange{background:var(--c-primary)}.dot.red{background:var(--c-error)}.dot.blue{background:var(--c-blue)}.dot.yellow{background:var(--c-warning)}
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--c-error);color:#fff;font-size:11px;line-height:1}
.status{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:3px;font-size:12px;border:1px solid}
.status.open{color:var(--c-success);border-color:var(--c-success)}

/* ---------- 提示 ---------- */
.alert{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:var(--radius);font-size:13px;line-height:1.7}
.alert.info{background:var(--c-blue-l);color:var(--c-text-2);border:1px solid #D6E8FB}
.alert.warn{background:var(--c-warning-l);color:#8A5A00;border:1px solid #FFE1B3}
.alert.orange{background:var(--c-primary-l);color:var(--c-text-2);border:1px solid #FFD9C9}
.alert .ico{width:16px;height:16px;color:var(--c-blue);flex:none;margin-top:3px}
.alert.warn .ico{color:var(--c-warning)}
.alert.orange .ico{color:var(--c-primary)}
.empty{padding:60px 0;text-align:center;color:var(--c-text-3);font-size:13px}
.empty .box{width:80px;height:60px;border:2px dashed var(--c-border);border-radius:8px;margin:0 auto 14px;position:relative}
.empty .box::after{content:"";position:absolute;left:14px;right:14px;top:22px;height:2px;background:var(--c-border)}

/* ---------- 表单页：锚点栏 + 保存条 ---------- */
.form-layout{display:flex;gap:0;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);min-height:600px}
.anchors{width:160px;flex:none;border-right:1px solid var(--c-border-l);padding:10px 0}
.anchors a{display:block;height:50px;line-height:50px;padding-left:48px;color:var(--c-text);font-size:14px;position:relative}
.anchors a.active{color:var(--c-primary);background:#FFF8F5}
.anchors a.active::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c-primary)}
.form-body{flex:1;padding:28px 40px 100px;min-width:0}
.form-section{padding-bottom:12px;margin-bottom:12px}
.form-section h4{font-size:16px;font-weight:600;margin-bottom:22px;padding-bottom:12px;border-bottom:1px solid var(--c-border-l)}
.save-bar{position:fixed;left:0;right:0;bottom:0;height:64px;background:#fff;box-shadow:0 -2px 10px rgba(0,0,0,.05);display:flex;align-items:center;justify-content:center;gap:12px;z-index:80}
body.has-side .save-bar{left:var(--w-side)}
.type-cards{display:flex;gap:16px}
.type-card{width:168px;height:76px;border:1px solid var(--c-border);border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#fff;cursor:pointer}
.type-card b{font-size:15px;font-weight:600}
.type-card span{font-size:12px;color:var(--c-text-3)}
.type-card.active{border-color:var(--c-primary);background:#FFF8F5;color:var(--c-primary)}
.type-card.active span{color:var(--c-primary)}
.spec-table td,.spec-table th{padding:8px 10px}
.spec-table .input{height:32px}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 40px;font-size:14px}
.kv.c3{grid-template-columns:repeat(3,1fr)}
.kv.c1{grid-template-columns:1fr}
.kv .k{color:var(--c-text-3);margin-right:8px}
.kv .v{color:var(--c-text)}
.steps{display:flex;align-items:flex-start}
.step{flex:1;position:relative;text-align:center;padding-top:6px}
.step .n{width:28px;height:28px;border-radius:50%;border:1px solid var(--c-border);display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--c-text-3);font-size:13px;position:relative;z-index:1}
.step .t{margin-top:8px;font-size:13px;color:var(--c-text-2)}
.step .d{font-size:12px;color:var(--c-text-3);margin-top:2px}
.step::before{content:"";position:absolute;top:20px;left:50%;right:-50%;height:1px;background:var(--c-border)}
.step:last-child::before{display:none}
.step.done .n{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.step.done::before{background:var(--c-primary)}
.step.cur .n{border-color:var(--c-primary);color:var(--c-primary)}
.step.done .t,.step.cur .t{color:var(--c-text)}
.timeline{position:relative;padding-left:18px}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--c-border-l)}
.timeline li{position:relative;padding-bottom:18px;font-size:13px}
.timeline li::before{content:"";position:absolute;left:-16px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--c-primary)}
.timeline li .time{color:var(--c-text-3);font-size:12px;margin-top:2px}

/* ---------- 首页仪表盘 ---------- */
body.dash .main{background:radial-gradient(600px 360px at 8% 12%,rgba(255,170,150,.18),transparent 60%),radial-gradient(700px 400px at 92% 10%,rgba(150,180,255,.18),transparent 60%),var(--c-bg)}
.dash-grid{display:grid;grid-template-columns:350px 350px minmax(0,1fr);gap:20px;align-items:start}
.dash-grid .col{display:flex;flex-direction:column;gap:20px}
.welcome{background:linear-gradient(170deg,#DCE9FF 0%,#EEF2FB 55%,#F7F6FC 100%);border-radius:var(--radius-l);padding:28px 24px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.welcome h2{font-size:18px;font-weight:600;color:var(--c-text);margin-bottom:6px}
.welcome .motto{font-size:12px;color:var(--c-text-3);margin-bottom:30px}
.welcome .shop-logo{width:80px;height:80px;border-radius:50%;margin:0 auto;background:linear-gradient(135deg,#F06A8B,#C0295D);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px;line-height:1.1;text-align:center;position:relative}
.welcome .shop-logo .st{position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);background:var(--c-success);color:#fff;font-size:11px;padding:2px 8px;border-radius:10px;white-space:nowrap;font-weight:400}
.welcome .shop-title{text-align:center;font-size:18px;font-weight:600;margin:20px 0 14px}
.welcome .meta{text-align:center;font-size:13px;color:var(--c-text-2);line-height:2}
.welcome .chs{display:flex;justify-content:center;gap:10px;margin:10px 0 22px}
.welcome .chs i{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-style:normal}
.welcome .chs .wx{background:#07C160}.welcome .chs .h5{background:var(--c-primary)}
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 10px;padding-top:6px}
.quick-item{text-align:center;font-size:14px;color:var(--c-text)}
.quick-item .qi{width:48px;height:48px;border-radius:10px;background:var(--c-primary);margin:0 auto 10px;display:flex;align-items:center;justify-content:center;color:#fff}
.quick-item .qi .ico{width:26px;height:26px;stroke-width:1.5}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.stat-grid.c2{grid-template-columns:repeat(2,1fr)}
.stat-box{background:var(--c-beige);border-radius:8px;padding:16px 16px 14px;min-height:76px}
.stat-box .l{font-size:13px;color:var(--c-text-2);margin-bottom:6px;white-space:nowrap}
.stat-box .v{font-size:22px;font-weight:600;line-height:1.1}
.stat-box.white{background:#fff;border:1px solid var(--c-border-l)}
.stat-line{display:flex;align-items:center;gap:16px}
.stat-line .v{font-size:30px;font-weight:600}
.chart{width:100%;height:220px;position:relative}
.chart.sm{height:120px}
.chart.lg{height:280px}
.chart svg{width:100%;height:100%;display:block;overflow:visible}
.chart .tip{position:absolute;background:#fff;border-radius:6px;padding:8px 12px;font-size:12px;box-shadow:0 2px 12px rgba(0,0,0,.12);color:var(--c-text-2);line-height:1.7;pointer-events:none}
.chart .tip b{color:var(--c-text);font-weight:600}
.rank li{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--c-border-l);font-size:13px}
.rank li:last-child{border-bottom:0}
.rank .no{width:20px;height:20px;border-radius:4px;background:#F2F3F5;display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:var(--c-text-2);flex:none}
.rank li:nth-child(-n+3) .no{background:var(--c-primary);color:#fff}
.rank .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank .vl{color:var(--c-text-2);font-variant-numeric:tabular-nums}
.sum-row{display:flex;align-items:baseline;gap:6px;margin-bottom:10px;font-size:14px;color:var(--c-text-2)}
.sum-row b{font-size:22px;color:var(--c-text);font-weight:600}
/* ---------- 卡片网格（应用/活动/模板）---------- */
.app-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.app-card{background:#fff;border:1px solid var(--c-border-l);border-radius:8px;padding:20px;display:flex;gap:14px;align-items:flex-start;position:relative}
.app-card .ai{width:50px;height:50px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.app-card .ai .ico{width:26px;height:26px;stroke-width:1.5}
.app-card .ai.o{background:linear-gradient(135deg,#FFA26B,#FB6638)}
.app-card .ai.b{background:linear-gradient(135deg,#6FB4FF,#2D8CF0)}
.app-card .ai.g{background:linear-gradient(135deg,#5BD69A,#19BE6B)}
.app-card .ai.p{background:linear-gradient(135deg,#B09BFF,#7B5CE5)}
.app-card .ai.y{background:linear-gradient(135deg,#FFD36B,#F5A623)}
.app-card .at{font-size:15px;font-weight:600;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.app-card .ad{font-size:12px;color:var(--c-text-3);line-height:1.6;min-height:38px}
.app-card .af{margin-top:12px}
.app-card .rec{position:absolute;right:0;top:0;background:var(--c-primary);color:#fff;font-size:11px;padding:2px 8px;border-radius:0 8px 0 8px}
.group-title{font-size:16px;font-weight:600;margin:6px 0 4px}
.group-desc{font-size:13px;color:var(--c-text-3);margin-bottom:14px}
.tpl-card{width:300px;border:1px solid var(--c-border-l);border-radius:8px;overflow:hidden;background:#fff}
.tpl-card .pv{height:400px;background:linear-gradient(180deg,#FFF1EC 0%,#fff 25%,#F7F7F9 100%);position:relative;padding:16px}
.tpl-card .pv .ph-bar{height:12px;border-radius:6px;background:#FFD6C6;margin-bottom:12px;width:60%}
.tpl-card .pv .ph-banner{height:120px;border-radius:8px;background:linear-gradient(135deg,#FFB08F,#FB6638);margin-bottom:12px}
.tpl-card .pv .ph-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.tpl-card .pv .ph-grid i{display:block;height:44px;border-radius:8px;background:#FFE8DF}
.tpl-card .pv .ph-goods{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tpl-card .pv .ph-goods i{display:block;height:120px;border-radius:8px;background:#EEEEF2}
.tpl-card .ft{padding:14px 16px;display:flex;align-items:center;justify-content:space-between}
.tpl-card .ft b{font-size:15px}

/* ---------- 店铺列表页（账号层）---------- */
.acc-header{height:65px;background:#fff;border-bottom:1px solid var(--c-border-l);display:flex;align-items:center;padding:0 0;position:sticky;top:0;z-index:50}
.acc-wrap{width:1200px;margin:0 auto}
.acc-header .acc-wrap{display:flex;align-items:center;height:100%}
.acc-header .logo{display:flex;align-items:center;gap:8px;font-size:22px;font-weight:600;letter-spacing:5px;color:#6B5B4E}
.acc-header .logo .mark{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#F7B267,#FB6638);display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;letter-spacing:0;font-weight:700}
.acc-header .logo .mark-empty{background:none;border:1px dashed var(--c-border)}
.acc-header .user{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:14px}
.acc-toolbar{background:#fff;padding:20px 0;border-bottom:1px solid var(--c-border-l)}
.acc-toolbar .acc-wrap{display:flex;align-items:center}
.acc-body{padding:30px 0 80px}
.shop-item{width:386px;background:#fff;border-radius:6px;box-shadow:var(--shadow);overflow:hidden}
.shop-item .top{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 0}
.shop-item .top .btns{opacity:0}
.shop-item:hover .top .btns{opacity:1}
.shop-item .body{display:flex;gap:14px;padding:16px 16px 20px}
.shop-item .sl{width:96px;height:96px;border-radius:10px;background:linear-gradient(135deg,#F06A8B,#C0295D);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:22px;line-height:1.2;text-align:center;flex:none}
.shop-item .si .nm{font-size:16px;font-weight:600;margin-bottom:8px}
.shop-item .si p{font-size:12px;color:var(--c-text-3);line-height:1.9}
.shop-item .si .chs{display:flex;gap:8px;margin-top:6px}
.shop-item .si .chs i{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-style:normal}
.shop-item .data{display:grid;grid-template-columns:repeat(3,1fr);background:#FAFAFB;padding:18px 0;text-align:center}
.shop-item .data b{display:block;font-size:18px;font-weight:600}
.shop-item .data span{font-size:12px;color:var(--c-text-2)}
/* ---------- 其他 ---------- */
.link-list a{margin-right:16px}
.code{font-family:Consolas,Menlo,monospace;font-size:13px;background:#F6F7F9;padding:2px 6px;border-radius:3px;color:var(--c-text-2)}
.copy{color:var(--c-primary);font-size:12px;margin-left:8px;cursor:pointer}
.qr{width:120px;height:120px;border:1px solid var(--c-border-l);border-radius:6px;background:repeating-linear-gradient(0deg,#fff 0 6px,#333 6px 8px),repeating-linear-gradient(90deg,#fff 0 6px,#333 6px 8px);background-blend-mode:multiply;position:relative}
.qr::after{content:"";position:absolute;inset:40px;background:#fff;border:2px solid #333}
.progress{height:8px;border-radius:4px;background:#F2F3F5;overflow:hidden}
.progress i{display:block;height:100%;background:var(--c-primary);border-radius:4px}
.ch-list li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--c-border-l);font-size:13px}
.ch-list li:last-child{border-bottom:0}
.ch-list .nm{width:110px;color:var(--c-text-2)}
.ch-list .progress{flex:1}
.ch-list .vl{width:60px;text-align:right}
.mini-stat{display:flex;gap:40px}
.mini-stat .it .l{font-size:13px;color:var(--c-text-3);margin-bottom:4px}
.mini-stat .it .v{font-size:24px;font-weight:600}
.mini-stat .it .v small{font-size:13px;font-weight:400;color:var(--c-text-3);margin-left:2px}
.level-card{border:1px solid var(--c-border-l);border-radius:8px;padding:18px;background:linear-gradient(135deg,#FFF9F5,#fff)}
.level-card .ln{font-size:16px;font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.level-card .ln .ico{color:var(--c-warning);width:18px;height:18px}
.level-card p{font-size:12px;color:var(--c-text-3);line-height:1.8}
.coupon-card{border:1px solid var(--c-border-l);border-radius:8px;display:flex;overflow:hidden}
.coupon-card .cl{width:120px;background:linear-gradient(135deg,#FF8A5B,#FB6638);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}
.coupon-card .cl b{font-size:26px}
.coupon-card .cl span{font-size:12px;opacity:.9}
.coupon-card .cr{flex:1;padding:14px 16px}
.coupon-card .cr .nm{font-weight:600;margin-bottom:6px}
.coupon-card .cr p{font-size:12px;color:var(--c-text-3);line-height:1.8}

/* ---------- 概览彩色指标块 / KPI ---------- */
.grid-2>.card,.grid-3>.card,.grid-4>.card,.row>.card{margin-top:0}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.tiles.c3{grid-template-columns:repeat(3,1fr)}
.tile{border-radius:8px;padding:30px 28px;display:flex;align-items:center;justify-content:space-between;min-height:146px;color:var(--c-text)}
.tile .l{font-size:16px;margin-bottom:10px}
.tile .v{font-size:36px;font-weight:600;line-height:1}
.tile .ti{width:78px;height:78px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.tile .ti .ico{width:36px;height:36px;stroke-width:1.5}
.tile.pink{background:#FDECEC}.tile.pink .ti{background:#F2545B}
.tile.blue{background:#E8F1FD}.tile.blue .ti{background:#3B8BEA}
.tile.purple{background:#EFE9FB}.tile.purple .ti{background:#7A52D9}
.tile.green{background:#E6F6EC}.tile.green .ti{background:#5BB97B}
.tile.orange{background:#FFF1E6}.tile.orange .ti{background:#FB8C38}
.tile.cyan{background:#E4F6F8}.tile.cyan .ti{background:#2DB7C4}
.kpi{padding:30px 38px}
.kpi .l{font-size:16px;color:var(--c-text)}
.kpi .l small{color:var(--c-text-3);font-size:14px}
.kpi .v{font-size:36px;font-weight:600;margin:14px 0 12px;line-height:1}
.kpi .d{font-size:13px;color:var(--c-text-2)}
.card-head .section-title{margin-bottom:0}

/* ---------- 订单列表分组行 ---------- */
.table tr.oh td{background:#F7F8FA;padding:10px 12px;font-size:13px;color:var(--c-text-2);border-bottom:0}
.table tr.oh:hover td{background:#F7F8FA}
.table tr.oh .no{color:var(--c-text);margin-right:18px}
.table tr.oh .acts{float:right}
.table tr.oh .acts a{margin-left:14px;color:var(--c-primary)}
.table tr.gap td{padding:0;height:14px;border-bottom:0;background:transparent}
.table tr.gap:hover td{background:transparent}
.table tr.og td{border-bottom:1px solid var(--c-border-l)}
.ostatus{font-weight:600;color:var(--c-text);margin-bottom:8px;white-space:nowrap}
.ostatus.ok{color:var(--c-success)}.ostatus.wait{color:var(--c-primary)}.ostatus.cancel{color:var(--c-text-3)}.ostatus.refund{color:var(--c-blue)}
.sum-bar{display:flex;align-items:center;gap:24px;font-size:13px;color:var(--c-text-2);padding:0 0 14px}
.quick-dates{display:inline-flex;gap:6px;margin-left:8px}
.quick-dates a{display:inline-flex;align-items:center;height:26px;padding:0 9px;border:1px solid var(--c-border);border-radius:3px;font-size:12px;color:var(--c-text-2)}
.quick-dates a.active{border-color:var(--c-primary);color:var(--c-primary)}

/* ---------- 数据模块 指标组 ---------- */
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.metrics.c2{grid-template-columns:repeat(2,1fr)}.metrics.c3{grid-template-columns:repeat(3,1fr)}.metrics.c5{grid-template-columns:repeat(5,1fr)}
.metric .l{font-size:13px;color:var(--c-text-2);white-space:nowrap}
.metric .v{font-size:24px;font-weight:600;margin:6px 0 4px;line-height:1.2}
.metric .d{font-size:12px;color:var(--c-text-3)}
.metric .d .up{color:var(--c-error)}.metric .d .dn{color:var(--c-success)}
.metric.box{background:#F7F8FA;border-radius:8px;padding:14px 16px}
.metric.warm{background:#FDF1EC;border-radius:8px;padding:16px 18px}
.metric.warm .v{font-size:26px}
.legend{display:flex;gap:16px;font-size:12px;color:var(--c-text-2);margin:14px 0 4px}
.legend span::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:#F2546A;margin-right:5px;vertical-align:middle}
.legend span.b::before{background:#2D8CF0}.legend span.c::before{background:#2DB7C4}.legend span.o::before{background:#FF9900}

/* ---------- 交互层：弹窗 / 提示 / 下拉 / 日历 ---------- */
.pm-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:flex;align-items:center;justify-content:center;animation:pmFade .15s}
.pm{background:#fff;border-radius:8px;width:560px;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 10px 40px rgba(0,0,0,.2);animation:pmUp .18s}
.pm.sm{width:440px}.pm.lg{width:800px}
.pm-hd{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--c-border-l);font-size:16px;font-weight:600}
.pm-hd .x{margin-left:auto;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--c-text-3);cursor:pointer;font-size:20px;font-weight:400}
.pm-hd .x:hover{background:#F2F3F5;color:var(--c-text)}
.pm-bd{padding:20px;overflow:auto;font-size:14px;line-height:1.7}
.pm-bd .form-item{margin-bottom:16px}.pm-bd .form-item>.lbl{width:104px}
.pm-bd .form-item:last-child{margin-bottom:0}
.pm-bd .tabs{margin-bottom:16px}
.pm-ft{padding:12px 20px;border-top:1px solid var(--c-border-l);display:flex;justify-content:flex-end;gap:10px}
.pm-img{border-radius:6px;background:repeating-linear-gradient(45deg,#F3F4F6 0 12px,#E9EBEF 12px 24px);display:flex;align-items:center;justify-content:center;color:var(--c-text-3);font-size:13px}
.pm-phone{width:250px;margin:0 auto;border:8px solid #1E222B;border-radius:28px;overflow:hidden;background:#F5F5F5}
.pm-phone .b{height:40px;background:var(--c-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
.pm-phone .c{padding:12px}.pm-phone .c i{display:block;border-radius:6px;background:#fff;margin-bottom:10px}
.toast-wrap{position:fixed;top:84px;left:50%;transform:translateX(-50%);z-index:1100;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none}
.toast{background:#fff;border-radius:6px;padding:10px 18px;box-shadow:0 4px 16px rgba(0,0,0,.14);font-size:14px;display:flex;align-items:center;gap:8px;animation:pmUp .18s;max-width:70vw}
.toast::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c-success);flex:none}
.toast.info::before{background:var(--c-blue)}.toast.warn::before{background:var(--c-warning)}
.pm-menu{position:absolute;background:#fff;border-radius:6px;box-shadow:0 4px 18px rgba(0,0,0,.14);padding:6px 0;z-index:1050;min-width:140px}
.pm-menu a{display:block;padding:8px 16px;color:var(--c-text);font-size:13px;white-space:nowrap}
.pm-menu a:hover{background:#FFF8F5;color:var(--c-primary)}
.pm-menu a.danger{color:var(--c-error)}
tr.empty-row td{padding:0!important;border-bottom:0!important}
tr.empty-row:hover td{background:transparent!important}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center;font-size:13px}
.cal .h{color:var(--c-text-3);padding:4px 0}
.cal .d{padding:8px 0;border-radius:6px;min-height:44px}
.cal .d.today{background:var(--c-primary);color:#fff}
.cal .d.fest{color:var(--c-primary);font-weight:600}
.select,.switch,.radio,.checkbox,.pager .size,.copy{cursor:pointer}
@keyframes pmFade{from{opacity:1}to{opacity:1}}
@keyframes pmUp{from{transform:translateY(8px)}to{transform:none}}
.formula{display:flex;align-items:center;gap:10px}
.formula .metric{flex:1;background:#F7F8FA;border-radius:8px;padding:14px 16px}
.formula .op{font-size:22px;color:var(--c-text-3);flex:none;width:24px;text-align:center}
.widget-head{display:flex;align-items:center;gap:6px;font-size:15px;font-weight:600;margin-bottom:16px}
.widget-head .q{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid var(--c-text-4);color:var(--c-text-4);font-size:10px;text-align:center;line-height:12px;font-weight:400}
.widget-head .extra{margin-left:auto;font-size:12px;color:var(--c-text-3);font-weight:400}
.date-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
