  :root{
    --primary:#2563EB; --primary-hover:#1D4ED8; --primary-active:#1E40AF;
    --primary-light:#EFF4FF; --primary-lighter:#F5F8FF;
    --sidebar:#0F1B3D; --sidebar-2:#16244D; --sidebar-active:rgba(37,99,235,.16);
    --bg:#F5F7FA; --surface:#FFFFFF; --border:#E8EAED; --border-strong:#D9DDE3;
    --t1:#1F2329; --t2:#565C66; --t3:#676D77;
    --success:#16A34A; --success-bg:#E9F8EF;
    --warning:#F59E0B; --warning-bg:#FEF4E6;
    --error:#EF4444; --error-bg:#FDECEC;
    --info:#2563EB; --info-bg:#EFF4FF;
    --radius:8px; --shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
    --font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  body{font-family:var(--font);background:var(--bg);color:var(--t1);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
  .layout{display:flex;min-height:100vh}
  /* sidebar */
  .sidebar{width:232px;background:var(--sidebar);color:#C7D0E0;display:flex;flex-direction:column;flex-shrink:0;position:sticky;top:0;height:100vh}
  .logo{display:flex;align-items:center;gap:10px;padding:18px 20px;color:#fff;font-weight:700;font-size:16px;letter-spacing:.5px;border-bottom:1px solid rgba(255,255,255,.06)}
  .logo .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#3B82F6,#2563EB);display:flex;align-items:center;justify-content:center;color:#fff}
  .nav{padding:12px 12px;flex:1;overflow:auto}
  /* ===== 主菜单分组：可折叠 + 字号加大（2026-09-16）=====
     结构在运行期由 shell.js 包成 .nav-sec > .nav-group(标题) + .nav-sec-body(本组菜单项)；
     标题整体是一个可点按钮（点一下收起/展开本组），右侧箭头指示开合，折叠态存 localStorage。
     折叠后若本组里有当前页，标题上出一个小圆点（.sec-active），避免「页面开着却找不到入口」。 */
  .nav-sec{margin-bottom:2px}
  .nav-group{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:#93A0BC;
    margin-top:6px;padding:9px 10px;border-radius:6px;letter-spacing:.5px;
    cursor:pointer;user-select:none;transition:background .15s,color .15s}
  .nav-group:hover{background:rgba(255,255,255,.05);color:#E3E9F6}
  .nav-group:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}
  .nav-sec-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .nav-sec-dot{display:none;width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
  .nav-sec.collapsed.sec-active .nav-sec-dot{display:block}
  .nav-caret{margin-left:2px;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;
    stroke-linecap:round;stroke-linejoin:round;opacity:.6;flex-shrink:0;transition:transform .18s ease}
  .nav-sec.collapsed .nav-caret{transform:rotate(-90deg)}
  .nav-sec.collapsed .nav-sec-body{display:none}
  .nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:6px;color:#C7D0E0;cursor:pointer;margin-bottom:2px;font-size:14.5px;transition:.15s}
  .nav-item svg{width:18px;height:18px;stroke:currentColor;opacity:.9}
  .nav-item:hover{background:rgba(255,255,255,.05);color:#fff}
  .nav-item.active{background:var(--sidebar-active);color:#fff;font-weight:600}
  .nav-item.active svg{stroke:var(--primary)}
  .nav-badge{margin-left:auto;background:var(--primary);color:#fff;font-size:12px;padding:1px 7px;border-radius:10px;font-weight:600}
  .side-foot{padding:14px 20px;color:#7C89A8;font-size:12px;border-top:1px solid rgba(255,255,255,.06)}
  /* main */
  .main{flex:1;display:flex;flex-direction:column;min-width:0}
  .topbar{height:56px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:16px;position:sticky;top:0;z-index:10}
  .topbar .crumb{font-size:15px;font-weight:600;color:var(--t1)}
  .topbar .crumb span{color:var(--t3);font-weight:400}
  .search{flex:1;max-width:340px;margin-left:auto;position:relative}
  .search input{width:100%;height:34px;border:1px solid var(--border-strong);border-radius:6px;padding:0 12px 0 34px;font-size:13px;font-family:var(--font);outline:none;background:#FAFBFC;transition:.15s}
  .search input:focus{border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px var(--primary-light)}
  .search svg{position:absolute;left:11px;top:9px;width:16px;height:16px;stroke:var(--t3)}
  .icon-btn{width:34px;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--t2);cursor:pointer;position:relative;transition:.15s}
  .icon-btn:hover{background:var(--bg);color:var(--t1)}
  .icon-btn svg{width:18px;height:18px;stroke:currentColor}
  .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%;background:var(--error);border:2px solid #fff}
  .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#3B82F6,#2563EB);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;cursor:pointer}
  .content{padding:24px;overflow:auto}
  .row{display:flex;gap:16px;flex-wrap:wrap}
  .col{flex:1;min-width:0}
  /* kpi */
  .kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow);flex:1;min-width:200px;animation:rise .4s both}
  .kpi .lab{color:var(--t2);font-size:13px;display:flex;align-items:center;gap:7px}
  .kpi .lab svg{width:15px;height:15px;stroke:var(--primary)}
  .kpi .val{font-size:28px;font-weight:700;color:var(--t1);margin-top:10px;letter-spacing:-.5px}
  .kpi .val small{font-size:15px;font-weight:600;color:var(--t2);margin-left:3px}
  .kpi .trend{font-size:12px;margin-top:6px;display:flex;align-items:center;gap:5px}
  .up{color:var(--success);font-weight:600}.down{color:var(--error);font-weight:600}
  /* card */
  .card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:16px;animation:rise .45s both}
  .card-h{display:flex;align-items:center;padding:15px 20px;border-bottom:1px solid var(--border);gap:10px}
  .card-h h3{font-size:15px;font-weight:600;color:var(--t1)}
  .card-h .sub{font-size:12px;color:var(--t3)}
  .card-h .right{margin-left:auto;display:flex;gap:8px;align-items:center}
  .card-b{padding:18px 20px}
  .tag{font-size:12px;padding:2px 9px;border-radius:5px;font-weight:600;display:inline-flex;align-items:center;gap:4px}
  .tag.s{background:var(--success-bg);color:var(--success)}
  .tag.w{background:var(--warning-bg);color:var(--warning)}
  .tag.e{background:var(--error-bg);color:var(--error)}
  .tag.i{background:var(--info-bg);color:var(--info)}
  .tag.n{background:#F1F3F5;color:var(--t2)}
  .link{color:var(--primary);cursor:pointer;font-weight:500}
  /* alert */
  .alert{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--radius);background:var(--warning-bg);border:1px solid #FBE3BC;margin-top:16px}
  .alert svg{width:20px;height:20px;stroke:var(--warning);flex-shrink:0}
  .alert .t{font-weight:600;color:#9A6512}
  .alert .d{color:#8A5C10;font-size:13px}
  .alert .x{margin-left:auto;background:#fff;border:1px solid #F0D49A;color:var(--warning);padding:5px 14px;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer}
  /* bars */
  .bar-row{display:flex;align-items:center;gap:12px;margin-bottom:14px}
  .bar-row .name{width:74px;font-size:13px;color:var(--t2);flex-shrink:0}
  .bar-track{flex:1;height:8px;background:#EEF0F3;border-radius:5px;overflow:hidden}
  .bar-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,#3B82F6,#2563EB)}
  .bar-row .num{width:54px;text-align:right;font-size:13px;font-weight:600;color:var(--t1);flex-shrink:0}
  /* chart */
  .chart{display:flex;align-items:flex-end;gap:10px;height:180px;padding:10px 4px 0;border-bottom:1px solid var(--border)}
  .col-bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;height:100%}
  .col-bar .b{width:100%;max-width:30px;border-radius:5px 5px 0 0;background:linear-gradient(180deg,#60A5FA,#2563EB);transition:.3s}
  .col-bar .b.alt{background:linear-gradient(180deg,#A5B4FC,#6366F1)}
  .col-bar .lab{font-size:11px;color:var(--t3)}
  .legend{display:flex;gap:18px;margin-top:12px;font-size:12px;color:var(--t2)}
  .legend i{width:10px;height:10px;border-radius:3px;display:inline-block;margin-right:6px;vertical-align:middle}
  /* table */
  table{width:100%;border-collapse:collapse;font-size:13px}
  th{text-align:left;color:var(--t3);font-weight:500;font-size:12px;padding:11px 14px;border-bottom:1px solid var(--border);background:#FAFBFC}
  td{padding:12px 14px;border-bottom:1px solid #F2F3F5;color:var(--t1)}
  tr:hover td{background:#FAFBFC}
  .mini-ava{width:26px;height:26px;border-radius:6px;background:var(--primary-light);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin-right:9px;vertical-align:middle}
  .price{font-weight:700;color:var(--t1)}
  .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--t2)}
  .btn{height:32px;padding:0 14px;border-radius:6px;border:1px solid var(--border-strong);background:#fff;color:var(--t1);font-size:13px;cursor:pointer;font-family:var(--font);font-weight:500;transition:.15s}
  .btn:hover{border-color:var(--primary);color:var(--primary)}
  .btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
  .btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}
  @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @media(max-width:900px){.sidebar{display:none}.col{min-width:100%}}

  /* ============ 多视图 ============ */
  .view{display:none}
  .view.active{display:block;animation:rise .3s both}
  .bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
  .tabs{display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:var(--shadow)}
  .tab{padding:6px 14px;border-radius:6px;font-size:13px;color:var(--t2);cursor:pointer;transition:.15s;white-space:nowrap}
  .tab:hover{color:var(--t1);background:var(--bg)}
  .tab.active{background:var(--primary-light);color:var(--primary);font-weight:600}
  .btn.sm{height:28px;padding:0 12px;font-size:12.5px}
  .icon-btn.on{background:var(--primary-light);color:var(--primary)}

  /* ============ 工单卡片 ============ */
  .wo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
  .wo-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px;box-shadow:var(--shadow);cursor:pointer;transition:.15s}
  .wo-card:hover{border-color:var(--primary);box-shadow:0 6px 18px rgba(37,99,235,.13);transform:translateY(-2px)}
  .wo-no{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--t3)}
  .wo-line{font-size:12.5px;color:var(--t2);margin-top:6px}
  .wo-log{font-size:12.5px;color:var(--t2);padding:6px 0 6px 12px;border-left:2px solid var(--border);margin-top:6px;line-height:1.7}
  .wo-log .op{color:var(--primary);font-weight:600}
  .pri{font-size:11px;font-weight:700;padding:1px 7px;border-radius:4px}
  .pri.p1{background:#F1F3F5;color:var(--t2)}
  .pri.p2{background:var(--info-bg);color:var(--primary)}
  .pri.p3{background:var(--warning-bg);color:var(--warning)}
  .pri.p4{background:var(--error-bg);color:var(--error)}
  .wst{font-size:11.5px;font-weight:600;padding:1px 8px;border-radius:4px}
  .wst.s0{background:var(--error-bg);color:var(--error)}
  .wst.s1{background:var(--warning-bg);color:var(--warning)}
  .wst.s2{background:var(--info-bg);color:var(--primary)}
  .wst.s3{background:var(--success-bg);color:var(--success)}
  .wst.s4{background:#F1F3F5;color:var(--t2)}

  /* ============ 公告 ============ */
  .ann-bar{display:flex;flex-direction:column;gap:10px}
  .ann-item{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px;box-shadow:var(--shadow)}
  .ann-lv{font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;flex-shrink:0}
  .ann-lv.urgent{background:var(--error-bg);color:var(--error)}
  .ann-lv.important{background:var(--warning-bg);color:var(--warning)}
  .ann-lv.normal{background:var(--info-bg);color:var(--primary)}
  .ann-title{font-weight:600;font-size:14px}
  .ann-sub{font-size:12.5px;color:var(--t2);margin-top:4px}
  /* 登录后未读公告弹窗（2026-09-16）：复用上面的 .ann-item / .ann-lv 卡片样式，只补容器细节。
     弹窗里 .ann-item 曾用于「公告管理」列表（白底 + 阴影），在弹窗内会与卡片边框重复 → 去阴影扁平化。 */
  .ann-pop-cnt{font-size:11.5px;font-weight:600;color:var(--error);background:var(--error-bg);border-radius:999px;padding:2px 9px;margin-left:8px}
  .ann-pop-list{display:flex;flex-direction:column;gap:10px}
  .ann-pop-list .ann-item{box-shadow:none;background:var(--bg)}
  .ann-pop-tip{font-size:12px;color:var(--t3);margin-right:auto;align-self:center}
  .ann-pin{font-size:10.5px;background:var(--primary);color:#fff;padding:1px 5px;border-radius:3px;margin-right:6px;vertical-align:middle}

  /* ============ 通知 ============ */
  .ntf{display:flex;gap:12px;align-items:flex-start;padding:14px 8px;border-bottom:1px solid #F2F3F5;cursor:pointer;transition:.12s}
  .ntf:hover{background:#FAFBFC}
  .ntf.unread{background:var(--primary-lighter)}
  .ntf .ic{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
  .ntf .ic svg{width:17px;height:17px;stroke:currentColor}
  .ntf .ic.order{background:var(--info-bg);color:var(--primary)}
  .ntf .ic.settle{background:var(--success-bg);color:var(--success)}
  .ntf .ic.wo{background:var(--warning-bg);color:var(--warning)}
  .ntf .ic.ann{background:#F3E8FF;color:#7C3AED}
  .ntf .ic.sys{background:#F1F3F5;color:var(--t2)}
  .ntf .body{flex:1;min-width:0}
  .ntf .t{font-weight:600;font-size:13.5px}
  .ntf .c{font-size:12.5px;color:var(--t2);margin-top:3px}
  .ntf .time{font-size:11.5px;color:var(--t3);margin-top:5px}
  .undot{width:8px;height:8px;border-radius:50%;background:var(--error);flex-shrink:0;margin-top:8px}

  /* ============ 空态 ============ */
  .empty{text-align:center;padding:48px 20px;color:var(--t3)}
  .empty svg{width:40px;height:40px;stroke:var(--border-strong);margin-bottom:10px}

  /* ============ modal / toast ============ */
  .mask{position:fixed;inset:0;background:rgba(15,27,61,.45);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}
  .mask.show{display:flex}
  /* 弹窗需在房态抽屉(drawer z-index:121)之上、提示(toast z-index:200)之下 */
  #maskA{z-index:130}
  #modalA{z-index:131}
  .modal{background:#fff;border-radius:12px;width:100%;max-width:540px;max-height:86vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(15,27,61,.3);animation:rise .22s both}
  .modal.wide{max-width:740px}   /* 批量调价等列较多的弹窗（2026-09-15：加价后价多一列，680→740） */
  .modal-h{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border);font-weight:600;font-size:15px;flex-shrink:0}
  .modal-h .x{margin-left:auto;cursor:pointer;color:var(--t3);font-size:15px}
  /* 头 / 底固定、仅内容区滚动（2026-09-15 用户：取消/确认按钮要一直可见，不受滚动条影响） */
  .modal-b{padding:18px 20px;flex:1 1 auto;min-height:0;overflow-y:auto}
  .modal-f{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border);flex-shrink:0;background:#fff;border-radius:0 0 12px 12px}
  .toast{position:fixed;left:50%;bottom:38px;transform:translate(-50%,20px);background:#1F2329;color:#fff;padding:11px 18px;border-radius:8px;display:flex;align-items:center;gap:8px;font-size:13.5px;opacity:0;pointer-events:none;transition:.25s;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.2)}
  .toast.show{opacity:1;transform:translate(-50%,0)}
  .toast svg{width:16px;height:16px;stroke:#4ADE80}

  /* ============ 表单 / 开关 ============ */
  .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .field label{display:block;font-size:12.5px;color:var(--t2);margin-bottom:6px}
  .field input,.field select,.field textarea{width:100%;height:34px;border:1px solid var(--border-strong);border-radius:6px;padding:0 10px;font-size:13px;font-family:var(--font);outline:none;background:#fff;color:var(--t1)}
  .field textarea{height:auto;padding:8px 10px;resize:vertical}
  .field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
  .toggle{width:40px;height:22px;border-radius:11px;background:var(--primary);position:relative;cursor:pointer;transition:.2s;display:inline-block;flex-shrink:0}
  .toggle::after{content:'';position:absolute;top:2px;left:20px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
  .toggle.off{background:#D9DDE3}
  .toggle.off::after{left:2px}

  /* ============ 订单处理（主从布局） ============ */
  .todo-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:3px;flex:1}
  .todo-tab{white-space:nowrap;padding:7px 13px;border-radius:7px;font-size:13px;color:var(--t2);cursor:pointer;border:1px solid transparent;display:flex;align-items:center;gap:6px;transition:.15s;background:transparent}
  .todo-tab:hover{background:var(--surface);color:var(--t1)}
  .todo-tab.active{background:var(--surface);color:var(--primary);font-weight:600;border-color:var(--primary);box-shadow:var(--shadow)}
  .todo-tab .cnt{background:var(--error);color:#fff;font-size:11px;padding:0 6px;border-radius:9px;font-weight:700;line-height:16px}
  .todo-tab.active .cnt{background:var(--primary)}
  /* —— 订单主从 · 左列表卡片化：独立卡片 + 渠道色标条，强化订单间边界 —— */
  .ord-wrap{display:grid;grid-template-columns:384px 1fr;gap:16px;align-items:start}
  .ord-list{background:#EDF1F7;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-height:calc(100vh - 240px);overflow:auto;padding:10px}
  .ord-list-h{display:flex;align-items:center;padding:11px 14px;position:sticky;top:0;margin:-10px -10px 10px;background:#EDF1F7;border-bottom:1px solid #D9E0EC;z-index:3;font-size:13px;color:var(--t2);border-radius:var(--radius) var(--radius) 0 0}
  .ord-item{position:relative;background:#fff;border:1px solid #E2E8F2;border-left:4px solid #CBD5E1;border-radius:9px;padding:12px 14px 12px 12px;margin-bottom:9px;cursor:pointer;box-shadow:0 1px 2px rgba(15,27,61,.06);transition:box-shadow .15s,border-color .15s,transform .15s,background .15s}
  .ord-item:last-child{margin-bottom:0}
  .ord-item:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(15,27,61,.13);border-color:#C7D3E4}
  .ord-item.ch-ctrip{border-left-color:#287DFA}
  .ord-item.ch-tongcheng{border-left-color:#0086F6}
  .ord-item.ch-gaode{border-left-color:#00A6FB}
  .ord-item.ch-meituan{border-left-color:#FFC300}
  .ord-item.ch-fliggy{border-left-color:#FF6700}
  .ord-item.active{background:var(--primary-lighter);border-color:var(--primary);border-left-color:var(--primary);box-shadow:0 5px 16px rgba(37,99,235,.2)}
  .ord-item .r1{display:flex;align-items:center;gap:6px;padding-bottom:9px;margin-bottom:9px;border-bottom:1px dashed #EDF0F6}
  .ord-item.active .r1{border-bottom-color:#C9DCFF}
  .ord-item .hname{font-weight:700;font-size:14px;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
  .ord-item .when{font-size:11px;color:var(--t3);flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:-.2px}
  .ord-item .r2,.ord-item .r3{font-size:12.5px;color:var(--t2);display:flex;gap:8px;align-items:center}
  .ord-item .r3{margin-top:8px}
  .ord-item .r3 .guest{margin-left:auto;font-weight:700;font-size:13.5px;color:var(--primary);font-variant-numeric:tabular-nums}
  .ord-item .r2{align-items:flex-start}
  .ord-item .r2 .nm{flex-shrink:0;white-space:nowrap;font-weight:600;color:var(--t1)}
  .ord-item .r2 .desc{flex:1;min-width:0;line-height:1.5}
  .ch-tag{font-size:10.5px;font-weight:700;color:#fff;padding:1px 5px;border-radius:3px;flex-shrink:0}
  .ch-tag.ctrip{background:#287DFA}
  .ch-tag.meituan{background:#FFC300;color:#7A5A00}
  .ch-tag.tongcheng{background:#0086F6}
  .ch-tag.gaode{background:#00A6FB}
  .ch-tag.fliggy{background:#FF6700}
  .tag-new{font-size:10.5px;font-weight:700;color:var(--error);background:var(--error-bg);padding:1px 5px;border-radius:3px;flex-shrink:0}
  .countdown{font-size:11.5px;font-weight:700;color:#fff;background:var(--warning);padding:2px 7px;border-radius:4px;display:inline-flex;gap:4px;align-items:center}
  .ord-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-height:420px;overflow:hidden}
  /* —— 订单详情（奈斯风格）：无边框字段区 + 分区表格 —— */
  .od-h{padding:18px 22px 14px;border-bottom:1px solid var(--border)}
  .od-no-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
  .od-lb{font-size:15px;font-weight:600;color:var(--t1);white-space:nowrap}
  .od-no{font-size:20px;font-weight:700;letter-spacing:.5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--t1)}
  .od-stat{font-size:14px;font-weight:700;margin-left:auto;white-space:nowrap}
  .od-sub{font-size:12.5px;color:var(--t3);margin-top:9px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .od-actions{display:flex;align-items:center;gap:10px;padding:11px 22px;border-bottom:1px solid var(--border);background:#fff;flex-wrap:wrap}
  .od-links{margin-left:auto;display:flex;align-items:center;flex-wrap:wrap}
  .od-link{font-size:13px;color:var(--primary);cursor:pointer;padding:3px 11px;white-space:nowrap;position:relative;border-radius:4px}
  .od-link+.od-link::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);width:1px;height:11px;background:#DDE3EC}
  .od-link:hover{background:var(--primary-light);text-decoration:underline}
  .od-fields{display:grid;grid-template-columns:repeat(3,1fr);padding:8px 0 12px}
  .od-f{padding:11px 22px;min-width:0}
  .od-f .k{font-size:12.5px;color:var(--t3);margin-bottom:6px}
  .od-f .v{font-size:14px;font-weight:500;color:var(--t1);word-break:break-all;line-height:1.55}
  .od-f.full{grid-column:1/-1}
  .od-money{display:flex;gap:38px;flex-wrap:wrap;align-items:baseline;padding:13px 22px;background:#F7F9FF;border-top:1px solid var(--border);font-size:14.5px;font-weight:700;color:var(--t1)}
  .od-money .v{color:var(--error);font-variant-numeric:tabular-nums;font-size:16px}
  .od-money .base .v{color:var(--primary)}
  .od-sec{border-top:1px solid var(--border)}
  .od-sec-t{padding:16px 22px 8px;font-size:15px;font-weight:700;color:var(--t1)}
  .od-p{margin:0;padding:0 22px 16px;font-size:13.5px;color:var(--t2);line-height:1.65}
  .od-tbl{width:100%;border-collapse:collapse;font-size:13.5px}
  .od-tbl th{background:#F5F7FA;color:var(--t2);font-weight:600;text-align:left;padding:10px 22px;font-size:12.5px;white-space:nowrap}
  .od-tbl tbody td{padding:12px 22px;border-top:1px solid #F1F3F7;color:var(--t1);font-variant-numeric:tabular-nums}
  .od-tbl tbody tr:first-child td{border-top:none}
  .od-tbl .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
  .od-hint{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--border-strong);color:var(--t3);font-size:10px;margin-left:5px;cursor:help;vertical-align:middle}
  .od-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:420px;color:var(--t3);gap:12px}
  .od-empty svg{width:46px;height:46px;stroke:var(--border-strong)}
  .agent-pill{font-size:12px;background:var(--primary-light);color:var(--primary);padding:2px 9px;border-radius:20px;font-weight:600;display:inline-block}
  @media(max-width:1100px){.ord-wrap{grid-template-columns:1fr}.ord-list{max-height:420px}.od-fields{grid-template-columns:repeat(2,1fr)}}
  /* ===== 酒店管理 / 加价设置 ===== */
  .search-in{height:32px;width:210px;border:1px solid var(--border-strong);border-radius:6px;padding:0 10px;font-size:13px;font-family:var(--font);outline:none;color:var(--t1)}
  .search-in:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
  .sel-in{height:32px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:13px;font-family:var(--font);outline:none;color:var(--t1);background:#fff}
  .ch-pill{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid currentColor;background:#fff;margin:2px 4px 2px 0;white-space:nowrap}
  .ch-pill i{width:6px;height:6px;border-radius:50%;display:inline-block}
  .ch-pill.none{color:var(--t3);border-color:var(--border-strong);background:#F7F8F9}
  .ch-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;flex-shrink:0}
  .mk-sec-t{font-size:13px;font-weight:600;color:var(--t1);margin:16px 0 8px;padding-top:14px;border-top:1px solid var(--border)}
  .mk-sec-t .sub{font-size:12px;color:var(--t3);font-weight:400;margin-left:6px}

  /* 渠道加价覆盖表：带 % 后缀的输入框 + toggle switch */
  .ch-ov-tbl{width:100%;border-collapse:collapse;font-size:13px}
  .ch-ov-tbl th{padding:8px;text-align:left;font-weight:600;color:var(--t2);border-bottom:1px solid var(--border)}
  .ch-ov-tbl td{padding:10px 8px;border-bottom:1px solid #F2F4F7;vertical-align:middle}
  .ch-ov-tbl tr:last-child td{border-bottom:none}
  .rt-rate-wrap{position:relative;width:110px}
  .rt-rate-wrap input{width:100%;height:32px;border:1px solid var(--border-strong);border-radius:6px;padding:0 24px 0 8px;font-size:13px;color:var(--t1);text-align:right;box-sizing:border-box;outline:none;background:#fff}
  .rt-rate-wrap input::placeholder{color:var(--t3);text-align:left}
  .rt-rate-wrap input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
  .rt-rate-wrap input:disabled{background:#F7F8F9;color:var(--t3)}
  .rt-rate-wrap .unit{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:12px;pointer-events:none}
  .yz-switch{position:relative;display:inline-block;width:38px;height:20px;vertical-align:middle}
  .yz-switch input{opacity:0;width:0;height:0}
  .yz-switch .slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#D0D5DD;transition:.2s;border-radius:20px}
  .yz-switch .slider:before{position:absolute;content:"";height:16px;width:16px;left:2px;bottom:2px;background-color:white;transition:.2s;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.12)}
  .yz-switch input:checked+.slider{background-color:var(--primary)}
  .yz-switch input:checked+.slider:before{transform:translateX(18px)}
  .yz-switch input:disabled+.slider{opacity:.5;cursor:not-allowed}
  .ch-ov-tbl .ch-pill{font-size:12px;padding:3px 10px}
  /* 渠道开票方（HOTEL=酒店开票默认 / CP=CP开票）：渠道表逐行 select + 开通渠道弹窗行内 select */
  .ch-ov-tbl .chRtInv{height:30px;width:100%;min-width:88px;border:1px solid #D0D5DD;border-radius:6px;padding:0 4px;font-size:12px;font-family:var(--font);background:#fff;color:var(--t1);box-sizing:border-box;outline:none}
  .ch-ov-tbl .chRtInv:disabled{background:#F5F6F7;color:var(--t3);cursor:not-allowed}
  .ch-open-row .ch-inv select{height:28px;border:1px solid var(--border-strong);border-radius:6px;padding:0 4px;font-size:12.5px;font-family:var(--font);outline:none;background:#fff;color:var(--t1)}
  .ch-open-row .ch-inv select:disabled{background:#F5F6F7;color:var(--t3)}
  /* 渠道加价覆盖：右侧两列只读解释列（酒店加价 / 总加价率） */
  .ch-ov-tbl .ch-ov-base{font-weight:600;color:var(--t2);white-space:nowrap}
  .ch-ov-tbl .ch-ov-tot{font-weight:700;color:var(--t1);white-space:nowrap}

  /* ============ 房型与价格计划 / 退改规则（v2.1） ============ */
  #view-rooms table th,#view-rooms table td{white-space:nowrap}
  #view-rooms table td:nth-child(1){white-space:normal}
  #view-rooms table td:nth-child(6){white-space:normal}
  .planline{display:flex;align-items:center;gap:9px;padding:3px 0;font-size:12.5px;white-space:nowrap}
  #view-rooms table td:nth-child(6){min-width:300px}
  .pc-hidden{display:none !important}
  .planline .mn{font-weight:600;color:var(--t1)}
  .planline .mt{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--primary-light);color:var(--primary);font-weight:600;flex:0 0 auto}
  .planline .cp{color:var(--t2);font-size:11.5px;overflow:hidden;text-overflow:ellipsis}
  .planline .pp{margin-left:auto;font-weight:700;color:var(--error);flex:0 0 auto}
  .tpl-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
  .tpl{border:1px solid var(--border-strong);border-radius:10px;padding:14px;cursor:pointer;position:relative;background:#fff;transition:.15s}
  .tpl:hover{border-color:var(--primary)}
  .tpl.on{border-color:var(--primary);background:var(--primary-light);box-shadow:0 0 0 3px var(--primary-light)}
  .tpl .nm{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:6px}
  .tpl .dg{font-size:12px;color:var(--t2);margin-top:7px;line-height:1.7}
  .tpl .rk{position:absolute;top:10px;right:10px;font-size:11px;color:var(--t3);font-weight:600}
  .tpl.on .rk{color:var(--primary)}
  .cfgr{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed var(--border)}
  .cfgr:last-child{border-bottom:none}
  .cfgr .lbl{font-size:13px;color:var(--t1);flex:0 0 200px;font-weight:500}
  .cfgr .hint-in{font-size:12px;color:var(--t3)}
  .cin{height:32px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:13px;font-family:var(--font);outline:none;color:var(--t1);background:#fff}
  .cin.n{width:76px}
  .cin:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
  .tier-row{display:grid;grid-template-columns:1.1fr .9fr .8fr 34px;gap:8px;align-items:center;margin-bottom:8px}
  .tier-row .tg{font-size:12.5px;color:var(--t2)}
  .chforce td:first-child{font-weight:600}
  .rp-block{border:1px solid var(--border);border-radius:8px;padding:11px 13px;margin-bottom:10px;background:#FCFCFD}
  .rp-block .r1{display:flex;gap:8px;align-items:center}
  .rp-block .r2{display:flex;gap:7px;align-items:center;margin-top:10px;flex-wrap:wrap;font-size:12.5px;color:var(--t2)}
  .rp-block .cin{height:30px}
  .rp-del{color:var(--t3);cursor:pointer;font-size:15px;margin-left:auto;padding:0 4px}
  .rp-del:hover{color:var(--error)}
  .ch-open{border:1px solid var(--border);border-radius:8px;overflow:hidden}
  .ch-open-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #F2F3F5;cursor:pointer;background:#fff}
  .ch-open-row:last-child{border-bottom:none}
  .ch-open-row.on{background:var(--primary-lighter)}
  .ch-open-row input[type=checkbox]{width:15px;height:15px;flex-shrink:0}
  .ch-open-row .ch-name{font-size:13px;font-weight:600;color:var(--t1);width:80px;flex-shrink:0}
  .ch-open-row .ch-min{font-size:12px;color:var(--t3);flex:1}
  .ch-open-row .ch-in{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--t2);flex-shrink:0}
  .ch-open-row .ch-in input{width:76px;height:28px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:12.5px;font-family:var(--font);outline:none}
  .ch-open-row .ch-in input:disabled{background:#F5F6F7;color:var(--t3)}
  .mk-inp{width:88px;height:30px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:12.5px;font-family:var(--font);outline:none}
  .mk-v{font-weight:700;color:var(--t1)}
  .mk-warn{color:var(--error);font-size:12px;font-weight:600}
  .mk-ok{color:var(--success);font-size:12px;font-weight:600}
  .hint{font-size:12px;color:var(--t3);margin-top:10px;line-height:1.7}
  #view-hotels table th,#view-hotels table td{white-space:nowrap}
  #view-hotels table td:first-child{white-space:normal}
  #view-markup .row{align-items:flex-start}
  #view-distributors table th,#view-distributors table td{white-space:nowrap}
  #view-distributors table td:first-child{white-space:normal}
  #view-roles table th,#view-roles table td{white-space:nowrap;text-align:center}
  #view-roles table th:first-child,#view-roles table td:first-child{text-align:left;white-space:normal;min-width:200px}
  #view-roles .rname{font-size:13px;font-weight:500}
  #view-roles .rgrp{font-size:11px;font-weight:400;color:var(--t3)}
  #view-roles table th{padding:10px 6px;font-size:12.5px}
  #view-roles table td{padding:9px 6px}
  #view-roles .pgrp td{background:#F5F7FA;font-size:12px;font-weight:600;color:var(--t2);text-align:left!important;padding:8px 12px!important}
  #roleOvTable th,#roleOvTable td{white-space:normal!important;text-align:left!important;padding:10px 12px!important}
  #roleOvTable td:first-child{min-width:0!important;width:70px}
  #roleOvTable th:nth-child(2),#roleOvTable td:nth-child(2){width:170px}
  .wh-box{border:1px solid var(--border);border-radius:10px;padding:14px 14px 12px;background:#fff;height:100%;box-sizing:border-box}
  .wh-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13.5px;font-weight:600;color:var(--t1);margin-bottom:12px}
  .wh-sub{font-size:12px;color:var(--t3);margin-top:9px;line-height:1.6}
  /* ===== 经营情报（热点日历）+ 结算与提现 + 员工角色模板 ===== */
  .hc-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
  .hc-bar .sp{margin-left:auto}
  .hc-bar .lbl{font-size:13px;color:var(--t2)}
  .hlv{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;white-space:nowrap}
  .hlv i{width:6px;height:6px;border-radius:50%;display:inline-block;flex-shrink:0}
  .hlv.high{color:#DC2626}.hlv.high i{background:#DC2626}
  .hlv.mid{color:#D97706}.hlv.mid i{background:#D97706}
  .hlv.low{color:var(--t2)}.hlv.low i{background:var(--t2)}
  .tag{white-space:nowrap}
  .src{font-size:11.5px;color:var(--t3)}
  .src.api{color:var(--info);font-weight:600}
  .hc-city{font-size:12px;padding:2px 8px;border-radius:5px;background:var(--info-bg);color:var(--info);font-weight:600}
  .money{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}
  .money.red{color:var(--error)}
  .money.blue{color:var(--primary)}
  .flow{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
  .flow .st{border:1px solid var(--border);border-radius:8px;padding:12px 14px;background:var(--surface)}
  .flow .st .n{font-size:11.5px;color:var(--t3);font-weight:700;letter-spacing:.5px}
  .flow .st .t{font-size:13.5px;font-weight:600;color:var(--t1);margin:5px 0 4px}
  .flow .st .d{font-size:12px;color:var(--t2);line-height:1.55}
  .eq{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:13px;color:var(--t1);
      background:var(--primary-lighter);border:1px solid var(--border);border-radius:8px;padding:12px 14px;line-height:1.8}
  .eq .op{color:var(--t3);font-weight:700}
  .eq b{font-weight:700}
  .eq b.p{color:var(--primary)}.eq b.r{color:var(--error)}.eq b.g{color:var(--success)}
  .inv-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .inv-box{border:1px solid var(--border);border-radius:8px;padding:12px 14px;background:var(--surface)}
  .inv-box .ih{font-size:13.5px;font-weight:600;color:var(--t1);display:flex;align-items:center;gap:7px;margin-bottom:8px}
  .inv-box .ih svg{width:15px;height:15px;stroke:var(--primary);flex-shrink:0}
  .inv-line{display:flex;justify-content:space-between;gap:12px;font-size:12.5px;color:var(--t2);padding:3px 0}
  .inv-line b{color:var(--t1);font-weight:600}
  .inv-line b.money{font-weight:700}
  .perm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .perm-card{border:1px solid var(--border);border-radius:8px;padding:14px;background:var(--surface)}
  .perm-card .ph{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:700;color:var(--t1)}
  .perm-card .ph .sc{margin-left:auto;font-size:11.5px;color:var(--t3);font-weight:500}
  .perm-card .pl{font-size:11.5px;color:var(--t3);margin:7px 0 9px}
  .perm-list{display:flex;flex-wrap:wrap;gap:6px}
  .perm-p{font-size:11.5px;padding:3px 8px;border-radius:5px;background:var(--success-bg);color:var(--success);font-weight:600;font-family:ui-monospace,Menlo,monospace}
  .perm-n{font-size:11.5px;padding:3px 8px;border-radius:5px;background:#F1F3F5;color:var(--t3);text-decoration:line-through;font-family:ui-monospace,Menlo,monospace}
  /* ===== 涉税信息报送（本批新增） ===== */
  .tax-chk{display:flex;flex-direction:column;gap:10px;padding:2px 0}
  .tax-chk .c{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--border);border-radius:9px;padding:11px 13px;background:#FCFCFD}
  .tax-chk .c .no{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:#EAF1FF;color:#2563EB;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}
  .tax-chk .c.hit .no{background:#0F766E;color:#fff}
  .tax-chk .c b{font-size:13px;display:block;margin-bottom:3px;color:var(--t1)}
  .tax-chk .c p{margin:0;font-size:12px;color:var(--t2);line-height:1.65}
  .tax-map{display:grid;grid-template-columns:1fr 1fr;gap:14px}
  .tax-map .m{border:1px solid var(--border);border-radius:9px;overflow:hidden;background:#fff}
  .tax-map .m .mh{padding:9px 12px;background:#F7F9FC;border-bottom:1px solid var(--border);font-size:12.5px;font-weight:700;color:var(--t1)}
  .tax-map .m .mr{display:flex;gap:10px;padding:8px 12px;font-size:12px;border-bottom:1px solid #EEF1F5;line-height:1.55}
  .tax-map .m .mr:last-child{border-bottom:0}
  .tax-map .m .mr .k{flex:0 0 116px;color:var(--t3)}
  .tax-map .m .mr .v{flex:1;color:var(--t1);font-weight:600}
  .tax-note{font-size:12.5px;color:var(--t2);line-height:1.9}
  .tax-note b{color:var(--t1)}
  .tax-note .pen{color:#B91C1C;font-weight:700}
  .tax-note .row2{padding:7px 0;border-bottom:1px dashed var(--border)}
  .tax-note .row2:last-child{border-bottom:0}

  /* ===== 数据报表（v2.5 新增） ===== */
  /* KPI 网格：固定 4 列。禁用 .row 的 flex:1 折行 —— 否则折行时逐行重新分配
     剩余空间，会出现「第一行 5 张窄卡 + 第二行 3 张宽卡」的参差（实测 222px vs 381px）。 */
  #arptKpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  #arptKpis .kpi{flex:none;min-width:0}
  @media (max-width:1180px){#arptKpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
  /* 口径自检条：admin 原先只写了 class="settle" 却从未定义该样式 ->
     计算样式为 display:block / padding:0 / 背景透明，文字贴边且与商家端视觉不一致。 */
  #arptIdBar{display:flex;align-items:center;gap:18px;margin-top:16px;background:linear-gradient(135deg,#1E3A8A,#2563EB);color:#fff;border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow)}
  #arptIdBar .txt{flex:1;min-width:0}
  #arptIdBar .lab{font-size:13px;opacity:.85}
  #arptIdBar .big{font-size:30px;font-weight:800;letter-spacing:-.5px}
  #arptIdBar .eqline{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-top:4px}
  #arptIdBar .gmv-eq{font-size:14px;opacity:.92;font-variant-numeric:tabular-nums}
  #arptIdBar .note{font-size:12px;opacity:.8;margin-top:4px}
  #arptIdBar .note b{opacity:1}
  .kpi .trend.up{color:var(--success);font-weight:600}
  .kpi .trend.down{color:var(--error);font-weight:600}
  .nav-badge.plan{background:rgba(255,255,255,.16);color:#C7D0E0;font-weight:500}

  /* ===== 房态监控（RSM · K 域运行时保障层） ===== */
  #rsmKpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  #rsmKpis .kpi{flex:none;min-width:0}
  @media (max-width:1180px){#rsmKpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .rsm-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
  .rsm-bar .lbl{font-size:13px;color:var(--t2)}
  .rsm-bar .sp{margin-left:auto}
  .rsm-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}
  .rsm-mx{border-collapse:collapse;width:100%}
  .rsm-mx th,.rsm-mx td{border:1px solid var(--border);padding:0;text-align:center;font-variant-numeric:tabular-nums}
  .rsm-mx thead th{background:#F7F8FA;font-size:11.5px;color:var(--t2);font-weight:600;padding:6px 6px;white-space:nowrap;line-height:1.5}
  .rsm-mx thead th.we{color:#B45309;background:#FFFBF3}
  .rsm-mx .rt{width:184px;min-width:184px;text-align:left;padding:7px 12px;background:#FBFCFD}
  .rsm-mx .rt .n{font-size:13px;font-weight:600;color:var(--t1)}
  .rsm-mx .rt .h{font-size:11.5px;color:var(--t3);margin-top:2px}
  .rsm-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;height:46px;min-width:52px;cursor:pointer;transition:.12s}
  .rsm-cell:hover{outline:2px solid var(--primary);outline-offset:-2px}
  .rsm-cell b{font-size:13px;font-weight:600;color:var(--t1)}
  .rsm-cell i{font-style:normal;font-size:11px;opacity:.85}
  .rsm-ok{background:#fff}
  .rsm-low{background:#FFF4E0}.rsm-low b{color:#B45309}.rsm-low i{color:#B45309}
  .rsm-sold{background:#FCEBEB}.rsm-sold b{color:#B91C1C}.rsm-sold i{color:#B91C1C}
  .rsm-closed{background:repeating-linear-gradient(135deg,#E9EDF2 0 5px,#F5F7FA 5px 10px)}
  .rsm-closed b{color:var(--t3)}.rsm-closed i{color:var(--t3)}
  .rsm-fail{box-shadow:inset 0 0 0 2px #F09595}
  .rsm-lg{display:flex;gap:14px;align-items:center;font-size:12px;color:var(--t2);flex-wrap:wrap;margin:10px 2px}
  .rsm-lg i{width:14px;height:14px;border-radius:3px;display:inline-block;vertical-align:-2px;margin-right:5px;border:1px solid rgba(0,0,0,.08)}
  .rsm-lvl{font-size:11px;font-weight:700;padding:1px 7px;border-radius:4px;display:inline-block}
  .rsm-lvl.p0{background:#FCEBEB;color:#B91C1C}
  .rsm-lvl.p1{background:#FFF4E0;color:#B45309}
  .rsm-lvl.p2{background:#F1F3F5;color:var(--t2)}
  /* 酒店搜索式下拉（门店多时替代横排 chip） */
  .rsm-dd{position:relative;display:inline-block}
  .rsm-dd-btn{display:inline-flex;align-items:center;gap:10px;padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:13px;color:var(--t1);cursor:pointer;font-weight:500;max-width:280px}
  .rsm-dd-btn:hover{border-color:var(--primary)}
  .rsm-dd-btn .car{font-size:9px;color:var(--t3)}
  .rsm-dd-pop{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:70;width:330px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgba(15,23,42,.14);overflow:hidden}
  .rsm-dd-pop.show{display:block}
  .rsm-dd-sch{width:100%;box-sizing:border-box;padding:9px 12px;border:0;border-bottom:1px solid var(--border);outline:none;font-size:13px;color:var(--t1)}
  .rsm-dd-sch::placeholder{color:var(--t3)}
  .rsm-dd-list{max-height:272px;overflow-y:auto;padding:4px}
  .rsm-dd-it{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:13px;color:var(--t1);white-space:nowrap}
  .rsm-dd-it:hover{background:#F3F5F8}
  .rsm-dd-it.on{background:#EAF1FF;color:var(--primary);font-weight:600}
  .rsm-dd-it .cnt{margin-left:auto;font-size:11.5px;color:var(--t3);padding-left:12px}
  .rsm-dd-it .dot{width:7px;height:7px;border-radius:50%;background:#DC2626;flex:none}
  .rsm-dd-empty{padding:14px;text-align:center;color:var(--t3);font-size:12.5px}
  .rpt-chart .b.wk{background:linear-gradient(180deg,#FBBF24,#F59E0B)}
  .rpt-tb{width:100%;border-collapse:collapse;font-size:13px}
  .rpt-tb th{text-align:left;color:var(--t2);font-weight:600;font-size:12.5px;padding:10px 12px;background:#F5F7FA;border-bottom:1px solid var(--border);white-space:nowrap}
  .rpt-tb td{padding:11px 12px;border-bottom:1px solid #F1F3F7;color:var(--t1);white-space:nowrap;font-variant-numeric:tabular-nums}
  .rpt-tb tr:last-child td{border-bottom:0}
  .rpt-tb th.n,.rpt-tb td.n{text-align:right}
  .rpt-bar{display:inline-block;width:104px;height:7px;background:#EEF0F3;border-radius:4px;overflow:hidden;vertical-align:middle;margin-right:8px}
  .rpt-bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#60A5FA,#2563EB)}
  .rpt-dot{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:7px;vertical-align:middle}
  .rpt-note{font-size:12.5px;color:var(--t2);line-height:1.95}
  .rpt-note b{color:var(--t1)}
  .rpt-row+.rpt-row{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}
/* ===== 全国酒店库 → 私海 → 开通：列对齐 / 电话突出 / 高级筛选 / 分页 ===== */
.pool-tb{table-layout:fixed;width:100%}
.pool-tb th{font-size:12.5px;white-space:nowrap}
.pool-tb td{overflow-wrap:anywhere;vertical-align:middle}
.pool-name{font-weight:600;color:var(--t1);line-height:1.45}
.pool-name.clickable{cursor:pointer}
.pool-name.clickable:hover{color:var(--primary);text-decoration:underline}
/* ===== 酒店详情抽屉：右侧滑出，按 t_ly_hotel_base 分组展示完整基础信息 ===== */
.drawer-mask{position:fixed;inset:0;background:rgba(15,27,61,.45);display:none;z-index:120}
.drawer-mask.show{display:block}
.drawer{position:fixed;top:0;right:0;height:100vh;width:760px;max-width:94vw;background:var(--bg);
  box-shadow:-8px 0 32px rgba(15,27,61,.18);display:flex;flex-direction:column;
  transform:translateX(100%);transition:transform .24s ease;z-index:121}
.drawer.show{transform:none}
/* 全宽抽屉：用于酒店渠道/房型/价格计划等复杂长表单 */
.drawer.full{width:100vw;max-width:100vw}
/* 父子结构抽屉：mask 显示时内部 drawer 自动滑入，JS 无需单独操作 drawer 的 show class */
.drawer-mask.show .drawer{transform:none}
.drawer-h{display:flex;align-items:flex-start;gap:12px;padding:16px 22px;background:#fff;border-bottom:1px solid var(--border)}
.drawer-h .nm{font-size:16.5px;font-weight:700;color:var(--t1);line-height:1.35}
.drawer-h .sub{font-size:12px;color:var(--t3);margin-top:5px}
.drawer-h .x{margin-left:auto;cursor:pointer;color:var(--t3);font-size:18px;line-height:1;padding:3px 8px;border-radius:6px;flex-shrink:0}
.drawer-h .x:hover{background:var(--bg);color:var(--t1)}
/* 窗口控制按钮（最小化 / 最大化·还原 / 关闭） */
.win-ctrls{display:flex;align-items:center;gap:4px;margin-left:auto;flex-shrink:0}
.win-btn{width:30px;height:30px;border:none;background:transparent;border-radius:7px;color:var(--t2);
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:background .15s,color .15s}
.win-btn:hover{background:var(--bg);color:var(--t1)}
.win-ctrls .x{cursor:pointer;color:var(--t3);font-size:18px;line-height:1;width:30px;height:30px;border-radius:7px;
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s,color .15s}
.win-ctrls .x:hover{background:var(--bg);color:var(--t1)}
.mini-handle{display:none;writing-mode:vertical-rl;font-size:13px;font-weight:700;color:var(--t1);
  cursor:pointer;letter-spacing:3px;padding:8px 0}
/* 最小化态：收成右侧竖条，遮罩透明不挡后面，仅抽屉可点 */
.drawer.min{width:54px !important;max-width:54px !important;min-width:54px}
.drawer.min .drawer-h{flex-direction:column;align-items:center;gap:12px;padding:16px 4px;border-bottom:none}
.drawer.min .drawer-h > div:first-child,
.drawer.min .win-ctrls{display:none}
.drawer.min .mini-handle{display:block}
.drawer.min .drawer-b,
.drawer.min .dbar{display:none}
.drawer-mask.minmode{background:transparent;pointer-events:none}
.drawer-mask.minmode .drawer{pointer-events:auto}
.drawer-b{flex:1;overflow:auto;padding:16px 22px 26px}
.dcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px;margin-bottom:12px}
.dcard h4{font-size:13px;font-weight:700;color:var(--t1);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.dcard h4::before{content:'';width:3px;height:13px;border-radius:2px;background:var(--primary);flex-shrink:0}
.dgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 18px}
.dgrid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.di .k{font-size:11.5px;color:var(--t3);margin-bottom:3px}
.di .v{font-size:13px;color:var(--t1);word-break:break-word;line-height:1.5}
.di .v a{color:var(--primary);text-decoration:none;font-weight:600}
.di .v a:hover{text-decoration:underline}
.dhero{height:148px;border-radius:var(--radius);background:#EEF1F5 center/cover no-repeat;margin-bottom:12px;
  display:flex;align-items:center;justify-content:center;color:var(--t3);font-size:12px}
.dscore{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.dscore .s{background:var(--bg);border-radius:6px;padding:8px 6px;text-align:center}
.dscore .s b{display:block;font-size:15px;color:var(--t1);line-height:1.4}
.dscore .s span{font-size:11px;color:var(--t3)}
.dtotal{display:flex;align-items:baseline;gap:10px}
.dtotal b{font-size:26px;font-weight:700;color:var(--primary);letter-spacing:-.5px}
.dtotal .des{font-size:13px;font-weight:600;color:var(--t1)}
.dtotal .cnt{font-size:12px;color:var(--t3)}
.dintro{font-size:13px;color:var(--t2);line-height:1.8;white-space:pre-wrap}
.dnote{background:var(--warning-bg);border:1px solid #F6DFB4;color:#8A5A00;border-radius:6px;padding:9px 12px;font-size:12.5px;margin-bottom:12px}
.dnote.err{background:var(--error-bg);border-color:#F6C9C9;color:#A52A2A}
.dbar{display:flex;align-items:center;gap:10px;padding:13px 22px;border-top:1px solid var(--border);background:#fff}
.dbar .sp{margin-left:auto}
.tel-cell{font-weight:700;color:var(--primary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:12.5px;text-decoration:none;white-space:nowrap;display:inline-block}
.tel-cell:hover{text-decoration:underline}
.tel-none{color:var(--t3)}
.cbx{position:relative}
.cbx-pop{position:absolute;top:calc(100% + 4px);left:0;min-width:100%;max-height:260px;overflow:auto;background:#fff;
  border:1px solid var(--border-strong);border-radius:8px;box-shadow:0 10px 28px rgba(15,27,61,.14);z-index:60;display:none}
.cbx-pop.show{display:block}
.cbx-i{padding:7px 10px;cursor:pointer;font-size:12.5px;display:flex;justify-content:space-between;gap:12px;align-items:center}
.cbx-i:hover,.cbx-i.on{background:var(--primary-lighter)}
.cbx-i .py{color:var(--t3);font-size:11.5px;font-family:ui-monospace,Menlo,monospace}
.cbx-empty{padding:9px 10px;color:var(--t3);font-size:12.5px}
.adv-toggle{display:inline-flex;align-items:center;font-size:12.5px;color:var(--primary);cursor:pointer;user-select:none;white-space:nowrap}
.adv-panel{display:none;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 14px;padding:12px 14px;margin-bottom:12px;
  background:var(--primary-lighter);border:1px solid #DCE6FB;border-radius:8px}
.adv-panel.show{display:grid}
.adv-f{display:flex;flex-direction:column;gap:5px;min-width:0}
.adv-f>label{font-size:11.5px;color:var(--t2);font-weight:600}
.adv-f input,.adv-f select{height:30px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:12.5px;
  font-family:var(--font);outline:none;color:var(--t1);background:#fff;min-width:0;width:100%;box-sizing:border-box}
.adv-f input:focus,.adv-f select:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.adv-range{display:flex;align-items:center;gap:6px}
.adv-range span{color:var(--t3);font-size:12px}
.star-box{display:flex;gap:5px;flex-wrap:wrap}
.star-chk{display:inline-flex;align-items:center;border:1px solid var(--border-strong);border-radius:6px;padding:4px 9px;
  cursor:pointer;background:#fff;font-size:12px;color:var(--t1);white-space:nowrap;user-select:none}
.star-chk.on{background:var(--primary);border-color:var(--primary);color:#fff}
  /* ================= 通用分页组件 .yz-pager（四端共用一份，别在视图里另写一套） =================
     ① 一条 bar 内分区：统计 │ 翻页 │ 每页·跳转，分区之间用竖线；
        不再用 margin-left:auto 把控件拉到两端（那样看着像两个独立的东西）。
     ② 宽度随内容（inline-flex）而不是撑满整行 —— 一眼就是一个组件。
     ③ 接入见 <script> 里的 YzPager.mount(...)，容器只需 <div class="yz-pager" id="xxxPager"></div>。 */
  .yz-pager{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;max-width:100%;
    margin-top:12px;padding:4px 8px;background:var(--bg,#F5F7FA);border:1px solid var(--border,#E8EAED);
    border-radius:9px;font-size:12.5px;color:var(--t2,#565C66)}
  .yz-pager .yz-pg-info{white-space:nowrap}
  .yz-pager .yz-pg-info b{color:var(--t1,#1F2329);font-weight:600}
  .yz-pager .yz-pg-nav,.yz-pager .yz-pg-size,.yz-pager .yz-pg-jump{display:inline-flex;align-items:center;gap:6px}
  .yz-pager .yz-pg-sep{width:1px;height:15px;background:var(--border-strong,#D9DDE3);flex:none}
  .yz-pager button{height:26px;padding:0 10px;font-size:12.5px;border:1px solid var(--border-strong,#D9DDE3);
    background:var(--surface,#fff);border-radius:6px;cursor:pointer;color:var(--t1,#1F2329);font-family:var(--font)}
  .yz-pager button:disabled{opacity:.45;cursor:not-allowed}
  .yz-pager button:not(:disabled):hover{border-color:var(--primary,#2563EB);color:var(--primary,#2563EB)}
  .yz-pager select{height:26px;border:1px solid var(--border-strong,#D9DDE3);border-radius:6px;font-size:12.5px;
    padding:0 4px;background:var(--surface,#fff);color:var(--t1,#1F2329);font-family:var(--font)}
  .yz-pager input.jump{width:48px;height:26px;border:1px solid var(--border-strong,#D9DDE3);border-radius:6px;
    text-align:center;font-size:12.5px;outline:none;font-family:var(--font);background:var(--surface,#fff);color:var(--t1,#1F2329)}
  .yz-pager input.jump:focus{border-color:var(--primary,#2563EB);box-shadow:0 0 0 3px var(--primary-light,#EFF4FF)}
  .yz-pager.compact .yz-pg-info,.yz-pager.compact .yz-pg-sep:first-of-type{display:none}
.perm-note{font-size:11.5px;color:var(--t3);margin-left:2px}
.ed-f{display:flex;flex-direction:column;gap:5px}
.ed-f>label{font-size:11.5px;color:var(--t2);font-weight:600}
.ed-f input,.ed-f select,.ed-f textarea{height:32px;border:1px solid var(--border-strong);border-radius:6px;padding:0 10px;
  font-size:13px;font-family:var(--font);outline:none;color:var(--t1);box-sizing:border-box;width:100%}
.ed-f textarea{height:64px;padding:8px 10px;resize:vertical;line-height:1.5}
.ed-f input:focus,.ed-f select:focus,.ed-f textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.ed-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
/* 账号弹窗「直接添加」表单（2026-09-15）：账号类型一格 = 勾选框 / 固定只读文本。
   ⚠️ `.ed-f input` 给所有输入框套了 32px 高 + 边框 + padding，checkbox 必须按下面这条覆盖回去
   （特异性 .ed-f .pa-chk input 高于 .ed-f input）。 */
.pa-chk{display:flex;align-items:center;gap:7px;height:32px;font-size:13px;color:var(--t1);cursor:pointer;user-select:none}
.ed-f .pa-chk input{width:15px;height:15px;padding:0;border:0;flex:0 0 auto;cursor:pointer;accent-color:var(--primary)}
.pa-fixed{display:flex;align-items:center;gap:6px;height:32px;font-size:13px;color:var(--t1);min-width:0}
.pa-fixed .perm-note{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ed-full{grid-column:span 2}
.rt-chk-list{display:flex;flex-wrap:wrap;gap:8px 14px;max-height:168px;overflow:auto;padding:10px;border:1px solid var(--border-strong);border-radius:8px;background:#fff}
.rt-chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--t1);cursor:pointer;user-select:none}
.rt-chk input{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}
/* 价格计划判重（2026-09-15）：勾选项旁标「已有 / 已存在」，以及表单底部汇总条。
   标注不换行也不撑破行（.rt-chk 是 inline-flex，用 max-width 兜底超长房型名）。 */
.rt-chk-dup{font-style:normal;font-size:11.5px;color:var(--t3);background:var(--bg);border:1px solid var(--border-strong);border-radius:4px;padding:1px 6px;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-chk-dup:empty{display:none}
.rt-chk-dup.on{color:#B54708;background:#FFFAEB;border-color:#FEDF89}
.pl-dup-hint{display:none;margin-top:12px;padding:8px 12px;border-radius:8px;font-size:12.5px;line-height:1.6}
.pl-dup-hint:not(:empty){display:block;background:var(--primary-lighter);color:var(--t2);border:1px solid var(--border-strong)}
.pl-dup-hint.warn{background:#FFFAEB;color:#B54708;border-color:#FEDF89}
.pl-dup-hint.bad{background:#FEF3F2;color:#B42318;border-color:#FECDCA}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.cancel-box{display:flex;flex-direction:column;gap:10px;padding:10px;border:1px solid var(--border-strong);border-radius:8px;background:#fff}
.cancel-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font-size:13px;color:var(--t1)}
.cancel-row input[type="number"]{width:64px;height:28px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;font-size:13px;outline:none}
.cancel-row input[type="number"]:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.cancel-row .hint{color:var(--t3);font-size:12px;background:var(--bg);padding:3px 8px;border-radius:4px}
.cancel-row#plCancelHint{width:100%;background:var(--primary-lighter);padding:6px 10px;border-radius:6px;margin-top:-2px}
.yz-radio{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--t1);cursor:pointer;user-select:none}
.yz-radio input{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}

/* ============ 管理侧 · 房态价格日历（价格计划 Tab）—— 复用 hotel.html 房态价格矩阵样式 ============ */
/* ---- 通用组件：卡片头 / 按钮 / 分段 / 提示 / 开关 / 表单（从 hotel.css 同步） ---- */
.card-h{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border);gap:10px;flex-wrap:wrap}
.card-h h3{font-size:15px;font-weight:600}
.card-h .right{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{height:32px;padding:0 14px;border-radius:6px;border:1px solid var(--border-strong);background:#fff;color:var(--t1);font-size:13px;cursor:pointer;font-family:var(--font);font-weight:500}
.btn:hover{border-color:var(--primary);color:var(--primary)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}
.btn.sm{height:28px;padding:0 12px;font-size:12.5px}
/* 按钮补充变体：价格计划管理列表一行要塞「编辑 / 停售 / 删除」，必须比 sm 再紧凑一档 */
.btn.xs{height:24px;padding:0 9px;font-size:12px;border-radius:5px}
.btn.danger{color:#B42318;border-color:#FECDCA;background:#fff}
.btn.danger:hover{border-color:#B42318;color:#B42318;background:#FEF3F2}
.btn.warn{color:#B54708;border-color:#FEDF89;background:#fff}
.btn.warn:hover{border-color:#B54708;color:#B54708;background:#FFFAEB}
/* ---- 价格计划管理列表（从日历房型列的「编辑」进入）----
   2026-09-15 用户定位：「这个编辑主要是编辑价格计划，可以删除价格计划，和停售价格计划」。
   一行一个计划：名称 + 来源标签 / 早餐 / 取消规则 / 默认售价 / 状态 / 操作（编辑 · 停售|启用 · 删除）。 */
.plan-tb{width:100%;border-collapse:collapse;font-size:13px}
.plan-tb th,.plan-tb td{border-bottom:1px solid var(--border);padding:11px 12px;vertical-align:middle}
.plan-tb th{background:#F7F9FC;color:var(--t2);font-weight:500;font-size:12.5px;text-align:center;white-space:nowrap}
.plan-tb tbody tr:last-child td{border-bottom:0}
.plan-tb tbody tr:hover{background:var(--primary-lighter)}
.plan-tb tr.off{background:#FAFBFC}
/* 已停售的行整行划掉：一眼看出「这个计划不再卖」，但不整体降透明度（否则操作按钮也像禁用） */
.plan-tb tr.off .pl-nm b,.plan-tb tr.off .pl-meal,.plan-tb tr.off .pl-price,.plan-tb tr.off .pl-cancel{
  color:#767C85;text-decoration:line-through;text-decoration-thickness:1px}
.plan-tb .pl-nm b{font-size:13.5px;color:var(--t1)}
.plan-tb .pl-tag{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:600;vertical-align:1px}
.plan-tb .pl-tag.self{background:#EAF1FF;color:#2563EB}
.plan-tb .pl-tag.ly{background:#FEF3F2;color:#B42318}
.plan-tb .pl-meal,.plan-tb .pl-price{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}
.plan-tb .pl-price{font-weight:700;color:var(--t1)}
.plan-tb .pl-none{color:var(--t3);font-weight:400}
.plan-tb .pl-cancel{color:var(--t2);font-size:12.5px}
.plan-tb .pl-st{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap}
.plan-tb .pl-st.on{background:#ECFDF3;color:#027A48}
.plan-tb .pl-st.off{background:#F1F3F5;color:var(--t2)}
.plan-tb .pl-ops{text-align:right;white-space:nowrap}
.plan-tb .pl-ops .btn+.btn{margin-left:6px}
.plan-tb .pl-empty{color:var(--t3);text-align:center;padding:26px 12px;line-height:1.7}
.plan-tip{color:var(--t3);font-size:12px;line-height:1.8;margin-top:14px;border-top:1px dashed var(--border);padding-top:12px}
/* ===== 房价方案弹窗（2026-09-15 「admin 编辑按 hotel.html 来」）：计划行内联编辑，样式与酒店端 hotel.css 同款 ===== */
.rp-edit{display:block;border:1px solid var(--border);border-radius:8px;padding:11px 12px;margin-bottom:10px;background:#FCFCFD}
.rp-edit .r1{display:flex;gap:8px;align-items:center}
.rp-edit .r2{display:flex;gap:7px;align-items:center;margin-top:11px;flex-wrap:wrap;row-gap:8px;font-size:12.5px;color:var(--t2)}
.rp-edit .r2 select,.rp-edit .r2 input{padding:0 8px;height:32px;border:1px solid var(--border-strong,#D5DAE1);border-radius:6px;font-size:13px;font-family:var(--font);outline:none;color:var(--t1);background:#fff}
.rp-edit .r2 select:focus,.rp-edit .r2 input:focus{border-color:var(--primary)}
.rp-edit .r2 .cfg-item{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.rp-edit .r2 .rp-c-days,.rp-edit .r2 .rp-c-hour{width:56px}
.rp-edit .r2 .pc-penval-wrap{display:inline-flex;align-items:center;gap:5px}
.rp-edit .r2 .rp-c-penval{width:76px}
.rp-edit .pc-hidden{display:none !important}
.rp-edit .rpm-meal{min-width:110px}
.rp-edit .rp-name{flex:1 1 auto;min-width:0;font-size:15px;font-weight:700;color:var(--t1);line-height:32px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:2px}
.rp-edit .rp-on{display:inline-flex;align-items:center;cursor:pointer;padding:0 4px}
.rp-edit .rp-del{color:var(--t3);cursor:pointer;font-size:15px;padding:0 5px;line-height:1}
.rp-edit .rp-del:hover{color:var(--error)}
.rp-empty{font-size:12px;color:var(--t3);padding:6px 0}
.rp-edit .pl-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:5px;font-size:11px;font-weight:600;vertical-align:1px}
.rp-edit .pl-tag.self{background:#EAF1FF;color:#2563EB}
.rp-edit .pl-tag.ly{background:#FEF3F2;color:#B42318}
.rp-edit .pl-st{display:inline-block;margin-left:6px;padding:1px 9px;border-radius:20px;font-size:11px;font-weight:600;vertical-align:1px}
.rp-edit .pl-st.on{background:#ECFDF3;color:#027A48}
.rp-edit .pl-st.off{background:#F1F3F5;color:var(--t2)}
.rp-edit.off .rp-name{color:#767C85;text-decoration:line-through;text-decoration-thickness:1px}
.rp-add{font-size:12px;color:var(--primary);cursor:pointer;font-weight:500;margin-top:8px;display:inline-flex;align-items:center;gap:4px}
.plan-tip b{color:var(--t2)}
.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:7px;overflow:hidden;vertical-align:middle}
.seg button{border:0;background:#fff;padding:5px 13px;font-size:12.5px;cursor:pointer;font-family:var(--font);color:var(--t2);transition:.15s}
.seg button+button{border-left:1px solid var(--border)}
.seg button:hover{background:var(--primary-light)}
.seg button.on{background:var(--primary);color:#fff}
/* 日历窗口自定义区间（2026-09-15 与商家端同批）：两个日期框与 .seg 快捷档同行同高，
   点击弹出项目共享 DatePicker（dp-input 自动挂载），不是原生 date input。 */
.cal-range{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;margin-left:2px}
.cal-dp{width:120px;padding:5px 8px;font-size:12.5px;line-height:1.4;font-family:var(--font);color:var(--t2);
  text-align:center;background:#fff;border:1px solid var(--border-strong);border-radius:7px;cursor:pointer;
  font-variant-numeric:tabular-nums}
.cal-dp:hover{border-color:var(--primary)}
.cal-dp:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.cal-dp-sep{font-size:12.5px;color:var(--t3)}
.seg.sm button{padding:4px 10px;font-size:12px}
.seg.sm{vertical-align:middle}
.cal-note{font-size:12px;color:var(--t3);background:#F7F8F9;border:1px solid var(--border);border-radius:6px;padding:6px 11px;white-space:nowrap;cursor:help;display:inline-flex;align-items:center;gap:5px}
.cal-note.act{cursor:pointer;color:var(--primary);background:var(--primary-light);border-color:#BFD5FB}
.cal-note.act:hover{border-color:var(--primary)}
.cal-note.act svg{stroke:var(--primary);width:13px;height:13px;vertical-align:-2px;flex-shrink:0}
.toggle{width:38px;height:21px;border-radius:11px;background:var(--success);position:relative;cursor:pointer;transition:.2s;display:inline-block}
.toggle.off{background:#CFD4DB}
.toggle::after{content:"";position:absolute;width:17px;height:17px;border-radius:50%;background:#fff;top:2px;right:2px;transition:.2s}
.toggle.off::after{right:19px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px}
.field label{display:block;color:var(--t2);font-size:12.5px;margin-bottom:6px}
.field input,.field select{width:100%;height:36px;border:1px solid var(--border-strong);border-radius:6px;padding:0 12px;font-size:13px;font-family:var(--font);outline:none;background:#fff}
.field input:focus,.field select:focus{border-color:var(--primary)}
.field input:disabled,.field select:disabled{background:#F5F6F8;color:var(--t2);cursor:not-allowed}
.wh-row{display:block;padding:13px 14px;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;background:#fff}
.wh-row .wh-hd{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.wh-row .wh-hd b{font-size:13.5px;color:var(--t1);white-space:nowrap;margin-right:auto}
.wh-row .wh-hd .toggle,.wh-row .wh-hd .seg{flex:0 0 auto}
.wh-row input{width:96px;height:34px;border:1px solid var(--border-strong);border-radius:6px;padding:0 10px;font-size:13px;text-align:right;font-variant-numeric:tabular-nums;outline:none}
.wh-row input:focus{border-color:var(--primary)}
.wh-row input:disabled{background:#F5F6F8;color:var(--t3)}
.wh-row .wh-unit{font-size:12px;color:var(--t3);white-space:nowrap}
.wh-row .wh-sub{font-size:12px;color:var(--t3);margin-top:8px;line-height:1.6}

/* ---- 矩阵表格 ---- */
.matrix-wrap{overflow:auto;max-height:calc(100vh - 250px);border:1px solid var(--border);border-radius:8px;background:#fff}
.matrix{border-collapse:collapse;font-size:13.5px;min-width:100%}
.matrix th,.matrix td{border:1px solid var(--border);padding:14px 12px;text-align:center;min-width:148px;vertical-align:middle}
.matrix th:first-child{left:0;z-index:3}
.matrix th{background:#F7F9FC;color:var(--t2);font-weight:500;position:sticky;top:0;z-index:3}
.matrix td.rn{text-align:left;background:#F7F9FC;position:sticky;left:0;z-index:2;min-width:184px;padding:16px 18px}
.matrix td.rn .rn-name{display:block;font-size:16px;font-weight:700;color:var(--t1);line-height:1.35}
.matrix td.rn .rn-sub{font-size:12.5px;color:var(--t3);font-weight:400;margin-top:6px;line-height:1.4}
/* 房型列「编辑」入口（2026-09-15 用户：「增加编辑功能」）。
   `.rn-head` 只是把「房型名 + 编辑」摆成一行：房型名吃掉剩余宽度、编辑链接固定不缩，
   房型名太长时照旧换行（不让它溢出去挤日历第一列日期），编辑链接留在首行右侧。
   ⚠️ 只有运营端价格计划日历会渲染 `.rn-head`（酒店端房型列不生成这个容器）→ 本规则**不用**同步到 hotel.css。 */
.matrix td.rn .rn-head{display:flex;align-items:baseline;gap:8px}
.matrix td.rn .rn-head .rn-name{flex:1 1 auto;min-width:0}
.matrix td.rn .rn-edit{flex:0 0 auto;font-size:12px;font-weight:500;color:var(--primary);cursor:pointer;white-space:nowrap}
.matrix td.rn .rn-edit:hover{text-decoration:underline}
.cell{cursor:pointer;border-radius:9px;padding:10px 8px;transition:.12s;position:relative;z-index:1}
.cell:hover{background:var(--primary-light)}
.cell .q{font-size:13px;color:var(--t3);margin-top:8px;padding-top:7px;border-top:1px solid rgba(0,0,0,.09);font-variant-numeric:tabular-nums}
.cell.low .q{color:#B45309;font-weight:800;font-size:13.5px}
.cell.sold .q{color:#B91C1C;font-weight:800;font-size:13.5px}
.matrix td.ok{background:#fff}
.matrix td.we{background:#FFF7ED}
.matrix td.hol{background:#FEF2F2}
.matrix td.low{background:#FFF1D6}
.matrix td.sold{background:#FFDFDB}
.matrix td.closed{background:repeating-linear-gradient(45deg,#F4F6F8,#F4F6F8 7px,#E7EAEE 7px,#E7EAEE 14px)}
.matrix td.roomoff{background:repeating-linear-gradient(45deg,#EFF1F4,#EFF1F4 7px,#DFE3E8 7px,#DFE3E8 14px)}
.cell.closed .rp-p,.cell.closed .rp-p.hi,.cell.roomoff .rp-p,.cell.roomoff .rp-p.hi{color:var(--t2)}
.cell.closed .meal,.cell.closed .meal.yes,.cell.closed .meal.no,
.cell.roomoff .meal,.cell.roomoff .meal.yes,.cell.roomoff .meal.no{background:#E6E9ED;color:var(--t2)}
.cell.closed .q,.cell.roomoff .q{color:#374151;font-weight:800;font-size:13.5px}
.matrix th{padding:13px 10px}
.matrix th .hd-date{font-size:15px;font-weight:700;color:var(--t1);font-variant-numeric:tabular-nums;white-space:nowrap}
.matrix th .hd-sub{font-size:12.5px;font-weight:400;margin-top:4px;color:var(--t3);white-space:nowrap}
.matrix th.we{background:#FFF3E4}
.matrix th.we .hd-date,.matrix th.we .hd-sub{color:#EA580C}
.matrix th.hol{background:#FEE9E7}
.matrix th.hol .hd-date{color:#DC2626}
/* 价格列小表头：把单元格里的两个数字标出来（2026-09-15 用户：「我想加个表头，一个是底价，一个是卖价」）。
   ⚠️ 对齐原理：表格里每个价格行是 [底价 数字][.rp-mk 售价]，.rp-mk 是**固定宽度 + 右对齐**的盒子，
   所以「售价数字」的右边缘 = 单元格内容右边缘，「底价数字」的右边缘 = 内容右边缘 − 44 − 5。
   表头用同一套宽度：.hd-mk-s{width:44px;margin-left:5px} 与 .rp-mk 完全对应，
   两个宽度**必须一起改**；th 的 padding-right 还必须等于「td 的 12px + .cell 的 8px = 20px」——
   `.hd-price-th` 就是干这个的：价格数字的右边缘 = td 右边 − td 内边距(12) − .cell 内边距(8)，
   表头标签要和它对齐就得用同样的 20px（写成 8px 会整体右移 12px，实测过）。
   改完跑 verify/admin-calendar-head-price-labels.js 逐列量像素。 */
.matrix th.hd-price-th{padding-right:20px}
.matrix th .hd-mk{display:flex;justify-content:flex-end;margin-top:5px;font-size:11.5px;font-weight:600;line-height:1.4;white-space:nowrap}
.matrix th .hd-mk-b{color:var(--t2)}
.matrix th .hd-mk-s{display:inline-block;width:44px;margin-left:5px;text-align:right;color:#0369A1}
.matrix th.we .hd-mk-b,.matrix th.hol .hd-mk-b{color:inherit}
.hd-hol{display:inline-block;background:#DC2626;color:#fff;border-radius:5px;padding:2px 7px;font-size:11.5px;margin-top:4px;font-weight:600;white-space:nowrap}
.cell .rp-list{display:flex;flex-direction:column;gap:0}
.cell .rp-row{display:flex;align-items:center;gap:8px}
.cell .rp-list .rp-row+.rp-row{margin-top:5px;padding-top:5px;border-top:1px dashed rgba(0,0,0,.16)}
.cell.closed .rp-list .rp-row+.rp-row,.cell.roomoff .rp-list .rp-row+.rp-row{border-top-color:rgba(0,0,0,.10)}
.cell .rp-nm{flex:0 0 auto;white-space:nowrap}
.cell .meal{display:inline-block;padding:2px 7px;border-radius:6px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap}
.cell .meal.no{background:#F1F3F5;color:var(--t2)}
.cell .meal.yes{background:#EAF1FF;color:#2563EB}
.cell .rp-p{margin-left:auto;flex:0 0 auto;font-size:16px;font-weight:800;color:var(--t1);white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:-.3px;text-align:right}
.cell .rp-p.hi{color:#DC2626}
.cell .rp-p .cur{font-size:11px;font-weight:700;opacity:.55;margin-right:1px}
/* 加价后价 = 底价 + 基础加价（酒店级加价率，不含渠道加价）
   2026-09-14 用户要求「把加价后的价格放到底价后面」→ 由**底价下方另起一行**改为**紧跟底价同行**（inline）。
   仍固定小号青蓝色（12px），不随「字号：大/特大」的 .rp-p 缩放（否则会撑宽日期列）。
   ⚠️ 别再改回 display:block —— 那就是「换行」的老样子。
   2026-09-15 起改为 `inline-block` + **固定宽度右对齐**（44px）：这样「售价」的右边缘在所有行 / 所有日期列
   都落在同一条竖线上，「底价」的右边缘也随之固定 —— 表头那对小标签才可能和数字对齐（见上「价格列小表头」）。
   宽度取 44px 是为了容下 4 位数（¥1299 ≈ 34px）；若以后出现 5 位数价格，44px 与 .hd-mk-s 一起放大。 */
.cell .rp-p .rp-mk{display:inline-block;width:44px;text-align:right;margin-left:5px;font-size:12px;font-weight:700;color:#0369A1;letter-spacing:0;font-variant-numeric:tabular-nums;white-space:nowrap;vertical-align:baseline}
.cell.closed .rp-mk,.cell.roomoff .rp-mk{color:var(--t2)}
.cell .rp-row.off{opacity:.5}
.cell .rp-stop{margin-left:auto;flex:0 0 auto;font-size:12px;font-weight:700;color:var(--warning);white-space:nowrap}
.cell .rp-stop.today{color:var(--primary)}
.cell .st-badge{position:absolute;top:6px;right:6px;z-index:3;font-size:11px;font-weight:800;line-height:1;
  padding:4px 7px;border-radius:6px;color:#fff;white-space:nowrap;pointer-events:none;letter-spacing:.3px;
  box-shadow:0 1px 3px rgba(15,27,61,.22)}
.cell.sold .st-badge{background:#DC2626}
.cell.low .st-badge{background:#D97706}
.cell.closed .st-badge{background:#4B5563}
.cell.roomoff .st-badge{background:#1F2937}
/* ⚠️ 徽章不能压住第一行价格（2026-09-14 用户反馈「挡住了价格」，与 hotel.css 同款问题）：
   徽章常驻 .cell 右上角（top:6px/right:6px，约 37×19px），而 .cell 上内边距只有 10px
   → 徽章正好盖在第一个价格计划的「¥价格」上。
   修法：**该行只要有任一日期带徽章，整行单元格**把上内边距撑到 30px，给徽章留出「状态位」。
   为什么按行而不是按格：同一行 = 同一房型跨日期，价格需横向对齐才能比对；
   若只给带徽章的格子加内边距，那个日期的价格会整体下移，与同行其它日期错位。 */
.matrix tr.st-row .cell{padding-top:30px}
/* 房态改价弹窗：每个价格计划拆成「底价 / 加价后价」两个输入框并排（2026-09-15 用户要求），
   中间用 → 表示「底价 → 加价后价」的换算方向；两框双向联动，一律整数（见 poolCalPriceSync）。 */
.cal-pr-row{display:flex;align-items:flex-start;gap:8px;margin-top:6px}
.cal-pr-col{flex:1 1 0;min-width:0}
.cal-pr-lb{font-size:12px;color:var(--t3);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-pr-arrow{flex:0 0 auto;font-size:13px;color:var(--t3);padding-top:23px;line-height:1}
.cell.sold{box-shadow:inset 0 0 0 1.5px #F0938B}
.cell.closed{box-shadow:inset 0 0 0 1.5px #C3CAD2}
.cell.roomoff{box-shadow:inset 0 0 0 1.5px #AEB6C0}
.cell.sold:hover{background:#FFE7E3}
.cell.low:hover{background:#FFF6DE}
.cell.closed:hover,.cell.roomoff:hover{background:#E9ECF0}
.matrix td.min{border-left:2px solid var(--border-strong)}
.rn-off{display:inline-block;font-size:11px;font-weight:800;color:#fff;background:#1F2937;border-radius:4px;padding:2px 6px;vertical-align:middle;margin-left:6px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--t2);margin-bottom:12px}
.legend i{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:5px;vertical-align:middle}
.apcal-empty{text-align:center;color:var(--t3);padding:40px 20px}
/* 字号切换（适老化） */
#matrix.fs-lg{min-width:178px}
#matrix.fs-lg .cell{padding:13px 9px}
#matrix.fs-lg .cell .rp-p{font-size:19px}
#matrix.fs-lg .cell .meal{font-size:13.5px;padding:3px 9px}
#matrix.fs-lg .cell .q{font-size:15px}
#matrix.fs-lg th .hd-date{font-size:17px}
#matrix.fs-lg th .hd-sub{font-size:14px}
#matrix.fs-lg td.rn{font-size:17px}
#matrix.fs-lg td.rn .rn-name{font-size:18px}
#matrix.fs-lg td.rn .rn-sub{font-size:14px}
#matrix.fs-lg th,#matrix.fs-lg td{padding:16px 14px}
#matrix.fs-xl{min-width:206px}
#matrix.fs-xl .cell{padding:15px 10px}
#matrix.fs-xl .cell .rp-p{font-size:22px}
#matrix.fs-xl .cell .meal{font-size:15px;padding:4px 10px}
#matrix.fs-xl .cell .q{font-size:16px}
#matrix.fs-xl th .hd-date{font-size:18px}
#matrix.fs-xl th .hd-sub{font-size:15px}
#matrix.fs-xl td.rn{font-size:18px}
#matrix.fs-xl td.rn .rn-name{font-size:20px}
#matrix.fs-xl td.rn .rn-sub{font-size:15px}
#matrix.fs-xl th,#matrix.fs-xl td{padding:18px 16px}

  /* ============ 侧栏折叠（三端统一 · v1） ============
     折叠态只留图标（宽 60px），文字靠 font-size:0 隐藏——因为菜单文字是裸文本节点，
     纯 CSS 选不中，用 font-size 收掉最稳（图标是显式 width/height 的 SVG，不受影响）。
     角标隐藏后用右上角小圆点保留「有未读/有数量」这一信息，避免折叠把信息吞掉。 */
  .sidebar{transition:width .18s ease}
  .logo,.nav-item,.nav-group,.side-foot{transition:padding .18s ease,font-size .18s ease,background .15s,color .15s}
  .side-toggle{display:flex;align-items:center;justify-content:center;width:30px;height:30px;
    border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--t2);
    cursor:pointer;flex-shrink:0;padding:0;transition:.15s}
  .side-toggle:hover{border-color:var(--primary);color:var(--primary)}
  .side-toggle svg{width:16px;height:16px;stroke:currentColor;transition:transform .18s ease}
  .layout.side-collapsed .side-toggle svg{transform:rotate(180deg)}
  .layout.side-collapsed .sidebar{width:60px}
  .layout.side-collapsed .logo{justify-content:center;gap:0;padding:18px 0;font-size:0}
  .layout.side-collapsed .logo .mark{flex-shrink:0}
  .layout.side-collapsed .nav{padding:12px 8px;overflow-x:hidden}
  .layout.side-collapsed .nav-item{position:relative;justify-content:center;gap:0;padding:9px 0;font-size:0}
  .layout.side-collapsed .nav-item svg{flex-shrink:0}
  .layout.side-collapsed .nav-badge{display:none}
  .layout.side-collapsed .nav-item.has-dot::after{content:'';position:absolute;top:8px;right:11px;
    width:6px;height:6px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 2px var(--sidebar)}
  .layout.side-collapsed .nav-group{font-size:0;height:1px;padding:0;margin:14px 8px;background:rgba(255,255,255,.10)}
  /* 图标态（侧栏整体折叠）：分组标题变分隔线，箭头/圆点无意义 → 隐藏；
     分组折叠在图标态没有出口，**强制全部展开**，否则点过分组的图标会被藏起来找不回 */
  .layout.side-collapsed .nav-caret,
  .layout.side-collapsed .nav-sec-dot{display:none}
  .layout.side-collapsed .nav-sec.collapsed .nav-sec-body{display:block}
  .layout.side-collapsed .side-foot{display:none}
  @media(max-width:900px){.side-toggle{display:none}}

  /* ============ 多标签工作区（浏览器式 Tab 条） ============
     内容区从「单视图」升级为「多标签」：同视图只开一个实例（避免同页面两份状态互相打架），
     不同页面可并存、快速来回切。类名用 vtab* 前缀——.tabs/.tab 已被页内分段控件占用。
     视觉要点：① 激活页背景 = 内容区背景（--bg），看起来是内容区「长出来」的一页；
     ② 底部分隔线画在 .vtabs 的 inset 阴影上——子元素背景能盖住父级 inset 阴影，
        于是「线在激活页处自然断开」。⚠️ 别改回 border-bottom + 让标签溢出盖线：
        .vtabs-scroll 有 overflow，溢出的那 1px 会被裁掉，盖不住（踩过）；
     ③ 顶部 2px 主色条 + 主色文字指示当前页；相邻非激活页之间用 1px 竖线分隔。 */
  .vtabs{position:sticky;top:56px;z-index:9;display:flex;align-items:flex-end;gap:10px;
    background:#EAEDF2;padding:6px 12px 0;box-shadow:inset 0 -1px 0 var(--border-strong)}
  .vtabs-scroll{flex:1;display:flex;align-items:flex-end;gap:0;height:36px;
    overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
  .vtabs-scroll::-webkit-scrollbar{height:0}
  .vtab{position:relative;display:inline-flex;align-items:center;gap:7px;height:36px;
    padding:0 10px 0 14px;border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;
    background:transparent;color:var(--t2);font-size:13px;cursor:pointer;white-space:nowrap;
    flex-shrink:0;user-select:none;font-family:var(--font);transition:background .15s,color .15s}
  .vtab::before{content:'';position:absolute;left:0;top:11px;bottom:11px;width:1px;background:var(--border-strong)}
  .vtab:first-child::before,.vtab.active::before,.vtab.active+.vtab::before{display:none}
  .vtab:hover{background:rgba(255,255,255,.55);color:var(--t1)}
  .vtab.active{background:var(--bg);border-color:var(--border);color:var(--primary);font-weight:600;
    box-shadow:inset 0 2px 0 var(--primary),0 -1px 3px rgba(16,24,40,.05)}
  .vtab-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
    border-radius:50%;font-size:13px;line-height:1;font-style:normal;color:var(--t3);transition:.15s}
  .vtab-x:hover{background:var(--error);color:#fff}
  .vtab-lock{padding-right:14px}
  /* 「关闭其他 / 全部关闭」改为右键 tab 头部弹出菜单（原标签栏右侧固定按钮已移除） */
  .vtab-menu{position:fixed;z-index:9999;min-width:132px;background:#fff;border:1px solid var(--border);
    border-radius:8px;box-shadow:0 8px 24px rgba(16,24,40,.16);padding:4px;display:none}
  .vtab-menu.show{display:block}
  .vtab-menu button{display:block;width:100%;height:30px;padding:0 10px;border:0;background:transparent;
    color:var(--t1);border-radius:6px;font-size:13px;cursor:pointer;text-align:left;font-family:var(--font);
    white-space:nowrap}
  .vtab-menu button:hover{background:var(--bg);color:var(--primary)}
/* ===== 导入酒店弹窗（按同程 ID 抓同程官网基础信息） =====
   ⚠️ 颜色一律走 var(--x) —— 四端主题变量不齐（miniprogram 缺 --border-strong），
   需要新变量时先 grep 是否已定义，别写死。 */
.imp-f{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.imp-f label{font-size:12px;color:var(--t2);font-weight:600}
.imp-f textarea{width:100%;min-height:78px;padding:10px 12px;border:1px solid var(--border);
  border-radius:8px;font:inherit;font-size:13px;color:var(--t1);resize:vertical;box-sizing:border-box}
.imp-f textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.imp-note{font-size:12px;color:var(--t3);margin-top:8px;line-height:1.7}
.imp-sum{font-size:12px;color:var(--t1);background:var(--primary-light);border-radius:8px;
  padding:9px 12px;margin:14px 0 4px;line-height:1.7}
.imp-item{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px dashed var(--border)}
.imp-item:last-child{border-bottom:0}
.imp-st{flex:0 0 20px;text-align:center;font-weight:700;font-size:13px}
.imp-st.ok{color:var(--success)} .imp-st.bad{color:var(--error)} .imp-st.wait{color:var(--t3)}
.imp-st.dup{color:#B26A00}
/* —— 渠道管理（view-channels · K 域）—— */
.ch-pol{display:flex;flex-wrap:wrap;gap:4px}
.ch-pol span{background:var(--info-bg);color:var(--info);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600;white-space:nowrap}
.ch-pol span.warn{background:var(--warning-bg);color:#B26A00}
.ch-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:1px}
.ch-dot.on{background:var(--success)} .ch-dot.off{background:var(--t3)}
.ch-dot.warn{background:var(--warning)} .ch-dot.bad{background:var(--error)}
.ch-miss{color:var(--error);font-weight:600} .ch-ok{color:var(--success);font-weight:600}
.ch-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.ch-msg{max-height:340px;overflow:auto;background:#0F1B3D;color:#D6E4FF;border-radius:8px;padding:12px;
  font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.65;white-space:pre-wrap;word-break:break-all}
.ch-kv{display:grid;grid-template-columns:104px 1fr;gap:7px 10px;font-size:12.5px;color:var(--t1);line-height:1.6}
.ch-kv .k{color:var(--t3)}
.ch-sec{font-size:12px;font-weight:700;color:var(--t2);margin:16px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--border)}
.ch-inp{height:30px;border:1px solid var(--border);border-radius:6px;padding:0 9px;font-size:13px;color:var(--t1);background:#fff}
.ch-inp:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
/* 顶栏里的裸 .dp-input（操作日志 / 告警中心的时间起止）：.dp-input 只给日历图标和指针，
   没有壳（边框/高度/圆角）——日历页靠 .cal-dp 补壳，这里对齐 .ch-inp 规格。
   只改 background-color 不动 background 简写，否则会把 .dp-input 的日历图标背景冲掉。 */
.hc-bar .dp-input{height:30px;border:1px solid var(--border);border-radius:6px;padding:0 32px 0 9px;font-size:13px;color:var(--t1);background-color:#fff;text-align:center;font-variant-numeric:tabular-nums}
.hc-bar .dp-input:hover{border-color:var(--primary)}
.ch-note{font-size:12px;color:var(--t3);line-height:1.7;margin-top:8px}
.imp-main{min-width:0;flex:1}
.imp-nm{font-weight:600;color:var(--t1);font-size:13px;line-height:1.6}
.imp-msg{font-size:12px;color:var(--t3);line-height:1.7;margin-top:2px;word-break:break-all}


/* ===== 头像下拉菜单：修改密码 / 退出登录 ===== */
.avatar-wrap{position:relative;display:inline-flex}
.avatar-menu{position:absolute;top:42px;right:0;background:#fff;border:1px solid #E5E7EB;border-radius:10px;box-shadow:0 12px 32px rgba(15,27,61,.14);min-width:140px;padding:6px;display:none;z-index:80}
.avatar-menu.open{display:block}
.avatar-menu-user{padding:8px 12px;font-size:12px;color:var(--t3);border-bottom:1px solid #F2F4F7;margin-bottom:4px;white-space:nowrap}
.avatar-menu-item{padding:8px 12px;border-radius:8px;font-size:13px;color:var(--t2);cursor:pointer;white-space:nowrap}
.avatar-menu-item:hover{background:#F2F4F7}
.avatar-menu-item.danger{color:#DC2626}
.avatar-menu-item.danger:hover{background:#FEF2F2}

/* ===== 表格行操作下拉菜单（可容纳大量操作项） ===== */
.dropdown{display:inline-block;position:relative;vertical-align:middle}
.dropdown .act-btn{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border-radius:6px;border:1px solid var(--border-strong);background:#fff;font-size:13px;color:var(--primary);cursor:pointer;white-space:nowrap}
.dropdown .act-btn:hover{background:var(--primary-light);border-color:var(--primary)}
.dropdown-menu{position:absolute;top:calc(100% + 4px);right:0;background:#fff;border:1px solid var(--border-strong);border-radius:8px;box-shadow:0 10px 24px rgba(15,27,61,.12);min-width:150px;display:none;z-index:30;overflow:hidden}
.dropdown-menu.open{display:block}
.dropdown-item{padding:0;font-size:13px;color:var(--t1);white-space:nowrap;border-bottom:1px solid var(--border)}
.dropdown-item:last-child{border-bottom:none}
.dropdown-item .link{display:block;padding:8px 12px;color:var(--t1)!important}
.dropdown-item .link:hover{background:var(--bg)}
.dropdown-item .link.danger{color:var(--error)!important}
.act-hints{margin-top:6px;font-size:12px;color:var(--t3)}

/* ===== 日历格子编辑弹窗 ===== */
.cell-edit{min-width:420px;max-width:540px}
.cell-edit .ce-hd{padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid var(--border)}
.cell-edit .ce-date{font-size:16px;font-weight:700;color:var(--t1)}
.cell-edit .ce-room{font-size:13px;color:var(--t2);margin-top:4px}
.cell-edit .ce-sect{margin-top:18px}
.cell-edit .ce-sect-title{font-size:13px;font-weight:700;color:var(--t1);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.cell-edit .ce-sect-title::before{content:'';width:4px;height:14px;background:var(--primary);border-radius:2px}
.cell-edit .ce-plan{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:10px}
.cell-edit .ce-plan-name{font-weight:600;font-size:13px;color:var(--t1);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.cell-edit .ce-plan-name .meal{font-size:11px;padding:1px 5px;border-radius:4px;background:var(--primary-light);color:var(--primary);font-weight:600}
.cell-edit .field.row{display:flex;align-items:center;gap:10px;padding-top:18px}
.cell-edit .field.row label{margin-bottom:0;white-space:nowrap}
.cell-edit .field.row .toggle{margin-left:auto}

/* ===== 批量调价弹窗：逐「房型 × 价格计划」设置行（bc-*） =====
   原先是裸 <select>/<input>，走浏览器默认皮肤（粗边框、控件不同高、表头不对齐），
   这里统一成平台控件：调整方式用 .seg 分段按钮、数值用带单位的输入框。
   2026-09-14：一个房型有多个价格计划（含早 / 不含早等），各计划底价不同 →
   改为「房型分组 + 每计划一行」，组头可一键统一本房型全部计划。 */
.bc-table{margin-top:8px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff}
.bc-head,.bc-row,.bc-ghd{display:flex;align-items:center;gap:10px;padding:9px 12px}
.bc-head{background:#F7F8FA;border-bottom:1px solid var(--border);font-size:12px;color:var(--t2);font-weight:600;position:relative;z-index:3}
.bc-head .bc-c-rt{flex:1;min-width:0}
/* 表头两列与行内两个数值框严格同宽（150px），中间箭头列也同宽，保证表头与输入框竖向对齐 */
.bc-head .bc-c-val{flex:0 0 150px;display:flex;align-items:center;justify-content:center;gap:3px;white-space:nowrap}
.bc-c-mkr{font-style:normal;font-size:11px;font-weight:600;color:#0369A1}
/* 调整方式：弹窗顶部**全局**分段按钮（所有房型 / 价格计划统一），与 .field select 等高同宽 */
.bc-mode{display:flex;width:100%;height:36px;align-items:stretch;border-radius:6px}
.bc-mode button{flex:1;padding:0;font-size:13px}
.bc-body{max-height:44vh;overflow-y:auto}
.bc-group+.bc-group{border-top:1px solid var(--border)}
.bc-ghd{position:sticky;top:0;z-index:2;background:#F4F6F9;border-bottom:1px solid #EAEDF1}
.bc-gname{font-size:13px;font-weight:600;color:var(--t1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-gmeta{font-size:12px;color:var(--t3);flex:0 0 auto}
.bc-gfill{margin-left:auto;flex:0 0 auto;font-size:12px;color:var(--primary);cursor:pointer;
  padding:2px 8px;border:1px solid var(--primary-light);border-radius:6px;background:#fff;white-space:nowrap}
.bc-gfill:hover{background:var(--primary-light)}
/* 房型组折叠（2026-09-15 与商家端批量调整弹窗对齐）：组头可点、箭头指示；折叠只藏计划行，数值保留。 */
.bc-ghd{cursor:pointer;user-select:none;-webkit-user-select:none}
.bc-ghd .bc-caret{width:14px;height:14px;flex:0 0 auto;stroke:var(--t3);stroke-width:2;fill:none;
  stroke-linecap:round;stroke-linejoin:round;transition:transform .18s;transform:rotate(90deg)}
.bc-group.bc-folded .bc-caret{transform:rotate(0)}
.bc-group.bc-folded>:not(.bc-ghd){display:none}
/* 日历左右翻页箭头（2026-09-15 与商家端房态价格页对齐）：悬浮圆钮、hover 价格区域才显示、到头置灰。 */
.cal-scroll-shell{position:relative}
.cal-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:6;width:34px;height:34px;
  border-radius:50%;background:#fff;border:1px solid var(--border-strong);color:var(--t2);
  box-shadow:0 2px 10px rgba(15,27,61,.14);cursor:pointer;display:flex;align-items:center;justify-content:center;
  padding:0;transition:box-shadow .15s,color .15s,opacity .15s;opacity:0;pointer-events:none}
.cal-arrow svg{width:16px;height:16px}
.cal-scroll-shell:hover .cal-arrow{opacity:1;pointer-events:auto}
.cal-arrow:hover{color:var(--primary);box-shadow:0 3px 14px rgba(37,99,235,.22)}
.cal-arrow.l{left:194px}      /* 184px 粘住首列 + 边距 */
.cal-arrow.r{right:10px}
.cal-scroll-shell:hover .cal-arrow.dis{opacity:.28;pointer-events:none}   /* 到头：淡态提示，不可点 */
@media(hover:none){.cal-arrow{opacity:.85;pointer-events:auto}}   /* 触屏无 hover：常显 */
.bc-row{border-top:1px solid #F2F4F6;transition:background .15s}
.bc-row:hover{background:#FAFBFF}
.bc-row .bc-rt{padding-left:14px}
.bc-rt{flex:1;min-width:0;font-size:13px;color:var(--t1);white-space:nowrap;overflow:hidden;
  display:flex;align-items:center;gap:6px}
.bc-pl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bc-meal{font-style:normal;flex:0 0 auto;font-size:11px;padding:1px 5px;border-radius:4px;background:var(--primary-light);color:var(--primary);font-weight:600}
.bc-def{flex:0 0 auto;font-size:11px;color:var(--t3)}
.bc-def.none{color:var(--warning)}
.bc-row.bc-none{padding:12px;font-size:12px;color:var(--t3);background:#FAFAFB}
.bc-val{flex:0 0 150px;position:relative}
.bc-val input{width:100%;height:32px;border:1px solid var(--border-strong);border-radius:6px;
  padding:0 30px 0 10px;font-size:13px;font-family:var(--font);outline:none;background:#fff;color:var(--t1);transition:.15s}
.bc-val input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.bc-val input:disabled{background:#F5F6F8;color:var(--t3);cursor:not-allowed;border-color:var(--border)}
.bc-val input::-webkit-outer-spin-button,.bc-val input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.bc-val input[type=number]{-moz-appearance:textfield;appearance:textfield}
.bc-unit{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--t3);pointer-events:none}
/* 底价 → 加价后价：两框并排，中间一个箭头列（宽 16px，与表头同名占位元素同宽） */
.bc-arrow{flex:0 0 16px;text-align:center;color:var(--t3);font-size:13px;line-height:1;user-select:none}
/* 未设基础加价时「加价后价」== 底价 → 右框只读镜像，灰底提示 */
.bc-val.bc-off input{background:#F5F6F8;color:var(--t3);border-color:var(--border);cursor:not-allowed}
.bc-val.bc-off input:focus{border-color:var(--border);box-shadow:none}

/* ===== 批量房态页签（bi-*）：与「调价」页签同弹窗、同起止日期、同「生效日期」 =====
   2026-09-16 从 hotel.css 逐值搬入（用户：「把 hotel.html 端的批量调价功能，复制到 admin.html 端」）。
   价格是「房型 × 价格计划」，房态只能到「房型」（同房型各计划共用一份余量）→ 同一弹窗分两个页签。
   ⚠️ 类名刻意与 bc-* 完全分离：admin-batch-two-price-boxes.js 等脚本用 `.bc-row[data-plan]` / `.bc-val`
   做计数与取宽度，房态区若复用这些类名会把断言数字顶歪。两列的 150px 与 bc 段**逐值同宽**，
   保证切页签时列不跳动。 */
.bi-tabs{display:flex;gap:2px;margin-top:12px;border-bottom:1px solid var(--border)}
.bi-tabs button{position:relative;border:0;background:transparent;padding:7px 14px 8px;font-size:13px;
  color:var(--t3);cursor:pointer;font-family:var(--font);text-align:left;border-radius:0}
.bi-tabs button em{display:block;font-style:normal;font-size:11px;color:var(--t3);margin-top:2px}
.bi-tabs button:hover{color:var(--t2)}
.bi-tabs button.on{color:var(--primary);font-weight:600;box-shadow:inset 0 -2px 0 var(--primary)}
.bi-tabs button.on em{color:var(--primary)}
.bi-table{margin-top:8px;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff}
.bi-head,.bi-row{display:flex;align-items:center;gap:10px;padding:9px 12px}
.bi-head{background:#F7F8FA;border-bottom:1px solid var(--border);font-size:12px;color:var(--t2);font-weight:600}
.bi-head .bi-c-rt{flex:1;min-width:0}
.bi-head .bi-c-val,.bi-head .bi-c-sell{flex:0 0 150px;text-align:center}
.bi-body{max-height:44vh;overflow-y:auto}
.bi-group+.bi-group{border-top:1px solid var(--border)}
.bi-row{border-top:1px solid #F2F4F6;transition:background .15s}
.bi-row:hover{background:#FAFBFF}
.bi-rt{flex:1;min-width:0;display:flex;align-items:center;gap:6px;overflow:hidden}
.bi-rtname{font-size:13px;color:var(--t1);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bi-rtmeta{flex:0 0 auto;font-size:11px;color:var(--t3)}
.bi-val{flex:0 0 150px;position:relative}
.bi-val input{width:100%;height:32px;border:1px solid var(--border-strong);border-radius:6px;
  padding:0 30px 0 10px;font-size:13px;font-family:var(--font);outline:none;background:#fff;color:var(--t1);transition:.15s}
.bi-val input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.bi-val input:disabled{background:#F5F6F8;color:var(--t3);cursor:not-allowed;border-color:var(--border)}
.bi-val::after{content:'间';position:absolute;right:10px;top:50%;transform:translateY(-50%);
  font-size:12px;color:var(--t3);pointer-events:none}
.bi-val.bi-ro::after{color:#C6CBD4}
.bi-sell{flex:0 0 150px}
.bi-sell select{width:100%;height:32px;border:1px solid var(--border-strong);border-radius:6px;padding:0 8px;
  font-size:13px;font-family:var(--font);background:#fff;color:var(--t1);outline:none;cursor:pointer}
.bi-sell select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.bi-sell select:disabled{background:#F5F6F8;color:var(--t3);cursor:not-allowed;border-color:var(--border)}
.bi-pcs{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;padding:0 12px 10px;font-size:12px}
.bi-pcs-lb{flex:0 0 auto;color:var(--t3);line-height:26px}
.bi-pcs-none{color:var(--t3);line-height:26px}
.bi-pc{display:inline-flex;align-items:center;gap:6px;color:var(--t2);line-height:26px}
.bi-pc>span{font-size:13px;font-weight:700;color:var(--t1)}
.bi-pc select{height:26px;border:1px solid var(--border-strong);border-radius:6px;padding:0 6px;
  font-size:12px;font-family:var(--font);background:#fff;color:var(--t1);outline:none;cursor:pointer}
.bi-pc select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.bi-pc select:disabled{background:#F5F6F8;color:var(--t3);cursor:not-allowed}
.bi-pc select.on{color:#B45309;font-weight:600}

/* ===== 酒店级基础加价卡片（bc-base-*）：本店覆盖开关 + 比例（固定/混合已下线） ===== */
.bc-base{display:flex;align-items:center;gap:10px}
.bc-ovsw{margin-left:auto}
.bc-ovlab{font-size:12px;color:var(--t2);flex:0 0 auto}
.bc-base-body{display:flex;align-items:center;gap:10px;margin-top:12px}
.bc-base-body.off{display:none}
.seg.bc-bseg{flex:0 0 auto;width:auto}
.seg.bc-bseg button{height:30px;padding:0 14px;display:flex;align-items:center;justify-content:center}
.seg.bc-bseg button[disabled]{cursor:default}
.bc-base-body .rt-rate-wrap{flex:0 0 120px;width:120px}
.bc-base-body .rt-rate-wrap input[type=number]{-moz-appearance:textfield;appearance:textfield}
.bc-base-body .rt-rate-wrap input::-webkit-outer-spin-button,
.bc-base-body .rt-rate-wrap input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* ===== 问号提示图标（yzQ）：解释性说明收进 ? 图标，悬停 / 键盘聚焦显示（三端同款，改一处同步三处） ===== */
.yz-q{position:relative;display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:#C2C9D4;color:#fff;font-size:11px;font-weight:700;line-height:1;cursor:help;vertical-align:middle;margin-left:5px;user-select:none;flex-shrink:0}
.yz-q:hover,.yz-q:focus{background:#2563EB;outline:none}
.yz-q .yz-q-ic{pointer-events:none}
.yz-q .yz-q-tip{display:none;position:absolute;z-index:99999;left:50%;transform:translateX(-50%);width:max-content;max-width:320px;padding:9px 11px;border-radius:8px;background:#1F2430;color:#FFF;font-size:12px;font-weight:400;line-height:1.65;text-align:left;letter-spacing:normal;box-shadow:0 8px 24px rgba(15,27,61,.22);pointer-events:none;white-space:normal}
.yz-q[data-pos="below"] .yz-q-tip{top:calc(100% + 7px)}
.yz-q[data-pos="above"] .yz-q-tip{bottom:calc(100% + 7px)}
.yz-q:hover .yz-q-tip,.yz-q:focus .yz-q-tip{display:block}

/* ===== 弹窗标题栏可拖动（yz-core.js / hotel 00-core.js 的拖拽逻辑）：抓手光标 + 拖动时防选中 ===== */
.modal-h{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:none}
.modal-h:active{cursor:grabbing}

/* ===== 操作日志 + 告警中心（2026-09-16 新增 · 房态房价定责与异常提示）=====
   两个页面共用「来源端标签」和「次要说明行」两种小元素：
   · .ol-portal 来源端标签：纠纷排查第一眼看的就是这个，所以给它配色而不是纯文本
   · .ol-sub / .ac-sub 次要说明：角色、IP、处理人这类补充信息，压暗压小不抢主体
   颜色只借用既有变量，不引入新色板，避免和 admin.css 顶部的 :root 脱节。 */
.ol-portal{display:inline-block;font-size:11.5px;font-weight:600;line-height:1.6;padding:1px 8px;border-radius:5px;white-space:nowrap}
.ol-portal.hotel{background:var(--success-bg);color:var(--success)}
.ol-portal.admin{background:var(--info-bg);color:var(--info)}
.ol-sub{font-size:11.5px;color:var(--t3);margin-top:2px;line-height:1.5}
.ol-t{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--t2)}
.ol-act{display:inline-block;font-size:12px;font-weight:600;color:var(--t1);background:#F2F4F7;border-radius:5px;padding:1px 7px;white-space:nowrap}

/* 变更内容列：一行放不下时不撑破表格（改前 → 改后 可能很长） */
#view-operlog table td{vertical-align:top}
#view-operlog .empty,#view-alertcenter .empty{line-height:1.9}

/* 告警内容列：标题 / 正文 / 主体 / 补充 四层，用字号和灰度区分层级，
   不靠边框分隔（一页几十条，边框会把表格切得很碎） */
.ac-msg-t{font-weight:600;color:var(--t1)}
.ac-msg-b{color:var(--t2);margin-top:2px;line-height:1.6}
.ac-msg-s{color:var(--t3);font-size:12px;margin-top:3px}
.ac-msg-d{color:var(--t3);font-size:11.5px;margin-top:3px;padding-left:8px;border-left:2px solid var(--border);line-height:1.6}
.ac-t{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--t2)}
.ac-note{font-size:11.5px;color:var(--t3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}
#view-alertcenter table td{vertical-align:top}
.ac-do{height:26px;padding:0 10px;font-size:12.5px}
.ac-chip{cursor:pointer}

/* 处理弹窗内部：告警摘要 + 字段表 + 结论快捷项 */
.ac-hd{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ac-hb{color:var(--t2);line-height:1.65}
.ac-hs{color:var(--t3);font-size:12px;margin-top:6px;padding-left:9px;border-left:2px solid var(--border);line-height:1.6}
.ac-hm{width:100%;border-collapse:collapse;margin:12px 0 4px}
.ac-hm th{width:96px;text-align:left;font-weight:400;color:var(--t3);font-size:12.5px;padding:4px 0;background:none;border:none}
.ac-hm td{color:var(--t1);font-size:12.5px;padding:4px 0}
.ac-hl{margin-top:14px;font-size:13px;font-weight:600;color:var(--t1)}
.ac-chips{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 10px}
.ac-chip{font-size:12.5px;color:var(--primary);background:var(--primary-light);border:1px solid #D5E2FF;border-radius:14px;padding:3px 11px;line-height:1.6}
.ac-chip:hover{background:#E2EBFF}
.ac-note-inp{width:100%;height:32px}
.ac-rule-tb td{font-size:12.5px;vertical-align:top;padding:9px 14px}
.ac-why{color:var(--t3);line-height:1.6}
