@font-face{font-family:Onest;src:url('assets/onest.ttf') format('truetype');font-weight:100 900;font-display:swap}
:root{--ink:#13221a;--ink-soft:#536159;--paper:#f5f6f2;--white:#fff;--line:#dfe4dc;--lime:#a7f447;--lime-soft:#eaffcd;--purple:#7945de;--purple-soft:#eee6ff;--frame-width:1280px;--fixture-height:28px}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:Onest,Arial,sans-serif}button,select{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default}button:focus-visible,select:focus-visible{outline:3px solid var(--purple);outline-offset:4px}button,select{min-height:44px}button{touch-action:manipulation}svg{display:block}p{line-height:1.5}em{font-style:normal}.fixture-label{height:var(--fixture-height);display:flex;align-items:center;justify-content:center;background:var(--ink);color:#fff;font:500 10px Onest,Arial,sans-serif;letter-spacing:.025em;position:relative;z-index:1;white-space:nowrap}.product-frame{width:min(100%,var(--frame-width));margin:auto;min-height:calc(100svh - var(--fixture-height));position:relative;background:var(--paper);overflow:hidden}.app-header{height:84px;border-bottom:1px solid var(--line);padding:0 48px;display:flex;align-items:center;gap:64px}.app-header nav{display:flex;gap:32px;color:var(--ink-soft);font-size:14px}.app-header strong{color:var(--ink)}.account-initials{margin-left:auto;display:grid;place-items:center;background:var(--lime);width:40px;height:40px;border-radius:50%;font-size:12px;font-weight:650}.browse-main{padding:40px 64px}.browse-heading{display:flex;justify-content:space-between;align-items:center}.eyebrow,.small-label{font-size:11px;font-weight:650;letter-spacing:.12em}.eyebrow{color:var(--purple)}.browse-heading h1{font-size:44px;letter-spacing:-.05em;margin:8px 0}.browse-heading p{color:var(--ink-soft)}.view-pill{border-radius:24px;background:var(--ink);color:white;padding:14px 24px;font-size:13px}.browse-card{margin:28px auto 16px;width:min(800px,100%);display:grid;grid-template-columns:1fr 1fr;border-radius:28px;overflow:hidden;background:white;border:1px solid var(--line)}.court-photo{background:url('assets/badminton-courts.jpg') center/cover;min-height:360px}.browse-copy{padding:32px}.background-avatar{margin-top:30px;width:84px;height:84px;border-radius:50%;background:var(--purple-soft);display:grid;place-items:center;font-size:28px;color:var(--purple)}.browse-copy h2{font-size:26px;margin-bottom:0}.browse-copy p{font-size:14px;color:var(--ink-soft)}.browse-hint{text-align:center;color:var(--ink-soft);font-size:13px}.button{border:0;border-radius:12px;min-height:54px;padding:14px 20px;font-size:15px;font-weight:650;display:flex;justify-content:center;align-items:center;gap:12px;transition:background .16s,transform .16s}.primary{background:var(--lime)}.primary:hover:not(:disabled){background:#b7fa68}.primary:active:not(:disabled){transform:translateY(1px)}.match-dialog{padding:0;border:1px solid var(--line);width:600px;max-width:calc(100vw - 48px);max-height:calc(100dvh - 76px);color:var(--ink);border-radius:28px;background:var(--white);box-shadow:0 24px 80px #13221a30;overflow:auto;margin:auto;top:var(--fixture-height)}.match-dialog::backdrop{background:rgba(19,34,26,.56);backdrop-filter:blur(5px)}.match-dialog[open]{animation:match-in .18s cubic-bezier(.2,.8,.2,1)}.match-shell{padding:20px 32px 28px}.match-top{display:flex;justify-content:space-between;align-items:center;color:var(--ink-soft)}.close-button{width:44px;height:44px;flex:none;padding:10px;border:1px solid var(--line);border-radius:50%;background:var(--paper);display:grid;place-items:center}.close-button:hover{background:var(--purple-soft);color:var(--purple)}.match-intro{text-align:center;margin-top:6px}.result-pill{display:inline-flex;align-items:center;gap:6px;background:var(--lime-soft);border-radius:24px;padding:7px 11px;font-size:11px;font-weight:600}.result-pill svg{width:14px;height:14px}#matchTitle{font-size:58px;font-weight:750;line-height:.98;letter-spacing:-.055em;margin:20px auto 16px;max-width:100%;overflow-wrap:anywhere;outline:none}#matchTitle em{color:var(--purple)}#matchLead{font-size:15px;margin:0;color:var(--ink-soft)}.players-stage{position:relative;margin:20px 0 8px;padding:28px 12px 14px}.court-art{position:absolute;inset:0;width:100%;height:188px;color:#d8c8f2;fill:none;stroke:currentColor;stroke-width:1.3;background:linear-gradient(180deg,#f5f0ff,#fff);border-radius:18px}.court-art .rally-line{stroke:var(--purple);stroke-width:1.5;stroke-dasharray:4 7;opacity:.6}.player-pair{position:relative;display:grid;grid-template-columns:1fr 48px 1fr;align-items:start;gap:4px}.player{text-align:center;min-width:0}.match-avatar{width:112px;height:112px;margin:0 auto 12px;display:grid;place-items:center;border-radius:50%;border:6px solid var(--white);box-shadow:0 6px 18px #13221a12;font-size:34px;font-weight:600;letter-spacing:-.05em}.avatar-self{background:var(--lime);color:var(--ink)}.avatar-peer{background:var(--purple);color:var(--white)}.player-caption{display:block;font-size:11px;color:var(--ink-soft);margin-bottom:5px}.player strong{font-size:16px;font-weight:650;line-height:1.3;display:block;max-width:190px;margin:auto;overflow-wrap:anywhere}.rally-badge{width:48px;height:48px;margin-top:33px;background:var(--white);border:1px solid #e1d7f2;border-radius:50%;display:grid;place-items:center;transform:rotate(-12deg);color:var(--purple)}.rally-badge svg{width:36px;height:36px}.match-actions{max-width:400px;margin:0 auto;text-align:center}.contact-status{font-size:13px;color:var(--ink-soft);min-height:40px;margin:8px 0 12px;display:flex;align-items:center;justify-content:center;line-height:1.45}.contact-button{width:100%;min-height:56px}.contact-button svg{width:22px;height:22px}.button-arrow{margin-left:auto;font-size:23px;font-weight:400}.contact-button #contactLabel{margin-right:auto}.contact-button:disabled{background:var(--paper);color:var(--ink-soft);border:1px solid var(--line)}.secondary{background:transparent;width:100%;margin-top:8px;font-size:14px;min-height:48px}.secondary:hover{background:var(--paper)}.secondary span{font-size:20px}.match-footnote{font-size:11px;line-height:1.5;color:var(--ink-soft);margin:16px 0 0}.test-bench{padding:28px;max-width:1100px;margin:auto;border-top:1px dashed var(--line);font-size:13px}.test-bench h2{font-size:18px}.bench-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.bench-actions button,.bench-actions select{border:1px solid var(--line);border-radius:8px;background:white;padding:10px}.test-bench output{display:block;margin-top:16px;overflow-wrap:anywhere;color:var(--purple)}@keyframes match-in{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}@media(max-width:600px){.app-header{padding:0 20px;height:64px}.app-header nav{display:none}.browse-main{padding:24px 20px}.browse-heading h1{font-size:36px}.view-pill{display:none}.browse-card{display:block}.court-photo{min-height:180px}.match-dialog{width:min(100vw,var(--frame-width));max-width:100%;height:calc(100dvh - var(--fixture-height));max-height:calc(100dvh - var(--fixture-height));top:var(--fixture-height);bottom:0;border:0;border-radius:0;margin:0 auto;box-shadow:none;background:var(--paper)}.match-shell{min-height:100%;display:flex;flex-direction:column;padding:calc(14px + env(safe-area-inset-top)) 24px calc(20px + env(safe-area-inset-bottom))}.match-top{margin-bottom:20px}.close-button{background:var(--white)}.match-intro{margin-top:0}#matchTitle{font-size:52px;margin:22px 0 17px}#matchLead{font-size:14px;max-width:280px;margin:0 auto}.players-stage{margin:24px -8px 6px;padding:28px 0 12px}.court-art{height:180px;background:linear-gradient(180deg,#eee6ff,#f5f6f2)}.match-avatar{width:104px;height:104px;font-size:31px;border-width:5px}.player-pair{grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr);gap:0}.player strong{font-size:15px;max-width:135px}.rally-badge{width:38px;height:38px;margin-top:34px}.rally-badge svg{width:30px;height:30px}.match-actions{width:100%;margin-top:auto;padding-top:10px}.contact-status{min-height:38px;margin:8px 0 14px}.match-footnote{margin-top:18px}.secondary{min-height:48px;margin-top:8px}.fixture-label{font-size:8.5px;letter-spacing:0}.test-bench{padding:20px}.match-dialog[data-long-heading="true"] #matchTitle{font-size:44px}}@media(max-height:760px) and (max-width:600px){.match-top{margin-bottom:8px}#matchTitle{font-size:44px;margin:14px 0}.players-stage{margin-top:14px}.match-avatar{width:88px;height:88px}.court-art{height:156px}.rally-badge{margin-top:24px}.match-footnote{margin-top:10px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
