:root{--bg:#0f1116;--surface:#171a21;--surface2:#1d212a;--border:#2a303b;--text:#eef1f5;--muted:#929baa;--gold:#d7a743;--gold2:#f1cc78;--green:#42c995;--red:#e2695f;--blue:#5ba7e8}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 15% -10%,rgba(215,167,67,.13),transparent 32%),var(--bg);color:var(--text);font:14px/1.5 system-ui,"Microsoft YaHei",sans-serif}button,input,select{font:inherit}.shell{min-height:100vh}.topbar{height:64px;padding:0 24px;display:flex;align-items:center;border-bottom:1px solid var(--border);background:rgba(15,17,22,.88);backdrop-filter:blur(15px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#17130c;font-weight:900;background:linear-gradient(145deg,var(--gold2),#bd8429)}.brand strong{display:block;font-size:17px}.brand small{color:var(--muted);letter-spacing:.12em}.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.layout{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:calc(100vh - 64px)}.nav{border-right:1px solid var(--border);padding:18px 12px;background:rgba(18,20,26,.68)}.nav button{width:100%;border:0;background:transparent;color:var(--muted);padding:11px 13px;margin:2px 0;text-align:left;border-radius:9px;cursor:pointer}.nav button:hover,.nav button.active{color:var(--text);background:rgba(215,167,67,.12)}.nav button.active{box-shadow:inset 3px 0 var(--gold)}.content{padding:22px;max-width:1600px}.page{display:none}.page.active{display:block}.page-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:18px}.page-head h1{font-size:22px;margin:0 0 3px}.page-head p{margin:0;color:var(--muted)}.page-head .actions{margin-left:auto}.grid{display:grid;gap:14px}.stats{grid-template-columns:repeat(4,minmax(130px,1fr))}.stat,.card{border:1px solid var(--border);background:linear-gradient(145deg,rgba(29,33,42,.98),rgba(22,25,32,.98));border-radius:13px}.stat{padding:16px}.stat span{color:var(--muted);font-size:12px}.stat strong{display:block;font-size:28px;margin-top:5px}.card{padding:17px;margin-bottom:14px}.card h2,.card h3{margin:0 0 13px;font-size:16px}.form-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px;align-items:end}.field label{display:block;color:var(--muted);font-size:12px;margin:0 0 5px}.field input,.field select{width:100%;height:38px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#11141a;padding:0 10px}.field.wide{grid-column:span 2}.btn{height:38px;padding:0 14px;border:1px solid var(--border);border-radius:8px;background:#222731;color:var(--text);cursor:pointer}.btn:hover{border-color:#505a69}.btn.primary{background:linear-gradient(145deg,var(--gold2),#ba8128);border:0;color:#17130c;font-weight:750}.btn.danger{color:#ffd8d4;border-color:rgba(226,105,95,.5);background:rgba(226,105,95,.1)}.btn.good{color:#bdf4df;border-color:rgba(66,201,149,.42);background:rgba(66,201,149,.1)}.btn.sm{height:30px;padding:0 9px;font-size:12px}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.toolbar .spacer{flex:1}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:10px}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:10px 11px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}th{color:var(--muted);font-size:11px;background:#151820;position:sticky;top:0}tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;border-radius:99px;padding:3px 8px;font-size:11px;color:var(--muted);background:#262b35}.badge.ok{color:#a9f0d2;background:rgba(66,201,149,.12)}.badge.warn{color:#f4d18b;background:rgba(215,167,67,.13)}.badge.bad{color:#ffc3bd;background:rgba(226,105,95,.12)}.muted{color:var(--muted)}.mono{font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.empty{padding:26px;text-align:center;color:var(--muted)}.notice{padding:10px 12px;border:1px solid rgba(215,167,67,.32);border-radius:9px;color:#e8ca8b;background:rgba(215,167,67,.08);margin-bottom:13px}.account-status{display:flex;gap:6px;flex-wrap:wrap}.log-list{display:grid;gap:8px}.log-item{display:grid;grid-template-columns:150px 110px 1fr;gap:10px;padding:10px;border-bottom:1px solid var(--border)}.switch-link{color:var(--gold2);text-decoration:none}.mobile-nav{display:none}.client-main{max-width:1080px;margin:auto;padding:20px}.client-tabs{display:flex;gap:5px;padding:5px;border:1px solid var(--border);border-radius:12px;background:var(--surface);margin:15px 0}.client-tabs button{flex:1;border:0;border-radius:8px;padding:10px;color:var(--muted);background:transparent}.client-tabs button.active{color:#19140c;background:var(--gold2);font-weight:750}.ticket-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.ticket-card{padding:17px;border:1px solid var(--border);border-radius:13px;background:linear-gradient(150deg,#1d212a,#15181f)}.ticket-top{display:flex;gap:12px;align-items:start}.ticket-number{font-size:38px;font-weight:850;line-height:1;color:var(--gold2)}.ticket-store{font-weight:700;font-size:15px}.ticket-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:15px 0}.ticket-meta div{padding:8px;border-radius:8px;background:#12151b}.ticket-meta span{display:block;color:var(--muted);font-size:10px}.ticket-meta strong{font-size:13px}.ticket-actions{display:flex;gap:8px;flex-wrap:wrap}.points-bar{display:flex;gap:15px;align-items:center;padding:13px 15px;border:1px solid rgba(215,167,67,.3);border-radius:11px;background:rgba(215,167,67,.07)}.points-bar strong{font-size:20px;color:var(--gold2)}
.btn:disabled{cursor:not-allowed;opacity:.5}
.weekday-picker{display:flex;align-items:center;gap:7px;min-height:38px;flex-wrap:wrap}.weekday-picker label{display:inline-flex;align-items:center;gap:4px;margin:0;padding:5px 7px;border:1px solid var(--border);border-radius:7px;color:var(--text);background:#11141a;cursor:pointer}.weekday-picker input{width:auto;height:auto;margin:0;accent-color:var(--gold)}.pager{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px}.pager:empty{display:none}.account-page-actions{display:flex;gap:8px;flex-wrap:wrap}.transfer-phone-option{display:flex;align-items:center;gap:8px;margin-top:13px;padding:10px;border:1px solid var(--border);border-radius:9px;color:var(--muted)}.transfer-phone-option input{accent-color:var(--gold)}.transfer-file{margin-top:12px;word-break:break-all}.toolbar>input.btn{width:min(260px,100%)}
.quantum-dialog{width:min(720px,calc(100vw - 28px));max-width:none;max-height:calc(100vh - 28px);padding:0;border:1px solid rgba(215,167,67,.34);border-radius:16px;color:var(--text);background:#171a21;box-shadow:0 24px 80px rgba(0,0,0,.58)}.quantum-dialog::backdrop{background:rgba(3,5,8,.76);backdrop-filter:blur(4px)}.quantum-dialog-card{max-height:calc(100vh - 30px);padding:20px;overflow:auto}.quantum-dialog-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:15px}.quantum-dialog-head h2{margin:0 0 3px;font-size:20px}.quantum-dialog-head p{margin:0;color:var(--muted);font-size:12px}.quantum-close{margin-left:auto}.quantum-note{display:grid;gap:3px;margin-bottom:14px;padding:11px 12px;border:1px solid rgba(66,201,149,.34);border-radius:10px;background:rgba(66,201,149,.08);color:#bdf4df}.quantum-note span{color:var(--muted);font-size:12px}.quantum-key-row{display:flex;gap:8px;align-items:center}.quantum-key-row input{flex:1;min-width:0}.quantum-key-status{min-height:19px;margin-top:6px;font-size:12px}.quantum-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:13px}.quantum-warning{margin-top:13px;padding:10px 12px;border:1px solid rgba(226,105,95,.34);border-radius:9px;color:#ffc3bd;background:rgba(226,105,95,.08);font-size:12px}.quantum-status{min-height:24px;margin-top:11px}.quantum-progress{height:7px;margin-top:6px;overflow:hidden;border-radius:99px;background:#0f1116}.quantum-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gold),var(--gold2));transition:width .25s ease}.quantum-progress-meta{display:flex;justify-content:space-between;gap:12px;margin-top:7px;color:var(--muted);font-size:11px}.quantum-progress-meta span:last-child{text-align:right}.quantum-consecutive-status{margin-top:9px;padding:7px 9px;border:1px solid rgba(215,167,67,.28);border-radius:8px;color:#f4d18b;background:rgba(215,167,67,.08);font-size:11px}.quantum-consecutive-status.is-safe{border-color:rgba(66,201,149,.25);color:#a9f0d2;background:rgba(66,201,149,.07)}.quantum-failure-panel{margin-top:10px;padding:10px;border:1px solid rgba(226,105,95,.3);border-radius:10px;background:rgba(226,105,95,.055)}.quantum-failure-head{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#ffc3bd;font-size:12px}.quantum-failure-head span{color:var(--muted);font-size:10px}.quantum-failure-list{display:grid;gap:6px;margin-top:8px;max-height:168px;overflow:auto}.quantum-failure-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 8px;padding:7px 8px;border:1px solid rgba(226,105,95,.19);border-radius:8px;background:rgba(15,17,22,.55)}.quantum-failure-item .badge{grid-row:1 / span 2;align-self:start}.quantum-failure-item strong{color:#f2e9e8;font-size:11px}.quantum-failure-item p{margin:0;color:#d4bbc0;font-size:11px;overflow-wrap:anywhere}.quantum-failure-item.is-uncertain{border-color:rgba(215,167,67,.28);background:rgba(215,167,67,.055)}.quantum-failure-item.is-uncertain p{color:#e8ca8b}.quantum-dialog-actions{display:flex;align-items:center;gap:8px;margin-top:17px;padding-top:15px;border-top:1px solid var(--border)}.quantum-dialog-actions .spacer{flex:1}
.store-queue-list{display:grid;gap:12px}.store-queue-card{overflow:hidden;border:1px solid var(--border);border-radius:14px;background:linear-gradient(145deg,rgba(29,33,42,.98),rgba(25,29,37,.98))}.store-queue-head{display:flex;align-items:center;gap:16px;padding:14px;border-bottom:1px solid var(--border)}.store-queue-head h3{margin:0 0 2px;font-size:16px}.store-queue-status{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;margin-left:auto;font-size:11px}.store-queue-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px 14px}.store-take-btn{white-space:nowrap}.queue-trend-panel{padding:13px 14px 10px}.queue-trend-heading,.queue-trend-foot{display:flex;justify-content:space-between;gap:12px;color:#9fd6ff;font-size:12px}.queue-trend-heading strong{font-weight:650}.queue-trend-plot{display:flex;align-items:flex-end;gap:clamp(1px,.18vw,3px);height:130px;margin:8px 0 6px;padding-top:5px;border-bottom:1px solid rgba(146,155,170,.18)}.queue-trend-bar{flex:1 1 0;min-width:1px;height:var(--queue-level);max-height:100%;border-radius:3px 3px 0 0;background:linear-gradient(180deg,#e4ad42 0%,#b77d25 58%,rgba(101,73,31,.58) 100%);box-shadow:0 0 5px rgba(215,167,67,.15)}.queue-trend-bar.latest{background:linear-gradient(180deg,var(--gold2),#c58b2c 58%,rgba(121,86,34,.7) 100%);box-shadow:0 0 9px rgba(241,204,120,.28)}.queue-trend-empty{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);border:1px dashed rgba(146,155,170,.25);border-radius:9px}.queue-trend-foot{color:#9fbddd}.queue-trend-foot span:last-child{text-align:right}
.client-store-group{margin-bottom:15px;padding:14px;border:1px solid var(--border);border-radius:14px;background:rgba(23,26,33,.76)}.client-store-group>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.client-store-group h2{margin:0;font-size:16px}.client-status-group,.client-trend-card{margin-bottom:10px;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:rgba(23,26,33,.8)}.client-status-group>summary,.client-trend-card>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none}.client-status-group>summary::-webkit-details-marker,.client-trend-card>summary::-webkit-details-marker{display:none}.client-status-group>summary::after,.client-trend-card>summary::after{content:'⌄';color:var(--muted);transition:transform .18s ease}.client-status-group[open]>summary::after,.client-trend-card[open]>summary::after{transform:rotate(180deg)}.client-status-group>.ticket-grid{padding:0 12px 12px}.client-status-group>.empty{padding:15px}.client-trend-card>summary span{color:#9fd6ff;font-size:12px}.client-trend-card .queue-trend-plot{height:105px}.load-more{display:flex;align-items:center;justify-content:center;gap:12px;margin:14px 0}
@media(max-width:900px){.layout{grid-template-columns:1fr}.nav{display:none}.content{padding:14px}.mobile-nav{display:flex;overflow:auto;gap:4px;padding:8px 12px;border-bottom:1px solid var(--border)}.mobile-nav button{white-space:nowrap}.stats{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:repeat(2,1fr)}.ticket-grid{grid-template-columns:1fr}.topbar{padding:0 14px}.brand small{display:none}}
@media(max-width:560px){.stats,.form-grid,.quantum-grid{grid-template-columns:1fr}.field.wide{grid-column:span 1}.top-actions .label{display:none}.content{padding-bottom:80px}.client-main{padding:12px}.client-tabs{position:sticky;bottom:8px;z-index:10}.ticket-number{font-size:34px}.ticket-meta{grid-template-columns:repeat(2,1fr)}.quantum-dialog-card{padding:15px}.quantum-key-row,.quantum-dialog-actions{align-items:stretch;flex-direction:column}.quantum-dialog-actions .spacer{display:none}.quantum-dialog-actions .btn{width:100%}.quantum-progress-meta{display:grid;gap:3px}.quantum-progress-meta span:last-child{text-align:left}.page-head{flex-wrap:wrap}.page-head .actions{margin-left:0;width:100%}.page-head .actions .btn{width:100%}.store-queue-head{align-items:flex-start}.store-queue-status{max-width:58%}.store-queue-status>.muted{width:100%;text-align:right}.queue-trend-plot{gap:1px;height:100px}.store-queue-actions{align-items:stretch;flex-direction:column}.store-queue-actions .btn{width:100%}}
.analytics-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.8fr);gap:16px}.analytics-chart{display:flex;align-items:stretch;gap:7px;height:220px;padding:14px 4px 0;border-bottom:1px solid var(--border);overflow-x:auto}.analytics-day{display:grid;grid-template-rows:minmax(120px,1fr) 22px 20px;align-items:end;min-width:34px;flex:1;text-align:center;color:var(--muted);font-size:10px}.analytics-day>strong{color:var(--text);font-size:11px;font-variant-numeric:tabular-nums}.analytics-columns{height:100%;display:flex;align-items:flex-end;justify-content:center;gap:3px}.analytics-bar{display:block;width:min(11px,42%);height:var(--analytics-level);min-height:3px;border-radius:4px 4px 1px 1px;background:linear-gradient(180deg,#f3cf72,#b98122);box-shadow:0 0 12px rgba(221,169,61,.14)}.analytics-bar.claimed{background:linear-gradient(180deg,#6fd6b5,#2f8f75);box-shadow:0 0 12px rgba(55,166,135,.13)}.analytics-legend{display:flex;justify-content:flex-end;gap:18px;margin-top:10px;color:var(--muted);font-size:11px}.analytics-legend span{display:flex;align-items:center;gap:6px}.analytics-legend i{width:9px;height:9px;border-radius:3px;background:#d6a53e}.analytics-legend i.claimed{background:#49ad8e}.analytics-status-row{display:grid;grid-template-columns:70px minmax(90px,1fr) 36px;gap:10px;align-items:center;margin:12px 0;color:var(--muted);font-size:12px}.analytics-status-row>div{height:8px;border-radius:999px;background:rgba(255,255,255,.045);overflow:hidden}.analytics-status-row i{display:block;width:var(--analytics-width);height:100%;border-radius:inherit;background:linear-gradient(90deg,#9b6c1d,#e8c363)}.analytics-status-row strong{text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.analytics-export{align-items:end}.analytics-export .btn{min-height:38px}
@media(max-width:900px){.analytics-grid{grid-template-columns:1fr}.analytics-export{align-items:stretch}.analytics-export>*{width:100%}.analytics-day{min-width:32px}}
.orphan-dialog{width:min(1040px,calc(100vw - 28px))}.orphan-dialog #orphanScanStatus{min-height:24px;margin:10px 0}.orphan-dialog #orphanCandidates{margin-top:8px}
.log-detail{min-width:0}.log-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:5px;color:var(--muted);font-size:11px}.log-meta .badge{white-space:nowrap}@media(max-width:700px){.log-item{grid-template-columns:1fr}.log-item>.badge{justify-self:start}}

/* 客户端移动端视觉：以原金匠寿司门店卡为基准，独立于管理后台主题。 */
.hjyq-client-page{--client-bg:#100c19;--client-surface:#1a1428;--client-surface-2:#221a33;--client-border:#3b2c53;--client-purple:#9b6cff;--client-purple-2:#c39aff;--client-pink:#ef8dff;--client-green:#63d6aa;--client-red:#ff7d8d;--client-muted:#a69bb7;background:radial-gradient(circle at 50% -18%,rgba(139,92,246,.27),transparent 42%),var(--client-bg);color:#f7f2ff;min-height:100vh}
.hjyq-client-page .client-topbar{height:60px;padding:8px max(14px,calc((100vw - 760px)/2));background:rgba(20,14,32,.94);border-color:rgba(155,108,255,.24);box-shadow:0 4px 24px rgba(0,0,0,.2)}
.hjyq-client-page .client-brand{display:flex;align-items:center;gap:9px;min-width:0}.hjyq-client-page .client-logo{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;color:#160d24;background:linear-gradient(145deg,var(--client-purple-2),var(--client-purple));font-size:18px;font-weight:900;box-shadow:0 7px 20px rgba(155,108,255,.3)}
.hjyq-client-page .client-brand h1{margin:0;font-size:16px;line-height:1.15;color:#faf7ff}.hjyq-client-page .client-brand small{display:block;margin-top:2px;color:var(--client-muted);font-size:9px;letter-spacing:.08em}.hjyq-client-page .top-actions{gap:7px}.hjyq-client-page .top-actions .btn{height:30px;padding:0 9px;border-color:var(--client-border);background:rgba(255,255,255,.035);color:#eee7fa}.hjyq-client-page .theme-select{height:30px;min-width:68px;padding:0 7px;border:1px solid var(--client-border);border-radius:8px;color:#eee7fa;background:var(--client-surface)}
.hjyq-client-page .connection{display:flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid var(--client-border);border-radius:20px;color:var(--client-muted);font-size:10px;white-space:nowrap}.connection-dot{width:7px;height:7px;display:block;border-radius:50%;background:#f0ae62;box-shadow:0 0 7px currentColor}.connection-dot.online{color:var(--client-green);background:var(--client-green)}.connection-dot.offline{color:var(--client-red);background:var(--client-red)}
.hjyq-client-page .client-main{width:min(760px,100%);padding:14px 14px calc(94px + env(safe-area-inset-bottom));margin:0 auto}.hjyq-client-page .client-main button,.hjyq-client-page .client-main input{font-family:inherit}
.hjyq-client-page [hidden]{display:none!important}
.client-points-strip{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:11px 12px;border:1px solid rgba(155,108,255,.38);border-radius:16px;background:linear-gradient(135deg,rgba(139,92,246,.18),rgba(26,20,40,.92) 58%);box-shadow:0 10px 26px rgba(0,0,0,.18)}.client-points-icon{width:35px;height:35px;display:grid;place-items:center;flex:none;border-radius:11px;color:#160d24;background:var(--client-purple-2);font-weight:900}.client-points-copy{min-width:0;flex:1}.client-points-copy>span,.client-points-stat span{display:block;color:var(--client-muted);font-size:10px}.client-points-copy>strong{display:block;margin-top:1px;color:var(--client-purple-2);font:800 24px/1 ui-monospace,SFMono-Regular,Consolas,monospace}.client-points-copy small{display:block;margin-top:3px;overflow:hidden;color:var(--client-muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.client-points-stat{min-width:48px;padding-left:8px;border-left:1px solid rgba(166,155,183,.22);text-align:center}.client-points-stat strong{display:block;margin-top:2px;color:#f6efff;font:800 18px/1 ui-monospace,SFMono-Regular,Consolas,monospace}.client-points-active strong{color:var(--client-green)}.client-ledger-open{flex:none;height:32px!important;padding:0 8px!important;border-color:rgba(195,154,255,.55)!important;background:rgba(155,108,255,.13)!important;color:var(--client-purple-2)!important;font-size:10px!important}
.hjyq-client-page .client-tabs{position:relative;display:flex;gap:4px;margin:0 0 14px;padding:5px;border:1px solid rgba(155,108,255,.3);border-radius:15px;background:rgba(26,20,40,.92);box-shadow:0 8px 25px rgba(0,0,0,.15)}.hjyq-client-page .client-tabs button{display:flex;align-items:center;justify-content:center;gap:4px;min-height:42px;padding:5px 4px;border:0;border-radius:11px;background:transparent;color:var(--client-muted);font-size:12px;cursor:pointer}.hjyq-client-page .client-tabs button.active{color:#190d2c;background:linear-gradient(145deg,var(--client-purple-2),var(--client-purple));font-weight:800;box-shadow:0 5px 16px rgba(155,108,255,.28)}.hjyq-client-page .client-tabs button b{min-width:18px;padding:1px 5px;border-radius:20px;background:rgba(255,255,255,.09);font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace}.hjyq-client-page .client-tabs button.active b{background:rgba(25,13,44,.16)}.tab-icon{display:inline-grid;place-items:center;width:19px;height:19px;border-radius:6px;background:rgba(195,154,255,.13);font-size:10px}.client-page[hidden]{display:none!important}
.client-store-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 2px 10px}.client-store-toolbar span{display:block;color:var(--client-muted);font-size:10px}.client-store-toolbar strong{display:block;margin-top:2px;color:#f9f3ff;font-size:16px}.client-store-toolbar .btn{height:32px;border-color:var(--client-border);background:var(--client-surface);color:var(--client-purple-2)}.client-search-wrap{position:relative;margin-bottom:12px}.client-search-wrap>span{position:absolute;left:12px;top:50%;z-index:1;transform:translateY(-50%);color:var(--client-purple-2);font-size:20px;pointer-events:none}.client-search-wrap input{width:100%;height:40px;padding:0 12px 0 36px;border:1px solid var(--client-border);border-radius:12px;outline:0;color:#f8f2ff;background:var(--client-surface)}.client-search-wrap input:focus{border-color:var(--client-purple);box-shadow:0 0 0 3px rgba(155,108,255,.14)}.client-search-wrap input::placeholder{color:#887b9b}
.client-store-card{overflow:hidden;margin-bottom:12px;border:1px solid var(--client-border);border-radius:16px;background:linear-gradient(155deg,rgba(34,26,51,.96),rgba(24,18,37,.98));box-shadow:0 10px 28px rgba(0,0,0,.17)}.client-store-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 13px 11px;border-bottom:1px solid rgba(166,155,183,.16);background:linear-gradient(90deg,rgba(155,108,255,.1),transparent 68%)}.client-store-head h2{margin:0;color:#faf5ff;font-size:15px;font-weight:800}.client-store-head p{margin:3px 0 0;color:var(--client-muted);font-size:10px}.client-queue-pill{flex:none;padding:5px 8px;border:1px solid rgba(195,154,255,.4);border-radius:9px;color:var(--client-purple-2);background:rgba(155,108,255,.1);font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}.client-ticket-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:10px}.client-ticket-card{position:relative;min-width:0;padding:11px 11px 10px;border:1px solid rgba(166,155,183,.21);border-radius:13px;background:rgba(18,13,29,.72);box-shadow:inset 0 1px rgba(255,255,255,.025)}.client-ticket-card::before{content:'';position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:var(--client-purple)}.client-ticket-card.called{border-color:rgba(239,141,255,.42);background:linear-gradient(145deg,rgba(100,48,100,.25),rgba(18,13,29,.84))}.client-ticket-card.called::before{background:var(--client-pink)}.client-ticket-card.done{border-color:rgba(99,214,170,.32)}.client-ticket-card.done::before{background:var(--client-green)}.client-ticket-card.ended{opacity:.78}.client-ticket-card.ended::before{background:#756984}.client-ticket-head{display:flex;align-items:flex-start;gap:8px;padding-left:4px}.client-ticket-number{min-width:0;color:var(--client-purple-2);font:900 31px/.95 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:-1px}.client-ticket-identity{min-width:0;display:flex;flex:1;flex-direction:column;align-items:flex-end;gap:2px;text-align:right}.client-ticket-identity strong{max-width:100%;overflow:hidden;color:#f9f2ff;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.client-ticket-identity span:not(.client-status-badge){max-width:100%;overflow:hidden;color:var(--client-muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.client-status-badge{display:inline-flex!important;align-items:center;padding:2px 6px;border-radius:20px;font-size:9px!important;white-space:nowrap}.client-status-badge.waiting{color:#cfb2ff;background:rgba(155,108,255,.17)}.client-status-badge.called{color:#ffb6fb;background:rgba(239,141,255,.17)}.client-status-badge.done{color:#9deacb;background:rgba(99,214,170,.14)}.client-status-badge.ended{color:#b1a7bd;background:rgba(166,155,183,.12)}
.client-ticket-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin:10px 0 8px;padding:7px;border:1px solid rgba(166,155,183,.13);border-radius:9px;background:rgba(255,255,255,.025)}.client-ticket-summary span{min-width:0}.client-ticket-summary em{display:block;color:#887b9b;font-size:9px;font-style:normal}.client-ticket-summary b{display:block;margin-top:1px;overflow:hidden;color:#eee6f7;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.client-ticket-foot{display:flex;align-items:center;justify-content:space-between;gap:5px;flex-wrap:wrap}.client-ticket-time{color:#887b9b;font:9px ui-monospace,SFMono-Regular,Consolas,monospace}.client-ticket-actions{display:flex;justify-content:flex-end;gap:5px;flex:1;flex-wrap:wrap}.client-action{min-height:27px;padding:4px 7px;border:1px solid var(--client-border);border-radius:8px;color:#eee6f7;background:rgba(255,255,255,.035);font-size:10px;text-decoration:none;cursor:pointer}.client-action:hover{border-color:var(--client-purple);color:#fff}.client-claim{border-color:rgba(195,154,255,.6);background:rgba(155,108,255,.16);color:var(--client-purple-2);font-weight:750}.client-unclaim{border-color:rgba(255,125,141,.45);background:rgba(255,125,141,.08);color:#ffadb7}.client-display{border-color:rgba(195,154,255,.5);color:var(--client-purple-2)}.client-snapshot{border-color:rgba(116,174,255,.42);color:#a9ccff}.client-action:disabled{opacity:.45;cursor:not-allowed}.client-ticket-note{margin:7px 0 0;padding-top:6px;border-top:1px solid rgba(166,155,183,.12);color:#a997ba;font-size:9px;line-height:1.35}
.client-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:12px}.client-stat-card{padding:10px 9px;border:1px solid var(--client-border);border-radius:12px;background:var(--client-surface);text-align:center}.client-stat-card span{display:block;color:var(--client-muted);font-size:9px;line-height:1.2}.client-stat-card strong{display:block;margin-top:5px;color:var(--client-purple-2);font:800 22px/1 ui-monospace,SFMono-Regular,Consolas,monospace}.client-stat-card.called strong{color:var(--client-pink)}.client-stat-card.done strong{color:var(--client-green)}.client-stat-card.ended strong{color:#b1a7bd}.client-status-card{overflow:hidden;margin-bottom:10px;border:1px solid var(--client-border);border-radius:14px;background:rgba(26,20,40,.82)}.client-status-card>summary,.client-trend-card>summary{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3px 9px;padding:11px 12px;cursor:pointer;list-style:none}.client-status-card>summary::-webkit-details-marker,.client-trend-card>summary::-webkit-details-marker{display:none}.client-status-card>summary::after,.client-trend-card>summary::after{content:'›';grid-column:2;grid-row:1 / span 2;color:#887b9b;font-size:22px;line-height:1;transform:rotate(90deg);transition:transform .16s}.client-status-card:not([open])>summary::after,.client-trend-card:not([open])>summary::after{transform:rotate(0)}.client-status-card>summary strong,.client-trend-card>summary strong{color:#f7f1ff;font-size:13px}.client-status-card>summary span{grid-column:1;color:var(--client-purple-2);font-size:10px}.client-status-card>summary small{grid-column:1;color:var(--client-muted);font-size:9px}.client-status-card>.client-ticket-grid{padding-top:0}.client-trend-section{margin-top:16px;padding:13px;border:1px solid var(--client-border);border-radius:16px;background:rgba(26,20,40,.78)}.client-section-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0 1px 10px}.client-section-title h2{margin:0;color:#f8f1ff;font-size:15px}.client-section-title span{color:var(--client-muted);font-size:9px}.client-trend-card{overflow:hidden;margin-bottom:8px;border:1px solid rgba(166,155,183,.2);border-radius:12px;background:var(--client-surface-2)}.client-trend-card>summary{grid-template-columns:minmax(0,1fr) auto}.client-trend-card>summary span{color:var(--client-purple-2);font:700 10px ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap}.client-trend-card>summary small{grid-column:1;color:var(--client-muted);font-size:9px}.client-trend-body{padding:5px 11px 10px;border-top:1px solid rgba(166,155,183,.14)}.client-trend-chart{display:flex;align-items:flex-end;gap:2px;height:105px;padding:5px 0 0;border-bottom:1px solid rgba(166,155,183,.17)}.client-trend-bar{flex:1 1 0;min-width:1px;height:var(--client-trend-level);max-height:100%;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--client-purple-2),rgba(155,108,255,.35));box-shadow:0 0 6px rgba(155,108,255,.2)}.client-trend-bar.latest{background:linear-gradient(180deg,var(--client-pink),var(--client-purple));box-shadow:0 0 8px rgba(239,141,255,.3)}.client-trend-empty{display:grid;place-items:center;width:100%;height:100%;color:var(--client-muted);font-size:10px}.client-trend-foot{display:flex;justify-content:space-between;gap:8px;padding-top:5px;color:var(--client-muted);font-size:9px}.client-trend-foot span:last-child{text-align:right}
.client-history-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:3px 2px 12px}.client-history-head h2{margin:0;color:#f9f2ff;font-size:18px}.client-history-head p{margin:3px 0 0;color:var(--client-muted);font-size:10px}.client-history-head .btn{height:32px;color:#ffadb7;border-color:rgba(255,125,141,.42);background:rgba(255,125,141,.08)}.client-history-list{display:grid;gap:9px}.client-history-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px 10px;align-items:center;padding:12px;border:1px solid var(--client-border);border-radius:13px;background:var(--client-surface)}.client-history-number{color:var(--client-purple-2);font:800 22px ui-monospace,SFMono-Regular,Consolas,monospace}.client-history-main{min-width:0}.client-history-main strong,.client-history-main span,.client-history-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.client-history-main strong{color:#f8f1ff;font-size:12px}.client-history-main span{margin-top:2px;color:#c0b4cb;font-size:10px}.client-history-main small{margin-top:3px;color:var(--client-muted);font-size:9px}.client-history-result{text-align:right;color:var(--client-muted);font-size:10px;white-space:nowrap}.client-history-result.waiting,.client-history-result.called{color:var(--client-purple-2)}.client-history-result.done{color:var(--client-green)}.client-history-result.ended{color:#b1a7bd}.client-history-points{display:block;margin-top:3px;color:#c0b4cb;font:9px ui-monospace,SFMono-Regular,Consolas,monospace}.client-history-card>.client-ticket-actions{grid-column:1 / -1;justify-content:flex-end}
.client-empty{display:grid;place-items:center;min-height:160px;padding:30px 18px;border:1px dashed rgba(166,155,183,.25);border-radius:16px;color:var(--client-muted);text-align:center}.client-empty.compact{min-height:70px;padding:15px;border:0}.client-empty-icon{display:grid;place-items:center;width:44px;height:44px;margin-bottom:9px;border-radius:14px;color:var(--client-purple-2);background:rgba(155,108,255,.14);font-size:20px}.client-empty strong{color:#eee5f8;font-size:14px}.client-empty p{margin:4px 0 0;font-size:10px}.client-loading{height:190px;border:1px solid var(--client-border);border-radius:16px;background:linear-gradient(100deg,var(--client-surface) 25%,var(--client-surface-2) 42%,var(--client-surface) 60%);background-size:300% 100%;animation:client-loading 1.3s infinite}@keyframes client-loading{to{background-position:-150% 0}}
.client-dialog{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:20px;background:rgba(6,3,12,.74);backdrop-filter:blur(7px);opacity:0;transition:opacity .14s}.client-dialog[hidden]{display:none!important}.client-dialog.open{opacity:1}.client-dialog-card{position:relative;width:min(370px,100%);padding:22px;border:1px solid rgba(155,108,255,.44);border-radius:20px;background:linear-gradient(155deg,rgba(55,35,83,.98),var(--client-surface) 52%);box-shadow:0 26px 75px rgba(0,0,0,.56);transform:translateY(8px) scale(.98);transition:transform .16s}.client-dialog.open .client-dialog-card{transform:none}.client-dialog-card>p{text-align:center;color:#f7efff;font-size:16px;font-weight:700;line-height:1.5}.client-dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}.client-dialog-actions .btn{height:42px}.client-dialog-close{position:absolute;right:11px;top:9px;width:32px;height:32px;border:1px solid var(--client-border);border-radius:50%;color:#e9def4;background:transparent;font-size:21px;cursor:pointer}.client-ledger-card{max-height:min(720px,88vh);overflow:auto}.client-ledger-card h2{margin:0;color:#f8efff;font-size:19px}.client-ledger-card>p{margin:4px 0 14px;font-size:10px}.client-ledger-list{display:grid;gap:8px}.client-ledger-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;padding:10px;border:1px solid rgba(166,155,183,.18);border-radius:11px;background:rgba(255,255,255,.025)}.client-ledger-row strong,.client-ledger-row small,.client-ledger-row span{display:block}.client-ledger-row strong{font-size:11px}.client-ledger-row small{margin-top:3px;color:var(--client-muted);font-size:9px}.client-ledger-row b{font:800 14px ui-monospace,SFMono-Regular,Consolas,monospace}.client-ledger-row b.positive{color:var(--client-green)}.client-ledger-row b.negative{color:var(--client-red)}.client-ledger-row>span{grid-column:1 / -1;color:var(--client-muted);font-size:9px}
.client-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.toast-host{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:120;display:grid;gap:8px;pointer-events:none}.toast{min-width:240px;max-width:min(420px,calc(100vw - 28px));padding:12px 15px;border:1px solid var(--client-border);border-left:4px solid var(--client-purple);border-radius:10px;color:#f6efff;background:rgba(26,20,40,.97);box-shadow:0 16px 38px rgba(0,0,0,.48);font-size:12px;animation:client-toast-in .2s ease}.toast.ok{border-left-color:var(--client-green)}.toast.danger{border-left-color:var(--client-red)}@keyframes client-toast-in{from{opacity:0;transform:translateY(8px)}}
@media(max-width:640px){.hjyq-client-page .client-topbar{height:56px;padding:7px 12px}.hjyq-client-page .top-actions .label,.hjyq-client-page .top-actions .connection span{display:none}.hjyq-client-page .theme-select{min-width:58px;width:58px;font-size:10px}.hjyq-client-page .client-main{padding:12px 11px calc(86px + env(safe-area-inset-bottom))}.client-points-strip{gap:7px;padding:9px;border-radius:14px}.client-points-icon{width:32px;height:32px}.client-points-copy>strong{font-size:21px}.client-points-stat{min-width:42px;padding-left:5px}.client-points-stat strong{font-size:16px}.client-ledger-open{padding:0 6px!important;font-size:9px!important}.hjyq-client-page .client-tabs{position:fixed;left:10px;right:10px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:50;margin:0;padding:5px;border-radius:16px;background:rgba(26,20,40,.97);box-shadow:0 11px 36px rgba(0,0,0,.48);backdrop-filter:blur(18px)}.hjyq-client-page .client-tabs button{min-height:51px;flex-direction:column;gap:1px;font-size:10px}.tab-icon{width:21px;height:21px;font-size:11px}.client-ticket-grid{grid-template-columns:1fr;padding:8px}.client-ticket-card{padding:12px}.client-ticket-number{font-size:33px}.client-store-head{padding:12px 11px}.client-store-head h2{font-size:14px}.client-stat-grid{grid-template-columns:repeat(2,1fr);gap:7px}.client-history-card{grid-template-columns:auto minmax(0,1fr);gap:7px 9px}.client-history-result{grid-column:2;text-align:left}.client-history-card>.client-ticket-actions{grid-column:1 / -1}.client-trend-chart{height:92px}.client-section-title h2{font-size:14px}}
.tab-icon{font-size:0!important}.tab-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Store trend cards follow the Kinsho mobile reference: a deep violet card,
   a dotted zero baseline, narrow purple bars, and explicit current/peak/sample
   labels.  The status/actions remain available for desktop operations. */
.store-queue-card{border-color:rgba(117,95,151,.55);border-radius:20px;background:linear-gradient(145deg,#29233a 0%,#211e2e 100%);box-shadow:0 8px 24px rgba(9,7,18,.22)}
.store-queue-head{position:relative;min-height:86px;padding:18px 21px 15px;border-bottom-color:rgba(151,126,193,.18)}
.store-queue-head-main{min-width:0;flex:1 1 auto;padding-right:12px}
.store-queue-head h3{font-size:20px;line-height:1.25;letter-spacing:.01em}
.store-queue-head-main .mono{margin-top:4px;font-size:11px;opacity:.72}
.store-queue-status{padding-right:22px}
.store-queue-chevron{position:absolute;right:19px;top:25px;color:#a7a0ba;font-size:24px;line-height:1;transform:translateY(-2px)}
.queue-trend-panel{padding:20px 21px 14px;background:linear-gradient(180deg,rgba(36,31,51,.72),rgba(30,28,43,.34))}
.queue-trend-heading{align-items:center;font-size:14px;color:#a3d8ff}
.queue-trend-heading .queue-trend-label{font-weight:500}
.queue-trend-heading .queue-trend-current{color:#a9ddff;font-size:15px;font-weight:650;white-space:nowrap}
.queue-trend-plot{position:relative;z-index:0;height:146px;margin:14px 0 8px;padding:6px 1px 0;gap:clamp(1px,.2vw,3px);border-bottom:0}
.queue-trend-plot::after{content:"";position:absolute;right:0;bottom:0;left:0;z-index:0;border-bottom:3px dotted rgba(159,139,193,.48);pointer-events:none}
.queue-trend-bar{position:relative;z-index:1;border-radius:3px 3px 0 0;background:linear-gradient(180deg,#bd8cff 0%,#8e63da 58%,rgba(104,73,151,.62) 100%);box-shadow:0 0 6px rgba(174,123,255,.2)}
.queue-trend-bar.latest{background:linear-gradient(180deg,#d2a5ff 0%,#9b70eb 58%,rgba(118,82,175,.72) 100%);box-shadow:0 0 10px rgba(190,142,255,.34)}
.queue-trend-empty{position:relative;z-index:1;border-color:rgba(159,139,193,.3);background:rgba(28,25,42,.35)}
.queue-trend-foot{font-size:13px;color:#aaa4ba}
.queue-trend-foot .queue-trend-peak,.queue-trend-foot .queue-trend-samples{font-variant-numeric:tabular-nums}
.queue-trend-panel--stale .queue-trend-heading .queue-trend-label{color:#c0b8cb}
.queue-trend-panel--stale .queue-trend-bar{opacity:.68}

@media(max-width:560px){
  .store-queue-card{border-radius:20px}
  .store-queue-head{min-height:82px;padding:17px 16px 14px}
  .store-queue-head h3{font-size:19px}
  .store-queue-status{max-width:66%;padding-right:22px;gap:5px}
  .store-queue-status>.muted{width:100%;text-align:right;font-size:10px}
  .store-queue-chevron{right:15px;top:23px}
  .queue-trend-panel{padding:18px 16px 13px}
  .queue-trend-heading{font-size:13px}
  .queue-trend-heading .queue-trend-current{font-size:14px}
  .queue-trend-plot{height:124px;margin-top:12px}
  .queue-trend-foot{font-size:12px}
}

/* 客户端主题。主题选择器写在 body[data-theme] 上；门户页面没有加载
   app.css，因此这里必须提供自己的变量映射，确保切换后背景、边框、
   强调色和趋势柱都会同步变化。 */
.hjyq-client-page[data-theme="gold"]{
  --client-bg:#171208;--client-surface:#211a0f;--client-surface-2:#2b2113;
  --client-border:#5a4320;--client-purple:#d7a743;--client-purple-2:#f1cc78;
  --client-pink:#f0b75f;--client-green:#63d6aa;--client-red:#ff8c7e;--client-muted:#b9aa90;
  background:radial-gradient(circle at 50% -18%,rgba(215,167,67,.25),transparent 42%),var(--client-bg);
}
.hjyq-client-page[data-theme="jade"]{
  --client-bg:#091612;--client-surface:#10231d;--client-surface-2:#173129;
  --client-border:#2d5d4d;--client-purple:#45b88a;--client-purple-2:#8ce7c1;
  --client-pink:#70d6b1;--client-green:#8ce7c1;--client-red:#ff8d8d;--client-muted:#9ebdb1;
  background:radial-gradient(circle at 50% -18%,rgba(69,184,138,.24),transparent 42%),var(--client-bg);
}
.hjyq-client-page[data-theme="ocean"]{
  --client-bg:#08121e;--client-surface:#111f30;--client-surface-2:#172a40;
  --client-border:#315271;--client-purple:#62a7e8;--client-purple-2:#a9d7ff;
  --client-pink:#8cc8ff;--client-green:#78d7c0;--client-red:#ff8e97;--client-muted:#9fb7cf;
  background:radial-gradient(circle at 50% -18%,rgba(98,167,232,.26),transparent 42%),var(--client-bg);
}
.hjyq-client-page[data-theme="violet"]{
  --client-bg:#100c19;--client-surface:#1a1428;--client-surface-2:#221a33;
  --client-border:#3b2c53;--client-purple:#9b6cff;--client-purple-2:#c39aff;
  --client-pink:#ef8dff;--client-green:#63d6aa;--client-red:#ff7d8d;--client-muted:#a69bb7;
  background:radial-gradient(circle at 50% -18%,rgba(139,92,246,.27),transparent 42%),var(--client-bg);
}

/* The QR is a share affordance for the dynamic page, not a sign-in code. */
.client-qr{border-color:rgba(99,214,170,.42);color:#9deacb;background:rgba(99,214,170,.07)}
.client-qr-card{width:min(350px,100%);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow:auto;text-align:center}
.client-qr-card .client-qr-title{margin:0 32px 5px;display:grid;justify-items:center;gap:6px;line-height:1.22}
.client-qr-store{max-width:100%;color:var(--client-text-strong,#f8efff);font-size:18px;font-weight:850;overflow-wrap:anywhere}
.client-qr-number{display:inline-flex;align-items:center;justify-content:center;min-width:92px;padding:4px 15px;border:1px solid color-mix(in srgb,var(--client-purple) 65%,var(--client-border));border-radius:999px;color:var(--client-purple);background:color-mix(in srgb,var(--client-purple) 9%,var(--client-surface));font:900 26px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.04em}
.client-qr-hint{min-height:52px;margin:12px 0 16px!important;padding:10px;display:flex;align-items:center;justify-content:center;gap:8px;border:2px solid color-mix(in srgb,#07c160 58%,var(--client-border));border-radius:14px;color:#075e38;background:linear-gradient(135deg,color-mix(in srgb,#07c160 16%,var(--client-surface)),color-mix(in srgb,#07c160 8%,var(--client-surface)));box-shadow:0 8px 20px rgba(7,193,96,.12);font-size:14px!important;font-weight:800!important;line-height:1.4!important;letter-spacing:0}.client-qr-hint strong{color:#06753f;font-weight:950}.client-wechat-icon{width:28px;height:28px;flex:none;filter:drop-shadow(0 3px 7px rgba(7,193,96,.3))}
.client-qr-image-wrap{display:grid;place-items:center;width:224px;height:224px;margin:0 auto 12px;padding:10px;border-radius:14px;background:#fff;box-shadow:0 12px 28px rgba(0,0,0,.24)}
.client-qr-image{display:block;width:100%;height:100%;object-fit:contain;image-rendering:auto}
.client-qr-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.client-qr-actions .btn{width:100%;height:40px;margin:0}.client-qr-download-btn{border-color:color-mix(in srgb,var(--client-purple) 68%,var(--client-border));color:#fff;background:linear-gradient(145deg,var(--client-purple-2),var(--client-purple));font-weight:850}.client-qr-download-btn:hover,.client-qr-download-btn:focus-visible{filter:brightness(1.06)}

/* 号码卡主操作：查看、二维码、下载当前截图必须是同一组醒目的触控目标。
   认领/取消认领单独占满下一行，避免四个按钮挤在一排。 */
.hjyq-client-page .client-ticket-actions{
  display:flex;
  flex:1 1 100%;
  width:100%;
  min-width:0;
  align-items:stretch;
  justify-content:stretch;
  gap:8px;
}
.hjyq-client-page .client-ticket-actions > .client-display,
.hjyq-client-page .client-ticket-actions > .client-qr,
.hjyq-client-page .client-ticket-actions > .client-snapshot{
  flex:1 1 0;
  min-width:0;
  min-height:38px;
  height:38px;
  padding:8px 7px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  font-size:12px;
  font-weight:850;
  line-height:1.12;
  white-space:normal;
  overflow-wrap:anywhere;
  text-decoration:none;
  transition:filter .15s ease,transform .15s ease,box-shadow .15s ease;
}
.hjyq-client-page .client-ticket-actions > .client-display{
  color:#160b2a;
  border-color:#d9b9ff;
  background:linear-gradient(145deg,#d9b9ff 0%,#a36bea 100%);
  box-shadow:0 5px 14px rgba(155,108,255,.28);
}
.hjyq-client-page .client-ticket-actions > .client-qr{
  color:#08261d;
  border-color:#a8edcf;
  background:linear-gradient(145deg,#b5f2d7 0%,#5dbf9c 100%);
  box-shadow:0 5px 14px rgba(99,214,170,.2);
}
.hjyq-client-page .client-ticket-actions > .client-snapshot{
  color:#081b34;
  border-color:#b9dcff;
  background:linear-gradient(145deg,#c2e3ff 0%,#6ba7df 100%);
  box-shadow:0 5px 14px rgba(107,167,223,.22);
}
.hjyq-client-page .client-ticket-actions > .client-display:hover,
.hjyq-client-page .client-ticket-actions > .client-qr:hover,
.hjyq-client-page .client-ticket-actions > .client-snapshot:hover,
.hjyq-client-page .client-ticket-actions > .client-display:focus-visible,
.hjyq-client-page .client-ticket-actions > .client-qr:focus-visible,
.hjyq-client-page .client-ticket-actions > .client-snapshot:focus-visible{
  filter:brightness(1.08);
  transform:translateY(-1px);
  box-shadow:0 7px 17px rgba(0,0,0,.24);
}
.hjyq-client-page .client-ticket-actions > .client-display:focus-visible,
.hjyq-client-page .client-ticket-actions > .client-qr:focus-visible,
.hjyq-client-page .client-ticket-actions > .client-snapshot:focus-visible{
  outline:3px solid rgba(255,255,255,.86);
  outline-offset:2px;
}
.hjyq-client-page .client-ticket-actions > .client-claim,
.hjyq-client-page .client-ticket-actions > .client-unclaim{
  flex:1 0 100%;
  width:100%;
  min-height:38px;
  height:38px;
  font-size:12px;
  font-weight:800;
}
@media (max-width:360px){
  .hjyq-client-page .client-ticket-actions{gap:6px}
  .hjyq-client-page .client-ticket-actions > .client-display,
  .hjyq-client-page .client-ticket-actions > .client-qr,
  .hjyq-client-page .client-ticket-actions > .client-snapshot{
    flex-basis:calc(50% - 3px);
    height:auto;
    min-height:38px;
    padding:8px 4px;
    font-size:11px;
  }
}
@media (max-width:240px){
  .hjyq-client-page .client-ticket-actions > .client-display,
  .hjyq-client-page .client-ticket-actions > .client-qr,
  .hjyq-client-page .client-ticket-actions > .client-snapshot{flex-basis:100%}
}

/* Primary ticket actions: keep the three customer-facing affordances easy to
   spot and large enough to tap on a phone.  Claim/unclaim actions can still
   wrap beneath this row without shrinking the share/view/download controls. */
.hjyq-client-page .client-ticket-actions .client-display,
.hjyq-client-page .client-ticket-actions .client-qr,
.hjyq-client-page .client-ticket-actions .client-snapshot{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;
  flex:1 1 0;min-width:0;min-height:38px;height:38px;padding:8px 10px;
  border-width:1.5px;border-radius:11px;font-size:12px;font-weight:800;
  letter-spacing:.02em;white-space:normal;overflow-wrap:anywhere;text-align:center;
  box-shadow:0 4px 12px rgba(0,0,0,.18)
}
.hjyq-client-page .client-ticket-actions .client-display{
  border-color:#d9b9ff;color:#160b2a;background:linear-gradient(145deg,#d9b9ff,#a36bea);box-shadow:0 5px 14px rgba(155,108,255,.28)
}
.hjyq-client-page .client-ticket-actions .client-qr{
  border-color:#a8edcf;color:#08261d;background:linear-gradient(145deg,#b5f2d7,#5dbf9c);box-shadow:0 5px 14px rgba(99,214,170,.2)
}
.hjyq-client-page .client-ticket-actions .client-snapshot{
  border-color:#b9dcff;color:#081b34;background:linear-gradient(145deg,#c2e3ff,#6ba7df);box-shadow:0 5px 14px rgba(107,167,223,.22)
}
.hjyq-client-page .client-ticket-actions .client-display::before{content:'↗';font-size:15px;line-height:1}
.hjyq-client-page .client-ticket-actions .client-qr::before{content:'▦';font-size:15px;line-height:1}
.hjyq-client-page .client-ticket-actions .client-snapshot::before{content:'⇩';font-size:16px;line-height:1}
.hjyq-client-page .client-ticket-actions .client-display:hover,
.hjyq-client-page .client-ticket-actions .client-display:focus-visible,
.hjyq-client-page .client-ticket-actions .client-qr:hover,
.hjyq-client-page .client-ticket-actions .client-qr:focus-visible,
.hjyq-client-page .client-ticket-actions .client-snapshot:hover,
.hjyq-client-page .client-ticket-actions .client-snapshot:focus-visible{
  color:#fff;border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.12),0 7px 18px rgba(0,0,0,.25);outline:none
}
@media(max-width:430px){
  .hjyq-client-page .client-ticket-actions{gap:6px;width:100%;justify-content:stretch}
  .hjyq-client-page .client-ticket-actions .client-display,
  .hjyq-client-page .client-ticket-actions .client-qr,
  .hjyq-client-page .client-ticket-actions .client-snapshot{height:auto;min-height:38px;padding-left:6px;padding-right:6px;font-size:11px}
}
@media(max-width:240px){
  .hjyq-client-page .client-ticket-actions .client-display,
  .hjyq-client-page .client-ticket-actions .client-qr,
  .hjyq-client-page .client-ticket-actions .client-snapshot{flex-basis:100%}
}

/* 计划/门店运营控件：门店是唯一业务分组，名称由可信门店目录生成。 */
.plan-toolbar-card{padding-bottom:13px}.plan-toolbar{align-items:flex-end}.plan-search,.store-search{display:flex;align-items:center;gap:8px;min-width:min(420px,100%);color:var(--muted);font-size:12px}.plan-search input,.store-search input{width:min(360px,100%);height:34px;padding:0 10px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#11141a;outline:0}.plan-search input:focus,.store-search input:focus{border-color:var(--gold2);box-shadow:0 0 0 3px rgba(215,167,67,.12)}.plan-create-note{margin:10px 0 12px}.plan-view-switch{display:flex;gap:7px;justify-content:flex-end}.plan-groups{display:grid;gap:12px}.plan-store-group{overflow:hidden;border:1px solid rgba(117,95,151,.55);border-radius:15px;background:linear-gradient(145deg,rgba(41,35,58,.96),rgba(31,29,43,.96));box-shadow:0 8px 24px rgba(9,7,18,.16)}.plan-store-group.is-pending{border-style:dashed}.plan-store-group>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 17px;cursor:pointer;list-style:none}.plan-store-group>summary::-webkit-details-marker{display:none}.plan-store-summary{display:flex;align-items:baseline;gap:10px;min-width:0}.plan-store-summary strong{overflow:hidden;color:#f9f3ff;font-size:17px;text-overflow:ellipsis;white-space:nowrap}.plan-store-summary .mono{font-size:11px}.plan-store-summary-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.plan-group-delete{min-height:32px;padding:5px 10px;color:#ffc3bd;border-color:rgba(226,105,95,.42);background:rgba(226,105,95,.08)}.plan-group-delete:hover,.plan-group-delete:focus-visible{color:#fff;border-color:var(--danger)}.plan-group-chevron{color:#a7a0ba;font-size:22px;line-height:1;transition:transform .18s ease}.plan-store-group[open] .plan-group-chevron{transform:rotate(180deg)}.plan-store-items{display:grid;gap:8px;padding:0 12px 12px}.plan-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid rgba(151,126,193,.2);border-radius:11px;background:rgba(18,16,27,.42)}.plan-item-main{min-width:0;flex:1}.plan-item-title{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.plan-item-title strong{font-size:14px;color:#f6efff}.plan-item-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px;color:#aaa4ba;font-size:12px}.plan-actions{justify-content:flex-end;margin:0}.plan-actions .btn{white-space:nowrap}.plan-error{margin-top:5px;color:#ffc3bd}.plan-dialog{width:min(720px,calc(100vw - 24px));max-width:720px}.plan-dialog-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:10px}.plan-dialog-grid .field.wide{grid-column:span 2}.plan-dialog-note{margin:0}.plan-dialog-grid small{display:block;margin-top:4px;font-size:11px}.plan-dialog .weekday-picker{display:flex;gap:6px;flex-wrap:wrap}.plan-dialog .weekday-picker label{display:inline-flex;align-items:center;gap:4px;padding:6px 8px;border:1px solid var(--border);border-radius:7px;color:var(--muted);font-size:12px}.plan-dialog .weekday-picker input{accent-color:var(--gold2)}.store-toolbar{align-items:flex-end}.store-search{min-width:min(420px,100%)}

/* 门店计划批量间隔：按城市/当前筛选范围选择，同时保留单店卡片操作。 */
.plan-city-filter{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;white-space:nowrap}
.plan-city-filter select{min-width:150px;height:34px}
.plan-bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px;padding:10px 11px;border:1px solid var(--border);border-radius:11px;background:rgba(255,255,255,.025)}
.plan-bulk-selection,.plan-bulk-interval-form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.plan-bulk-selection strong{font-size:12px}
.plan-bulk-interval-form{justify-content:flex-end;color:var(--muted);font-size:12px}
.plan-bulk-interval-form input{width:82px;height:32px;padding:0 9px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#11141a;outline:0}.plan-bulk-interval-form select{height:32px;min-width:126px;padding:0 28px 0 9px;border:1px solid var(--border);border-radius:8px;color:var(--text);background:#11141a;outline:0}
.plan-bulk-interval-form input:focus{border-color:var(--gold2);box-shadow:0 0 0 3px rgba(215,167,67,.12)}
.plan-store-summary{flex:1}
.plan-store-picker{display:inline-flex;align-items:center;gap:5px;flex:none;padding:5px 7px;border:1px solid rgba(166,155,183,.3);border-radius:8px;color:var(--muted);background:rgba(255,255,255,.025);font-size:11px;cursor:pointer;user-select:none}
.plan-store-picker input{width:15px;height:15px;margin:0;accent-color:var(--gold2)}
.plan-store-group.is-selected{border-color:var(--gold2);box-shadow:0 0 0 2px rgba(215,167,67,.12),0 8px 24px rgba(9,7,18,.16)}
.plan-store-group.is-selected .plan-store-picker{color:#f6d995;border-color:rgba(215,167,67,.7);background:rgba(215,167,67,.12)}
.plan-global-settings-card{padding:15px 17px;border-color:rgba(215,167,67,.34);background:linear-gradient(145deg,rgba(42,36,28,.9),rgba(25,28,35,.98))}.plan-global-settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.plan-global-settings-head h2{margin:0 0 3px}.plan-global-settings-head p{margin:0;font-size:12px}.plan-global-settings-form{grid-template-columns:repeat(3,minmax(150px,1fr));align-items:end}.plan-global-settings-form small{display:block;margin-top:4px;font-size:11px}.global-random-take-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left}.global-random-take-toggle::after{content:'切换';font-size:10px;opacity:.72}.global-random-take-toggle.is-active{color:#a9f0d2;border-color:rgba(66,201,149,.48);background:rgba(66,201,149,.12)}
.plan-dialog-container-only .plan-dialog-grid{grid-template-columns:1fr}.plan-dialog-container-only .plan-dialog-grid .field.wide{grid-column:span 1}.plan-dialog-container-only #planStoreHint{color:#e8ca8b}
.plan-autofill-note{display:flex;align-items:flex-start;gap:8px;margin-top:13px;padding:10px 12px;border:1px solid rgba(215,167,67,.3);border-radius:9px;background:rgba(215,167,67,.075);color:#f3d38f;font-size:12px}.plan-autofill-note[hidden]{display:none}.plan-autofill-note strong{flex:0 0 auto;color:#ffe1a0}.plan-autofill-note span{color:var(--muted);line-height:1.55}.plan-autofill-button{border-color:rgba(215,167,67,.58);color:#ffe0a0;background:rgba(215,167,67,.12)}.plan-autofill-button:hover,.plan-autofill-button:focus-visible{border-color:var(--gold2);background:rgba(215,167,67,.2)}
@media(max-width:700px){.plan-search,.store-search{align-items:flex-start;flex-direction:column;gap:4px;width:100%;min-width:0}.plan-search input,.store-search input{width:100%}.plan-toolbar .btn.sm{height:34px}.plan-toolbar{align-items:stretch}.plan-view-switch{justify-content:stretch}.plan-view-switch .btn{flex:1}.plan-store-group>summary{align-items:flex-start;flex-direction:column;gap:8px}.plan-store-summary-meta{width:100%;justify-content:flex-start}.plan-item{align-items:stretch;flex-direction:column}.plan-actions{justify-content:flex-start}.plan-actions .btn{flex:1 1 auto}.plan-dialog-grid,.plan-global-settings-form{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-dialog-grid .field.wide{grid-column:span 2}.plan-global-settings-form .btn{grid-column:span 2;width:100%}}
@media(max-width:980px){.plan-bulk-toolbar{align-items:stretch;flex-direction:column}.plan-bulk-interval-form{justify-content:flex-start}}
@media(max-width:700px){.plan-city-filter{align-items:flex-start;flex-direction:column;gap:4px;width:100%}.plan-city-filter select{width:100%;min-width:0}.plan-bulk-selection,.plan-bulk-interval-form{width:100%}.plan-bulk-interval-form .muted{flex:1 1 100%}.plan-store-picker{align-self:flex-start}.plan-store-summary{width:100%}}
@media(max-width:480px){.plan-bulk-selection .btn,.plan-bulk-interval-form .btn{flex:1 1 auto}.plan-bulk-interval-form input{flex:1;min-width:72px}.plan-bulk-interval-form label{flex:0 0 100%}}
@media(max-width:560px){.plan-dialog-grid,.plan-global-settings-form{grid-template-columns:1fr}.plan-dialog-grid .field.wide,.plan-global-settings-form .btn{grid-column:span 1}.plan-dialog .quantum-dialog-actions{flex-direction:row}.plan-dialog .quantum-dialog-actions .btn{width:auto}.plan-store-summary strong{max-width:calc(100vw - 80px)}}

/* 门店趋势范围与排序：两端都固定按当前全店排队桌数降序。 */
.store-city-scope{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.store-city-scope select{min-width:190px}.store-order-badge{white-space:nowrap}
.client-trend-toolbar{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:0 1px 10px}.client-trend-toolbar label{display:flex;align-items:center;gap:7px;min-width:0;color:var(--client-muted);font-size:9px}.client-trend-toolbar select{min-width:170px;max-width:100%;height:34px;padding:0 28px 0 9px;border:1px solid var(--client-border);border-radius:10px;color:#f7efff;background:var(--client-surface);font-size:11px;outline:0}.client-trend-toolbar select:focus{border-color:var(--client-purple);box-shadow:0 0 0 3px rgba(155,108,255,.14)}.client-trend-summary{color:var(--client-muted);font-size:9px;text-align:right}
@media(max-width:700px){.store-city-scope{align-items:stretch;flex-direction:column;gap:4px}.store-city-scope select{width:100%;min-width:0}.store-order-badge{align-self:flex-start}}
@media(max-width:430px){.client-trend-toolbar{align-items:stretch;flex-direction:column}.client-trend-toolbar label{justify-content:space-between}.client-trend-toolbar select{flex:1;min-width:0}.client-trend-summary{text-align:left}}

/* 管理后台有效号码卡片 */
.admin-ticket-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.admin-ticket-card{position:relative;min-width:0;padding:14px;border:1px solid rgba(117,95,151,.48);border-radius:15px;background:linear-gradient(145deg,rgba(41,35,58,.98),rgba(25,23,36,.98));box-shadow:0 8px 22px rgba(9,7,18,.14);overflow:hidden}
.admin-ticket-card::before{content:'';position:absolute;inset:12px auto 12px 0;width:3px;border-radius:0 4px 4px 0;background:var(--gold)}
.admin-ticket-card.is-called{border-color:rgba(239,141,255,.44);background:linear-gradient(145deg,rgba(68,42,75,.78),rgba(25,23,36,.98))}
.admin-ticket-card.is-called::before{background:#ef8dff}
.admin-ticket-card-head{display:flex;align-items:flex-start;gap:10px;padding-left:5px}
.admin-ticket-number{min-width:0;color:var(--gold2);font-size:34px;font-weight:850;line-height:1;letter-spacing:-1px}
.admin-ticket-identity{display:flex;min-width:0;flex:1;flex-direction:column;align-items:flex-end;gap:3px;text-align:right}
.admin-ticket-identity strong{max-width:100%;overflow:hidden;color:#f9f3ff;font-size:13px;text-overflow:ellipsis;white-space:nowrap}
.admin-ticket-identity span:not(.badge){max-width:100%;overflow:hidden;color:#aaa4ba;font-size:10px;text-overflow:ellipsis;white-space:nowrap}
.admin-ticket-card-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:12px 0 10px;padding:8px;border:1px solid rgba(166,155,183,.16);border-radius:10px;background:rgba(11,10,18,.28)}
.admin-ticket-card-meta span{min-width:0}
.admin-ticket-card-meta em{display:block;color:#887b9b;font-size:9px;font-style:normal}
.admin-ticket-card-meta b{display:block;max-width:100%;margin-top:2px;overflow:hidden;color:#eee6f7;font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.admin-ticket-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding-left:5px}
.admin-ticket-card-foot time{color:#887b9b;font:10px ui-monospace,SFMono-Regular,Consolas,monospace}
.admin-ticket-actions{display:flex;justify-content:flex-end;gap:5px;flex:1;flex-wrap:wrap}
.admin-ticket-action{min-height:29px;padding:4px 8px;border:1px solid rgba(166,155,183,.28);border-radius:8px;color:#eee6f7;background:rgba(255,255,255,.035);font-size:10px;text-decoration:none;cursor:pointer}
.admin-ticket-action:hover,.admin-ticket-action:focus-visible{border-color:var(--gold2);color:#fff;outline:none}
.admin-ticket-snapshot{border-color:rgba(91,167,232,.48);color:#a9ccff}
.admin-ticket-cancel{border-color:rgba(226,105,95,.5);color:#ffc3bd;background:rgba(226,105,95,.1)}
.admin-ticket-action:disabled{opacity:.48;cursor:not-allowed}
@media(max-width:700px){.admin-ticket-grid{grid-template-columns:1fr}.admin-ticket-card{padding:13px}.admin-ticket-number{font-size:32px}.admin-ticket-actions{width:100%;justify-content:stretch}.admin-ticket-action{flex:1 1 auto;text-align:center;min-height:32px}}

/* 计划卡片模式：将营业时段、进度和操作聚合在一张可扫描卡片内。 */
.plan-store-group{border-color:rgba(117,95,151,.65);background:linear-gradient(145deg,rgba(47,39,66,.98),rgba(28,26,40,.98))}
.plan-store-group>summary{padding:16px 18px;background:linear-gradient(90deg,rgba(155,108,255,.09),transparent 72%)}
.plan-store-summary{align-items:flex-start;flex-direction:column;gap:2px}
.plan-store-summary-hint{color:#aaa4ba;font-size:10px}
.plan-store-items{gap:10px;padding:0 13px 13px}
.plan-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 15px;border-color:rgba(166,155,183,.25);background:linear-gradient(145deg,rgba(26,22,38,.85),rgba(18,16,27,.7));transition:border-color .16s ease,transform .16s ease}
.plan-card:hover{border-color:rgba(195,154,255,.55);transform:translateY(-1px)}
.plan-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.plan-card-days{flex:none;color:#c5b8d5;font-size:10px}
.plan-card-rule{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:8px;color:#bdb1ca;font-size:11px}
.plan-card-rule span{padding:4px 7px;border:1px solid rgba(166,155,183,.16);border-radius:7px;background:rgba(255,255,255,.025)}
.plan-card-progress{height:6px;margin-top:11px;overflow:hidden;border-radius:99px;background:rgba(166,155,183,.16)}
.plan-card-progress span{display:block;width:var(--plan-progress);height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gold),var(--gold2));transition:width .2s ease}
.plan-card-progress-label{display:flex;align-items:center;gap:8px;margin-top:5px;color:#8f849d;font-size:10px}.plan-card-progress-label strong{color:#f1cc78;font-size:11px}.plan-card-progress-label .badge{margin-left:auto}
.plan-random-toggle,.plan-store-random-toggle{min-width:0;max-width:100%;min-height:30px;padding:4px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-color:rgba(195,154,255,.38);color:#d6c3ef;background:rgba(155,108,255,.08)}
.plan-random-toggle.is-active,.plan-store-random-toggle.is-active{color:#a9f0d2;border-color:rgba(99,214,170,.48);background:rgba(99,214,170,.1)}
.plan-random-toggle:hover,.plan-random-toggle:focus-visible,.plan-store-random-toggle:hover,.plan-store-random-toggle:focus-visible{border-color:var(--gold2);outline:none}
.plan-random-toggle:focus-visible,.plan-store-random-toggle:focus-visible{box-shadow:0 0 0 3px rgba(215,167,67,.16)}
.plan-random-toggle:disabled,.plan-store-random-toggle:disabled{opacity:.55;cursor:wait;transform:none}
.plan-actions{display:grid;grid-template-columns:repeat(2,minmax(72px,1fr));gap:6px;min-width:188px;align-self:stretch;align-content:center}
.plan-actions .btn{min-height:31px;white-space:nowrap}.plan-actions .plan-action-run{grid-column:1/-1}.plan-actions .plan-action-delete{grid-column:2}
@media(max-width:700px){.plan-card{grid-template-columns:1fr;gap:11px}.plan-card-head{flex-direction:column;gap:5px}.plan-card-days{align-self:flex-start}.plan-actions{grid-template-columns:repeat(3,minmax(0,1fr));min-width:0;width:100%}.plan-actions .plan-action-run{grid-column:1/-1}.plan-actions .plan-action-delete{grid-column:auto}}
@media(max-width:430px){.plan-store-group>summary{padding:13px}.plan-store-items{padding:0 9px 9px}.plan-card{padding:12px}.plan-card-rule{gap:5px}.plan-card-rule span{flex:1 1 calc(50% - 5px);text-align:center}.plan-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ──────────────────────────────────────────────────────────────────────────
   2026-08-26 客户端主题细化
   只覆盖 /client 门户，不改变 API 或业务状态。让“号码—门店—操作”
   形成稳定层级，并为手机端提供更大的触控目标。
   ────────────────────────────────────────────────────────────────────────── */
.hjyq-client-page {
  color-scheme: dark;
  min-height: 100svh;
  overflow-x: hidden;
  -webkit-tap-highlight-color: transparent;
  text-rendering: optimizeLegibility;
  scroll-padding-bottom: calc(96px + env(safe-area-inset-bottom));
}

/* City selector used by the new plan-container dialog. */
.plan-container-city-field select{border-color:rgba(215,167,67,.45);background:#171820}
.plan-container-city-field small{color:#b9adca}
.hjyq-client-page::selection { color:#170d25; background:var(--client-purple-2); }
.hjyq-client-page .client-topbar {
  position:sticky; top:0; z-index:60; min-height:60px;
  border-bottom-color:color-mix(in srgb,var(--client-purple) 32%,transparent);
  background:color-mix(in srgb,var(--client-bg) 86%,transparent);
  box-shadow:0 8px 28px rgba(3,1,10,.24);
}
.hjyq-client-page .client-main { width:min(900px,100%); padding-top:18px; }
.hjyq-client-page .client-brand h1,
.hjyq-client-page .client-section-title h2,
.hjyq-client-page .client-history-head h2 { letter-spacing:.01em; }
.hjyq-client-page .top-actions .btn,
.hjyq-client-page .theme-select {
  transition:border-color .16s ease,background-color .16s ease,color .16s ease,transform .16s ease;
}
.hjyq-client-page .top-actions .btn:hover,
.hjyq-client-page .top-actions .btn:focus-visible,
.hjyq-client-page .theme-select:hover,
.hjyq-client-page .theme-select:focus-visible {
  border-color:color-mix(in srgb,var(--client-purple-2) 68%,var(--client-border));
  background:color-mix(in srgb,var(--client-purple) 16%,var(--client-surface));
}
.hjyq-client-page .connection { background:color-mix(in srgb,var(--client-surface) 82%,transparent); }

/* Tabs are the primary navigation, so the active state remains obvious even
   when the page is scrolled behind the mobile bottom bar. */
.hjyq-client-page .client-tabs {
  position:relative; isolation:isolate; margin-top:2px;
  border-color:color-mix(in srgb,var(--client-purple) 42%,var(--client-border));
  background:color-mix(in srgb,var(--client-surface) 94%,transparent);
}
.hjyq-client-page .client-tabs button {
  position:relative; min-height:46px; font-weight:650;
  transition:color .16s ease,background .16s ease,transform .16s ease;
}
.hjyq-client-page .client-tabs button:not(.active):hover,
.hjyq-client-page .client-tabs button:not(.active):focus-visible {
  color:#f6efff; background:color-mix(in srgb,var(--client-purple) 12%,transparent);
}
.hjyq-client-page .client-tabs button:active { transform:scale(.98); }
.hjyq-client-page .client-tabs button b { font-variant-numeric:tabular-nums; }

/* Points summary: a quiet, high-contrast utility card shown on 当日状态. */
.hjyq-client-page .client-points-strip {
  border-color:color-mix(in srgb,var(--client-purple) 52%,var(--client-border));
  background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--client-purple) 20%,transparent),transparent 52%),linear-gradient(135deg,color-mix(in srgb,var(--client-purple) 17%,var(--client-surface)),var(--client-surface) 72%);
}
.hjyq-client-page .client-points-strip:focus-within {
  box-shadow:0 0 0 3px color-mix(in srgb,var(--client-purple) 18%,transparent),0 12px 30px rgba(0,0,0,.22);
}

/* Store picker is the entry point on the available page. */
.hjyq-client-page .client-store-toolbar {
  position:relative; margin-bottom:9px; padding:13px 14px;
  border:1px solid color-mix(in srgb,var(--client-purple) 34%,var(--client-border));
  border-radius:15px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--client-purple) 13%,var(--client-surface)),var(--client-surface) 70%);
  box-shadow:0 10px 28px rgba(0,0,0,.15);
}
.hjyq-client-page .client-store-toolbar strong { display:block; margin-top:2px; color:#faf7ff; font-size:15px; letter-spacing:.01em; }
.hjyq-client-page .client-store-toolbar span { color:var(--client-muted); font-size:10px; }
.hjyq-client-page .client-search-wrap { margin-bottom:14px; border-radius:13px; box-shadow:0 7px 20px rgba(0,0,0,.13); }
.hjyq-client-page .client-search-wrap input {
  min-height:43px; border-color:color-mix(in srgb,var(--client-purple) 28%,var(--client-border));
  background:color-mix(in srgb,var(--client-surface) 90%,#000);
}
.hjyq-client-page .client-search-wrap:focus-within {
  box-shadow:0 0 0 3px color-mix(in srgb,var(--client-purple) 16%,transparent),0 7px 20px rgba(0,0,0,.15);
}

/* Store groups make a long list scannable without flattening the queue cards. */
.hjyq-client-page .client-store-card {
  margin-bottom:14px;
  border-color:color-mix(in srgb,var(--client-purple) 30%,var(--client-border));
  background:linear-gradient(145deg,color-mix(in srgb,var(--client-surface) 95%,#000),color-mix(in srgb,var(--client-surface-2) 88%,#000));
  box-shadow:0 12px 30px rgba(0,0,0,.15);
}
.hjyq-client-page .client-store-head {
  min-height:58px; padding:13px 15px 11px;
  border-bottom-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border));
}
.hjyq-client-page .client-store-head h2 { font-size:15px; line-height:1.25; }
.hjyq-client-page .client-store-head p { margin-top:3px; color:var(--client-muted); }
.hjyq-client-page .client-queue-pill {
  flex:none; padding:5px 9px; border:1px solid color-mix(in srgb,var(--client-purple) 48%,var(--client-border)); border-radius:999px;
  color:var(--client-purple-2); background:color-mix(in srgb,var(--client-purple) 12%,transparent);
  font-size:10px; font-variant-numeric:tabular-nums; white-space:nowrap;
}

/* Ticket cards: number first, state second, actions last. */
.hjyq-client-page .client-ticket-grid { gap:11px; padding:11px; }
.hjyq-client-page .client-ticket-card {
  min-width:0; border-color:color-mix(in srgb,var(--client-purple) 24%,var(--client-border)); border-radius:15px;
  background:linear-gradient(155deg,color-mix(in srgb,var(--client-surface-2) 90%,#000),var(--client-surface) 74%);
  box-shadow:0 8px 21px rgba(0,0,0,.16);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.hjyq-client-page .client-ticket-card:hover { border-color:color-mix(in srgb,var(--client-purple-2) 52%,var(--client-border)); box-shadow:0 13px 28px rgba(0,0,0,.23); transform:translateY(-1px); }
.hjyq-client-page .client-ticket-card:focus-within { border-color:color-mix(in srgb,var(--client-purple-2) 70%,var(--client-border)); box-shadow:0 0 0 3px color-mix(in srgb,var(--client-purple) 16%,transparent),0 12px 28px rgba(0,0,0,.2); }
.hjyq-client-page .client-ticket-number {
  min-width:2.2ch; color:var(--client-purple-2); font-size:clamp(31px,6vw,39px); letter-spacing:-.04em;
  text-shadow:0 3px 18px color-mix(in srgb,var(--client-purple) 23%,transparent);
}
.hjyq-client-page .client-ticket-identity strong { color:#fbf8ff; font-size:13px; }
.hjyq-client-page .client-ticket-summary { border-color:color-mix(in srgb,var(--client-purple) 17%,rgba(166,155,183,.13)); background:color-mix(in srgb,var(--client-surface) 82%,transparent); }
.hjyq-client-page .client-ticket-summary span { padding:2px 5px; border-radius:7px; }
.hjyq-client-page .client-ticket-summary span:nth-child(2) { background:color-mix(in srgb,var(--client-purple) 8%,transparent); }
.hjyq-client-page .client-ticket-summary b { color:#f8f3ff; font-variant-numeric:tabular-nums; }
.hjyq-client-page .client-ticket-actions .client-action { min-height:40px; border-radius:10px; font-size:11px; }
.hjyq-client-page .client-ticket-actions .client-claim,
.hjyq-client-page .client-ticket-actions .client-unclaim { min-height:42px; }
.hjyq-client-page .client-action:focus-visible,
.hjyq-client-page .client-search-wrap input:focus-visible,
.hjyq-client-page .theme-select:focus-visible,
.hjyq-client-page button:focus-visible,
.hjyq-client-page select:focus-visible { outline:3px solid color-mix(in srgb,var(--client-purple-2) 78%,#fff); outline-offset:2px; }

/* Status and trends share one predictable rhythm. */
.hjyq-client-page .client-stat-card {
  min-height:70px; display:flex; flex-direction:column; justify-content:center;
  border-color:color-mix(in srgb,var(--client-purple) 27%,var(--client-border));
  background:linear-gradient(155deg,color-mix(in srgb,var(--client-surface-2) 86%,#000),var(--client-surface));
}
.hjyq-client-page .client-stat-card strong { font-variant-numeric:tabular-nums; }
.hjyq-client-page .client-status-card,
.hjyq-client-page .client-trend-section { border-color:color-mix(in srgb,var(--client-purple) 27%,var(--client-border)); box-shadow:0 9px 24px rgba(0,0,0,.12); }
.hjyq-client-page .client-status-card > summary,
.hjyq-client-page .client-trend-card > summary { min-height:54px; transition:background .16s ease; }
.hjyq-client-page .client-status-card > summary:hover,
.hjyq-client-page .client-status-card > summary:focus-visible,
.hjyq-client-page .client-trend-card > summary:hover,
.hjyq-client-page .client-trend-card > summary:focus-visible { background:color-mix(in srgb,var(--client-purple) 10%,transparent); }
.hjyq-client-page .client-trend-card { border-color:color-mix(in srgb,var(--client-purple) 24%,var(--client-border)); background:linear-gradient(145deg,color-mix(in srgb,var(--client-surface-2) 92%,#000),var(--client-surface)); }
.hjyq-client-page .client-trend-bar.latest { box-shadow:0 0 0 1px color-mix(in srgb,var(--client-purple-2) 40%,transparent),0 0 12px color-mix(in srgb,var(--client-purple) 30%,transparent); }

.hjyq-client-page .client-dialog-card { border-color:color-mix(in srgb,var(--client-purple) 52%,var(--client-border)); box-shadow:0 28px 90px rgba(0,0,0,.62),0 0 0 1px rgba(255,255,255,.025); }
.hjyq-client-page .client-dialog-actions .btn,
.hjyq-client-page .client-qr-actions .btn { min-height:44px; }
.hjyq-client-page .toast { border-radius:13px; backdrop-filter:blur(12px); }

@media (min-width:641px) {
  .hjyq-client-page .client-ticket-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .hjyq-client-page .client-main { padding-left:20px; padding-right:20px; }
}
@media (max-width:640px) {
  /* Restore the bottom navigation's fixed positioning after the desktop tab
     surface rule above; otherwise the nav would scroll away on phones. */
  .hjyq-client-page .client-topbar { min-height:56px; padding-top:max(7px,env(safe-area-inset-top)); }
  .hjyq-client-page .client-tabs { position:fixed; margin:0; }
  .hjyq-client-page .client-main { padding-top:12px; }
  .hjyq-client-page .client-tabs button { min-height:54px; }
  .hjyq-client-page .client-store-toolbar { padding:12px; }
  .hjyq-client-page .client-ticket-grid { padding:9px; }
  .hjyq-client-page .client-ticket-card { border-radius:14px; }
  .hjyq-client-page .client-ticket-actions .client-action { min-height:42px; }
  .hjyq-client-page .client-search-wrap input { min-height:45px; }
}
@media (prefers-reduced-motion:reduce) {
  .hjyq-client-page *, .hjyq-client-page *::before, .hjyq-client-page *::after {
    scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important;
  }
}

/* 2026-08-26 客户端浅色主题
   页面只保留一层很淡的主题色，内容卡片回到近白色。管理后台不受影响。 */
.hjyq-client-page,
.hjyq-client-page[data-theme="violet"] {
  --client-bg:#fbf9fd;
  --client-surface:#ffffff;
  --client-surface-2:#f7f3fb;
  --client-border:#e3d9ed;
  --client-purple:#7650b2;
  --client-purple-2:#8b61c5;
  --client-pink:#ad4eb4;
  --client-green:#238765;
  --client-red:#c65361;
  --client-muted:#756c7d;
  --client-text:#2c2533;
  --client-text-strong:#211929;
  --client-shadow:rgba(77,51,102,.08);
  color-scheme:light;
  color:var(--client-text);
  background:radial-gradient(circle at 50% -14%,rgba(118,80,178,.075),transparent 38%),var(--client-bg);
}
.hjyq-client-page[data-theme="gold"] {
  --client-bg:#fdfbf7;
  --client-surface:#ffffff;
  --client-surface-2:#faf6ed;
  --client-border:#eadfc9;
  --client-purple:#9b6b1c;
  --client-purple-2:#b17b22;
  --client-pink:#b66a29;
  --client-green:#238765;
  --client-red:#c65361;
  --client-muted:#766f63;
  --client-text:#302a20;
  --client-text-strong:#231d14;
  --client-shadow:rgba(113,85,35,.075);
  background:radial-gradient(circle at 50% -14%,rgba(215,167,67,.075),transparent 38%),var(--client-bg);
}
.hjyq-client-page[data-theme="jade"] {
  --client-bg:#f8fbfa;
  --client-surface:#ffffff;
  --client-surface-2:#f0f8f4;
  --client-border:#d5e8df;
  --client-purple:#257c60;
  --client-purple-2:#2d8e6c;
  --client-pink:#368b70;
  --client-green:#1f8663;
  --client-red:#c65361;
  --client-muted:#68766f;
  --client-text:#25312c;
  --client-text-strong:#19251f;
  --client-shadow:rgba(42,98,77,.075);
  background:radial-gradient(circle at 50% -14%,rgba(69,184,138,.07),transparent 38%),var(--client-bg);
}
.hjyq-client-page[data-theme="ocean"] {
  --client-bg:#f8fbfd;
  --client-surface:#ffffff;
  --client-surface-2:#f0f7fb;
  --client-border:#d5e5ef;
  --client-purple:#2879aa;
  --client-purple-2:#3189bd;
  --client-pink:#397faa;
  --client-green:#23836b;
  --client-red:#c65361;
  --client-muted:#687681;
  --client-text:#243039;
  --client-text-strong:#18242c;
  --client-shadow:rgba(45,91,119,.075);
  background:radial-gradient(circle at 50% -14%,rgba(98,167,232,.07),transparent 38%),var(--client-bg);
}

.hjyq-client-page .muted { color:var(--client-muted); }
.hjyq-client-page .client-topbar {
  border-bottom-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border));
  background:color-mix(in srgb,var(--client-bg) 92%,transparent);
  box-shadow:0 5px 22px var(--client-shadow);
}
.hjyq-client-page .client-brand h1,
.hjyq-client-page .client-store-toolbar strong,
.hjyq-client-page .client-store-head h2,
.hjyq-client-page .client-ticket-identity strong,
.hjyq-client-page .client-ticket-summary b,
.hjyq-client-page .client-status-card>summary strong,
.hjyq-client-page .client-trend-card>summary strong,
.hjyq-client-page .client-section-title h2,
.hjyq-client-page .client-history-head h2,
.hjyq-client-page .client-history-main strong,
.hjyq-client-page .client-empty strong,
.hjyq-client-page .client-dialog-card>p,
.hjyq-client-page .client-ledger-card h2,
.hjyq-client-page .client-qr-card h2 { color:var(--client-text-strong); }
.hjyq-client-page .top-actions .btn,
.hjyq-client-page .theme-select,
.hjyq-client-page .connection,
.hjyq-client-page .client-store-toolbar .btn,
.hjyq-client-page .client-action {
  border-color:var(--client-border);
  color:var(--client-text);
  background:var(--client-surface);
}
.hjyq-client-page .top-actions .btn:hover,
.hjyq-client-page .top-actions .btn:focus-visible,
.hjyq-client-page .theme-select:hover,
.hjyq-client-page .theme-select:focus-visible {
  border-color:color-mix(in srgb,var(--client-purple) 42%,var(--client-border));
  color:var(--client-text-strong);
  background:color-mix(in srgb,var(--client-purple) 5%,var(--client-surface));
}

.hjyq-client-page .client-points-strip {
  border-color:color-mix(in srgb,var(--client-purple) 25%,var(--client-border));
  background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--client-purple) 7%,transparent),transparent 52%),linear-gradient(135deg,color-mix(in srgb,var(--client-purple) 4%,var(--client-surface)),var(--client-surface) 74%);
  box-shadow:0 8px 24px var(--client-shadow);
}
.hjyq-client-page .client-points-copy>strong { color:var(--client-purple); }
.hjyq-client-page .client-points-stat { border-left-color:var(--client-border); }
.hjyq-client-page .client-points-stat strong { color:var(--client-text-strong); }
.hjyq-client-page .client-points-active strong { color:var(--client-green); }
.hjyq-client-page .client-ledger-open {
  border-color:color-mix(in srgb,var(--client-purple) 38%,var(--client-border))!important;
  color:var(--client-purple)!important;
  background:color-mix(in srgb,var(--client-purple) 7%,var(--client-surface))!important;
}

.hjyq-client-page .client-tabs {
  border-color:color-mix(in srgb,var(--client-purple) 22%,var(--client-border));
  background:rgba(255,255,255,.9);
  box-shadow:0 7px 22px var(--client-shadow);
}
.hjyq-client-page .client-tabs button:not(.active):hover,
.hjyq-client-page .client-tabs button:not(.active):focus-visible {
  color:var(--client-text-strong);
  background:color-mix(in srgb,var(--client-purple) 6%,transparent);
}
.hjyq-client-page .client-tabs button.active {
  color:var(--client-purple);
  background:linear-gradient(145deg,color-mix(in srgb,var(--client-purple-2) 14%,#fff),color-mix(in srgb,var(--client-purple) 10%,#fff));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--client-purple) 18%,transparent),0 5px 14px color-mix(in srgb,var(--client-purple) 10%,transparent);
}
.hjyq-client-page .client-tabs button b { background:color-mix(in srgb,var(--client-purple) 8%,transparent); }
.hjyq-client-page .client-tabs button.active b { background:rgba(255,255,255,.2); }
.hjyq-client-page .tab-icon { background:color-mix(in srgb,var(--client-purple) 8%,transparent); }

.hjyq-client-page .client-store-toolbar {
  border-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border));
  background:linear-gradient(135deg,color-mix(in srgb,var(--client-purple) 4%,var(--client-surface)),var(--client-surface) 72%);
  box-shadow:0 8px 23px var(--client-shadow);
}
.hjyq-client-page .client-search-wrap { box-shadow:0 6px 18px var(--client-shadow); }
.hjyq-client-page .client-search-wrap input {
  border-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border));
  color:var(--client-text);
  background:var(--client-surface);
}
.hjyq-client-page .client-store-picker {
  margin-bottom:16px;
  padding:13px;
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--client-purple) 24%,var(--client-border));
  border-radius:17px;
  background:linear-gradient(145deg,color-mix(in srgb,var(--client-purple) 4%,var(--client-surface)),var(--client-surface));
  box-shadow:0 9px 25px var(--client-shadow);
}
.hjyq-client-page .client-store-picker .client-store-toolbar {
  margin:0 0 10px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
.hjyq-client-page .client-store-picker .client-search-wrap { margin-bottom:11px; box-shadow:none; }
.hjyq-client-page .client-store-picker .client-search-wrap input { background:var(--client-surface-2); }
.hjyq-client-page .client-available-filter-row {
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  align-items:center;
  gap:8px;
  min-width:0;
  padding-top:9px;
  border-top:1px solid color-mix(in srgb,var(--client-purple) 10%,var(--client-border));
}
.hjyq-client-page .client-available-filter-row + .client-available-filter-row { margin-top:8px; }
.hjyq-client-page .client-available-filter-label {
  color:var(--client-muted);
  font-size:10px;
  font-weight:750;
  text-align:center;
}
.hjyq-client-page .client-available-filter-options {
  display:flex;
  gap:7px;
  min-width:0;
  overflow-x:auto;
  padding:2px 2px 4px;
  scroll-padding-inline:2px;
  scroll-snap-type:x proximity;
  scrollbar-width:thin;
  scrollbar-color:color-mix(in srgb,var(--client-purple) 24%,transparent) transparent;
}
.hjyq-client-page .client-available-filter-chip {
  display:inline-flex;
  flex:none;
  align-items:center;
  gap:6px;
  min-height:36px;
  max-width:min(260px,72vw);
  padding:0 10px;
  scroll-snap-align:start;
  border:1px solid var(--client-border);
  border-radius:999px;
  color:var(--client-muted);
  background:var(--client-surface);
  cursor:pointer;
  transition:border-color .15s ease,background .15s ease,color .15s ease,transform .15s ease;
}
.hjyq-client-page .client-available-filter-chip span {
  min-width:0;
  overflow:hidden;
  font-size:11px;
  font-weight:700;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.hjyq-client-page .client-available-filter-chip b {
  min-width:20px;
  padding:1px 5px;
  border-radius:999px;
  color:inherit;
  background:color-mix(in srgb,currentColor 8%,transparent);
  font-size:9px;
  font-variant-numeric:tabular-nums;
  text-align:center;
}
.hjyq-client-page .client-available-filter-chip:hover,
.hjyq-client-page .client-available-filter-chip:focus-visible {
  border-color:color-mix(in srgb,var(--client-purple) 46%,var(--client-border));
  color:var(--client-text-strong);
  background:color-mix(in srgb,var(--client-purple) 5%,var(--client-surface));
}
.hjyq-client-page .client-available-filter-chip:active { transform:scale(.98); }
.hjyq-client-page .client-available-filter-chip.active {
  border-color:color-mix(in srgb,var(--client-purple) 62%,var(--client-border));
  color:var(--client-purple);
  background:color-mix(in srgb,var(--client-purple) 11%,var(--client-surface));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--client-purple) 8%,transparent);
}
.hjyq-client-page .client-city-group { margin-bottom:18px; }
.hjyq-client-page .client-city-group-head {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:10px;
  margin:0 3px 8px;
  padding:0 1px 7px;
  border-bottom:1px solid color-mix(in srgb,var(--client-purple) 14%,var(--client-border));
}
.hjyq-client-page .client-city-group-head span {
  display:block;
  color:var(--client-muted);
  font-size:9px;
}
.hjyq-client-page .client-city-group-head h2 {
  margin:1px 0 0;
  color:var(--client-text-strong);
  font-size:16px;
}
.hjyq-client-page .client-city-group-head p {
  margin:0;
  color:var(--client-muted);
  font-size:10px;
  white-space:nowrap;
}
.hjyq-client-page .client-store-head h3 {
  margin:0;
  color:var(--client-text-strong);
  font-size:15px;
  font-weight:800;
  line-height:1.25;
}
.hjyq-client-page .client-search-wrap input::placeholder,
.hjyq-client-page .client-ticket-summary em,
.hjyq-client-page .client-ticket-time { color:var(--client-muted); }

.hjyq-client-page .client-store-card {
  border-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border));
  background:linear-gradient(145deg,var(--client-surface),var(--client-surface-2));
  box-shadow:0 9px 25px var(--client-shadow);
}
.hjyq-client-page .client-store-head {
  border-bottom-color:var(--client-border);
  background:linear-gradient(90deg,color-mix(in srgb,var(--client-purple) 5%,transparent),transparent 68%);
}
.hjyq-client-page .client-queue-pill {
  border-color:color-mix(in srgb,var(--client-purple) 30%,var(--client-border));
  color:var(--client-purple);
  background:color-mix(in srgb,var(--client-purple) 6%,transparent);
}
.hjyq-client-page .client-ticket-card {
  border-color:color-mix(in srgb,var(--client-purple) 14%,var(--client-border));
  background:var(--client-surface);
  box-shadow:0 6px 18px var(--client-shadow);
}
.hjyq-client-page .client-ticket-card.called { background:color-mix(in srgb,var(--client-pink) 6%,var(--client-surface)); }
.hjyq-client-page .client-ticket-card.done { background:color-mix(in srgb,var(--client-green) 4%,var(--client-surface)); }
.hjyq-client-page .client-ticket-card:hover { box-shadow:0 10px 24px var(--client-shadow); }
.hjyq-client-page .client-ticket-summary {
  border-color:var(--client-border);
  background:var(--client-surface-2);
}
.hjyq-client-page .client-ticket-summary span:nth-child(2) { background:color-mix(in srgb,var(--client-purple) 5%,transparent); }
.hjyq-client-page .client-ticket-note { border-top-color:var(--client-border); color:var(--client-muted); }
.hjyq-client-page .client-status-badge.waiting { color:var(--client-purple); background:color-mix(in srgb,var(--client-purple) 9%,transparent); }
.hjyq-client-page .client-status-badge.called { color:var(--client-pink); background:color-mix(in srgb,var(--client-pink) 9%,transparent); }
.hjyq-client-page .client-status-badge.done { color:var(--client-green); background:color-mix(in srgb,var(--client-green) 8%,transparent); }
.hjyq-client-page .client-status-badge.ended { color:var(--client-muted); background:var(--client-surface-2); }
.hjyq-client-page .client-claim { border-color:color-mix(in srgb,var(--client-purple) 38%,var(--client-border)); color:var(--client-purple); background:color-mix(in srgb,var(--client-purple) 8%,var(--client-surface)); }
.hjyq-client-page .client-unclaim { border-color:color-mix(in srgb,var(--client-red) 35%,var(--client-border)); color:var(--client-red); background:color-mix(in srgb,var(--client-red) 6%,var(--client-surface)); }

.hjyq-client-page .client-stat-card,
.hjyq-client-page .client-status-card,
.hjyq-client-page .client-trend-section,
.hjyq-client-page .client-trend-card,
.hjyq-client-page .client-history-card {
  border-color:color-mix(in srgb,var(--client-purple) 16%,var(--client-border));
  background:var(--client-surface);
  box-shadow:0 7px 20px var(--client-shadow);
}
.hjyq-client-page .client-stat-card { background:linear-gradient(155deg,var(--client-surface),var(--client-surface-2)); }
.hjyq-client-page .client-trend-card { background:linear-gradient(145deg,var(--client-surface-2),var(--client-surface)); }
.hjyq-client-page .client-status-card>summary:hover,
.hjyq-client-page .client-status-card>summary:focus-visible,
.hjyq-client-page .client-trend-card>summary:hover,
.hjyq-client-page .client-trend-card>summary:focus-visible { background:color-mix(in srgb,var(--client-purple) 5%,transparent); }
.hjyq-client-page .client-trend-body,
.hjyq-client-page .client-trend-chart { border-color:var(--client-border); }
.hjyq-client-page .client-trend-toolbar select {
  border-color:var(--client-border);
  color:var(--client-text);
  background:var(--client-surface);
}
.hjyq-client-page .client-history-main span,
.hjyq-client-page .client-history-points { color:var(--client-muted); }

.hjyq-client-page .client-empty { border-color:color-mix(in srgb,var(--client-purple) 18%,var(--client-border)); }
.hjyq-client-page .client-empty-icon { color:var(--client-purple); background:color-mix(in srgb,var(--client-purple) 7%,transparent); }
.hjyq-client-page .client-loading { background:linear-gradient(100deg,var(--client-surface) 25%,var(--client-surface-2) 42%,var(--client-surface) 60%); background-size:300% 100%; }

.hjyq-client-page .client-dialog { background:rgba(32,25,39,.24); }
.hjyq-client-page .client-dialog-card {
  border-color:color-mix(in srgb,var(--client-purple) 28%,var(--client-border));
  background:linear-gradient(155deg,color-mix(in srgb,var(--client-purple) 5%,var(--client-surface)),var(--client-surface) 52%);
  box-shadow:0 24px 70px rgba(50,38,61,.18);
}
.hjyq-client-page .client-dialog-close { border-color:var(--client-border); color:var(--client-text); background:var(--client-surface); }
.hjyq-client-page .client-ledger-row { border-color:var(--client-border); background:var(--client-surface-2); }
.hjyq-client-page .toast { border-color:var(--client-border); border-left-color:var(--client-purple); color:var(--client-text-strong); background:rgba(255,255,255,.97); box-shadow:0 14px 34px rgba(50,38,61,.16); }

.hjyq-client-page .client-ticket-actions .client-display:hover,
.hjyq-client-page .client-ticket-actions .client-display:focus-visible,
.hjyq-client-page .client-ticket-actions .client-qr:hover,
.hjyq-client-page .client-ticket-actions .client-qr:focus-visible,
.hjyq-client-page .client-ticket-actions .client-snapshot:hover,
.hjyq-client-page .client-ticket-actions .client-snapshot:focus-visible {
  color:inherit;
  border-color:currentColor;
  box-shadow:0 0 0 3px color-mix(in srgb,currentColor 12%,transparent),0 7px 17px rgba(50,38,61,.12);
}

@media (max-width:640px) {
  .hjyq-client-page .client-tabs {
    background:rgba(255,255,255,.96);
    box-shadow:0 10px 30px rgba(50,38,61,.14);
  }
}

/* 取号计划紧凑卡片：同一门店的时段在一行按可用宽度排列，
   每张卡片只保留必要的两行信息和两行操作，避免长列表被单张卡片撑满。 */
.plan-store-items {
  grid-template-columns:repeat(auto-fill,minmax(285px,1fr));
  align-items:start;
  gap:10px;
}
.plan-card.plan-item {
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:8px;
  min-width:0;
  padding:11px 12px;
  border-radius:12px;
  background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(255,255,255,.018));
}
.plan-card.plan-item .plan-item-main { min-width:0; }
.plan-card-head { align-items:center; gap:7px; }
.plan-card-head .plan-item-title { min-width:0; gap:5px; }
.plan-card-head .plan-item-title strong { font-size:15px; white-space:nowrap; }
.plan-card-days { margin-left:auto; }
.plan-card-rule {
  gap:5px;
  margin-top:5px;
  font-size:10px;
  line-height:1.2;
}
.plan-card-rule span { padding:3px 6px; border-radius:6px; }
.plan-card-progress { height:5px; margin-top:7px; }
.plan-card-progress-label { gap:6px; margin-top:3px; }
.plan-card-progress-label .badge { margin-left:auto; }
.plan-actions {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:5px;
  width:100%;
  min-width:0;
  align-self:auto;
  align-content:normal;
}
.plan-actions .btn {
  min-width:0;
  min-height:30px;
  height:30px;
  padding:4px 5px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
}
/* 六个操作平均排成两行；执行一次仍使用 primary 样式突出显示。 */
.plan-actions .plan-action-run,
.plan-actions .plan-action-delete { grid-column:auto; }

@media (max-width:900px) and (min-width:701px) {
  .plan-store-items { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:700px) {
  .plan-store-items { grid-template-columns:1fr; }
  .plan-card.plan-item { gap:8px; }
  .plan-actions { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:430px) {
  .plan-card.plan-item { padding:10px; }
  .plan-card-head .plan-item-title strong { font-size:14px; }
  .plan-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* 2026-08-27 管理后台浅色主题。
   只挂在 /admin 的 body 类上，客户端的独立主题与展示页均不受影响。 */
.hjyq-admin-page {
  --bg:#f6f7f9;
  --surface:#ffffff;
  --surface2:#f7f8fa;
  --border:#dfe3e8;
  --text:#252a32;
  --muted:#687383;
  --gold:#b87a12;
  --gold2:#d99d31;
  --green:#167c5c;
  --red:#c44e45;
  --blue:#347fbd;
  color-scheme:light;
  min-height:100vh;
  color:var(--text);
  background:radial-gradient(circle at 16% -12%,rgba(217,157,49,.09),transparent 31%),var(--bg);
}
.hjyq-admin-page .topbar {
  border-bottom-color:var(--border);
  background:rgba(255,255,255,.94);
  box-shadow:0 3px 16px rgba(38,45,56,.055);
}
.hjyq-admin-page .nav {
  background:rgba(250,251,252,.92);
}
.hjyq-admin-page .nav button:hover,
.hjyq-admin-page .nav button.active {
  color:#2d271b;
  background:#fff3da;
}
.hjyq-admin-page .mobile-nav {
  background:rgba(255,255,255,.96);
}
.hjyq-admin-page .stat,
.hjyq-admin-page .card {
  background:#fff;
  box-shadow:0 5px 18px rgba(37,45,57,.045);
}
.hjyq-admin-page .field input,
.hjyq-admin-page .field select,
.hjyq-admin-page .plan-search input,
.hjyq-admin-page .store-search input,
.hjyq-admin-page .weekday-picker label {
  color:var(--text);
  background:#fff;
}
.hjyq-admin-page .btn {
  color:#303640;
  background:#fff;
  box-shadow:0 1px 2px rgba(38,45,56,.035);
}
.hjyq-admin-page .btn:hover,
.hjyq-admin-page .btn:focus-visible {
  border-color:#aeb6c1;
  background:#f8f9fb;
}
.hjyq-admin-page .btn.primary {
  color:#2b1d06;
  background:linear-gradient(145deg,#edc365,#d99d31);
}
.hjyq-admin-page .btn.danger {
  color:#a63e36;
  border-color:#e5b6b1;
  background:#fff5f4;
}
.hjyq-admin-page .btn.good {
  color:#126a4e;
  border-color:#afd9ca;
  background:#f1faf7;
}
.hjyq-admin-page .table-wrap { background:#fff; }
.hjyq-admin-page th { color:#596575; background:#f4f6f8; }
.hjyq-admin-page tr:hover td { background:#fafbfc; }
.hjyq-admin-page .badge { color:#5d6876; background:#eef1f4; }
.hjyq-admin-page .badge.ok { color:#126b4e; background:#e9f7f1; }
.hjyq-admin-page .badge.warn { color:#845a12; background:#fff2d8; }
.hjyq-admin-page .badge.bad { color:#aa4038; background:#fff0ef; }
.hjyq-admin-page .notice {
  color:#75551a;
  border-color:#ead29f;
  background:#fff9ec;
}
.hjyq-admin-page .log-list { gap:10px; }
.hjyq-admin-page .log-item {
  --log-accent:#6b849a;
  --log-border:#d8e2e9;
  --log-bg:#f4f8fb;
  align-items:start;
  grid-template-columns:145px minmax(140px,220px) minmax(0,1fr);
  border:1px solid var(--log-border);
  border-left:4px solid var(--log-accent);
  border-radius:10px;
  background:var(--log-bg);
}
.hjyq-admin-page .log-item.log-level-success { --log-accent:#31916d; --log-border:#cce6da; --log-bg:#f0faf6; }
.hjyq-admin-page .log-item.log-level-info { --log-accent:#6b849a; --log-border:#d8e2e9; --log-bg:#f4f8fb; }
.hjyq-admin-page .log-item.log-level-warning { --log-accent:#d58a24; --log-border:#efdcb9; --log-bg:#fff8eb; }
.hjyq-admin-page .log-item.log-level-error { --log-accent:#cf584f; --log-border:#edcfcc; --log-bg:#fff4f3; }
.hjyq-admin-page .log-event-badge {
  justify-self:start;
  align-items:flex-start;
  gap:6px;
  max-width:100%;
  border:1px solid transparent;
  line-height:1.35;
  white-space:normal;
}
.hjyq-admin-page .log-level-label { flex:none; font-size:10px; font-weight:800; letter-spacing:.08em; white-space:nowrap; }
.hjyq-admin-page .log-event-name { min-width:0; overflow-wrap:anywhere; }
.hjyq-admin-page .log-event-success { color:#17664c; border-color:#bfdfd1; background:#e3f4ec; }
.hjyq-admin-page .log-event-info { color:#405c73; border-color:#cbd9e2; background:#e9f0f5; }
.hjyq-admin-page .log-event-warning { color:#845714; border-color:#e9d09f; background:#fff0d3; }
.hjyq-admin-page .log-event-error { color:#a83f38; border-color:#e7c0bd; background:#ffe9e7; }

@media(max-width:700px) {
  .hjyq-admin-page .log-item {
    grid-template-columns:minmax(0,1fr);
    gap:7px;
    padding:11px 12px;
  }
  .hjyq-admin-page .log-item>.mono { font-size:11px; }
  .hjyq-admin-page .log-event-badge { width:fit-content; }
}

/* 管理后台弹窗也使用浅色表面，避免打开设置或编辑计划时回到深色。 */
.hjyq-admin-page .quantum-dialog {
  color:var(--text);
  border-color:#dfc48d;
  background:#fff;
  box-shadow:0 24px 70px rgba(40,47,58,.2);
}
.hjyq-admin-page .quantum-dialog::backdrop { background:rgba(35,42,52,.3); }
.hjyq-admin-page .quantum-note { color:#126a4e; border-color:#b9dece; background:#f1faf6; }
.hjyq-admin-page .quantum-warning { color:#9d4039; border-color:#e9c1bd; background:#fff5f4; }
.hjyq-admin-page .quantum-progress { background:#edf0f3; }
.hjyq-admin-page .quantum-consecutive-status { color:#795617; background:#fff6e4; }
.hjyq-admin-page .quantum-consecutive-status.is-safe { color:#126b4e; background:#eff9f5; }
.hjyq-admin-page .quantum-failure-panel { background:#fff7f6; }
.hjyq-admin-page .quantum-failure-item { background:#fff; }
.hjyq-admin-page .quantum-failure-item strong { color:#672d29; }
.hjyq-admin-page .quantum-failure-item p { color:#87534f; }

/* 计划页：保留少量紫金识别色，所有大面积表面改成近白色。 */
.hjyq-admin-page .plan-global-settings-card {
  border-color:#ead7b1;
  background:linear-gradient(145deg,#fffdf8,#fff 72%);
}
.hjyq-admin-page .global-random-take-toggle {
  color:#5f6670;
  border-color:#d9dee5;
  background:#fff;
}
.hjyq-admin-page .global-random-take-toggle:hover,
.hjyq-admin-page .global-random-take-toggle:focus-visible {
  border-color:#c5a15c;
  background:#fffaf0;
}
.hjyq-admin-page .global-random-take-toggle.is-active {
  color:#126a4e;
  border-color:#afd9ca;
  background:#f1faf7;
}
.hjyq-admin-page .plan-random-toggle,
.hjyq-admin-page .plan-store-random-toggle {
  color:#655676;
  border-color:#d8cde2;
  background:#fbf9fd;
}
.hjyq-admin-page .plan-random-toggle:hover,
.hjyq-admin-page .plan-random-toggle:focus-visible,
.hjyq-admin-page .plan-store-random-toggle:hover,
.hjyq-admin-page .plan-store-random-toggle:focus-visible {
  color:#4a3b5a;
  border-color:#bda7d3;
  background:#f7f1fb;
  outline:none;
}
.hjyq-admin-page .plan-random-toggle.is-active,
.hjyq-admin-page .plan-store-random-toggle.is-active {
  color:#126a4e;
  border-color:#afd9ca;
  background:#f1faf7;
}
.hjyq-admin-page .plan-random-toggle:disabled,
.hjyq-admin-page .plan-store-random-toggle:disabled {
  opacity:.58;
  cursor:wait;
}
.hjyq-admin-page .plan-store-group {
  border-color:#ddd6e8;
  background:#fff;
  box-shadow:0 7px 20px rgba(50,43,64,.055);
}
.hjyq-admin-page .plan-bulk-toolbar {
  border-color:#e2dde9;
  background:#faf9fc;
}
.hjyq-admin-page .plan-bulk-interval-form input,
.hjyq-admin-page .plan-bulk-interval-form select,
.hjyq-admin-page .plan-city-filter select {
  color:var(--text);
  border-color:#dfe3e8;
  background:#fff;
}
.hjyq-admin-page .plan-store-picker {
  color:#655f6d;
  border-color:#dcd6e4;
  background:#faf8fc;
}
.hjyq-admin-page .plan-store-group.is-selected {
  border-color:#d4a03a;
  box-shadow:0 0 0 2px rgba(212,160,58,.12),0 7px 20px rgba(50,43,64,.055);
}
.hjyq-admin-page .plan-store-group.is-selected .plan-store-picker {
  color:#795617;
  border-color:#d8b66f;
  background:#fff5df;
}
.hjyq-admin-page .plan-store-group>summary {
  background:linear-gradient(90deg,#f8f3fd,rgba(255,255,255,0) 74%);
}
.hjyq-admin-page .plan-store-summary strong,
.hjyq-admin-page .plan-item-title strong { color:#30283a; }
.hjyq-admin-page .plan-store-summary-hint,
.hjyq-admin-page .plan-item-meta,
.hjyq-admin-page .plan-card-rule,
.hjyq-admin-page .plan-card-days { color:#6f6879; }
.hjyq-admin-page .plan-card.plan-item,
.hjyq-admin-page .plan-item {
  border-color:#e2dde9;
  background:linear-gradient(145deg,#fff,#faf8fc);
}
.hjyq-admin-page .plan-card:hover { border-color:#bda7d3; }
.hjyq-admin-page .plan-card-rule span { border-color:#e4e0e9; background:#f6f3f8; }
.hjyq-admin-page .plan-card-progress { background:#e7e2eb; }
.hjyq-admin-page .plan-card-progress-label { color:#766f7f; }
.hjyq-admin-page .plan-card-progress-label strong { color:#9b6610; }
.hjyq-admin-page .plan-container-city-field select { color:var(--text); border-color:#dbc28e; background:#fff; }
.hjyq-admin-page .plan-container-city-field small { color:var(--muted); }
.hjyq-admin-page .plan-dialog-container-only #planStoreHint,
.hjyq-admin-page .plan-autofill-note,
.hjyq-admin-page .plan-autofill-note strong,
.hjyq-admin-page .plan-autofill-button { color:#795617; }
.hjyq-admin-page .plan-autofill-note { border-color:#ead29f; background:#fff9ec; }
.hjyq-admin-page .plan-autofill-button { border-color:#d8b66f; background:#fff5df; }

/* 有效号码、门店和统计卡片同步回到浅色，以免局部留下深色大块。 */
.hjyq-admin-page .admin-ticket-card {
  border-color:#ddd6e8;
  background:linear-gradient(145deg,#fff,#faf8fc);
  box-shadow:0 7px 20px rgba(50,43,64,.055);
}
.hjyq-admin-page .admin-ticket-card.is-called { background:linear-gradient(145deg,#fff7fb,#fff); }
.hjyq-admin-page .admin-ticket-identity strong,
.hjyq-admin-page .admin-ticket-card-meta b { color:#30283a; }
.hjyq-admin-page .admin-ticket-identity span:not(.badge),
.hjyq-admin-page .admin-ticket-card-meta em,
.hjyq-admin-page .admin-ticket-card-foot time { color:#756e7e; }
.hjyq-admin-page .admin-ticket-card-meta { border-color:#e5e0e9; background:#f6f3f8; }
.hjyq-admin-page .admin-ticket-action { color:#3c3446; border-color:#d9d2df; background:#fff; }
.hjyq-admin-page .admin-ticket-action:hover,
.hjyq-admin-page .admin-ticket-action:focus-visible { color:#2f2639; background:#faf7fc; }
.hjyq-admin-page .admin-ticket-snapshot { color:#276eaa; border-color:#b9d5ea; background:#f2f8fc; }
.hjyq-admin-page .admin-ticket-cancel { color:#a63e36; border-color:#e5b6b1; background:#fff5f4; }
.hjyq-admin-page .store-queue-card,
.hjyq-admin-page .client-store-group,
.hjyq-admin-page .client-status-group,
.hjyq-admin-page .client-trend-card {
  border-color:var(--border);
  background:#fff;
}
.hjyq-admin-page .queue-trend-heading,
.hjyq-admin-page .queue-trend-foot { color:#4d718e; }
.hjyq-admin-page .queue-trend-panel {
  /* Keep every expanded subsection of the admin portal light.  The shared
     trend component predates the admin light theme and otherwise leaves a
     large deep-violet block below each store header. */
  background:linear-gradient(180deg,#fbf9fe,#f6f3fa);
  border-top:1px solid #eee9f3;
}
.hjyq-admin-page .queue-trend-plot {
  border-bottom-color:#e1dce8;
}
.hjyq-admin-page .queue-trend-plot::after {
  border-bottom-color:rgba(129,111,153,.34);
}
.hjyq-admin-page .queue-trend-bar {
  background:linear-gradient(180deg,#b992e5 0%,#8f68c2 58%,#76549f 100%);
  box-shadow:0 0 6px rgba(118,84,161,.16);
}
.hjyq-admin-page .queue-trend-bar.latest {
  background:linear-gradient(180deg,#c9a9ef 0%,#9b73cf 58%,#805bab 100%);
  box-shadow:0 0 9px rgba(118,84,161,.22);
}
.hjyq-admin-page .queue-trend-empty {
  border-color:#dcd5e5;
  background:rgba(255,255,255,.64);
}
.hjyq-admin-page .analytics-status-row>div { background:#edf0f3; }

@media(max-width:900px) {
  .hjyq-admin-page .mobile-nav { box-shadow:0 3px 12px rgba(38,45,56,.045); }
}

/* 管理后台的城市 → 门店信息层级。仅限定管理端，避免影响客户端主题。 */
.hjyq-admin-page .admin-store-section-toolbar { align-items:center; margin-bottom:14px; }
.hjyq-admin-page .admin-store-section-toolbar h2 { margin:0 0 4px; }
.hjyq-admin-page .admin-store-section-toolbar p { margin:0; }
.hjyq-admin-page .admin-store-section-toolbar select { min-width:190px; }
.hjyq-admin-page .admin-city-kicker {
  display:block;
  margin-bottom:3px;
  color:#8b6ead;
  font-size:10px;
  font-weight:800;
  letter-spacing:.14em;
}
.hjyq-admin-page .admin-ticket-city-list,
.hjyq-admin-page .admin-store-city-list,
.hjyq-admin-page .admin-analytics-city-list { display:grid; gap:18px; }
.hjyq-admin-page .admin-ticket-city-group,
.hjyq-admin-page .admin-store-city-group,
.hjyq-admin-page .admin-analytics-city-group {
  overflow:hidden;
  border:1px solid #ded7e8;
  border-radius:16px;
  background:#fbf9fd;
  box-shadow:0 7px 20px rgba(50,43,64,.045);
}
.hjyq-admin-page .admin-ticket-city-head,
.hjyq-admin-page .admin-store-city-head,
.hjyq-admin-page .admin-analytics-city-group>header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  min-height:67px;
  padding:12px 16px;
  border-bottom:1px solid #e8e2ec;
  background:linear-gradient(90deg,#f4eef9,#fff 78%);
}
.hjyq-admin-page .admin-ticket-city-head h3,
.hjyq-admin-page .admin-store-city-head h2,
.hjyq-admin-page .admin-analytics-city-group>header h3 { margin:0; color:#32283d; font-size:18px; }
.hjyq-admin-page .admin-ticket-store-list { display:grid; gap:12px; padding:13px; }
.hjyq-admin-page .admin-ticket-store-group {
  overflow:hidden;
  border:1px solid #e2dde8;
  border-radius:13px;
  background:#fff;
}
.hjyq-admin-page .admin-ticket-store-group>header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:64px;
  padding:10px 13px;
  border-bottom:1px solid #eeeaf1;
  background:#fcfbfd;
}
.hjyq-admin-page .admin-ticket-store-group h4 { margin:0; color:#30283a; font-size:15px; }
.hjyq-admin-page .admin-ticket-store-group .admin-ticket-grid { padding:12px; }
.hjyq-admin-page .admin-ticket-store-counts,
.hjyq-admin-page .admin-store-city-stats { display:flex; align-items:center; justify-content:flex-end; gap:7px; flex-wrap:wrap; }
.hjyq-admin-page .admin-ticket-store-counts strong,
.hjyq-admin-page .admin-store-city-stats strong { color:#5f536a; font-size:12px; }
.hjyq-admin-page .admin-store-city-group { padding-bottom:14px; }
.hjyq-admin-page .admin-store-city-group .store-queue-list {
  grid-template-columns:repeat(auto-fit,minmax(390px,1fr));
  padding:14px;
}
.hjyq-admin-page .admin-analytics-city-group .table-wrap { margin:0; border:0; border-radius:0; }
.hjyq-admin-page .admin-analytics-city-group table { margin:0; }

@media(max-width:700px) {
  .hjyq-admin-page .admin-store-section-toolbar { align-items:stretch; flex-direction:column; }
  .hjyq-admin-page .admin-store-section-toolbar .spacer { display:none; }
  .hjyq-admin-page .admin-store-section-toolbar select { width:100%; min-width:0; }
  .hjyq-admin-page .admin-ticket-city-head,
  .hjyq-admin-page .admin-store-city-head,
  .hjyq-admin-page .admin-analytics-city-group>header,
  .hjyq-admin-page .admin-ticket-store-group>header { align-items:flex-start; flex-direction:column; }
  .hjyq-admin-page .admin-ticket-store-counts,
  .hjyq-admin-page .admin-store-city-stats { justify-content:flex-start; }
  .hjyq-admin-page .admin-store-city-group .store-queue-list { grid-template-columns:1fr; padding:10px; }
.hjyq-admin-page .admin-ticket-store-list { padding:9px; }
.hjyq-admin-page .admin-ticket-store-group .admin-ticket-grid { padding:9px; }
}

/* Active ticket priority: compact, operational metadata without a fake countdown. */
.admin-ticket-monitor,.client-ticket-monitor{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:8px 0 0;padding-left:5px}
.ticket-urgency-badge,.ticket-freshness,.ticket-monitor-tier{display:inline-flex;align-items:center;min-height:21px;padding:2px 7px;border:1px solid rgba(166,155,183,.24);border-radius:999px;font-size:9px;font-weight:750;line-height:1.2;white-space:nowrap}
.ticket-urgency-badge.called,.ticket-urgency-badge.urgent{color:#ffbbc3;border-color:rgba(235,89,105,.42);background:rgba(235,89,105,.11)}
.ticket-urgency-badge.near{color:#ffd48d;border-color:rgba(215,167,67,.42);background:rgba(215,167,67,.11)}
.ticket-urgency-badge.watch{color:#b8d7ff;border-color:rgba(91,167,232,.38);background:rgba(91,167,232,.09)}
.ticket-urgency-badge.normal,.ticket-urgency-badge.unknown{color:#bdb4c8;background:rgba(166,155,183,.07)}
.ticket-freshness.fresh{color:#85ddb9;border-color:rgba(66,201,149,.4);background:rgba(66,201,149,.09)}
.ticket-freshness.stale{color:#ffb0aa;border-color:rgba(226,105,95,.38);background:rgba(226,105,95,.09)}
.ticket-freshness.unknown,.ticket-monitor-tier{color:#bdb4c8;background:rgba(166,155,183,.06)}
.ticket-store-expand{display:block;width:calc(100% - 24px);min-height:34px;margin:0 12px 12px;padding:6px 10px;border:1px dashed rgba(166,155,183,.34);border-radius:10px;color:#c7bad3;background:rgba(255,255,255,.025);font-size:10px;font-weight:750;cursor:pointer}
.ticket-store-expand:hover,.ticket-store-expand:focus-visible{border-color:var(--gold2);color:var(--gold2);outline:none}
.admin-ticket-card.urgency-called,.admin-ticket-card.urgency-urgent{border-color:rgba(226,105,95,.5)}
.admin-ticket-card.urgency-near{border-color:rgba(215,167,67,.48)}
.hjyq-client-page .client-ticket-monitor{padding-left:4px}
.hjyq-client-page .client-ticket-card.urgency-called,.hjyq-client-page .client-ticket-card.urgency-urgent{border-color:color-mix(in srgb,#e2695f 50%,var(--client-border))}
.hjyq-client-page .client-ticket-card.urgency-near{border-color:color-mix(in srgb,#d7a743 48%,var(--client-border))}
.hjyq-client-page .client-ticket-store-expand{color:var(--client-text);border-color:var(--client-border);background:var(--client-surface-2)}
.hjyq-client-page .client-ticket-store-expand:hover,.hjyq-client-page .client-ticket-store-expand:focus-visible{color:var(--client-purple-2);border-color:var(--client-purple)}
.hjyq-admin-page .ticket-urgency-badge.normal,.hjyq-admin-page .ticket-urgency-badge.unknown,.hjyq-admin-page .ticket-freshness.unknown,.hjyq-admin-page .ticket-monitor-tier{color:#6f6878;border-color:#ddd6e3;background:#f8f6f9}
.hjyq-admin-page .ticket-freshness.fresh{color:#24795a;border-color:#b6dccb;background:#f0faf5}
.hjyq-admin-page .ticket-freshness.stale,.hjyq-admin-page .ticket-urgency-badge.called,.hjyq-admin-page .ticket-urgency-badge.urgent{color:#a13d35;border-color:#e4b5b0;background:#fff4f3}
.hjyq-admin-page .ticket-urgency-badge.near{color:#8a6116;border-color:#e5cf9f;background:#fffaf0}
.hjyq-admin-page .ticket-urgency-badge.watch{color:#286a9d;border-color:#b9d5e9;background:#f1f8fc}
.hjyq-admin-page .ticket-store-expand{color:#655d70;border-color:#d5cedb;background:#fbfafc}
.hjyq-admin-page .ticket-store-expand:hover,.hjyq-admin-page .ticket-store-expand:focus-visible{color:#8a6116;border-color:#c9a75d}
@media(max-width:700px){.admin-ticket-monitor,.client-ticket-monitor{gap:4px}.ticket-urgency-badge,.ticket-freshness,.ticket-monitor-tier{padding:2px 6px}.ticket-store-expand{width:calc(100% - 18px);margin:0 9px 9px}}

/* 客户账户：余额、专属费用和常用操作需要在浅色后台中一眼可见。 */
.hjyq-admin-page .client-table-wrap{overflow:auto}
.hjyq-admin-page .client-account-table{min-width:1180px}
.hjyq-admin-page .client-account-table td{vertical-align:middle}
.hjyq-admin-page .client-balance-chip,
.hjyq-admin-page .client-fee-chip{display:inline-grid;gap:1px;min-width:100px;padding:7px 10px;border:1px solid #e2d1a8;border-radius:11px;background:linear-gradient(145deg,#fffaf0,#fff);box-shadow:0 5px 14px rgba(145,105,35,.08)}
.hjyq-admin-page .client-balance-chip small,
.hjyq-admin-page .client-fee-chip small{color:#7a6c51;font-size:10px;font-weight:750;line-height:1.2}
.hjyq-admin-page .client-balance-chip strong{color:#9a6815;font-size:22px;font-weight:900;line-height:1.15}
.hjyq-admin-page .client-fee-chip{min-width:116px;border-color:#dcd5e5;background:#faf8fc;box-shadow:none}
.hjyq-admin-page .client-fee-chip.is-custom{border-color:#cbb0e6;background:#f9f3ff}
.hjyq-admin-page .client-fee-chip strong{color:#4f3c62;font-size:14px;font-weight:850;line-height:1.25}
.hjyq-admin-page .client-fee-chip.is-custom strong{color:#754c9d}
.hjyq-admin-page .client-fee-chip em{font-size:10px;font-style:normal;font-weight:700}
.hjyq-admin-page .client-row-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:350px}
.hjyq-admin-page .client-row-actions .btn{margin:0}
.hjyq-admin-page .client-recharge-btn{font-weight:850}
.hjyq-admin-page #logCustomerFilter{min-width:180px}
.hjyq-admin-page .log-customer-subject{color:#6c478f;border:1px solid #dac9e9;background:#faf5ff}
@media(max-width:700px){
  .hjyq-admin-page .client-account-table{min-width:1040px}
  .hjyq-admin-page .client-row-actions{min-width:300px}
  .hjyq-admin-page #logCustomerFilter{width:100%;min-width:0}
}

