:root{--bg:#081521;--surface:#0f2738;--surface-alt:#16344c;--border:#22455f;--border-brass:#5c4a28;--ink:#f2ecdd;--ink-muted:#9fb3c4;--accent:#c9a24b;--accent-ink:#c9a24b;--accent-bright:#d9b868;--on-accent:#081521;--danger:#d2553f;--danger-text:#e0795f;--success:#5ba17c;--r-sm:8px;--r-md:12px;--r-lg:16px;--tap:44px}[data-theme=light]{--bg:#f2f4f7;--surface:#fff;--surface-alt:#e7ecf1;--border:#d3dbe3;--border-brass:#d9c48f;--ink:#0f2738;--ink-muted:#51647a;--accent:#c9a24b;--accent-ink:#8a6a1a;--accent-bright:#b5882d;--on-accent:#0f2738;--danger:#c0432f;--danger-text:#b23a28;--success:#2f7d54}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[x-cloak]{display:none!important}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}h1,h2,h3,.race-view>h1{letter-spacing:-.01em;text-wrap:balance;margin:0 0 .5rem;font-family:Fraunces,Georgia,serif;font-weight:600}.results td,.results th,.clock,#scrubber,.stat-value{font-variant-numeric:tabular-nums}.topbar{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.brand{letter-spacing:-.01em;color:var(--ink);font-family:Fraunces,Georgia,serif;font-size:1.375rem;font-weight:600;text-decoration:none}.brand:hover{color:var(--accent-ink)}.topbar-nav{align-items:center;gap:1rem;display:flex}.text-link{color:var(--ink-muted);font-size:.9375rem;font-weight:600;text-decoration:none;transition:color .16s ease-out}.text-link:hover{color:var(--accent-ink)}.text-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.container{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.field{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-alt);color:var(--ink);padding:.75rem 1rem;font-family:inherit;font-size:1rem;transition:border-color .18s ease-out}.field::placeholder{color:var(--ink-muted)}.field:focus{border-color:var(--accent);outline:none}.field:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-brass,.tabs button{min-height:var(--tap);border-radius:var(--r-md);background:var(--accent);color:var(--on-accent);cursor:pointer;border:0;justify-content:center;align-items:center;padding:.75rem 1.25rem;font-family:inherit;font-size:1rem;font-weight:600;text-decoration:none;transition:background-color .16s ease-out,transform .12s ease-out;display:inline-flex}.btn-brass:hover,.tabs button:hover{background:var(--accent-bright)}.btn-brass:active{transform:scale(.98)}.btn-brass:focus-visible,.tabs button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.error{color:var(--danger-text);margin-top:.75rem;font-size:.875rem}.landing{flex-direction:column;gap:clamp(3rem,8vw,5.5rem);display:flex}.hero{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:clamp(1.5rem,5vw,3.5rem);padding-top:clamp(1.5rem,6vw,4rem);display:grid}.hero-copy{min-width:0}.hero h1{letter-spacing:-.02em;margin:0 0 1rem;font-size:clamp(2.25rem,5.5vw,3.75rem);line-height:1.05}.lead{color:var(--ink-muted);text-wrap:pretty;max-width:48ch;margin:0 0 1.75rem;font-size:1.0625rem;line-height:1.6}.code-form{flex-wrap:wrap;gap:.75rem;margin:0;display:flex}.code-form .field{flex:14rem}.hero-aside{color:var(--ink-muted);margin:1.25rem 0 0;font-size:.9375rem}.hero-aside .text-link{font-size:inherit}.store-cta{margin:1.75rem 0 0}.store-cta-label{color:var(--ink-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .625rem;font-size:.8125rem;display:block}.store-badges{flex-wrap:wrap;gap:.75rem;display:flex}.store-badge{min-height:var(--tap);border-radius:var(--r-md);border:1px solid var(--accent);color:var(--ink);background:0 0;flex-direction:column;justify-content:center;padding:.5rem 1.1rem;text-decoration:none;transition:background-color .16s ease-out,transform .12s ease-out;display:inline-flex}.store-badge:hover{background:#c9a24b1f}.store-badge:active{transform:scale(.98)}.store-badge:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.store-badge-top{color:var(--ink-muted);font-size:.6875rem;line-height:1.2}.store-badge-name{font-size:1.0625rem;font-weight:600;line-height:1.2}.store-badge.is-soon{border-style:dashed;border-color:var(--ink-muted);opacity:.6;cursor:default}.store-badge.is-soon:hover{background:0 0}.hero-art{aspect-ratio:11/10;width:100%;min-width:0;max-width:460px;margin-inline:auto}.hero-art svg{width:100%;height:100%;display:block}.steps h2{margin:0 0 1.75rem;font-size:clamp(1.5rem,3vw,2rem)}.step-list{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin:0;padding:0;list-style:none;display:grid}.step{min-width:0}.step-n{border:1px solid var(--border-brass);width:2.25rem;height:2.25rem;color:var(--accent-ink);border-radius:50%;justify-content:center;align-items:center;margin-bottom:.75rem;font-family:Fraunces,Georgia,serif;font-size:1.125rem;font-weight:600;display:inline-flex}.step h3{margin:0 0 .375rem;font-size:1.125rem}.step p{color:var(--ink-muted);margin:0;font-size:.9375rem;line-height:1.55}.clubs-band{background:var(--surface);border:1px solid var(--border);border-top:2px solid var(--border-brass);border-radius:var(--r-lg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem 2rem;padding:clamp(1.5rem,4vw,2.5rem);display:flex}.clubs-copy{min-width:0;max-width:52ch}.clubs-copy h2{margin:0 0 .5rem;font-size:1.375rem}.clubs-copy p{color:var(--ink-muted);margin:0;font-size:.9375rem;line-height:1.55}@media (width<=720px){.hero{grid-template-columns:1fr}.hero-art{order:-1;max-width:300px}.topbar{flex-wrap:wrap;gap:.5rem .75rem;padding:.625rem 1rem}.topbar-nav{flex-wrap:wrap;gap:.5rem .75rem}#map{height:50vh;max-height:420px}}.race-code-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 .375rem;font-size:.75rem;font-weight:600}.race-code{font-variant-numeric:tabular-nums;letter-spacing:.12em;color:var(--accent-ink);margin-left:.5rem}.race-code-copy{border:1px solid var(--border);color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:4px;margin-left:.5rem;padding:.15rem .4rem;font-family:inherit;font-size:.6875rem;font-weight:600;transition:color .16s ease-out,border-color .16s ease-out}.race-code-copy:hover{color:var(--ink);border-color:var(--accent)}.race-code-copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.race-view>h1{margin-bottom:.25rem;font-size:2rem}.race-view .venue{color:var(--ink-muted);margin:0 0 1.25rem;font-size:.9375rem}.club-heading{align-items:center;gap:1rem;margin:0 0 .75rem;display:flex}.club-logo{object-fit:contain;border-radius:var(--r-sm);background:var(--surface-alt);border:1px solid var(--border);flex-shrink:0;width:64px;height:64px}.club-heading h1{margin-bottom:.25rem;font-size:2rem}.club-heading .venue{margin:0}.club-blurb{color:var(--ink-muted);max-width:60ch;margin:0 0 1.5rem;font-size:.9375rem}.club-page .results h2{margin:0 0 .75rem;font-size:1.25rem}.club-page .results a{color:var(--accent-ink);font-weight:600;text-decoration:none}.club-page .results a:hover{color:var(--accent-ink)}.club-page .results a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.club-branding{color:var(--ink-muted);align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:color .16s ease-out;display:inline-flex}.club-branding:hover{color:var(--accent-ink)}.club-branding:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.club-branding img{object-fit:contain;border-radius:4px;width:24px;height:24px}.tabs{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--r-md);gap:0;margin:1rem 0;padding:4px;display:inline-flex}.tabs button{min-height:38px;color:var(--ink-muted);border-radius:var(--r-sm);background:0 0;padding:.5rem 1.25rem;font-weight:600}.tabs button:hover{color:var(--ink);background:0 0}.tabs button[aria-selected=true]{background:var(--accent);color:var(--on-accent)}.tabs button[aria-selected=true]:hover{background:var(--accent-bright)}.tab-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:1rem}.map-controls{flex-wrap:wrap;align-items:center;gap:1rem;margin:0 0 1rem;display:flex}.map-controls label{color:var(--ink-muted);cursor:pointer;align-items:center;gap:.5rem;font-size:.875rem;display:flex}.map-controls input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}#play-btn{min-height:var(--tap);border-radius:var(--r-md);background:var(--accent);color:var(--on-accent);cursor:pointer;border:0;padding:.625rem 1.125rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:background-color .16s ease-out,transform .12s ease-out}#play-btn:hover{background:var(--accent-bright)}#play-btn:active{transform:scale(.98)}#play-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}#speed-btn{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-alt);min-width:3.25rem;color:var(--accent-ink);font-variant-numeric:tabular-nums;cursor:pointer;padding:.625rem .875rem;font-family:inherit;font-size:.9375rem;font-weight:600;transition:border-color .16s ease-out}#speed-btn:hover{border-color:var(--accent)}#speed-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wind-indicator{border-left:1px solid var(--border);align-items:center;gap:.375rem;padding-left:.625rem;display:inline-flex}.speed-legend{border-left:1px solid var(--border);color:var(--ink-muted);font-variant-numeric:tabular-nums;align-items:center;gap:.4rem;padding-left:.625rem;font-size:.75rem;display:inline-flex}.speed-legend-bar{background:linear-gradient(90deg,#2c7bb6,#00a6ca,#a6d96a,#fdae61,#d7191c);border-radius:4px;width:90px;height:8px}#wind-arrow{transform-origin:50%;transition:transform .3s cubic-bezier(.22,1,.36,1)}.wind-indicator .clock{color:var(--accent-ink);min-width:0;font-size:.9375rem}#scrubber{appearance:none;background:var(--surface-alt);cursor:pointer;border-radius:999px;outline:none;flex:1;min-width:160px;height:6px}#scrubber::-webkit-slider-thumb{appearance:none;background:var(--accent);border:2px solid var(--bg);cursor:pointer;border-radius:50%;width:18px;height:18px;transition:background-color .16s ease-out}#scrubber::-webkit-slider-thumb:hover{background:var(--accent-bright)}#scrubber::-moz-range-thumb{background:var(--accent);border:2px solid var(--bg);cursor:pointer;border-radius:50%;width:18px;height:18px}#scrubber::-moz-range-track{background:var(--surface-alt);border-radius:999px;height:6px}#scrubber:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.clock{color:var(--ink);min-width:3.5em;font-size:1rem;font-weight:600}#map{border:1px solid var(--border);border-radius:var(--r-md);width:100%;height:60vh;overflow:hidden}.boat-marker{box-shadow:0 0 0 2px var(--ink)}.results-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.results table{border-collapse:collapse;width:100%}.results th,.results td{text-align:left;border-bottom:1px solid var(--border);padding:.625rem .75rem}.results th{color:var(--ink-muted);font-size:.8125rem;font-weight:600}.results th button{color:var(--ink-muted);cursor:pointer;background:0 0;border:0;padding:0;font-family:inherit;font-size:.8125rem;font-weight:600;transition:color .16s ease-out}.results th button:hover{color:var(--ink)}.results th button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.results td{color:var(--ink);font-size:.9375rem}.results-empty{text-align:center;color:var(--ink-muted);padding:2rem .75rem;font-size:.9375rem}.results td small{color:var(--ink-muted)}.results tbody tr{transition:background-color .16s ease-out}.results tbody tr:hover{background:#16344c73}.results tr[data-highlighted=true] td{background:var(--surface-alt)}.swatch{vertical-align:middle;border-radius:50%;width:12px;height:12px;margin-right:.375rem;transition:transform .16s ease-out;display:inline-block}.results tr[data-highlighted=true] .swatch{transform:scale(1.25)}.site-footer{border-top:1px solid var(--border);text-align:center;padding:1.25rem}.privacy-policy{max-width:68ch}.privacy-header{border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:1.5rem}.privacy-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 .75rem;font-size:.75rem;font-weight:600}.privacy-header h1{margin:0 0 .5rem;font-size:clamp(1.75rem,4vw,2.5rem)}.privacy-updated{color:var(--ink-muted);margin:0;font-size:.875rem}.privacy-section{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:2rem}.privacy-section:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}.privacy-section h2{color:var(--ink);margin:0 0 .875rem;font-size:1.25rem}.privacy-section p{color:var(--ink-muted);margin:0 0 .75rem;font-size:.9375rem;line-height:1.65}.privacy-section p:last-child{margin-bottom:0}.privacy-item{background:var(--surface);border:1px solid var(--border);border-left:2px solid var(--border-brass);border-radius:var(--r-sm);margin-bottom:.75rem;padding:1rem 1.25rem}.privacy-item:last-child{margin-bottom:0}.privacy-item h3{color:var(--ink);margin:0 0 .375rem;font-family:Inter,system-ui,sans-serif;font-size:.9375rem;font-weight:600}.privacy-item p{margin:0}.privacy-list{flex-direction:column;gap:.5rem;margin:.75rem 0 0;padding:0 0 0 1.25rem;display:flex}.privacy-list li{color:var(--ink-muted);padding-left:.25rem;font-size:.9375rem;line-height:1.55}.privacy-list li::marker{color:var(--accent-ink)}.privacy-email{color:var(--accent-ink);font-size:.9375rem;font-weight:600;text-decoration:none;transition:color .16s ease-out}.privacy-email:hover{color:var(--accent-bright)}.privacy-email:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
