:root{--c-primary: #0e5a8c;--c-primary-dark: #094869;--c-accent: #f4b400;--c-danger: #d93025;--c-success: #1e8e3e;--c-bg: #f8fafb;--c-card: #ffffff;--c-text: #111827;--c-text-dim: #6b7280;--c-border: #d6dee5;--c-primary-tint: #e8f1f8;--fs-h1: 36px;--fs-h2: 28px;--fs-body: 24px;--fs-btn: 28px;--fs-small: 18px}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,sans-serif;color:var(--c-text);background:#1f2937;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}#root{min-height:100%;display:flex;justify-content:center}.kiosk-frame{width:min(100vw,1080px);min-height:100vh;background:var(--c-bg);display:flex;flex-direction:column;position:relative;overflow:hidden}.kiosk-frame[data-fontscale="A+"]{--fs-h1: 44px;--fs-h2: 34px;--fs-body: 30px;--fs-btn: 36px;--fs-small: 22px}.kiosk-frame[data-fontscale="A++"]{--fs-h1: 52px;--fs-h2: 40px;--fs-body: 36px;--fs-btn: 44px;--fs-small: 26px}.k-statusbar{display:flex;justify-content:space-between;align-items:center;padding:20px 32px;flex-shrink:0}.k-statusbar__group{display:flex;gap:6px;align-items:center}.k-pill{border:none;background:transparent;color:var(--c-text-dim);font-size:var(--fs-small);font-weight:600;padding:10px 14px;border-radius:999px;min-height:56px}.k-pill--active{background:var(--c-primary);color:#fff}.k-screen{flex:1;display:flex;flex-direction:column;padding:16px 48px 48px;overflow-y:auto}.k-screen--center{justify-content:center;align-items:center;text-align:center}.k-h1{font-size:var(--fs-h1);font-weight:800;color:var(--c-primary);margin-bottom:20px;line-height:1.25}.k-h2{font-size:var(--fs-h2);font-weight:700;color:var(--c-text);margin-bottom:16px}.k-text{font-size:var(--fs-body);line-height:1.5}.k-text--dim{color:var(--c-text-dim)}.k-spacer{flex:1}.k-btn{font-size:var(--fs-btn);font-weight:700;border-radius:14px;border:2px solid transparent;padding:22px 32px;min-height:88px;transition:transform .05s ease,opacity .15s ease}.k-btn:active:not(:disabled){transform:scale(.97)}.k-btn:disabled{opacity:.4}.k-btn--primary{background:var(--c-primary);color:#fff}.k-btn--secondary{background:#fff;color:var(--c-primary);border-color:var(--c-primary)}.k-btn--warning{background:var(--c-danger);color:#fff}.k-btn--block{width:100%}.k-btn--lg{font-size:calc(var(--fs-btn) + 6px);padding:30px 40px}.k-option{display:block;width:100%;text-align:left;background:var(--c-card);border:2px solid var(--c-border);border-radius:18px;padding:28px 32px;margin-bottom:20px}.k-option:active:not(:disabled){transform:scale(.99)}.k-option--selected{border-color:var(--c-primary);background:var(--c-primary-tint)}.k-option:disabled{opacity:.45}.k-option__title{font-size:var(--fs-h2);font-weight:700;color:var(--c-text)}.k-option__desc{font-size:var(--fs-body);color:var(--c-text-dim);margin-top:6px}.k-card{background:var(--c-card);border:1px solid var(--c-border);border-radius:18px;padding:28px 32px;margin-bottom:20px}.k-stepper{display:flex;align-items:center;gap:20px}.k-stepper__btn{width:80px;height:80px;border-radius:16px;border:2px solid var(--c-primary);background:#fff;color:var(--c-primary);font-size:40px;font-weight:700;line-height:1}.k-stepper__btn:disabled{opacity:.35}.k-stepper__value{font-size:var(--fs-h2);font-weight:700;min-width:56px;text-align:center}.k-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.k-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.k-chip{font-size:var(--fs-body);font-weight:600;padding:16px 26px;border-radius:999px;border:2px solid var(--c-border);background:#fff;color:var(--c-text);min-height:72px}.k-chip--active{border-color:var(--c-primary);background:var(--c-primary);color:#fff}.k-error{color:var(--c-danger);font-size:var(--fs-body);font-weight:600;margin:12px 0}.k-input{width:100%;font-size:var(--fs-body);padding:20px 22px;border:2px solid var(--c-border);border-radius:14px;background:#fff}.k-input:focus{outline:none;border-color:var(--c-primary)}.k-footbar{display:flex;gap:20px;padding-top:12px}.k-amount{font-size:var(--fs-h1);font-weight:800;color:var(--c-accent)}@keyframes k-spin{to{transform:rotate(360deg)}}.k-spinner{width:96px;height:96px;border:10px solid var(--c-primary-tint);border-top-color:var(--c-primary);border-radius:50%;animation:k-spin 1s linear infinite}
