MediaWiki:Common.css
From zunagi
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (β-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (β-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* CSS placed here will be applied to all skins */
/* ==========================================================
GLOBAL PAGE LAYOUT
========================================================== */
/* ==========================================================
1. ALL USERS β ALL PAGES
========================================================== */
/*
* Hide the left navigation sidebar.
*/
#mw-navigation {
display: none !important;
}
.zunagi-back-link {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 6px 11px;
background-color: #f3f8f1;
border: 1px solid #cfe0c8;
border-radius: 8px;
color: #3f6f2a !important;
font-weight: 600;
font-size: 0.95rem;
text-decoration: none !important;
transition:
background-color 0.2s ease,
border-color 0.2s ease,
transform 0.2s ease;
}
.zunagi-back-link:hover {
background-color: #e7f2e2;
border-color: #a9c89d;
color: #315822 !important;
text-decoration: none !important;
transform: translateX(-2px);
}
.zunagi-back-link-top {
display: inline-block;
font-size: 0.9em;
margin: 0;
}
.zunagi-back-link-top a {
text-decoration: none;
}
.zunagi-back-link-top a:hover {
text-decoration: underline;
}
/*
* Expand the main Medik column into the space previously
* occupied by the sidebar.
*/
#mw-navigation + div {
flex: 0 0 100% !important;
max-width: 100% !important;
width: 100% !important;
}
/*
* Constrain normal page content so it does not stretch
* across very wide desktop screens.
*
* The green site header remains full width.
*/
#content {
width: 100% !important;
max-width: 1500px !important;
margin-left: auto !important;
margin-right: auto !important;
padding-left: 24px !important;
padding-right: 24px !important;
box-sizing: border-box;
}
/* ==========================================================
2. ANONYMOUS USERS β ALL PAGES
========================================================== */
/*
* Hide the Page / Discussion / Author Dashboard /
* Actions / Tools sidebar entirely for logged-out users.
*
* This was previously two separate rules (hiding the inner
* flex wrapper, then zeroing aside's own padding/margin) -
* that left a ~18px gap behind because <aside> itself still
* had display:inline-block, which keeps an element
* participating in surrounding line-box layout even at
* height:0. Hiding <aside> itself entirely removes it from
* layout, closing that gap.
*/
body:has(a[href*="Special:UserLogin"]) aside {
display: none !important;
}
/* ==========================================================
3. ALL USERS β MAIN PAGE ONLY
========================================================== */
/*
* Hide the normal header search on the Main Page.
*/
body.page-Main_Page #p-search,
body.page-Main_Page .search,
body.page-Main_Page .mw-search,
body.page-Main_Page .search-box {
display: none !important;
}
/* ==========================================================
HIDE HAMBURGER MENU ICON β SMALL VIEWPORTS / STANDALONE
(its target, #mw-navigation, is already hidden site-wide,
so the icon has nothing left to toggle)
========================================================== */
@media (max-width: 600px), (display-mode: standalone) {
.mw-hamb {
display: none !important;
}
}
/* ==========================================================
LEFT PADDING FOR LOGO β SMALL VIEWPORTS / STANDALONE
========================================================== */
@media (max-width: 600px), (display-mode: standalone) {
#p-logo {
margin-left: 12px !important;
}
}
/* ==========================================================
4. RESPONSIVE GLOBAL CONTENT WIDTH
========================================================== */
/* Tablet */
@media (max-width: 900px) {
#content {
padding-left: 18px !important;
padding-right: 18px !important;
}
}
/* Mobile */
@media (max-width: 600px) {
#content {
padding-left: 12px !important;
padding-right: 12px !important;
}
}
/*
* Hide the standard MediaWiki page title on selected pages.
*/
body:has(.zunagi-hide-heading) .firstHeading {
display: none !important;
}
/* ==========================================================
MAIN PAGE
========================================================== */
/*
* Main Page deliberately overrides the normal centred
* content container above.
*/
.page-Main_Page .firstHeading {
display: none;
}
.page-Main_Page #content {
width: 100% !important;
max-width: none !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: visible !important;
max-height: none !important;
display: block;
}
.page-Main_Page #mw-main-container .py-md-3 {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.page-Main_Page .zunagi-home {
margin-top: 22vh;
text-align: center;
overflow: visible !important;
}
/* ==========================================================
MAIN PAGE LOGO
========================================================== */
.page-Main_Page .zunagi-home figure {
display: block;
width: fit-content;
margin: 0 auto;
padding: 0;
border: 0;
background: none;
line-height: 0;
}
.page-Main_Page .zunagi-home figure img {
display: block;
margin: 0 auto;
max-width: 190px;
height: auto;
}
.page-Main_Page .zunagi-home figure figcaption {
display: none;
}
/*
* Remove empty paragraphs generated around the logo.
*/
.page-Main_Page .zunagi-home > p:empty {
display: none;
margin: 0;
padding: 0;
}
/* ==========================================================
MAIN PAGE SEARCH
========================================================== */
.page-Main_Page .zunagi-search {
width: 100%;
max-width: 460px;
margin: 22px auto 25px;
text-align: center;
overflow: visible !important;
}
.page-Main_Page .zunagi-search-wrapper {
position: relative;
width: min(380px, calc(100vw - 40px));
max-width: 380px;
margin: 0 auto;
overflow: visible !important;
}
.page-Main_Page .zunagi-search-suggestions {
display: none;
position: absolute;
top: 100%;
left: 0;
z-index: 9999;
width: 100%;
max-height: none;
overflow: visible;
box-sizing: border-box;
text-align: left;
background: #ffffff;
border: 1px solid #a2a9b1;
box-shadow:
0 5px 14px rgba(0, 0, 0, 0.16);
}
.page-Main_Page .zunagi-search-suggestions.is-open {
display: block;
}
.page-Main_Page .zunagi-search-suggestion {
display: block;
padding: 10px 12px;
color: #202122;
background: #ffffff;
border-bottom: 1px solid #eaecf0;
text-decoration: none;
}
.page-Main_Page .zunagi-search-suggestion:last-child {
border-bottom: 0;
}
.page-Main_Page .zunagi-search-suggestion:hover,
.page-Main_Page .zunagi-search-suggestion:focus,
.page-Main_Page .zunagi-search-suggestion.is-selected {
background: #eef5c8;
text-decoration: none;
}
.page-Main_Page .zunagi-search-suggestion-title {
display: block;
font-weight: 600;
}
.page-Main_Page .zunagi-search-suggestion-description {
display: block;
margin-top: 3px;
overflow: hidden;
color: #54595d;
font-size: 13px;
line-height: 1.35;
text-overflow: ellipsis;
white-space: nowrap;
}
/*
* Allow autocomplete to extend beyond MediaWiki containers.
*/
.page-Main_Page #bodyContent,
.page-Main_Page #mw-content-text,
.page-Main_Page .mw-parser-output,
.page-Main_Page .zunagi-home {
overflow: visible !important;
}
/* ==========================================================
MOBILE MAIN PAGE
========================================================== */
@media screen and (max-width: 600px) {
.page-Main_Page #content {
min-height: calc(100vh - 60px);
}
.page-Main_Page .zunagi-home {
margin-top: 80px;
}
.page-Main_Page .zunagi-home figure img {
max-width: 170px;
height: auto;
}
.page-Main_Page .zunagi-search {
width: 100%;
max-width: 100%;
margin: 18px auto 25px;
padding: 0 20px;
box-sizing: border-box;
}
.page-Main_Page .zunagi-search-wrapper {
width: 100%;
max-width: 360px;
margin: 0 auto;
box-sizing: border-box;
}
.page-Main_Page #zunagi-search-form {
width: 100%;
}
.page-Main_Page #zunagi-search-form input[type="search"],
.page-Main_Page #zunagi-search-form input[name="search"] {
display: block;
width: 100% !important;
max-width: 100% !important;
min-width: 0;
box-sizing: border-box;
font-size: 16px;
}
.page-Main_Page .zunagi-search-suggestions {
width: 100%;
max-width: 100%;
}
}
@media all and (display-mode: standalone) {
/*
* 1. Hide the search box and login/user-tools button -
* both live inside this shared wrapper, so hiding
* it once covers both without leaving an empty gap
* behind.
*/
#mw-navbar-right {
display: none !important;
}
/*
* 2. Disable all links in the green header bar
* (logo/home link, and anything inside the
* profile dropdown) - visually unchanged,
* just non-clickable.
*/
#mw-navbar a {
pointer-events: none;
cursor: default;
}
/*
* 3. mobile.css reserves margin-bottom: 4em on #mw-navbar
* to make room for #p-search, which lives inside
* #mw-navbar-right and is hidden above. With it gone,
* that reserved 64px is dead space above the content
* wrapper - collapse it.
*/
#mw-navbar {
margin-bottom: 0 !important;
}
}
/* ==========================================================
HIDE TOP NAVBAR SEARCH β BEACH VOLLEYBALL HUB, CALENDAR & CHILD PAGES
(mobile + standalone only; desktop and other pages unaffected)
========================================================== */
@media (max-width: 600px), (display-mode: standalone) {
:is(
body.page-Beach_Volleyball,
body:has(.zunagi-calendar),
body:has(.zunagi-event-page)
) #p-search {
display: none !important;
}
:is(
body.page-Beach_Volleyball,
body:has(.zunagi-calendar),
body:has(.zunagi-event-page)
) #mw-navbar {
margin-bottom: 0 !important;
}
}
/* ==========================================================
FOOTER
========================================================== */
/*
* Sticky footer support for Medik.
*/
html,
body {
min-height: 100%;
}
#mw-wrapper {
display: flex;
flex-direction: column;
min-height: 100vh;
}
#mw-main-container {
flex: 1 0 auto;
}
#footer {
flex-shrink: 0;
}
/*
* Hide footer site-wide.
*/
#footer {
display: none !important;
}
/* ==========================================================
ZUNAGI LOCATION
========================================================== */
.zunagi-location {
margin: 14px 0 22px;
}
.zunagi-location-address {
margin: 14px 0;
font-size: 16px;
line-height: 1.6;
}
.zunagi-location-link {
margin-top: 4px;
font-size: 16px;
line-height: 1.5;
}
.zunagi-location-link a {
font-weight: 500;
text-decoration: none;
}
.zunagi-location-link a:hover,
.zunagi-location-link a:focus {
text-decoration: underline;
}
/* ==========================================================
ZUNAGI BEACH VOLLEYBALL CALENDAR
========================================================== */
/* ==========================================================
2. PAST EVENTS
========================================================== */
.zunagi-calendar tbody tr.zunagi-past-event > td {
background-color: #f7f4ee !important;
}
/* ==========================================================
3. MAJOR AND YOUTH EVENT BADGE
========================================================== */
.zunagi-major-badge {
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
border: 1px solid #d6a323;
border-radius: 4px;
background-color: #fff3cd;
color: #7a5a00;
font-size: 10px;
font-weight: 700;
line-height: 1.2;
letter-spacing: 0.5px;
vertical-align: 1px;
white-space: nowrap;
}
.zunagi-junior-badge {
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
border: 1px solid #6fbf5a;
border-radius: 4px;
background-color: #e3f5db;
color: #2c6b1f;
font-size: 10px;
font-weight: 700;
line-height: 1.2;
letter-spacing: 0.5px;
vertical-align: 1px;
white-space: nowrap;
}
.zunagi-youth-badge {
display: inline-block;
margin-left: 8px;
padding: 2px 6px;
border: 1px solid #4aa8d8;
border-radius: 4px;
background-color: #d6f0fb;
color: #05587e;
font-size: 10px;
font-weight: 700;
line-height: 1.2;
letter-spacing: 0.5px;
vertical-align: 1px;
white-space: nowrap;
}
.zunagi-event-title .zunagi-major-badge,
.zunagi-event-title .zunagi-youth-badge {
vertical-align: middle;
}
/* ==========================================================
4. FILTER BAR
========================================================== */
.zunagi-calendar-filters {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: 12px;
width: 100%;
margin: 0 0 18px 0;
}
.zunagi-filter {
display: flex;
flex-direction: column;
gap: 4px;
}
/* Filter headings */
.zunagi-filter label,
.zunagi-checkbox-heading {
margin: 0;
font-size: 14px;
font-weight: 600;
line-height: 1.3;
}
/* Dropdowns and search */
.zunagi-filter select,
.zunagi-filter input[type="search"] {
height: 36px;
min-width: 140px;
padding: 6px 10px;
border: 1px solid #a2a9b1;
border-radius: 4px;
background: #ffffff;
box-sizing: border-box;
font-size: 14px;
}
.zunagi-search-filter input[type="search"] {
min-width: 190px;
}
/* ==========================================================
5. CHECKBOX FILTERS
========================================================== */
.zunagi-checkbox-filter {
display: flex;
flex-direction: column;
gap: 4px;
}
.zunagi-checkbox-label {
display: flex;
align-items: center;
gap: 7px;
height: 36px;
min-width: 90px;
padding: 0 10px;
border: 1px solid #a2a9b1;
border-radius: 4px;
background: #ffffff;
box-sizing: border-box;
cursor: pointer;
font-size: 14px;
font-weight: 400;
}
.zunagi-checkbox-label input[type="checkbox"] {
width: 16px;
height: 16px;
margin: 0;
cursor: pointer;
}
/* ==========================================================
6. RESET BUTTON
========================================================== */
.zunagi-reset-filter {
justify-content: flex-end;
}
.zunagi-reset-filter::before {
content: "";
display: block;
height: 18px;
}
.zunagi-reset-button {
height: 36px;
padding: 6px 14px;
border: 1px solid #a2a9b1;
border-radius: 4px;
background: #f8f9fa;
box-sizing: border-box;
cursor: pointer;
white-space: nowrap;
font-size: 14px;
}
.zunagi-reset-button:hover {
background: #eaecf0;
}
.zunagi-reset-button:active {
background: #dadde3;
}
/* ==========================================================
7. CALENDAR WRAPPER
========================================================== */
/*
* Horizontal scrolling is handled here.
*
* Sticky/floating header behaviour is handled by the
* custom JavaScript fixed-header implementation.
*/
.zunagi-calendar-table {
width: fit-content;
max-width: 100%;
position: relative;
overflow-x: auto;
}
/* ==========================================================
8. MAIN TABLE
========================================================== */
.zunagi-calendar {
width: auto !important;
margin: 0 !important;
border-collapse: collapse !important;
table-layout: auto;
}
.zunagi-calendar th,
.zunagi-calendar td {
box-sizing: border-box;
white-space: nowrap;
}
/* ==========================================================
9. TABLE HEADER
========================================================== */
.zunagi-calendar thead {
background-color: #eaecf0;
}
.zunagi-calendar thead th {
background-color: #eaecf0 !important;
font-weight: 700;
vertical-align: middle;
opacity: 1;
box-sizing: border-box;
border-bottom: 2px solid #a2a9b1;
}
/* ==========================================================
9b. FIXED HEADER β JS DRIVEN CLONE
========================================================== */
.zunagi-fixed-header-outer {
display: none;
position: fixed;
overflow: hidden;
z-index: 1000;
background-color: #eaecf0;
border-bottom: 2px solid #a2a9b1;
box-sizing: border-box;
}
.zunagi-fixed-header-inner {
overflow: hidden;
}
.zunagi-fixed-header-inner th {
background-color: #eaecf0 !important;
font-weight: 700;
box-sizing: border-box;
white-space: nowrap;
padding: 0 8px;
border-right: 1px solid #a2a9b1;
}
.zunagi-fixed-header-inner th:last-child {
border-right: none;
}
.zunagi-fixed-header-inner th > div {
width: 100%;
}
.zunagi-fixed-header-sort-arrow {
display: inline-block;
margin-right: 4px;
width: 0;
height: 0;
vertical-align: middle;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
}
.zunagi-fixed-header-sort-arrow[data-direction="ascending"] {
border-bottom: 5px solid #54595d;
}
.zunagi-fixed-header-sort-arrow[data-direction="descending"] {
border-top: 5px solid #54595d;
}
.zunagi-fixed-header-inner .dt-column-title {
text-align: inherit !important;
}
/* ==========================================================
10. REGION ICONS
========================================================== */
.state-icon {
display: inline-block;
width: 14px;
height: 14px;
margin-right: 6px;
border-radius: 2px;
vertical-align: -2px;
}
/* Shared sizing/positioning for every organisation icon β
only the background-image differs per class below. */
.state-icon.va,
.state-icon.nsw,
.state-icon.qld,
.state-icon.act,
.state-icon.sa,
.state-icon.vic,
.state-icon.wa,
.state-icon.tas,
.state-icon.nbva,
.state-icon.bbva {
background-color: transparent;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
width: 24px;
height: 24px;
vertical-align: -6px;
}
.state-icon.va { background-image: url("/wiki/Special:FilePath/Va.png"); } /* Volleyball Australia */
.state-icon.nsw { background-image: url("/wiki/Special:FilePath/Vnsw.png"); } /* Volleyball NSW */
.state-icon.qld { background-image: url("/wiki/Special:FilePath/Vq.png"); } /* Volleyball Queensland */
.state-icon.act { background-image: url("/wiki/Special:FilePath/Vact.png"); } /* Volleyball ACT */
.state-icon.sa { background-image: url("/wiki/Special:FilePath/Vsa.png"); } /* Volleyball SA */
.state-icon.vic { background-image: url("/wiki/Special:FilePath/Vv.png"); } /* Volleyball Victoria */
.state-icon.wa { background-image: url("/wiki/Special:FilePath/Vwa.png"); } /* Volleyball WA */
.state-icon.tas { background-image: url("/wiki/Special:FilePath/Vtas.png"); } /* Volleyball Tasmania */
.state-icon.nbva { background-image: url("/wiki/Special:FilePath/Nbva.png"); } /* Northern Beaches VA */
.state-icon.bbva { background-image: url("/wiki/Special:FilePath/Bbva.png"); } /* Brighton Beach VA */
/* ==========================================================
11. DATE COLUMN
========================================================== */
.zunagi-calendar th.zunagi-date-column,
.zunagi-calendar td.zunagi-date-column {
width: 95px !important;
min-width: 110px !important;
max-width: 110px !important;
text-align: center !important;
white-space: nowrap;
}
/* ==========================================================
12. EVENT COLUMN
========================================================== */
.zunagi-calendar th.zunagi-event-column,
.zunagi-calendar td.zunagi-event-column {
text-align: left !important;
white-space: nowrap !important;
min-width: 300px !important;
}
/* ==========================================================
13. REGION COLUMN
========================================================== */
.zunagi-calendar th.zunagi-region-column,
.zunagi-calendar td.zunagi-region-column {
text-align: center !important;
white-space: nowrap;
min-width: 110px !important;
}
/* ==========================================================
14. ORG COLUMN
(only ever visible briefly, before DataTables hides it β
targeted by position since it carries no CSS class of its
own once JS takes over)
========================================================== */
.zunagi-calendar th:nth-child(3),
.zunagi-calendar td:nth-child(3) {
text-align: center !important;
}
/* ==========================================================
15. CATEGORY COLUMN
========================================================== */
.zunagi-calendar th.zunagi-category-column,
.zunagi-calendar td.zunagi-category-column {
text-align: center !important;
white-space: nowrap;
min-width: 110px !important;
}
/* ==========================================================
16. LEVEL COLUMN
========================================================== */
.zunagi-calendar th.zunagi-level-column,
.zunagi-calendar td.zunagi-level-column {
text-align: center !important;
white-space: nowrap;
min-width: 110px !important;
}
/* ==========================================================
17. VENUE COLUMN
========================================================== */
.zunagi-calendar th.zunagi-venue-column,
.zunagi-calendar td.zunagi-venue-column {
text-align: left !important;
white-space: nowrap;
min-width: 200px !important;
}
/* ==========================================================
18. TABLE BODY
========================================================== */
.zunagi-calendar tbody td {
vertical-align: middle;
}
/* ==========================================================
19. LINKS
========================================================== */
.zunagi-calendar td a {
text-decoration: none;
}
.zunagi-calendar td a:hover {
text-decoration: underline;
}
/* ==========================================================
20. DATATABLES CLEANUP
========================================================== */
.dt-container {
width: 100%;
}
.dt-container .dt-layout-row:empty {
display: none;
}
/* ==========================================================
21. TABLET / MOBILE
========================================================== */
@media (max-width: 900px) {
.zunagi-calendar-filters {
display: grid;
grid-template-columns:
repeat(2, minmax(0, 1fr));
gap: 10px;
align-items: end;
}
.zunagi-filter {
width: 100%;
}
.zunagi-filter select,
.zunagi-filter input[type="search"] {
width: 100%;
min-width: 0;
}
.zunagi-search-filter input[type="search"] {
width: 100%;
min-width: 0;
}
.zunagi-checkbox-label {
width: 100%;
min-width: 0;
}
.zunagi-reset-button {
width: 100%;
}
.zunagi-major-badge,
.zunagi-youth-badge,
.zunagi-junior-badge {
margin-left: 6px;
padding: 2px 5px;
font-size: 9px;
}
}
/* ==========================================================
NBVA POINTS TABLE β MOBILE-ONLY DIVISION TABS
========================================================== */
.zunagi-nbva-points-tabs {
display: none;
}
@media (max-width: 900px) {
.zunagi-nbva-points-tabs {
display: flex;
gap: 8px;
margin: 1em 0 0;
}
.zunagi-nbva-points-tab {
flex: 1;
padding: 8px 6px;
border: 1px solid #c8ccd1;
border-radius: 8px;
background-color: #f8f9fa;
color: #54595d;
font-size: 0.85em;
font-weight: 700;
text-align: center;
cursor: pointer;
}
.zunagi-nbva-points-tab.active {
background-color: #0a5c4f;
border-color: #0a5c4f;
color: #fff;
}
}
/* ==========================================================
22. SMALL PHONES
========================================================== */
@media (max-width: 600px) {
.zunagi-calendar-filters {
grid-template-columns: 1fr;
}
.zunagi-reset-filter::before {
display: none;
}
}
/* ==========================================================
ZUNAGI BEACH VOLLEYBALL EVENT PAGE
========================================================== */
/* ==========================================================
1. PAGE
========================================================== */
.zunagi-event-page {
width: 100%;
max-width: 800px;
margin-top: 12px;
}
/* ==========================================================
COLLAPSIBLE FILTERS ON MOBILE
========================================================== */
.zunagi-filters-toggle {
display: none;
}
@media (max-width: 600px) {
.zunagi-filters-toggle {
display: block;
width: 100%;
margin: 0 0 12px 0;
padding: 10px 14px;
border: 1px solid #a2a9b1;
border-radius: 4px;
background: #f8f9fa;
box-sizing: border-box;
font-size: 14px;
font-weight: 600;
text-align: center;
cursor: pointer;
}
.zunagi-filters-toggle:hover {
background: #eaecf0;
}
.zunagi-calendar-filters {
display: none !important;
}
.zunagi-calendar-filters.is-open {
display: grid !important;
}
}
/* ==========================================================
2. EVENT RECORD TABLE
========================================================== */
.zunagi-event-record {
width: 100%;
margin: 12px 0 0 0 !important;
border: 0 !important;
border-top: 1px solid #c8ccd1 !important;
border-bottom: 1px solid #c8ccd1 !important;
border-collapse: collapse;
background: #ffffff;
}
/* ==========================================================
3. TABLE CELLS
========================================================== */
.zunagi-event-record th,
.zunagi-event-record td {
padding: 14px 12px;
border: 0 !important;
border-bottom: 1px solid #eaecf0 !important;
vertical-align: middle;
line-height: 1.45;
}
.zunagi-event-record tr:last-child th,
.zunagi-event-record tr:last-child td {
border-bottom: 0 !important;
}
/* ==========================================================
4. LABEL COLUMN
========================================================== */
.zunagi-event-record th {
width: 165px;
min-width: 165px;
padding-left: 14px;
padding-right: 18px;
background-color: #f8f9fa;
text-align: left;
font-weight: 600;
white-space: nowrap;
}
/* ==========================================================
5. VALUE COLUMN
========================================================== */
.zunagi-event-record td {
background-color: #ffffff;
text-align: left;
}
/* ==========================================================
6. ROW HOVER
========================================================== */
.zunagi-event-record tr:hover td {
background-color: #f8f9fa;
}
.zunagi-event-record tr:hover th {
background-color: #f1f3f5;
}
/* ==========================================================
7. LINKS
========================================================== */
.zunagi-event-record a {
text-decoration: none;
}
.zunagi-event-record a:hover {
text-decoration: underline;
}
/*
* Registration and Results links.
*/
.zunagi-event-record tr:nth-last-child(-n+3) td a {
font-weight: 600;
}
/*
* Registration and Results links.
*/
.zunagi-event-record tr:nth-last-child(-n+3) td a {
font-weight: 600;
}
/*
* "organiser" link in the Registration row's "Double check with the
* organiser" fallback text should stay regular weight β the bold rule
* above is meant only for the primary Register/Registered Teams/View
* Results links.
*/
.zunagi-registration-organiser-link a {
font-weight: normal !important;
}
/* ==========================================================
8. DATE AND VENUE ICONS
========================================================== */
.zunagi-date-icon,
.zunagi-venue-icon {
display: inline-block;
width: 15px;
height: 15px;
margin-right: 6px;
vertical-align: -2px;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
}
.zunagi-date-icon {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2354595d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
}
.zunagi-venue-icon {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2354595d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}
/* ==========================================================
9. BACK LINK
========================================================== */
.zunagi-event-back {
margin-top: 20px;
font-size: 14px;
}
.zunagi-event-back a {
text-decoration: none;
}
.zunagi-event-back a:hover {
text-decoration: underline;
}
/* ==========================================================
10. MOBILE EVENT PAGE
========================================================== */
@media (max-width: 600px) {
.zunagi-event-page {
width: 100%;
margin-top: 8px;
}
.zunagi-event-record {
margin-top: 14px !important;
}
.zunagi-event-record th {
width: 135px;
min-width: 135px;
padding: 12px 10px;
}
.zunagi-event-record td {
padding: 12px 10px;
}
.zunagi-event-back {
margin-top: 18px;
}
}
/* ==========================================================
11. CALENDAR DISCLAIMER
========================================================== */
.zunagi-calendar-disclaimer {
margin-top: 16px;
padding-top: 12px;
border-top: 1px solid #eaecf0;
color: #54595d;
font-size: 13px;
line-height: 1.5;
}
/* ==========================================================
12. ZUNAGI BACK / HUB NAVIGATION
========================================================== */
.zunagi-back-nav {
margin: 4px 0 12px 0;
font-size: 14px;
}
.zunagi-back-nav a {
color: #007bff;
text-decoration: none;
font-weight: 500;
}
.zunagi-back-nav a:hover {
text-decoration: underline;
}
/* ==========================================================
ZUNAGI BEACH VOLLEYBALL HUB TILES
========================================================== */
/* ----------------------------------------------------------
TILE CONTAINER
---------------------------------------------------------- */
.zunagi-hub-tiles {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
gap: 24px;
width: 100%;
margin: 28px 0;
box-sizing: border-box;
}
/* ----------------------------------------------------------
BASE TILE
---------------------------------------------------------- */
.zunagi-hub-tile {
position: relative;
width: calc(33.333% - 16px) !important;
flex: 0 0 calc(33.333% - 16px) !important;
display: flex;
flex-direction: column;
min-width: 0;
padding: 28px;
box-sizing: border-box;
border: 1px solid #c7d7b6;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.07);
cursor: pointer;
transition:
transform 0.2s ease,
box-shadow 0.2s ease,
border-color 0.2s ease,
background-color 0.2s ease;
}
/* ----------------------------------------------------------
TILE COLOURS
---------------------------------------------------------- */
.zunagi-hub-tile-calendar {
background-color: #f2f9fc;
}
.zunagi-hub-tile-rankings {
background-color: #fffaf0;
}
.zunagi-hub-tile-points {
background-color: #f0f9ec;
}
/* ----------------------------------------------------------
HOVER
---------------------------------------------------------- */
.zunagi-hub-tile:hover {
transform: translateY(-4px);
border-color: #8cc63f;
box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);
}
.zunagi-hub-tile-calendar:hover {
background-color: #eaf6fb;
}
.zunagi-hub-tile-rankings:hover {
background-color: #fff6e3;
}
.zunagi-hub-tile-points:hover {
background-color: #e6f4dd;
}
/* ----------------------------------------------------------
FEATURE IMAGE
---------------------------------------------------------- */
.zunagi-hub-image {
margin: -28px -28px 24px -28px;
overflow: hidden;
}
/* MediaWiki image link */
.zunagi-hub-image a {
display: block;
width: 100%;
margin: 0;
padding: 0;
}
/* Image */
.zunagi-hub-image img {
display: block;
width: 100% !important;
max-width: 100% !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
border: 0;
transition: transform 0.25s ease;
}
/* Slight image zoom */
.zunagi-hub-tile:hover .zunagi-hub-image img {
transform: scale(1.015);
}
/* ----------------------------------------------------------
TILE HEADING
---------------------------------------------------------- */
/*
* MediaWiki wraps H2 headings in:
* <div class="mw-heading mw-heading2">
*
* Remove the skin's divider from that wrapper.
*/
.zunagi-hub-tile .mw-heading,
.zunagi-hub-tile .mw-heading2 {
margin: 0 !important;
padding: 0 !important;
border: 0 !important;
border-bottom: 0 !important;
background: transparent !important;
box-shadow: none !important;
}
/*
* Apply our single divider to the H2 itself.
*/
.zunagi-hub-tile h2 {
display: block !important;
width: 100% !important;
margin: 0 0 16px 0 !important;
padding: 0 0 10px 0 !important;
border: 0 !important;
border-bottom: 1px solid rgba(0, 0, 0, 0.25) !important;
background: transparent !important;
box-shadow: none !important;
font-size: 1.45rem !important;
font-weight: 600 !important;
line-height: 1.3 !important;
}
/*
* Remove any additional theme decoration.
*/
.zunagi-hub-tile h2::before,
.zunagi-hub-tile h2::after,
.zunagi-hub-tile .mw-heading::before,
.zunagi-hub-tile .mw-heading::after {
content: none !important;
display: none !important;
}
/* ----------------------------------------------------------
DESCRIPTION
---------------------------------------------------------- */
.zunagi-hub-tile p {
margin: 0 0 24px 0;
line-height: 1.6;
color: #555555;
}
/* ----------------------------------------------------------
CALL TO ACTION
---------------------------------------------------------- */
.zunagi-hub-link {
margin-top: auto;
font-size: 0.9rem;
font-weight: 700;
letter-spacing: 0.03em;
}
.zunagi-hub-link a {
color: #0066cc;
text-decoration: none;
}
.zunagi-hub-link a:hover {
text-decoration: none;
}
/* ----------------------------------------------------------
MAKE THE ENTIRE TILE CLICKABLE
---------------------------------------------------------- */
.zunagi-hub-link a::after {
content: "";
position: absolute;
inset: 0;
z-index: 5;
}
/* ----------------------------------------------------------
MOBILE
---------------------------------------------------------- */
@media (max-width: 700px) {
.zunagi-hub-tiles {
flex-direction: column !important;
gap: 18px;
margin: 22px 0;
}
.zunagi-hub-tile {
width: 100% !important;
flex: 0 0 100% !important;
padding: 22px;
border: 1.5px solid #aac889;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.10);
}
.zunagi-hub-image {
margin: -22px -22px 20px -22px;
}
.zunagi-hub-tile h2 {
font-size: 1.3rem !important;
}
}