HANDBALL UNITED
The one-wall handball home. Courts, events, games, gear, and the players — everything you need, all in one place.
Services at the ready
Five pillars. One home for one-wall handball.
THE MAP
The Handball Courts — 560 courts. Find courts by park hashtag, borough, wall type, and more.
THE CALENDAR
Every exhibition and tournament date lives here. Never miss a game.
THE LIBRARY
Full games, breakdowns, highlights, and the HashMark Podcast.
THE STORE
Gear up. Gloves, balls, and more.
THE ROSTER
The players and their ranks. Singles, doubles, and overall.
.hu-section-title {
font-size: 1.05rem;
font-weight: 800;
letter-spacing: .08em;
line-height: 1.1;
margin: 0;
text-transform: uppercase;
}
.hu-section-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 16px;
margin-bottom: 12px;
}
.hu-section-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: .86rem;
font-weight: 700;
text-decoration: none;
white-space: nowrap;
color: var(--hu-muted);
transition: .2s ease;
}
.hu-section-link:hover {
opacity: .82;
transform: translateX(2px);
}
/* MAP */
.hu-section-map {
background: linear-gradient(180deg, var(--hu-green-tint-top) 0%, rgba(255,255,255,0.98) 40%, var(--hu-green-tint-bottom) 100%);
}
.hu-map-topbar {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
margin-bottom: 14px;
}
.hu-map-headline h2 {
margin: 0;
font-size: clamp(28px, 5.2vw, 52px);
line-height: 1.02;
letter-spacing: -0.04em;
font-weight: 900;
color: var(--hu-text);
text-transform: uppercase;
}
.hu-map-top-link {
margin-top: 6px;
}
.hu-search-row {
display: flex;
align-items: center;
gap: 16px;
margin-bottom: 14px;
}
.hu-search-box {
display: flex;
align-items: center;
gap: 10px;
background: var(--hu-white);
border: 1px solid var(--hu-border);
border-radius: 999px;
padding: 0 18px;
height: 46px;
width: 100%;
box-shadow: 0 2px 8px rgba(0,0,0,0.03);
}
.hu-search-box:focus-within {
border-color: var(--hu-green);
box-shadow: 0 4px 14px rgba(45,106,79,0.10);
}
.hu-search-box svg {
color: var(--hu-green);
flex: 0 0 auto;
}
.hu-search-box input {
border: none;
outline: none;
background: transparent;
width: 100%;
font-size: 14px;
font-family: inherit;
color: var(--hu-green-dark);
}
.hu-search-box input::placeholder {
color: var(--hu-green);
opacity: .6;
}
.hu-map-container {
position: relative;
border-radius: 22px;
overflow: hidden;
border: 1px solid var(--hu-border);
box-shadow: 0 12px 30px rgba(0,0,0,0.06);
background: #f4f8f5;
}
#hu-map {
width: 100%;
height: 600px;
display: block;
touch-action: pan-x pan-y;
}
.leaflet-container {
background: #f4f8f5 !important;
}
.leaflet-tile-pane {
filter: hue-rotate(10deg) saturate(0.8) contrast(1.1);
}
.leaflet-control-zoom {
display: none !important;
}
.hu-map-overlay {
position: absolute;
top: 16px;
left: 50%;
transform: translateX(-50%);
z-index: 800;
display: flex;
flex-direction: column;
align-items: center;
}
.hu-filter-toggle {
display: inline-flex;
align-items: center;
gap: 10px;
background: rgba(255,255,255,.96);
color: var(--hu-green);
border: 1px solid var(--hu-green);
border-radius: 999px;
padding: 11px 20px;
font-size: 13px;
font-weight: 800;
cursor: pointer;
box-shadow: 0 4px 14px rgba(45,106,79,0.15);
transition: .2s ease;
white-space: nowrap;
}
.hu-filter-toggle.open {
background: var(--hu-green);
color: #fff;
}
.hu-filter-toggle .hu-chevron {
font-size: 9px;
opacity: .7;
transition: transform .2s ease;
}
.hu-filter-toggle.open .hu-chevron {
transform: rotate(180deg);
opacity: 1;
}
.hu-filter-panel {
display: none;
margin-top: 8px;
background: rgba(255,255,255,.98);
border-radius: 16px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,.12);
min-width: 230px;
border: 1px solid var(--hu-border);
max-height: 360px;
overflow-y: auto;
}
.hu-filter-panel.open {
display: block;
}
.hu-filter-opt {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
font-size: 13px;
font-weight: 600;
color: var(--hu-text);
cursor: pointer;
border: none;
background: transparent;
width: 100%;
text-align: left;
}
.hu-filter-opt:hover {
background: rgba(45,106,79,0.06);
}
.hu-filter-opt.hu-selected {
background: rgba(45,106,79,0.08);
color: var(--hu-green);
font-weight: 800;
}
.hu-filter-opt img {
width: 20px;
height: 20px;
object-fit: contain;
}
.hu-opt-count {
margin-left: auto;
font-size: 11px;
opacity: .5;
}
.hu-popup-content {
font-family: inherit;
min-width: 180px;
}
.hu-popup-nav {
display: flex;
gap: 12px;
margin-top: 12px;
border-top: 1px solid #eee;
padding-top: 10px;
}
.hu-nav-link {
display: flex;
align-items: center;
gap: 6px;
text-decoration: none;
color: var(--hu-green);
font-size: 11px;
font-weight: 700;
opacity: .85;
}
/* LATEST GAMES */
.hu-section-latest {
background: linear-gradient(180deg, rgba(107,124,112,0.03) 0%, rgba(255,255,255,0.98) 42%, rgba(107,124,112,0.08) 100%);
}
.hu-carousel-container {
display: flex;
gap: 14px;
overflow-x: auto;
padding: 2px 2px 8px;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
}
.hu-carousel-container::-webkit-scrollbar {
display: none;
}
.hu-game-card {
flex: 0 0 340px;
text-decoration: none;
color: inherit;
scroll-snap-align: start;
}
.hu-game-thumb {
width: 100%;
aspect-ratio: 16 / 9;
border-radius: 18px;
overflow: hidden;
background: #eef1f6;
box-shadow: 0 10px 28px rgba(16,24,40,.08);
margin-bottom: 10px;
}
.hu-game-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.hu-video-title {
font-size: .88rem;
font-weight: 800;
line-height: 1.32;
margin: 0 0 6px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
min-height: 2.64em;
}
.hu-video-meta {
display: flex;
align-items: center;
gap: 6px;
}
.hu-channel-logo {
width: 14px;
height: 14px;
border-radius: 50%;
object-fit: cover;
background: #eef2f7;
border: 1px solid #e5e7eb;
flex: 0 0 auto;
}
.hu-video-channel {
font-size: .76rem;
color: var(--hu-muted);
font-weight: 700;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* NEXT UP */
.hu-section-next-up {
background: linear-gradient(180deg, rgba(242,201,76,0.06) 0%, rgba(255,255,255,0.98) 42%, rgba(242,201,76,0.14) 100%);
}
.hu-next-up-shell {
display: flex;
flex-direction: column;
align-items: center;
}
.hu-next-up-slider {
width: 100%;
max-width: 760px;
margin: 0 auto;
}
.hu-next-up-viewport {
width: 100%;
overflow: hidden;
position: relative;
cursor: grab;
touch-action: pan-y;
}
.hu-next-up-track {
display: flex;
align-items: stretch;
transition: transform .35s ease;
will-change: transform;
}
.hu-next-up-slide {
flex: 0 0 100%;
width: 100%;
display: flex;
justify-content: center;
}
.hu-next-up-slide-inner {
width: 100%;
padding: 0 14px;
}
.hu-next-up-card {
width: 100%;
min-height: 280px;
color: #fff;
padding: 24px 24px 18px;
border-radius: 26px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
text-decoration: none;
box-shadow: 0 12px 30px rgba(15,23,42,.12);
}
.hu-next-up-card.men-c { background: linear-gradient(135deg, #4e8fe0 0%, #2f69b8 100%); }
.hu-next-up-card.men-b { background: linear-gradient(135deg, #2f69b8 0%, #1d4d8e 100%); }
.hu-next-up-card.men-a,
.hu-next-up-card.men-open { background: linear-gradient(135deg, #173e75 0%, #0f2a4f 100%); }
.hu-next-up-card.women-c { background: linear-gradient(135deg, #9a6dff 0%, #7b35cf 100%); }
.hu-next-up-card.women-b { background: linear-gradient(135deg, #7b35cf 0%, #5b179e 100%); }
.hu-next-up-card.women-a,
.hu-next-up-card.women-open { background: linear-gradient(135deg, #561191 0%, #36075e 100%); }
.hu-next-up-card.mixed-c { background: linear-gradient(135deg, #4e8fe0 0%, #9a6dff 100%); }
.hu-next-up-card.mixed-b { background: linear-gradient(135deg, #2f69b8 0%, #7b35cf 100%); }
.hu-next-up-card.mixed-a,
.hu-next-up-card.mixed-open { background: linear-gradient(135deg, #173e75 0%, #561191 100%); }
.hu-next-up-card.default,
.hu-next-up-card.default-c,
.hu-next-up-card.default-b,
.hu-next-up-card.default-a,
.hu-next-up-card.default-open {
background: linear-gradient(135deg, #193d6d 0%, #2b5aa0 100%);
}
.hu-next-up-date {
font-size: 1.05rem;
font-weight: 800;
margin-bottom: 10px;
}
.hu-next-up-event {
font-size: clamp(2rem, 5vw, 3rem);
font-weight: 900;
line-height: 1.02;
letter-spacing: -0.04em;
margin-bottom: 14px;
}
.hu-next-up-meta,
.hu-next-up-location {
font-size: 1rem;
font-weight: 700;
line-height: 1.35;
margin-bottom: 12px;
opacity: .97;
}
.hu-next-up-actions {
display: flex;
justify-content: center;
gap: 34px;
flex-wrap: wrap;
margin-bottom: 14px;
}
.hu-next-up-action {
color: var(--hu-yellow);
text-decoration: none;
font-size: 1rem;
font-weight: 900;
}
.hu-next-up-tap {
font-size: .92rem;
font-weight: 700;
opacity: .88;
}
.hu-next-up-dots {
display: flex;
justify-content: center;
gap: 10px;
margin-top: 18px;
min-height: 18px;
}
.hu-next-up-dot {
width: 10px;
height: 10px;
border-radius: 999px;
background: rgba(25,61,109,.18);
transition: transform .28s ease, opacity .28s ease, background-color .28s ease;
cursor: pointer;
opacity: .55;
}
.hu-next-up-dot.active {
background: var(--hu-blue);
opacity: 1;
transform: scale(1.35);
}
.hu-next-up-dot.near {
opacity: .82;
transform: scale(1.08);
}
/* PRODUCTS */
.hu-section-products {
background: linear-gradient(180deg, rgba(75,0,130,0.04) 0%, rgba(255,255,255,0.98) 42%, rgba(75,0,130,0.10) 100%);
}
.hu-products-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0,1fr));
gap: 14px;
}
.hu-product-card {
background: rgba(255,255,255,.98);
border: 1px solid var(--hu-border);
border-radius: 20px;
overflow: hidden;
box-shadow: 0 8px 24px rgba(16,24,40,.06);
text-decoration: none;
color: inherit;
display: block;
}
.hu-product-image {
width: 100%;
aspect-ratio: 1 / 1;
overflow: hidden;
background: #f1f2f6;
}
.hu-product-image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.hu-product-info {
padding: 13px 12px 14px;
text-align: center;
}
.hu-product-category {
font-size: .68rem;
font-weight: 900;
color: var(--hu-muted);
text-transform: uppercase;
letter-spacing: .08em;
margin-bottom: 4px;
}
.hu-product-name {
font-size: .88rem;
font-weight: 800;
margin-bottom: 6px;
}
.hu-product-price {
font-size: .92rem;
font-weight: 900;
color: var(--hu-purple);
}
.hu-product-loading,
.hu-product-empty,
.hu-next-up-empty {
width: 100%;
text-align: center;
padding: 26px 18px;
border-radius: 24px;
background: rgba(255,255,255,.72);
border: 1px dashed rgba(75,0,130,.18);
color: var(--hu-muted);
font-weight: 700;
}
.hu-product-loading,
.hu-product-empty {
grid-column: 1 / -1;
}
@media (max-width: 768px) {
.hu-section {
padding: 16px;
border-radius: 20px;
}
#hu-map {
height: 470px;
}
.hu-game-card {
flex: 0 0 285px;
}
.hu-next-up-slider {
max-width: 100%;
}
.hu-next-up-slide-inner {
padding: 0 10px;
}
.hu-next-up-card {
min-height: 252px;
padding: 20px 18px 16px;
border-radius: 22px;
}
.hu-next-up-event {
font-size: clamp(1.8rem, 7vw, 2.35rem);
}
}