/* ============================================================
   管理后台 · 专业工作台视觉（深色侧栏 + 浅色内容区）
   ============================================================ */
body{background:var(--bg);font-size:16px}

/* ---------- 登录 ---------- */
.login-view{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:32px 24px;overflow:hidden;background:radial-gradient(1200px 600px at 12% 8%,#FFF1E3 0%,rgba(255,241,227,0) 60%),
  radial-gradient(900px 600px at 92% 92%,#E7EEFF 0%,rgba(231,238,255,0) 62%),#F4F7FB}
.login-view[hidden]{display:none}
.login-decor{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.login-decor::before{content:'';position:absolute;top:-180px;left:-140px;width:520px;height:520px;border-radius:50%;
  border:1px solid rgba(255,107,18,.14);box-shadow:0 0 0 60px rgba(255,107,18,.035),0 0 0 130px rgba(255,107,18,.025)}
.login-decor::after{content:'';position:absolute;bottom:-220px;right:-120px;width:480px;height:480px;border-radius:50%;
  border:1px solid rgba(52,104,232,.12);box-shadow:0 0 0 70px rgba(52,104,232,.03)}
.login-shell{position:relative;z-index:1;display:flex;align-items:stretch;gap:0;width:100%;max-width:920px;
  border-radius:28px;overflow:hidden;box-shadow:0 30px 80px rgba(19,30,51,.16);animation:fadeUp .5s var(--ease)}

.login-hero{position:relative;flex:1;min-width:0;padding:48px 42px;color:#fff;overflow:hidden;
  background:linear-gradient(155deg,#1B2B48 0%,#111C30 55%,#0E1728 100%)}
.login-hero::before{content:'';position:absolute;top:-120px;right:-120px;width:340px;height:340px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,122,36,.38),rgba(255,122,36,0) 72%)}
.login-hero::after{content:'';position:absolute;bottom:-140px;left:-80px;width:300px;height:300px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(72,118,220,.22),rgba(72,118,220,0) 72%)}
.lh-mark{position:relative;width:58px;height:58px;border-radius:18px;display:grid;place-items:center;
  background:linear-gradient(145deg,#FF9A4D,#FF5F00);box-shadow:0 12px 26px rgba(255,107,18,.35)}
.lh-mark svg{width:34px;height:34px}
.lh-kicker{position:relative;margin-top:34px;font-size:11px;font-weight:800;letter-spacing:2.2px;color:#FFB98A;text-transform:uppercase}
.login-hero h2{position:relative;margin-top:12px;font-size:36px;font-weight:900;line-height:1.35;letter-spacing:-1px}
.login-hero p{position:relative;margin-top:14px;font-size:14px;line-height:1.9;color:rgba(255,255,255,.62)}
.lh-stats{position:relative;display:flex;gap:26px;margin-top:38px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12)}
.lh-stats div{display:flex;flex-direction:column}
.lh-stats b{font-size:26px;font-weight:900;letter-spacing:-.5px;color:#FFB98A}
.lh-stats span{font-size:12px;color:rgba(255,255,255,.5);margin-top:2px}

.login-card{width:420px;flex:none;padding:40px 36px;text-align:left;background:#fff;border:none;border-radius:0;box-shadow:none}
.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:28px}
.login-logo{width:52px;height:52px;flex:none;border-radius:16px;display:grid;place-items:center;font-size:28px;
  background:linear-gradient(145deg,#FFF0E3,#FFE0C4);border:1px solid #FFD9B8}
.login-brand h1{font-size:21px;font-weight:900;letter-spacing:-.4px}
.login-brand p{font-size:12px;letter-spacing:1px;color:var(--ink-3);margin-top:2px;font-weight:700}
.login-card .field{text-align:left;margin-bottom:16px}
.login-card .field .input{min-height:54px;font-size:16px}
.login-card .btn-lg{min-height:58px;font-size:19px;letter-spacing:4px;margin-top:4px}
.login-foot{display:flex;justify-content:space-between;margin-top:18px}
.link-btn{font-size:14px;color:var(--ink-3);background:none;cursor:pointer;font-weight:600}
.link-btn:hover{color:var(--brand-deep)}
.demo-accounts{margin-top:26px;padding:16px 18px;border-radius:16px;background:#F7F9FC;
  border:1px solid var(--line-2);font-size:13px;color:var(--ink-2);text-align:left;line-height:1.9}
.demo-accounts b{display:block;margin-bottom:6px;color:var(--ink);font-size:13px;letter-spacing:.5px}
.demo-accounts b::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand);margin-right:7px;vertical-align:2px}

/* ---------- 框架 ---------- */
.app-view[hidden]{display:none}
.topbar{height:70px;background:rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;
  padding:0 26px;position:sticky;top:0;z-index:50}
.tb-left,.tb-right{display:flex;align-items:center;gap:13px}
.tb-logo{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(145deg,#FF9A4D,#FF5F00);box-shadow:0 6px 14px rgba(255,107,18,.28)}
.tb-logo svg{width:23px;height:23px}
.tb-title{font-size:18px;font-weight:900;line-height:1.2;letter-spacing:-.3px}
.tb-sub{font-size:12px;color:var(--ink-3);margin-top:2px}
.tb-name{font-size:14px;color:var(--ink-2);font-weight:700;padding:5px 12px;border-radius:999px;background:#F2F5FA}
.menu-btn{display:none;font-size:22px;width:40px;height:40px;align-items:center;justify-content:center;
  border-radius:11px;color:var(--ink-2);background:#F2F5FA}
.layout{display:flex;min-height:calc(100vh - 70px)}
.sidebar{position:relative;width:246px;flex:none;padding:0 14px 18px;display:flex;flex-direction:column;
  justify-content:space-between;color:#fff;overflow:hidden;
  background:linear-gradient(170deg,#1B2B48 0%,#141F35 55%,#101A2C 100%)}
.sidebar::before{content:'';position:absolute;top:-90px;left:-70px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,122,36,.18),rgba(255,122,36,0) 72%);pointer-events:none}
.side-brand{position:relative;display:flex;align-items:center;gap:11px;padding:22px 10px 20px;
  border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:14px}
.side-brand .sb-mark{width:38px;height:38px;flex:none;border-radius:12px;display:grid;place-items:center;
  background:linear-gradient(145deg,#FF9A4D,#FF5F00);box-shadow:0 6px 16px rgba(255,107,18,.3)}
.side-brand .sb-mark svg{width:23px;height:23px}
.side-brand .sb-name{font-size:15px;font-weight:900;letter-spacing:-.2px;line-height:1.3}
.side-brand .sb-sub{font-size:10px;color:rgba(255,255,255,.45);letter-spacing:1.2px;margin-top:3px}
.nav-item{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:48px;padding:10px 14px;
  border-radius:12px;font-size:15px;font-weight:700;color:rgba(255,255,255,.66);text-align:left;margin-bottom:4px;
  transition:all .22s var(--ease)}
.nav-item .ni{font-size:18px;width:22px;text-align:center}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-item.on{background:linear-gradient(100deg,rgba(255,107,18,.95),rgba(255,138,52,.82));color:#fff;font-weight:800;
  box-shadow:0 8px 20px rgba(255,107,18,.25)}
.nav-item.on::before{content:'';position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:#FFD9AE}
.nav-sep{font-size:11px;color:rgba(255,255,255,.4);padding:16px 14px 7px;letter-spacing:1.6px;font-weight:700}
.sidebar .tiny{font-size:11px;color:rgba(255,255,255,.42);line-height:1.7}
.side-foot{position:relative;padding:16px 10px 4px;border-top:1px solid rgba(255,255,255,.1);
  font-size:12px;color:rgba(255,255,255,.6);line-height:1.6}
.side-foot>div:first-child{font-weight:800;color:rgba(255,255,255,.82)}
.main{flex:1;min-width:0;padding:26px 28px 64px;animation:fadeUp .35s var(--ease)}
.side-shade{position:fixed;inset:70px 0 0;background:rgba(12,20,36,.45);z-index:39;backdrop-filter:blur(2px)}

/* ---------- 页头 ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.page-head h2{font-size:27px;font-weight:900;letter-spacing:-.8px;line-height:1.3}
.page-head .ph-sub{font-size:13px;color:var(--ink-3);margin-top:5px}
.page-head .ph-actions{display:flex;gap:9px;flex-wrap:wrap}
.page-head .ph-actions .btn{background:#fff;border-radius:11px}
.page-head .ph-actions .btn:hover{border-color:#FFD3B0;color:var(--brand-deep)}

/* ---------- 看板 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.stat-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 20px 18px;box-shadow:var(--sh-1);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#FFB067,#FF6B12)}
.stat-card::after{content:'';position:absolute;right:-34px;top:-34px;width:120px;height:120px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(255,107,18,.10),rgba(255,107,18,0) 72%);pointer-events:none}
.stat-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.stat-card .sc-label{position:relative;font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:7px;font-weight:700}
.stat-card .sc-num{position:relative;font-size:42px;font-weight:900;line-height:1.12;margin-top:8px;letter-spacing:-1.5px}
.stat-card .sc-foot{position:relative;font-size:12px;color:var(--ink-3);margin-top:5px}
.sc-red::before{background:linear-gradient(90deg,#F5888C,#E5484D)}
.sc-yellow::before{background:linear-gradient(90deg,#F5C46A,#D98A08)}
.sc-green::before{background:linear-gradient(90deg,#6FD6A3,#12A063)}
.sc-blue::before{background:linear-gradient(90deg,#86A9F7,#3468E8)}
.sc-red::after,.sc-yellow::after,.sc-green::after,.sc-blue::after{background:radial-gradient(closest-side,rgba(52,104,232,.08),rgba(52,104,232,0) 72%)}
.sc-red .sc-num{color:var(--red)}
.sc-yellow .sc-num{color:var(--yellow)}
.sc-green .sc-num{color:var(--green)}
.sc-blue .sc-num{color:var(--blue)}

.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;box-shadow:var(--sh-1)}
.panel h3{position:relative;font-size:17px;font-weight:900;margin-bottom:16px;padding-left:13px;letter-spacing:-.2px}
.panel h3::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:4px;border-radius:4px;
  background:linear-gradient(180deg,#FFB067,#FF6B12)}
.bar-row{display:flex;align-items:center;gap:11px;margin-bottom:11px;font-size:13px}
.bar-row .bl{width:110px;flex:none;color:var(--ink-2);text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.bar-track{flex:1;height:12px;border-radius:999px;background:#F0F3F8;overflow:hidden;box-shadow:inset 0 1px 2px rgba(19,30,51,.04)}
.bar-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#FFB067,#FF6B12);transition:width .6s var(--ease)}
.bar-row .bv{min-width:52px;flex:none;font-weight:800;text-align:right;color:var(--ink)}
.kv-line{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;
  border-bottom:1px dashed var(--line);font-size:14px;color:var(--ink-2)}
.kv-line:last-child{border-bottom:none}
.kv-line b{font-size:17px;font-weight:900;color:var(--ink)}
.praise-box{background:linear-gradient(120deg,#F0FBF5,#FFFFFF);border:1px solid #D6F0E1;border-left:4px solid var(--green);
  border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--sh-1)}
.praise-box h3::before{background:linear-gradient(180deg,#6FD6A3,#12A063)}
.alert-box{background:linear-gradient(120deg,#FFF4F4,#FFFFFF);border:1px solid #F8D9DA;border-left:4px solid var(--red);
  border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--sh-1);margin-top:16px}
.alert-box h3::before{background:linear-gradient(180deg,#F5888C,#E5484D)}
.alert-item{display:flex;justify-content:space-between;gap:12px;padding:10px 0;
  border-bottom:1px dashed #F5DCDD;font-size:13px;cursor:pointer;transition:color .2s}
.alert-item:last-child{border-bottom:none}
.alert-item:hover{color:var(--red)}

/* ---------- 筛选 ---------- */
.filter-bar{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:20px 20px 17px;margin-bottom:16px;box-shadow:var(--sh-1)}
.filter-bar::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--r-lg) var(--r-lg) 0 0;
  background:linear-gradient(90deg,#FFB067,#FF6B12,rgba(255,107,18,0))}
.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.filter-grid .f-label{font-size:12px;color:var(--ink-3);margin-bottom:6px;display:block;font-weight:700;letter-spacing:.3px}
.filter-grid .select,.filter-grid .input{min-height:46px;font-size:14px;padding:9px 13px;border-radius:11px;background:#FBFCFE}
.filter-grid .select{background-color:#fff;background-position:right 11px center;padding-right:34px}
.filter-actions{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap;align-items:center}
.filter-actions .f-count{margin-left:auto;font-size:12px;color:var(--ink-3);white-space:nowrap;padding-right:2px}
.filter-actions .f-count b{color:var(--brand-deep);font-weight:900}

/* ---------- 表格 ---------- */
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  overflow:auto;box-shadow:var(--sh-1)}
table.grid{width:100%;border-collapse:collapse;font-size:13.5px;min-width:1520px}
table.grid th{background:#F7F9FD;color:var(--ink-2);font-weight:800;text-align:left;padding:14px 13px;
  white-space:nowrap;border-bottom:1px solid var(--line);font-size:12.5px;letter-spacing:.2px}
table.grid td{padding:13px 13px;border-bottom:1px solid var(--line-2);vertical-align:middle;
  color:var(--ink-2);white-space:nowrap}
table.grid tr:last-child td{border-bottom:none}
table.grid tbody tr{transition:background .18s}
table.grid tbody tr:hover{background:#FFFAF5}
table.grid tr.row-alert{background:#FFF6F6}
table.grid tr.row-alert:hover{background:#FFEFEF}
table.grid tr.row-alert td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.cell-title{font-weight:800;color:var(--ink);cursor:pointer}
.cell-title:hover{color:var(--brand-deep);text-decoration:underline}
.cell-sub{font-size:11.5px;color:var(--ink-3);margin-top:3px;white-space:normal;max-width:190px;line-height:1.4}
.nowrap{white-space:nowrap}
.chk{width:17px;height:17px;accent-color:var(--brand);cursor:pointer}
.link{color:var(--blue);cursor:pointer;font-weight:800}
.link:hover{color:var(--brand-deep);text-decoration:underline}

/* ---------- 详情 ---------- */
.detail-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px}
.info-list{display:grid;grid-template-columns:132px 1fr;gap:0;font-size:14px}
.info-list>div{padding:11px 4px;border-bottom:1px solid var(--line-2)}
.info-list .k{color:var(--ink-3);font-weight:600}
.info-list .v{word-break:break-all;font-weight:700;color:var(--ink)}
.photo-view{display:flex;flex-wrap:wrap;gap:11px;margin-top:12px}
.photo-view img{width:134px;height:102px;object-fit:cover;border-radius:12px;border:1px solid var(--line);
  cursor:zoom-in;box-shadow:var(--sh-1);transition:transform .22s var(--ease),box-shadow .22s var(--ease)}
.photo-view img:hover{transform:scale(1.04);box-shadow:var(--sh-2)}
.log-list{position:relative;max-height:320px;overflow:auto;border-left:2px solid var(--line);padding-left:16px;margin-left:5px}
.log-item{position:relative;display:flex;gap:11px;padding:10px 0;border-bottom:1px dashed var(--line-2);font-size:13px}
.log-item::before{content:'';position:absolute;left:-21px;top:17px;width:8px;height:8px;border-radius:50%;
  background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.log-item:last-child{border-bottom:none}
.log-item .lt{color:var(--ink-3);white-space:nowrap;font-size:12px}
.note-item{background:#FFF8F2;border-left:3px solid var(--brand);border-radius:0 10px 10px 0;
  padding:11px 13px;font-size:13px;margin-bottom:9px;color:var(--ink-2)}
.form-section{margin-bottom:20px}
.form-section h4{font-size:14px;font-weight:900;margin-bottom:9px;color:var(--ink)}
.form-section .textarea,.form-section .select{font-size:15px;min-height:52px;border-radius:12px}
.inline-radio{display:flex;gap:8px;flex-wrap:wrap}
.radio-chip{padding:9px 16px;border:1.5px solid var(--line);border-radius:999px;font-size:14px;font-weight:700;
  cursor:pointer;background:#fff;color:var(--ink-2);transition:all .2s var(--ease)}
.radio-chip:hover{border-color:#FFD3B0}
.radio-chip.on{background:linear-gradient(135deg,#FF9445,#FF5F00);color:#fff;border-color:transparent;
  box-shadow:0 6px 16px rgba(255,107,18,.24)}

/* ---------- 档案 / 账号 / 设置 ---------- */
.arch-row{display:flex;align-items:center;gap:12px;padding:13px 12px;border-bottom:1px solid var(--line-2);
  border-radius:11px;flex-wrap:wrap;transition:background .18s}
.arch-row:hover{background:#FAFBFE}
.arch-row:last-child{border-bottom:none}
.arch-row .ar-name{font-size:16px;font-weight:800;min-width:180px;color:var(--ink)}
.arch-row .ar-meta{font-size:13px;color:var(--ink-3)}
.arch-row .ar-ops{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap}
.sub-head{display:flex;justify-content:space-between;align-items:center;margin:20px 0 12px}
.sub-head:first-child{margin-top:0}
.sub-head h3{font-size:17px;font-weight:900;position:relative;padding-left:12px}
.sub-head h3::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:4px;border-radius:4px;
  background:linear-gradient(180deg,#FFB067,#FF6B12)}
.switch-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:15px 0;
  border-bottom:1px dashed var(--line)}
.switch-row>div>div:first-child{font-weight:800;font-size:15px}
.switch-row .sr-desc{font-size:12px;color:var(--ink-3);margin-top:4px;line-height:1.55}
.switch{position:relative;width:54px;height:31px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch .sl{position:absolute;inset:0;background:#D8E0EB;border-radius:999px;cursor:pointer;transition:.25s var(--ease);
  box-shadow:inset 0 1px 3px rgba(19,30,51,.12)}
.switch .sl::before{content:'';position:absolute;width:25px;height:25px;left:3px;top:3px;background:#fff;
  border-radius:50%;transition:.25s var(--ease);box-shadow:0 2px 6px rgba(19,30,51,.22)}
.switch input:checked + .sl{background:linear-gradient(135deg,#FF9445,#FF5F00)}
.switch input:checked + .sl::before{transform:translateX(23px)}
.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px}
.qr-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);
  padding:18px;text-align:center;box-shadow:var(--sh-1);transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.qr-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#FFB067,#FF6B12)}
.qr-card:hover{transform:translateY(-4px);box-shadow:var(--sh-2)}
.qr-card img{width:168px;height:168px;margin:6px auto 12px;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:6px}
.qr-card .qc-title{font-size:16px;font-weight:900}
.qr-card .qc-sub{font-size:12px;color:var(--ink-3);margin:4px 0 10px}
.qr-card .tiny{font-size:10px;word-break:break-all;background:#F7F9FC;padding:7px;border-radius:8px}

/* ---------- 通知渠道（微信 / QQ） ---------- */
.notify-note{display:flex;align-items:flex-start;gap:12px;padding:14px 18px;margin-bottom:16px;
  background:linear-gradient(100deg,#EDF4FF,#F8FBFF);border:1px solid #DCE8FF;border-left:4px solid #3468E8;
  border-radius:14px;color:var(--ink-2);font-size:13.5px;line-height:1.7;box-shadow:var(--sh-1)}
.notify-note .nn-i{font-size:20px;line-height:1.25;flex:none}
.notify-note b{color:var(--ink)}
.notify-note-link{align-items:center;flex-wrap:wrap}
.notify-note-link>div{flex:1;min-width:240px}
.notify-note-link .btn{flex:none;min-height:40px;font-size:13px}

.chan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}
.chan-card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:22px 22px 18px;box-shadow:var(--sh-1);overflow:hidden;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease)}
.chan-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px}
.chan-wechat::before{background:linear-gradient(90deg,#4BDD90,#07B85C 55%,rgba(7,184,92,0))}
.chan-qq::before{background:linear-gradient(90deg,#6BCAFF,#1B83E8 55%,rgba(27,131,232,0))}
.chan-card:hover{transform:translateY(-3px);box-shadow:var(--sh-2)}
.chan-head{display:flex;align-items:center;gap:13px;padding-bottom:14px;border-bottom:1px solid var(--line-2)}
.chan-logo{width:52px;height:52px;flex:none;border-radius:16px;display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:26px;font-weight:900;box-shadow:0 8px 20px rgba(19,30,51,.14)}
.chan-wechat .chan-logo{background:linear-gradient(135deg,#3ED584,#07A850)}
.chan-qq .chan-logo{background:linear-gradient(135deg,#5FC4FF,#1B76E8)}
.chan-tt{flex:1;min-width:0}
.chan-tt h3{font-size:19px;font-weight:900;letter-spacing:.2px}
.chan-en{font-size:11.5px;color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chan-head .badge{flex:none;font-size:11.5px;padding:5px 10px}
.chan-switch{padding:13px 0}
.chan-switch>div>div:first-child{font-size:14px}
.chan-label{display:flex;align-items:baseline;gap:9px;font-size:14px;font-weight:900;color:var(--ink);
  margin:8px 0 12px;padding-left:11px;position:relative}
.chan-label::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:3px;border-radius:3px;
  background:linear-gradient(180deg,#FFB067,#FF6B12)}
.chan-label span{font-size:11.5px;font-weight:600;color:var(--ink-3)}
.chan-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.chan-fields .field{margin-bottom:12px;min-width:0}
.chan-fields .label{font-size:12.5px;font-weight:800;margin-bottom:6px;color:var(--ink-2)}
.chan-fields .input{min-height:44px;font-size:14px;padding:9px 12px;border-radius:11px;background:#FBFCFE}
.ev-chips{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:16px}
.ev-chip{cursor:pointer;user-select:none}
.ev-chip input{position:absolute;opacity:0;width:0;height:0}
.ev-chip span{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;
  border:1.5px solid var(--line);background:var(--surface);color:var(--ink-2);font-size:13px;font-weight:700;
  transition:all .2s var(--ease)}
.ev-chip span::before{content:'';width:7px;height:7px;border-radius:50%;background:#CFD8E6;transition:all .2s}
.ev-chip:hover span{border-color:#FFD3B0}
.ev-chip input:checked + span{background:#FFF4EC;border-color:#FFC79C;color:var(--brand-deep)}
.ev-chip input:checked + span::before{background:var(--brand)}
.chan-wechat .ev-chip input:checked + span{background:#EAF9F1;border-color:#A9E7C6;color:#0B8A4B}
.chan-wechat .ev-chip input:checked + span::before{background:#07C160}
.chan-qq .ev-chip input:checked + span{background:#EDF5FF;border-color:#AFD2FF;color:#1B6FD8}
.chan-qq .ev-chip input:checked + span::before{background:#1B8CF0}
.ev-chip input:focus-visible + span{outline:3px solid rgba(255,107,18,.25)}
.chan-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;
  border-top:1px dashed var(--line);padding-top:14px}
.chan-foot .tiny{font-size:11.5px;flex:1;min-width:180px}
.chan-btns{display:flex;gap:8px;flex-wrap:wrap}
.chan-btns .btn{min-height:40px;padding:8px 14px;font-size:13px;border-radius:11px}
.panel-head-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.panel-head-row h3{font-size:17px;font-weight:900}
.swipe-tip{display:none;font-size:11.5px;color:var(--ink-3);margin:0 0 8px}
.nl-text{width:340px;max-width:340px;font-size:12.5px;line-height:1.55;color:var(--ink-2);
  white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ---------- 账号管理：添加食堂负责人 ---------- */
.acc-success{display:flex;align-items:center;gap:11px;padding:14px 16px;margin-bottom:15px;
  background:var(--green-soft);border:1px solid #C6EBD9;border-radius:14px;
  color:#0B7A4B;font-size:14px;font-weight:700;box-shadow:var(--sh-1);animation:fadeUp .3s var(--ease)}
.acc-success .as-i{width:26px;height:26px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:#12A063;color:#fff;font-size:15px;font-weight:900}
.acc-success>div{flex:1;line-height:1.6}
.acc-success .as-x{flex:none;width:28px;height:28px;border-radius:50%;color:#0B7A4B;font-size:19px;line-height:1;
  opacity:.55;transition:opacity .2s}
.acc-success .as-x:hover{opacity:1;background:rgba(18,160,99,.12)}
.acc-name{font-size:15px;font-weight:800;color:var(--ink)}
tr.row-flash td{animation:rowFlash 2.8s var(--ease)}
@keyframes rowFlash{
  0%,42%{background:#FFF1E4}
  100%{background:transparent}
}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.form-sec{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:900;letter-spacing:1.2px;
  color:var(--ink-3);margin:4px 0 12px}
.form-sec::after{content:'';flex:1;height:1px;background:var(--line)}
.form-sec .sec-tip{font-size:11.5px;font-weight:600;letter-spacing:0;color:var(--ink-3)}
.modal-fields .label i{font-style:normal;color:var(--red);margin-left:2px}
.modal-fields .label .opt{font-size:12px;font-weight:600;color:var(--ink-3);margin-left:6px}
.field-err{display:none;font-size:12px;font-weight:700;color:var(--red);margin-top:6px;line-height:1.4}
.field-err.on{display:block}
.input.is-error,.select.is-error{border-color:#F0B0B3;background:#FFF8F8}
.input.is-error:focus{border-color:var(--red);box-shadow:0 0 0 4px rgba(229,72,77,.12)}
.pick-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-height:196px;overflow:auto;padding:2px}
.pick-item{display:flex;align-items:center;gap:9px;min-width:0;padding:9px 11px;border:1.5px solid var(--line);
  border-radius:11px;background:#FBFCFE;cursor:pointer;transition:all .18s var(--ease)}
.pick-item[hidden]{display:none}
.pick-item:hover{border-color:#FFD3B0}
.pick-item.is-on{border-color:#FFC79C;background:#FFF6EF}
.pick-item span{min-width:0}
.pick-item b{display:block;font-size:13px;font-weight:800;color:var(--ink);line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pick-item .pi-sub{display:block;font-size:11px;font-weight:600;color:var(--ink-3);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pick-item .chk{flex:none;width:16px;height:16px}
.form-tip{display:flex;gap:8px;padding:11px 13px;margin-top:2px;border-radius:11px;
  background:#F7F9FD;border:1px dashed var(--line);color:var(--ink-3);font-size:12px;line-height:1.6}

/* ---------- 地图定位配置 ---------- */
.map-note{padding:13px 16px;margin-bottom:15px;border-radius:12px;background:#F5F9FF;
  border:1px solid #DCE8FF;border-left:4px solid #3468E8;color:var(--ink-2);
  font-size:12.5px;line-height:1.7}
.map-note b{color:var(--ink)}
.map-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:4px}
.map-actions .btn{min-height:42px;font-size:13px;border-radius:11px}
.map-actions code,.panel code{background:#F1F4F9;padding:1px 5px;border-radius:5px;font-size:12px}

/* ---------- 弹窗 ---------- */
.modal-wide{max-width:660px;text-align:left;display:flex;flex-direction:column;overflow:hidden}
.modal-wide .m-title,.modal-wide .m-desc{flex:none}
.modal-wide .modal-fields{flex:1;min-height:0;overflow-y:auto;padding-right:6px}
.modal-wide .m-title{text-align:center;font-size:23px}
.modal-wide .m-desc{text-align:center;font-size:14px;color:var(--ink-3)}
.modal-fields .field{margin-bottom:15px}
.modal-fields .label{font-size:15px;margin-bottom:7px}
.modal-fields .input,.modal-fields .select,.modal-fields .textarea{font-size:15px;min-height:50px;border-radius:12px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:22px;flex-wrap:wrap}
.modal-actions .btn{min-height:48px}
/* 长表单弹窗：字段区独立滚动，标题与操作按钮固定可见 */
.modal-wide .modal-actions{flex:none;margin-top:14px;padding-top:13px;
  border-top:1px solid var(--line-2)}

/* ---------- 响应式 ---------- */
@media (max-width:1100px){
  .login-hero{display:none}
  .login-shell{max-width:440px;border-radius:24px}
  .login-card{width:100%;border-radius:24px}
}
@media (max-width:900px){
  .menu-btn{display:flex}
  .sidebar{position:fixed;left:0;top:70px;bottom:0;z-index:40;transform:translateX(-100%);
    transition:transform .25s var(--ease);box-shadow:12px 0 34px rgba(12,20,36,.22)}
  .sidebar.open{transform:translateX(0)}
  .main{padding:18px 16px 52px}
  .topbar{padding:0 16px;height:64px}
  .layout{min-height:calc(100vh - 64px)}
  .side-shade{top:64px}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .panel-grid,.detail-grid,.chan-grid{grid-template-columns:1fr}
  .filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tb-sub,.tb-name{display:none}
  .swipe-tip{display:block !important}
}
@media (max-width:480px){
  .topbar{padding:0 12px}
  .tb-left,.tb-right{gap:8px}
  .tb-logo{display:none}
  .tb-title{font-size:16px;white-space:nowrap}
  .login-view{padding:18px}
  .login-card{padding:30px 24px}
  .filter-grid{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,1fr);gap:11px}
  .stat-card{padding:16px 14px}
  .stat-card .sc-num{font-size:30px}
  .panel{padding:17px 16px}
  .chan-card{padding:18px 16px}
  .chan-fields{grid-template-columns:1fr;gap:0}
  .chan-head .badge{display:none}
  .grid-2{grid-template-columns:1fr;gap:0}
  .pick-list{grid-template-columns:1fr;max-height:none}
  .notify-note{padding:13px 14px;font-size:12.5px}
  .page-head h2{font-size:22px;letter-spacing:-.5px}
}
@media print{
  #loginView,#appView,#modalMask,#forgotMask,.mask,.toast{display:none !important}
  #printArea{display:block !important;color:#000}
  .receipt,.report{color:#000;font-family:Arial,"Microsoft YaHei",sans-serif}
  .receipt h1,.report h1{letter-spacing:2px}
}
