.gc-surf-today__spots--pro {
list-style: none;
margin: 1.5rem 0 0;
padding: 0;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
} .gc-surf-card--pro {
--gc-card-blue: #4583cf;
--gc-card-pink: #ec4899;
--gc-card-text: #1f2937;
--gc-card-text-muted: #64748b;
--gc-card-border: #cbd6e3;
--gc-card-bg: #ffffff;
--gc-card-tint: #fbfcfe;
--gc-card-radius: 16px;
position: relative;
background: var(--gc-card-bg);
border: 1px solid var(--gc-card-border);
border-radius: var(--gc-card-radius);
box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 16px rgba(15, 23, 42, .05);
overflow: hidden;
transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
list-style: none;
}
.gc-surf-card--pro:hover {
transform: translateY(-3px);
border-color: var(--gc-card-blue);
box-shadow: 0 4px 8px rgba(15, 23, 42, .06), 0 12px 28px rgba(69, 131, 207, .14);
} .gc-surf-card--pro .gc-surf-card__window--active.gc-surf-card__window--peler ~ * { } .gc-surf-card--pro:has(.gc-surf-card__window--peler) {
border-top: 4px solid #166534;
}
.gc-surf-card--pro:has(.gc-surf-card__window--ora) {
border-top: 4px solid var(--gc-card-pink);
} .gc-surf-card__link {
display: block;
padding: 16px;
color: inherit;
text-decoration: none;
}
.gc-surf-card__link:hover { text-decoration: none; }
.gc-surf-card__link:focus-visible {
outline: 2px solid var(--gc-card-blue);
outline-offset: -2px;
} .gc-surf-card--pro .gc-surf-card__top {
display: flex;
flex-direction: column;
gap: 8px;
margin-bottom: 12px;
}
.gc-surf-card__pills {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
}
.gc-surf-card--pro .gc-surf-card__pill {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 10px;
border-radius: 999px;
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.01em;
line-height: 1.5;
}
.gc-surf-card--pro .gc-surf-card__pill--beginner_friendly { background: #ecfdf5; color: #047857; }
.gc-surf-card--pro .gc-surf-card__pill--intermediate     { background: #fef3c7; color: #92400e; }
.gc-surf-card--pro .gc-surf-card__pill--advanced         { background: #fee2e2; color: #b91c1c; }
.gc-surf-card--pro .gc-surf-card__pill-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
} .gc-surf-card__live-pill {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 10px;
border-radius: 999px;
font-size: 0.7rem;
font-weight: 600;
background: #f1f5f9;
color: #475569;
}
.gc-surf-card__live-pill-dot {
width: 7px;
height: 7px;
border-radius: 50%;
background: currentColor;
position: relative;
flex-shrink: 0;
}
.gc-surf-card__live-pill--peler_active { background: #dcfce7; color: #166534; }
.gc-surf-card__live-pill--ora_active   { background: #fce7f3; color: #be185d; }
.gc-surf-card__live-pill--building     { background: #fef3c7; color: #92400e; }
.gc-surf-card__live-pill--lull         { background: #f1f5f9; color: #475569; }
.gc-surf-card__live-pill--off_direction{ background: #ede9fe; color: #6d28d9; }
.gc-surf-card__live-pill--unknown      { background: #fee2e2; color: #991b1b; } .gc-surf-card__live-pill.is-pulsing .gc-surf-card__live-pill-dot::after {
content: '';
position: absolute;
inset: -3px;
border-radius: 50%;
background: currentColor;
opacity: 0.5;
animation: gc-surf-card-pulse 2.2s ease-out infinite;
}
@keyframes gc-surf-card-pulse {
0%   { transform: scale(0.5); opacity: 0.55; }
70%  { transform: scale(2);   opacity: 0; }
100% { transform: scale(2);   opacity: 0; }
}
.gc-surf-card--pro .gc-surf-card__name {
margin: 0;
font-size: 1.1rem;
font-weight: 700;
color: var(--gc-card-blue);
line-height: 1.25;
} .gc-surf-card__live-hero {
display: grid;
grid-template-columns: 64px 1fr;
gap: 12px;
padding: 12px;
background: linear-gradient(180deg, var(--gc-card-tint) 0%, #ffffff 100%);
border: 1px solid #e2e8f0;
border-radius: 12px;
margin-bottom: 10px;
align-items: center;
}
.gc-surf-card__live-hero[data-bft="lull"]   { border-color: #cbd5e1; }
.gc-surf-card__live-hero[data-bft="light"]  { border-color: #93c5fd; background: linear-gradient(180deg, #eff6ff 0%, #ffffff 100%); }
.gc-surf-card__live-hero[data-bft="good"]   { border-color: #60a5fa; background: linear-gradient(180deg, #dbeafe 0%, #ffffff 100%); }
.gc-surf-card__live-hero[data-bft="strong"] { border-color: #f59e0b; background: linear-gradient(180deg, #fef3c7 0%, #ffffff 100%); }
.gc-surf-card__live-hero[data-bft="heavy"]  { border-color: #ef4444; background: linear-gradient(180deg, #fee2e2 0%, #ffffff 100%); }
.gc-surf-card__live-hero--empty {
grid-template-columns: 1fr;
text-align: center;
padding: 18px 12px;
color: var(--gc-card-text-muted);
font-size: 0.85rem;
}
.gc-surf-card__compass {
width: 64px;
height: 64px;
position: relative;
}
.gc-surf-card__compass-svg { width: 100%; height: 100%; }
.gc-surf-card__compass-ring { fill: none; stroke: #cbd6e3; stroke-width: 1.5; }
.gc-surf-card__compass-n,
.gc-surf-card__compass-s,
.gc-surf-card__compass-w,
.gc-surf-card__compass-o {
fill: var(--gc-card-text-muted);
font-size: 8px;
font-weight: 600;
text-anchor: middle;
dominant-baseline: central;
}
.gc-surf-card__compass-n { fill: var(--gc-card-blue); }
.gc-surf-card__compass-needle polygon {
fill: var(--gc-card-blue);
transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.gc-surf-card__live-numbers {
min-width: 0;
display: flex;
flex-direction: column;
gap: 4px;
}
.gc-surf-card__live-wind {
display: flex;
align-items: baseline;
gap: 4px;
line-height: 1;
}
.gc-surf-card__live-kmh {
font-size: 1.8rem;
font-weight: 700;
color: var(--gc-card-text);
line-height: 1;
}
.gc-surf-card__live-unit {
font-size: 0.75rem;
color: var(--gc-card-text-muted);
font-weight: 500;
}
.gc-surf-card__live-meta {
display: flex;
gap: 8px;
align-items: center;
font-size: 0.78rem;
color: var(--gc-card-text-muted);
}
.gc-surf-card__live-dir {
font-weight: 600;
color: var(--gc-card-text);
}
.gc-surf-card__live-bft {
background: rgba(69, 131, 207, 0.08);
color: var(--gc-card-blue);
padding: 1px 7px;
border-radius: 999px;
font-weight: 600;
font-size: 0.7rem;
}
.gc-surf-card__live-bar {
position: relative;
height: 4px;
background: #e2e8f0;
border-radius: 999px;
overflow: hidden;
margin-top: 2px;
}
.gc-surf-card__live-bar-fill {
position: absolute;
inset: 0 auto 0 0;
background: linear-gradient(90deg, #93c5fd 0%, #4583cf 50%, #f59e0b 80%, #ef4444 100%);
border-radius: 999px;
transition: width 0.45s ease;
}
.gc-surf-card__live-stats {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-top: 4px;
font-size: 0.7rem;
color: var(--gc-card-text-muted);
}
.gc-surf-card__live-stat {
display: inline-flex;
align-items: center;
gap: 3px;
font-weight: 500;
}
.gc-surf-card__live-stat svg { color: var(--gc-card-text-muted); flex-shrink: 0; }
.gc-surf-card__live-stat--age { margin-left: auto; font-style: italic; opacity: 0.85; } .gc-surf-card--pro .gc-surf-card__window {
margin-top: 0;
margin-bottom: 10px;
padding: 10px 12px;
border-radius: 10px;
font-size: 0.8rem;
}
.gc-surf-card__window--empty {
background: #f8fafc;
border: 1px dashed #cbd5e1;
color: var(--gc-card-text-muted);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 4px;
padding: 14px 10px;
}
.gc-surf-card__window-empty-icon {
color: #94a3b8;
margin-bottom: 2px;
}
.gc-surf-card__window-empty-text {
font-weight: 600;
color: var(--gc-card-text);
font-size: 0.85rem;
}
.gc-surf-card__window-empty-hint {
font-size: 0.72rem;
line-height: 1.4;
}
.gc-surf-card__window--active {
border: 1px solid;
}
.gc-surf-card__window--peler {
background: linear-gradient(180deg, #f0fdf4 0%, #dcfce7 100%);
border-color: #86efac;
color: #14532d;
}
.gc-surf-card__window--ora {
background: linear-gradient(180deg, #fdf2f8 0%, #fce7f3 100%);
border-color: #f9a8d4;
color: #831843;
}
.gc-surf-card__window-head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
margin-bottom: 6px;
}
.gc-surf-card__window-type {
display: inline-flex;
align-items: center;
gap: 4px;
font-weight: 700;
font-size: 0.85rem;
}
.gc-surf-card__window-time {
font-size: 0.72rem;
font-weight: 500;
opacity: 0.85;
}
.gc-surf-card__window-stats {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
margin-bottom: 6px;
font-size: 0.78rem;
}
.gc-surf-card__window-skill {
padding: 1px 7px;
border-radius: 999px;
font-size: 0.65rem;
font-weight: 600;
background: rgba(255, 255, 255, 0.7);
color: inherit;
}
.gc-surf-card__window-score {
display: flex;
align-items: center;
gap: 6px;
font-size: 0.7rem;
}
.gc-surf-card__window-score-bar {
flex: 1 1 auto;
height: 5px;
background: rgba(255, 255, 255, 0.6);
border-radius: 999px;
overflow: hidden;
}
.gc-surf-card__window-score-fill {
height: 100%;
background: currentColor;
border-radius: 999px;
transition: width 0.5s ease;
}
.gc-surf-card__window-score-val {
font-weight: 700;
font-size: 0.78rem;
} .gc-surf-card__sparkline {
display: flex;
align-items: flex-end;
gap: 6px;
margin-bottom: 10px;
padding: 6px 10px;
background: #fafbfc;
border-radius: 8px;
height: 36px;
}
.gc-surf-card__sparkline-label {
font-size: 0.63rem;
color: var(--gc-card-text-muted);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
align-self: center;
flex-shrink: 0;
}
.gc-surf-card__sparkline-bars {
display: flex;
align-items: flex-end;
gap: 2px;
flex: 1 1 auto;
height: 100%;
}
.gc-surf-card__spark-bar {
flex: 1 1 0;
min-height: 3px;
background: #cbd5e1;
border-radius: 2px 2px 0 0;
transition: height 0.3s ease;
}
.gc-surf-card__spark-bar.is-peler { background: #16a34a; }
.gc-surf-card__spark-bar.is-ora   { background: var(--gc-card-pink); } .gc-surf-card__cta {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4px;
font-size: 0.78rem;
font-weight: 600;
color: var(--gc-card-blue);
padding-top: 6px;
border-top: 1px solid #f1f5f9;
}
.gc-surf-card__cta-arrow {
transition: transform 0.22s ease;
flex-shrink: 0;
}
.gc-surf-card--pro:hover .gc-surf-card__cta-arrow {
transform: translateX(3px);
}
.gc-surf-card--pro:hover .gc-surf-card__cta {
color: var(--gc-card-pink);
} @media (max-width: 600px) {
.gc-surf-today__spots--pro {
grid-template-columns: 1fr;
gap: 14px;
}
.gc-surf-card__link { padding: 14px; }
.gc-surf-card--pro .gc-surf-card__name { font-size: 1.05rem; }
.gc-surf-card__live-kmh { font-size: 1.6rem; }
}
@media (max-width: 380px) {
.gc-surf-card__live-stats { font-size: 0.65rem; }
.gc-surf-card__sparkline { height: 32px; }
} @media (prefers-reduced-motion: reduce) {
.gc-surf-card--pro,
.gc-surf-card__cta-arrow,
.gc-surf-card__compass-needle polygon,
.gc-surf-card__live-bar-fill,
.gc-surf-card__window-score-fill,
.gc-surf-card__spark-bar { transition: none; }
.gc-surf-card__live-pill.is-pulsing .gc-surf-card__live-pill-dot::after { animation: none; }
.gc-surf-card--pro:hover { transform: none; }
}  .gc-surf-card__live-kt {
font-size: 0.72rem;
color: var(--gc-card-text-muted, #64748b);
font-weight: 500;
margin-left: 4px;
letter-spacing: 0.01em;
white-space: nowrap;
} .gc-surf-hourly-slot__kt {
display: block;
font-size: 0.62rem;
color: var(--gc-card-text-muted, #64748b);
font-weight: 500;
letter-spacing: 0.02em;
margin-top: 1px;
opacity: 0.85;
} @media (max-width: 600px) {
.gc-surf-card__live-kt { font-size: 0.68rem; }
.gc-surf-hourly-slot__kt { font-size: 0.58rem; }
} .gc-surf-today__best-banners {
display: grid;
grid-template-columns: 1.4fr 1fr;
gap: 16px;
margin: 1.5rem 0 1.25rem;
}
@media (max-width: 760px) {
.gc-surf-today__best-banners {
grid-template-columns: 1fr;
gap: 12px;
}
}
.gc-surf-best-banner {
--banner-blue: #4583cf;
--banner-pink: #ec4899;
--banner-green: #16a34a;
--banner-text: #1f2937;
--banner-text-muted: #64748b;
--banner-bg: #ffffff;
--banner-tint: #fbfcfe;
--banner-border: #cbd6e3;
position: relative;
display: block;
background: var(--banner-bg);
border: 1px solid var(--banner-border);
border-radius: 16px;
padding: 0;
overflow: hidden;
text-decoration: none;
color: inherit;
transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 16px rgba(15, 23, 42, .05);
}
.gc-surf-best-banner:hover {
transform: translateY(-3px);
box-shadow: 0 4px 8px rgba(15, 23, 42, .06), 0 14px 32px rgba(69, 131, 207, .14);
text-decoration: none;
}
.gc-surf-best-banner:focus-visible {
outline: 2px solid var(--banner-blue);
outline-offset: 2px;
} .gc-surf-best-banner--peler {
border-top: 4px solid var(--banner-green);
}
.gc-surf-best-banner--peler:hover {
border-color: #86efac;
box-shadow: 0 4px 8px rgba(22, 163, 74, .08), 0 14px 32px rgba(22, 163, 74, .14);
}
.gc-surf-best-banner--ora {
border-top: 4px solid var(--banner-pink);
}
.gc-surf-best-banner--ora:hover {
border-color: #f9a8d4;
box-shadow: 0 4px 8px rgba(236, 72, 153, .08), 0 14px 32px rgba(236, 72, 153, .14);
} .gc-surf-best-banner--empty {
border-top: 4px solid #cbd5e1;
background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
cursor: default;
}
.gc-surf-best-banner--empty:hover {
transform: none;
border-color: var(--banner-border);
}
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__head {
background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
} .gc-surf-best-banner__head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
padding: 10px 16px 8px;
border-bottom: 1px solid #f1f5f9;
}
.gc-surf-best-banner__label {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--banner-text-muted);
}
.gc-surf-best-banner__label-icon {
font-size: 1rem;
line-height: 1;
}
.gc-surf-best-banner__live-dot {
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: #22c55e;
margin-left: 4px;
position: relative;
}
.gc-surf-best-banner.is-live .gc-surf-best-banner__live-dot::after {
content: '';
position: absolute;
inset: -3px;
border-radius: 50%;
background: #22c55e;
opacity: 0.55;
animation: gc-banner-pulse 2.2s ease-out infinite;
}
@keyframes gc-banner-pulse {
0%   { transform: scale(0.5); opacity: 0.55; }
70%  { transform: scale(2);   opacity: 0; }
100% { transform: scale(2);   opacity: 0; }
}
.gc-surf-best-banner__live-text {
margin-left: 3px;
font-size: 0.62rem;
font-weight: 700;
color: #166534;
letter-spacing: 0.08em;
}
.gc-surf-best-banner__conf {
font-size: 0.7rem;
font-weight: 600;
color: var(--banner-text-muted);
background: #f1f5f9;
padding: 2px 8px;
border-radius: 999px;
} .gc-surf-best-banner__body {
padding: 12px 16px 14px;
}
.gc-surf-best-banner__name {
margin: 0 0 8px;
font-size: 1.45rem;
font-weight: 700;
color: var(--banner-blue);
line-height: 1.15;
}
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__name {
font-size: 1.25rem;
}
.gc-surf-best-banner__meta {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
margin-bottom: 8px;
}
.gc-surf-best-banner__type-pill {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 10px;
border-radius: 999px;
font-size: 0.78rem;
font-weight: 700;
}
.gc-surf-best-banner--peler .gc-surf-best-banner__type-pill {
background: #dcfce7;
color: #14532d;
}
.gc-surf-best-banner--ora .gc-surf-best-banner__type-pill {
background: #fce7f3;
color: #831843;
}
.gc-surf-best-banner__time {
font-size: 0.82rem;
color: var(--banner-text-muted);
font-weight: 500;
} .gc-surf-best-banner__stats {
display: flex;
align-items: baseline;
gap: 6px;
flex-wrap: wrap;
margin-bottom: 10px;
font-size: 0.85rem;
color: var(--banner-text);
}
.gc-surf-best-banner__kmh {
font-size: 1.4rem;
font-weight: 700;
color: var(--banner-text);
line-height: 1;
}
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__kmh {
font-size: 1.2rem;
}
.gc-surf-best-banner__unit {
font-size: 0.78rem;
color: var(--banner-text-muted);
font-weight: 500;
}
.gc-surf-best-banner__kt {
font-size: 0.82rem;
color: var(--banner-text-muted);
font-weight: 600;
}
.gc-surf-best-banner__bft {
background: rgba(69, 131, 207, 0.1);
color: var(--banner-blue);
padding: 2px 8px;
border-radius: 999px;
font-size: 0.72rem;
font-weight: 600;
margin-left: 4px;
}
.gc-surf-best-banner__skill {
margin-left: auto;
padding: 2px 9px;
border-radius: 999px;
font-size: 0.7rem;
font-weight: 600;
}
.gc-surf-best-banner__skill--beginner { background: #ecfdf5; color: #047857; }
.gc-surf-best-banner__skill--intermediate { background: #fef3c7; color: #92400e; }
.gc-surf-best-banner__skill--advanced { background: #fee2e2; color: #b91c1c; }
.gc-surf-best-banner__skill--pro { background: #fef2f2; color: #7f1d1d; }
.gc-surf-best-banner__skill--unsafe { background: #f1f5f9; color: #475569; } .gc-surf-best-banner__score {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 10px;
}
.gc-surf-best-banner__score-bar {
flex: 1 1 auto;
height: 7px;
background: #e2e8f0;
border-radius: 999px;
overflow: hidden;
}
.gc-surf-best-banner__score-fill {
height: 100%;
border-radius: 999px;
transition: width 0.5s ease;
background: linear-gradient(90deg, #93c5fd 0%, #4583cf 100%);
}
.gc-surf-best-banner--peler .gc-surf-best-banner__score-fill {
background: linear-gradient(90deg, #86efac 0%, #16a34a 100%);
}
.gc-surf-best-banner--ora .gc-surf-best-banner__score-fill {
background: linear-gradient(90deg, #f9a8d4 0%, #ec4899 100%);
}
.gc-surf-best-banner__score-val {
font-size: 1.05rem;
font-weight: 700;
color: var(--banner-text);
letter-spacing: -0.01em;
}
.gc-surf-best-banner__score-val small {
font-size: 0.7rem;
font-weight: 500;
color: var(--banner-text-muted);
letter-spacing: 0;
} .gc-surf-best-banner__headline {
margin: 0 0 10px;
font-size: 0.85rem;
line-height: 1.4;
color: var(--banner-text);
font-weight: 500;
} .gc-surf-best-banner__alts {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 4px 8px;
margin-bottom: 10px;
padding: 6px 10px;
background: #f8fafc;
border-radius: 8px;
font-size: 0.78rem;
color: var(--banner-text-muted);
}
.gc-surf-best-banner__alts-label {
font-weight: 600;
color: var(--banner-text);
}
.gc-surf-best-banner__alt {
color: var(--banner-blue);
text-decoration: none;
font-weight: 600;
border-bottom: 1px dashed currentColor;
white-space: nowrap;
}
.gc-surf-best-banner__alt:hover {
color: var(--banner-pink);
}
.gc-surf-best-banner__alt small {
font-size: 0.7rem;
font-weight: 500;
opacity: 0.85;
} .gc-surf-best-banner__cta {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4px;
font-size: 0.82rem;
font-weight: 600;
color: var(--banner-blue);
padding-top: 6px;
border-top: 1px solid #f1f5f9;
}
.gc-surf-best-banner__cta svg {
transition: transform 0.22s ease;
}
.gc-surf-best-banner:hover .gc-surf-best-banner__cta svg {
transform: translateX(3px);
}
.gc-surf-best-banner--peler:hover .gc-surf-best-banner__cta {
color: var(--banner-green);
}
.gc-surf-best-banner--ora:hover .gc-surf-best-banner__cta {
color: var(--banner-pink);
} .gc-surf-best-banner__empty-body {
padding: 10px 16px 12px;
text-align: center;
}
.gc-surf-best-banner__empty-icon {
color: #cbd5e1;
margin-bottom: 2px;
width: 20px;
height: 20px;
}
.gc-surf-best-banner__empty-icon svg {
width: 20px;
height: 20px;
}
.gc-surf-best-banner__empty-msg {
margin: 0;
font-size: 0.88rem;
font-weight: 600;
color: var(--banner-text);
line-height: 1.3;
}
.gc-surf-best-banner__empty-hint {
margin: 2px 0 0;
font-size: 0.74rem;
color: var(--banner-text-muted);
line-height: 1.3;
} @media (max-width: 600px) {
.gc-surf-best-banner__name { font-size: 1.25rem; }
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__name { font-size: 1.1rem; }
.gc-surf-best-banner__kmh { font-size: 1.25rem; }
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__kmh { font-size: 1.1rem; }
.gc-surf-best-banner__head { padding: 9px 14px 7px; }
.gc-surf-best-banner__body { padding: 11px 14px 12px; }
.gc-surf-best-banner__skill {
margin-left: 0;
margin-top: 4px;
}
} @media (prefers-reduced-motion: reduce) {
.gc-surf-best-banner,
.gc-surf-best-banner__cta svg,
.gc-surf-best-banner__score-fill { transition: none; }
.gc-surf-best-banner.is-live .gc-surf-best-banner__live-dot::after { animation: none; }
.gc-surf-best-banner:hover { transform: none; }
} .gc-surf-card__rank-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 3px 9px;
border-radius: 999px;
font-size: 0.68rem;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
line-height: 1.4;
white-space: nowrap;
}
.gc-surf-card__rank-badge svg {
flex-shrink: 0;
} .gc-surf-card__rank-badge--1 {
background: linear-gradient(135deg, #fce7f3 0%, #fbcfe8 100%);
color: #9d174d;
border: 1px solid #f9a8d4;
box-shadow: 0 1px 2px rgba(236, 72, 153, .15);
} .gc-surf-card__rank-badge--2 {
background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
color: #1e40af;
border: 1px solid #93c5fd;
} .gc-surf-card__rank-badge--3 {
background: #f1f5f9;
color: #475569;
border: 1px solid #cbd5e1;
} .gc-surf-card--pro[data-rank="0"] {
position: relative;
}
.gc-surf-card--pro[data-rank="0"]::before {
content: '';
position: absolute;
inset: -1px;
border-radius: 17px;
background: linear-gradient(135deg, #ec4899 0%, #f9a8d4 50%, #fbcfe8 100%);
z-index: -1;
opacity: 0.5;
}
.gc-surf-card--pro[data-rank="1"] {
position: relative;
}
.gc-surf-card--pro[data-rank="1"]::before {
content: '';
position: absolute;
inset: -1px;
border-radius: 17px;
background: linear-gradient(135deg, #4583cf 0%, #93c5fd 100%);
z-index: -1;
opacity: 0.35;
} @media (max-width: 600px) {
.gc-surf-card__rank-badge {
font-size: 0.62rem;
padding: 2px 7px;
}
}  .gc-surf-today,
.gc-surf-card--pro,
.gc-surf-best-banner,
.gc-surf-best-banner__alt,
.gc-surf-best-banner__cta,
.gc-surf-card__link,
.gc-surf-card__rank-badge {
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
.gc-surf-card--pro,
.gc-surf-best-banner {
touch-action: manipulation;
} .gc-surf-card--pro {
position: relative;
isolation: isolate;
contain: layout style;
}
.gc-surf-card--pro[data-rank="0"]::before,
.gc-surf-card--pro[data-rank="1"]::before {
content: '';
position: absolute;
inset: -2px;
border-radius: 18px;
z-index: -1;
pointer-events: none;
}
.gc-surf-card--pro[data-rank="0"]::before {
background: linear-gradient(135deg, #ec4899 0%, #f9a8d4 50%, #fbcfe8 100%);
opacity: 0.55;
}
.gc-surf-card--pro[data-rank="1"]::before {
background: linear-gradient(135deg, #4583cf 0%, #93c5fd 100%);
opacity: 0.4;
} .gc-surf-card__pills {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 5px 6px;
margin-bottom: 4px;
}
.gc-surf-card__pill,
.gc-surf-card__live-pill,
.gc-surf-card__rank-badge {
flex-shrink: 0;
max-width: 100%;
white-space: nowrap;
} @media (max-width: 380px) {
.gc-surf-card__pill {
font-size: 0.62rem;
padding: 2px 7px;
}
.gc-surf-card__live-pill {
font-size: 0.62rem;
padding: 2px 7px;
}
.gc-surf-card__rank-badge {
font-size: 0.58rem;
padding: 2px 6px;
}
} @media (hover: none) and (pointer: coarse) {
.gc-surf-card--pro:active {
transform: scale(0.985);
transition: transform 0.12s ease;
}
.gc-surf-card--pro:hover {
transform: none;
box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 16px rgba(15, 23, 42, .05);
border-color: var(--gc-card-border, #cbd6e3);
}
.gc-surf-best-banner:active {
transform: scale(0.99);
transition: transform 0.12s ease;
}
.gc-surf-best-banner:hover {
transform: none;
}
.gc-surf-best-banner__alt:active {
background: rgba(69, 131, 207, 0.1);
border-radius: 4px;
}
} .gc-surf-best-banner__cta,
.gc-surf-best-banner__alt,
.gc-surf-card__cta {
min-height: 36px;
display: inline-flex;
align-items: center;
padding-left: 6px;
padding-right: 6px;
margin-left: -6px;
margin-right: -6px;
}
@media (hover: none) and (pointer: coarse) {
.gc-surf-best-banner__cta,
.gc-surf-best-banner__alt,
.gc-surf-card__cta {
min-height: 44px;
}
} .gc-surf-best-banner__stats {
display: flex;
align-items: baseline;
flex-wrap: wrap;
gap: 4px 8px;
row-gap: 6px;
}
.gc-surf-best-banner__stats > * {
flex-shrink: 0;
}
@media (max-width: 600px) {
.gc-surf-best-banner__stats {
gap: 3px 6px;
}
.gc-surf-best-banner__skill {
margin-left: 0;
flex-basis: 100%;
margin-top: 4px;
}
} @media (max-width: 380px) {
.gc-surf-card__sparkline {
height: 28px;
padding: 4px 8px;
gap: 4px;
}
.gc-surf-card__sparkline-bars {
gap: 1.5px;
}
.gc-surf-card__spark-bar {
border-radius: 1.5px 1.5px 0 0;
}
} .gc-surf-best-banner__alts {
flex-wrap: wrap;
row-gap: 4px;
}
@media (max-width: 480px) {
.gc-surf-best-banner__alts {
padding: 8px 10px;
}
.gc-surf-best-banner__alt {
font-size: 0.82rem;
padding: 4px 8px;
margin-left: -4px;
margin-right: -4px;
border-radius: 6px;
border-bottom: 0;
}
.gc-surf-best-banner__alt:active {
background: rgba(69, 131, 207, 0.12);
}
} @media (max-width: 980px) {
.gc-surf-today__spots--pro {
grid-template-columns: repeat(2, 1fr);
gap: 14px;
}
}
@media (max-width: 600px) {
.gc-surf-today__spots--pro {
grid-template-columns: 1fr;
gap: 12px;
}
} @media (max-width: 380px) {
.gc-surf-card__live-hero {
grid-template-columns: 56px 1fr;
gap: 10px;
padding: 10px;
}
.gc-surf-card__compass {
width: 56px;
height: 56px;
}
.gc-surf-card__live-kmh {
font-size: 1.45rem;
}
.gc-surf-card__live-stats {
font-size: 0.62rem;
gap: 6px;
}
} .gc-surf-card__compass-svg {
display: block;
aspect-ratio: 1;
} .gc-surf-card--pro,
.gc-surf-best-banner,
.gc-surf-card__cta-arrow,
.gc-surf-best-banner__cta svg {
will-change: transform;
} @media (max-width: 480px) {
.gc-surf-card--pro .gc-surf-card__window {
padding: 9px 11px;
font-size: 0.78rem;
}
.gc-surf-card__window-stats {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.gc-surf-card__window-skill {
align-self: flex-start;
}
} @media (max-width: 760px) {
.gc-surf-today__best-banners {
margin: 1.25rem 0 1rem;
gap: 12px;
}
.gc-surf-best-banner__name {
font-size: 1.2rem !important;
}
.gc-surf-best-banner--tomorrow .gc-surf-best-banner__name {
font-size: 1.1rem !important;
}
}
@media (max-width: 380px) {
.gc-surf-best-banner__head {
padding: 8px 12px 6px;
}
.gc-surf-best-banner__body {
padding: 10px 12px 12px;
}
.gc-surf-best-banner__label {
font-size: 0.62rem;
letter-spacing: 0.04em;
}
.gc-surf-best-banner__conf {
font-size: 0.62rem;
padding: 1px 6px;
}
.gc-surf-best-banner__name {
font-size: 1.1rem !important;
}
.gc-surf-best-banner__kmh {
font-size: 1.15rem !important;
}
.gc-surf-best-banner__time {
font-size: 0.72rem;
}
.gc-surf-best-banner__alts {
font-size: 0.7rem;
padding: 6px 8px;
}
.gc-surf-best-banner__alts-label {
flex-basis: 100%;
margin-bottom: 2px;
}
} .gc-surf-today,
.gc-surf-card--pro,
.gc-surf-best-banner {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
} .gc-surf-best-banner:focus-visible,
.gc-surf-card__link:focus-visible,
.gc-surf-best-banner__alt:focus-visible,
.gc-surf-best-banner__cta:focus-visible {
outline: 2px solid #4583cf;
outline-offset: 2px;
border-radius: 8px;
} @supports (padding: max(0px)) {
@media (max-width: 600px) {
.gc-surf-today {
padding-left: max(0px, env(safe-area-inset-left));
padding-right: max(0px, env(safe-area-inset-right));
}
}
} @media (max-width: 600px) {
.gc-surf-card__window--empty {
padding: 12px 10px;
}
.gc-surf-card__window-empty-text {
font-size: 0.82rem;
}
.gc-surf-card__window-empty-hint {
font-size: 0.7rem;
}
} @media (prefers-reduced-motion: reduce) {
.gc-surf-card--pro:active,
.gc-surf-best-banner:active {
transform: none;
}
} .gc-surf-severe-banner {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 14px 18px;
border-radius: 14px;
margin: 0 0 16px;
border: 1px solid;
position: relative;
isolation: isolate;
-webkit-tap-highlight-color: transparent;
text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
}
.gc-surf-severe-banner__icon {
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
width: 44px;
height: 44px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.7);
}
.gc-surf-severe-banner__body {
flex: 1 1 auto;
min-width: 0;
}
.gc-surf-severe-banner__head {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
margin-bottom: 4px;
}
.gc-surf-severe-banner__level {
font-size: 0.66rem;
font-weight: 800;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 3px 9px;
border-radius: 999px;
background: currentColor;
color: white; filter: contrast(1);
}
.gc-surf-severe-banner__primary {
font-weight: 700;
font-size: 0.95rem;
line-height: 1.3;
}
.gc-surf-severe-banner__primary small {
font-weight: 500;
font-size: 0.82rem;
opacity: 0.85;
}
.gc-surf-severe-banner__advice {
margin: 4px 0 0;
font-size: 0.85rem;
line-height: 1.4;
}
.gc-surf-severe-banner__advice strong {
font-weight: 700;
}
.gc-surf-severe-banner__details {
margin: 4px 0 0;
font-size: 0.78rem;
opacity: 0.85;
line-height: 1.4;
} .gc-surf-severe-banner__spread {
margin: 6px 0 0;
font-size: 0.78rem;
line-height: 1.4;
padding: 6px 8px;
background: rgba(255, 255, 255, 0.12);
border-left: 3px solid currentColor;
border-radius: 4px;
opacity: 0.95;
}
.gc-surf-severe-banner__spread strong {
font-weight: 700;
}
.gc-surf-severe-banner__disclaimer {
margin: 8px 0 0;
font-size: 0.7rem;
opacity: 0.75;
line-height: 1.4;
}
.gc-surf-severe-banner__disclaimer a {
color: inherit;
font-weight: 600;
border-bottom: 1px dashed currentColor;
text-decoration: none;
}
.gc-surf-severe-banner__disclaimer a:hover {
opacity: 1;
}  .gc-surf-severe-banner--medium {
background: linear-gradient(180deg, #fef3c7 0%, #fef9e7 100%);
border-color: #f59e0b;
color: #78350f;
}
.gc-surf-severe-banner--medium .gc-surf-severe-banner__icon {
color: #b45309;
background: rgba(255, 255, 255, 0.85);
}
.gc-surf-severe-banner--medium .gc-surf-severe-banner__level {
color: #fef3c7;
background: #b45309;
} .gc-surf-severe-banner--high {
background: linear-gradient(180deg, #fed7aa 0%, #ffedd5 100%);
border-color: #ea580c;
color: #7c2d12;
box-shadow: 0 2px 6px rgba(234, 88, 12, .14);
}
.gc-surf-severe-banner--high .gc-surf-severe-banner__icon {
color: #c2410c;
background: rgba(255, 255, 255, 0.85);
}
.gc-surf-severe-banner--high .gc-surf-severe-banner__level {
color: #ffedd5;
background: #c2410c;
} .gc-surf-severe-banner--extreme {
background: linear-gradient(180deg, #fecaca 0%, #fee2e2 100%);
border-color: #dc2626;
color: #7f1d1d;
box-shadow: 0 4px 12px rgba(220, 38, 38, .22);
animation: gc-severe-pulse 2.4s ease-in-out infinite;
}
.gc-surf-severe-banner--extreme .gc-surf-severe-banner__icon {
color: #b91c1c;
background: rgba(255, 255, 255, 0.9);
}
.gc-surf-severe-banner--extreme .gc-surf-severe-banner__level {
color: #fee2e2;
background: #b91c1c;
}
@keyframes gc-severe-pulse {
0%, 100% { border-color: #dc2626; box-shadow: 0 4px 12px rgba(220, 38, 38, .22); }
50% { border-color: #ef4444; box-shadow: 0 4px 16px rgba(220, 38, 38, .35); }
} @media (max-width: 600px) {
.gc-surf-severe-banner {
padding: 12px 14px;
gap: 10px;
border-radius: 12px;
}
.gc-surf-severe-banner__icon {
width: 36px;
height: 36px;
}
.gc-surf-severe-banner__icon svg {
width: 18px;
height: 18px;
}
.gc-surf-severe-banner__primary {
font-size: 0.88rem;
}
.gc-surf-severe-banner__primary small {
display: block;
margin-top: 2px;
font-size: 0.74rem;
}
.gc-surf-severe-banner__advice {
font-size: 0.8rem;
}
.gc-surf-severe-banner__details {
font-size: 0.72rem;
}
.gc-surf-severe-banner__disclaimer {
font-size: 0.66rem;
}
}
@media (max-width: 380px) {
.gc-surf-severe-banner {
flex-direction: column;
gap: 8px;
}
.gc-surf-severe-banner__icon {
align-self: flex-start;
}
}
@media (prefers-reduced-motion: reduce) {
.gc-surf-severe-banner--extreme {
animation: none;
}
} .gc-surf-card__sub-label {
display: flex;
align-items: center;
gap: 5px;
margin: 8px 0 4px;
font-size: 0.62rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
line-height: 1.2;
}
.gc-surf-card__sub-label small {
font-weight: 500;
text-transform: none;
letter-spacing: 0.01em;
font-size: 0.94em;
opacity: 0.85;
}
.gc-surf-card__sub-label--live {
color: #166534;
}
.gc-surf-card__sub-label--live .gc-surf-card__sub-label-dot {
width: 6px; height: 6px;
border-radius: 50%;
background: #22c55e;
box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.18);
flex-shrink: 0;
position: relative;
}
.gc-surf-card__sub-label--live .gc-surf-card__sub-label-dot::after {
content: '';
position: absolute;
inset: -3px;
border-radius: 50%;
background: #22c55e;
opacity: 0.5;
animation: gc-sublabel-pulse 2.2s ease-out infinite;
}
@keyframes gc-sublabel-pulse {
0% { transform: scale(0.5); opacity: 0.5; }
70%, 100% { transform: scale(2); opacity: 0; }
}
.gc-surf-card__sub-label--forecast {
color: #4583cf;
margin-top: 10px;
}
.gc-surf-card__sub-label--forecast::before {
content: '📊';
font-size: 0.85rem;
filter: grayscale(0.3);
} .gc-surf-best-banner__forecast-hint {
margin: 4px 0 8px;
font-size: 0.7rem;
color: var(--banner-text-muted, #64748b);
line-height: 1.4;
font-style: italic;
opacity: 0.85;
} @media (max-width: 600px) {
.gc-surf-card__sub-label {
font-size: 0.58rem;
}
.gc-surf-best-banner__forecast-hint {
font-size: 0.66rem;
}
}
@media (prefers-reduced-motion: reduce) {
.gc-surf-card__sub-label--live .gc-surf-card__sub-label-dot::after {
animation: none;
}
}  .gc-surf-card__live-numbers {
min-width: 0; }
.gc-surf-card__live-wind {
flex-wrap: wrap;
row-gap: 0;
align-items: baseline;
}
.gc-surf-card__live-kmh,
.gc-surf-card__live-unit {
flex-shrink: 0;
}
.gc-surf-card__live-kt {
flex-basis: 100%;
margin-left: 0;
margin-top: -2px;
font-size: 0.7rem;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 380px) {
.gc-surf-card__live-kt {
font-size: 0.66rem;
}
} .gc-surf-hourly-slot {
display: flex;
flex-direction: column;
}
.gc-surf-hourly-slot__time,
.gc-surf-hourly-slot__compass,
.gc-surf-hourly-slot__wind,
.gc-surf-hourly-slot__bar,
.gc-surf-hourly-slot__details {
flex: 0 0 auto;
} .gc-surf-hourly-slot__weather {
margin-top: auto;
} .gc-surf-hourly-slot__row dd {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 1px;
line-height: 1.15;
}
.gc-surf-hourly-slot__row dd small {
font-size: 0.78em;
font-weight: 500;
opacity: 0.85;
white-space: nowrap;
} .gc-surf-hourly-slot__details {
min-height: 50px;
}
@media (max-width: 600px) {
.gc-surf-hourly-slot__details {
min-height: 46px;
}
.gc-surf-hourly-slot__row dd small {
font-size: 0.74em;
}
}  .gc-wind-comparison {
width: 100%;
border-collapse: collapse;
margin: 1.5rem 0;
font-size: 0.95rem;
background: #ffffff;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.gc-wind-comparison th,
.gc-wind-comparison td {
padding: 0.75rem 1rem;
text-align: left;
border-bottom: 1px solid #e5e7eb;
vertical-align: top;
}
.gc-wind-comparison th {
background: linear-gradient(135deg, #4583cf 0%, #3a6fb0 100%);
color: #ffffff;
font-weight: 600;
font-size: 0.85rem;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.gc-wind-comparison tbody tr:last-child td {
border-bottom: none;
}
.gc-wind-comparison tbody tr:hover {
background: #f9fafb;
}
.gc-wind-comparison td:first-child {
font-weight: 600;
color: #1f2937;
}
.gc-wind-comparison td:last-child {
color: #ec4899;
font-weight: 500;
letter-spacing: 0.05em;
} .gc-spot-wind-component {
background: #f9fafb;
border: 1px solid #e5e7eb;
border-left: 4px solid #4583cf;
border-radius: 8px;
padding: 1rem 1.25rem;
margin: 0.75rem 0;
}
.gc-spot-wind-component__header {
display: flex;
justify-content: space-between;
align-items: baseline;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 0.5rem;
}
.gc-spot-wind-component__name {
font-weight: 700;
font-size: 1.05rem;
color: #1f2937;
}
.gc-spot-wind-component__strength {
font-size: 0.9rem;
color: #4583cf;
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.gc-spot-wind-component__direction {
display: flex;
gap: 0.75rem;
align-items: center;
margin-bottom: 0.5rem;
font-size: 0.85rem;
color: #6b7280;
}
.gc-spot-wind-component__arrow {
background: #4583cf;
color: #ffffff;
padding: 0.15rem 0.5rem;
border-radius: 4px;
font-weight: 600;
font-size: 0.8rem;
}
.gc-spot-wind-component__sector {
font-variant-numeric: tabular-nums;
letter-spacing: 0.02em;
}
.gc-spot-wind-component__description {
font-size: 0.92rem;
color: #4b5563;
line-height: 1.5;
margin: 0.5rem 0;
}
.gc-spot-wind-component__when {
font-size: 0.85rem;
color: #6b7280;
margin: 0.5rem 0 0 0;
}
.gc-spot-wind-component__when strong {
color: #1f2937;
} .gc-disclaimer {
font-size: 0.82rem;
color: #6b7280;
font-style: italic;
line-height: 1.5;
padding: 0.75rem 1rem;
background: #f9fafb;
border-left: 3px solid #d1d5db;
border-radius: 4px;
margin: 1rem 0;
}
.gc-disclaimer a {
color: #4583cf;
text-decoration: none;
border-bottom: 1px dotted #4583cf;
}
.gc-disclaimer a:hover {
color: #ec4899;
border-bottom-color: #ec4899;
} @media (max-width: 640px) {
.gc-wind-comparison {
font-size: 0.82rem;
display: block;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.gc-wind-comparison th,
.gc-wind-comparison td {
padding: 0.5rem 0.6rem;
white-space: nowrap;
}
.gc-wind-comparison th:first-child,
.gc-wind-comparison td:first-child {
position: sticky;
left: 0;
background: #ffffff;
z-index: 1;
}
.gc-wind-comparison thead th:first-child {
background: #4583cf;
}
.gc-spot-wind-component__header {
flex-direction: column;
align-items: flex-start;
gap: 0.25rem;
}
.gc-spot-wind-component__direction {
flex-wrap: wrap;
}
}  @media (min-width: 720px) {
.gc-surf-hourly-list {
grid-auto-flow: row;
grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
grid-auto-columns: unset;
}
} @media (max-width: 719px) {
.gc-surf-spot__hourly {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
scroll-snap-type: x mandatory;
padding-bottom: 8px;
}
.gc-surf-hourly-slot {
scroll-snap-align: start;
} .gc-surf-spot__hourly::-webkit-scrollbar {
height: 6px;
}
.gc-surf-spot__hourly::-webkit-scrollbar-track {
background: #f1f5f9;
border-radius: 3px;
}
.gc-surf-spot__hourly::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 3px;
}
.gc-surf-spot__hourly::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
}