:root{font-family:SF Pro Display,PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#071127;background:#fff;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #071127;--muted: #7d8798;--line: #dbe0e8;--soft: #f5f7fa;--lime: #c8fa00;--lime-deep: #a8df00;--blue: #1246f5;--orange: #ff7417;--danger: #d9363e;--radius: 18px;--nav-height: 78px}*{box-sizing:border-box}html{background:#eef1f5}body{margin:0;min-width:320px;min-height:100vh;background:#eef1f5}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid rgba(18,70,245,.22);outline-offset:2px}button:disabled{cursor:wait;opacity:.62}.app-shell,.login-page,.app-loading{width:min(100%,480px);min-height:100vh;margin:0 auto;background:#fff;position:relative;overflow-x:hidden}.app-content{min-height:100vh;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom))}.page-enter{animation:page-in .26s ease-out both}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.brand{display:inline-flex;align-items:center;gap:8px;color:var(--ink)}.brand__word{font-size:40px;line-height:1;font-weight:950;letter-spacing:-4px;transform:skew(-4deg)}.shuttle-mark{width:54px;height:54px;color:var(--lime);flex:0 0 auto}.shuttle-mark--compact{width:38px;height:38px}.booking-page{min-height:calc(100vh - var(--nav-height));padding:max(22px,env(safe-area-inset-top)) 22px 34px;position:relative;background:#fff}.court-lines{position:absolute;width:320px;height:170px;right:-92px;top:76px;border:1.5px solid rgba(18,70,245,.38);transform:skewY(-14deg) rotate(-6deg);pointer-events:none;opacity:.85}.court-lines:before,.court-lines:after,.court-lines span:before,.court-lines span:after{content:"";position:absolute;background:#1246f561}.court-lines:before{left:50%;top:0;width:1px;height:100%}.court-lines:after{top:50%;left:0;height:1px;width:100%}.court-lines span:before{left:20%;top:0;width:1px;height:100%}.court-lines span:after{left:80%;top:0;width:1px;height:100%}.home-header{position:relative;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.account-link{border:1px solid #c9d4fb;background:#fffffff0;color:var(--ink);border-radius:999px;min-height:38px;padding:7px 11px;display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;cursor:pointer}.account-link svg{width:17px;height:17px;color:var(--blue)}.account-link.needs-attention{color:#8a4b00;border-color:#ffc870;background:#fff8e8}.account-link.needs-attention svg{color:#d77a00}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#a8b0bd}.status-dot.is-online{background:var(--blue)}.status-dot.needs-attention{background:#f59e0b}.account-attention-banner{width:100%;margin:10px 0 0;padding:10px 12px;border:1px solid #ffd18a;border-radius:12px;background:#fff8e8;color:#7d4800;display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;font-size:11px;line-height:1.45;cursor:pointer}.account-attention-banner strong{flex:0 0 auto;color:#c66b00}.greeting{position:relative;z-index:2;min-height:176px;padding-top:58px;display:flex;justify-content:space-between;align-items:flex-end}.greeting h1{margin:0;max-width:290px;font-size:clamp(29px,8vw,38px);line-height:1.38;letter-spacing:-1.8px;font-weight:900}.greeting>.shuttle-mark{width:42px;height:42px;margin:0 30px 8px 0;color:var(--lime-deep)}.next-booking{border:3px solid var(--lime);border-left-width:7px;border-radius:14px;display:grid;grid-template-columns:minmax(135px,.9fr) minmax(0,1.25fr);min-height:168px;background:#fff;overflow:hidden}.next-booking__time,.next-booking__details{padding:16px 14px}.next-booking__time{border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start}.next-booking__time>p{margin:0 0 15px;color:#273043;font-size:14px}.next-booking__date{font-size:16px;margin-bottom:8px}.digital-time{font-family:Arial Narrow,Roboto Condensed,sans-serif;font-size:clamp(33px,10vw,48px);line-height:1;letter-spacing:-2.8px;font-weight:900;font-stretch:condensed;white-space:nowrap}.ready-label{margin-top:16px;padding:6px 12px;border-radius:999px;background:var(--lime);font-size:13px;font-weight:900}.ready-label.status-pending_payment,.attempt-status.status-pending_payment{color:var(--orange);background:#fff6ec}.ready-label.status-failed,.ready-label.status-uncertain{color:var(--danger);background:#fff0f1}.next-booking__details{align-self:center}.next-booking__details h2{margin:0 0 18px;font-size:15px;line-height:1.4;white-space:nowrap}.next-booking__details p{margin:14px 0 0;display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600}.next-booking__details .renewal-meta{gap:0;color:var(--blue);font-size:11px;font-weight:800}.next-booking__details svg{width:21px;height:21px;color:var(--blue)}.task-cancel-button{margin-top:16px;padding:7px 9px;border:1px solid #f1c9cd;border-radius:8px;display:inline-flex;align-items:center;gap:6px;color:var(--danger);background:#fff7f8;cursor:pointer;font-size:11px;font-weight:800}.task-cancel-button svg{width:15px;height:15px;color:currentColor}.next-booking--empty{padding:24px;grid-template-columns:1fr auto;align-items:center}.next-booking--empty p,.next-booking--empty h2{margin:0 0 9px}.next-booking--empty span{color:var(--muted);font-size:14px}.recent-section{margin-top:24px}.section-heading{display:flex;align-items:center;gap:10px;margin:0 2px 11px}.section-heading h2,.section-heading time{margin:0;color:#616b7b;font-size:15px;font-weight:700}.recent-row{min-height:86px;border:1px solid var(--line);border-radius:14px;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:12px;padding:16px;color:var(--ink);text-decoration:none}.recent-row>svg:first-child{width:32px;height:32px;color:var(--blue)}.recent-row strong,.recent-row span{display:block}.recent-row__actions,.history-item__actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px}.recent-row__actions>a{display:inline-flex;align-items:center;gap:2px;color:var(--blue);text-decoration:none;font-size:11px;font-weight:800}.recent-row__actions>a span{margin:0;color:inherit}.recent-row__actions>a svg{width:14px;height:14px}.recent-row strong{font-size:14px;line-height:1.4}.recent-row span{margin-top:5px;color:var(--muted);font-size:11px;line-height:1.4}.recent-row--empty{display:flex;color:var(--muted);font-size:13px}.attempt-status{border-radius:8px;padding:4px 6px;color:#566173;background:var(--soft);font-size:12px;font-style:normal;font-weight:800;white-space:nowrap}.attempt-status.status-dry_run{color:#547300;background:#efffc4}.order-sync-warning{margin:0 0 8px;color:#9a5b00;font-size:10px;font-weight:700;line-height:1.4}.attempt-status.status-failed,.attempt-status.status-uncertain{color:var(--danger);background:#fff0f1}.attempt-status.status-cancelled{color:#536174;background:#edf0f4}.attempt-status.status-cancelling{color:var(--blue);background:#edf2ff}.attempt-status.status-cancellation_uncertain{color:var(--danger);background:#fff0f1}.compact-cancel-button{padding:5px 7px;border:1px solid #efc4c9;border-radius:7px;color:var(--danger);background:#fff;cursor:pointer;font-size:10px;font-weight:800;white-space:nowrap}.history-payment-link{color:var(--blue);font-size:10px;font-weight:800;text-decoration:none}.new-booking-button,.primary-button,.lime-button{border:0;border-radius:12px;min-height:54px;width:100%;display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;font-size:16px;font-weight:900}.new-booking-button,.primary-button{color:#fff;background:var(--blue)}.new-booking-button{margin-top:20px}.new-booking-button svg{width:27px;height:27px}.payment-note{margin:10px 0 0;text-align:center;color:var(--muted);font-size:11px}.bottom-nav{position:fixed;z-index:70;bottom:0;left:50%;transform:translate(-50%);width:min(100%,480px);height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding:7px 28px env(safe-area-inset-bottom);border-top:1px solid var(--line);background:#fffffff7;display:grid;grid-template-columns:repeat(3,1fr)}.bottom-nav__item{border:0;background:transparent;color:#9099a8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;font-size:12px;font-weight:700}.bottom-nav__item svg{width:25px;height:25px}.bottom-nav__item.is-active{color:var(--blue)}.sheet-backdrop{position:fixed;z-index:60;top:0;right:0;bottom:0;left:0;background:#07112721;display:flex;justify-content:center;align-items:flex-end}.booking-sheet{width:min(100%,480px);height:min(82dvh,680px);max-height:calc(100dvh - var(--nav-height) - env(safe-area-inset-bottom) - 8px);margin-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:#fff;display:flex;flex-direction:column;box-shadow:0 -12px 30px #0711271a;animation:sheet-up .32s cubic-bezier(.2,.8,.2,1) both}.booking-sheet--immediate{height:min(90dvh,730px)}@keyframes sheet-up{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.sheet-handle{width:48px;height:4px;border-radius:999px;background:#cfd4dc;margin:7px auto 1px}.sheet-header{min-height:50px;display:flex;align-items:center;justify-content:space-between;padding:0 18px}.sheet-header h2{margin:0;font-size:22px;letter-spacing:-1px}.icon-button{width:40px;height:40px;padding:8px;border:0;background:transparent;color:var(--ink);cursor:pointer}.sheet-scroll{min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;padding:0 16px 8px}.form-section{min-inline-size:0;border:0;margin:10px 0 16px;padding:0}.form-section legend{padding:0;margin-bottom:8px;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800}.form-section legend svg{width:19px;height:19px}.form-section legend small{color:var(--muted);font-size:12px;font-weight:500}.date-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.date-option{min-width:0;height:52px;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer}.date-option strong{font-size:12px}.date-option span{font-size:10px}.date-option.is-selected,.time-option.is-selected{border-color:var(--blue);color:#fff;background:var(--blue)}.time-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.time-option{min-height:36px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:#fff;cursor:pointer;font-size:10px;font-weight:700}.immediate-booking{margin-top:12px}.immediate-banner{min-height:48px;padding:9px 11px;border:1px solid #d9e6ac;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f9ffe8}.immediate-banner>div{min-width:0;display:grid;grid-template-columns:auto auto;align-items:center;justify-content:start;column-gap:7px}.immediate-banner strong{font-size:14px}.immediate-banner small{grid-column:2;margin-top:2px;color:#6e7952;font-size:10px}.live-dot{grid-row:1 / 3;width:9px;height:9px;border-radius:50%;background:var(--lime-deep);box-shadow:0 0 #83b50059;animation:live-pulse 1.8s ease-out infinite}@keyframes live-pulse{70%{box-shadow:0 0 0 7px #83b50000}to{box-shadow:0 0 #83b50000}}.immediate-banner button,.availability-empty button{flex:0 0 auto;min-height:30px;padding:0 9px;border:1px solid #b8cc75;border-radius:8px;color:#506d00;background:#fff;cursor:pointer;font-size:10px;font-weight:800}.availability-matrix-section{margin-top:10px}.availability-matrix-meta{min-height:24px;margin-bottom:4px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted)}.availability-matrix-meta small{font-size:8px;text-align:right}.availability-legend{flex:0 0 auto;display:flex;align-items:center;gap:8px;font-size:9px;font-weight:700}.availability-legend span{display:inline-flex;align-items:center;gap:4px}.availability-legend i{width:8px;height:8px;border-radius:3px}.availability-legend .is-available{background:var(--lime)}.availability-legend .is-sold{background:var(--soft);border:1px solid var(--line)}.availability-matrix-scroll{max-width:100%;max-height:320px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aeb9d8 #f1f4fb;border:1px solid var(--line);border-radius:9px;background:#fff;outline:none}.availability-matrix-scroll:focus-visible{box-shadow:0 0 0 3px #1246f529}.availability-matrix{width:max-content;min-width:100%;border-spacing:1px;border-collapse:separate;table-layout:fixed;background:#fff}.availability-matrix th,.availability-matrix td{width:62px;min-width:62px;height:34px;padding:0;border:0;text-align:center}.availability-matrix thead th{position:sticky;z-index:3;top:0;color:#173783;background:#eaf0ff;font-size:9px;font-weight:800}.availability-matrix .availability-time-heading,.availability-matrix .availability-time-cell{position:sticky;z-index:4;left:0;width:54px;min-width:54px;color:#fff;background:var(--blue)}.availability-matrix .availability-time-heading{z-index:5;top:0}.availability-time-cell span{display:block;font-size:8px;line-height:1.12}.availability-cell{width:100%;height:100%;padding:0 3px;border:0;border-radius:3px;font-family:inherit;font-size:11px;font-weight:800;transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.availability-cell.is-available{color:var(--ink);background:var(--lime);cursor:pointer}.availability-cell.is-available:active{transform:scale(.96)}.availability-cell.is-available.is-selected{color:#fff;background:var(--blue);box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 3px var(--blue);filter:none}.availability-cell.is-sold{color:#a1aaba;background:var(--soft);cursor:not-allowed;font-size:9px;font-weight:700}.immediate-summary{margin-top:7px;min-height:24px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:10px}.immediate-summary strong{color:var(--ink);font-size:12px}.availability-time{margin:4px 0 0;text-align:right;color:var(--muted);font-size:9px}.availability-loading,.availability-empty{min-height:188px;margin-top:12px;border:1px dashed var(--line);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.availability-loading{display:grid;grid-template-columns:repeat(3,68px);gap:7px;align-content:center}.availability-loading span{height:42px;border-radius:8px;background:linear-gradient(90deg,#f0f2f5 25%,#fafbfc,#f0f2f5 75%);background-size:200% 100%;animation:availability-shimmer 1.2s linear infinite}.availability-loading p{grid-column:1 / -1;margin:4px 0 0;color:var(--muted);font-size:11px}@keyframes availability-shimmer{to{background-position:-200% 0}}.availability-empty>svg{width:32px;height:32px;margin-bottom:8px;color:var(--blue)}.availability-empty strong{font-size:14px}.availability-empty p{margin:5px 0 0;color:var(--muted);font-size:10px}.availability-empty button{margin-top:10px}.availability-empty.is-error{border-color:#f0c7ca;background:snow}.priority-list{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.priority-item,.add-court{min-height:38px;border:1px solid var(--line);border-radius:9px;background:#fff;display:flex;align-items:center;gap:5px;padding:4px 5px}.priority-item{position:relative;transition:border-color .16s ease,box-shadow .16s ease,transform .18s cubic-bezier(.22,1,.36,1),background-color .16s ease;will-change:transform}.priority-item.is-dragging{z-index:2;border-color:var(--blue);background:#f4f7ff;box-shadow:0 8px 22px #1246f533;transform:scale(1.035) rotate(-.6deg)}.priority-list.is-sorting .priority-item:not(.is-dragging){border-color:#c9d5f7}.priority-number{width:21px;height:21px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:var(--blue);font-size:12px;font-weight:900}.priority-drag-handle{margin-left:auto;width:30px;height:30px;padding:5px;border:0;border-radius:7px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--muted);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.priority-drag-handle:active{color:var(--blue);background:#e9efff;cursor:grabbing}.priority-drag-handle:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.priority-drag-handle svg{width:18px;height:18px;pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.add-court{grid-column:1 / -1;min-height:34px;border-style:dashed;justify-content:center;color:#5f6878;cursor:pointer}.court-picker{margin-top:10px;display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.court-picker button{aspect-ratio:1;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);cursor:pointer;font-size:11px}.court-picker button.is-selected{color:#fff;border-color:var(--blue);background:var(--blue)}.form-hint{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.45}.retry-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.advanced-options{margin:4px 0 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.advanced-options summary{min-height:40px;padding:0 12px;display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:800;list-style:none}.advanced-options summary::-webkit-details-marker{display:none}.advanced-options summary:after{content:"+";margin-left:auto;color:var(--blue);font-size:18px}.advanced-options[open] summary:after{content:"−"}.advanced-options summary small{color:var(--muted);font-size:10px;font-weight:500}.advanced-options__body{padding:0 12px 12px;border-top:1px solid var(--line)}.advanced-options__body .form-section{margin-top:12px}.retry-row strong{font-size:15px}.retry-row p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.4}.stepper{flex:0 0 auto;display:grid;grid-template-columns:38px 34px 38px;height:40px;border:1px solid var(--line);border-radius:8px;overflow:hidden}.stepper button,.stepper span{border:0;display:flex;align-items:center;justify-content:center;background:#fff}.stepper button{cursor:pointer;font-size:20px}.stepper span{border-left:1px solid var(--line);border-right:1px solid var(--line);font-weight:800}.toggle-button{width:46px;height:27px;padding:0;border:0;border-radius:999px;position:relative;flex:0 0 auto;background:#cbd1db;cursor:pointer;transition:background-color .18s ease}.toggle-button span{width:21px;height:21px;border-radius:50%;position:absolute;top:3px;left:3px;background:#fff;box-shadow:0 2px 6px #0f1b3333;transition:transform .18s cubic-bezier(.22,1,.36,1)}.toggle-button.is-on{background:var(--blue)}.toggle-button.is-on span{transform:translate(19px)}.toggle-button:disabled{cursor:not-allowed;opacity:.45}.toggle-button.is-unavailable{opacity:.45}.payment-required-notice{margin-bottom:10px;padding:10px 12px;border:1px solid #cbd5ff;border-radius:10px;display:flex;align-items:center;gap:12px;color:var(--ink);background:#f0f4ff;font-size:12px;line-height:1.5}.payment-required-notice button{min-height:40px;flex:0 0 auto;padding:6px 10px;border:0;border-radius:8px;color:#fff;background:var(--blue);font-size:12px;font-weight:750;cursor:pointer}.field-label{display:block;margin:12px 0 7px;font-size:13px;font-weight:800}.field-label span{color:var(--muted);font-size:10px;font-weight:500}.text-field,.input-shell{width:100%;min-height:48px;border:1px solid #9099a8;border-radius:8px;background:#fff}.text-field{padding:0 13px;color:var(--ink);font-size:14px}.form-error,.settings-message{margin:12px 0 0;color:var(--danger);font-size:12px;line-height:1.5}.sheet-footer{border-top:1px solid var(--line);padding:8px 16px 7px;background:#fff}.sheet-footer .sheet-footer__error{margin:0 0 6px;padding:6px 8px;border-radius:7px;color:var(--danger);background:#fff1f0;font-size:10px;font-weight:700;line-height:1.35;text-align:left}.sheet-footer .primary-button{min-height:44px;font-size:15px;border-radius:10px}.sheet-footer p{margin:4px 0 0;text-align:center;color:var(--muted);font-size:10px}.page-titlebar{height:84px;padding:max(20px,env(safe-area-inset-top)) 24px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.page-titlebar h1{margin:0;font-size:28px;letter-spacing:-1px}.signed-in-user{margin:3px 0 0;color:var(--muted);font-size:10px;font-weight:700}.settings-page,.history-page{min-height:calc(100vh - var(--nav-height));background:#fff}.settings-section{padding:25px 24px 14px}.settings-heading{display:flex;align-items:center;gap:12px;margin-bottom:20px}.settings-heading h2{margin:0;font-size:24px;letter-spacing:-1px}.settings-heading>div>p{margin:3px 0 0;color:var(--muted);font-size:10px}.user-management-section{border-bottom:8px solid var(--soft)}.user-management-section .settings-heading{justify-content:space-between;align-items:flex-start;margin-bottom:12px}.user-count,.user-state{padding:4px 7px;border-radius:999px;color:#657083;background:#eef1f6;font-size:9px;font-weight:800;white-space:nowrap}.user-state.is-active{color:#436300;background:#ebffc0}.user-list{display:grid;gap:8px}.user-card{padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8faff}.user-card__identity{display:grid;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:9px}.user-avatar{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:#fff;background:var(--blue);font-weight:900}.user-card__identity strong,.user-card__identity div>span{display:block}.user-card__identity strong{font-size:13px}.user-card__identity div>span{margin-top:2px;color:var(--muted);font-size:10px}.user-card__actions{margin-top:10px;display:flex;justify-content:flex-end;gap:7px}.user-card__actions button{min-width:60px;min-height:30px;padding:0 10px;border:0;border-radius:8px;color:#fff;background:var(--blue);cursor:pointer;font-size:10px;font-weight:800}.user-card__actions .ghost-action{color:var(--ink);background:#e9edf5}.user-card__actions .danger-action{border:1px solid #ffc3ca;color:var(--danger);background:#fff}.user-edit-form,.user-create-grid{display:grid;gap:8px}.user-edit-form input,.user-create-form input{width:100%;min-height:40px;padding:0 11px;border:1px solid var(--line);border-radius:9px;outline:0;color:var(--ink);background:#fff;font-size:12px}.user-edit-form input:focus,.user-create-form input:focus{border-color:var(--blue)}.user-active-control{display:flex;align-items:center;gap:7px;color:#4b5668;font-size:10px;font-weight:700}.user-active-control input{width:15px;min-height:auto}.user-create-form{margin-top:14px;padding-top:14px;border-top:1px dashed var(--line)}.user-create-form h3{margin:0 0 9px;font-size:14px}.user-create-button{min-height:43px;margin-top:9px;font-size:12px}.logout-button{width:calc(100% - 48px);min-height:42px;margin:10px 24px 28px;border:1px solid #ffc3ca;border-radius:10px;color:var(--danger);background:#fff;cursor:pointer;font-weight:800}.connection-state{color:var(--muted);font-size:12px}.connection-state:before{content:"";width:7px;height:7px;margin-right:6px;border-radius:50%;display:inline-block;background:#a8b0bd}.connection-state.is-online:before{background:var(--lime-deep)}.campus-login-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:0 0 18px;padding:4px;border:1px solid var(--line);border-radius:12px;background:#edf1f8}.campus-login-tabs button{min-height:38px;border:0;border-radius:9px;color:#697487;background:transparent;cursor:pointer;font-size:13px;font-weight:800}.campus-login-tabs button.is-active{color:#fff;background:var(--blue);box-shadow:0 3px 9px #1246f52e}.connection-method{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}.connection-method>svg{width:27px;height:27px;margin-top:2px}.connection-method h3,.connection-method p{margin:0}.connection-method h3{font-size:18px}.connection-method p{margin-top:4px;color:var(--muted);font-size:12px}.qr-frame{min-height:215px;border:1.5px dashed #aab4c4;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background-image:linear-gradient(#8994a5,#8994a5),linear-gradient(#8994a5,#8994a5),linear-gradient(#8994a5,#8994a5),linear-gradient(#8994a5,#8994a5);background-size:24px 2px,2px 24px,24px 2px,2px 24px;background-position:30% 28%,30% 28%,70% 72%,70% 72%;background-repeat:no-repeat}.qr-frame img{width:154px;height:154px;object-fit:contain;image-rendering:pixelated}.qr-frame .shuttle-mark{color:var(--lime-deep)}.qr-frame p{margin:0;color:#687385;font-size:12px}.qr-frame.status-scanned{border-color:var(--lime-deep)}.qr-frame.status-mfa_required{min-height:160px;border-style:solid;border-color:var(--lime-deep);background-color:#f8ffe1}.qr-frame.status-mfa_required>svg{width:34px;height:34px;color:#5d7d00}.qr-frame.status-mfa_required strong{font-size:17px}.lime-button{margin-top:12px;color:var(--ink);background:var(--lime)}.lime-button svg{width:22px}.mfa-panel{margin-top:14px;padding:16px;border:1px solid #dce8b3;border-radius:16px;background:#fbfff0}.mfa-panel__heading{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}.mfa-panel__heading>svg{width:25px;height:25px;color:#5d7d00;flex:0 0 auto}.mfa-panel__heading h3,.mfa-panel__heading p{margin:0}.mfa-panel__heading h3{font-size:16px}.mfa-panel__heading p{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45}.mfa-code-shell{background:#fff}.mfa-code-shell .mfa-send-button{width:auto;min-width:92px;padding:0 4px 0 12px;color:var(--blue);font-size:12px;font-weight:800}.mfa-submit-button{margin-top:12px;min-height:48px;font-size:14px}.campus-password-form{display:grid;gap:10px}.campus-password-form>input{width:100%;min-height:46px;padding:0 13px;border:1px solid var(--line);border-radius:10px;outline:0;color:var(--ink);background:#fff;font-size:14px}.campus-password-form>input:focus{border-color:var(--blue)}.remember-login-control{display:flex;align-items:flex-start;gap:9px;padding:3px 1px;cursor:pointer}.remember-login-control input{width:17px;height:17px;margin:1px 0 0;accent-color:var(--blue)}.remember-login-control span,.remember-login-control strong,.remember-login-control small{display:block}.remember-login-control strong{font-size:13px}.remember-login-control small{margin-top:3px;color:var(--muted);font-size:10px;line-height:1.4}.campus-password-form .primary-button{min-height:48px;font-size:14px}.saved-campus-credential{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:10px 12px;border:1px solid #cfd8ea;border-radius:11px;background:#f7f9ff}.saved-campus-credential strong,.saved-campus-credential span{display:block}.saved-campus-credential strong{color:var(--ink);font-size:14px}.saved-campus-credential span{margin-top:3px;color:var(--muted);font-size:10px}.saved-campus-credential button,.saved-credential-back{border:0;color:var(--blue);background:transparent;cursor:pointer;font-size:11px;font-weight:800}.saved-credential-back{justify-self:start;padding:1px 0}.manual-slider-panel{padding:14px;border:1px solid #cfd8ea;border-radius:15px;background:#f7f9ff}.manual-slider-panel__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.manual-slider-panel__heading strong{display:block;font-size:15px}.manual-slider-panel__heading p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.45}.manual-slider-panel__heading button{flex:0 0 auto;padding:5px 8px;border:0;color:var(--blue);background:transparent;cursor:pointer;font-size:11px;font-weight:800}.manual-slider-widget{position:relative;display:flex;flex-direction:column;width:100%;max-width:360px;margin:0 auto;overflow:hidden;border:1px solid #bac5d9;border-radius:7px;background:#fff;touch-action:none;user-select:none;-webkit-user-select:none}.manual-slider-widget.is-submitting{opacity:.65;pointer-events:none}.manual-slider-picture{position:relative;flex:0 0 auto;width:100%;overflow:hidden;background:#eef2f8}.manual-slider-background,.manual-slider-piece{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none}.manual-slider-piece{will-change:transform}.manual-slider-track{position:relative;flex:1 1 auto;min-height:40px;overflow:hidden;border-top:1px solid #e3e8f1;color:#66758c;background:#f7f9fa;font-size:11px;line-height:1}.manual-slider-track>span{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;pointer-events:none}.manual-slider-mask{position:absolute;inset:0 auto 0 0;border-right:1px solid var(--blue);background:#dce8ff;pointer-events:none}.manual-slider-handle{position:absolute;top:0;bottom:0;z-index:2;display:grid;min-width:40px;padding:0;place-items:center;border:1px solid var(--blue);border-radius:3px;color:var(--blue);background:#fff;box-shadow:0 0 5px #094cf233;cursor:grab;touch-action:none;font-size:20px;font-weight:700}.manual-slider-handle:active{cursor:grabbing;background:var(--blue);color:#fff}.manual-slider-panel>.text-button{margin-top:10px}.password-mfa-panel{margin-top:0}.campus-password-login>.settings-message{margin:12px 0 0}.payment-password-panel{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f7f9ff}.payment-password-panel__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.payment-password-panel__heading strong{font-size:15px}.payment-password-panel__heading p{margin:4px 0 0;color:var(--muted);font-size:10px;line-height:1.45}.credential-state{flex:0 0 auto;padding:4px 7px;border-radius:999px;color:#687385;background:#e8ecf3;font-size:10px;font-weight:800}.credential-state.is-configured{color:#4e6d00;background:#ecffc0}.payment-password-form{margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) 68px;gap:8px}.payment-password-form input,.payment-password-form button{min-height:42px;border:1px solid var(--line);border-radius:9px;font-size:13px}.payment-password-form input{min-width:0;padding:0 12px;color:var(--ink);background:#fff}.payment-password-form button{border-color:var(--blue);color:#fff;background:var(--blue);cursor:pointer;font-weight:800}.payment-password-form button:disabled{cursor:not-allowed;opacity:.45}.payment-password-delete{margin-top:9px;padding:0;border:0;color:var(--danger);background:transparent;cursor:pointer;font-size:10px;font-weight:700}.input-shell{display:flex;align-items:center;gap:8px;padding:0 12px}.input-shell>svg{width:21px;height:21px;color:var(--ink)}.input-shell input{min-width:0;flex:1;border:0;outline:0;color:var(--ink);background:transparent;font-size:14px}.input-shell input::placeholder{color:#a1a8b4}.input-shell button{width:36px;height:38px;border:0;background:transparent;color:#778194;cursor:pointer}.input-shell button svg{width:20px}.settings-message{padding:9px 11px;border-left:3px solid var(--blue);color:#3f4a5b;background:#f5f7ff}.text-button{margin-top:13px;border:0;padding:0;background:transparent;color:var(--blue);cursor:pointer;font-size:12px;font-weight:700}.text-button--danger{color:var(--danger)}.account-connected-summary{display:flex;align-items:center;gap:12px;margin-top:18px;padding:16px;border:1px solid #dce8b3;border-radius:14px;background:#fbfff0}.account-connected-summary>svg{width:26px;height:26px;flex-shrink:0;color:#658300}.account-connected-summary strong{font-size:15px}.account-connected-summary p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.campus-disconnect-button{width:100%;min-height:46px;margin-top:18px;padding:10px 16px;border:1px solid #ffbac2;border-radius:12px;color:var(--danger);background:#fff0f1;font-size:15px;font-weight:800;cursor:pointer}.campus-disconnect-button:hover{background:#ffe4e7}.campus-disconnect-button:disabled{opacity:.5;cursor:not-allowed}.page-intro{margin:20px 24px;color:var(--muted);font-size:13px;line-height:1.6}.history-list{padding:0 24px 30px}.history-item{border-top:1px solid var(--line);padding:18px 0;display:grid;grid-template-columns:52px 1fr auto;gap:13px;align-items:flex-start}.history-item__date strong,.history-item__date span{display:block}.history-item__date strong{font-size:16px}.history-item__date span{margin-top:4px;color:var(--muted);font-size:11px}.history-item__body h2{margin:0 0 6px;font-size:16px}.history-item__body p{margin:4px 0;color:var(--muted);font-size:11px;line-height:1.45}.history-item__body p:first-of-type{display:flex;align-items:center;gap:5px;color:var(--ink);font-size:13px}.history-item__body svg{width:16px;height:16px;color:var(--blue)}.confirm-backdrop{position:fixed;z-index:120;top:0;right:0;bottom:0;left:0;padding:20px;display:flex;align-items:center;justify-content:center;background:#07112770;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.confirm-dialog{width:min(100%,350px);padding:24px;border-radius:20px;position:relative;background:#fff;box-shadow:0 22px 70px #0711273d;text-align:center}.confirm-dialog__close{position:absolute;top:12px;right:12px;width:34px;height:34px;padding:7px;border:0;color:#6e7889;background:transparent;cursor:pointer}.confirm-dialog__close svg{width:20px;height:20px}.confirm-dialog__mark{width:42px;height:42px;margin:2px auto 13px;border-radius:50%;display:grid;place-items:center;color:var(--danger);background:#fff0f1;font-size:24px;font-weight:900}.confirm-dialog h2{margin:0;font-size:21px}.confirm-dialog>p{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.6}.confirm-dialog .confirm-dialog__error{padding:8px 10px;border-radius:8px;color:var(--danger);background:#fff0f1;font-size:12px}.confirm-dialog__actions{margin-top:20px;display:grid;grid-template-columns:1fr 1.2fr;gap:9px}.confirm-dialog__actions button{min-height:44px;border:0;border-radius:10px;color:#536174;background:var(--soft);cursor:pointer;font-size:13px;font-weight:850}.confirm-dialog__actions .is-danger{color:#fff;background:var(--danger)}.action-notice{position:fixed;z-index:110;left:50%;bottom:calc(var(--nav-height) + 14px + env(safe-area-inset-bottom));transform:translate(-50%);width:max-content;max-width:calc(100% - 32px);min-height:42px;padding:8px 8px 8px 15px;border-radius:12px;display:flex;align-items:center;gap:10px;color:#fff;background:#172238;box-shadow:0 10px 30px #07112738;font-size:12px;font-weight:750}.action-notice button{width:28px;height:28px;padding:5px;border:0;color:#fff;background:transparent;cursor:pointer}.action-notice svg{width:16px;height:16px}.history-empty{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.history-empty svg{width:48px;height:48px;color:var(--blue)}.history-empty h2{margin:18px 0 7px;font-size:20px}.history-empty p{max-width:250px;margin:0;color:var(--muted);font-size:12px;line-height:1.6}.login-page{padding:max(38px,env(safe-area-inset-top)) 28px 40px;display:flex;flex-direction:column;position:relative}.login-court{position:absolute;width:270px;height:150px;right:-90px;top:130px;border:1px solid rgba(18,70,245,.35);transform:skewY(-14deg)}.login-court:before,.login-court:after{content:"";position:absolute;background:#1246f559}.login-court:before{width:1px;height:100%;left:50%}.login-court:after{width:100%;height:1px;top:50%}.login-copy{position:relative;z-index:2;margin-top:120px}.login-copy h1{margin:0;font-size:clamp(33px,9vw,44px);line-height:1.34;letter-spacing:-2px}.login-copy p{margin:14px 0 0;color:var(--muted)}.login-form{margin-top:42px}.login-form>label{display:block;margin-bottom:8px;font-size:13px;font-weight:800}.login-form>label:not(:first-child){margin-top:14px}.login-form .primary-button{margin-top:14px}.login-security{margin-top:auto;padding-top:40px;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted)}.loading-shuttle{color:var(--lime-deep);font-size:48px;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 374px){.booking-page{padding-left:16px;padding-right:16px}.account-link span{display:none}.next-booking{grid-template-columns:1fr}.next-booking__time{border-right:0;border-bottom:1px solid var(--line)}.next-booking__details h2{margin-bottom:10px}.recent-row{grid-template-columns:auto 1fr auto;gap:8px;padding:13px 10px}.task-cancel-button{margin-top:11px}}@media (min-width: 760px){body{padding:24px 0}.app-shell,.login-page,.app-loading{min-height:calc(100vh - 48px);border-radius:24px;box-shadow:0 18px 70px #0711271f}.bottom-nav{bottom:24px;border-radius:0 0 24px 24px}.booking-sheet{margin-bottom:calc(var(--nav-height) + 24px)}.sheet-backdrop{padding-bottom:0}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
