/* One Spa configurator 0.9.27 — shallow sheet, brand tokens, one alignment grid. */
.osw-configurator[hidden]{display:none!important}
.osw-configurator{
  --cfg-gutter:24px;
  --cfg-ink-soft:var(--ink-soft,var(--ink));
  position:fixed;inset:0;z-index:100500;color:var(--ink);
  font-family:var(--sans);font-size:14px;line-height:1.55;letter-spacing:.01em;
}
.osw-configurator *{box-sizing:border-box}
.osw-configurator button{all:unset;box-sizing:border-box;cursor:pointer;font-family:inherit;text-align:center;text-transform:none;transition:background-color .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .12s ease,opacity .18s ease}
.osw-configurator button:focus-visible{outline:2px solid var(--terra);outline-offset:2px}
.osw-configurator button:disabled{cursor:not-allowed;opacity:.48;transform:none}

.osw-cfg-back{position:absolute;inset:0;background:rgba(58,42,34,.56);backdrop-filter:blur(8px)}
.osw-cfg-sheet{position:relative;display:flex;flex-direction:column;width:min(620px,calc(100% - 32px));height:min(860px,90dvh);margin:5dvh auto;background:var(--osw-bg,#FFFFFF);border:1px solid var(--line);border-radius:24px;box-shadow:0 28px 90px rgba(58,42,34,.28);overflow:hidden}
.osw-cfg-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:var(--cfg-gutter) var(--cfg-gutter) 14px;background:var(--osw-bg,#FFFFFF)}
.osw-cfg-k{font-family:var(--latin);font-size:12px;letter-spacing:.17em;color:var(--clay)}
.osw-cfg-head h2{margin:4px 0 2px;color:var(--ink);font:600 22px/1.25 var(--serif)}
.osw-cfg-head p{max-width:470px;margin:0;color:var(--cfg-ink-soft);font-size:12px;line-height:1.5}

/* Icon controls: close, calendar navigation and quantity stepper. */
.osw-configurator .osw-cfg-icon{display:grid;place-items:center;flex:0 0 auto;width:44px;min-width:44px;min-height:44px;aspect-ratio:1;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--clay);font-size:22px;line-height:1;white-space:normal;box-shadow:none}
.osw-configurator .osw-cfg-icon:hover{background:var(--peach);border-color:var(--clay)}
.osw-configurator .osw-cfg-icon:active{background:var(--rose);color:var(--deep);transform:scale(.96)}
.osw-configurator .osw-cfg-icon:disabled{background:var(--osw-bg,#FFFFFF);color:var(--cfg-ink-soft)}
.osw-configurator button.osw-cfg-icon:focus{background:var(--paper)!important;color:var(--clay)!important;border-color:var(--line)!important}
.osw-configurator button.osw-cfg-icon:hover{background:var(--peach)!important;color:var(--clay)!important;border-color:var(--clay)!important}
.osw-configurator button.osw-cfg-icon:active{background:var(--rose)!important;color:var(--deep)!important;border-color:var(--clay)!important}

.osw-cfg-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:8px var(--cfg-gutter) 14px;border-bottom:1px solid var(--line);background:var(--osw-bg,#FFFFFF)}
.osw-cfg-progress-step{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--cfg-ink-soft);font-size:12px;line-height:1.25}
.osw-cfg-progress-step:not(:last-child):after{content:"";position:absolute;z-index:0;top:13px;left:calc(50% + 22px);right:calc(-50% + 22px);height:1px;background:var(--line)}
.osw-cfg-progress-step.is-done:not(:last-child):after{background:var(--terra)}
.osw-cfg-progress-step span{position:relative;z-index:1;display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--cfg-ink-soft);font-weight:700}
.osw-cfg-progress-step b{font-weight:500}
.osw-cfg-progress-step.is-active,.osw-cfg-progress-step.is-done{color:var(--clay)}
.osw-cfg-progress-step.is-active span,.osw-cfg-progress-step.is-done span{border-color:var(--terra);background:var(--terra);color:var(--cream)}

.osw-cfg-scroll{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;scrollbar-color:var(--taupe) var(--cream)}
.osw-cfg-notices{margin:var(--cfg-gutter) var(--cfg-gutter) 0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--peach);box-shadow:var(--shadow);color:var(--ink);font-size:12px;line-height:1.55}
.osw-cfg-notices[hidden]{display:none}
.osw-cfg-view{width:100%;padding:var(--cfg-gutter)}
.osw-cfg-view h3{margin:0;color:var(--ink);font:600 16px/1.35 var(--serif)}

.osw-cfg-date-step{padding:0}
.osw-cfg-cal-head{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;margin:10px 0 8px}
.osw-cfg-cal-head b{text-align:center;color:var(--ink);font:600 16px/1.25 var(--serif)}
.osw-configurator .osw-cfg-cal-nav{width:44px;min-width:44px;min-height:44px;padding:0;border-radius:50%;font-size:22px;white-space:normal}
.osw-cfg-cal-head .osw-cfg-cal-nav:last-child{justify-self:end}
.osw-cfg-weekdays,.osw-cfg-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.osw-cfg-weekdays{margin-bottom:6px;color:var(--cfg-ink-soft);font-size:12px;text-align:center}
.osw-cfg-days>span,.osw-cfg-days>button{min-width:0;aspect-ratio:1}
.osw-configurator .osw-cfg-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:100%;min-height:44px;padding:3px 1px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font-size:14px;white-space:normal;box-shadow:none}
.osw-configurator .osw-cfg-day em{font-style:normal;font-size:14px;font-weight:700;line-height:1.15}
.osw-configurator .osw-cfg-day small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cfg-ink-soft);font-size:12px;line-height:1.1}
.osw-configurator .osw-cfg-day.is-weekday{background:var(--paper)}
.osw-configurator .osw-cfg-day.is-weekend,.osw-configurator .osw-cfg-day.is-holiday{border-color:var(--terra);background:var(--peach);color:var(--deep)}
.osw-configurator .osw-cfg-day.is-weekend small,.osw-configurator .osw-cfg-day.is-holiday small{color:var(--deep)}
.osw-configurator .osw-cfg-day:hover:not(:disabled){border-color:var(--clay);box-shadow:0 0 0 2px var(--line)}
.osw-configurator .osw-cfg-day:active:not(:disabled){background:var(--rose);transform:scale(.97)}
.osw-configurator .osw-cfg-day.is-selected{border-color:var(--deep);background:var(--deep);color:var(--cream);box-shadow:0 0 0 2px var(--terra)}
.osw-configurator .osw-cfg-day.is-selected small{color:var(--cream)}
.osw-configurator .osw-cfg-day:disabled{opacity:.72;background:var(--osw-bg,#FFFFFF);border-style:dashed;color:var(--cfg-ink-soft);filter:none}
.osw-configurator .osw-cfg-day:disabled small{color:var(--cfg-ink-soft)}
.osw-configurator button.osw-cfg-day:focus{background:var(--paper)!important;color:var(--ink)!important}
.osw-configurator button.osw-cfg-day.is-weekend:focus,.osw-configurator button.osw-cfg-day.is-holiday:focus{background:var(--peach)!important;color:var(--deep)!important}
.osw-configurator button.osw-cfg-day.is-selected:focus{background:var(--deep)!important;color:var(--cream)!important}
.osw-cfg-cal-hint{margin:12px 0 0;color:var(--cfg-ink-soft);font-size:12px;line-height:1.55;text-align:center}

/* Shared card and row model. */
.osw-cfg-selected,.osw-cfg-package-menu,.osw-cfg-treatment-menu,.osw-cfg-confirm-lines{border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow);overflow:hidden}
.osw-cfg-empty{margin:0;padding:var(--cfg-gutter);color:var(--cfg-ink-soft);text-align:center;font-size:12px}
.osw-cfg-selected-row,.osw-cfg-menu-row,.osw-cfg-treatment-row{display:grid;grid-template-columns:minmax(0,1fr) 104px;grid-template-rows:auto auto;align-items:center;gap:8px 12px;padding:16px var(--cfg-gutter)}
.osw-cfg-selected-row+.osw-cfg-selected-row,.osw-cfg-menu-row+.osw-cfg-menu-row,.osw-cfg-treatment-row+.osw-cfg-treatment-row,.osw-cfg-confirm-row+.osw-cfg-confirm-row{border-top:1px solid var(--line)}
.osw-cfg-item-copy{min-width:0;grid-column:1/-1;grid-row:1}
.osw-cfg-item-copy b{display:block;color:var(--ink);font-size:14px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.osw-cfg-item-copy small{display:block;margin-top:3px;color:var(--cfg-ink-soft);font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.osw-cfg-item-price{display:flex;align-items:center;justify-content:flex-start;gap:7px;grid-column:1;grid-row:2;color:var(--ink);font-size:13px;white-space:nowrap}
.osw-cfg-item-price strong,.osw-cfg-treatment-price strong{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}
.osw-cfg-item-price del,.osw-cfg-treatment-price del{color:var(--cfg-ink-soft);font-size:12px}

.osw-cfg-stepper{display:grid;grid-template-columns:44px 28px 44px;align-items:center;grid-column:2;grid-row:2;text-align:center}
.osw-configurator .osw-cfg-stepper-btn{width:44px;min-width:44px;min-height:44px;padding:0;border-radius:50%;font-size:22px;white-space:normal}
.osw-cfg-stepper b{color:var(--ink);font-size:13px;font-variant-numeric:tabular-nums}

.osw-cfg-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}
.osw-cfg-section-head span{color:var(--cfg-ink-soft);font-size:12px}
.osw-cfg-menu-head{margin-top:22px}
.osw-cfg-addons{margin-top:22px}
.osw-cfg-group-hint,.osw-cfg-progress-hint{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink-soft);font-size:12px;line-height:1.55}
.osw-cfg-progress-hint{margin:12px 0;color:var(--deep);font-weight:700}

/* Three action levels: primary, secondary and tertiary; icon controls are above. */
.osw-configurator .osw-cfg-primary,.osw-configurator .osw-cfg-secondary,.osw-configurator .osw-cfg-tertiary{display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:48px;padding:10px 16px;border-radius:10px;font-size:16px;font-weight:600;line-height:1.3;white-space:normal}
.osw-configurator .osw-cfg-primary{border:1px solid var(--deep);background:var(--deep);color:var(--cream);box-shadow:0 6px 18px rgba(110,42,28,.18)}
.osw-configurator .osw-cfg-primary:hover{border-color:var(--ink);background:var(--ink);color:var(--cream)}
.osw-configurator .osw-cfg-primary:active{border-color:var(--clay);background:var(--clay);transform:translateY(1px)}
.osw-configurator .osw-cfg-primary:disabled{border-color:var(--line);background:var(--taupe);color:var(--cream);box-shadow:none}
.osw-configurator button.osw-cfg-primary:focus{border-color:var(--deep)!important;background:var(--deep)!important;color:var(--cream)!important}
.osw-configurator .osw-cfg-secondary{border:1px solid var(--clay);background:transparent;color:var(--clay);box-shadow:none}
.osw-configurator .osw-cfg-secondary:hover{background:var(--peach);color:var(--deep)}
.osw-configurator .osw-cfg-secondary:active{background:var(--rose);border-color:var(--deep);color:var(--deep);transform:translateY(1px)}
.osw-configurator .osw-cfg-secondary:disabled{border-color:var(--line);background:transparent;color:var(--cfg-ink-soft)}
.osw-configurator button.osw-cfg-secondary:focus{border-color:var(--clay)!important;background:transparent!important;color:var(--clay)!important}
.osw-configurator .osw-cfg-tertiary{border:1px solid transparent;background:transparent;color:var(--clay);box-shadow:none;font-size:14px;font-weight:500;text-decoration:none;text-underline-offset:3px}
.osw-configurator .osw-cfg-tertiary:hover{background:transparent;color:var(--deep);text-decoration:underline}
.osw-configurator .osw-cfg-tertiary:active{background:transparent;color:var(--terra);transform:translateY(1px)}
.osw-configurator .osw-cfg-tertiary:disabled{background:transparent;color:var(--cfg-ink-soft);text-decoration:none}
.osw-configurator button.osw-cfg-tertiary:focus{border-color:transparent!important;background:transparent!important;color:var(--clay)!important}
.osw-configurator .osw-cfg-add{grid-column:2;grid-row:2;width:104px;min-width:104px;min-height:44px;padding:8px 12px;border-radius:10px;font-size:13px;white-space:normal}
.osw-configurator .osw-cfg-date-edit{width:auto;min-height:44px;padding:8px 0;border-radius:10px;font-size:12px;white-space:normal;text-align:right}
.osw-configurator .osw-cfg-expand{width:100%;min-height:44px;margin-top:8px;padding:8px 12px;border-radius:10px;font-size:12px;white-space:normal}

/* W1（0.9.36）：加购行价格区——24 小时组「划线门店价 + 线上价」一行、省额标签一行；
   限时组白天/夜间两档各一行（当前到店档加粗）+「门店 划线价 + 白天省」一行。金额不拆行。 */
.osw-cfg-treatment-price{display:flex;flex-direction:column;align-items:flex-start;gap:2px;grid-column:1;grid-row:2;min-width:0;max-width:100%;color:var(--ink);font-size:13px;line-height:1.45;font-variant-numeric:tabular-nums}
.osw-cfg-price-was{min-width:0;color:var(--cfg-ink-soft);font-size:12px;white-space:nowrap}
.osw-cfg-price-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 6px;color:var(--cfg-ink-soft);font-size:12px}
.osw-cfg-price-line.is-active{color:var(--ink)}
.osw-cfg-price-line strong{font-size:13px}
.osw-cfg-money{white-space:nowrap}
.osw-cfg-price-save{display:flex;flex-wrap:wrap;align-items:center;gap:3px 6px;margin-top:1px;color:var(--cfg-ink-soft);font-size:12px}

