:root{--bg:#f4f7ff;--surface:#ffffff;--surface-2:#eef3fb;--text:#0b1533;--muted:#5b6b8c;--muted-2:#8798b5;--primary:#1d4ed8;--primary-dark:#1e3a8a;--primary-soft:#eaf0ff;--border:#e2eaf7;--border-strong:#cfdcf1;--ring:rgba(29,78,216,0.18);--danger:#dc2626;--success:#0f766e;--success-soft:#d9f2ee;--warn:#b45309;--warn-soft:#fef3c7;--shadow-sm:0 1px 2px rgba(16,34,82,0.04),0 1px 3px rgba(16,34,82,0.06);--shadow-md:0 1px 2px rgba(16,34,82,0.04),0 4px 12px rgba(16,34,82,0.07);--shadow-lg:0 2px 4px rgba(16,34,82,0.05),0 12px 28px rgba(16,34,82,0.12);--hero-blue:#2563eb;--hero-blue-deep:#1e3a8a;--hero-glow:rgba(255,255,255,0.22);--accent:#ffffff;--accent-strong:#e7efff;--accent-ink:#1e3a8a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--text-xs:11px;--text-sm:13px;--text-base:15px;--text-md:16px;--text-lg:18px;--text-xl:22px;--text-2xl:27px;--radius-sm:10px;--radius:14px;--radius-lg:18px;--radius-pill:999px;--touch:44px;--select-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%235b6b8c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}*{box-sizing:border-box}body,html{margin:0;padding:0;color-scheme:light}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans Lao,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{letter-spacing:-.02em;line-height:1.2}.app-shell{max-width:480px;margin:0 auto;min-height:100vh;padding:20px 18px 40px}.app-shell,.topbar{background:var(--bg)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:-20px -18px 20px;padding:10px 18px}@supports ((-webkit-backdrop-filter:blur(8px)) or (backdrop-filter:blur(8px))) or (-webkit-backdrop-filter:blur(8px)){.topbar{background:rgba(244,247,255,.82);-webkit-backdrop-filter:blur(10px) saturate(140%);backdrop-filter:blur(10px) saturate(140%)}}.topbar:after{content:"";position:absolute;inset:auto 0 0;height:1px;background:var(--border)}.brand{font-weight:700;font-size:18px}.brand,.topbar a.brand{color:var(--primary-dark)}.topbar a.brand{flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--touch);height:var(--touch);border-radius:50%;border:1px solid var(--border);background:var(--surface);font-size:var(--text-xl);line-height:1;text-decoration:none}.topbar a.brand:active{background:var(--surface-2)}.topbar span.brand{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--text-md)}.topbar span.brand-home{display:inline-flex;align-items:center;gap:10px;overflow:visible;white-space:normal;text-overflow:clip}.brand-logo{flex:none;width:34px;height:34px;display:block}.brand-name{min-width:0}.topbar .lang-select{flex:none}.topbar-actions{flex:none;display:flex;align-items:center;gap:var(--space-2)}.profile{position:relative;flex:none}.profile-trigger{width:var(--touch);height:var(--touch);padding:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-strong);border-radius:50%;background:var(--primary-soft);color:var(--primary-dark);font-size:var(--text-sm);font-weight:700;letter-spacing:.02em;cursor:pointer}.profile-trigger .profile-glyph{font-size:20px}.profile-trigger[aria-expanded=true]{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.profile-popover{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:30;width:max-content;min-width:200px;max-width:min(78vw,260px);gap:var(--space-2);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.profile-popover,.profile-who{display:flex;flex-direction:column}.profile-who{gap:2px;overflow-wrap:anywhere}.profile-name{font-weight:700;font-size:var(--text-base)}.hero{margin:4px 0 16px}.hero h1{font-size:var(--text-xl);line-height:1.2;margin:0 0 4px}.hero p{color:var(--muted);margin:0;font-size:var(--text-base);line-height:1.45}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.stack{display:flex;flex-direction:column;gap:12px}.stack>.card,.stack>li>.card{margin-bottom:0}label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.cancel-reason,.day-toggle,.payment-option,.schedule-day,.sport-tile{font-size:var(--text-base);font-weight:400;text-transform:none;letter-spacing:normal;color:var(--text)}input{width:100%;min-height:var(--touch);padding:var(--space-3) var(--space-4);font-size:var(--text-md);border:1px solid var(--border-strong);border-radius:var(--radius);background:#fbfcff;color:var(--text)}input::placeholder{color:var(--muted-2)}input:not([type=checkbox]):not([type=radio]),select{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0}input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value{min-width:0;text-align:left}input[type=date]::-webkit-calendar-picker-indicator,input[type=date]::-webkit-inner-spin-button,input[type=time]::-webkit-calendar-picker-indicator,input[type=time]::-webkit-inner-spin-button{margin:0}input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:var(--touch);padding:var(--space-3) var(--space-4);font-size:var(--text-md);font-weight:600;letter-spacing:-.01em;border:none;border-radius:var(--radius);cursor:pointer;text-decoration:none;transition:transform .1s ease}.btn:active{transform:scale(.985)}.btn-primary{background:linear-gradient(180deg,#2b5ce0 0,var(--primary) 100%);color:#fff;box-shadow:0 1px 2px rgba(16,34,82,.12),0 6px 16px rgba(29,78,216,.24)}.btn-primary:active{background:var(--primary-dark)}.btn-primary:disabled{opacity:.6;cursor:default;box-shadow:none}.btn-secondary{background:var(--surface);color:var(--primary-dark);border:1px solid var(--border-strong);box-shadow:var(--shadow-sm)}.btn-secondary:active{background:var(--surface-2)}.btn-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);min-height:var(--touch);background:none;border:none;color:var(--primary);font-size:var(--text-base);font-weight:600;text-decoration:none;cursor:pointer;padding:var(--space-2)}.btn-link:active{color:var(--primary-dark)}.error{color:var(--danger);font-size:14px;margin:0}.hint{color:var(--muted);font-size:var(--text-sm);line-height:1.45;margin:0}.result-count{display:block;margin:var(--space-4) 0 var(--space-2);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-7) var(--space-4)}.empty-state-icon{font-size:40px;line-height:1;margin-bottom:var(--space-1)}.empty-state-title{margin:0;font-size:var(--text-lg);font-weight:700}.empty-state-body{margin:0;max-width:30ch;color:var(--muted);font-size:var(--text-base);line-height:1.5}.empty-state-action{width:100%;margin-top:var(--space-3)}.skeleton{display:block;position:relative;overflow:hidden;background:var(--border);border-radius:var(--radius-sm)}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:skeleton-shimmer 1.4s ease-in-out infinite}@keyframes skeleton-shimmer{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.skeleton-line{height:12px;margin:4px 0;border-radius:var(--radius-sm)}.skeleton-title{height:22px;width:65%;margin-bottom:10px}.skeleton-input{height:var(--touch)}.skeleton-thumb{width:100%;aspect-ratio:16/9;margin-bottom:8px}.skeleton-cover{width:100%;aspect-ratio:16/10;margin-bottom:16px;border-radius:var(--radius)}select{width:100%;min-height:var(--touch);padding:var(--space-3) var(--space-4);-webkit-padding-end:calc(var(--space-4) + 16px);padding-inline-end:calc(var(--space-4) + 16px);font-size:var(--text-md);border:1px solid var(--border-strong);border-radius:var(--radius);background:#fbfcff;color:var(--text);background-image:var(--select-chevron);background-repeat:no-repeat;background-position:right var(--space-3) center;background-size:12px 8px}select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.section-title{font-size:var(--text-lg);margin:22px 0 10px}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:24px 0 12px}.section-head .section-title{margin:0}.home-find{margin-top:8px}.home-find-title{font-size:var(--text-2xl);line-height:1.15;margin:4px 0 14px}.home-find-form{gap:12px}.field-label{display:block;font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.sport-tiles{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin-top:-4px}.sport-tile{position:relative;display:flex;flex-direction:column;border:2px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .12s ease,box-shadow .12s ease}.sport-tile input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sport-tile-img{display:block;width:100%;aspect-ratio:16/11;background-color:var(--surface-2);background-size:cover;background-position:50%}.sport-tile-name{padding:9px 8px;text-align:center;font-weight:700;font-size:var(--text-base);letter-spacing:-.01em;color:var(--text)}.sport-tile:has(input:checked){border-color:var(--primary);box-shadow:0 0 0 3px var(--ring),var(--shadow-md)}.sport-tile:has(input:checked) .sport-tile-name{background:var(--primary-soft);color:var(--primary-dark)}.sport-tile:has(input:checked):after{content:"✓";position:absolute;top:8px;right:8px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--primary);color:#fff;font-size:14px;font-weight:700;line-height:1}.sport-tile:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px}.home-login{margin-top:20px}.home-login>.btn{width:100%}.search-panel{padding:0}.search-summary{display:flex;align-items:center;gap:var(--space-3);min-height:var(--touch);padding:var(--space-3) var(--space-4);cursor:pointer;list-style:none}.search-summary::-webkit-details-marker{display:none}.search-summary:focus-visible{outline:none;border-radius:var(--radius);box-shadow:0 0 0 3px var(--ring)}.search-summary-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}.search-summary-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.search-summary-values{display:flex;flex-wrap:wrap;gap:var(--space-2)}.search-panel[open] .search-summary-values{display:none}.search-chip{background:var(--primary-soft);border-radius:var(--radius-pill);padding:3px 10px;color:var(--primary-dark)}.search-chip,.search-summary-toggle{font-size:var(--text-sm);font-weight:600}.search-summary-toggle{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);color:var(--primary)}.search-summary-toggle:after{content:"";width:7px;height:7px;border-right:2px solid;border-bottom:2px solid;transform:translateY(-2px) rotate(45deg)}.search-panel[open] .search-summary-toggle:after{transform:translateY(2px) rotate(-135deg)}.search-form{padding:var(--space-4);border-top:1px solid var(--border)}.avail-venue-head{display:flex;align-items:center;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:1px solid var(--border);text-decoration:none;color:inherit}.avail-venue-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.venue-avatar-sm{width:38px;height:38px}.avail-court{gap:8px}.avail-court+.avail-court{padding-top:12px;border-top:1px dashed var(--border)}.avail-court-name{display:flex;align-items:center;gap:5px;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.avail-court-name strong{font-weight:700;color:var(--text)}.btn-accent{background:var(--accent);color:var(--accent-ink);font-weight:700}.btn-accent:active{background:var(--accent-strong)}.venue-card{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);text-decoration:none;color:inherit}.venue-card:active{border-color:var(--border-strong);background:var(--surface-2)}.venue-avatar{flex:none;width:52px;height:52px;border-radius:50%;border:1px solid var(--border);background-color:#fff;background-size:contain;background-repeat:no-repeat;background-position:50%}.venue-card-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}.field-name,.venue-name{font-weight:700;font-size:var(--text-md);color:var(--text);letter-spacing:-.01em}.venue-meta{color:var(--muted);font-size:var(--text-sm);margin:0}.venue-place{display:inline-flex;align-items:center;gap:5px}.venue-address{color:var(--muted-2);font-size:var(--text-xs);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.icon{flex:none;transform:translateY(.5px)}.chip-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}.chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--muted);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.chip-primary{background:var(--primary-soft);color:var(--primary-dark)}.row-chevron{flex:none;align-self:center;width:7px;height:7px;-webkit-margin-start:var(--space-1);margin-inline-start:var(--space-1);border-top:2px solid var(--muted-2);border-right:2px solid var(--muted-2);transform:rotate(45deg)}[dir=rtl] .row-chevron{transform:rotate(-135deg)}.field-card{display:flex;flex-direction:column;gap:4px;padding:var(--space-3)}.field-link{display:flex;align-items:center;gap:var(--space-3)}.field-link-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.venue-map{position:relative;aspect-ratio:16/10;width:100%;overflow:hidden;border-radius:var(--radius);background:var(--surface-2)}.venue-map iframe{display:block;width:100%;height:100%;border:0}.location-link{text-decoration:none;color:inherit;gap:4px}.location-link:active .field-cta{color:var(--primary)}.field-link{text-decoration:none;color:inherit}.field-link:active .field-name{color:var(--primary-dark)}.owner-field-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.owner-field-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:var(--touch);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-decoration:none;color:inherit}.owner-field-row .field-name{font-size:var(--text-md)}.field-cta{font-size:var(--text-sm);font-weight:600;color:var(--primary);text-decoration:none}.day-strip-wrap{position:-webkit-sticky;position:sticky;top:65px;z-index:9;margin:0 -18px var(--space-4);padding:var(--space-2) 0;background:var(--bg);border-bottom:1px solid var(--border)}@supports ((-webkit-backdrop-filter:blur(8px)) or (backdrop-filter:blur(8px))) or (-webkit-backdrop-filter:blur(8px)){.day-strip-wrap{background:rgba(244,247,255,.82);-webkit-backdrop-filter:blur(10px) saturate(140%);backdrop-filter:blur(10px) saturate(140%)}}.day-strip{display:flex;gap:var(--space-2);margin:0;padding:2px 18px;list-style:none;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}.day-strip::-webkit-scrollbar{display:none}.day-tile{scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:52px;min-height:var(--touch);padding:var(--space-2) var(--space-1);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);text-decoration:none;box-shadow:var(--shadow-sm)}.day-tile-weekday{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.day-tile-day{font-size:var(--text-lg);font-weight:700;line-height:1.05;letter-spacing:-.02em}.day-tile-month{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.day-tile-selected{border-color:var(--primary);background:linear-gradient(180deg,#2b5ce0 0,var(--primary) 100%);color:#fff;box-shadow:0 1px 2px rgba(16,34,82,.12),0 6px 14px rgba(29,78,216,.28)}.day-tile-selected .day-tile-month,.day-tile-selected .day-tile-weekday{color:rgba(255,255,255,.82)}.day-tile:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.next-free{display:flex;flex-direction:column;gap:4px;text-decoration:none;color:inherit;border-color:var(--primary);background:var(--ring)}.next-free:active{background:var(--ring);filter:brightness(.97)}.next-free-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-dark)}.next-free-time{display:flex;align-items:center;gap:8px;font-weight:700;font-size:18px}.next-free-cta{font-size:14px;font-weight:600;color:var(--primary-dark)}.slot-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;vertical-align:middle}.slot-badge-peak{background:#fef3c7;color:#92400e}.slot-grid{list-style:none;padding:0;margin:0 0 var(--space-3);display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--space-2);gap:var(--space-2)}.slot{display:flex;flex-direction:column;gap:3px;border:1px solid var(--border-strong);border-radius:var(--radius);padding:var(--space-2) var(--space-3);background:var(--surface)}.slot-time{font-weight:700;font-size:var(--text-base);letter-spacing:-.01em}.slot-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:16px}.slot-price{font-size:var(--text-sm);font-weight:600;color:var(--muted)}.slot-free{border-color:rgba(29,78,216,.35);background:var(--primary-soft)}.slot-free .slot-price,.slot-free .slot-time{color:var(--primary-dark)}.slot-peak{border-color:rgba(245,158,11,.5);background:#fffaf0}.slot-peak .slot-price,.slot-peak .slot-time{color:var(--warn)}.slot-booked,.slot-past{background:#f2f4f8;border-color:transparent;color:var(--muted-2)}.slot-booked .slot-time,.slot-past .slot-time{color:var(--muted);text-decoration:line-through}.slot-link{display:flex;flex-direction:column;gap:4px;color:inherit;text-decoration:none}.court-picker{margin:0 0 var(--space-3)}.court-picker-toggle{min-height:var(--touch);padding:0}.court-picker-panel{border:0;padding:0;margin:0}.court-picker-panel legend{padding:0;margin-bottom:var(--space-2)}.court-chips{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.court-chips::-webkit-scrollbar{display:none}.court-chip{flex:none;min-height:var(--touch);padding:var(--space-2) var(--space-4);border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);color:var(--text);font-size:var(--text-sm);font-weight:600;white-space:nowrap;cursor:pointer}.court-chip-on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary-dark)}.booker-steps{list-style:none;padding:0;margin:0 0 var(--space-2)}.booker-steps,.booker-steps li{display:flex;gap:var(--space-2)}.booker-steps li{flex:1 1;align-items:center;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-weight:600;color:var(--muted)}.booker-steps .step-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:12px;font-weight:700;flex:none}.booker-steps .step-active{border-color:var(--primary);color:var(--primary-dark);background:var(--ring)}.booker-steps .step-active .step-num{background:var(--primary);color:#fff}.booker-steps .step-done{border-color:var(--primary);color:var(--primary-dark)}.booker-steps .step-done .step-num:after{content:"✓"}.booker-steps .step-done .step-num{color:transparent;width:22px;background:var(--primary)}.booker-steps .step-done .step-num:after{color:#fff}.booker-step-hint{margin-top:0}.block-grid{list-style:none;padding:0;margin:0 0 16px;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px}.block,.block-btn{display:flex}.block-btn{flex:1 1;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:var(--touch);padding:var(--space-2) 4px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;text-align:center;transition:transform .1s ease}.block-btn:active:not(:disabled){transform:scale(.96)}.block-time{font-weight:700;font-size:14px;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.block-state{font-size:10px;color:var(--muted)}.block-free .block-btn{border-color:rgba(29,78,216,.28);background:var(--primary-soft);color:var(--primary-dark)}.block-reachable .block-btn{border-color:var(--primary);border-style:dashed;color:var(--primary-dark)}.block-selected .block-btn{border-color:var(--primary);background:linear-gradient(180deg,#2b5ce0 0,var(--primary) 100%);color:#fff;box-shadow:0 1px 2px rgba(16,34,82,.12),0 4px 10px rgba(29,78,216,.26)}.block-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;opacity:.9}.block-end .block-btn,.block-start .block-btn{box-shadow:inset 0 0 0 2px #fff}.block-dim .block-btn{opacity:.4}.block-blocked .block-btn,.block-booked .block-btn,.block-past .block-btn{background:#f2f4f8;border-color:transparent;color:var(--muted-2);box-shadow:none;cursor:not-allowed}.block-blocked .block-time,.block-booked .block-time,.block-past .block-time{text-decoration:line-through}.block-blocked .block-btn{background-image:repeating-linear-gradient(-45deg,transparent 0 4px,rgba(15,23,42,.06) 4px 8px)}.block-peak.block-free .block-btn,.block-peak.block-reachable .block-btn{border-color:#f59e0b}.booker-summary{position:-webkit-sticky;position:sticky;bottom:max(var(--space-3),env(safe-area-inset-bottom));z-index:8;gap:var(--space-3);border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.booker-range,.booker-summary{display:flex;flex-direction:column}.booker-range{gap:2px}.booker-time{font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.booker-total{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.booker-price{font-weight:700;font-size:var(--text-xl);letter-spacing:-.02em;color:var(--primary-dark);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.booker-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.booker-actions .btn{flex:1 1}.summary{margin:0;display:flex;flex-direction:column;gap:8px}.summary>div{display:flex;justify-content:space-between;gap:12px}.summary dt{color:var(--muted)}.summary dd{margin:0;font-weight:600;text-align:right}.payment-option{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border);border-radius:10px;padding:12px;cursor:pointer}.payment-option input[type=checkbox],.payment-option input[type=radio]{flex:none;width:auto;margin:3px 0 0;padding:0}.payment-only{cursor:default}.payment-option .payment-name{display:block;font-weight:600}.payment-option .hint{display:block;margin:2px 0 0}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btn-danger:active{background:var(--danger);color:#fff}.booking-list{list-style:none;padding:0;margin:0 0 var(--space-4)}.booking-row{display:flex;flex-direction:column;gap:3px;padding:var(--space-3);color:inherit;text-decoration:none}.booking-row:active{background:var(--surface-2)}.booking-row-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.booking-row-venue{font-weight:700;font-size:var(--text-md);letter-spacing:-.01em}.booking-row-field{font-size:var(--text-sm);color:var(--muted)}.booking-row-when{margin-top:2px;font-size:var(--text-base);font-weight:600;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.booking-row-meta{font-size:var(--text-xs);color:var(--muted-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.status-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2);color:var(--muted);white-space:nowrap}.status-completed,.status-confirmed,.status-published{background:var(--success-soft);color:var(--success)}.status-pending{background:var(--warn-soft);color:var(--warn)}.status-cancelled,.status-no_show,.status-suspended{background:#fee2e2;color:#991b1b}.status-expired,.status-inactive{background:var(--surface-2);color:var(--muted)}.status-active{background:#d1fae5;color:#065f46}.status-blocked{background:#fee2e2;color:#991b1b}.status-admin{background:#e0e7ff;color:#3730a3}.venue-thumb{display:block;width:100%;aspect-ratio:16/9;border-radius:10px;margin-bottom:8px;background-color:#fff;background-size:contain;background-repeat:no-repeat;background-position:50%}.carousel{position:relative;margin-bottom:16px}.carousel-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;border-radius:var(--radius);-webkit-overflow-scrolling:touch;scrollbar-width:none}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{flex:0 0 100%;scroll-snap-align:start;aspect-ratio:16/10;background-color:#fff;background-size:contain;background-repeat:no-repeat;background-position:50%}.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);width:var(--touch);height:var(--touch);border:none;border-radius:50%;background:rgba(15,23,42,.45);color:#fff;font-size:var(--text-xl);line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.carousel-arrow:disabled{opacity:0;pointer-events:none}.carousel-prev{left:8px}.carousel-next{right:8px}.carousel-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:6px}.carousel-dot{width:8px;height:8px;padding:0;border:none;border-radius:50%;background:rgba(255,255,255,.6);cursor:pointer}.carousel-dot.active{background:#fff;transform:scale(1.25)}.lang-select{width:auto;min-height:var(--touch);padding:var(--space-2) var(--space-3);-webkit-padding-end:calc(var(--space-3) + 16px);padding-inline-end:calc(var(--space-3) + 16px);font-size:var(--text-sm);font-weight:600;border-radius:var(--radius-pill);background-color:var(--surface);color:var(--text)}.lang-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.schedule-grid{display:flex;flex-direction:column;gap:var(--space-3)}.schedule-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--space-2)}.schedule-day,.schedule-row{align-items:center;gap:var(--space-2)}.schedule-day{grid-column:1/-1;display:flex;font-weight:600}.schedule-day input[type=checkbox]{width:auto;min-height:auto;margin:0}.schedule-row>input[type=time],.schedule-row>select{min-width:0}.schedule-row>select{grid-column:1/-1}.exception-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.exception-row>div{display:flex;flex-direction:column;gap:2px}.stack-inline{display:flex;flex-direction:row;align-items:center;gap:var(--space-1)}.owner-booking-info{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1);min-width:0}.owner-booking-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);flex:0 0 auto}.owner-booking-actions>form{flex:0 0 auto}.owner-action-btn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:36px;padding:0 var(--space-3);font-size:16px;font-weight:700;line-height:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer}.owner-action-confirm{background:var(--primary);border-color:var(--primary);color:#fff}.owner-action-complete,.owner-action-noshow{background:var(--surface);border-color:var(--border);color:var(--text)}.owner-cancel{align-self:flex-end}.owner-cancel-summary{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--space-2);font-size:var(--text-xs);font-weight:700;color:var(--danger);cursor:pointer;list-style:none}.owner-cancel-summary::-webkit-details-marker{display:none}.owner-cancel[open]{align-self:stretch}.owner-cancel-form{margin-top:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border)}.cancel-reason-group{margin:0;padding:0;border:0}.cancel-reason-group legend{padding:0 0 var(--space-2);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.cancel-reason-list{display:flex;flex-direction:column;gap:8px}.cancel-reason{display:flex;align-items:center;gap:10px;min-height:var(--touch);padding:8px 12px;border:1px solid var(--border);border-radius:10px;cursor:pointer}.cancel-reason input[type=radio]{flex:none;width:auto;min-height:0;margin:0;padding:0}.owner-release{align-self:flex-end}.owner-release-btn{display:inline-flex;align-items:center;min-height:36px;padding:0 var(--space-2);font-size:var(--text-xs);font-weight:700;color:var(--primary);background:none;border:0;cursor:pointer}.status-badge.status-offsale{background:var(--surface-2);color:var(--muted)}.owner-booking-days{display:flex;flex-direction:column;gap:var(--space-6)}.owner-booking-groups{gap:var(--space-4)}.owner-booking-court{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:700;color:var(--muted)}.owner-booking-list{list-style:none;margin:0;padding:0}.owner-booking-list,.owner-booking-row{display:flex;flex-direction:column;gap:var(--space-2)}.owner-booking-row{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.owner-booking-main{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.owner-booking-headline{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.owner-booking-when{color:var(--text)}.label-text,.owner-booking-when{font-size:var(--text-sm);font-weight:600}.label-text{display:block}.day-toggles{display:flex;flex-wrap:wrap;gap:var(--space-2)}.day-toggle{display:inline-flex;align-items:center;gap:4px;min-height:var(--touch);font-size:var(--text-sm)}.message-popup-backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:rgba(15,23,42,.55)}.message-popup{width:100%;max-width:420px;max-height:80vh;overflow-y:auto;margin-bottom:0;box-shadow:var(--shadow-lg)}.message-popup-title{margin:0;font-size:var(--text-lg);font-weight:700}.message-popup-body{margin:0;font-size:var(--text-sm);color:var(--text)}.message-popup-actions{display:flex;flex-direction:column;gap:var(--space-2)}.message-popup-actions .btn,.message-popup-actions form{width:100%}.message-items{list-style:none;margin:0;padding:0}.message-item{display:flex;flex-direction:column;gap:var(--space-2)}.message-item-unread{border-left:3px solid var(--primary)}.message-item-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.message-item-title{font-weight:700;font-size:var(--text-sm)}.message-item-body{margin:0;font-size:var(--text-sm)}.message-badge{background:var(--primary);color:#fff}