This commit is contained in:
Tomáš Dvořák
2025-10-16 13:32:05 +02:00
commit 12cba639b9
663 changed files with 168914 additions and 0 deletions
+398
View File
@@ -0,0 +1,398 @@
/* Edge style: full-width, minimal paddings, flat sections */
:root { --edge-gap: 16px; }
/* Smooth scroll behavior */
html.edge-theme {
scroll-behavior: smooth;
scroll-padding-top: 80px;
}
@media (prefers-reduced-motion: reduce) {
html.edge-theme {
scroll-behavior: auto;
}
.edge *, .edge *::before, .edge *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
.edge { width: 100%; color: #111; background: #fff; }
/* Base tokens, resets and utilities for Edge */
.edge {
--edge-fg: #111827;
--edge-muted: #4a5568;
--edge-card: #fff;
--edge-card-border: rgba(0,0,0,.08);
--edge-soft: #f2f2f2;
--edge-radius-sm: 8px;
--edge-radius-md: 10px;
--edge-shadow: 0 6px 18px rgba(0,0,0,0.08);
--edge-ring: 0 0 0 3px rgba(59,130,246,0.35);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
/* Dark mode support */
.chakra-ui-dark .edge {
background: #0f1115;
color: #e8eaf0;
--edge-fg: #e8eaf0;
--edge-muted: #a0aec0;
--edge-card: #1a1d29;
--edge-card-border: rgba(255,255,255,0.12);
--edge-soft: #1a1f29;
--edge-shadow: 0 6px 18px rgba(0,0,0,0.3);
}
.edge *, .edge *::before, .edge *::after { box-sizing: border-box; }
.edge a { color: var(--primary, #1f2937); text-decoration: none; transition: color .18s ease, background .18s ease, transform .18s ease; }
.edge a:focus-visible, .edge button:focus-visible { outline: none; box-shadow: var(--edge-ring); border-radius: 8px; }
.edge img { max-width: 100%; display: block; }
.edge .muted { color: var(--edge-muted); }
.edge .visually-hidden { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Scrollbar for horizontal tracks */
.edge ::-webkit-scrollbar { height: 10px; width: 10px; }
.edge ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 999px; }
.edge { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.2) transparent; }
/* Full-bleed helper */
.edge .bleed { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
/* Hero (fading blogs) - Enhanced */
.edge-hero { position: relative; height: min(75vh, 720px); overflow: hidden; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.edge-hero .slides { position: relative; width: 100%; height: 100%; }
.edge-hero .slide { position: absolute; inset: 0; background-position: center; background-size: cover; opacity: 0; transform: scale(1.03); transition: opacity .7s ease, transform .8s ease; display: block; text-decoration: none; }
.edge-hero .slide.active { opacity: 1; transform: scale(1); }
.edge-hero .overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 24px; background: linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.25) 40%, rgba(0,0,0,0.75) 100%); }
.edge-hero .title { color: #fff; text-shadow: 0 4px 24px rgba(0,0,0,.55); font-size: clamp(1.8rem, 4vw, 3.4rem); margin: 0 0 10px 0; letter-spacing: -0.02em; }
.edge-hero .title .em { font-style: italic; font-weight: 500; opacity: .95; }
.edge-hero .title .strong { font-weight: 900; }
.edge-hero .link { display:inline-block; margin-top: 8px; color: #fff; font-weight: 700; text-decoration: none; padding: 10px 18px; background: rgba(255,255,255,0.18); border: 2px solid rgba(255,255,255,0.5); border-radius: 10px; backdrop-filter: blur(8px); transition: all .25s ease; }
.edge-hero .link:hover { background: rgba(255,255,255,0.28); border-color: #fff; transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.3); }
.edge-hero .pagers { position: absolute; right: 18px; bottom: 16px; display: flex; gap: 8px; }
.edge-hero .pager { width: 32px; height: 32px; border-radius: 8px; border: 2px solid rgba(255,255,255,0.7); background: rgba(0,0,0,0.15); backdrop-filter: blur(6px); color: #fff; font-weight: 800; cursor: pointer; opacity: .9; transition: all .25s ease; }
.edge-hero .pager.active, .edge-hero .pager:hover { background: #fff; color: #000; opacity: 1; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.3); }
.edge-hero .pager:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.5); }
/* Upcoming section - Enhanced */
.edge-upcoming { padding: 20px 0; }
.edge-upcoming .head { display:flex; align-items:center; justify-content:space-between; gap: 10px; margin-bottom: 12px; }
.edge-upcoming .tabs { display:flex; gap:8px; flex-wrap:wrap; }
.edge-upcoming .tabs button { padding:8px 14px; border:2px solid var(--primary); color: var(--primary); background: color-mix(in srgb, var(--primary) 5%, transparent); border-radius:999px; font-weight:800; cursor:pointer; transition: all .25s ease; position: relative; overflow: hidden; }
.edge-upcoming .tabs button::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary))); opacity: 0; transition: opacity .25s ease; }
.edge-upcoming .tabs button:hover::before { opacity: 1; }
.edge-upcoming .tabs button:hover { color: var(--text-on-primary, #fff); transform: translateY(-2px); box-shadow: 0 4px 12px color-mix(in srgb, var(--primary) 30%, transparent); }
.edge-upcoming .tabs button span { position: relative; z-index: 1; }
.edge-upcoming .tabs button:focus-visible { outline: none; box-shadow: var(--edge-ring); }
.edge-upcoming .tabs button.active { background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary))); color: var(--text-on-primary, #fff); box-shadow: 0 4px 16px color-mix(in srgb, var(--primary) 35%, transparent); }
.edge-upcoming .tabs button.active::before { opacity: 0; }
.edge-upcoming .card {
display:grid;
grid-template-columns: 1fr auto 1fr;
align-items:center;
gap: 16px;
padding: 20px;
border-top: 4px solid var(--secondary);
background: var(--edge-card);
border:1px solid var(--edge-card-border);
border-radius: var(--edge-radius-md);
box-shadow: 0 6px 20px rgba(0,0,0,0.08), 0 2px 8px rgba(0,0,0,0.04);
transition: all .35s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
overflow: hidden;
will-change: transform;
}
.edge-upcoming .card:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.edge-upcoming .card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--primary), var(--secondary)); transform: scaleX(0); transition: transform .3s ease; }
.edge-upcoming .card:hover::after { transform: scaleX(1); }
.edge-upcoming .card:hover {
transform: translateY(-5px) scale(1.01);
box-shadow: 0 16px 40px rgba(0,0,0,0.15), 0 6px 16px rgba(0,0,0,0.08);
border-color: color-mix(in srgb, var(--primary) 40%, var(--edge-card-border));
}
.edge-upcoming .team { display:flex; flex-direction:column; align-items:center; gap:8px; transition: transform .25s ease; }
.edge-upcoming .card:hover .team { transform: scale(1.03); }
.edge-upcoming .team img { width: 68px; height: 68px; border-radius: 50%; background: var(--bg-soft, #f2f2f2); object-fit: cover; box-shadow: 0 3px 10px rgba(0,0,0,0.1); border: 2px solid var(--edge-card-border); transition: all .25s ease; }
.edge-upcoming .card:hover .team img { box-shadow: 0 6px 18px rgba(0,0,0,0.18); border-color: var(--primary); }
.edge-upcoming .vs { font-weight:900; color: var(--dark-gray, #4a5568); font-size: 1.1rem; }
.edge-upcoming .meta { text-align:center; color: var(--dark-gray, #4a5568); font-weight: 600; }
.edge-upcoming .links { display:flex; gap:10px; justify-content:center; margin-top: 10px; }
.edge-upcoming .links a { color: var(--primary); font-weight: 700; text-decoration: none; padding: 6px 12px; border-radius: 6px; transition: all .2s ease; }
.edge-upcoming .links a:hover { background: color-mix(in srgb, var(--primary) 12%, transparent); text-decoration: none; transform: translateY(-1px); }
/* Content grid */
.edge-grid { display:grid; grid-template-columns: 2fr 1fr; gap: 20px; }
@media (max-width: 980px) { .edge-grid { grid-template-columns: 1fr; } }
.edge-grid .left .blogs4 { display:grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (max-width: 700px) { .edge-grid .left .blogs4 { grid-template-columns: 1fr; } }
.edge-grid .left .bcard {
display:block;
border:1px solid var(--edge-card-border);
border-radius:12px;
overflow:hidden;
text-decoration:none;
color: inherit;
background: var(--edge-card);
transition: all .35s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
will-change: transform;
}
.edge-grid .left .bcard:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.edge-grid .left .bcard::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: linear-gradient(180deg, var(--primary), var(--secondary)); transform: scaleY(0); transition: transform .3s ease; z-index: 1; }
.edge-grid .left .bcard:hover::before { transform: scaleY(1); }
.edge-grid .left .bcard:hover {
transform: translateY(-6px);
box-shadow: 0 20px 48px rgba(0,0,0,0.15), 0 8px 16px rgba(0,0,0,0.08);
border-color: color-mix(in srgb, var(--primary) 40%, var(--edge-card-border));
}
.edge-grid .left .bcard .thumb { height: 180px; background: var(--bg-soft, #f2f2f2); background-position:center; background-size:cover; transition: transform .4s ease; }
.edge-grid .left .bcard:hover .thumb { transform: scale(1.05); }
.edge-grid .left .bcard .meta { padding:12px; font-weight:700; color: var(--edge-fg); transition: color .2s ease; }
.edge-grid .left .bcard:hover .meta { color: var(--primary); }
.edge-grid .right .tables { border:1px solid var(--edge-card-border); border-radius:12px; padding: 12px; background: var(--edge-card); box-shadow: 0 4px 16px rgba(0,0,0,0.04); }
.edge-grid .right .tabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom: 10px; }
.edge-grid .right .tabs button { padding:7px 12px; border:2px solid var(--edge-card-border); border-radius:8px; background: var(--edge-card); cursor:pointer; font-weight: 700; transition: all .25s ease; }
.edge-grid .right .tabs button:hover { background: linear-gradient(135deg, color-mix(in srgb, var(--secondary) 20%, var(--edge-card)), color-mix(in srgb, var(--secondary) 10%, var(--edge-card))); color: var(--primary); border-color: transparent; transform: translateY(-1px); box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
.edge-grid .right .tabs button.active { background: linear-gradient(135deg, var(--secondary), color-mix(in srgb, var(--secondary) 90%, #000)); color: var(--primary); border-color: transparent; box-shadow: 0 3px 10px rgba(0,0,0,0.12); }
.edge-grid .right .row { display:grid; grid-template-columns: auto 1fr auto; gap:10px; padding: 8px 6px; border-bottom:1px solid var(--light-gray, rgba(0,0,0,.12)); transition: all .2s ease; border-radius: 6px; }
.edge-grid .right .row:hover { background: color-mix(in srgb, var(--primary) 6%, transparent); transform: translateX(2px); }
/* Videos - Enhanced with club colors */
.edge-videos { padding: 18px 0; }
.edge-videos .wrap { display:grid; grid-template-columns: 2fr 1fr; gap: 16px; }
.edge-videos .main { position: relative; padding-top: 56.25%; background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 70%, #000)); border-radius: 12px; overflow:hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.2); border: 3px solid transparent; transition: all 0.3s ease; }
.edge-videos .main:hover { border-color: var(--secondary); box-shadow: 0 12px 48px color-mix(in srgb, var(--primary) 40%, rgba(0,0,0,0.3)); transform: translateY(-2px); }
.edge-videos .main iframe, .edge-videos .main a { position:absolute; inset:0; width:100%; height:100%; border-radius: 10px; }
.edge-videos .grid4 { display:grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.edge-videos .small { position: relative; padding-top: 56.25%; background: linear-gradient(135deg, color-mix(in srgb, var(--primary) 80%, #000), #000); border-radius: 10px; overflow:hidden; border: 2px solid var(--edge-card-border); transition: all 0.3s ease; }
.edge-videos .small:hover { border-color: var(--primary); box-shadow: 0 8px 24px rgba(0,0,0,0.2); transform: scale(1.02); }
.edge-videos .small a, .edge-videos .small iframe { position:absolute; inset:0; width:100%; height:100%; border-radius: 8px; }
/* When using VideosSection inside container */
.edge-videos .container { padding-top: 8px; padding-bottom: 8px; }
/* Team scroller */
.edge-team { padding: 18px 0; }
.edge-team .tabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom: 8px; }
.edge-team .tabs button { padding:6px 10px; border:1px solid var(--edge-card-border); border-radius:8px; background: var(--edge-card); cursor:pointer; transition: background .18s ease, color .18s ease, transform .18s ease, border-color .18s ease; }
.edge-team .tabs button:hover { background: var(--secondary); color: var(--primary); border-color: transparent; transform: translateY(-1px); }
.edge-team .tabs button.active { background: var(--secondary); color: var(--primary); border-color: transparent; }
.edge-team .track { display:flex; gap:12px; overflow-x:auto; padding:6px 2px; }
.edge-team .track { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.2) transparent; }
.edge-team .track::-webkit-scrollbar { height: 10px; }
.edge-team .track::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 999px; }
.edge-team .card {
flex:0 0 auto;
width: 180px;
border:1px solid var(--edge-card-border);
border-top: 3px solid var(--primary);
border-radius: 12px;
padding: 14px;
background: var(--edge-card);
text-align:center;
transition: all .35s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer;
position: relative;
overflow: hidden;
will-change: transform;
}
.edge-team .card:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.edge-team .card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--primary), var(--secondary)); transform: scaleX(0); transition: transform .3s ease; }
.edge-team .card:hover::before { transform: scaleX(1); }
.edge-team .card:hover {
transform: translateY(-8px) scale(1.02);
box-shadow: 0 16px 40px rgba(0,0,0,0.18), 0 6px 16px rgba(0,0,0,0.1);
border-color: var(--primary);
}
.edge-team .photo { width:100%; height: 170px; background: var(--bg-soft, #f2f2f2); border-radius: 10px; background-position:center; background-size:cover; transition: transform .3s ease; box-shadow: 0 2px 8px rgba(0,0,0,0.08); }
.edge-team .card:hover .photo { transform: scale(1.05); }
.edge-team .name { font-weight: 800; margin-top: 10px; transition: color .2s ease; }
.edge-team .card:hover .name { color: var(--primary); }
.edge-team .role { color: var(--dark-gray, #4a5568); font-weight: 600; font-size: .9rem; }
.edge-team .number { font-weight: 900; opacity: .85; color: var(--secondary); }
/* Social links and embeds */
.edge-socials { padding: 12px 0; }
.edge-socials .container { display: grid; gap: 10px; }
.edge-socials .links { display:flex; gap: 8px; flex-wrap: wrap; }
.edge-socials .links a.btn { text-decoration: none; }
.edge-socials iframe { border: none; overflow: hidden; max-width: 700px; width: 100%; height: 280px; }
/* Clothing grid */
.edge-merch { padding: 18px 0; }
.edge-merch .grid { display:grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 980px) { .edge-merch .grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .edge-merch .grid { grid-template-columns: 1fr; } }
.edge-merch .item { display:block; border:1px solid var(--edge-card-border); border-radius:12px; overflow:hidden; background: var(--edge-card); text-decoration: none; color: inherit; transition: all .3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; }
.edge-merch .item::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--primary), var(--secondary)); transform: scaleX(0); transition: transform .3s ease; }
.edge-merch .item:hover::after { transform: scaleX(1); }
.edge-merch .item:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,0.12); border-color: color-mix(in srgb, var(--primary) 30%, var(--edge-card-border)); }
.edge-merch .item .thumb { height: 200px; background: var(--bg-soft, #f2f2f2); background-position:center; background-size:cover; transition: transform .4s ease; }
.edge-merch .item:hover .thumb { transform: scale(1.08); }
.edge-merch .item .meta { padding: 12px; font-weight: 700; color: var(--edge-fg); transition: color .2s ease; }
.edge-merch .item:hover .meta { color: var(--primary); }
/* Activities */
.edge-activities { padding: 18px 0; }
.edge-activities .section-head { display:flex; align-items:center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.edge-activities .grid3 { display:grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
@media (max-width: 980px) { .edge-activities .grid3 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .edge-activities .grid3 { grid-template-columns: 1fr; } }
.edge-activities .card { border:1px solid var(--edge-card-border); border-radius: 10px; background: var(--edge-card); overflow:hidden; }
.edge-activities .card .head { display:flex; align-items:center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--edge-card-border); }
.edge-activities .card .body { padding: 10px; }
.edge-activities .chip { background: var(--edge-soft); border:1px solid var(--edge-card-border); border-radius:999px; padding: 4px 8px; font-weight: 800; font-size: 12px; }
/* Sponsors grid */
.edge-sponsors { padding: 18px 0; }
.edge-sponsors .grid { display:grid; grid-template-columns: repeat(6, 1fr); gap: 16px; }
@media (max-width: 1100px) { .edge-sponsors .grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 700px) { .edge-sponsors .grid { grid-template-columns: repeat(2, 1fr); } }
.edge-sponsors .tile { display:flex; align-items:center; justify-content:center; min-height: 90px; border-radius: 12px; padding: 12px; border: 1px solid transparent; background: transparent; filter: grayscale(0.8); transition: all .3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; }
.edge-sponsors .tile img { max-width: 100%; max-height: 54px; object-fit: contain; opacity: 0.85; transition: opacity .3s ease; }
.edge-sponsors .tile:hover { filter: grayscale(0); transform: translateY(-4px) scale(1.05); border-color: var(--edge-card-border); background: color-mix(in srgb, var(--primary) 4%, var(--edge-card)); box-shadow: 0 8px 24px rgba(0,0,0,0.08); }
.edge-sponsors .tile:hover img { opacity: 1; }
.edge-sponsors .tile:focus-visible { outline: none; box-shadow: var(--edge-ring), 0 8px 24px rgba(0,0,0,0.08); }
/* Back to top button */
.edge-top { position: fixed; right: 18px; bottom: 18px; z-index: 50; display:none; }
.edge-top.show { display:block; }
.edge-top .btn { border-radius: 999px; padding: 10px 14px; border: 2px solid var(--primary); background: var(--edge-card); color: var(--primary); font-weight: 800; cursor: pointer; transition: transform .18s ease, box-shadow .18s ease; }
.edge-top .btn:hover { transform: translateY(-2px); box-shadow: var(--edge-shadow); }
.edge-top .btn:focus-visible { outline: none; box-shadow: var(--edge-ring), var(--edge-shadow); }
/* Lazy load fade-in animation */
@keyframes edgeFadeIn {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.edge .fade-in-visible {
animation: edgeFadeIn 0.7s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
.edge .fade-in-hidden {
opacity: 0;
}
/* ===================== */
/* Edge UX Enhancements */
/* ===================== */
/* Layout helpers */
.edge .container { max-width: 1100px; margin: 0 auto; padding: 0 16px; }
.edge .section { margin: 20px 0; }
@media (max-width: 640px){ .edge .container { padding: 0 12px; } .edge .section { margin: 16px 0; } }
/* Typography refinements */
.edge h1 { font-size: clamp(28px, 5vw, 40px); font-weight: 800; color: var(--edge-fg); }
.edge h2 { font-size: clamp(22px, 3.5vw, 28px); font-weight: 800; color: var(--edge-fg); }
.edge h3 { font-size: clamp(18px, 3vw, 20px); font-weight: 800; color: var(--edge-fg); }
.edge .lead { font-size: clamp(16px, 2.5vw, 18px); color: var(--edge-muted); line-height: 1.6; }
.edge small, .edge .caption { font-size: 12px; opacity: .85; }
/* Links */
.edge a:hover { color: var(--primary-hover, #111); }
.edge a.underline:hover { text-decoration: underline; }
/* Buttons */
.edge .btn { cursor: pointer; user-select: none; }
.edge .btn.secondary { background: var(--edge-soft); color: var(--edge-fg); border:1px solid var(--edge-card-border); border-radius: 10px; padding: 10px 14px; font-weight: 800; }
.edge .btn.secondary:hover { background: #eaeaea; box-shadow: var(--edge-shadow); transform: translateY(-1px); }
.edge .btn.ghost { background: transparent; color: var(--primary); border:1px solid var(--edge-card-border); border-radius: 10px; padding: 10px 14px; font-weight: 800; }
.edge .btn.ghost:hover { background: rgba(0,0,0,0.035); }
.edge .btn[disabled], .edge .btn.disabled { opacity: .6; pointer-events: none; filter: grayscale(10%); }
/* Form fields */
.edge .field { display:flex; flex-direction: column; gap: 6px; }
.edge label { font-weight: 700; font-size: 12px; color: var(--edge-muted); }
.edge input.input, .edge select.select, .edge textarea.textarea {
width: 100%; padding: 10px 12px; color: var(--edge-fg);
background: #fff; border:1px solid var(--edge-card-border); border-radius: 10px;
outline: none; transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.edge input.input::placeholder, .edge textarea.textarea::placeholder { color: rgba(17,24,39,0.6); }
.edge input.input:hover, .edge select.select:hover, .edge textarea.textarea:hover { border-color: rgba(0,0,0,0.18); }
.edge input.input:focus, .edge select.select:focus, .edge textarea.textarea:focus { box-shadow: var(--edge-ring); background: #fff; }
.edge .helper { font-size: 12px; color: var(--edge-muted); }
.edge .error { color: #b91c1c; font-size: 12px; }
/* Chips / badges */
.edge .chip, .edge .badge, .edge .tag { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border-radius:999px; border:1px solid var(--edge-card-border); background: #fff; color: var(--edge-fg); font-weight:700; font-size:12px; }
.edge .badge.success { border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.12); }
.edge .badge.warn { border-color: rgba(234,179,8,0.4); background: rgba(234,179,8,0.12); }
.edge .badge.info { border-color: rgba(59,130,246,0.4); background: rgba(59,130,246,0.12); }
/* Grid helpers */
.edge .grid { display:grid; gap: 12px; }
.edge .grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.edge .grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.edge .grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px){ .edge .grid.cols-3, .edge .grid.cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px){ .edge .grid.cols-2, .edge .grid.cols-3, .edge .grid.cols-4 { grid-template-columns: 1fr; } }
/* Empty state */
.edge .empty-state { text-align:center; padding: 16px; border-radius: 10px; background: var(--edge-soft); border:1px solid var(--edge-card-border); }
.edge .empty-state .icon { width: 48px; height: 48px; margin: 0 auto 8px; opacity: .9; }
/* Skeleton loader */
.edge .skeleton { position: relative; overflow: hidden; background: var(--edge-soft); border-radius: 10px; }
.edge .skeleton::after { content: ""; position:absolute; inset:0; background: linear-gradient(90deg, transparent, rgba(0,0,0,0.05), transparent); animation: edge-shimmer 1.6s infinite; }
@keyframes edge-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
/* Hero content entrance - Enhanced */
.edge-hero .overlay > * { opacity: 0; transform: translateY(12px); animation: edge-fade-up .8s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.edge-hero .overlay > *:nth-child(1) { animation-delay: .1s; }
.edge-hero .overlay > *:nth-child(2) { animation-delay: .2s; }
.edge-hero .overlay > *:nth-child(3) { animation-delay: .3s; }
@keyframes edge-fade-up { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
/* Card entrance animations */
.edge-grid .left .bcard { opacity: 0; animation: edge-card-appear .5s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.edge-grid .left .bcard:nth-child(1) { animation-delay: .05s; }
.edge-grid .left .bcard:nth-child(2) { animation-delay: .1s; }
.edge-grid .left .bcard:nth-child(3) { animation-delay: .15s; }
.edge-grid .left .bcard:nth-child(4) { animation-delay: .2s; }
@keyframes edge-card-appear { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
/* Tables: sticky header option */
.edge .tables.sticky .head { position: sticky; top: 0; z-index: 1; backdrop-filter: blur(4px); background: rgba(255,255,255,0.75); border-bottom: 1px solid var(--edge-card-border); }
/* Glass utility */
.edge .glass { background: rgba(255,255,255,0.75); border:1px solid var(--edge-card-border); backdrop-filter: blur(6px); border-radius: 10px; }
/* Accessibility */
.edge [role="button"], .edge button, .edge .btn { -webkit-tap-highlight-color: transparent; }
.edge ::selection { background: rgba(59,130,246,0.25); color: #000; }
/* Responsive adjustments */
@media (max-width: 560px){
.edge .btn, .edge .btn.secondary, .edge .btn.ghost { padding: 10px 12px; }
.edge-grid .left .bcard .thumb { height: 140px; }
.edge-videos .grid4 { gap: 10px; }
}
/* Print adjustments */
@media print {
.edge { background: #fff !important; color: #111827 !important; }
.edge a { color: #111827 !important; text-decoration: underline; }
.edge .edge-hero .overlay { background: transparent !important; }
}
+422
View File
@@ -0,0 +1,422 @@
/* Magazine style layout */
:root {
--mag-gap: 14px;
}
/* Smooth scroll behavior */
html.magazine-theme {
scroll-behavior: smooth;
scroll-padding-top: 80px;
}
@media (prefers-reduced-motion: reduce) {
html.magazine-theme {
scroll-behavior: auto;
}
.magazine *, .magazine *::before, .magazine *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
.magazine {
background: #fff;
color: #1a1a1a;
}
/* Base tokens, resets and utilities */
.magazine {
--mag-fg: #111827;
--mag-muted: #4a5568;
--mag-card: #fff;
--mag-card-border: rgba(0,0,0,.08);
--mag-soft: #f2f2f2;
--mag-radius: 12px;
--mag-shadow: 0 6px 18px rgba(0,0,0,0.08);
--mag-ring: 0 0 0 3px rgba(59,130,246,0.35);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
/* Dark mode support */
.chakra-ui-dark .magazine {
background: #0f1115;
color: #e8eaf0;
--mag-fg: #e8eaf0;
--mag-muted: #a0aec0;
--mag-card: #1a1d29;
--mag-card-border: rgba(255,255,255,0.12);
--mag-soft: #1a1f29;
--mag-shadow: 0 6px 18px rgba(0,0,0,0.3);
}
.magazine *, .magazine *::before, .magazine *::after { box-sizing: border-box; }
.magazine img { max-width: 100%; display: block; }
.magazine a { color: inherit; text-decoration: none; transition: color .18s ease, background .18s ease, transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.magazine a:focus-visible, .magazine button:focus-visible { outline: none; box-shadow: var(--mag-ring); border-radius: 8px; }
.magazine .muted { color: var(--mag-muted); }
.magazine .visually-hidden { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Two thin bars with club colors at the very top */
.mag-bars { height: 6px; display: grid; grid-template-columns: 1fr 1fr; }
.mag-bars .c1 { background: var(--primary); }
.mag-bars .c2 { background: var(--secondary); }
/* Centered container leaving corners empty */
.mag-container { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
/* Header area: colors + logo + name + nav */
.mag-header { display: flex; flex-direction: column; gap: 10px; padding: 16px 0 8px; }
.mag-header .club-colors { display: flex; gap: 6px; }
.mag-header .club-colors .swatch { width: 28px; height: 6px; border-radius: 999px; display: inline-block; }
.mag-header .brand { display: flex; align-items: center; gap: 12px; }
.mag-header .brand .logo { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; background: var(--bg-soft, #f2f2f2); border: 2px solid var(--primary); }
.mag-header .brand .name { margin: 0; font-size: 1.8rem; letter-spacing: .4px; }
/* Nav in club color */
.mag-nav { display: flex; gap: 8px; flex-wrap: wrap; background: var(--primary); color: var(--text-on-primary, #fff); border-radius: 10px; padding: 8px; }
.mag-nav .link { color: var(--text-on-primary, #fff); text-decoration: none; padding: 6px 10px; border-radius: 6px; transition: background .18s ease, transform .18s ease; }
.mag-nav .link:hover { background: color-mix(in srgb, var(--primary) 85%, #000); transform: translateY(-1px); }
.mag-nav .link:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.6); }
/* Hero: 3 cards with first larger */
.mag-hero { display: grid; grid-template-columns: 2fr 1fr; grid-auto-rows: 220px; gap: var(--mag-gap); margin: 16px 0 22px; }
.mag-card {
position: relative;
border-radius: var(--mag-radius);
overflow: hidden;
background: var(--mag-card);
min-height: 180px;
text-decoration: none;
color: inherit;
border: 1px solid var(--mag-card-border);
box-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 2px 6px rgba(0,0,0,0.04);
transition: transform .25s ease-out, box-shadow .25s ease-out, border-color .25s ease-out;
/* GPU acceleration */
transform: translateZ(0);
backface-visibility: hidden;
}
.mag-card:hover {
transform: translateY(-4px) scale(1.01) translateZ(0);
box-shadow: 0 16px 36px rgba(0,0,0,0.15), 0 6px 12px rgba(0,0,0,0.08);
border-color: color-mix(in srgb, var(--primary) 30%, transparent);
}
.mag-card:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.mag-card.large { grid-row: span 2; }
.mag-card .bg { position: absolute; inset: 0; background-position: center; background-size: cover; filter: brightness(.85); }
.mag-card .overlay { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px; background: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.3) 40%, rgba(0,0,0,0.75) 100%); color: var(--text-on-primary, #fff); transition: background 0.3s ease; }
.mag-card:hover .overlay { background: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.4) 40%, rgba(0,0,0,0.85) 100%); }
.mag-card .overlay .cat { opacity: .9; font-size: .85rem; }
.mag-card .overlay .title {
margin: 4px 0 0;
font-size: 1.35rem;
line-height: 1.3;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
@media (max-width: 960px) {
.mag-hero { grid-template-columns: 1fr; grid-auto-rows: 200px; }
.mag-card.large { grid-row: auto; }
}
/* Upcoming matches section */
.mag-upcoming { margin: 8px 0 20px; }
.mag-upcoming .head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.mag-upcoming .head h3 { margin: 0; }
.mag-upcoming .tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.mag-upcoming .tabs button {
padding: 8px 14px;
border: 2px solid var(--primary);
background: transparent;
color: var(--primary);
border-radius: 999px;
cursor: pointer;
font-weight: 700;
transition: all .3s ease;
position: relative;
overflow: hidden;
}
.mag-upcoming .tabs button::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary)));
opacity: 0;
transition: opacity .3s ease;
}
.mag-upcoming .tabs button:hover::before { opacity: 1; }
.mag-upcoming .tabs button:hover {
color: var(--text-on-primary, #fff);
transform: translateY(-2px);
box-shadow: 0 4px 16px color-mix(in srgb, var(--primary) 30%, transparent);
}
.mag-upcoming .tabs button span { position: relative; z-index: 1; }
.mag-upcoming .tabs button:focus-visible { outline: none; box-shadow: var(--mag-ring); }
.mag-upcoming .tabs button.active {
background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary)));
color: var(--text-on-primary, #fff);
box-shadow: 0 4px 16px color-mix(in srgb, var(--primary) 35%, transparent);
}
.mag-upcoming .tabs button.active::before { opacity: 0; }
/* Categories switcher */
.mag-cats { margin: 8px 0 12px; }
.mag-cats .cats { display:flex; gap:8px; flex-wrap:wrap; background: color-mix(in srgb, var(--primary) 10%, transparent); padding: 8px; border-radius: 10px; }
.mag-cats .cat { padding:6px 10px; border:2px solid var(--primary); background: transparent; color: var(--primary); border-radius:999px; font-weight:800; cursor:pointer; transition: background .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease; }
.mag-cats .cat:hover { background: color-mix(in srgb, var(--primary) 12%, #fff); transform: translateY(-1px); }
.mag-cats .cat.active { background: var(--primary); color: var(--text-on-primary, #fff); box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 35%, transparent); }
/* Slider: show two items by default on desktop */
.match-slider {
display: flex;
gap: 14px;
overflow-x: auto;
overflow-y: hidden;
padding: 6px 2px 6px;
scroll-snap-type: x proximity; /* Changed from mandatory to proximity for smoother scrolling */
-webkit-overflow-scrolling: touch;
scroll-behavior: smooth;
}
.match-slider::-webkit-scrollbar { height: 8px; }
.match-slider::-webkit-scrollbar-thumb { background: var(--light-gray, rgba(0,0,0,.2)); border-radius: 999px; }
.match-slider { scrollbar-width: thin; scrollbar-color: var(--light-gray, rgba(0,0,0,.2)) transparent; }
.match-tile {
flex: 0 0 calc(50% - 7px);
min-width: 320px;
background: var(--mag-card);
border: 1px solid var(--mag-card-border);
border-radius: var(--mag-radius);
text-decoration: none;
color: inherit;
padding: 14px 16px;
scroll-snap-align: start;
/* Optimized transitions - only transform and box-shadow */
transition: transform .25s ease-out, box-shadow .25s ease-out, border-color .25s ease-out;
/* GPU acceleration */
transform: translateZ(0);
backface-visibility: hidden;
}
.match-tile:hover {
transform: translateY(-4px) translateZ(0);
box-shadow: 0 12px 32px rgba(0,0,0,0.12), 0 4px 12px rgba(0,0,0,0.06);
border-color: color-mix(in srgb, var(--primary) 30%, transparent);
}
.match-tile:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.match-tile .row { display: flex; align-items: center; justify-content: space-between; }
.match-tile .row.top .meta { font-size: .9rem; color: var(--mag-muted); }
.match-tile .row.teams { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; margin-top: 6px; }
.match-tile .row.teams .team { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.match-tile .row.teams .team img { width: 36px; height: 36px; border-radius: 50%; background: var(--mag-soft); object-fit: cover; }
.match-tile .row.teams .vs { font-weight: 800; color: var(--dark-gray, #4a5568); }
@media (max-width: 900px) { .match-tile { flex-basis: 85%; } }
/* Main content grid */
.mag-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; margin: 10px 0 24px; }
.mag-grid .col.left h3, .mag-grid .col.right h3 { margin-top: 0; }
.mag-grid .left .list { display: grid; grid-template-columns: 1fr; gap: 10px; }
.mag-grid .left .item {
display: grid;
grid-template-columns: 160px 1fr;
gap: 12px;
border: 1px solid var(--mag-card-border);
border-radius: var(--mag-radius);
background: var(--mag-card);
padding: 12px;
text-decoration: none;
color: inherit;
transition: transform .25s ease-out, box-shadow .25s ease-out, border-color .25s ease-out, background .25s ease-out;
position: relative;
overflow: hidden;
/* GPU acceleration */
transform: translateZ(0);
backface-visibility: hidden;
}
.mag-grid .left .item::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 4px;
height: 100%;
background: var(--primary);
transform: scaleY(0);
transition: transform 0.3s ease;
}
.mag-grid .left .item:hover::before {
transform: scaleY(1);
}
.mag-grid .left .item:hover {
transform: translateY(-3px) translateZ(0);
box-shadow: 0 12px 32px rgba(0,0,0,0.12), 0 4px 12px rgba(0,0,0,0.06);
border-color: color-mix(in srgb, var(--primary) 30%, transparent);
background: color-mix(in srgb, var(--primary) 3%, var(--mag-card));
}
.mag-grid .left .item:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.mag-grid .left .item .thumb { width: 100%; height: 110px; background: var(--bg-soft, #f2f2f2); border-radius: 8px; background-position: center; background-size: cover; }
.mag-grid .left .item .meta h4 { margin: 0 0 4px 0; font-size: 1rem; }
.mag-grid .left .item .meta .excerpt { color: var(--mag-muted); font-size: .9rem; }
.mag-grid .left .more { margin-top: 10px; }
.mag-grid .right .widget { border: 1px solid var(--mag-card-border); border-radius: var(--mag-radius); padding: 12px; background: var(--mag-card); }
.mag-grid .right .tabs { display:flex; gap:8px; flex-wrap:wrap; margin-bottom: 8px; }
.mag-grid .right .tabs button {
padding:8px 14px;
border:2px solid var(--mag-card-border);
border-radius:8px;
background: var(--mag-card);
cursor:pointer;
font-weight: 700;
transition: all .3s ease;
position: relative;
overflow: hidden;
}
.mag-grid .right .tabs button::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, var(--secondary), color-mix(in srgb, var(--secondary) 85%, var(--primary)));
opacity: 0;
transition: opacity .3s ease;
}
.mag-grid .right .tabs button:hover::before { opacity: 0.2; }
.mag-grid .right .tabs button:hover {
background: color-mix(in srgb, var(--secondary) 15%, var(--mag-card));
color: var(--primary);
border-color: var(--secondary);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}
.mag-grid .right .tabs button span { position: relative; z-index: 1; }
.mag-grid .right .tabs button.active {
background: linear-gradient(135deg, var(--secondary), color-mix(in srgb, var(--secondary) 85%, var(--primary)));
color: var(--primary);
border-color: var(--secondary);
box-shadow: 0 4px 16px rgba(0,0,0,0.15);
}
.mag-grid .right .tabs button.active::before { opacity: 0; }
.mag-grid .right .widget + .widget { margin-top: 12px; }
.mag-grid .right .row-table { display: grid; grid-template-columns: auto 1fr auto; gap: 8px; padding: 4px 0; border-bottom: 1px solid var(--light-gray, rgba(0,0,0,.12)); }
.mag-grid .right .muted { color: var(--mag-muted); }
@media (max-width: 960px) {
.mag-grid { grid-template-columns: 1fr; }
.mag-grid .left .item { grid-template-columns: 120px 1fr; }
}
/* Motion preferences */
@media (prefers-reduced-motion: reduce) {
.magazine *, .magazine *::before, .magazine *::after { transition: none !important; animation: none !important; }
}
/* ===================== */
/* Magazine UX Enhancements */
/* ===================== */
/* Layout helpers */
.magazine .container { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
.magazine .section { margin: 20px 0; }
@media (max-width: 640px){ .magazine .container { padding: 0 12px; } .magazine .section { margin: 16px 0; } }
/* Typography refinements */
.magazine h1 { font-size: clamp(28px, 5vw, 40px); font-weight: 800; color: var(--mag-fg); }
.magazine h2 { font-size: clamp(22px, 3.5vw, 28px); font-weight: 800; color: var(--mag-fg); }
.magazine h3 { font-size: clamp(18px, 3vw, 20px); font-weight: 800; color: var(--mag-fg); }
.magazine .lead { font-size: clamp(16px, 2.5vw, 18px); color: var(--mag-muted); line-height: 1.6; }
.magazine small, .magazine .caption { font-size: 12px; opacity: .85; }
/* Links */
.magazine a:hover { color: var(--primary); }
.magazine a.underline:hover { text-decoration: underline; }
/* Buttons */
.magazine .btn { cursor: pointer; user-select: none; }
.magazine .btn.primary { background: var(--primary); color: var(--text-on-primary, #fff); border: 1px solid transparent; border-radius: 10px; padding: 10px 14px; font-weight: 800; }
.magazine .btn.primary:hover { filter: brightness(0.95); box-shadow: var(--mag-shadow); transform: translateY(-1px); }
.magazine .btn.secondary { background: var(--mag-soft); color: var(--mag-fg); border:1px solid var(--mag-card-border); border-radius: 10px; padding: 10px 14px; font-weight: 800; }
.magazine .btn.secondary:hover { background: #eaeaea; box-shadow: var(--mag-shadow); transform: translateY(-1px); }
.magazine .btn.ghost { background: transparent; color: var(--primary); border:1px solid var(--mag-card-border); border-radius: 10px; padding: 10px 14px; font-weight: 800; }
.magazine .btn.ghost:hover { background: rgba(0,0,0,0.035); }
.magazine .btn[disabled], .magazine .btn.disabled { opacity: .6; pointer-events: none; filter: grayscale(10%); }
/* Form fields */
.magazine .field { display:flex; flex-direction: column; gap: 6px; }
.magazine label { font-weight: 700; font-size: 12px; color: var(--mag-muted); }
.magazine input.input, .magazine select.select, .magazine textarea.textarea {
width: 100%; padding: 10px 12px; color: var(--mag-fg);
background: #fff; border:1px solid var(--mag-card-border); border-radius: 10px;
outline: none; transition: border-color .18s ease, box-shadow .18s ease, background .18s ease;
}
.magazine input.input::placeholder, .magazine textarea.textarea::placeholder { color: rgba(17,24,39,0.6); }
.magazine input.input:hover, .magazine select.select:hover, .magazine textarea.textarea:hover { border-color: rgba(0,0,0,0.18); }
.magazine input.input:focus, .magazine select.select:focus, .magazine textarea.textarea:focus { box-shadow: var(--mag-ring); background: #fff; }
.magazine .helper { font-size: 12px; color: var(--mag-muted); }
.magazine .error { color: #b91c1c; font-size: 12px; }
/* Chips / badges */
.magazine .chip, .magazine .badge, .magazine .tag { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border-radius:999px; border:1px solid var(--mag-card-border); background: #fff; color: var(--mag-fg); font-weight:700; font-size:12px; }
.magazine .badge.success { border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.12); }
.magazine .badge.warn { border-color: rgba(234,179,8,0.4); background: rgba(234,179,8,0.12); }
.magazine .badge.info { border-color: rgba(59,130,246,0.4); background: rgba(59,130,246,0.12); }
/* Grid helpers */
.magazine .grid { display:grid; gap: 12px; }
.magazine .grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.magazine .grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.magazine .grid.cols-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px){ .magazine .grid.cols-3, .magazine .grid.cols-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px){ .magazine .grid.cols-2, .magazine .grid.cols-3, .magazine .grid.cols-4 { grid-template-columns: 1fr; } }
/* Empty state */
.magazine .empty-state { text-align:center; padding: 16px; border-radius: var(--mag-radius); background: var(--mag-soft); border:1px solid var(--mag-card-border); }
.magazine .empty-state .icon { width: 48px; height: 48px; margin: 0 auto 8px; opacity: .9; }
/* Skeleton loader */
.magazine .skeleton { position: relative; overflow: hidden; background: var(--mag-soft); border-radius: var(--mag-radius); }
.magazine .skeleton::after { content: ""; position:absolute; inset:0; background: linear-gradient(90deg, transparent, rgba(0,0,0,0.05), transparent); animation: mag-shimmer 1.6s infinite; }
@keyframes mag-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
/* Hero card entrance */
.mag-hero .mag-card { opacity: 0; transform: translateY(8px); animation: mag-fade-up .6s ease forwards; }
.mag-hero .mag-card:nth-child(1) { animation-delay: .05s; }
.mag-hero .mag-card:nth-child(2) { animation-delay: .12s; }
.mag-hero .mag-card:nth-child(3) { animation-delay: .18s; }
@keyframes mag-fade-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
/* Tables: sticky header option */
.magazine .tables.sticky .head { position: sticky; top: 0; z-index: 1; backdrop-filter: blur(4px); background: rgba(255,255,255,0.75); border-bottom: 1px solid var(--mag-card-border); }
/* Glass utility */
.magazine .glass { background: rgba(255,255,255,0.75); border:1px solid var(--mag-card-border); backdrop-filter: blur(6px); border-radius: var(--mag-radius); }
/* Accessibility */
.magazine [role="button"], .magazine button, .magazine .btn { -webkit-tap-highlight-color: transparent; }
.magazine ::selection { background: rgba(59,130,246,0.25); color: #000; }
/* Responsive adjustments */
@media (max-width: 560px){
.magazine .btn, .magazine .btn.secondary, .magazine .btn.ghost, .magazine .btn.primary { padding: 10px 12px; }
.mag-grid { gap: 14px; }
.mag-grid .left .item { grid-template-columns: 100px 1fr; }
}
/* Print adjustments */
@media print {
.magazine { background: #fff !important; color: #111827 !important; }
.magazine a { color: #111827 !important; text-decoration: underline; }
.mag-hero .mag-card .overlay { background: transparent !important; }
}
+313
View File
@@ -0,0 +1,313 @@
/* PRO style full layout */
:root {
--pro-gap: 16px;
}
/* Smooth scroll behavior */
html.pro-theme {
scroll-behavior: smooth;
scroll-padding-top: 80px;
}
@media (prefers-reduced-motion: reduce) {
html.pro-theme {
scroll-behavior: auto;
}
.pro *, .pro *::before, .pro *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
.pro {
background: #fff;
color: #111;
}
/* Base tokens, resets, and utilities for Pro */
.pro {
--pro-fg: #111827;
--pro-muted: #4a5568;
--pro-card: #fff;
--pro-card-border: rgba(0,0,0,.08);
--pro-soft: #f2f2f2;
--pro-radius-sm: 10px;
--pro-radius-md: 12px;
--pro-shadow: 0 8px 22px rgba(0,0,0,0.08);
--pro-ring: 0 0 0 3px rgba(59,130,246,0.35);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
/* Dark mode support */
.chakra-ui-dark .pro {
background: #0f1115;
color: #e8eaf0;
--pro-fg: #e8eaf0;
--pro-muted: #a0aec0;
--pro-card: #1a1d29;
--pro-card-border: rgba(255,255,255,0.12);
--pro-soft: #1a1f29;
--pro-shadow: 0 8px 22px rgba(0,0,0,0.3);
}
.pro *, .pro *::before, .pro *::after { box-sizing: border-box; }
.pro img { max-width: 100%; display: block; }
.pro a { color: inherit; text-decoration: none; transition: color .18s ease, background .18s ease, transform .18s ease, border-color .18s ease, box-shadow .18s ease; }
.pro a:focus-visible, .pro button:focus-visible { outline: none; box-shadow: var(--pro-ring); border-radius: 8px; }
.pro .muted { color: var(--pro-muted); }
.pro .visually-hidden { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
/* Generic horizontal scrollbar polish */
.pro ::-webkit-scrollbar { height: 10px; width: 10px; }
.pro ::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.16); border-radius: 999px; }
.pro { scrollbar-width: thin; scrollbar-color: rgba(0,0,0,0.2) transparent; }
/* Fullscreen hero */
.pro-hero { position: relative; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); height: min(78vh, 720px); overflow: hidden; }
.pro-hero .slides { position: relative; width: 100%; height: 100%; }
.pro-hero .slide { position: absolute; inset: 0; background-position: center; background-size: cover; opacity: 0; transform: scale(1.02); transition: opacity .5s ease, transform .6s ease; display: block; text-decoration: none; }
.pro-hero .slide.active { opacity: 1; transform: scale(1); }
.pro-hero .overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 24px; background: linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.25) 40%, rgba(0,0,0,0.75) 100%); }
.pro-hero .title { color: #fff; text-shadow: 0 4px 24px rgba(0,0,0,.4); font-size: clamp(1.5rem, 3.6vw, 3rem); max-width: 1000px; margin: 0; }
.pro-hero .glow { position: absolute; left:0; right:0; bottom:0; height: 120px; background: linear-gradient(180deg, rgba(0,0,0,0) 0%, color-mix(in srgb, var(--primary) 24%, #000) 100%); pointer-events: none; }
.pro-hero .pagers { position: absolute; right: 18px; bottom: 14px; display: flex; gap: 6px; }
.pro-hero .pager { width: 32px; height: 32px; border-radius: 6px; border: 2px solid #fff; background: transparent; color: #fff; font-weight: 800; cursor: pointer; opacity: .85; transition: background .18s ease, color .18s ease, transform .18s ease; }
.pro-hero .pager.active, .pro-hero .pager:hover { background: #fff; color: #000; opacity: 1; transform: translateY(-1px); }
.pro-hero .pager:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.5); }
/* Hero caption + CTA bottom-left */
.pro-hero .overlay .cap { position: absolute; left: 24px; bottom: 24px; text-align: left; max-width: 900px; }
.pro-hero .overlay .cap .title { margin-bottom: 8px; }
.pro-hero .overlay .cta { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border: 2px solid #fff; color: #fff; background: rgba(0,0,0,0.15); border-radius: 10px; font-weight: 800; text-decoration: none; }
.pro-hero .overlay .cta:hover { background: rgba(0,0,0,0.28); transform: translateY(-1px); }
.pro-hero .overlay .cta:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.5); }
/* Centered container */
.pro-container { max-width: 1200px; margin: 0 auto; padding: 0 16px; }
/* Two-column grid */
.pro-grid { display: grid; grid-template-columns: 2fr 1fr; gap: var(--pro-gap); margin: 22px 0; }
@media (max-width: 1000px) { .pro-grid { grid-template-columns: 1fr; } }
.pro-grid .widget { border: 1px solid var(--pro-card-border); border-radius: var(--pro-radius-md); background: var(--pro-card); padding: 12px; }
.pro-grid .head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.pro-grid .head h3 { margin: 0; }
.pro-grid .tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.pro-grid .tabs button {
padding: 8px 14px;
border: 2px solid var(--primary);
color: var(--primary);
background: transparent;
border-radius: 999px;
font-weight: 800;
cursor: pointer;
transition: all .3s ease;
position: relative;
overflow: hidden;
}
.pro-grid .tabs button::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary)));
opacity: 0;
transition: opacity .3s ease;
}
.pro-grid .tabs button:hover::before { opacity: 1; }
.pro-grid .tabs button:hover {
color: var(--text-on-primary, #fff);
transform: translateY(-2px);
box-shadow: 0 4px 16px color-mix(in srgb, var(--primary) 30%, transparent);
}
.pro-grid .tabs button span { position: relative; z-index: 1; }
.pro-grid .tabs button:focus-visible { outline: none; box-shadow: var(--pro-ring); }
.pro-grid .tabs button.active {
background: linear-gradient(135deg, var(--primary), color-mix(in srgb, var(--primary) 85%, var(--secondary)));
color: var(--text-on-primary, #fff);
box-shadow: 0 4px 16px color-mix(in srgb, var(--primary) 35%, transparent);
}
.pro-grid .tabs button.active::before { opacity: 0; }
/* Matches scroller (left) */
.match-scroller { display: flex; gap: 14px; overflow-x: auto; padding: 4px 2px 8px; scroll-snap-type: x mandatory; }
.match-scroller::-webkit-scrollbar { height: 8px; }
.match-scroller::-webkit-scrollbar-thumb { background: var(--light-gray, rgba(0,0,0,.2)); border-radius: 999px; }
.match-scroller { scrollbar-width: thin; scrollbar-color: var(--light-gray, rgba(0,0,0,.2)) transparent; }
.mcard {
flex: 0 0 100%;
min-width: 320px;
max-width: 560px;
border: 1px solid var(--pro-card-border);
border-radius: var(--pro-radius-sm);
padding: 14px 16px;
background: var(--pro-card);
text-decoration: none;
color: inherit;
scroll-snap-align: start;
transition: all .3s cubic-bezier(0.4, 0, 0.2, 1);
will-change: transform;
}
.mcard:hover {
transform: translateY(-4px);
box-shadow: 0 12px 32px rgba(0,0,0,0.12), 0 4px 12px rgba(0,0,0,0.06);
border-color: color-mix(in srgb, var(--primary) 30%, transparent);
}
.mcard:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.mcard .row { display: flex; justify-content: center; align-items: center; }
.mcard .row.meta { color: var(--pro-muted); gap: 6px; font-size: .9rem; margin-bottom: 4px; }
.mcard .row.teams { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: center; }
.mcard .team { display: flex; align-items: center; gap: 8px; font-weight: 800; }
.mcard .team img { width: 36px; height: 36px; border-radius: 50%; background: var(--pro-soft); object-fit: cover; }
.mcard .vs { font-weight: 900; color: var(--dark-gray, #4a5568); }
/* Blogs auto scroller */
.blog-auto { display: grid; grid-auto-flow: column; grid-auto-columns: 240px; gap: 12px; overflow-x: auto; padding: 6px 2px; scroll-snap-type:x mandatory; }
.blog-auto::-webkit-scrollbar { height: 8px; }
.blog-auto::-webkit-scrollbar-thumb { background: var(--light-gray, rgba(0,0,0,.2)); border-radius: 999px; }
.blog-auto { scrollbar-width: thin; scrollbar-color: var(--light-gray, rgba(0,0,0,.2)) transparent; }
.bcard {
display: flex;
flex-direction: column;
border: 1px solid var(--pro-card-border);
background: var(--pro-card);
border-radius: var(--pro-radius-sm);
text-decoration: none;
color: inherit;
scroll-snap-align: start;
overflow: hidden;
transition: all .3s cubic-bezier(0.4, 0, 0.2, 1);
will-change: transform;
}
.bcard:hover {
transform: translateY(-4px);
box-shadow: 0 12px 32px rgba(0,0,0,0.12), 0 4px 12px rgba(0,0,0,0.06);
border-color: color-mix(in srgb, var(--primary) 30%, transparent);
}
.bcard:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
.bcard .thumb { width: 100%; height: 140px; background: var(--bg-soft, #f2f2f2); background-position: center; background-size: cover; }
.bcard .meta { padding: 8px; }
.bcard .tag { font-size: .8rem; color: var(--secondary); font-weight: 800; }
.bcard .title {
font-weight: 800;
margin: 4px 0 2px;
line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
.bcard .date { font-size: .85rem; color: var(--pro-muted); }
.pro-grid .arrows button { border: 1px solid var(--pro-card-border); background: var(--pro-card); border-radius: 999px; padding: 4px 8px; cursor: pointer; transition: background .18s ease, transform .18s ease, box-shadow .18s ease, border-color .18s ease; }
.pro-grid .arrows button:hover { transform: translateY(-1px); box-shadow: var(--pro-shadow); border-color: rgba(0,0,0,0.14); }
.pro-grid .arrows button:focus-visible { outline: none; box-shadow: var(--pro-ring), var(--pro-shadow); }
/* Blog card cover variant with gradient overlay */
.bcard.cover { position: relative; border: none; background: transparent; }
.bcard.cover .thumb { height: 180px; border-radius: var(--pro-radius-sm); }
.bcard.cover .overlay { position: absolute; inset: 0; display: flex; align-items: flex-end; padding: 8px; border-radius: var(--pro-radius-sm); background: linear-gradient(180deg, rgba(0,0,0,0.0) 0%, rgba(0,0,0,0.3) 40%, rgba(0,0,0,0.75) 100%); transition: background 0.3s ease; }
.bcard.cover:hover .overlay { background: linear-gradient(180deg, rgba(0,0,0,0.0) 0%, rgba(0,0,0,0.4) 40%, rgba(0,0,0,0.85) 100%); }
.bcard.cover .meta { color: #fff; }
.bcard.cover .title { color: #fff; text-shadow: 0 4px 18px rgba(0,0,0,.4); }
/* Standings */
.table { width: 100%; }
.table .thead, .table .tr { display: grid; grid-template-columns: auto 1fr repeat(5, auto); gap: 8px; align-items: center; }
.table .thead { font-weight: 800; color: var(--dark-gray, #4a5568); padding-bottom: 6px; border-bottom: 1px solid var(--light-gray, rgba(0,0,0,.12)); }
.table .tr { padding: 6px 0; border-bottom: 1px solid var(--light-gray, rgba(0,0,0,.12)); }
.table .team { font-weight: 700; }
/* Sponsors faded belt */
.sponsor-belt { position: relative; overflow: hidden; border-radius: 10px; }
.sponsor-belt .track { display:flex; gap: 28px; padding: 12px; width: max-content; animation: pro-slide 28s linear infinite; }
.sponsor-belt:hover .track { animation-play-state: paused; }
.sponsor-belt .tile { display: inline-flex; align-items:center; justify-content:center; min-width: 140px; padding: 6px; }
.sponsor-belt .tile img { max-height: 40px; max-width: 140px; object-fit: contain; opacity: .95; }
.sponsor-belt .mask { position: absolute; top:0; bottom:0; width: 60px; pointer-events: none; }
.sponsor-belt .mask.left { left: 0; background: linear-gradient(90deg, var(--pro-card, #fff) 0%, rgba(255,255,255,0)); }
.sponsor-belt .mask.right { right: 0; background: linear-gradient(270deg, var(--pro-card, #fff) 0%, rgba(255,255,255,0)); }
@keyframes pro-slide { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
/* Ticket widget (right column) */
.ticket { border: 2px dashed var(--pro-card-border); border-radius: 16px; background: var(--pro-card); overflow: hidden; }
.ticket-head { padding: 10px 12px; background: var(--primary); color: var(--text-on-primary, #fff); display:flex; align-items:center; justify-content: space-between; gap: 8px; }
.ticket-head h3 { margin: 0; }
.ticket-head .tabs { display:flex; gap:8px; flex-wrap: wrap; }
.ticket-head .tabs button {
background: transparent;
color: var(--text-on-primary, #fff);
border: 2px solid rgba(255,255,255,.5);
border-radius: 999px;
padding: 6px 12px;
font-weight: 700;
transition: all .3s ease;
position: relative;
overflow: hidden;
}
.ticket-head .tabs button::before {
content: '';
position: absolute;
inset: 0;
background: rgba(255,255,255,0.3);
opacity: 0;
transition: opacity .3s ease;
}
.ticket-head .tabs button:hover::before { opacity: 1; }
.ticket-head .tabs button span { position: relative; z-index: 1; }
.ticket-head .tabs button:hover {
background: rgba(255,255,255,.25);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.2);
border-color: rgba(255,255,255,.8);
}
.ticket-head .tabs button:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(255,255,255,0.5); }
.ticket-head .tabs button.active {
background: rgba(255,255,255,.3);
border-color: rgba(255,255,255,.9);
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.ticket-body { padding: 12px; display:grid; grid-template-columns: 1fr auto 1fr; align-items:center; gap: 10px; }
.ticket-body .team { display:flex; flex-direction: column; align-items:center; gap: 6px; }
.ticket-body .team img { width: 64px; height: 64px; border-radius: 50%; background: var(--pro-soft); object-fit: cover; }
.ticket-body .team .name { font-weight: 800; }
.ticket-body .vs { font-weight: 900; color: var(--dark-gray, #4a5568); }
.ticket-body .venue { grid-column: 1 / -1; text-align: center; color: var(--dark-gray, #4a5568); font-size: .95rem; }
.ticket-countdown { padding: 12px; text-align: center; font-weight: 800; font-size: 1.05rem; border-top: 1px solid var(--light-gray, rgba(0,0,0,.12)); }
.ticket-action { padding: 10px 12px 14px; }
.ticket-action .btn { display:block; width:100%; text-align:center; border:2px solid var(--primary); color: var(--primary); background: transparent; border-radius: 10px; padding: 10px; font-weight: 800; text-decoration: none; transition: background .18s ease, transform .18s ease, box-shadow .18s ease; }
.ticket-action .btn:hover { background: var(--primary); color: var(--text-on-primary, #fff); transform: translateY(-1px); box-shadow: var(--pro-shadow); }
.ticket-action .btn:focus-visible { outline: none; box-shadow: var(--pro-ring), var(--pro-shadow); }
/* Full-width upcoming */
.pro-upcoming { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); padding: 12px 16px; background: var(--pro-card); border-top: 1px solid var(--pro-card-border); border-bottom: 1px solid var(--pro-card-border); }
.pro-upcoming .wrap { display: flex; align-items: center; justify-content: center; gap: 12px; margin-bottom: 8px; }
.pro-upcoming .wrap .mid { font-weight: 900; color: var(--pro-fg); }
.pro-upcoming .wrap .nav { border: 1px solid var(--pro-card-border); background: var(--pro-card); border-radius: 999px; padding: 4px 10px; cursor: pointer; }
.pro-upcoming .wrap .nav:hover { transform: translateY(-1px); box-shadow: var(--pro-shadow); }
.pro-upcoming .wrap .nav:focus-visible { outline: none; box-shadow: var(--pro-ring), var(--pro-shadow); }
.pro-upcoming .match { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: center; max-width: 980px; margin: 0 auto; }
.pro-upcoming .team { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.pro-upcoming .team img { width: 64px; height: 64px; border-radius: 50%; background: var(--pro-soft); object-fit: cover; }
.pro-upcoming .team .name { font-weight: 800; }
.pro-upcoming .vs { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.pro-upcoming .vs .big { font-weight: 900; font-size: 1.35rem; }
.pro-upcoming .vs .small, .pro-upcoming .vs .date { color: var(--pro-muted); font-size: .9rem; }
.pro-upcoming .links { display: flex; justify-content: center; gap: 12px; margin-top: 8px; }
.pro-upcoming .links a { color: var(--primary); text-decoration: underline; }
/* Full-width CTA section */
.pro-cta { background: color-mix(in srgb, var(--primary) 8%, transparent); }
.pro-cta .pro-container { display: flex; justify-content: center; }
/* Motion preferences */
@media (prefers-reduced-motion: reduce) {
.pro *, .pro *::before, .pro *::after { transition: none !important; animation: none !important; }
}
File diff suppressed because it is too large Load Diff