/* ============================================================
   NEO Gaia 客户报备与餐宿券系统 · design.css
   方向：日式极简（余白 · 细线 · 一枚印）
   字体替代：Jost（拉丁/数字）+ Noto Sans SC（中文）——待品牌方提供正式字体
   ============================================================ */

:root{
  /* 墨 Ink */
  --ink-900:#161613; --ink-700:#3a3a36; --ink-500:#6c6c66;
  --ink-300:#a3a29a; --ink-150:#d7d6cf; --ink-075:#eceae3;
  /* 纸 Paper */
  --paper:#faf9f4; --paper-warm:#f3f0e8; --white:#ffffff;
  /* 松岭绿 Pine（品牌锚点） */
  --pine-900:#20352a; --pine-700:#2e5140; --pine-500:#487057;
  --pine-300:#8ea892; --pine-100:#e1e9e0;
  /* 住宿暖陶橘 Stay（柔和、易区分，不使用黑白肃穆配色） */
  --stay-900:#8e4f36; --stay-700:#ad6548; --stay-500:#c98361;
  --stay-300:#ddb097; --stay-100:#f4e3d9;
  /* 状态色 */
  --green:#4a7c59; --orange:#b7852e; --red:#a24936; --blue:#4a6a7c;
  --gray:var(--ink-500);
  /* 语义 */
  --text-title:var(--ink-900); --text-body:var(--ink-700);
  --text-muted:var(--ink-500); --text-faint:var(--ink-300);
  --border-subtle:var(--ink-075); --border-default:var(--ink-150);
  --font-body:'Noto Sans SC',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --font-display:'Jost','Noto Sans SC',sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --tracking-wide:.3em; --tracking-tagline:.5em;
  --ease:cubic-bezier(.25,.46,.45,.94);
}