.osw-cfg-human{margin:10px 0 14px;padding:10px 12px;border:0;border-radius:10px;background:var(--peach);color:var(--ink);font-size:12px;line-height:1.5}
.osw-cfg-confirm-row,.osw-cfg-confirm-totals>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(96px,max-content);align-items:start;gap:12px;padding:12px 14px;color:var(--ink);font-size:13px;line-height:1.45}
.osw-cfg-confirm-row b,.osw-cfg-confirm-totals>div b{justify-self:end;color:var(--ink);font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.osw-cfg-confirm-row.is-benefit{background:var(--peach);color:var(--deep)}
.osw-cfg-confirm-row.is-benefit b{color:var(--deep)}
.osw-cfg-benefit-hints{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:var(--shadow);color:var(--ink);font-size:12px;line-height:1.55}
.osw-cfg-benefit-hints p{margin:0}
.osw-cfg-benefit-hints p+p{margin-top:6px}
.osw-cfg-benefit-hints .is-strong{color:var(--deep);font-weight:700}
.osw-cfg-ticket-gate{display:grid;gap:10px;margin-top:12px;padding:14px;border:1px solid var(--terra);border-radius:12px;background:var(--peach);box-shadow:var(--shadow);color:var(--deep)}
.osw-cfg-ticket-gate.is-saving{border-color:var(--clay);background:var(--paper)}
.osw-cfg-ticket-gate p{margin:0;font-size:12px;line-height:1.55}
.osw-configurator .osw-cfg-ticket-gate .osw-cfg-secondary{min-height:44px;padding:8px 14px;font-size:13px}
/* 氧舱预约 v1：点单步的开始时间按钮（开始时间＝到氧舱报到的时间） */
.osw-cfg-oxy{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow)}
.osw-cfg-oxy .osw-cfg-section-head{margin:0}
.osw-cfg-oxy-times{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.osw-configurator .osw-cfg-oxy-time{display:flex;align-items:center;justify-content:center;min-height:44px;padding:6px 4px;border:1px solid var(--line);border-radius:10px;background:var(--osw-bg,#FFFFFF);color:var(--ink);font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.osw-configurator .osw-cfg-oxy-time:hover{border-color:var(--clay);background:var(--peach)}
.osw-configurator .osw-cfg-oxy-time.is-selected,.osw-configurator button.osw-cfg-oxy-time.is-selected:focus{border-color:var(--deep)!important;background:var(--deep)!important;color:var(--cream)!important}
.osw-cfg-oxy-status{margin:12px 0 0;color:var(--cfg-ink-soft);font-size:13px;line-height:1.5}
.osw-configurator .osw-cfg-oxy-status .osw-cfg-tertiary{width:auto;min-height:44px;padding:4px 6px;font-size:13px}
.osw-cfg-oxy-hint{margin:10px 0 0;color:var(--cfg-ink-soft);font-size:12px;line-height:1.5}
@media(min-width:561px){.osw-cfg-oxy-times{grid-template-columns:repeat(6,minmax(0,1fr))}}

/* W2b：闸门第二个出口、门票订单核验表单、已核验条 */
.osw-cfg-ticket-actions{display:grid;gap:8px}
.osw-cfg-date-step .osw-cfg-ticket-gate,.osw-cfg-order-step .osw-cfg-ticket-gate{margin:12px 0}
.osw-cfg-ticket-form{display:grid;gap:10px;margin:0}
.osw-cfg-ticket-form label{display:grid;gap:4px;color:var(--ink);font-size:12px;line-height:1.4}
.osw-configurator .osw-cfg-ticket-form input{width:100%;min-height:44px;margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--ink);font:16px/1.3 var(--sans);box-shadow:none}
.osw-configurator .osw-cfg-ticket-form input:focus{outline:2px solid var(--terra);outline-offset:1px;border-color:var(--terra)}
.osw-configurator .osw-cfg-ticket-form input:disabled{opacity:.6}
.osw-configurator .osw-cfg-ticket-gate .osw-cfg-tertiary{justify-self:start;width:auto;min-height:44px;padding:4px 2px;font-size:13px}
.osw-cfg-ticket-gate .osw-cfg-ticket-hint{color:var(--cfg-ink-soft)}
.osw-cfg-ticket-gate .osw-cfg-ticket-error{color:var(--deep);font-weight:700}
.osw-cfg-ticket-ok{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:12px 0;padding:8px 8px 8px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);box-shadow:var(--shadow);color:var(--deep);font-size:12px;line-height:1.5}
.osw-cfg-ticket-ok p{margin:0}
.osw-configurator .osw-cfg-ticket-ok .osw-cfg-tertiary{width:auto;min-height:44px;padding:4px 6px;font-size:13px;white-space:nowrap}
.osw-cfg-confirm-totals{margin-top:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow);overflow:hidden}
.osw-cfg-confirm-totals>div+div{border-top:1px solid var(--line)}
.osw-cfg-confirm-totals .is-grand{background:var(--peach);color:var(--deep);font-size:16px}
.osw-cfg-confirm-totals .is-grand b{color:var(--deep);font-size:22px}
.osw-cfg-frontdesk{margin:12px 0 0;color:var(--cfg-ink-soft);font-size:12px;text-align:center}

