/* [POS]: 预约与完成页复用现有浮层、字体及颜色 token；原生 dialog 保持键盘隔离。 */
.ab-reservation{box-sizing:border-box;width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 32px);margin:auto;padding:24px;border:1px solid var(--ws-line-strong);border-radius:var(--radius-lg);background:var(--ws-layer-3);backdrop-filter:var(--ws-frost-filter);color:var(--ws-ink);font:400 var(--fs-b2)/1.6 var(--sans);box-shadow:var(--e2);overflow:auto;overscroll-behavior:contain}
.ab-reservation::backdrop{background:rgba(var(--ws-ink-rgb),.28);backdrop-filter:blur(6px)}
.ab-reservation *{box-sizing:border-box}
.ab-reservation button,.ab-reservation input{font:inherit}
.ab-reservation button{cursor:pointer}
.ab-reservation button:focus-visible,.ab-reservation input:focus-visible{outline:2px solid var(--ws-accent);outline-offset:2px}
.ab-reservation [hidden]{display:none!important}
.reservation-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.reservation-brand{display:flex;align-items:center;gap:9px;font:600 var(--fs-b2)/1 var(--mono);letter-spacing:.06em}
.reservation-brand svg{width:18px;height:22px;overflow:visible}
.reservation-brand circle{fill:var(--ws-brand)}
.reservation-brand path{fill:none;stroke:currentColor;stroke-width:48;stroke-linecap:round}
.reservation-close{display:grid;place-items:center;width:44px;height:44px;margin:-10px -10px -10px 0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ws-ink-3);font-size:var(--fs-t2)!important}
.reservation-close:hover{color:var(--ws-ink);background:var(--ws-panel-subtle)}
.reservation-intro{margin-bottom:20px}
.reservation-intro h2{margin:0 0 8px;font:600 var(--fs-t2)/1.35 var(--sans);letter-spacing:-.02em;outline:none}
.reservation-intro p{margin:0;color:var(--ws-ink-2);font-size:var(--fs-b2);line-height:1.7}
.reservation-form{display:flex;flex-direction:column;gap:8px}
.reservation-form label{font-weight:500;font-size:var(--fs-b2)}
.reservation-form input{min-width:0;width:100%;height:44px;padding:0 12px;border:1px solid var(--ws-line-strong);border-radius:var(--radius-md);background:var(--ws-panel);color:var(--ws-ink);font-size:var(--fs-b1)}
.reservation-form input::placeholder{color:var(--ws-ink-3)}
.reservation-form input[aria-invalid=true]{border-color:var(--ws-danger)}
.reservation-primary{display:block;width:100%;min-height:44px;margin-top:8px;padding:10px 16px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--ws-accent);color:var(--ws-accent-on);font-weight:500!important;transition:background var(--motion-fast) var(--ease-ui)}
.reservation-primary:hover{background:var(--ws-accent-ink)}
.ab-reservation button:disabled{cursor:wait;background:var(--ws-idle-bg);color:var(--ws-idle)}
.reservation-error{margin:0;color:var(--ws-danger);font-size:var(--fs-b2);line-height:1.5}
.reservation-secondary{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;margin-top:12px;color:var(--ws-ink-3);font-size:var(--fs-b2)}
.reservation-link{min-height:44px;padding:8px 4px;border:0;background:transparent;color:var(--ws-accent-ink);font-size:var(--fs-b2)!important;font-weight:500!important}
.reservation-link:hover{text-decoration:underline;text-underline-offset:4px}
.reservation-back{display:block;margin:8px auto -8px}
.reservation-note{margin:12px 0 0;color:var(--ws-ink-3);font-size:var(--fs-l);line-height:1.6}
.reservation-contact{margin:-8px 0 20px;color:var(--ws-ink-3);font:400 var(--fs-b2)/1.6 var(--mono);overflow-wrap:anywhere}
@media(max-width:540px){.ab-reservation{padding:22px}}
@media(prefers-reduced-motion:no-preference){.ab-reservation[open]{animation:reservation-enter .16s ease-out}@keyframes reservation-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}}