.redeem-record-list{display:grid;gap:8px}
.redeem-record{border:1px solid var(--border-default,#d8d4ca);background:#fff}
.redeem-record summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;cursor:pointer;list-style:none}
.redeem-record summary::-webkit-details-marker{display:none}
.redeem-record summary span{display:grid;gap:3px;min-width:0}
.redeem-record summary b{font-size:14px;font-weight:600}
.redeem-record summary small{color:var(--text-muted,#74756e);font-size:11px}
.redeem-record summary em{color:var(--pine-800,#285746);font-size:11px;font-style:normal;white-space:nowrap}
.redeem-record summary:after{content:"＋";color:var(--text-muted,#74756e);font-size:16px}
.redeem-record[open] summary:after{content:"－"}
.redeem-record-detail{display:grid;gap:6px;padding:0 15px 14px;border-top:1px solid var(--border-subtle,#ece9e1);padding-top:12px;color:var(--text-muted,#74756e);font-size:12px;line-height:1.5}

/* ---------- 基础 ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text-body);font:14px/1.75 var(--font-body);font-weight:400}
h1,h2,h3{margin:0;color:var(--text-title);font-weight:500;line-height:1.4}
a{color:var(--pine-700);text-decoration:underline;text-underline-offset:3px}
a:hover{color:var(--pine-900)}
code{font-family:var(--font-mono);font-size:.92em;color:var(--text-muted)}
::selection{background:var(--pine-100)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- 页面骨架 ---------- */
main{max-width:880px;margin:0 auto;padding:28px 20px 72px;animation:pageIn .34s var(--ease)}
main.admin-wide{max-width:1200px}
@keyframes pageIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* 顶部品牌条（common.js 注入 header） */
.public-header,header.site{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:18px 24px;border-bottom:1px solid var(--border-default);background:var(--paper)}
.brand{display:flex;flex-direction:column;gap:2px}
.brand-en{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:.06em;color:var(--text-title)}
.brand-cn{font-size:10.5px;letter-spacing:var(--tracking-wide);color:var(--text-muted)}
.brand img{width:140px;display:block}
.site-nav{display:flex;gap:22px;align-items:baseline;font-size:13px}
.site-nav a{color:var(--text-muted);text-decoration:none;letter-spacing:.08em;padding-bottom:3px;border-bottom:2px solid transparent}
.site-nav a:hover{color:var(--text-title)}
.site-nav a.on{color:var(--text-title);font-weight:500;border-bottom-color:var(--pine-700)}
.site-user{display:flex;gap:14px;align-items:baseline;font-size:12px;color:var(--text-muted)}

/* ---------- 印 · 品牌记号 ---------- */
.seal{display:inline-block;width:14px;height:14px;background:var(--pine-700);flex:none}
.seal-sm{width:8px;height:8px}
.eyebrow,.page-kicker{font-family:var(--font-display);font-size:10px;font-weight:400;
  letter-spacing:var(--tracking-wide);color:var(--text-faint);text-transform:uppercase}

/* ---------- 区块（去卡片化：细线分区） ---------- */
.card{background:transparent;border:none;border-radius:0;box-shadow:none;padding:0;margin:0 0 52px}
.card>h2,.section-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  padding-bottom:13px;border-bottom:1px solid var(--text-title);margin-bottom:20px}
.card>h2{font-size:15px;letter-spacing:.22em;font-weight:500}
.section-head h2{font-size:15px;letter-spacing:.22em;font-weight:500;border:none;padding:0;margin:0}
.section-head .eyebrow{margin-bottom:4px}
.section-head>:last-child:not(:first-child){margin-left:auto}
.card>h2 .btn,.card>h2 select,.card>h2 a{letter-spacing:normal}

/* 登录/客户侧单卡页面保留纸上白卡 */
.login-card,.locate-page .card,.wallet-page .card{background:var(--white);border:1px solid var(--border-subtle);padding:36px 40px;margin:0}

/* ---------- 表单 ---------- */
label{display:block;margin:18px 0 4px;font-size:11px;letter-spacing:.24em;color:var(--text-muted)}
input,select,textarea{width:100%;padding:9px 2px;border:none;border-bottom:1px solid var(--border-default);
  border-radius:0;background:transparent;font:14.5px/1.6 var(--font-body);color:var(--text-title);outline:none;
  transition:border-color .18s var(--ease)}
input:focus,select:focus,textarea:focus{border-bottom-color:var(--text-title)}
input::placeholder,textarea::placeholder{color:var(--text-faint)}
input:disabled,select:disabled{color:var(--text-faint);border-bottom-style:dashed}
select{appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236c6c66'/%3E%3C/svg%3E") no-repeat right 4px center;padding-right:20px;cursor:pointer}
textarea{resize:vertical}
input[type=checkbox]{width:15px;height:15px;accent-color:var(--pine-700);border:1px solid var(--border-default);margin:0 6px 0 0;vertical-align:-2px;cursor:pointer}
.field-error{border-bottom-color:var(--red)!important}
.field-error-msg{font-size:11.5px;color:var(--red);margin-top:4px;letter-spacing:.04em}
.flex{display:flex;gap:28px}
.flex>*{flex:1;min-width:0}
.hint{font-size:12px;color:var(--text-muted);letter-spacing:.02em}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:44px;padding:0 26px;margin-top:20px;
  background:var(--pine-700);color:var(--paper);border:1px solid var(--pine-700);border-radius:0;
  font:500 13px/1 var(--font-body);letter-spacing:.3em;text-indent:.3em;cursor:pointer;
  transition:background .18s var(--ease),color .18s var(--ease),opacity .18s}
.btn:hover{background:var(--pine-900);border-color:var(--pine-900)}
.btn:active{opacity:.85}
.btn:disabled{background:var(--paper-warm);border-color:var(--border-default);color:var(--text-faint);cursor:not-allowed}
.btn-sm{min-height:32px;padding:0 14px;font-size:12px;letter-spacing:.14em;text-indent:.14em;margin-top:0}
.btn-gray{background:transparent;color:var(--text-title);border:1px solid var(--border-default)}
.btn-gray:hover{background:transparent;border-color:var(--text-title);color:var(--text-title)}
.btn-green{background:var(--pine-700);border-color:var(--pine-700)}
.btn-green:hover{background:var(--pine-900)}
.btn-orange{background:transparent;color:var(--orange);border:1px solid var(--orange)}
.btn-orange:hover{background:var(--orange);color:var(--paper)}
.btn-red{background:transparent;color:var(--red);border:1px solid var(--red)}
.btn-red:hover{background:var(--red);color:var(--paper)}
/* 加载态：<button class="btn is-loading"> */
.btn.is-loading{pointer-events:none;color:transparent;position:relative}
.btn.is-loading::after{content:"";position:absolute;width:14px;height:14px;border:1.5px solid var(--paper);
  border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
.btn-gray.is-loading::after,.btn-orange.is-loading::after,.btn-red.is-loading::after{border-color:var(--text-muted);border-right-color:transparent}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- 状态标签 ---------- */
.tag{display:inline-flex;align-items:center;gap:6px;padding:2px 9px;border:1px solid currentColor;
  border-radius:0;font-size:11px;letter-spacing:.12em;line-height:1.7;white-space:nowrap;background:transparent}
.tag::before{content:"";width:5px;height:5px;background:currentColor;flex:none}
.t-green{color:var(--green)} .t-blue{color:var(--blue)} .t-orange{color:var(--orange)}
.t-red{color:var(--red)} .t-gray{color:var(--text-faint)}

/* ---------- 提示条 ---------- */
.alert{padding:14px 18px;margin:14px 0;border:1px solid var(--border-default);border-left:2px solid var(--text-title);
  background:var(--white);font-size:13px;line-height:1.8;animation:pageIn .25s var(--ease)}
.a-green{border-left-color:var(--green)} .a-orange{border-left-color:var(--orange)}
.a-red{border-left-color:var(--red)} .a-blue{border-left-color:var(--blue)}
.finance-notice,.privacy-note{display:flex;gap:14px;align-items:baseline;padding:14px 18px;margin-bottom:36px;
  border:1px solid var(--border-default);border-left:2px solid var(--orange);background:var(--white);font-size:12.5px}
.empty{padding:44px 0;text-align:center;font-size:12.5px;color:var(--text-faint);letter-spacing:.14em}
.empty b{display:block;color:var(--text-muted);font-weight:500;letter-spacing:.2em;margin-bottom:4px}

/* ---------- 流程指引 ---------- */
.workflow-strip{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;margin:0 0 40px;
  padding-bottom:14px;border-bottom:1px solid var(--border-subtle);font-size:12px;color:var(--text-muted);letter-spacing:.08em}
.workflow-strip b{color:var(--ink-300);font-weight:400}
.workflow-strip .active{color:var(--text-title);font-weight:500;border-bottom:2px solid var(--pine-700);padding-bottom:3px}

/* ---------- 页签 ---------- */
.subtabs{display:flex;flex-wrap:wrap;gap:24px;margin-bottom:34px;border-bottom:1px solid var(--border-subtle)}
.subtabs button{background:none;border:none;padding:10px 2px;font:13px var(--font-body);letter-spacing:.1em;
  color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.subtabs button:hover{color:var(--text-title)}
.subtabs button.on{color:var(--text-title);font-weight:500;border-bottom-color:var(--pine-700)}
.subtabs a{text-decoration:none}
.admin-console-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;margin:0 0 28px;
  border:1px solid var(--border-subtle);background:var(--border-subtle)}
.admin-console-nav a{min-height:48px;padding:14px 12px;background:var(--paper);color:var(--text-muted);
  text-align:center;text-decoration:none;font-size:12px;letter-spacing:.08em}
.admin-console-nav a:hover,.admin-console-nav a.on{background:var(--pine-800);color:#fff}
#adminOverview,#settingsCard,#companiesCard,#usersCard,#testResetCard{scroll-margin-top:96px}
.segmented{display:flex;gap:18px}
.segmented button{background:none;border:none;padding:4px 2px;font:12.5px var(--font-body);letter-spacing:.1em;
  color:var(--text-muted);cursor:pointer;border-bottom:2px solid transparent}
.segmented button.on{color:var(--text-title);font-weight:500;border-bottom-color:var(--pine-700)}

/* ---------- 统计 ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin:0 0 52px;border-left:1px solid var(--border-subtle)}
.stat{padding:20px 22px 18px;border-right:1px solid var(--border-subtle);border-top:1px solid var(--text-title)}
.stat b{display:block;font-family:var(--font-display);font-size:38px;font-weight:400;line-height:1.1;color:var(--text-title)}
.stat span{display:block;font-size:11.5px;letter-spacing:.2em;color:var(--text-muted);margin-top:8px}
.stat small{display:block;font-size:10.5px;color:var(--text-faint);margin-top:2px;letter-spacing:.06em}
.stats.compact .stat b{font-size:26px}

/* ---------- 表格 ---------- */
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th{padding:9px 12px 9px 0;text-align:left;font-size:10.5px;font-weight:400;letter-spacing:.24em;
  color:var(--text-muted);border-bottom:1px solid var(--text-title);white-space:nowrap}
td{padding:12px 12px 12px 0;border-bottom:1px solid var(--border-subtle);vertical-align:top;line-height:1.7}
td b{font-weight:500;color:var(--text-title)}
td small,th small{font-size:11.5px;color:var(--text-muted)}
tr:hover td{background:rgba(46,81,64,.03)}
table .btn-sm{margin:2px 6px 2px 0}
details summary{cursor:pointer;color:var(--pine-700);font-size:12px;letter-spacing:.06em}

/* ---------- 工具栏 · 批量 ---------- */
.dense-list-toolbar,.batch-toolbar,.report-controls,.record-filters{display:flex;flex-wrap:wrap;gap:14px 22px;align-items:flex-end;
  padding-bottom:18px;margin-bottom:6px;border-bottom:1px solid var(--border-subtle);font-size:12.5px;color:var(--text-muted)}
.dense-list-toolbar input,.batch-toolbar input,.record-filters input{max-width:300px}
.dense-list-toolbar select,.batch-toolbar select,.report-controls select,.report-controls input,.record-filters select{width:auto;min-width:120px}
.batch-status{font-size:12px;color:var(--text-muted);padding:10px 0;letter-spacing:.06em}
.mobile-batch-bar{display:flex;align-items:center;gap:18px;padding:12px 0;border-bottom:1px solid var(--border-subtle);font-size:12.5px}
.mobile-batch-bar .btn{margin:0 0 0 auto}
.batch-select{width:15px;height:15px}
.assign-controls{display:flex;flex-direction:column;gap:6px;min-width:180px}
.row-actions{display:flex;gap:8px;margin-top:8px}
.pager{display:flex;align-items:center;gap:16px;justify-content:center;padding-top:20px;font-size:12px;color:var(--text-muted)}

/* ---------- 手机端密集记录卡 ---------- */
.dense-record-list{display:flex;flex-direction:column}
.dense-record-card{display:flex;gap:12px;padding:13px 0;border-bottom:1px solid var(--border-subtle)}
.dense-record-card .record-check{margin:2px 0 0;flex:none}
.dense-record-main{flex:1;min-width:0;font-size:12.5px}
.dense-record-title{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.dense-record-title b{font-size:14px;font-weight:500;color:var(--text-title)}
.dense-record-title span{font-size:11.5px;color:var(--text-muted);white-space:nowrap}
.dense-record-main small{color:var(--text-muted)}
.dense-record-actions{display:flex;flex-direction:column;gap:6px;flex:none;justify-content:center}
.compact-proof{font-size:11.5px;color:var(--text-muted);letter-spacing:.05em}
.desktop-only{display:block}.mobile-only{display:none}

/* ---------- 登录页 ---------- */
.login-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:44px;padding:40px 20px}
.login-brand{text-align:center}
.login-brand .brand-en{font-size:30px;letter-spacing:.08em}
.login-brand img{width:190px;display:block;margin:0 auto}
.login-slogan{margin-top:20px;font-size:15px;letter-spacing:var(--tracking-tagline);text-indent:var(--tracking-tagline);color:var(--text-title)}
.login-tagline{margin-top:8px;font-size:10.5px;letter-spacing:var(--tracking-wide);text-indent:var(--tracking-wide);color:var(--text-muted)}
.login-brand small{display:block;margin-top:14px;font-family:var(--font-display);font-size:9.5px;letter-spacing:.4em;color:var(--text-faint)}
.login-card{width:min(400px,100%)}
.login-card h2{font-size:14px;letter-spacing:.28em;font-weight:500;padding-bottom:14px;border-bottom:1px solid var(--text-title)}
.captcha-row{display:flex;gap:14px;align-items:flex-end}
.captcha-image{flex:none;border:1px solid var(--border-default);background:var(--white);padding:0;cursor:pointer;height:40px}
.captcha-image img{display:block;height:38px}

/* ---------- 电子券包 ---------- */
.wallet-page main{max-width:520px}
.countdown{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:var(--text-muted)}
.tickets{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px;margin-top:20px}
.ticket{position:relative;background:var(--white);border:1px solid var(--border-default);padding:20px 20px 16px;text-align:center;
  transition:opacity .2s}
.ticket::before{content:"";position:absolute;inset:0;border-top:3px solid var(--pine-700);pointer-events:none}
.ticket.stay::before{border-top-color:var(--ink-900)}
.ticket-kind{font-size:10px;letter-spacing:.34em;color:var(--text-muted);text-indent:.34em}
.voucher-route{display:inline-flex;margin:10px auto 0;padding:5px 10px;color:#fff;font-size:10px;letter-spacing:.12em}
.voucher-route.meal-route{background:var(--pine-700)}
.voucher-route.stay-route{background:var(--stay-700)}
.ticket-date{font-family:var(--font-display);font-size:15px;letter-spacing:.08em;color:var(--text-title);margin:6px 0 2px}
.ticket b{display:block;font-size:16px;font-weight:500;letter-spacing:.22em;color:var(--text-title);margin-bottom:10px}
.ticket .qr{width:148px;height:148px;margin:12px auto;display:flex;align-items:center;justify-content:center;background:var(--white)}
.ticket .qr svg{width:100%;height:100%}
.ticket small{display:block;font-size:11px;color:var(--text-muted);line-height:1.8}
.ticket.used,.ticket.upcoming{opacity:.55}
.ticket.used::before{border-top-color:var(--border-default)}
.ticket-state{font-size:13px;letter-spacing:.3em;color:var(--text-faint);border:1px solid var(--border-default);padding:8px 16px}
.wallet-note{font-size:11.5px;color:var(--text-muted);text-align:center;line-height:2;margin-top:28px;letter-spacing:.05em}

/* ---------- 核销台 ---------- */
.redeem-entry .scan-hero,.scan-hero{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;padding:44px 20px;
  background:var(--pine-900);color:var(--paper);border:none;cursor:pointer;transition:background .18s}
.redeem-entry .scan-hero:hover,.scan-hero:hover{background:var(--ink-900)}
.scan-hero .scan-frame{font-size:34px;line-height:1;opacity:.7}
.scan-hero b{font-size:16px;font-weight:500;letter-spacing:.3em;text-indent:.3em}
.scan-hero small{font-size:11.5px;color:rgba(250,249,244,.6);letter-spacing:.1em}
.scan-box{margin-top:18px;text-align:center;position:relative}
.scan-box video{width:100%;max-width:420px;border:1px solid var(--border-default);display:block;margin:0 auto}
.scanner-line{position:absolute;left:12%;right:12%;top:20px;height:1px;background:var(--pine-500);animation:scanline 2.2s ease-in-out infinite}
@keyframes scanline{0%,100%{transform:translateY(0)}50%{transform:translateY(160px)}}
.divider{display:flex;align-items:center;gap:16px;margin:30px 0 6px;color:var(--text-faint);font-size:11px;letter-spacing:.3em}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--border-subtle)}
.manual-code{display:flex;gap:16px;align-items:flex-end}
.manual-code .btn{margin-top:0;flex:none}
.big-input{font-family:var(--font-mono);font-size:16px;letter-spacing:.06em}
.verify-sheet{border:1px solid var(--orange)!important;background:var(--white)!important;padding:28px 32px!important}
.verify-grid{display:grid;grid-template-columns:150px 1fr;gap:24px;margin:6px 0 8px}
.customer-photo{width:150px;height:150px;border:1px solid var(--border-default);display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--paper-warm)}
.customer-photo img{width:100%;height:100%;object-fit:cover}
.photo-missing{font-size:11px;color:var(--text-faint);text-align:center;line-height:1.8;letter-spacing:.1em}
.ticket-facts{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;align-content:center}
.ticket-facts small{display:block;font-size:10.5px;letter-spacing:.24em;color:var(--text-muted)}
.ticket-facts b{font-size:15px;font-weight:500;color:var(--text-title)}
.check-card{display:flex;gap:12px;align-items:flex-start;padding:14px 0;margin:8px 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle);cursor:pointer;letter-spacing:normal;font-size:13px;color:var(--text-body)}
.check-card input{margin-top:4px}
.check-card b{display:block;font-weight:500;color:var(--text-title)}
.check-card small{color:var(--text-muted);font-size:12px}
.confirm-actions{display:flex;gap:16px;align-items:center}

/* ---------- 到场核验证据步骤 ---------- */
.evidence-step{padding:18px 0;border-bottom:1px solid var(--border-subtle);font-size:13px}
.evidence-step>b{font-weight:500;color:var(--text-title);letter-spacing:.06em}
.evidence-step .tag{margin-left:10px}
.verification-qr{margin:12px 0}
.verification-qr svg{width:150px;height:150px}

/* ---------- 汇总条 ---------- */
.summary-band{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 0;
  border-bottom:1px solid var(--border-subtle);font-size:13px;color:var(--text-muted);letter-spacing:.08em}
.summary-band b{font-weight:500;color:var(--text-title)}
.meal-day-grid{display:flex;flex-direction:column;border-top:1px solid var(--border-subtle)}
.meal-day-row{display:flex;gap:28px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border-subtle);font-size:13px}
.meal-day-row>div:first-child{flex:1}
.meal-day-row small{display:block;color:var(--text-muted);font-size:11px;letter-spacing:.14em}
.meal-day-row label{display:flex;align-items:center;gap:10px;margin:0;font-size:12px;letter-spacing:.14em;color:var(--text-muted)}
.meal-day-row select{width:80px}
.meal-plan-preview{padding:16px 0;font-size:12.5px;color:var(--text-muted);line-height:2;border-bottom:1px solid var(--border-subtle)}
.meal-plan-preview b{font-family:var(--font-display);font-size:18px;color:var(--text-title);font-weight:500}

/* ---------- 定位/客户侧单任务页 ---------- */
.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.locate-page .card,.center .card{width:min(440px,100%)}
.locate-project{padding:14px 0;border-bottom:1px solid var(--border-subtle);font-size:13.5px;line-height:2}
.privacy-consent{font-size:11.5px;color:var(--text-muted);line-height:2;padding:14px 0;margin-top:6px;border-top:1px solid var(--border-subtle)}

/* ---------- 手机端 ---------- */
@media (max-width:720px){
  .admin-console-nav{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:12px}
  .admin-console-nav a{min-height:44px;padding:12px 8px;font-size:11px}
  main{padding:20px 16px 88px}
  .flex{flex-direction:column;gap:0}
  .desktop-only{display:none}.mobile-only{display:block}
  .stats{grid-template-columns:repeat(2,1fr)}
  .stat{padding:14px 14px 12px}
  .stat b{font-size:28px}
  .card{margin-bottom:40px}
  .subtabs{gap:16px;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .subtabs button{white-space:nowrap}
  .workflow-strip{gap:8px;font-size:11px}
  .dense-list-toolbar input,.record-filters input{max-width:none;width:100%}
  .verify-grid{grid-template-columns:110px 1fr;gap:16px}
  .customer-photo{width:110px;height:110px}
  .ticket-facts{grid-template-columns:1fr}
  .manual-code{flex-direction:column;align-items:stretch}
  .confirm-actions{flex-direction:column;align-items:stretch}
  .confirm-actions .btn{width:100%}
  .tickets{grid-template-columns:1fr 1fr;gap:12px}
  .ticket .qr{width:120px;height:120px}
  /* 底部主操作区（页面级主按钮固定单手可达） */
  .sticky-action{position:sticky;bottom:0;background:var(--paper);padding:12px 0 16px;border-top:1px solid var(--border-default);margin-top:24px}
  .sticky-action .btn{width:100%;margin:0}
}
@media (max-width:360px){
  .tickets{grid-template-columns:1fr}
}

/* ============================================================
   现有业务系统适配层
   保留原系统组件能力，将应用外壳、密集记录和移动端统一到新视觉。
   ============================================================ */
body.app-page{padding:0;min-height:100vh;background:var(--paper)}
header.site{position:sticky;inset:auto;top:0;z-index:30;width:100%;height:auto;min-height:78px;
  padding:16px 32px 15px;display:flex;flex-direction:row;align-items:center;gap:42px;overflow:visible;
  color:var(--text-body);background:var(--paper);border:0;border-top:4px solid var(--ink-900);border-bottom:1px solid var(--border-default)}
header.site .brand{display:block;flex:none;text-decoration:none}
header.site .brand img{width:140px;height:auto}
header.site .site-nav{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;gap:34px;min-width:0;
  margin:0;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none}
header.site .site-nav::-webkit-scrollbar{display:none}
header.site .site-nav a{display:flex;min-height:auto;padding:7px 1px 5px;gap:0;border:0;border-bottom:2px solid transparent;
  border-radius:0;background:transparent;color:var(--text-muted);font-size:14px;font-weight:500;letter-spacing:.08em;text-decoration:none}
header.site .site-nav a:hover{color:var(--text-title);background:transparent}
header.site .site-nav a.on{color:var(--text-title);background:transparent;border-bottom-color:var(--pine-700)}
header.site .site-nav a svg{display:none}
.site-user{display:flex;align-items:center;gap:12px;flex:none;font-size:11px;color:var(--text-muted)}
.site-user>span{display:flex;flex-direction:column;line-height:1.35;text-align:right}
.site-user b{font-size:12px;font-weight:500;color:var(--text-title)}
.site-user small{font-size:10px;color:var(--text-muted)}
.site-user a{color:var(--text-muted);font-size:11px;text-decoration:none}
.site-user .logout{min-height:30px;padding:0 10px;border:1px solid var(--border-default);border-radius:0;
  background:transparent;color:var(--text-body);font:11px var(--font-body);cursor:pointer}
.site-user .logout:hover{border-color:var(--text-title)}
.mobile-title,.mobile-account,.nav-toggle{display:none}

body.app-page main{width:100%;max-width:none;margin:0;padding:0 20px 72px}
.page-topbar{width:min(100%,880px);min-height:86px;margin:0 auto;padding:26px 0 18px;display:flex;
  align-items:flex-end;justify-content:space-between;gap:24px;background:transparent;border-bottom:1px solid var(--border-subtle)}
.admin-wide .page-topbar{width:min(100%,1200px)}
.page-heading{display:flex;align-items:baseline;gap:16px}
.page-heading h1{margin:0;color:var(--text-title);font:500 20px/1.35 var(--font-body);letter-spacing:.12em}
.page-heading span{color:var(--text-faint);font:400 9px/1 var(--font-display);letter-spacing:.28em}
.page-user{font-size:11px;color:var(--text-muted);letter-spacing:.06em}
.page-content{width:min(100%,880px);margin:0 auto;padding:30px 0 0}
.admin-wide .page-content{width:min(100%,1200px);max-width:1200px}
.context-nav{width:min(100%,880px);margin:0 auto;padding:13px 0 0;display:flex;gap:24px;align-items:center;
  border-bottom:1px solid var(--border-subtle);overflow-x:auto;scrollbar-width:none}
.admin-wide .context-nav{width:min(100%,1200px)}
.context-nav::-webkit-scrollbar{display:none}
.context-nav a{flex:none;padding:8px 1px 10px;color:var(--text-muted);border-bottom:2px solid transparent;
  font-size:12px;letter-spacing:.12em;text-decoration:none}
.context-nav a:hover{color:var(--text-title)}
.context-nav a.on{color:var(--text-title);font-weight:500;border-bottom-color:var(--pine-700)}

.card{position:relative;border-radius:0;box-shadow:none;animation:pageIn .3s var(--ease)}
.table-scroll{width:100%;border:0;border-radius:0;background:transparent}
table{background:transparent}
th{position:static;background:transparent}
.stats{gap:0}
.stat{min-height:0;display:block;background:transparent;border-radius:0;box-shadow:none}
.stats.compact{margin-bottom:36px}
.btn{border-radius:0;box-shadow:none}
.subtabs,.segmented{border-radius:0}
.record-card,.dense-record-card,.detail-section{border-radius:0;box-shadow:none}
.record-card-core>div,.ticket-facts>div{border-radius:0;background:var(--paper-warm)}
.mobile-batch-bar{border-radius:0;box-shadow:none}
.dense-list-toolbar,.batch-toolbar{background:transparent;border:0;border-bottom:1px solid var(--border-subtle)}
.dense-business-table th,.dense-business-table td{padding-top:9px;padding-bottom:9px}
.record-filters{padding-bottom:18px;border-bottom:1px solid var(--border-subtle)}
.summary-band{margin:18px 0;padding:14px 0;background:transparent;color:var(--text-muted);border-bottom:1px solid var(--border-subtle)}
.summary-band b{color:var(--text-title)}
.summary-band span{color:var(--text-muted)}
.meal-plan-preview,.meal-plan-list{background:var(--paper-warm);border-left:2px solid var(--pine-700)}
.meal-day-row{background:transparent;border:0;border-bottom:1px solid var(--border-subtle)}
.detail-section{background:transparent;border:1px solid var(--border-subtle)}
.geofence-box{background:var(--pine-100);border:1px solid var(--pine-300)}
.verification-qr{border-radius:0}
.file-check{display:flex;align-items:center;gap:10px}
.compact-link{font-size:11px;color:var(--pine-700)}
.block-note,.provider-note{font-size:11.5px;color:var(--text-muted);line-height:1.8}
.warn-text{color:var(--orange)}
.sensitive-value{color:var(--red)}

/* 公共页面 */
.public-header{position:sticky;top:0;z-index:20;width:100%;height:auto;padding:15px 22px;background:rgba(250,249,244,.97)}
.public-header .brand img{width:132px}
.public-page main{padding-top:28px}
.login-page .login-center{width:min(400px,100%);min-height:0;margin:0;padding:0;background:transparent}
.login-brand{min-height:0;padding:0;background:transparent;color:var(--text-title);display:block}
.login-brand img{width:190px;height:auto}
.login-card{margin:0}
.locate-page{width:min(100% - 32px,440px);margin:0 auto}
.locate-page .locate-project{padding:14px 0;background:transparent;color:var(--text-body);border-bottom:1px solid var(--border-subtle)}
.locate-page .locate-project b{color:var(--text-title)}
.locate-page .locate-project span{color:var(--text-muted)}
.wallet-page main{max-width:560px;padding-left:16px;padding-right:16px}
.wallet-page #info .card{padding:18px 20px;margin-bottom:28px;background:var(--white);border:1px solid var(--border-subtle)}
.ticket::before{inset:0;left:0;right:0;top:0;width:auto;height:auto;background:transparent;border:0;border-top:3px solid var(--pine-700);border-radius:0}
.ticket.stay::before{border-top-color:var(--ink-900)}
.ticket::after{display:none}

@media (max-width:980px){
  header.site{gap:22px;padding-left:20px;padding-right:20px}
  header.site .site-nav{justify-content:flex-start;gap:21px}
  header.site .site-nav a{font-size:13px}
  .site-user>span,.site-user>a{display:none}
}

@media (max-width:760px){
  body.app-page{padding:66px 0 0}
  header.site{position:fixed;inset:0 0 auto;width:100%;height:66px;min-height:66px;padding:3px 16px 0;
    display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;border-top:3px solid var(--ink-900);border-bottom:1px solid var(--border-default)}
  header.site .brand{display:block}
  header.site .brand img{width:108px}
  header.site .brand-cn{display:none}
  .mobile-title{display:block;min-width:0;padding-left:12px;border-left:1px solid var(--border-default);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-size:11px;letter-spacing:.08em}
  .nav-toggle{display:block;min-width:44px;min-height:34px;padding:0 8px;border:1px solid var(--border-default);
    border-radius:0;background:transparent;color:var(--text-title);font:11px var(--font-body);letter-spacing:.12em}
  header.site .site-nav{display:none;position:absolute;top:66px;left:0;right:0;max-height:calc(100vh - 66px);
    padding:10px 16px 18px;background:var(--paper);border-bottom:1px solid var(--border-default);overflow-y:auto;box-shadow:none}
  body.nav-open header.site .site-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}
  header.site .site-nav a{min-height:44px;padding:13px 1px 10px;border-bottom:1px solid var(--border-subtle);font-size:12px}
  header.site .site-nav a.on{border-bottom-color:var(--pine-700)}
  .site-user{display:none}
  .mobile-account{display:grid;grid-column:1/-1;grid-template-columns:1fr auto auto;gap:8px;align-items:center;
    margin-top:8px;padding-top:14px;border-top:1px solid var(--border-default)}
  .mobile-account span{display:flex;flex-direction:column;color:var(--text-title)}
  .mobile-account small{color:var(--text-muted);font-size:10px}
  .mobile-account button{min-height:36px;padding:0 10px;border:1px solid var(--border-default);border-radius:0;background:transparent;color:var(--text-title)}
  .mobile-account .logout{background:var(--pine-700);border-color:var(--pine-700);color:var(--paper)}
  body.app-page main,body.app-page main.admin-wide{padding:0 14px 72px}
  .page-topbar{display:none}
  .context-nav,.admin-wide .context-nav{width:100%;padding-top:4px;gap:20px}
  .context-nav a{padding-top:9px;padding-bottom:9px;font-size:11px}
  .page-content,.admin-wide .page-content{width:100%;max-width:none;padding:20px 0 0}
  .card{padding:0;margin-bottom:40px}
  .login-card,.locate-page .card,.wallet-page .card{padding:26px 22px}
  .stats{grid-template-columns:repeat(2,1fr)}
  .record-card{padding:14px 12px;border:1px solid var(--border-subtle)}
  .dense-record-card{grid-template-columns:22px minmax(0,1fr);padding:12px 0;border-width:0 0 1px}
  .dense-record-card.no-select{grid-template-columns:minmax(0,1fr)}
  .dense-record-actions{grid-column:2;max-width:none;justify-content:flex-start}
  .dense-record-card.no-select .dense-record-actions{grid-column:1}
  .mobile-batch-bar{position:sticky;bottom:8px;z-index:8;padding:10px 12px;background:var(--pine-900);color:var(--paper)}
  .mobile-batch-bar label{color:var(--paper)}
  .table-scroll{overflow:visible}
  .responsive-ready,.responsive-ready tbody{display:block;width:100%;min-width:0!important;background:transparent}
  .responsive-ready .mobile-header-row{display:none}
  .responsive-ready .mobile-data-row{display:block;margin:0;padding:12px 0;border:0;border-bottom:1px solid var(--border-default);background:transparent;box-shadow:none}
  .responsive-ready .mobile-data-row td{display:grid;grid-template-columns:80px minmax(0,1fr);gap:10px;width:100%;
    padding:8px 0;border:0;border-bottom:1px solid var(--border-subtle);white-space:normal;word-break:break-word;background:transparent}
  .responsive-ready .mobile-data-row td:last-child{border-bottom:0}
  .responsive-ready .mobile-data-row td::before{content:attr(data-label);color:var(--text-faint);font-size:10px;letter-spacing:.12em}
  .responsive-ready .mobile-data-row td>.btn,.responsive-ready .mobile-data-row td>a,.responsive-ready .mobile-data-row td>a .btn{width:100%;margin:3px 0}
  .records-table{min-width:0!important}
  .public-header{height:64px;padding:12px 16px}
  .login-page{min-height:100vh;gap:30px;padding:34px 18px}
  .login-brand{min-height:0;padding:0;background:transparent;color:var(--text-title)}
  .login-slogan{margin:18px 0 8px;font-size:14px;letter-spacing:.42em}
  .login-tagline{font-size:10px;color:var(--text-muted)}
  .login-brand>small{margin-top:10px;color:var(--text-faint)}
  .login-page .login-center{padding:0}
  .captcha-row{grid-template-columns:minmax(0,1fr) 150px}
  .tickets{grid-template-columns:1fr 1fr;gap:10px}
  .ticket{max-width:none;padding:16px 10px 14px}
  .ticket .qr{width:112px;height:112px}
  .ticket .qr svg{width:112px!important;height:112px!important}
  .meal-day-row{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:stretch}
  .meal-day-row>div:first-child{grid-column:1/-1}
  .meal-day-row label{min-width:0}
  .meal-slot-check small{margin-left:auto}
}

@media (max-width:390px){
  .tickets{grid-template-columns:1fr}
  .ticket{max-width:330px}
  .captcha-row{grid-template-columns:1fr 132px}
  .stats{grid-template-columns:1fr 1fr}
}

/* 实心松岭绿控件统一使用纯白文字，保证对比度与可读性。 */
.subtabs button.on,
.segmented button.on,
.btn:not(.btn-gray):not(.btn-orange):not(.btn-red):not(:disabled),
.scan-hero,
.mobile-batch-bar .btn{color:#fff!important}
.subtabs button.on:hover,
.segmented button.on:hover,
.btn:not(.btn-gray):not(.btn-orange):not(.btn-red):not(:disabled):hover{color:#fff!important}

/* ---------- 手机端客户资料分级显示 ----------
   一级只呈现身份、状态和当前任务；二级摘要由用户主动展开；完整资料仍进入独立页面。 */
.progressive-list{display:flex;flex-direction:column;border-top:1px solid var(--border-subtle)}
.progressive-card{padding:14px 0 13px;border-bottom:1px solid var(--border-default)}
.progressive-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
.progressive-card-title{display:flex;align-items:flex-start;gap:9px;min-width:0}
.progressive-card-title>div{min-width:0}
.progressive-card-title b{display:block;color:var(--text-title);font-size:15px;font-weight:500;line-height:1.4}
.progressive-card-title small{display:block;margin-top:2px;color:var(--text-muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.progressive-card-head>.tag{margin-top:1px}
.progressive-card-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin:12px 0 8px}
.progressive-fact{min-width:0}
.progressive-fact small{display:block;color:var(--text-faint);font-size:9.5px;letter-spacing:.14em}
.progressive-fact b{display:block;margin-top:1px;color:var(--text-body);font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.progressive-status{margin:8px 0;color:var(--text-muted);font-size:11.5px;line-height:1.65}
.progressive-status strong{color:var(--pine-700);font-weight:500}
.progressive-disclosure{margin:7px 0 11px;border-top:1px dashed var(--border-subtle)}
.progressive-disclosure summary{padding:9px 0 5px;list-style:none;color:var(--pine-700);font-size:11px;letter-spacing:.06em;cursor:pointer}
.progressive-disclosure summary::-webkit-details-marker{display:none}
.progressive-disclosure summary::after{content:"＋";float:right;color:var(--text-faint);font-size:14px}
.progressive-disclosure[open] summary::after{content:"－"}
.progressive-detail-grid{display:grid;grid-template-columns:76px minmax(0,1fr);gap:5px 10px;padding:5px 0 8px;color:var(--text-muted);font-size:11px;line-height:1.65}
.progressive-detail-grid dt{color:var(--text-faint)}
.progressive-detail-grid dd{margin:0;min-width:0;word-break:break-word}
.progressive-plan{grid-column:1/-1;margin-top:4px;padding:8px 10px;background:var(--paper-warm);color:var(--text-muted);line-height:1.75}
.progressive-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:7px}
.progressive-actions:empty{display:none}
.progressive-actions .btn,.progressive-actions>a,.progressive-actions>a .btn{width:100%;min-height:38px;margin:0}
.progressive-actions .tag{justify-content:center;min-height:34px}
.deal-status-control{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.deal-status-control select{width:auto;min-width:106px;min-height:38px}.deal-status-control .btn{margin:0}
.progressive-assignment{display:grid;gap:8px;padding:6px 0 4px}
.progressive-assignment label{margin:0;font-size:10px;letter-spacing:.12em}
.progressive-assignment .btn{width:100%;margin:2px 0 0}
.progressive-inline-select{display:flex;align-items:flex-start;gap:8px}
.progressive-inline-select .record-check{margin-top:3px;flex:none}

@media (min-width:721px){
  .progressive-list{display:none}
}

@media (max-width:720px){
  /* 页面只保留任务摘要，避免把桌面表格逐格摊到手机上。 */
  .progressive-card{padding:13px 1px 12px}
  .progressive-card-facts{grid-template-columns:1fr 1fr}
  .progressive-actions{grid-template-columns:1fr 1fr}
  .progressive-actions .btn:only-child{grid-column:1/-1}
}

/* ---------- 渠道端：报备记录独立色块与详情抽屉 ---------- */
.channel-record-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:0 0 22px;padding-bottom:18px;border-bottom:1px solid var(--border-default)}
.channel-record-head h2{margin:0 0 4px;font-size:22px;font-weight:500;color:var(--text-title)}
.channel-record-head p{margin:0;color:var(--text-muted);font-size:12px}
.channel-revisit-guide{display:grid;grid-template-columns:auto minmax(220px,1fr) auto;gap:18px;align-items:center;margin:-6px 0 14px;padding:12px 14px;border-left:3px solid var(--pine-700);background:#e7efe9}
.channel-revisit-guide div{display:flex;flex-direction:column;gap:2px}.channel-revisit-guide small{color:var(--pine-700);font-size:8px;letter-spacing:.16em}.channel-revisit-guide b{color:var(--text-title);font-size:12px;font-weight:500}.channel-revisit-guide span,.channel-revisit-guide em{color:var(--text-muted);font-size:10px;line-height:1.6}.channel-revisit-guide em{font-style:normal;white-space:nowrap}
.channel-record-toolbar{display:grid;grid-template-columns:minmax(280px,1fr) 170px 190px;gap:12px;align-items:end;margin-bottom:13px;padding:15px 16px;background:var(--paper-warm);border:1px solid var(--border-subtle)}
.channel-record-toolbar label{margin:0}
.channel-record-toolbar label>span{display:block;margin-bottom:6px;color:var(--text-faint);font-size:9.5px;letter-spacing:.14em}
.channel-record-toolbar input,.channel-record-toolbar select{margin:0;background:var(--white)}
.channel-batch-quick{grid-column:1/-1;display:flex;gap:6px;overflow-x:auto;padding-top:2px;scrollbar-width:none}
.channel-batch-quick::-webkit-scrollbar{display:none}
.channel-batch-quick button{flex:none;min-height:28px;padding:3px 10px;border:1px solid var(--border-default);background:transparent;color:var(--text-muted);font:9.5px var(--font-body);cursor:pointer;white-space:nowrap}
.channel-batch-quick button.on{border-color:var(--pine-700);background:var(--pine-700);color:#fff}
.channel-record-summary{margin:0 0 12px;color:var(--text-muted);font-size:11px}
.channel-record-summary:has(.channel-batch-back){display:flex;align-items:center;gap:12px}.channel-batch-back{min-height:30px;padding:4px 10px;border:1px solid var(--border-default);background:transparent;color:var(--pine-700);font:10px var(--font-body);cursor:pointer}
.channel-record-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.channel-record-grid>.empty{grid-column:1/-1}
.channel-batch-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;min-height:228px;padding:18px;border:1px solid var(--border-default);background:#e7efe9;color:var(--text-body);font:inherit;text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease}.channel-batch-card:hover,.channel-batch-card:focus-visible{transform:translateY(-2px);border-color:var(--pine-700);outline:0}.channel-batch-card-kicker{color:var(--pine-700);font-size:8px;letter-spacing:.16em}.channel-batch-card>b{max-width:72%;margin:10px 0 7px;color:var(--text-title);font-size:18px;font-weight:500;line-height:1.35}.channel-batch-card>strong{position:absolute;top:18px;right:18px;color:var(--pine-800);font-size:27px;font-weight:500}.channel-batch-card>strong small{display:block;color:var(--text-muted);font-size:8px;font-weight:400;text-align:right}.channel-batch-card>span:not(.channel-batch-card-kicker){margin-top:5px;color:var(--text-muted);font-size:10px}.channel-batch-card>em{margin-top:13px;padding-top:10px;border-top:1px solid rgba(43,61,52,.13);color:var(--text-muted);font-size:9px;font-style:normal}.channel-batch-card>i{margin-top:auto;color:var(--pine-700);font-size:10px;font-style:normal;letter-spacing:.08em}
.channel-load-more{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:10px;min-height:46px;border:1px solid var(--border-default);background:transparent;color:var(--pine-700);font:11px var(--font-body);letter-spacing:.08em;cursor:pointer}
.channel-load-more:hover{border-color:var(--pine-700);background:var(--paper-warm)}
.channel-customer-card{position:relative;width:100%;min-height:232px;padding:18px 18px 15px;border:1px solid transparent;border-radius:0;background:#edf2ed;color:var(--text-body);font:inherit;text-align:left;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.channel-customer-card:hover,.channel-customer-card:focus-visible{transform:translateY(-2px);border-color:var(--pine-500);box-shadow:0 8px 22px rgba(27,54,43,.09);outline:0}
.channel-customer-card.active{background:#e7eef0}
.channel-customer-card.review{background:#f4e8ce}
.channel-customer-card.pending-issue{background:#eeecd1}
.channel-customer-card.issued{background:#dcebe2}
.channel-customer-card.rejected{background:#f0deda}
.channel-sign-state{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border:1px solid rgba(32,40,35,.18);color:var(--text-muted);font-size:9.5px;letter-spacing:.08em}
.channel-sign-state.signed{background:#263f35;border-color:#263f35;color:#fff}
.channel-sign-state.confirmed{background:#161916;border-color:#161916;color:#fff}
.channel-sign-state.unsigned{background:rgba(255,255,255,.46)}
.channel-card-name{display:block;margin:17px 0 15px}
.channel-card-name b{display:block;color:var(--text-title);font-size:20px;font-weight:500;letter-spacing:.08em}
.channel-card-name small{display:block;margin-top:4px;color:var(--text-muted);font-size:10.5px}
.channel-batch-tag{display:inline-block;margin-right:6px;padding:1px 5px;background:rgba(39,77,61,.1);color:var(--pine-800);font-style:normal;letter-spacing:.04em}
.channel-card-field{display:block;padding:10px 0;border-top:1px solid rgba(43,61,52,.13);border-bottom:1px solid rgba(43,61,52,.13)}
.channel-card-field small,.channel-card-vouchers small{display:block;color:var(--text-faint);font-size:9px;letter-spacing:.13em}
.channel-card-field strong{display:block;margin-top:3px;color:var(--text-title);font-size:12px;font-weight:500}
.channel-card-vouchers{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:11px 0}
.channel-card-vouchers>span+span{padding-left:16px;border-left:1px solid rgba(43,61,52,.13)}
.channel-card-vouchers strong{display:block;margin-top:3px;color:var(--pine-800);font-size:11.5px;font-weight:500}
.channel-card-vouchers strong+small{margin-top:1px;letter-spacing:0}
.channel-card-open{display:flex;align-items:center;justify-content:space-between;margin-top:4px;color:var(--pine-700);font-size:10px;letter-spacing:.1em}
.channel-card-open b{font-size:16px;font-weight:400}
.channel-revisit-chip{display:inline-flex;width:max-content;padding:3px 7px;background:var(--pine-700);color:#fff;font-size:8.5px;letter-spacing:.06em}
body.detail-open{overflow:hidden}
.channel-detail-overlay{position:fixed;inset:0;z-index:1000;padding:28px;background:rgba(15,20,17,.42);backdrop-filter:blur(2px)}
.channel-detail-panel{display:flex;flex-direction:column;width:min(620px,100%);height:min(100%,760px);margin:0 0 0 auto;background:var(--paper);box-shadow:-12px 0 36px rgba(0,0,0,.16);animation:channelDetailIn .22s ease-out}
@keyframes channelDetailIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}
.channel-detail-head{position:static;inset:auto;display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;height:auto;min-height:0;padding:22px 24px 18px;overflow:visible;border-top:3px solid var(--ink-900);border-right:0;border-bottom:1px solid var(--border-default);background:var(--paper);color:var(--text-title)}
.channel-detail-head small{color:var(--text-faint);font-size:9px;letter-spacing:.15em}
.channel-detail-head h2{margin:3px 0 0;color:var(--text-title);font-size:22px;font-weight:500}
.channel-detail-close{min-width:58px;min-height:34px;border:1px solid var(--border-default);background:transparent;color:var(--text-title);cursor:pointer}
.channel-detail-body{flex:1;padding:22px 24px 40px;overflow-y:auto}
.channel-detail-status{display:flex;align-items:center;gap:8px;margin-bottom:18px}
.channel-detail-grid{display:grid;grid-template-columns:88px minmax(0,1fr);gap:0;margin:0;border-top:1px solid var(--border-default)}
.channel-detail-grid dt,.channel-detail-grid dd{margin:0;padding:10px 0;border-bottom:1px solid var(--border-subtle);font-size:11px;line-height:1.7}
.channel-detail-grid dt{color:var(--text-faint)}
.channel-detail-grid dd{color:var(--text-body);word-break:break-word}
.channel-detail-section{margin-top:27px}
.channel-detail-section h3{margin:0 0 10px;color:var(--text-title);font-size:14px;font-weight:500;letter-spacing:.08em}
.channel-revisit-action{display:flex;flex-direction:column;gap:5px;margin:0 0 18px;padding:15px;border-left:3px solid var(--border-default);background:var(--paper-warm)}
.channel-revisit-action small{color:var(--text-faint);font-size:8px;letter-spacing:.16em}.channel-revisit-action b{color:var(--text-title);font-size:14px;font-weight:500}.channel-revisit-action span{color:var(--text-muted);font-size:10.5px;line-height:1.7}.channel-revisit-action .btn{align-self:flex-start;margin:7px 0 0}.channel-revisit-action.ready,.channel-revisit-action.active{border-left-color:var(--pine-700);background:#e7efe9}.channel-revisit-action.blocked{border-left-color:#a94b3f;background:#f4e6e2}.channel-history-link{display:block;margin-top:10px;color:var(--pine-700);font-size:10.5px}
.channel-voucher-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border-subtle)}
.channel-voucher-item>div b{display:block;color:var(--text-title);font-size:11.5px;font-weight:500}
.channel-voucher-item>div small,.channel-voucher-item>small{display:block;color:var(--text-muted);font-size:9.5px}
.channel-voucher-item>small{grid-column:1/-1}
.channel-voucher-empty,.channel-delivery-note{display:flex;flex-direction:column;gap:5px;padding:14px;background:var(--paper-warm);border-left:2px solid var(--border-default)}
.channel-voucher-empty b,.channel-delivery-note b{color:var(--text-title);font-size:11.5px;font-weight:500}
.channel-voucher-empty span,.channel-delivery-note span{color:var(--text-muted);font-size:10.5px;line-height:1.7}
.channel-delivery-note.ready{border-left-color:var(--pine-700)}
.channel-delivery-note .btn{align-self:flex-start;margin:7px 0 0}

@media (max-width:720px){
  .channel-revisit-guide{grid-template-columns:1fr;margin:0 -14px 10px;padding:10px 14px;gap:2px;border-left:0;border-top:2px solid var(--pine-700)}
  .channel-revisit-guide div{display:flex;flex-direction:row;align-items:baseline;gap:7px}.channel-revisit-guide small{display:none}.channel-revisit-guide b{font-size:10.5px}.channel-revisit-guide span{font-size:8.5px}.channel-revisit-guide em{display:none}
  .channel-record-head{align-items:flex-start;margin-bottom:14px;padding-bottom:14px}
  .channel-record-head h2{font-size:18px}
  .channel-record-head p{font-size:10.5px}
  .channel-record-head .btn{width:auto;max-width:126px;min-height:36px;margin:0;font-size:9.5px}
  .channel-record-toolbar{position:sticky;top:66px;z-index:7;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px;margin:0 -14px 13px;padding:10px 14px;background:rgba(250,249,244,.97);border-width:0 0 1px}
  .channel-record-search{grid-column:1/-1}
  .channel-record-toolbar label>span{display:none}
  .channel-record-toolbar input{min-height:38px;padding-top:7px;padding-bottom:7px;font-size:13px}
  .channel-record-toolbar select{min-height:36px;padding:6px 24px 6px 8px;font-size:12px;line-height:1.25}
  .channel-batch-quick{margin:0 -14px -10px;padding:1px 14px 7px}
  .channel-batch-quick button{min-height:25px;padding:2px 8px;font-size:8.5px}
  .channel-record-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .channel-record-grid>.empty,.channel-record-grid>.channel-load-more{grid-column:1/-1}
  .channel-batch-card{min-width:0;min-height:0;aspect-ratio:1/1;padding:8px 7px;overflow:hidden}.channel-batch-card-kicker{font-size:5.5px;letter-spacing:.08em}.channel-batch-card>b{max-width:70%;margin:6px 0 3px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.channel-batch-card>strong{top:7px;right:6px;font-size:16px}.channel-batch-card>strong small{font-size:5.5px}.channel-batch-card>span:not(.channel-batch-card-kicker){margin-top:2px;font-size:6.5px;white-space:nowrap}.channel-batch-card>em{width:100%;margin-top:4px;padding-top:3px;overflow:hidden;font-size:6px;white-space:nowrap;text-overflow:ellipsis}.channel-batch-card>i{font-size:6.5px;letter-spacing:0}.channel-record-summary:has(.channel-batch-back){align-items:flex-start;flex-direction:column;gap:5px}.channel-batch-back{min-height:25px;padding:2px 7px;font-size:8px}
  .channel-customer-card{display:flex;flex-direction:column;gap:0;min-width:0;min-height:0;aspect-ratio:1/1;padding:8px 7px 7px;overflow:hidden;border-color:rgba(43,61,52,.11)}
  .channel-customer-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#6f8991}
  .channel-customer-card.review::before{background:#bf852e}
  .channel-customer-card.pending-issue::before{background:#9a922c}
  .channel-customer-card.issued::before{background:#2f6b4e}
  .channel-customer-card.rejected::before{background:#a94b3f}
  .channel-customer-card:hover{transform:none;box-shadow:none}
  .channel-customer-card::after{content:"›";position:absolute;right:4px;bottom:1px;color:rgba(39,58,49,.34);font-size:13px}
  .channel-customer-card.revisit-ready::after{display:none}.channel-revisit-chip{position:absolute;right:4px;bottom:3px;padding:1px 3px;font-size:6px;letter-spacing:0}
  .channel-sign-state{position:absolute;top:6px;right:5px;max-width:49%;min-height:16px;padding:1px 3px;overflow:hidden;font-size:6.5px;letter-spacing:0;white-space:nowrap;text-overflow:ellipsis}
  .channel-card-name{min-width:0;margin:0;padding-right:46%}
  .channel-card-name b{font-size:12.5px;line-height:1.25;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .channel-card-name small{display:block;margin-top:4px;font-size:7px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .channel-batch-tag{display:block;width:max-content;max-width:100%;margin:0 0 2px;padding:1px 3px;overflow:hidden;font-size:6.5px;white-space:nowrap;text-overflow:ellipsis}
  .channel-card-field{display:flex;align-items:center;gap:3px;min-width:0;margin-top:auto;padding:4px 0 3px;border:0;border-top:1px solid rgba(43,61,52,.11)}
  .channel-card-field small{display:inline;flex:none;font-size:6.5px;letter-spacing:0}
  .channel-card-field strong{display:block;min-width:0;margin:0;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .channel-card-vouchers{display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:0}
  .channel-card-vouchers>span{display:block;min-width:0;padding:3px 2px;background:rgba(255,255,255,.5);border:1px solid rgba(43,61,52,.09);text-align:center}
  .channel-card-vouchers>span+span{padding-left:2px;border-left:1px solid rgba(43,61,52,.09)}
  .channel-card-vouchers>span>small:first-child{display:inline;font-size:6px;letter-spacing:0}
  .channel-card-vouchers strong{display:inline;margin:0 0 0 2px;font-size:7px;line-height:1.2}
  .channel-card-vouchers strong+small{display:none}
  .channel-card-open{display:none}
  .channel-load-more{min-height:40px;margin-top:5px;font-size:9.5px}
  .channel-detail-overlay{padding:0;background:rgba(15,20,17,.35)}
  .channel-detail-panel{width:100%;height:calc(100% - 54px);margin:54px 0 0;animation:channelDetailUp .22s ease-out}
  @keyframes channelDetailUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
  .channel-detail-head{padding:16px 17px 13px}
  .channel-detail-head h2{font-size:18px}
  .channel-detail-body{padding:18px 17px 36px}
  .channel-detail-grid{grid-template-columns:76px minmax(0,1fr)}
}

/* ---------- 客户报备表单：桌面保持舒展，手机重排为紧凑任务流 ---------- */
.report-form-intro{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid var(--border-default)}
.report-form-intro>span{display:block;margin-bottom:7px;color:var(--pine-700);font-size:9px;letter-spacing:.2em}
.report-form-intro h2{margin:0;color:var(--text-title);font-size:23px;font-weight:500;letter-spacing:.1em}
.report-form-intro p{margin:7px 0 0;color:var(--text-muted);font-size:11px}
.report-form-section{margin-bottom:34px}
.report-section-title{display:flex;align-items:flex-start;gap:12px;margin-bottom:17px}
.report-section-title>b{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--pine-700);color:var(--pine-700);font:500 10px var(--font-display)}
.report-section-title strong{display:block;color:var(--text-title);font-size:13px;font-weight:500;letter-spacing:.12em}
.report-section-title small{display:block;margin-top:2px;color:var(--text-faint);font-size:9.5px;letter-spacing:.05em}
.report-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 28px}
.report-field{min-width:0}
.report-field-wide{grid-column:1/-1}
.report-field label{margin-top:10px}
.report-form .meal-day-options{display:contents}
.report-form .meal-day-head{display:flex;align-items:center;gap:12px}
.report-form .meal-day-head>span{display:none}
.report-form .meal-day-head>div{min-width:0}
.report-form .meal-choice-copy{display:contents}
.report-form .meal-choice-copy b{font-weight:400}
.report-form .meal-slot-check{border:0;padding:0;background:transparent}
.report-form .meal-total-line{display:flex;align-items:baseline;gap:8px;color:var(--text-title)}
.report-form .meal-total-line>span{margin-left:auto;color:var(--text-muted);font-size:11px}
.report-form .meal-total-line i{font-style:normal;color:var(--text-title)}
.meal-plan-detail{margin-top:7px}
.meal-plan-detail summary{color:var(--pine-700);font-size:10.5px;letter-spacing:.08em;cursor:pointer}
.meal-plan-detail>div{margin-top:6px;color:var(--text-muted);line-height:1.8}
.report-submit{min-width:180px}

@media (max-width:720px){
  .report-form{width:100%;margin:0}
  .report-form-intro{margin-bottom:22px;padding-bottom:16px}
  .report-form-intro>span{margin-bottom:5px;font-size:8px}
  .report-form-intro h2{font-size:20px;letter-spacing:.06em}
  .report-form-intro p{max-width:310px;font-size:10.5px;line-height:1.7}
  .report-form-section{margin-bottom:26px}
  .report-section-title{gap:10px;margin-bottom:12px}
  .report-section-title>b{width:26px;height:26px}
  .report-section-title strong{font-size:12px}
  .report-section-title small{font-size:9px}
  .report-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;width:100%}
  .report-field.mobile-full{grid-column:1/-1;width:100%}
  .report-field label{margin:4px 0 4px;color:var(--text-muted);font-size:10px;letter-spacing:.08em}
  .report-field input,.report-field select,.report-field textarea{width:100%;min-height:44px;padding:8px 1px;font-size:14px}
  .report-field textarea{min-height:76px}
  .report-field:not(.mobile-full) select{font-size:12px;padding-right:17px}
  .report-meal-section{margin-left:-2px;margin-right:-2px}
  .report-form .meal-day-grid{display:grid;gap:10px;margin:0;border:0}
  .report-form .meal-day-row{display:block;padding:13px 12px 12px;border:1px solid var(--border-subtle);background:var(--paper-warm)}
  .report-form .meal-day-head{display:flex;grid-column:auto;align-items:center;gap:10px;margin-bottom:11px;padding-bottom:9px;border-bottom:1px solid var(--border-subtle)}
  .report-form .meal-day-head>span{display:grid;place-items:center;width:26px;height:26px;background:var(--pine-800);color:#fff;font:500 9px var(--font-display);letter-spacing:.05em}
  .report-form .meal-day-head b{font-size:13px;font-weight:500}
  .report-form .meal-day-head small{margin-top:1px;font-size:8.5px;letter-spacing:.1em}
  .report-form .meal-day-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .report-form .meal-choice{display:flex!important;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:8px;min-width:0;min-height:84px;margin:0;padding:9px 8px;border:1px solid var(--border-default);background:rgba(255,255,255,.7);color:var(--text-body);letter-spacing:0}
  .report-form .meal-choice-copy{display:block;min-width:0}
  .report-form .meal-choice-copy b{display:block;color:var(--text-title);font-size:11px;font-weight:500;letter-spacing:.08em}
  .report-form .meal-choice-copy small{display:block;margin-top:3px;color:var(--text-faint);font-size:7.5px;line-height:1.35;letter-spacing:0;white-space:nowrap}
  .report-form .meal-choice input{width:17px;height:17px;min-height:17px;margin:0;order:2}
  .report-form .meal-choice:has(input:checked){border-color:var(--pine-700);background:#e5eee8}
  .report-form .meal-plan-preview{margin:10px 0 16px;padding:12px 13px;background:var(--paper-warm);border:0;border-left:2px solid var(--pine-700);line-height:1.7}
  .report-form .meal-total-line{display:grid;grid-template-columns:auto 1fr;gap:3px 8px}
  .report-form .meal-total-line b{font-size:20px}
  .report-form .meal-total-line>span{margin:0;align-self:center;font-size:10px}
  .report-form .meal-plan-detail{grid-column:1/-1;margin-top:3px;padding-top:7px;border-top:1px solid var(--border-subtle)}
  .report-form .meal-plan-detail summary{font-size:9.5px}
  .report-form .meal-plan-detail>div{font-size:9.5px;line-height:1.75}
  .report-submit{width:100%;min-height:48px;margin-top:0}
}
/* 批量报备与批次核身 */
.batch-import-hero{display:flex;align-items:center;justify-content:space-between;gap:24px}.batch-import-hero h2{margin:4px 0 8px}.batch-import-hero p{margin:0;max-width:760px;color:var(--muted)}
.batch-import-steps{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:22px;color:var(--muted)}.batch-import-steps span{padding:8px 12px;border:1px solid var(--line)}.batch-import-steps span.on{background:var(--green);border-color:var(--green);color:#fff}
.team-number-rule{display:grid;grid-template-columns:auto auto 1fr;gap:10px 16px;align-items:center;margin:0 0 18px;padding:14px 16px;border-left:4px solid var(--green);background:#f1f5f0}.team-number-rule span{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;letter-spacing:.02em}.team-number-rule small{color:var(--muted)}
.batch-file-drop{display:flex;min-height:130px;border:1px dashed #8b958f;background:#f5f3ed;align-items:center;justify-content:center;flex-direction:column;gap:8px;cursor:pointer;text-align:center;padding:24px}.batch-file-drop:hover{border-color:var(--green);background:#eef3ef}.batch-file-drop input{max-width:360px}.batch-file-drop small{color:var(--muted)}
.batch-import-summary{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));margin-top:18px;border:1px solid var(--line)}.batch-import-summary:empty{display:none}.batch-import-summary>div{padding:18px;border-right:1px solid var(--line)}.batch-import-summary>div:last-child{border-right:0}.batch-import-summary b{display:block;font-size:26px}.batch-import-summary small{color:var(--muted)}.batch-import-summary .bad b{color:var(--red)}
.batch-import-actions{display:flex;gap:10px;margin-top:18px}.batch-import-legend{display:flex;gap:8px;flex-wrap:wrap}.batch-preview-table small{display:block;color:var(--muted);margin-top:3px}.batch-preview-table td:last-child{min-width:180px}.batch-preview-table .tag{margin-right:6px}
.batch-queue-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;margin:12px 0;background:#eef3ef;border-left:4px solid var(--green)}.batch-queue-panel p{margin:2px 0;color:var(--muted)}.batch-queue-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.batch-queue-indicator{padding:8px 12px;background:#173b2d;color:#fff;font-size:13px}
.batch-stage-meter{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.batch-stage-meter span{padding:6px 9px;border:1px solid #cad4ce;background:#fff;color:#66716b;font-size:12px}.batch-stage-meter span.on{background:#173b2d;border-color:#173b2d;color:#fff}
@media(max-width:760px){.batch-import-hero{align-items:stretch;flex-direction:column}.batch-import-steps{display:grid;grid-template-columns:1fr 1fr;gap:6px}.batch-import-steps b{display:none}.batch-import-summary{grid-template-columns:1fr 1fr}.batch-import-summary>div:nth-child(2){border-right:0}.batch-import-summary>div{padding:12px}.batch-import-actions{position:sticky;bottom:0;z-index:3;background:var(--paper);padding:12px 0}.batch-queue-panel{align-items:stretch;flex-direction:column}.batch-file-drop input{width:100%}}

/* 车票订单与批次住宿组合 */
.data-filter-panel{margin:14px 0 18px;padding:14px;border:1px solid var(--line);background:var(--cream)}.data-filter-grid{display:grid;grid-template-columns:minmax(220px,1.6fr) repeat(5,minmax(125px,1fr)) auto;gap:10px;align-items:end}.data-filter-grid.rooming-filter-grid{grid-template-columns:minmax(220px,1.5fr) repeat(3,minmax(130px,1fr)) minmax(240px,1.4fr) auto}.data-filter-grid label{display:grid;gap:5px;color:var(--muted);font-size:12px}.data-filter-grid input,.data-filter-grid select{width:100%;min-width:0;background:#fff}.data-filter-actions{display:flex;align-items:center;gap:10px;white-space:nowrap}.filter-result-count{color:var(--muted);font-size:13px}.filter-empty{padding:28px;text-align:center;border:1px dashed var(--line);background:#fff;color:var(--muted)}
.companion-preview-head{margin-top:28px}.travel-attachment-card{margin-top:20px}.attachment-toolbar{display:grid;grid-template-columns:1.1fr 1.2fr 1fr auto;gap:10px;align-items:end}.attachment-toolbar-team{grid-template-columns:minmax(180px,.9fr) minmax(220px,1.1fr) 1.1fr 1fr auto}.attachment-list{display:grid;gap:8px;margin-top:16px}.attachment-list article{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 14px;border:1px solid var(--line);background:#fff}.attachment-list article div:first-child{display:grid;gap:4px}.attachment-list article small{color:var(--muted)}.attachment-list article div:last-child{display:flex;gap:8px}
.rooming-hero{display:flex;align-items:end;justify-content:space-between;gap:24px}.rooming-hero select{min-width:320px}.rooming-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0}.rooming-summary:empty{display:none}.rooming-workspace{grid-template-columns:minmax(280px,.8fr) minmax(560px,2fr);gap:16px;align-items:start}.rooming-pool{position:sticky;top:88px}.rooming-pool>label{display:block;margin:12px 0 6px}.rooming-legend{margin:12px 0;padding:10px;background:var(--cream);color:var(--muted);font-size:13px}.rooming-legend button{border:0;background:transparent;color:var(--deep-green);font-weight:700;text-decoration:underline;cursor:pointer}.rooming-person-list{display:grid;gap:7px;max-height:62vh;overflow:auto}.rooming-person{display:flex;padding:10px;border:1px solid var(--line);background:#fff;cursor:pointer}.rooming-person.on{border-color:var(--deep-green);background:#eef4f0}.rooming-person input{margin:4px 10px 0 0}.rooming-person span{display:grid;gap:3px}.rooming-person small,.rooming-person em{font-size:12px;color:var(--muted);font-style:normal}.rooming-person em{color:var(--deep-green)}.rooming-actions{display:flex;gap:8px}.room-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.room-group-card{border:1px solid var(--line);background:#fff;padding:14px;display:grid;gap:12px}.room-group-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.room-group-head input{font-weight:800;font-size:17px;border:0;border-bottom:1px solid var(--line);padding:6px 2px;min-width:0}.room-group-fields{display:grid;grid-template-columns:1fr 1fr;gap:8px}.room-group-fields label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.room-group-fields input,.room-group-fields select{padding:8px}.room-group-members{display:flex;flex-wrap:wrap;gap:6px}.room-group-members>span{display:flex;align-items:center;gap:5px;padding:7px 9px;background:#edf4ef;border:1px solid #d7e5dc;color:var(--deep-green);font-weight:700}.room-group-members small{font-weight:400;color:var(--muted)}.room-group-members button{border:0;background:transparent;color:#a33;font-size:18px;cursor:pointer}.room-group-actions{display:flex;justify-content:space-between;gap:8px}.rooming-save-panel{grid-template-columns:1fr auto auto;gap:10px;border-top:1px solid var(--line);padding-top:16px;margin-top:18px}
@media(max-width:1100px){.data-filter-grid,.data-filter-grid.rooming-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.data-filter-keyword{grid-column:span 2}}
@media(max-width:760px){.data-filter-grid,.data-filter-grid.rooming-filter-grid{grid-template-columns:1fr 1fr}.data-filter-keyword{grid-column:1/-1}.rooming-batch-select{grid-column:1/-1}.data-filter-actions{grid-column:1/-1;justify-content:space-between}.attachment-toolbar,.attachment-toolbar-team{grid-template-columns:1fr}.team-number-rule{grid-template-columns:1fr;gap:6px}.attachment-list article{align-items:flex-start;flex-direction:column}.rooming-hero{align-items:stretch;flex-direction:column}.rooming-hero select{min-width:0;width:100%}.rooming-summary{grid-template-columns:repeat(2,1fr)}.rooming-workspace{grid-template-columns:1fr}.rooming-pool{position:static}.room-group-grid{grid-template-columns:1fr}.rooming-save-panel{grid-template-columns:1fr}.rooming-actions{flex-direction:column}.rooming-actions .btn{width:100%}}

/* ---------- 客户票夹 / 渠道陪同券：列表无二维码，单券二次确认后独占展示 ---------- */
.wallet-summary{text-align:center}
.voucher-category-intro{display:grid;gap:5px;margin:20px 0 14px;text-align:center}.voucher-category-intro b{font-size:22px}.voucher-category-intro span{color:var(--text-muted);font-size:14px}
.voucher-category-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:760px;margin:0 auto 24px}
.voucher-category-card{display:grid;place-items:center;gap:8px;min-height:230px;padding:24px 12px;border:1px solid var(--pine-300);background:var(--pine-100);color:var(--pine-900);text-align:center;cursor:pointer;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}
.voucher-category-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(35,72,55,.10)}
.voucher-category-card>span{display:grid;place-items:center;width:68px;height:68px;background:var(--pine-700);color:#fff;font-size:30px;font-weight:650}
.voucher-category-card>strong{font-size:30px;font-weight:650;letter-spacing:.08em}.voucher-category-card>b{font-size:18px}.voucher-category-card>small{color:var(--text-muted);font-size:13px}.voucher-category-card>em{margin-top:8px;color:var(--pine-700);font-size:14px;font-style:normal;font-weight:650}
.voucher-category-stay{border-color:var(--stay-300);background:var(--stay-100);color:var(--stay-900)}.voucher-category-stay>span{background:var(--stay-700)}.voucher-category-stay>em{color:var(--stay-900)}
.voucher-category-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:18px 0;padding:14px 0;border-bottom:1px solid var(--border-default)}.voucher-category-head>button{min-height:46px;padding:9px 16px;border:1px solid var(--border-default);background:var(--paper);color:var(--text-title);font:600 14px var(--font-body);cursor:pointer}.voucher-category-head>div{text-align:right}.voucher-category-head small{color:var(--text-faint);font:500 9px var(--font-display);letter-spacing:.16em}.voucher-category-head h2{margin:3px 0 0;font-size:27px}
.voucher-ticket-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 24px}
.voucher-ticket-tile{display:flex;min-height:165px;padding:18px;border:1px solid var(--pine-300);background:var(--pine-100);color:var(--text-title);flex-direction:column;align-items:flex-start;text-align:left;cursor:pointer}
.voucher-ticket-tile>span{color:var(--text-body);font-size:18px;font-weight:600}.voucher-ticket-tile>strong{margin-top:8px;color:var(--pine-900);font-size:28px;font-weight:700;letter-spacing:.08em}.voucher-ticket-tile>small{margin-top:10px;padding:4px 8px;background:var(--pine-700);color:#fff;font-size:11px;font-weight:600}.voucher-ticket-tile>em{margin-top:auto;padding-top:13px;color:var(--pine-700);font-size:12px;font-style:normal;font-weight:650}
.voucher-ticket-stay{border-color:var(--stay-300);background:var(--stay-100)}.voucher-ticket-stay>strong,.voucher-ticket-stay>em{color:var(--stay-900)}.voucher-ticket-stay>small{background:var(--stay-700)}
.voucher-ticket-tile.voucher-upcoming{background:var(--paper-warm);border-color:var(--border-default)}.voucher-ticket-tile.voucher-upcoming>small{background:var(--ink-200);color:var(--ink-700)}
.voucher-ticket-tile.voucher-used,.voucher-ticket-tile.voucher-expired{opacity:.58;background:var(--ink-075);border-color:var(--border-default)}.voucher-ticket-tile.voucher-used>small,.voucher-ticket-tile.voucher-expired>small{background:var(--ink-300)}
.voucher-list{display:grid;gap:10px;margin-top:16px}
.voucher-summary-card{position:relative;display:grid;grid-template-columns:54px minmax(0,1fr) auto;gap:14px;align-items:center;min-height:110px;padding:14px 15px;border:1px solid var(--border-default);background:var(--white)}
.voucher-summary-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--pine-700)}
.voucher-summary-card.voucher-stay::before{background:var(--stay-700)}
.voucher-summary-card.voucher-used,.voucher-summary-card.voucher-expired,.voucher-summary-card.voucher-upcoming{background:var(--paper-warm)}
.voucher-summary-card.voucher-used::before,.voucher-summary-card.voucher-expired::before,.voucher-summary-card.voucher-upcoming::before{background:var(--ink-300)}
.voucher-summary-mark{display:grid;place-items:center;width:48px;height:48px;background:var(--pine-700);color:#fff;font-size:15px;font-weight:500;letter-spacing:.1em}
.voucher-stay .voucher-summary-mark{background:var(--stay-700)}
.voucher-used .voucher-summary-mark,.voucher-expired .voucher-summary-mark,.voucher-upcoming .voucher-summary-mark{background:var(--ink-300)}
.voucher-summary-body{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:1px 16px;min-width:0}
.voucher-summary-body>div{min-width:0}
.voucher-summary-body small{color:var(--text-faint);font:500 8px/1.4 var(--font-display);letter-spacing:.18em}
.voucher-summary-body h3{margin:2px 0 0;color:var(--text-title);font-size:15px;font-weight:500}
.voucher-summary-body>strong{align-self:center;color:var(--text-title);font:500 15px/1.3 var(--font-display)}
.voucher-summary-body>p{grid-column:1/-1;margin:4px 0 0;color:var(--text-muted);font-size:10.5px;line-height:1.55}
.voucher-summary-body>.voucher-source{margin-top:1px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.voucher-status{grid-column:1/-1;justify-self:start;margin-top:7px;padding:2px 7px;background:var(--pine-100);color:var(--pine-900);font-size:9px;letter-spacing:.08em}
.voucher-used .voucher-status,.voucher-expired .voucher-status,.voucher-upcoming .voucher-status{background:var(--ink-075);color:var(--ink-500)}
.voucher-open{min-width:104px;min-height:42px;padding:8px 12px;border:1px solid var(--pine-700);background:var(--pine-700);color:#fff;font:500 11px/1.3 var(--font-body);letter-spacing:.12em;cursor:pointer}
.voucher-stay .voucher-open{border-color:var(--stay-700);background:var(--stay-700)}
.voucher-open:disabled{border-color:var(--border-default);background:transparent;color:var(--text-faint);cursor:not-allowed}
body.voucher-modal-open{overflow:hidden}
.voucher-modal{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(13,17,14,.68);backdrop-filter:blur(5px)}
.voucher-modal-backdrop{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:default}
.voucher-focus-card{position:relative;z-index:1;width:min(100%,470px);max-height:calc(100vh - 36px);padding:0;overflow:auto;border:1px solid var(--border-default);background:var(--paper);box-shadow:0 24px 80px rgba(0,0,0,.32);text-align:center;color:var(--text-title);animation:voucherFocusIn .2s var(--ease)}
.voucher-focus-card *{box-sizing:border-box}
.voucher-focus-meal,.voucher-focus-stay{background:var(--paper)}
@keyframes voucherFocusIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.voucher-focus-close{position:absolute;z-index:3;top:14px;right:14px;width:42px;height:42px;padding:0;border:1px solid rgba(255,255,255,.5);background:transparent;color:#fff;font-size:28px;line-height:1;cursor:pointer}
.voucher-elderly-head{padding:22px 58px 18px;background:var(--pine-900);color:#fff;text-align:center}
.voucher-focus-stay .voucher-elderly-head{background:var(--stay-700)}
.voucher-elderly-head small{display:block;color:rgba(255,255,255,.68);font:500 9px/1.4 var(--font-display);letter-spacing:.16em}
.voucher-elderly-head b{display:block;margin-top:5px;color:#fff;font-size:29px;font-weight:600;letter-spacing:.12em}
.voucher-elderly-body{padding:24px 27px 26px}
.voucher-focus-card .voucher-elderly-body>h2{margin:0 0 17px;color:var(--text-title);font-size:27px;font-weight:700;letter-spacing:.02em}
.voucher-elderly-seal{display:grid;place-items:center;width:124px;height:124px;margin:18px auto;border:2px solid var(--pine-700);color:var(--pine-700);font-size:56px;font-weight:600}
.voucher-focus-stay .voucher-elderly-seal{border-color:var(--stay-700);color:var(--stay-900)}
.voucher-single-qr{width:min(75vw,304px);height:min(75vw,304px);margin:8px auto 16px;padding:15px;background:#fff;border:1px solid var(--border-subtle)}
.voucher-single-qr svg{display:block;width:100%!important;height:100%!important}
.voucher-elderly-kind{display:flex;align-items:center;justify-content:center;gap:12px;margin:5px 0 16px}
.voucher-elderly-kind span{display:grid;place-items:center;width:42px;height:42px;background:var(--pine-700);color:#fff;font-size:18px;font-weight:600}
.voucher-focus-stay .voucher-elderly-kind span{background:var(--stay-700)}
.voucher-elderly-kind strong{color:var(--pine-900);font-size:31px;font-weight:650;letter-spacing:.06em}
.voucher-focus-stay .voucher-elderly-kind strong{color:var(--stay-900)}
.voucher-elderly-facts{display:grid;gap:8px;margin:0;text-align:left}
.voucher-elderly-facts>div{display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--border-subtle)}
.voucher-elderly-facts dt{color:var(--text-muted);font-size:13px;font-weight:500}
.voucher-elderly-facts dd{margin:0;color:var(--text-title);font-size:23px;font-weight:650;line-height:1.35}
.voucher-elderly-badges{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:17px}
.voucher-elderly-badges span,.voucher-elderly-badges b{display:grid;place-items:center;min-height:48px;padding:8px;border:2px solid var(--pine-700);font-size:15px;line-height:1.25}
.voucher-elderly-badges span{background:transparent;color:var(--pine-900);font-weight:600}
.voucher-elderly-badges b{background:var(--pine-700);color:#fff;font-weight:650}
.voucher-focus-stay .voucher-elderly-badges span{border-color:var(--stay-700);color:var(--stay-900);background:var(--stay-100)}
.voucher-focus-stay .voucher-elderly-badges b{border-color:var(--stay-700);background:var(--stay-700)}
.voucher-elderly-companion{margin-top:12px;padding:9px 11px;border-left:3px solid var(--pine-700);background:var(--pine-100);color:var(--text-body);font-size:12px;font-weight:500;text-align:left}
.voucher-elderly-help{margin:17px 0 11px;color:var(--text-title);font-size:16px;font-weight:600}
.voucher-elderly-back{width:100%;min-height:54px;border:1px solid var(--pine-900);background:var(--pine-900);color:#fff;font:600 17px var(--font-body);letter-spacing:.12em;cursor:pointer}
.voucher-focus-stay .voucher-elderly-back{border-color:var(--stay-700);background:var(--stay-700)}
.voucher-confirm-box{margin-top:20px;padding:20px;border:1px solid var(--border-default);background:var(--paper-warm)}
.voucher-confirm-box>b{display:block;color:var(--text-title);font-size:20px;font-weight:650}
.voucher-confirm-box>p{margin:7px 0 17px;color:var(--text-body);font-size:14px;line-height:1.65}
.voucher-confirm-box>button{width:100%;min-height:54px;border:1px solid var(--pine-900);background:var(--pine-900);color:#fff;font:600 16px var(--font-body);letter-spacing:.08em;cursor:pointer}
.voucher-confirm-box>.voucher-confirm-back{margin-top:9px;border-color:var(--border-default);background:var(--white);color:var(--text-title)}
.voucher-focus-number{margin:15px 0 0;color:var(--text-faint);font:10px/1.5 var(--font-mono);word-break:break-all}

@media(max-width:600px){
  .wallet-page main{padding-left:12px;padding-right:12px}
  .voucher-category-intro{margin-top:14px}.voucher-category-intro b{font-size:20px}.voucher-category-intro span{font-size:12px}
  .voucher-category-grid{gap:9px}.voucher-category-card{min-height:190px;padding:18px 7px}.voucher-category-card>span{width:58px;height:58px;font-size:25px}.voucher-category-card>strong{font-size:25px}.voucher-category-card>b{font-size:15px}.voucher-category-card>small{font-size:10px}.voucher-category-card>em{font-size:12px}
  .voucher-category-head{margin:10px 0 12px}.voucher-category-head>button{min-height:42px;padding:7px 10px;font-size:12px}.voucher-category-head h2{font-size:23px}
  .voucher-ticket-grid{grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.voucher-ticket-tile{min-height:145px;padding:14px 12px}.voucher-ticket-tile>span{font-size:16px}.voucher-ticket-tile>strong{font-size:25px}.voucher-ticket-tile>small{font-size:10px}.voucher-ticket-tile>em{font-size:10px}
  .voucher-list{gap:7px}
  .voucher-summary-card{grid-template-columns:36px minmax(0,1fr) 76px;gap:9px;min-height:86px;padding:10px 9px}
  .voucher-summary-mark{width:34px;height:42px;font-size:11px}
  .voucher-summary-body{grid-template-columns:minmax(0,1fr) auto;gap:0 7px}
  .voucher-summary-body h3{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .voucher-summary-body>strong{font-size:11px}
  .voucher-summary-body>p{margin-top:2px;font-size:8.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .voucher-summary-body>.voucher-source{display:none}
  .voucher-status{margin-top:4px;padding:1px 5px;font-size:7.5px}
  .voucher-open{min-width:76px;min-height:38px;padding:6px 5px;font-size:9px;letter-spacing:.04em}
  .voucher-modal{align-items:stretch;padding:0;background:rgba(13,17,14,.74)}
  .voucher-focus-card{width:100%;height:100%;max-height:none;border:0;animation:voucherFocusUp .2s var(--ease)}
  @keyframes voucherFocusUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
  .voucher-elderly-head{padding:18px 55px 15px}.voucher-elderly-head b{font-size:26px}
  .voucher-elderly-body{padding:18px 18px 24px}.voucher-focus-card .voucher-elderly-body>h2{font-size:24px;margin-bottom:13px}
  .voucher-single-qr{width:min(72vw,290px);height:min(72vw,290px);margin-top:4px;padding:12px}
  .voucher-elderly-seal{width:106px;height:106px;margin:14px auto;font-size:46px}
  .voucher-elderly-kind{margin-bottom:12px}.voucher-elderly-kind strong{font-size:27px}
  .voucher-elderly-facts>div{grid-template-columns:78px minmax(0,1fr);padding:7px 0}.voucher-elderly-facts dt{font-size:12px}.voucher-elderly-facts dd{font-size:20px}
  .voucher-elderly-badges{margin-top:13px}.voucher-elderly-badges span,.voucher-elderly-badges b{min-height:44px;font-size:13px}
  .voucher-elderly-help{margin:13px 0 8px;font-size:15px}.voucher-elderly-back{min-height:50px}
  .voucher-confirm-box{margin-top:15px;padding:16px}.voucher-confirm-box>b{font-size:18px}.voucher-confirm-box>p{font-size:13px}
}
