:root{--primary: #0F7185;--primary-hover: #085D6E;--primary-light: #ECFEFF;--primary-border: #CFFAFE;--accent: #06B6D4;--accent-light: #E0F2FE;--text-main: #1E293B;--text-muted: #64748B;--text-light: #94A3B8;--bg-page: #F4FAFB;--bg-card: rgba(255, 255, 255, .95);--border-card: rgba(207, 250, 254, .6);--status-confirmed-bg: #ECFEFF;--status-confirmed-color: #0F7185;--status-completed-bg: #F0FDF4;--status-completed-color: #16A34A;--status-cancelled-bg: #F8FAFC;--status-cancelled-color: #94A3B8;--shadow-sm: 0 2px 8px rgba(15, 113, 133, .04);--shadow-md: 0 4px 16px rgba(15, 113, 133, .08);--shadow-lg: 0 8px 24px rgba(15, 113, 133, .12);--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--safe-area-bottom: env(safe-area-inset-bottom, 16px)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:Noto Sans SC,Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#e2e8f0;color:var(--text-main);min-height:100vh;display:flex;justify-content:center;align-items:flex-start}#root{width:100%;max-width:420px;min-height:100vh;background-color:var(--bg-page);position:relative;display:flex;flex-direction:column;box-shadow:0 0 30px #00000014}::-webkit-scrollbar{display:none}*{scrollbar-width:none}.app-header{position:sticky;top:0;z-index:40;background:#ecfeffe6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid rgba(207,250,254,.8);padding:12px 16px;display:flex;align-items:center;justify-content:space-between}.app-title{font-size:17px;font-weight:700;color:var(--primary);display:flex;align-items:center;gap:8px}.card{background:var(--bg-card);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-card);border-radius:var(--radius-md);padding:16px;margin:12px 16px;box-shadow:var(--shadow-sm);transition:all .2s ease}.date-selector-wrapper{margin:12px 0 4px}.date-selector-scroll{display:flex;overflow-x:auto;gap:10px;padding:4px 16px}.date-item{flex:0 0 calc(20% - 8px);min-width:72px;padding:10px 6px;border-radius:var(--radius-md);border:1.5px solid #E2E8F0;background:#fff;text-align:center;cursor:pointer;transition:all .2s ease}.date-item.active{border-color:var(--primary);background:var(--primary-light);box-shadow:0 4px 12px #0f718526}.date-item .weekday{font-size:12px;color:var(--text-muted);margin-bottom:4px}.date-item.active .weekday{color:var(--primary);font-weight:600}.date-item .date-val{font-size:14px;font-weight:700;color:var(--text-main)}.date-item.active .date-val{color:var(--primary)}.date-item .tag{font-size:10px;margin-top:4px;padding:2px 4px;border-radius:4px;font-weight:500}.date-item .tag.available{color:#0f7185;background:#cffafe}.date-item .tag.full{color:#94a3b8;background:#f1f5f9}.staff-selector-scroll{display:flex;overflow-x:auto;gap:8px;padding:0 16px 12px}.staff-pill{padding:6px 14px;border-radius:20px;border:1px solid #E2E8F0;background:#fff;font-size:13px;color:var(--text-muted);white-space:nowrap;cursor:pointer;transition:all .2s ease}.staff-pill.active{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600;box-shadow:0 2px 8px #0f718540}.slots-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:12px 16px}.btn-primary{background:linear-gradient(135deg,var(--primary) 0%,var(--accent) 100%);color:#fff;border:none;border-radius:24px;padding:12px 24px;font-size:15px;font-weight:600;cursor:pointer;box-shadow:0 4px 12px #0f71854d;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:6px}.btn-primary:active{transform:scale(.97);box-shadow:0 2px 6px #0f718533}.btn-primary:disabled{background:#cbd5e1;box-shadow:none;cursor:not-allowed}.app-tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:420px;background:#fffffff0;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid #E2E8F0;padding:8px 0 calc(8px + var(--safe-area-bottom));display:flex;justify-content:space-around;align-items:center;z-index:45}.tab-item{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--text-muted);text-decoration:none;cursor:pointer;transition:color .2s ease}.tab-item.active{color:var(--primary);font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .2s ease}.modal-content{background:#fff;width:100%;max-width:420px;border-radius:20px 20px 0 0;padding:20px 20px calc(20px + var(--safe-area-bottom));animation:slideUp .3s cubic-bezier(.16,1,.3,1);max-height:85vh;overflow-y:auto}.pending-payment-modal{padding-top:18px}.pending-payment-modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:18px}.pending-payment-modal__title-wrap{display:flex;gap:10px;align-items:flex-start}.pending-payment-modal__icon{width:38px;height:38px;flex:0 0 38px;display:inline-flex;align-items:center;justify-content:center;border-radius:12px;background:#ecfeff;color:var(--primary)}.pending-payment-modal h2{margin:1px 0 3px;color:var(--text-main);font-size:17px;line-height:1.4}.pending-payment-modal__title-wrap p,.pending-payment-modal__expire{margin:0;color:var(--text-muted);font-size:13px;line-height:1.5}.pending-payment-modal__close{min-width:44px;min-height:44px;margin:-8px -8px 0 0;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:transparent;color:var(--text-muted);cursor:pointer}.pending-payment-modal__details{overflow:hidden;border:1px solid var(--primary-border);border-radius:12px;background:#f8fcfd}.pending-payment-modal__details>div{min-height:46px;padding:0 13px;display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid #E2E8F0;font-size:14px}.pending-payment-modal__details>div:last-child{border-bottom:0}.pending-payment-modal__details span{color:var(--text-muted)}.pending-payment-modal__details strong{color:var(--text-main);font-weight:600;text-align:right}.pending-payment-modal__details .pending-payment-modal__amount{color:#059669;font-size:16px}.pending-payment-modal__expire{margin:12px 2px 18px}.pending-payment-modal__actions{display:grid;grid-template-columns:1fr 1.35fr;gap:10px}.pending-payment-modal__actions button{min-height:46px}.pending-payment-modal__cancel{border:1px solid #CBD5E1;border-radius:var(--radius-md);background:#fff;color:#475569;font-size:15px;font-weight:600;cursor:pointer}.pending-payment-modal__continue{width:100%;justify-content:center;gap:7px}.pending-payment-modal__close:focus-visible,.pending-payment-modal__cancel:focus-visible,.pending-payment-modal__continue:focus-visible{outline:3px solid rgba(8,145,178,.28);outline-offset:2px}.pending-payment-modal__close:disabled,.pending-payment-modal__cancel:disabled{cursor:not-allowed;opacity:.55}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.form-group{margin-bottom:16px}.form-label{display:block;font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:6px}.form-input{width:100%;padding:12px 14px;border:1px solid #CBD5E1;border-radius:var(--radius-md);font-size:15px;color:var(--text-main);outline:none;transition:border-color .2s ease}.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-border)}.page-container{padding-bottom:80px;flex:1}.success-card{text-align:center;padding:32px 20px;background:linear-gradient(180deg,#ecfeff,#fff);border-radius:var(--radius-lg);margin:20px 16px;border:1px solid var(--primary-border)}.success-icon{width:64px;height:64px;background:#0f7185;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;box-shadow:0 8px 20px #0f718540}.booking-page{background:#f8fafc;min-height:100vh;padding-bottom:180px}.booking-header{align-items:center;color:#fff;display:flex;height:48px;justify-content:space-between;left:0;padding:8px 16px;position:absolute;right:0;top:0;z-index:3}.booking-header__back,.booking-header__more{align-items:center;background:#ffffffeb;border:0;border-radius:50%;color:#0f172a;display:flex;height:32px;justify-content:center;width:32px}.booking-header__back{cursor:pointer}.booking-header__more{border-radius:999px;width:44px}.booking-header__title{color:#fff;font-size:16px;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.28)}.booking-banner{background:linear-gradient(135deg,#0c5968,#108194 55%,#62b7c5);height:160px;overflow:hidden;position:relative}.booking-banner:after{background:linear-gradient(180deg,#00000008,#0000 45%,#0000001f);content:"";top:0;right:0;bottom:0;left:0;position:absolute}.booking-banner img{height:100%;object-fit:cover;width:100%}.store-header-card{background:#fff;border-radius:0 0 18px 18px;box-shadow:0 7px 18px #0f71850d;margin:0;min-height:108px;padding:16px 94px 16px 18px;position:relative;z-index:2}.store-header-card__name{color:#0f172a;font-size:18px;font-weight:800;letter-spacing:-.3px;line-height:1.35}.store-header-card__body{display:grid;gap:5px;margin-top:9px}.store-meta{align-items:center;color:#334155;display:flex;font-size:12px;gap:7px;min-width:0}.store-meta__label{align-items:center;color:#64748b;display:inline-flex;flex:0 0 45px;gap:3px}.store-meta--address>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store-header-card__actions{display:flex;gap:8px;position:absolute;right:18px;top:52px}.circle-action{align-items:center;background:#f1f7f8;border-radius:50%;color:#0f7185;display:flex;height:34px;justify-content:center;transition:background .2s ease;width:34px}.circle-action:hover{background:#d8f0f2}.booking-rules-card{background:#fff;border:1px solid #cce3e6;border-radius:12px;box-shadow:none;margin:12px 14px 0;padding:13px 14px}.booking-rules-card__toggle{align-items:center;background:none;border:0;color:#0f7185;cursor:pointer;display:flex;font:inherit;font-size:13px;font-weight:700;justify-content:space-between;padding:0;width:100%}.booking-rules-card__toggle span{align-items:center;display:inline-flex;gap:7px}.booking-rules-card__content{color:#475569;font-size:12px;line-height:1.55;margin-top:8px}.booking-rules-card__content.is-collapsed{-webkit-box-orient:vertical;-webkit-line-clamp:2;display:-webkit-box;overflow:hidden}.booking-main{padding:0 14px}.booking-time-section{margin-top:18px}.booking-section-title{color:#0f172a;font-size:16px;font-weight:800;margin:0 0 11px 3px}.booking-section-title:before{background:#0f7185;border-radius:4px;content:"";display:inline-block;height:16px;margin:0 7px -2px 0;width:4px}.date-selector-wrapper{margin:0}.date-selector-scroll{gap:9px;padding:0 0 5px}.date-item{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #e2ecee;border-radius:10px;box-shadow:none;cursor:pointer;display:flex;flex:0 0 64px;flex-direction:column;justify-content:center;min-width:64px;padding:8px 4px}.date-item.active{background:#108194;border-color:#108194;box-shadow:0 6px 15px #10819438}.date-item .weekday{display:block;font-size:11px;line-height:1.15;margin:0 0 5px;white-space:nowrap}.date-item .date-val{display:block;font-size:13px;line-height:1.15;white-space:nowrap}.date-item.active .weekday{color:#fffc}.date-item.active .date-val{color:#fff}.staff-picker{margin-top:18px}.staff-selector-scroll{gap:9px;padding:0 0 3px}.staff-pill{align-items:center;display:inline-flex;font:inherit;gap:7px;padding:7px 13px 7px 7px}.staff-pill__avatar{align-items:center;background:#e0f2f7;border-radius:50%;color:#0f7185;display:inline-flex;font-size:12px;font-weight:700;height:24px;justify-content:center;width:24px}.staff-pill.active .staff-pill__avatar{background:#ffffff3d;color:#fff}.slot-picker{margin-top:18px}.slot-picker__label{color:#64748b;font-size:12px;font-weight:700;letter-spacing:.04em;margin:0 0 9px 3px}.slot-state{color:#64748b;padding:32px 0;text-align:center}.slots-grid{gap:8px;padding:0}.slot-card{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:1.5px solid #e2e8f0;border-radius:12px;cursor:pointer;display:flex;font:inherit;gap:6px;min-height:48px;padding:9px 12px;position:relative;text-align:left;transition:all .2s cubic-bezier(.16,1,.3,1)}.slot-card:active{transform:scale(.98)}.slot-card:hover:not(:disabled){border-color:#7cc7d1}.slot-card.selected{background:#f0fdfa;border-color:#0f7185;box-shadow:0 4px 14px #0f718524}.slot-card.disabled{background:#f8fafc;border-color:#f1f5f9;cursor:not-allowed;opacity:.65}.slot-main-row{align-items:center;display:flex;flex:1;justify-content:space-between;min-width:0}.slot-card .time-range{color:var(--text-main);font-size:13px;font-weight:700;line-height:1.2;white-space:nowrap}.slot-card.selected .time-range{color:#0f7185}.slot-card.disabled .time-range{color:#94a3b8}.slot-remaining{color:#0f7185;font-size:12px;font-weight:600;margin-left:7px;white-space:nowrap}.slot-remaining.is-full{color:#94a3b8}.slot-remaining-count{color:#0f7185;font-size:15px;font-weight:800;margin:0 2px}.slot-card__check{color:#0f7185;flex-shrink:0}.visitor-section{margin-top:27px}.visitor-section__title{color:#64748b;font-size:13px;font-weight:700;letter-spacing:.08em;margin:0 0 10px 4px}.authorization-tip{align-items:center;background:#f0f9fa;border:1px solid #c9e6e9;border-radius:13px;display:flex;gap:12px;justify-content:space-between;margin-bottom:20px;padding:12px 13px}.authorization-tip div{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.authorization-tip strong{color:#164e63;font-size:14px}.authorization-tip span{color:#5b7180;font-size:12px;line-height:1.4}.authorization-tip button{background:#fff;border:1px solid #0f7185;border-radius:8px;color:#0f7185;cursor:pointer;flex:0 0 auto;font-size:12px;font-weight:700;min-height:34px;padding:0 11px}.authorization-tip button:hover{background:#e3f5f7}.authorization-tip button:focus-visible{outline:2px solid #0f7185;outline-offset:2px}.visitor-card{align-items:center;background:#fff;border:1px solid #e2ecee;border-radius:14px;color:#0f172a;cursor:pointer;display:flex;font:inherit;justify-content:space-between;padding:17px 16px;text-align:left;width:100%}.visitor-card:disabled{color:#94a3b8;cursor:not-allowed}.visitor-card__identity,.visitor-card__hint{align-items:center;display:inline-flex;gap:8px}.visitor-card__identity{font-size:14px;font-weight:700}.visitor-card__hint{color:#0f7185;font-size:13px}.booking-page{padding-bottom:180px!important}.bottom-bar{position:fixed;bottom:calc(54px + var(--safe-area-bottom));left:50%;transform:translate(-50%);width:100%;max-width:420px;display:flex;align-items:stretch;flex-direction:column;gap:4px;padding:6px 14px 8px;background:#fffffffa;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-top:1px solid rgba(226,232,240,.8);box-shadow:0 -4px 12px #0000000d;z-index:40}.bottom-bar__agreement{color:#64748b;font-size:11px;text-align:center;margin:0}.bottom-bar__agreement button{background:none;border:0;color:#0f7185;cursor:pointer;font:inherit;font-weight:700;padding:0}.bottom-bar .btn-primary{border-radius:12px;min-height:40px;width:100%;font-size:15px}@media (min-width: 481px){.booking-header,.bottom-bar{left:50%;max-width:420px;right:auto;transform:translate(-50%);width:100%}.booking-header{transform:translate(-50%)}}.ticket-card{position:relative;background:#fff;border:1.5px solid #cce3e6;border-radius:16px;box-shadow:0 4px 16px #0f71850a;padding:0!important;margin:0 16px 14px!important;overflow:hidden}.ticket-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px}.ticket-store-name{color:#164e63;font-size:15px;font-weight:700;display:flex;align-items:center;gap:6px}.ticket-divider{position:relative;height:0;border-top:1.5px dashed #b8dce2;margin:4px 0}.ticket-divider:before{content:"";position:absolute;top:-7px;left:-1.5px;width:8px;height:14px;background:#f8fafc;border:1.5px solid #cce3e6;border-left:none;border-radius:0 7px 7px 0;box-sizing:border-box;z-index:5}.ticket-divider:after{content:"";position:absolute;top:-7px;right:-1.5px;width:8px;height:14px;background:#f8fafc;border:1.5px solid #cce3e6;border-right:none;border-radius:7px 0 0 7px;box-sizing:border-box;z-index:5}.ticket-body{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;background:#fbfdfe}.ticket-left{display:flex;flex-direction:column;gap:4px}.ticket-date{color:#0f7185;font-size:15px;font-weight:700}.ticket-meta{color:#64748b;font-size:12px}.ticket-right{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;background:#ecfeff;border:1px dashed #a5f3fc;padding:8px 14px;border-radius:12px}.ticket-queue-label{color:#0891b2;font-size:11px;font-weight:600}.ticket-queue-value{color:#0f7185;font-size:20px;font-weight:800;line-height:1.1}.ticket-right-clean{display:flex;align-items:center;justify-content:center;padding:4px 6px}.ticket-number-only{color:#0f7185;font-size:24px;font-weight:900;line-height:1;letter-spacing:-.5px}.ticket-actions-group{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 16px}.btn-action-arrived{background:#f0fdf4;border:1px solid #bbf7d0;color:#16a34a;padding:5px 12px;border-radius:16px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px}.btn-action-missed{background:#f8fafc;border:1px solid #e2e8f0;color:#94a3b8;padding:5px 12px;border-radius:16px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px}.btn-action-cancel{background:#fff5f5;border:1px solid #fecaca;color:#ef4444;padding:5px 12px;border-radius:16px;font-size:12px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:4px}.cancel-modal-overlay{align-items:center}.cancel-progress-modal{background:#fff;border-radius:20px;padding:32px 24px 24px;width:88%;max-width:340px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 20px 60px #0000002e;animation:slideUpFade .25s ease}@keyframes slideUpFade{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.cancel-modal-icon{font-size:36px;line-height:1}.cancel-modal-success-icon{font-size:40px;line-height:1;animation:popIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes popIn{0%{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}.cancel-modal-title{font-size:17px;font-weight:700;color:#1e293b;margin:4px 0 0;text-align:center}.cancel-modal-desc{font-size:13px;color:#64748b;text-align:center;line-height:1.6;margin:0;padding:0 4px}.cancel-modal-actions{display:flex;gap:10px;width:100%;margin-top:8px}.cancel-modal-btn{flex:1;padding:11px 0;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;border:none;transition:all .18s ease}.cancel-modal-btn--ghost{background:#f1f5f9;color:#475569}.cancel-modal-btn--ghost:active{background:#e2e8f0}.cancel-modal-btn--danger{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;box-shadow:0 4px 12px #ef44444d}.cancel-modal-btn--danger:active{opacity:.88}.cancel-modal-btn--primary{background:linear-gradient(135deg,var(--primary),#0891b2);color:#fff;box-shadow:0 4px 12px #0ea5e94d;width:100%;margin-top:6px}.cancel-modal-btn--primary:active{opacity:.88}.cancel-modal-spinner{width:44px;height:44px;border:4px solid #e0f2fe;border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin:4px 0}.cancel-modal-spinner--refund{border-color:#d1fae5;border-top-color:#10b981}@keyframes spin{to{transform:rotate(360deg)}}
