# World Cup 2026 > The most ambitious art direction here, and a good stress test of how far HTML layout can be pushed. **Sports & gaming · Bold colour · Tabbed** The most ambitious art direction here, and a good stress test of how far HTML layout can be pushed. Seven tabs, and the styling never drops. ## What makes it work - A pitch-green field with mowing stripes sets the scene, and the same ground carries across every tab. - Gold player cards borrow the visual language of collectible football cards, built from HTML blocks rather than pasted images. - The Hall of Champions plaques use layered shadows to suggest engraving. - Study it for the layout ambition. The heavy texture is a deliberate choice for the subject, and would be wrong on a business report. ## The views Each tab is shown below at full width. ### Tournament ### Match Center ### Groups ### Team HQ ### Players ### History ### Contender Index ## See it live [Open the live dashboard](https://demo4.holistics.io/dashboards/v4/114898-world-cup-2026-on-the-pitch?_pl=ab39e2f131d8d0bbe7d939b4) to click through it yourself. No Holistics account needed. ## Theme code The theme this dashboard actually uses, written out as a reusable `PageTheme`. Paste it into a `.theme.aml` file under **Development > Library > Themes** to reuse it across your own dashboards, or inline it as a single dashboard's `theme:` property. This theme names a chart colour palette, so the `ColorPalette` it references is included above it. See [colour palettes](/docs/admin/dashboard-themes/color-palettes).
world_cup_2026_theme.theme.aml ```aml ColorPalette wc_pitch_day_palette { title: "WC Pitch — Day" categorical { colors: [ "#1f9d52", "#C8920A", "#1D3F8E", "#E61D25", "#00853F", "#d99412", "#0c2418", "#2f5a42" ] } } PageTheme world_cup_2026_theme { title: "World Cup — On the Pitch (Day)" background { bg_size: "cover" bg_color: "#2d7d47" bg_image: "radial-gradient(120% 65% at 50% -10%, #cfeeff 0%, rgba(207,238,255,.18) 34%, transparent 60%)" bg_repeat: false } canvas { border { border_style: "none" border_width { top: 0 left: 0 right: 0 bottom: 0 } border_radius { top_left: 0 top_right: 0 bottom_left: 0 bottom_right: 0 } } shadow: "none" opacity: 1 background { bg_color: "transparent" } } block { text { font_size: 13 font_color: "#1c3a2a" font_family: "Sora, system-ui, sans-serif" font_weight: "normal" } label { font_size: 12 font_color: "#0c2418" font_family: "Saira Condensed, Sora, system-ui, sans-serif" font_weight: "bold" letter_spacing: "0.04em" text_transform: "uppercase" } border { border_style: "none" border_width { top: 0 left: 0 right: 0 bottom: 0 } border_radius { top_left: 12 top_right: 12 bottom_left: 12 bottom_right: 12 } } shadow: "none" opacity: 1 padding { top: 0 left: 0 right: 0 bottom: 0 } background { bg_color: "transparent" } } viz { table { header { bg_color: "#e7f1ea" font_size: 12 font_color: "#0c2418" font_weight: "bold" } general { bg_color: "#f4faf6" font_size: 12 font_color: "#11241a" font_family: "Sora, system-ui, sans-serif" hover_color: "rgba(12,36,24,.06)" cell_padding { top: 8 left: 12 right: 12 bottom: 8 } banding_color: "rgba(12,36,24,.035)" borders { outer: true header: true vertical: false horizontal: true row_header: false } grid_color: "rgba(12,36,24,.14)" border_color: "rgba(12,36,24,.14)" border_width: 1 } sub_title { font_size: 11 font_color: "#2f5a42" font_weight: "semibold" } sub_header { bg_color: "rgba(12,36,24,.035)" font_size: 11 font_color: "#2f5a42" font_weight: "semibold" } } } color { data: wc_pitch_day_palette } } ```
The theme is paired with custom CSS, which lives beside it rather than inside it. See [Custom CSS](/docs/admin/dashboard-themes/custom-css) for where it goes.
Custom CSS ```css @import url('https://fonts.googleapis.com/css2?family=Saira+Condensed:wght@500;600;700;800&family=Sora:wght@400;500;600;700&display=swap'); :root { --grass-a:#3DA35D; --grass-b:#4FB069; --sky-ambient:#cfeeff; --turf-edge:#2d7d47; --line:rgba(255,255,255,.88); --line-soft:rgba(255,255,255,.55); --ink:#0c2418; --ink-2:#1c3a2a; --muted:#2f5a42; --panel:rgba(255,255,255,.94); --panel-2:rgba(255,255,255,.86); --panel-line:rgba(12,36,24,.14); --panel-ink:#11241a; --panel-muted:#5b7567; --gold:#C8920A; --gold-2:#f2c84b; --live:#E61D25; --board-bg:#07140d; --board-ink:#eafff2; --board-glow:rgba(120,255,180,.55); --board-bezel-a:#cdd6da; --board-bezel-b:#8b979d; --zone-q:rgba(38,166,91,.22); --zone-q-bar:#1f9d52; --zone-p:rgba(232,168,30,.26); --zone-p-bar:#d99412; --win:#1FA36B; --draw:#E0A23B; --loss:#E5362B; --qual-adv:#1FA36B; --qual-po:#E0A23B; --qual-out:#E5362B; --shadow-dir:rgba(7,30,18,.30); --flag-shadow:0 8px 18px rgba(8,28,18,.28); --vignette:rgba(6,28,16,.30); --font-disp:"Saira Condensed", Sora, sans-serif; --font-body:"Sora", system-ui, sans-serif; } .wc-num { font-variant-numeric: tabular-nums; font-feature-settings:"tnum" 1; } .wc-disp { font-family: var(--font-disp); } .wc-pulse { display:inline-block; width:8px; height:8px; border-radius:50%; background: var(--live); animation: wc-pulse 1.8s infinite; vertical-align:middle; } @keyframes wc-pulse { 0%{box-shadow:0 0 0 0 rgba(230,29,37,.5);} 70%{box-shadow:0 0 0 8px rgba(230,29,37,0);} 100%{box-shadow:0 0 0 0 rgba(230,29,37,0);} } /* motion @keyframes live in the header_rail page