.osw-cfg-footer{flex:0 0 auto;padding:12px var(--cfg-gutter) calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--osw-bg,#FFFFFF);box-shadow:0 -14px 24px rgba(110,42,28,.10)}
.osw-cfg-footer[hidden]{display:none}
.osw-cfg-birthday{margin:0 0 8px;color:var(--cfg-ink-soft);font-size:12px;line-height:1.45;text-align:center}
.osw-cfg-error{margin:0 0 8px;color:var(--deep);font-size:12px;line-height:1.4;text-align:center}
.osw-cfg-branch{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}
.osw-cfg-order-total{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin:0 0 8px;padding:0 2px;color:var(--cfg-ink-soft);font-size:13px}
.osw-cfg-order-total b{color:var(--deep);font-size:22px;font-variant-numeric:tabular-nums}

.osw-cfg-going{position:fixed;inset:0;z-index:100700;display:grid;place-items:center;background:rgba(58,42,34,.56);color:var(--ink)}
.osw-cfg-going>div{display:flex;align-items:center;gap:12px;padding:18px 22px;border:1px solid var(--line);border-radius:14px;background:var(--paper);box-shadow:var(--shadow)}
.osw-cfg-going span{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--terra);border-radius:50%;animation:osw-cfg-spin .8s linear infinite}
@keyframes osw-cfg-spin{to{transform:rotate(360deg)}}
.osw-configurator.is-busy .osw-cfg-close{opacity:.48;pointer-events:none}

@media(min-width:561px){
  .osw-cfg-selected-row,.osw-cfg-menu-row,.osw-cfg-treatment-row{grid-template-columns:minmax(0,1fr) 180px 104px;grid-template-rows:auto;gap:12px}
  .osw-cfg-treatment-row{grid-template-columns:minmax(0,1fr) 208px 104px}
  .osw-cfg-item-copy{grid-column:1;grid-row:1}
  .osw-cfg-item-price,.osw-cfg-treatment-price{grid-column:2;grid-row:1;justify-self:end}
  .osw-cfg-item-price{justify-content:flex-end}
  .osw-cfg-stepper{grid-column:3;grid-row:1;justify-self:end}
  .osw-configurator .osw-cfg-add{grid-column:3;grid-row:1}
}

