/* SÂN NHÀ — platform visual system, layered over functional component styles. */
:root { --ink:#183c2e; --green:#08745c; --green-dark:#123e2e; --lime:#deed9d; --lime-deep:#d2e48b; --paper:#f7f8f3; --line:#e1e8df; --muted:#627368; --soft:#edf4ee; --card:#fff; --radius:18px; --shadow:0 8px 32px rgba(24,60,46,.045); --bs-primary-rgb:8,116,92; }
body { background:var(--paper); letter-spacing:-.012em; }.container { max-width:1336px; padding-inline:36px; }
h1,h2,h3 { font-weight:700; letter-spacing:-.045em; }h1 { line-height:1.14; }h2 { line-height:1.25; }
.eyebrow,.cf-eyebrow { font-size:.65rem; letter-spacing:.15em; font-weight:700; }.page-space { padding-block:44px 76px; }.section-space { padding-block:42px; }
.surface,.cf-card { border-radius:20px; border-color:var(--line); padding:30px; box-shadow:var(--shadow); }
.btn { border-radius:11px; font-size:.85rem; font-weight:600; padding:12px 20px; transition:background-color .16s,border-color .16s,box-shadow .16s,transform .16s; }.btn-sm { padding:8px 12px; font-size:.74rem; }
.btn-primary { background:#08745c; border-color:#08745c; box-shadow:0 4px 12px #08745c0a; }.btn-primary:hover,.btn-primary:focus-visible { background:#065e49; border-color:#065e49; box-shadow:0 6px 16px #08745c18; }
.btn-lime { background:var(--lime); border-color:var(--lime); color:#163d2d; }.btn-lime:hover { background:#d0e28a; border-color:#d0e28a; color:#163d2d; }
.btn-outline-secondary { color:#425e4c; border-color:#d0dbce; background:transparent; }.btn-outline-secondary:hover { background:#edf4eb; border-color:#8eac93; color:#163d2d; }
.btn-outline-success { color:#08745c; border-color:#b4d0bc; }.btn-outline-success:hover { background:#e5f0e6; color:#075e49; border-color:#8aaf96; }
.form-control,.form-select { min-height:48px; border-radius:11px; border-color:#dce4d9; background-color:white; font-size:.88rem; padding:11px 14px; color:#274333; }.form-control::placeholder { color:#7a887c; opacity:1; }
.form-label { color:#425b49; font-size:.78rem; font-weight:600; margin-bottom:8px; }.form-control:focus,.form-select:focus { border-color:#2c9471; box-shadow:0 0 0 3px #2c947112; }input[type=checkbox],input[type=radio] { accent-color:#08745c; }textarea.form-control { min-height:110px; }
.alert { padding:18px 22px; border-radius:13px; font-size:.87rem; }.pager { justify-content:center; margin-block:30px 8px; font-size:.8rem; }.back-link,.cf-back,.login-back { font-size:.78rem; color:#5f7566; }
/* Brand and navigation */
.site-nav { background:#fcfdf9; backdrop-filter:none; border-bottom:1px solid #e6ebe2; }.nav-bar { min-height:88px; gap:24px; }
.brand { gap:11px; font-size:1.65rem; letter-spacing:-.055em; }.brand-mark { width:43px; height:43px; border-radius:13px; background:#123e2e; color:#dfed9d; }.brand-wordmark { display:block; line-height:1.1; }.brand-wordmark small { display:block; margin-top:6px; font-size:.47rem; letter-spacing:.16em; font-weight:600; color:#677d6c; }.brand-dot { margin-left:0; }
.nav-links { font-size:.8rem; gap:24px; }.nav-links .icon { width:18px; height:18px; }.nav-links > .btn { padding:11px 18px; border-radius:10px; }.nav-links > a:not(.btn):hover { text-decoration:none; color:#08745c; }.account-menu-panel { border-color:#e0e8dc; border-radius:14px; box-shadow:0 12px 36px #153a2714; }
.site-footer { margin-top:48px; background:#12382a; color:#d8e2d8; border:0; }.site-footer .brand { color:#fcfdf6; }.site-footer .brand-mark { background:#254e36; }.site-footer .footer-grid p { color:#c2d2c2; font-size:.88rem; line-height:1.9; margin-top:20px; }.site-footer nav > strong { color:#e9efdd; font-size:.74rem; font-weight:600; letter-spacing:.05em; }.site-footer nav a { color:#bfcebf; font-size:.82rem; }.site-footer nav a:hover { color:var(--lime); }.footer-grid { padding-block:56px 46px; gap:52px; }.footer-bottom { border-color:#ffffff15; padding-block:23px; color:#b8cbbd; font-size:.7rem; }.footer-project-tagline { color:#b8cbbd; font-size:.73rem; }
/* Discovery hero */
.home-page { padding-top:26px; }.discovery-hero { position:relative; isolation:isolate; border-radius:26px; min-height:650px; overflow:hidden; background:#143c2c; color:white; }.discovery-hero-photo { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 56%; z-index:-2; }.discovery-hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(5,34,24,.86),rgba(6,39,28,.48) 50%,rgba(6,39,28,.08)); z-index:-1; }
.discovery-hero-content { padding:78px 64px 180px; }.discovery-hero .eyebrow { color:#e1edb4; margin-bottom:24px; }.discovery-hero h1 { font-size:clamp(2.8rem,5.1vw,4.7rem); font-weight:650; color:white; margin:0 0 22px; line-height:1.09; letter-spacing:-.055em; }.discovery-hero h1 em { font-style:normal; color:#ddeaab; }.discovery-hero-content > p:not(.eyebrow) { font-size:.98rem; line-height:1.9; color:#e1e9dc; margin:0; }
.hero-assurances { display:flex; flex-wrap:wrap; gap:22px; margin-top:30px; font-size:.72rem; color:#d9e6d5; }.hero-assurances span { display:flex; align-items:center; gap:8px; }.hero-assurances .icon { width:18px; height:18px; color:#dceaab; }.hero-image-caption { position:absolute; top:28px; right:30px; color:#eef3e7; font-size:.58rem; text-shadow:0 1px 6px #10281c; }
.hero-search { position:absolute; left:40px; right:40px; bottom:34px; display:grid; grid-template-columns:1fr 1fr 1fr auto; align-items:center; gap:16px; padding:24px; border-radius:17px; background:#fff; color:var(--ink); box-shadow:0 12px 32px #0826162a; margin:0; }.hero-search label { display:block; font-size:.69rem; color:#69796b; font-weight:600; margin-bottom:7px; }.hero-search .form-select,.hero-search .form-control { border:0; background-color:#f5f7f2; height:48px; min-width:0; }.hero-search > div { min-width:0; }.hero-search > button { display:flex; justify-content:center; align-items:center; gap:8px; height:48px; margin-top:25px; padding-inline:25px; }.hero-search .icon { width:18px; height:18px; }.discovery-search-note { text-align:center; color:#627368; font-size:.72rem; margin:16px 0 0; }
.discovery-sports { padding-top:64px; }.section-heading { margin-bottom:26px; gap:20px; }.section-heading h2 { font-size:clamp(1.5rem,2.65vw,2.05rem); font-weight:650; }.section-heading > .muted { font-size:.8rem; }.section-heading .eyebrow { margin-bottom:10px; }
.sport-grid { gap:18px; }.sport-photo-card { position:relative; isolation:isolate; height:250px; border-radius:17px; overflow:hidden; display:block; background:#24503c; color:#fff; }.sport-photo-card > img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .22s; z-index:-2; }.sport-photo-card > img.badminton { object-position:50% 27%; }.sport-photo-card > img.basketball { object-position:50% 35%; }.sport-photo-shade { position:absolute; inset:0; background:linear-gradient(0deg,rgba(5,34,24,.85),rgba(5,34,24,0) 80%); z-index:-1; }.sport-photo-copy { position:absolute; left:22px; bottom:24px; right:44px; }.sport-photo-copy strong { display:block; font-size:1.4rem; font-weight:650; letter-spacing:-.035em; }.sport-photo-copy small { display:block; margin-top:6px; color:#e5eddf; font-size:.7rem; }.sport-photo-arrow { position:absolute; right:19px; bottom:27px; width:28px; height:28px; display:grid; place-items:center; border:1px solid #ffffff50; border-radius:50%; font-size:.9rem; }.sport-photo-card:hover { color:white; text-decoration:none; }.sport-photo-card:hover img { transform:scale(1.035); }.editorial-note { color:#6b7a6c; font-size:.65rem; margin:12px 0 0; }
.discovery-results { padding-top:58px; }.results-count { padding:8px 13px; background:#e9efe3; color:#435b40; border-radius:99px; font-size:.74rem; white-space:nowrap; }.refined-filters { padding:20px 24px; margin:0 0 28px; background:#fff; border-radius:15px; box-shadow:none; }.refined-filters .search-disclosure > summary { font-size:.8rem; margin-bottom:18px; font-weight:600; }.refined-filters .search-disclosure:not([open]) > summary { margin:0; }.discovery-filter-form { display:grid; grid-template-columns:1.5fr 1fr 1fr auto; align-items:end; gap:18px; }.discovery-filter-form > div { min-width:0; }.discovery-filter-form .form-control { height:46px; min-height:46px; background:#fafbf8; }.filter-actions { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }.filter-actions .btn { height:46px; }.filter-reset { font-size:.74rem; color:#697b6c; white-space:nowrap; }.results-date { color:#5c745f; font-size:.76rem; padding:0 2px 18px; }
.discovery-court-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px 24px; }.court-card { border-radius:18px; border-color:#e3e9df; box-shadow:0 3px 12px #143b2603; }.court-card:hover { transform:translateY(-3px); box-shadow:0 12px 34px #143b260b; }.card-art { display:block; height:250px; background:#eaf0e5; }.card-art:hover { text-decoration:none; }.card-photo { transition:transform .22s; }.court-card:hover .card-photo { transform:scale(1.025); }.sport-tag { top:16px; left:16px; padding:6px 12px; font-size:.65rem; color:#1c492e; background:#fffaf2f2; border:1px solid #ffffff70; }
.card-body { padding:23px; }.court-area { display:flex; align-items:center; gap:5px; color:#5a755d; font-size:.7rem; margin-bottom:9px; }.court-area .icon { width:13px; height:13px; }.court-card h3 { font-size:1.14rem; letter-spacing:-.03em; font-weight:650; }.court-card h3 a { color:#193c2b; }.court-card h3 a:hover { color:#08745c; }.address { font-size:.78rem; line-height:1.7; margin:10px 0 12px; min-height:42px; }.card-rating { min-height:22px; font-size:.72rem; margin-bottom:18px; color:#6c7d6b; }.card-rating .stars { color:#b39337; }.card-availability { color:#08745c; font-size:.72rem; background:#edf5ed; padding:8px 10px; border-radius:8px; }
.court-card-footer { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:auto; border-top:1px solid #edf0e9; padding-top:17px; }.court-card-footer .price { display:block; font-size:1.35rem; letter-spacing:-.035em; color:#173f2b; }.court-card-footer small { font-size:.66rem; }.court-card-cta { display:flex; align-items:center; gap:10px; font-size:.77rem; font-weight:600; color:#08745c; white-space:nowrap; }.court-card-cta span { width:30px; height:30px; display:grid; place-items:center; background:#edf4e8; border-radius:50%; font-size:1rem; }
.photo-placeholder { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; background:#eaf0e5; color:#61765e; padding:20px; font-size:.74rem; }.photo-placeholder .icon { width:44px; height:44px; opacity:.65; }.photo-placeholder.is-image-fallback { display:none; }.image-failed .photo-placeholder.is-image-fallback { display:flex; }.court-image-error { display:grid; place-items:center; position:absolute; inset:0; background:#eaf0e5; color:#5e735d; padding:24px; font-size:.82rem; text-align:center; }
.step-grid { gap:22px; }.step-grid article { padding:32px; border-radius:18px; background:#f1f4eb; border:0; }.step-grid .icon { margin-bottom:28px; color:#376f4c; width:28px; height:28px; }.step-number { color:#93a788; top:24px; right:24px; font-weight:500; }.step-grid h3 { font-size:1rem; letter-spacing:-.025em; }.step-grid p { font-size:.8rem; line-height:1.8; }
.owner-invitation { display:grid; grid-template-columns:1fr 1fr; border-radius:23px; overflow:hidden; margin:38px 0 72px; background:#123e2e; color:white; }.owner-invitation-photo { position:relative; min-height:400px; }.owner-invitation-photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }.owner-invitation-photo::after { content:''; position:absolute; inset:0; background:linear-gradient(0deg,#0a2a22a0,transparent 80%); }.owner-invitation-photo > span { position:absolute; bottom:28px; left:30px; right:24px; z-index:1; color:#f0f3dc; letter-spacing:.12em; font-size:.59rem; }.owner-invitation > div:last-child { padding:48px; }.owner-invitation .eyebrow { color:#deecab; }.owner-invitation h2 { color:#fff; font-size:clamp(1.7rem,2.7vw,2.35rem); margin:20px 0; }.owner-invitation p { color:#d2dfce; font-size:.86rem; line-height:1.8; }.owner-invitation .btn { margin-top:6px; }.owner-invitation details { margin-top:25px; }.owner-invitation summary { color:#dbe6d4; font-size:.72rem; cursor:pointer; }.owner-invitation details p { font-size:.75rem; margin:12px 0 0; }
.is-search .discovery-hero { min-height:490px; }.is-search .discovery-hero-content { padding:48px 52px 170px; }.is-search .discovery-hero h1 { font-size:3rem; }.is-search .hero-assurances { display:none; }.is-search .discovery-results { padding-top:35px; }

/* Detail / gallery / schedule */
.court-detail-header { margin-bottom:22px; }.court-detail-header h1 { font-size:clamp(2rem,3.6vw,3.1rem); font-weight:650; }.court-detail-rate { padding:20px 24px; border:1px solid #dce5d6; background:#f0f4e9; border-radius:16px; min-width:200px; }.court-detail-rate strong { color:#17452e; font-size:1.9rem; }.court-detail-rate .muted { font-size:.72rem; }.court-detail-sport { background:#e4eddb; color:#365e32; }.court-detail-status { font-size:.69rem; }.court-message-action { margin:0 0 24px; }.court-message-action form .muted { font-size:.74rem; }
.court-page-tabs { display:flex; gap:28px; align-items:center; flex-wrap:wrap; padding:19px 2px; margin-bottom:24px; border-top:1px solid #dfe6d8; border-bottom:1px solid #dfe6d8; }.court-page-tabs a { font-size:.79rem; color:#4d6952; font-weight:600; }.court-page-tabs a:hover { color:#08745c; }
.court-photo-section.has-gallery { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); gap:14px; }.court-main-photo,.court-photo-section.has-gallery .court-main-photo { height:440px; border-radius:19px; }.court-photo-thumbs { margin:0; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; max-height:440px; overflow:auto; align-content:start; }.court-photo-thumbs a { position:relative; display:block; min-height:205px; border-radius:13px; overflow:hidden; background:#eaf0e5; }.court-photo-thumbs img { height:100%; min-height:205px; border-radius:13px; }.court-photo-caption { font-size:.7rem; border-radius:8px; right:17px; bottom:17px; }
.court-quick-facts { padding:25px 28px; border:0; border-radius:17px; background:#eef2e7; margin:22px 0 30px; }.court-quick-facts span { color:#6a7b64; font-size:.67rem; }.court-quick-facts strong { color:#294b32; font-size:.86rem; }.court-sidebar { top:112px; }.court-price-panel { border-top:3px solid #244f32; }.court-price-panel h2,.court-policy-panel h2 { font-size:1.35rem; }.court-date-filter { background:#eff3e9; border-radius:13px; padding:20px; }.court-selected-date strong { font-size:.92rem; }
.slot-grid { gap:13px; }.slot { border-radius:13px; padding:17px; }.slot.available { background:#f0f7ec; border-color:#c2d9b9; }.slot.available:hover { border-color:#7ba67a; }.slot.unavailable { background:#f6f7f3; color:#74816f; border-color:#e9ece3; }.slot.unavailable .court-slot-price { color:#798373; }.court-slot-state { font-size:.67rem; }.slot .btn { font-size:.7rem; }.court-slot-price { color:#225c39; font-size:.95rem; }.review-score { background:#edf3e5; border-radius:13px; padding:16px 22px; }.review-verified { color:#5a764d; }.court-no-photo { border:1px dashed #b7c8ae; background:#edf2e6; min-height:320px; }
/* Personal workspace, confirmation and payment */
.my-bookings-heading,.order-detail-heading,.account-heading,.court-editor-heading,.cf-heading { margin-bottom:32px; }.my-bookings-heading h1,.order-detail-heading h1,.account-heading h1,.court-editor-heading h1,.cf-heading h1 { font-size:clamp(1.9rem,3.2vw,2.65rem); font-weight:650; }
.workspace-section-note { display:flex; align-items:center; gap:13px; padding:18px 22px; background:#eaf0e1; color:#496343; border-radius:13px; font-size:.78rem; margin-bottom:24px; }.workspace-section-note .icon { color:#5d7d4f; }.my-bookings-guide { border:0; padding:26px; background:white; gap:28px; box-shadow:var(--shadow); }.my-guide-number { background:#edf2df; color:#496232; }.my-bookings-guide strong { font-size:.85rem; }.my-bookings-guide p { font-size:.73rem; line-height:1.8; }
.reservation-intro { display:flex; flex-wrap:wrap; gap:14px 30px; margin-bottom:26px; color:#657c62; font-size:.68rem; letter-spacing:.04em; }.order-facts,.cf-facts { border:0; background:#f0f4e9; border-radius:13px; padding:24px; }.order-detail-page .col-lg-4 > .surface { border-top:3px solid #245734; }.order-total > strong { color:#1c4e30; font-size:2.7rem; font-weight:600; }.order-payment-note,.cf-payment-method { background:#ebf3e3; color:#43613b; }.order-actions { border-color:#e1e8d8; }
.deposit-panel { border-top:3px solid #3c7750; }.deposit-policy { border:0; background:#eff4e6; padding:22px; border-radius:12px; }.deposit-qr-layout { gap:30px; padding:24px; border:1px solid #dce7d3; border-radius:17px; background:#f9fbf5; }.deposit-qr { border:0; border-radius:9px; padding:12px; box-shadow:0 3px 14px #213e2510; }.deposit-transfer-info dt { font-size:.7rem; }.deposit-transfer-info dd { color:#294e31; font-size:.87rem; }.deposit-transfer-info .deposit-amount { font-size:1.4rem; }.copy-button { border-color:#d1dec5; border-radius:8px; background:#fff; }.deposit-warning,.deposit-alert { background:#faf5e6; border-color:#e9dfbb; color:#765c29; }
.status-pill { font-size:.65rem; padding:7px 11px; border-radius:99px; font-weight:600; }.status-pill.pending { background:#f8efd8; color:#806021; }.status-pill.cancelled { background:#f7eae6; color:#944e3e; }.status-pill.completed { background:#e7f0e0; color:#426d33; }
.table-responsive { border:1px solid #e7ebdf; border-radius:13px; }.table { margin:0; --bs-table-bg:white; }.table th { background:#f1f4eb; padding:16px 17px; color:#62735b; font-size:.64rem; text-transform:uppercase; letter-spacing:.055em; font-weight:600; }.table td { padding:20px 17px; border-color:#edf0e7; font-size:.8rem; }.table tbody tr:hover { --bs-table-bg:#fbfcf8; }.booking-history-name,.owner-court-info a { font-weight:600; }.booking-history-payment > strong { font-weight:650; }.needs-deposit-check td:first-child { border-left-color:#b5a44c; }
.cf-steps { padding:0 0 28px; margin-bottom:4px; }.cf-step { font-size:.75rem; }.cf-step b { background:#edf2e2; color:#5c7448; }.cf-step-current b { background:#225c3a; color:white; }.cf-total { color:#17452e; }.account-profile { border-top:3px solid #426e3f; }.account-avatar { background:#ecf2e2; color:#476e3c; border-radius:50%; }.account-profile-name { font-size:1.45rem; }.account-info-list > div { border-color:#e7ecdf; }.account-security-note { background:#eff3e8; }
/* Authentication retains the 44px Google button. */
.login-layout { max-width:1160px; border-radius:24px; box-shadow:0 16px 50px #183c2e09; }.login-showcase { background:linear-gradient(180deg,#0d3824d9,#0d382450 55%,#0d3824cd),url('../images/editorial/hero.jpg') 47% center/cover; }.login-showcase h1 { font-weight:600; }.login-kicker { color:#dbe7ac; }.login-panel-heading .eyebrow { color:#668150; }.login-form .login-submit { background:#1b6547; border-color:#1b6547; }.login-form .login-submit:hover { background:#154f37; border-color:#154f37; }.login-form .form-control { border-color:#dbe4d4; }.login-form .form-control:focus { border-color:#549265; box-shadow:0 0 0 3px #54926514; }.login-google { width:44px; height:44px; }.login-google svg { width:20px; height:20px; }.login-register a { color:#2c6a40; }.register-page .login-panel { padding-block:42px; }.register-symbol { display:none; }.register-page .login-benefits { gap:25px; margin-top:50px; }.register-page .login-benefits span { border-color:#deed9d40; color:#e0edb0; border-radius:50%; }.register-page .login-payment-note { background:#f2f5eb; padding:17px; }.register-page .login-showcase-footer { margin-top:80px; }
/* Owner dashboard */
.owner-workspace { grid-template-columns:215px minmax(0,1fr); gap:28px; }.owner-navigation { background:#173e2b; border:0; padding:20px 13px; border-radius:18px; top:112px; }.owner-navigation-brand { color:#edf3df; font-weight:600; padding-bottom:26px; }.owner-navigation-brand:hover { color:white; }.owner-navigation-brand span { color:#b9cbb6; }.owner-section-links a { color:#d0ddc9; font-size:.76rem; padding:12px; font-weight:500; }.owner-section-links a:hover { background:#ffffff12; color:#e5edb6; }.owner-navigation-note { color:#b8cbb3; border-color:#ffffff16; font-size:.67rem; line-height:1.8; }.owner-navigation > summary { color:#eef3df; }
.owner-dashboard-heading h1 { font-size:clamp(1.65rem,2.7vw,2.25rem); font-weight:650; }.owner-dashboard-heading .muted { font-size:.83rem; }.owner-stat-grid { gap:16px; }.owner-stat-card { border-radius:16px; padding:23px; }.owner-stat-card > strong { font-size:2rem; font-weight:600; letter-spacing:-.04em; }.owner-stat-card > small { font-size:.65rem; }.owner-stat-label { font-size:.73rem; }.owner-stat-revenue { background:#173e2b; }.owner-stat-revenue > strong { color:#deed9d; }.owner-revenue-summary { border:0; background:#eff4e7; border-radius:14px; }.owner-revenue-summary > strong { color:#2b613b; font-weight:600; }.owner-filter-panel { background:#fff; }.owner-period,.owner-count-badge { background:#edf2e3; color:#526f41; }.owner-court-actions .btn { font-size:.7rem; }.court-editor-peak,.court-editor-upload { background:#f5f8ef; border-color:#d8e2cb; }.court-editor-active { background:#edf4e5; }.court-editor-section-heading h2 { font-size:1.22rem; }.court-editor-number { background:#ebf0df; color:#597441; }
/* Clearly labelled AI and owner messages remain in the same chat. */
.sn-chat-launch { background:#194d33; box-shadow:0 6px 24px #0e322524; border-color:#ffffff25; }.sn-chat-heading { background:#173e2b; }.sn-chat-panel { border:1px solid #d6e2ce; box-shadow:0 18px 65px #163c2924; border-radius:21px; }.sn-chat-tools button { color:#356044; border-color:#d6e2cd; background:#fafcf5; }.sn-chat-notice { background:#f5f8ef; color:#607659; }.sn-chat-peer { color:#486d43; }.sn-chat-bot { background:#f0f4e8; color:#345030; }.sn-chat-bot .sn-chat-author { color:#627944; }.sn-chat-owner { background:#e1efe5; border:1px solid #b6d1bf; color:#214f36; }.sn-chat-owner .sn-chat-author { color:#1a6441; }.sn-chat-user { background:#1b6547; color:white; }.sn-chat-user .sn-chat-author { color:#dcebd4; }.sn-chat-form button { background:#1b6547; }.sn-chat-form textarea { border-color:#dbe4d3; }.sn-chat-suggestions button { border-color:#dce5d1; color:#4e6e40; }.sn-chat-choice { border-color:#d9e4cf; }.sn-chat-choice:hover { background:#f4f7eb; }.sn-chat-choice strong { color:#2c5130; }

/* Responsive layout */
@media(min-width:1100px) { .order-detail-page .col-lg-4 > .surface,.confirm-page .col-lg-4 > .cf-card { position:sticky; top:112px; } }
@media(max-width:1199px) {
 .container { padding-inline:28px; }.nav-links { gap:15px; font-size:.75rem; }.brand { font-size:1.5rem; }
 .discovery-hero-content { padding-inline:48px; }.hero-search { left:28px; right:28px; gap:12px; padding:20px; }
 .discovery-court-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }.discovery-filter-form { grid-template-columns:1.35fr 1fr 1fr; }.filter-actions { grid-column:1/-1; }
 .sport-photo-card { height:225px; }.sport-photo-copy { left:17px; right:36px; }.sport-photo-copy strong { font-size:1.2rem; }.sport-photo-copy small { font-size:.64rem; }
 .owner-workspace { grid-template-columns:190px minmax(0,1fr); gap:22px; }.owner-stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.owner-invitation > div:last-child { padding:36px; }
}
@media(max-width:991px) {
 .nav-bar { min-height:76px; }.brand-wordmark small { font-size:.42rem; }
 .discovery-hero { min-height:630px; }.discovery-hero-content { padding:56px 36px 210px; }.discovery-hero h1 { font-size:3.5rem; }
 .hero-search { grid-template-columns:1fr 1fr; bottom:24px; gap:15px; }.hero-search > button { margin-top:24px; }.hero-image-caption { font-size:.51rem; }.hero-assurances { gap:14px; font-size:.67rem; }
 .sport-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.sport-photo-card { height:240px; }
 .owner-workspace { display:block; }.owner-navigation { position:static; margin-bottom:24px; }.owner-navigation > summary { font-size:.83rem; }.owner-navigation-brand { display:none; }.owner-section-links { flex-direction:row; flex-wrap:wrap; margin-top:15px; gap:5px; }.owner-navigation-note { display:none; }
 .court-main-photo,.court-photo-section.has-gallery .court-main-photo { height:350px; }.court-photo-thumbs { max-height:350px; }.court-photo-thumbs a,.court-photo-thumbs img { min-height:166px; }
 .court-sidebar { position:static; }.court-detail-rate { min-width:170px; padding:17px; }
 .owner-invitation { grid-template-columns:.9fr 1.1fr; }.owner-invitation h2 { font-size:1.8rem; }.is-search .discovery-hero { min-height:570px; }.is-search .discovery-hero-content { padding-bottom:230px; }.site-footer .footer-grid { gap:32px; }
}
@media(max-width:767px) {
 .container { padding-inline:20px; }.page-space { padding-block:28px 48px; }.home-page { padding-top:16px; }
 .brand-mark { width:39px; height:39px; }.brand { font-size:1.45rem; }.nav-bar { gap:14px; }
 .discovery-hero { border-radius:20px; min-height:660px; }.discovery-hero-content { padding:50px 26px 270px; }
 .discovery-hero h1 { font-size:clamp(2.65rem,8vw,3.5rem); }.discovery-hero .eyebrow { font-size:.56rem; margin-bottom:20px; }.discovery-hero-content > p:not(.eyebrow) { font-size:.82rem; line-height:1.85; }.hero-assurances { margin-top:20px; gap:12px; font-size:.6rem; }
 .hero-image-caption { top:17px; right:18px; font-size:.44rem; }.discovery-hero-shade { background:linear-gradient(90deg,#082d21d9,#082d2159); }
 .hero-search { left:16px; right:16px; padding:17px; border-radius:13px; bottom:18px; gap:13px 11px; }.hero-search label { font-size:.62rem; }.hero-search .form-control,.hero-search .form-select { height:46px; font-size:.77rem; padding:10px; }.hero-search > button { height:46px; padding-inline:12px; font-size:.8rem; }
 .discovery-search-note { font-size:.64rem; text-align:left; margin:13px 4px 0; line-height:1.8; }.discovery-sports { padding-top:38px; }.section-heading { margin-bottom:21px; gap:12px; }.section-heading h2 { font-size:1.5rem; }.section-heading > .muted { font-size:.73rem; }
 .sport-grid { gap:13px; }.sport-photo-card { height:210px; border-radius:13px; }.sport-photo-copy { left:15px; bottom:18px; right:28px; }.sport-photo-copy strong { font-size:1.15rem; }.sport-photo-copy small { font-size:.6rem; }.sport-photo-arrow { width:22px; height:22px; right:11px; bottom:20px; font-size:.7rem; }.editorial-note { font-size:.61rem; line-height:1.7; }
 .discovery-results { padding-top:38px; }.results-count { padding:6px 10px; font-size:.67rem; }.refined-filters { padding:17px; border-radius:13px; }.refined-filters .search-disclosure > summary { font-size:.74rem; gap:8px; }.search-disclosure > summary > span { font-size:.62rem; }.discovery-filter-form { grid-template-columns:1fr 1fr; gap:14px; }.discovery-filter-form > div:first-of-type { grid-column:1/-1; }.filter-actions { gap:16px; }.filter-actions .btn { flex:1; }
 .discovery-court-grid { grid-template-columns:minmax(0,1fr); gap:22px; }.card-art { height:245px; }.card-body { padding:21px; }.court-card-footer .price { font-size:1.4rem; }.court-card { border-radius:16px; }
 .step-grid { gap:14px; grid-template-columns:1fr; }.step-grid article { padding:25px; }.step-grid .icon { margin-bottom:18px; }.step-grid h3 { font-size:1.03rem; }.section-space { padding-block:32px; }
 .owner-invitation { grid-template-columns:1fr; margin:20px 0 45px; border-radius:18px; }.owner-invitation-photo { min-height:230px; }.owner-invitation > div:last-child { padding:30px; }.owner-invitation h2 { font-size:1.95rem; }.owner-invitation-photo > span { left:23px; bottom:23px; font-size:.51rem; }.owner-invitation details p { font-size:.7rem; }
 .is-search .discovery-hero { min-height:580px; }.is-search .discovery-hero-content { padding:48px 26px 245px; }.is-search .discovery-hero h1 { font-size:2.65rem; }
 .court-detail-header { align-items:flex-start; flex-direction:column; gap:18px; }.court-detail-header h1 { font-size:2rem; }.court-detail-rate { text-align:left; width:100%; display:flex; align-items:center; flex-wrap:wrap; gap:8px 16px; padding:17px 20px; }.court-detail-rate strong { font-size:1.6rem; }
 .court-page-tabs { gap:13px 20px; padding:16px 2px; margin-bottom:20px; }.court-page-tabs a { font-size:.7rem; }
 .court-photo-section.has-gallery { display:block; }.court-main-photo,.court-photo-section.has-gallery .court-main-photo { height:300px; border-radius:14px; }.court-photo-thumbs { margin-top:10px; display:flex; max-height:105px; overflow:auto; gap:10px; }.court-photo-thumbs a { min-width:130px; min-height:95px; height:95px; }.court-photo-thumbs img { min-height:95px; height:95px; }
 .court-quick-facts { padding:20px; grid-template-columns:1fr 1fr; gap:18px; }.court-quick-facts strong { font-size:.78rem; }.court-message-action form,.court-message-action > a { width:100%; }.court-message-action .btn { width:100%; }.court-message-action .muted { font-size:.69rem; }
 .surface,.cf-card { padding:23px; border-radius:16px; }.court-date-filter { padding:16px; }.slot { padding:14px; }
 .my-bookings-heading h1,.order-detail-heading h1,.account-heading h1,.court-editor-heading h1,.cf-heading h1 { font-size:1.9rem; }.workspace-section-note { padding:16px; font-size:.72rem; align-items:flex-start; }.my-bookings-guide { grid-template-columns:1fr; gap:20px; padding:23px; }.my-bookings-guide > div { align-items:flex-start; }.my-bookings-guide p { margin-top:5px; }
 .deposit-qr-layout { padding:18px; gap:20px; }.deposit-transfer-info dd { font-size:.8rem; }.order-total > strong { font-size:2.2rem; }.reservation-intro { gap:10px 17px; font-size:.61rem; }.table-responsive { border:0; }.table td { padding:14px; }.booking-history-table tbody { gap:16px; }.booking-history-table tr { border-radius:14px; border-color:#e0e7d8; }
 .login-page { padding-inline:20px; }.login-panel { padding:30px 26px; }.login-layout { border-radius:19px; }.login-showcase { padding:28px; }.login-showcase h1 { font-size:1.95rem; }.register-page .login-panel { padding-block:30px; }
 .owner-navigation { padding:17px; border-radius:14px; }.owner-stat-card { padding:20px; }.owner-stat-card > strong { font-size:1.8rem; }.owner-stat-grid { gap:12px; }
 .footer-grid { padding-block:36px 28px; }.site-footer { margin-top:28px; }.footer-bottom { padding-block:21px; font-size:.64rem; }
}
@media(max-width:359px) {
 .container { padding-inline:14px; }.brand-wordmark small { display:none; }.hero-search { grid-template-columns:minmax(0,1fr); gap:10px; }.hero-search > button { margin-top:0; }.hero-search label { margin-bottom:4px; }.hero-search .form-control,.hero-search .form-select { height:43px; min-height:43px; }.discovery-hero { min-height:810px; }.discovery-hero-content { padding:46px 23px 410px; }.discovery-hero h1 { font-size:2.5rem; }.hero-assurances { display:none; }.is-search .discovery-hero { min-height:740px; }.is-search .discovery-hero-content { padding:46px 23px 410px; }
 .sport-photo-card { height:190px; }.sport-photo-copy strong { font-size:1rem; }.sport-photo-copy { left:12px; right:20px; }.sport-photo-arrow { display:none; }.hero-image-caption { font-size:.4rem; }.refined-filters .search-disclosure > summary > span { display:none; }
 .login-page { padding-inline:14px; }.court-card-footer .price { font-size:1.2rem; }.court-card-cta { font-size:.72rem; }.owner-stat-card { padding:17px; }.owner-stat-label { font-size:.68rem; }
}
@media(prefers-reduced-motion:reduce) {
 .sport-photo-card > img,.card-photo,.btn,.court-card { transition:none; }.sport-photo-card:hover img,.court-card:hover,.court-card:hover .card-photo { transform:none; }
}

/* Contrast and unobstructed mobile actions. */
.form-control::placeholder { color:#6b7969; }.card-rating { color:#5c6d59; }
.slot.unavailable,.slot.unavailable .court-slot-price { color:#62715d; }
.step-number { color:#74896a; }.photo-placeholder { color:#526b4e; }
.sn-chat-bubble time { opacity:1; color:#60745a; }.sn-chat-user time { color:#dcebd4; }.sn-chat-bot .sn-chat-author { color:#526c3b; }
@media(max-width:767px) {
 .sn-chat-launch { width:52px; height:52px; min-height:52px; padding:0; border-radius:50%; }
 .sn-chat-launch > span { display:none; }
 .mobile-schedule-link { right:84px; min-height:52px; padding:10px 15px; justify-content:center; gap:8px; font-size:.78rem; border-radius:13px; }
 .mobile-schedule-link .icon { width:18px; height:18px; }
}

.court-photo-thumbs a { height:214px; }.court-photo-thumbs img { height:100%; min-height:0; }
.court-photo-thumbs:has(> a:nth-child(2):last-child) { grid-template-columns:1fr; }
@media(min-width:768px) and (max-width:991px) { .court-photo-thumbs a { height:169px; min-height:169px; }.court-photo-thumbs img { min-height:0; } }
@media(max-width:767px) { .court-photo-thumbs a { height:95px; min-height:95px; }.court-photo-thumbs img { height:95px; min-height:95px; } }