@media(max-width:560px){
  .osw-configurator{--cfg-gutter:16px}
  .osw-cfg-sheet{width:100%;height:100dvh;margin:0;border:0;border-radius:0}
  .osw-cfg-head{padding-top:16px;padding-bottom:10px}
  .osw-cfg-head p{max-width:270px;font-size:12px}
  .osw-cfg-progress{padding-top:4px;padding-bottom:10px}
  .osw-cfg-notices{margin-top:16px}
  .osw-cfg-weekdays,.osw-cfg-days{gap:4px}
  .osw-configurator .osw-cfg-day{border-radius:8px}
  .osw-cfg-selected-row,.osw-cfg-menu-row,.osw-cfg-treatment-row{padding:14px var(--cfg-gutter)}
  .osw-configurator .osw-cfg-primary,.osw-configurator .osw-cfg-secondary{padding-left:12px;padding-right:12px}
}

@media(max-width:350px){
  .osw-cfg-head p{display:none}
  .osw-configurator .osw-cfg-day small{font-size:12px}
}

/* v3（2026-09-26）第 2 步：你的单 / 还有人同行？/ 热门加购「入场后，加一个」/ 底栏人数。视觉定稿：第一轮 2b（施工卡第六节样式对照）。 */
.osw-configurator{--card-warm:#FFF8F2}
/* 进度：三段细条 + 「① 哪天来」（2b 弹层头） */
.osw-cfg-progress{gap:6px;padding-bottom:0}
.osw-cfg-progress-step{align-items:stretch;gap:4px;padding-bottom:6px;color:var(--cfg-ink-soft);font-size:12.5px}
.osw-cfg-progress-step:not(:last-child):after{content:none}
.osw-cfg-progress-step i{display:block;height:3px;border-radius:2px;background:var(--rose)}
.osw-cfg-progress-step b{font-weight:400;text-align:center}
.osw-cfg-progress-step b span,.osw-cfg-progress-step.is-active b span,.osw-cfg-progress-step.is-done b span{display:inline;width:auto;height:auto;border:0;border-radius:0;background:none;color:inherit;font-weight:inherit}
.osw-cfg-progress-step.is-done{color:var(--cfg-ink-soft)}
.osw-cfg-progress-step.is-done i{background:var(--terra)}
.osw-cfg-progress-step.is-active{color:var(--clay)}
.osw-cfg-progress-step.is-active i{background:var(--clay)}
.osw-cfg-progress-step.is-active b{font-weight:500}
/* 你的单：段头与日期同一基线；每行一张卡（不再套外框） */
.osw-cfg-order-step>.osw-cfg-section-head{align-items:baseline}
.osw-cfg-order-step>.osw-cfg-section-head h3{font:700 17px/1.3 var(--serif);letter-spacing:.04em}
.osw-configurator .osw-cfg-order-step .osw-cfg-date-edit{min-height:30px;padding:2px 0;color:var(--clay);font-size:12.5px;white-space:nowrap}
.osw-cfg-order-step .osw-cfg-selected{display:grid;gap:10px;border:0;border-radius:0;background:none;box-shadow:none;overflow:visible}
.osw-cfg-order-step .osw-cfg-selected-row{border:1px solid var(--line);border-radius:14px;background:var(--card-warm)}
.osw-cfg-order-step .osw-cfg-selected-row+.osw-cfg-selected-row{border-top:1px solid var(--line)}
.osw-cfg-selected-row.osw-cfg-order-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:12px 12px 12px 16px}
.osw-cfg-order-row .osw-cfg-item-copy b{font:700 15px/1.45 var(--serif);letter-spacing:.02em}
.osw-cfg-order-row .osw-cfg-item-copy small{font-size:12px;line-height:1.6;letter-spacing:0}
.osw-cfg-order-row .osw-cfg-stepper{flex:none}
.osw-configurator .osw-cfg-inline-link{display:inline-block;width:auto;min-height:40px;padding:6px 2px;color:var(--clay);font-size:13.5px;font-weight:500;text-align:left;text-decoration:underline;text-underline-offset:3px}
.osw-configurator .osw-cfg-fold{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:48px;margin-top:10px;padding:0 14px;border:1px dashed var(--taupe,var(--line));border-radius:14px;background:transparent;color:var(--clay);font-size:14px;font-weight:500;text-align:left}
.osw-cfg-fold i{font-style:normal;font-size:13px}
/* 「＋ 还有人同行？」：虚线框包住标题行和展开内容（2b） */
.osw-cfg-companions{margin-top:10px;border:1px dashed var(--taupe,var(--line));border-radius:14px}
.osw-configurator .osw-cfg-companions .osw-cfg-fold{margin:0;border:0}
.osw-cfg-companion-body{display:grid;padding:0 14px 6px}
.osw-cfg-companion-body>*{border-top:1px solid var(--line)}
.osw-configurator .osw-cfg-companion-body>.osw-cfg-inline-link{display:flex;align-items:center;min-height:44px;padding:0;text-decoration:none}
.osw-cfg-companion-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0}
.osw-cfg-companion-row .osw-cfg-item-copy b{font-size:14px;font-weight:500}
.osw-cfg-companion-row .osw-cfg-item-copy small{font-size:12px;line-height:1.6}
.osw-cfg-companion-extra{color:var(--clay)!important;font-size:12px!important}
.osw-cfg-companion-row .osw-cfg-stepper{flex:none}
.osw-cfg-companions .osw-cfg-package-menu{margin-top:4px}
/* 两种买法（6-1）与换套餐提示（6-2） */
.osw-cfg-two-ways{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 14px 12px;border-radius:12px;background:var(--peach);color:var(--ink);font-size:13px;line-height:1.6}
.osw-cfg-two-ways p{margin:0}
.osw-configurator .osw-cfg-two-ways-btn{min-height:40px;padding:0 16px;border:1.5px solid var(--clay);border-radius:10px;background:transparent;color:var(--clay);font-size:13.5px;font-weight:500}
.osw-configurator .osw-cfg-swap-hint{display:block;width:100%;min-height:44px;margin-top:10px;padding:10px 14px;border-radius:12px;background:var(--peach);color:var(--clay);font-size:13.5px;font-weight:500;line-height:1.55;text-align:left;white-space:normal}
/* 2d「换成套餐（按摩 · 搓澡 · 氧舱）」：主行下小字链接 + 展开面板 */
.osw-configurator .osw-cfg-swap-pkg-link{display:inline-block;min-height:24px;margin-top:0;padding:2px 0;color:var(--clay);font-size:12.5px;font-weight:500;line-height:1.6;letter-spacing:0;text-align:left;white-space:normal}
.osw-cfg-swap-pkg{display:flex;flex-direction:column;gap:8px}
.osw-cfg-swap-pkg-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.osw-cfg-swap-pkg-head b{color:var(--ink);font:700 16px/1.4 var(--serif);letter-spacing:.04em}
.osw-configurator .osw-cfg-swap-pkg-head .osw-cfg-inline-link{min-height:32px;padding:4px 0;font-size:13px;text-decoration:none}
.osw-cfg-swap-pkg>p{margin:0;color:var(--cfg-ink-soft);font-size:12px;line-height:1.6}
.osw-cfg-swap-pkg>p.osw-cfg-swap-pkg-note{color:var(--clay)}
.osw-cfg-swap-pkg-list{padding:0 14px;border:1px solid var(--line);border-radius:14px;background:var(--card-warm)}
.osw-cfg-swap-pkg-row{display:flex;align-items:center;gap:10px;padding:10px 0}
.osw-cfg-swap-pkg-row+.osw-cfg-swap-pkg-row{border-top:1px solid var(--line)}
.osw-cfg-swap-pkg-row .osw-cfg-item-copy{flex:1}
.osw-cfg-swap-pkg-row .osw-cfg-item-copy b{font:600 14.5px/1.45 var(--serif)}
.osw-cfg-swap-pkg-row .osw-cfg-item-copy strong{display:block;color:var(--clay);font:700 14px/1.5 var(--serif)}
.osw-cfg-swap-pkg-row .osw-cfg-item-copy small{margin-top:0;font-size:12px;line-height:1.6}
.osw-cfg-swap-pkg-row .osw-cfg-item-copy small.osw-cfg-swap-pkg-odd{color:var(--clay)}
.osw-configurator .osw-cfg-swap-pkg-btn{flex:none;min-height:44px;padding:0 14px;border:1.5px solid var(--clay);border-radius:10px;background:transparent;color:var(--clay);font-size:13.5px;font-weight:500;white-space:nowrap}
.osw-cfg-swap-pkg-on{flex:none;display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:10px;background:var(--clay);color:var(--cream);font-size:13.5px;font-weight:500;white-space:nowrap}
.osw-cfg-hot-section{margin-top:14px}
.osw-cfg-hot-section .osw-cfg-section-head{align-items:baseline}
.osw-cfg-hot-section .osw-cfg-section-head h3{margin:0;color:var(--ink);font:700 17px/1.3 var(--serif)}
.osw-cfg-hot-section .osw-cfg-section-head .osw-cfg-hot-sub{color:var(--clay);font-size:12.5px;text-align:right}
.osw-cfg-hot-list{display:grid;gap:10px}
.osw-cfg-hot{min-width:0;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--card-warm);box-shadow:0 2px 8px rgba(110,42,28,.05)}
.osw-cfg-hot-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.osw-cfg-hot-title{color:var(--ink);font:700 16.5px/1.35 var(--serif)}
.osw-cfg-hot-badge{flex:none;padding:3px 11px;border-radius:6px;background:var(--terra);color:var(--cream);font-size:12px;font-weight:500;line-height:1.5}
.osw-cfg-hot-line{margin:3px 0 0;color:var(--cfg-ink-soft);font-size:12.5px;line-height:1.5}
.osw-cfg-hot-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px} /* 中文 4 个胶囊一行放得下；英文放不下时换行，不撑宽卡片 */
.osw-configurator .osw-cfg-hot-pill{flex:none;min-height:40px;padding:0 13px;border:1px solid var(--line);border-radius:10px;background:var(--card-warm);color:var(--ink);font-size:13.5px;font-weight:400;white-space:nowrap}
.osw-configurator .osw-cfg-hot-pill.is-on{border-color:var(--terra);background:var(--peach);color:var(--clay);font-weight:500}
.osw-cfg-hot-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;margin-top:12px}
.osw-cfg-hot-price{min-width:0}
.osw-cfg-hot-was{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.osw-cfg-hot>.osw-cfg-hot-was{margin-top:12px}
.osw-cfg-hot-was+.osw-cfg-hot-foot{margin-top:4px}
.osw-cfg-hot-was del{color:var(--cfg-ink-soft);font-size:13px}
.osw-cfg-hot-save{padding:2px 8px;border-radius:6px;background:var(--peach);color:var(--clay);font-size:12.5px;white-space:nowrap}
.osw-cfg-hot-now{margin-top:2px;color:var(--clay);font:700 24px/1.15 var(--serif);font-variant-numeric:tabular-nums}
.osw-cfg-hot-now small,.osw-cfg-order-total b small{margin-right:1px;font-size:13.9px}
.osw-cfg-hot-act{display:flex;flex:none;flex-direction:column;align-items:flex-end;gap:4px}
.osw-configurator .osw-cfg-hot-add{min-height:44px;padding:0 20px;border:1.5px solid var(--clay);border-radius:10px;background:transparent;color:var(--clay);font-size:14px;font-weight:500;white-space:nowrap}
.osw-configurator .osw-cfg-hot-add:hover{background:var(--peach)}
.osw-configurator .osw-cfg-hot-all{min-height:32px;padding:2px 4px;color:var(--clay);font-size:13px;font-weight:500;text-decoration:underline;text-underline-offset:3px}
.osw-cfg-hot-picked{margin:10px 0 0;padding-top:8px;border-top:1px dashed var(--line);color:var(--clay);font-size:12.5px}
.osw-cfg-hot-section .osw-cfg-treatment-menu{margin-top:8px}
.osw-cfg-order-total b{color:var(--clay);font:700 25px/1.1 var(--serif)}
.osw-cfg-branch.osw-cfg-branch-v3{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}
.osw-cfg-branch-v3 .osw-cfg-secondary{border-width:1.5px}
.osw-cfg-branch-v3 .osw-cfg-primary{box-shadow:0 3px 10px rgba(110,42,28,.28)}
@media(max-width:560px){
  .osw-cfg-head{padding-top:12px;padding-bottom:0}
  .osw-cfg-head p{display:none}
  .osw-cfg-k{font-size:12px;letter-spacing:.3em}
  .osw-cfg-head h2{margin:0;font-size:21px;line-height:1.35;letter-spacing:.05em}
  .osw-cfg-progress{padding-top:8px;padding-bottom:0}
  .osw-cfg-view{padding-top:12px}
}
/* 0.9.63 A 段返工：氧舱热门卡卡内选开始时间、卡上默认为空的文案位、「再加一份配套 ›」 */
.osw-cfg-hot-note{margin:3px 0 0;color:var(--clay);font-size:12px;line-height:1.5}
.osw-cfg-hot-oxy{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.osw-cfg-hot-oxy-title{margin:0 0 8px;color:var(--ink);font:700 14px/1.4 var(--serif)}
.osw-cfg-hot-oxy .osw-cfg-oxy-hint{margin:8px 0 0}
.osw-cfg-add-pkg{margin-top:10px}
.osw-cfg-add-pkg .osw-cfg-fold{margin-top:0}
.osw-cfg-add-pkg-body{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.osw-cfg-add-pkg-body>p{margin:0;color:var(--cfg-ink-soft);font-size:12px;line-height:1.6}
.osw-cfg-hot-oxy .osw-cfg-oxy-times{margin-top:0}
/* 0.9.63「你的单」多行共用组件（对客口径 2b）：折叠摘要 / 展开多行 / 加其他套餐；弹层与兑换页同用 */
.osw-cfg-lines{display:flex;flex-direction:column;gap:8px}
.osw-cfg-lines-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.osw-cfg-lines-head h3{margin:0;color:var(--ink);font:700 17px/1.3 var(--serif);letter-spacing:.04em}
.osw-configurator .osw-cfg-lines-close{min-height:32px;padding:4px 0;font-size:13px;text-decoration:none}
.osw-cfg-lines-date{margin:-4px 0 0;color:var(--cfg-ink-soft);font-size:12.5px;line-height:1.5}
.osw-configurator .osw-cfg-lines-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:52px;padding:10px 14px 10px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card-warm);color:var(--ink);text-align:left}
.osw-cfg-lines-summary span{font:700 14.5px/1.45 var(--serif);letter-spacing:.02em}
.osw-cfg-lines-summary i{flex:none;color:var(--clay);font-style:normal;font-size:13px;font-weight:500}
.osw-cfg-lines-body{display:grid;gap:8px}
.osw-cfg-lines-locked{flex:none;min-width:44px;color:var(--ink);font:700 15px/1 var(--serif);text-align:center}
.osw-cfg-order-row.is-locked{background:var(--osw-bg,#FFFFFF)}
.osw-cfg-lines-have{display:inline-block;margin-top:2px;color:var(--clay)!important;font-weight:500}
.osw-configurator .osw-cfg-lines-add{margin-top:0}
.osw-cfg-lines-pkgs{margin-top:0}
/* 0.9.63 首屏 375×635：摘要 + 两张完整热门卡 + 底栏（施工卡 A 段返工 v2 第 3 条）——收紧间距，不改顺序 */
.osw-cfg-lines-head .osw-cfg-lines-date{margin:0;text-align:right}
p.osw-cfg-lines-date{margin:-4px 0 0}
.osw-configurator .osw-cfg-lines-summary{min-height:44px;padding:8px 12px 8px 14px}
.osw-cfg-order-step .osw-cfg-companions{margin-top:8px}
.osw-configurator .osw-cfg-order-step .osw-cfg-companions>.osw-cfg-fold{min-height:38px}
.osw-cfg-hot-section{margin-top:6px}
.osw-cfg-hot-section .osw-cfg-section-head{margin-bottom:8px}
.osw-cfg-hot-list{gap:8px}
.osw-cfg-hot{padding:10px 14px} /* 复审 #88：第二张卡下沿 ≤ 底栏顶 − 8px */
.osw-cfg-hot-pills{margin-top:8px}
.osw-configurator .osw-cfg-hot-pill{min-height:36px}
.osw-cfg-hot-foot{margin-top:8px}
@media(max-width:560px){
  .osw-cfg-view{padding-top:10px}
  .osw-cfg-footer{padding-top:8px;padding-bottom:10px}
}
.osw-cfg-lines-date-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px}
.osw-cfg-lines-date-row .osw-cfg-lines-date{margin:0;color:var(--cfg-ink-soft);font-size:12.5px}
.osw-configurator .osw-cfg-companions-link{flex:none;min-height:28px;padding:2px 0;font-size:13px;text-decoration:none}
.osw-cfg-order-step .osw-cfg-companions.is-open{padding:0 14px}
/* v3 电子券兑换页（template-tickets.php，施工卡 B 段）：同一份弹层样式，整页用；码状态色：可用 / 已约好＝绿，付款中＝琥珀，其余＝暗红 */
.osw-configurator.is-redeem{--redeem-ok:#2F6B45;--redeem-ok-bg:#EEF6EF;--redeem-wait:#8A5A00;--redeem-wait-bg:#FFF4DC;--redeem-bad:#8E2A1F;--redeem-bad-bg:#FBEDEA}
.osw-cfg-progress.is-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.osw-configurator.is-redeem .osw-cfg-head p{display:none}
.osw-cfg-codes-step h3,.osw-cfg-redeem-head h3,.osw-cfg-date-step.is-redeem h3{margin:0;color:var(--ink);font:700 22px/1.3 var(--serif)}
.osw-cfg-redeem-sub{margin:6px 0 0;color:var(--cfg-ink-soft);font-size:13.5px;line-height:1.6}
.osw-cfg-redeem-head{margin-bottom:10px}
.osw-cfg-codes{margin-top:16px}
.osw-cfg-codes h4{margin:0 0 8px;color:var(--ink);font:700 15px/1.4 var(--serif)}
.osw-cfg-code{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-top:8px;padding:11px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card-warm)}
.osw-cfg-code-main{min-width:0}
.osw-cfg-code code{display:block;color:var(--ink);font:600 15px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.osw-cfg-code-state{margin:3px 0 0;font-size:13px;line-height:1.55}
.osw-cfg-code.is-ok .osw-cfg-code-state{color:var(--redeem-ok)}
.osw-cfg-code.is-wait{border-color:#EBD29B;background:var(--redeem-wait-bg)}
.osw-cfg-code.is-wait .osw-cfg-code-state{color:var(--redeem-wait)}
.osw-cfg-code.is-bad{border-color:#E9C6BF;background:var(--redeem-bad-bg)}
.osw-cfg-code.is-bad .osw-cfg-code-state{color:var(--redeem-bad)}
.osw-cfg-code.is-skipped{background:var(--osw-bg,#FFFFFF);border-style:dashed}
.osw-cfg-code.is-skipped p{margin:0;color:var(--cfg-ink-soft);font-size:13px;line-height:1.55}
.osw-configurator .osw-cfg-code-skip{flex:none;min-height:32px;padding:2px 0;color:var(--clay);font-size:13px;white-space:nowrap}
.osw-configurator .osw-cfg-code-add{margin-top:10px}
.osw-cfg-code-form{margin-top:12px}
.osw-cfg-code-form label{display:block;margin-bottom:6px;color:var(--ink);font-size:13px;font-weight:600}
.osw-cfg-code-inputs{display:flex;gap:8px}
.osw-configurator .osw-cfg-code-inputs input{flex:1 1 auto;min-width:0;min-height:44px;padding:0 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font:600 16px ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase}
.osw-configurator .osw-cfg-code-inputs button{flex:none;min-height:44px}
.osw-cfg-code-error{margin:8px 0 0;color:var(--redeem-bad);font-size:13px;line-height:1.55}
.osw-cfg-code-rules{margin:16px 0 0;padding-left:18px;color:var(--cfg-ink-soft);font-size:12.5px;line-height:1.6}
.osw-cfg-redeem-cap{margin:10px 0 0;padding:9px 12px;border:1px solid #EBD29B;border-radius:12px;background:var(--redeem-wait-bg);color:var(--redeem-wait);font-size:13px;line-height:1.55}
.osw-cfg-date-step.is-redeem .osw-cfg-day{min-height:44px}
.osw-cfg-order-step.is-redeem .osw-cfg-hot-section{margin-top:4px}
.osw-cfg-order-step.is-redeem .osw-cfg-lines{margin-top:14px}
.osw-cfg-friend{margin-top:10px}
.osw-cfg-friend.is-open .osw-cfg-companion-body{padding:0 2px}
.osw-cfg-order-total.is-redeem span{font-size:12.5px;line-height:1.45}
.osw-cfg-redeem-need{margin:0 0 6px;color:var(--redeem-bad);font-size:12.5px}
.osw-cfg-branch.osw-cfg-branch-v3.is-single{grid-template-columns:minmax(0,1fr)}
/* 对客口径 2c（叶伟 09-27）：日历一眼分清平日 / 周六日 / 公共假期——平日白底，周六日桃色底，公假玫红底加深色边；图例写当日价 */
.osw-configurator .osw-cfg-day.is-holiday{border-color:var(--clay);background:#F6D5CC;color:var(--deep)}
.osw-configurator .osw-cfg-day.is-holiday small{color:var(--clay);font-weight:600}
.osw-configurator button.osw-cfg-day.is-holiday:focus{background:#F6D5CC!important}
.osw-configurator .osw-cfg-day.is-selected.is-weekend,.osw-configurator .osw-cfg-day.is-selected.is-holiday{border-color:var(--deep);background:var(--deep);color:var(--cream)}
.osw-configurator .osw-cfg-day.is-selected.is-weekend small,.osw-configurator .osw-cfg-day.is-selected.is-holiday small{color:var(--cream)}
.osw-cfg-cal-legend{margin:12px 0 0}
.osw-cfg-cal-legend-title{margin:0 0 6px;color:var(--ink);font-size:13px;font-weight:600;text-align:center}
.osw-cfg-cal-keys{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px}
.osw-cfg-cal-key{display:inline-flex;align-items:center;gap:6px;color:var(--cfg-ink-soft);font-size:12.5px;white-space:nowrap}
.osw-cfg-cal-key b{color:var(--clay);font-weight:700}
.osw-cfg-cal-key i{display:inline-block;width:14px;height:14px;border:1px solid var(--line);border-radius:4px;background:#fff}
.osw-cfg-cal-key.is-weekend i{border-color:var(--terra);background:var(--peach)}
.osw-cfg-cal-key.is-holiday i{border-color:var(--clay);background:#F6D5CC}
.osw-cfg-cal-legend+.osw-cfg-cal-hint{margin-top:6px}
/* 兑换页日历不标价（对客口径 2c）：券哪天都是 RM0，平日 / 周六日 / 公假不上色 */
.osw-cfg-date-step.is-redeem .osw-cfg-day.is-weekend,.osw-cfg-date-step.is-redeem .osw-cfg-day.is-holiday{border-color:var(--line);background:var(--card-warm);color:var(--ink)}
.osw-cfg-date-step.is-redeem .osw-cfg-day.is-selected{border-color:var(--deep);background:var(--deep);color:var(--cream)}
.osw-cfg-date-step.is-redeem .osw-cfg-day:disabled{background:var(--osw-bg,#FFFFFF);border-color:var(--line);color:var(--cfg-ink-soft)}
/* 0.9.65 兑换页热修（叶伟 09-27 09:3x 宽屏截图、规划会话三宽度实测）：
   ①「查一下」按钮不再继承弹层按钮的 width:100%（把输入框挤成 26px、375 宽还超出屏幕），输入框占满剩余宽度；
   ② ≥ 561px 宽时兑换页收成 480px 窄栏居中，外围用页面底色，底栏同宽；③ 兑换页月历周六日格与平日同底色（券不标价） */
.osw-configurator .osw-cfg-code-inputs{display:flex;align-items:stretch;gap:8px;width:100%;min-width:0}
.osw-configurator .osw-cfg-code-inputs input{flex:1 1 0;width:auto;min-width:0}
.osw-configurator .osw-cfg-code-inputs .osw-cfg-code-check{flex:0 0 auto;width:auto;min-width:96px;max-width:120px;padding:0 18px;white-space:nowrap}
.osw-configurator .osw-cfg-primary.is-muted{border-color:var(--line);background:var(--taupe);color:var(--cream);box-shadow:none}
.osw-cfg-date-step.is-redeem .osw-cfg-day.is-weekend,.osw-cfg-date-step.is-redeem .osw-cfg-day.is-holiday{background:var(--paper)}
@media(min-width:561px){
  .osw-configurator.is-redeem .osw-cfg-back{background:var(--osw-bg,#FFFFFF);backdrop-filter:none}
  .osw-configurator.is-redeem .osw-cfg-sheet{width:min(480px,100%);height:100dvh;margin:0 auto;border-top:0;border-bottom:0;border-radius:0;box-shadow:0 0 0 1px var(--line)}
}

/* 0.9.78 V4.2（全站扫描回执 B）：弹层第 2 步按钮没写 :hover/:focus，被 Hello reset.css 的 [type=button],button:hover/:focus{background:#c36;color:#fff} 盖成粉底白字
   （第 1 步按钮早已按 .osw-configurator button.xxx:focus 写过）。这里按同一写法补齐，优先级 0,3,1 起，不依赖加载顺序。 */
.osw-configurator button.osw-cfg-inline-link:hover,.osw-configurator button.osw-cfg-inline-link:focus{background:transparent;color:var(--deep)}
.osw-configurator button.osw-cfg-lines-summary:hover,.osw-configurator button.osw-cfg-lines-summary:focus{background:var(--card-warm);color:var(--ink);border-color:var(--clay)}
.osw-configurator button.osw-cfg-hot-pill:hover,.osw-configurator button.osw-cfg-hot-pill:focus{background:var(--card-warm);color:var(--ink);border-color:var(--clay)}
.osw-configurator button.osw-cfg-hot-pill.is-on:hover,.osw-configurator button.osw-cfg-hot-pill.is-on:focus{background:var(--peach);color:var(--clay);border-color:var(--terra)}
.osw-configurator button.osw-cfg-hot-add:hover,.osw-configurator button.osw-cfg-hot-add:focus{background:var(--peach);color:var(--clay);border-color:var(--clay)}
.osw-configurator button.osw-cfg-fold:hover,.osw-configurator button.osw-cfg-fold:focus{background:var(--peach);color:var(--clay)}
/* #241 手机实测（10-04，375×812）：「几点开始做？」两档改成整行可点的大选项（原浏览器原生 13px 小圆点、整行 30px）；
   计价规则长文默认收起（按钮用 .osw-cfg-fold 同款）；第 2 步几处点按区提到 44px（「+ 还有人同行？」原 28px，热门卡胶囊原 36px）。 */
.osw-cfg-arrival{margin:14px 0 0;padding:0;border:0;min-width:0}
.osw-cfg-arrival legend{margin:0 0 8px;padding:0;color:var(--ink);font-size:14px;font-weight:500}
.osw-configurator .osw-cfg-arrival-opt{display:flex;align-items:center;gap:10px;min-height:48px;margin:0 0 8px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.4;cursor:pointer}
.osw-configurator .osw-cfg-arrival-opt.is-active{border-color:var(--terra);background:var(--peach);color:var(--clay);font-weight:500}
.osw-configurator .osw-cfg-arrival-opt input{flex:none;width:20px;height:20px;margin:0;accent-color:var(--clay)}
.osw-configurator .osw-cfg-arrival .osw-cfg-arrival-fold{margin:0 0 8px;font-size:13px}
.osw-cfg-arrival .osw-cfg-group-hint{margin-top:0}
.osw-configurator .osw-cfg-hot-pill{min-height:44px}
.osw-configurator .osw-cfg-companions-link{min-height:44px}
.osw-configurator .osw-cfg-order-step .osw-cfg-companions>.osw-cfg-fold{min-height:44px}
/* 0.9.110 第 2 步「按类别选」（叶伟 10-11「弹层可以」，样稿「参考新版」）：日期条 + 吸顶类别条（红点＝已选几项）+ 类别标题和一句说明 +
   按摩类上方开始时间两档 + 一行一项（「＋」，加了变 − n ＋，选中的行底色变暖）；底栏「已选 N 项」点开看清单、改份数。 */
.osw-cfg-pick-date{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:calc(-1 * var(--cfg-gutter)) calc(-1 * var(--cfg-gutter)) 0;padding:10px var(--cfg-gutter);border-bottom:1px solid var(--line);background:var(--card-warm)}
.osw-cfg-pick-date b{color:var(--ink);font-size:14.5px;font-weight:600}
.osw-configurator .osw-cfg-pick-date .osw-cfg-inline-link{flex:none;min-height:36px;color:var(--clay);font-size:13.5px;font-weight:600;white-space:nowrap}
.osw-cfg-pick>.osw-cfg-ticket-gate,.osw-cfg-pick>.osw-cfg-ticket-ok,.osw-cfg-pick>.osw-cfg-swap-hint,.osw-cfg-pick>.osw-cfg-two-ways{margin:12px 0 0}
.osw-cfg-pick-cats{position:sticky;top:0;z-index:3;display:flex;gap:6px;margin:0 calc(-1 * var(--cfg-gutter));padding:10px var(--cfg-gutter);overflow-x:auto;border-bottom:1px solid var(--line);background:var(--osw-bg,#FFFFFF);scrollbar-width:none}
.osw-cfg-pick-cats::-webkit-scrollbar{display:none}
.osw-configurator .osw-cfg-pick-cat{flex:none;display:inline-flex;align-items:center;gap:5px;min-height:40px;padding:0 14px;border:1px solid var(--line);border-radius:20px;background:var(--card-warm);color:var(--clay);font-size:14px;font-weight:600;white-space:nowrap}
.osw-configurator .osw-cfg-pick-cat.is-on{border-color:var(--deep);background:var(--deep);color:var(--cream)}
.osw-cfg-pick-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#C8452F;color:#FFFFFF;font-size:12px;font-weight:600;line-height:1}
.osw-cfg-pick-head{margin:14px 0 0}
.osw-cfg-pick-head h3{margin:0;color:var(--ink);font:700 17px/1.3 var(--serif)}
.osw-cfg-pick-head p{margin:3px 0 0;color:var(--cfg-ink-soft);font-size:12.5px;line-height:1.5}
.osw-cfg-pick-band{min-width:0;margin:10px 0 0;padding:0;border:0}
.osw-cfg-pick-band legend{margin:0 0 6px;padding:0;color:var(--ink);font-size:13px;font-weight:500}
.osw-cfg-pick-band-opts{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;border-radius:10px;background:var(--paper)}
.osw-configurator .osw-cfg-pick-band-opt{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;padding:6px 8px;border-radius:8px;color:var(--clay);font-size:13px;font-weight:600;line-height:1.3;text-align:center;cursor:pointer}
.osw-configurator .osw-cfg-pick-band-opt.is-active{background:#FFFFFF;color:var(--deep);box-shadow:0 1px 3px rgba(110,42,28,.15)}
.osw-configurator .osw-cfg-pick-band-opt input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.osw-configurator .osw-cfg-pick-band-opt:focus-within{outline:2px solid var(--terra);outline-offset:1px}
.osw-configurator .osw-cfg-pick-band .osw-cfg-arrival-fold{margin:6px 0 0;font-size:12.5px}
.osw-cfg-pick-band .osw-cfg-group-hint{margin:6px 0 0}
.osw-cfg-pick-rows{display:flex;flex-direction:column;margin:12px 0 0;border:1px solid var(--line);border-radius:14px;background:var(--card-warm);overflow:hidden}
.osw-cfg-pick-row{border-top:1px solid var(--line)}
.osw-cfg-pick-row:first-child{border-top:0}
.osw-cfg-pick-row.is-on{background:var(--peach)}
.osw-cfg-pick-row.is-disabled{opacity:.6}
.osw-cfg-pick-main{display:flex;align-items:center;gap:10px;padding:10px 12px}
.osw-cfg-pick-copy{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0}
.osw-cfg-pick-copy b{color:var(--ink);font-size:14.5px;font-weight:700;line-height:1.4}
.osw-cfg-pick-copy small{color:var(--cfg-ink-soft);font-size:12.5px;line-height:1.45}
.osw-cfg-pick-price{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:2px;font-variant-numeric:tabular-nums}
.osw-cfg-pick-price del{color:var(--cfg-ink-soft);font-size:12px}
.osw-cfg-pick-now{color:var(--deep);font:600 15.5px/1.3 var(--serif)}
.osw-cfg-pick-act{flex:none}
.osw-configurator .osw-cfg-pick-add{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--deep);color:var(--cream);font-size:24px;line-height:1}
.osw-cfg-pick-row .osw-cfg-stepper{grid-column:auto;grid-row:auto;justify-self:auto}
.osw-cfg-pick-oxy{padding:0 12px 12px}
.osw-cfg-pick-oxy .osw-cfg-hot-oxy-title{margin:0 0 8px;color:var(--ink);font-size:13.5px;font-weight:600}
.osw-cfg-pick-oxy .osw-cfg-oxy-hint{margin:8px 0 0}
.osw-configurator .osw-cfg-pick-group{display:flex;align-items:center;min-height:48px;padding:0 12px;color:var(--clay);font-size:13.5px;font-weight:600}
.osw-configurator .osw-cfg-pick-toggle{display:flex;align-items:center;gap:4px;min-height:32px;margin:0 0 2px;padding:0;color:var(--clay);font-size:13px;font-weight:600;text-align:left}
.osw-configurator .osw-cfg-pick-toggle i{font-style:normal}
.osw-cfg-pick-list{max-height:40dvh;margin:0 0 8px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:var(--card-warm)}
.osw-cfg-pick-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 12px;border-top:1px solid var(--line);color:var(--ink);font-size:13.5px}
.osw-cfg-pick-line:first-child{border-top:0}
.osw-cfg-pick-line .osw-cfg-stepper{grid-column:auto;grid-row:auto;justify-self:auto}
.osw-cfg-pick-list .osw-cfg-empty{margin:0;padding:10px 12px}
.osw-configurator button.osw-cfg-pick-cat:hover,.osw-configurator button.osw-cfg-pick-cat:focus{background:var(--peach);color:var(--clay);border-color:var(--clay)}
.osw-configurator button.osw-cfg-pick-cat.is-on:hover,.osw-configurator button.osw-cfg-pick-cat.is-on:focus{background:var(--deep);color:var(--cream);border-color:var(--deep)}
.osw-configurator button.osw-cfg-pick-add:hover,.osw-configurator button.osw-cfg-pick-add:focus{background:var(--ink);color:var(--cream)}
.osw-configurator button.osw-cfg-pick-toggle:hover,.osw-configurator button.osw-cfg-pick-toggle:focus{background:transparent;color:var(--deep)}

/* #461：合计下方明确含服务费和 SST，加载提示贴近日历。 */
.osw-cfg-all-in{display:flex;justify-content:space-between;gap:12px;font-size:13px;line-height:1.5;margin:4px 0 8px}
.osw-cfg-calendar-loading,.osw-cfg-non-halal{font-size:13px;line-height:1.6;color:var(--cfg-ink-soft)}
