{"name":"Rink Rivals","summary":"Rink Rivals is a competitive NHL 27 EASHL 6v6 league. The look is broadcast-led: a dark navy base, one cyan accent doing most of the work with red as the pop, square corners with a notched panel, and three strict type tiers — Akira for main headers only, Evogria for labels, names and numbers, Roboto for everything else.","version":"2.2.0","updated":"2026-09-30","canonical":"https://www.rinkrivals.com/brand","license":"The Rink Rivals name, crest and wordmark are owned by Rink Rivals. Use them to refer to or represent the league accurately. Do not alter the crest, imply endorsement, or use the marks for another organisation.","themes":{"dark":"Broadcast — the site and every graphic","light":"Ice — for the light background only"},"colors":[{"group":"core","name":"bg-page","dark":"#06131c","light":"#eef2f5","role":"Page and canvas background. Every graphic starts here."},{"group":"core","name":"bg-panel","dark":"#0a1c28","light":"#ffffff","role":"Card and panel surface, one step lighter than the page."},{"group":"core","name":"bg-panel-head","dark":"#ffffff08","light":"#06131c0a","role":"Panel header strip over the panel surface."},{"group":"core","name":"bg-control","dark":"#0a1c28","light":"#ffffff","role":"Selects, inputs and search fields. Pair with line-strong."},{"group":"core","name":"bg-highlight","dark":"#01bcfb26","light":"#01bcfb26","role":"Search-match fill, with a 1px inset cyan ring at 50%."},{"group":"core","name":"line-hair","dark":"#ffffff14","light":"#06131c1f","role":"Hairlines and dividers — the rule beside an eyebrow, panel edges, row separators."},{"group":"core","name":"line-strong","dark":"#ffffff26","light":"#06131c40","role":"Control borders and the outline button at rest. Focus is cyan at 60%."},{"group":"core","name":"line-center","dark":"#ffffff33","light":"#06131c4d","role":"The zero-centre tick of a diff bar."},{"group":"core","name":"ink","dark":"#e9f1f6","light":"#06131c","role":"Body text and stat values. 15.6:1 on dark, 18:1 on Ice."},{"group":"core","name":"ink-muted","dark":"#ffffff8c","light":"#06131cb3","role":"Secondary text — eyebrows, subtitles, table headers. 6.2:1 on dark."},{"group":"core","name":"ink-dim","dark":"#ffffff73","light":"#06131c8c","role":"Idle chips and tabs, empty states. The contrast floor (4.5:1) — never under 10px."},{"group":"core","name":"ink-on-accent","dark":"#000000","light":"#000000","role":"Text on any cyan fill. Always black, never white."},{"group":"core","name":"cyan-500","dark":"#01bcfb","light":"#01bcfb","role":"PRIMARY accent — links, active chips, tab underlines, value bars, the accented title word. On Ice it is a fill or 40px+ display text only (2.1:1 on white)."},{"group":"core","name":"cyan-400","dark":"#3fd0ff","light":"#3fd0ff","role":"Hover state for the primary accent."},{"group":"core","name":"red-500","dark":"#de0906","light":"#de0906","role":"SECONDARY accent, the pop — top rank badge, losses, alerts. On dark use at 24px+ or as a fill (3.7:1 as text)."},{"group":"core","name":"mark-navy","dark":"#0b2535","light":"#0b2535","role":"The disc behind the Rink Rivals mark, when placing it on a tinted ground."},{"group":"core","name":"selection","alias":"cyan-500","dark":"#01bcfb","light":"#01bcfb","role":"Text selection background, with ink-on-accent as the selected text."},{"group":"semantic","name":"win","dark":"#22c55e","light":"#22c55e","role":"Semantic only. Win indicators, as a fill with black text. Never decorative."},{"group":"semantic","name":"otl","dark":"#f97316","light":"#f97316","role":"Semantic only. Overtime losses, as a fill with black text. Never decorative."},{"group":"semantic","name":"loss","alias":"red-500","dark":"#de0906","light":"#de0906","role":"Loss indicators — the brand red reused, not a separate red."},{"group":"position","name":"pos-lw","dark":"#22c55e","light":"#22c55e","role":"Position badge: left wing."},{"group":"position","name":"pos-c","dark":"#ef4444","light":"#ef4444","role":"Position badge: centre."},{"group":"position","name":"pos-rw","dark":"#22d3ee","light":"#22d3ee","role":"Position badge: right wing."},{"group":"position","name":"pos-ld","dark":"#818cf8","light":"#818cf8","role":"Position badge: left and right defence (LD, RD)."},{"group":"position","name":"pos-d","dark":"#facc15","light":"#facc15","role":"Position badge: generic defence (D)."},{"group":"position","name":"pos-g","dark":"#c084fc","light":"#c084fc","role":"Position badge: goalie."},{"group":"rating","name":"rating-elite","dark":"#10b981","light":"#10b981","role":"Rating 9.0+. White text."},{"group":"rating","name":"rating-great","dark":"#22c55e","light":"#22c55e","role":"Rating 7.5–8.9. White text."},{"group":"rating","name":"rating-good","dark":"#84cc16","light":"#84cc16","role":"Rating 6.0–7.4. Black text."},{"group":"rating","name":"rating-avg","dark":"#eab308","light":"#eab308","role":"Rating 4.5–5.9. Black text."},{"group":"rating","name":"rating-poor","dark":"#f97316","light":"#f97316","role":"Rating 3.0–4.4. Black text."},{"group":"rating","name":"rating-bad","dark":"#ef4444","light":"#ef4444","role":"Rating below 3.0. White text."},{"group":"rating","name":"rating-none","dark":"#64748b","light":"#64748b","role":"No rating yet. White text."}],"positionColors":[{"name":"LW","token":"pos-lw","value":"#22c55e"},{"name":"C","token":"pos-c","value":"#ef4444"},{"name":"RW","token":"pos-rw","value":"#22d3ee"},{"name":"LD / RD","token":"pos-ld","value":"#818cf8"},{"name":"D","token":"pos-d","value":"#facc15"},{"name":"G","token":"pos-g","value":"#c084fc"}],"ratingColors":[{"name":"Elite 9.0+","token":"rating-elite","value":"#10b981","on":"#fff"},{"name":"Great 7.5–8.9","token":"rating-great","value":"#22c55e","on":"#fff"},{"name":"Good 6.0–7.4","token":"rating-good","value":"#84cc16","on":"#000"},{"name":"Avg 4.5–5.9","token":"rating-avg","value":"#eab308","on":"#000"},{"name":"Poor 3.0–4.4","token":"rating-poor","value":"#f97316","on":"#000"},{"name":"Bad <3.0","token":"rating-bad","value":"#ef4444","on":"#fff"},{"name":"No rating","token":"rating-none","value":"#64748b","on":"#fff"}],"typography":{"fonts":[{"family":"Akira","url":"https://www.rinkrivals.com/Akira.woff2","role":"Display. Main headers only — page, section and panel titles.","stack":"\"Akira\", Impact, \"Arial Narrow Bold\", sans-serif"},{"family":"Evogria","url":"https://www.rinkrivals.com/evogria.woff2","role":"Labels, names, numbers, pills, buttons.","stack":"\"Evogria\", \"Segoe UI\", system-ui, sans-serif"},{"family":"Roboto","url":"https://fonts.google.com/specimen/Roboto","role":"Everything else. Google Fonts.","stack":"\"Roboto\", system-ui, sans-serif"}],"fontFace":"@font-face { font-family: \"Akira\"; src: url(\"https://www.rinkrivals.com/Akira.woff2\") format(\"woff2\"); font-weight: 400; }\n@font-face { font-family: \"Evogria\"; src: url(\"https://www.rinkrivals.com/evogria.woff2\") format(\"woff2\"); font-weight: 400; }","styles":[{"name":"hero","font":"Akira","size":"80px","lineHeight":0.85,"sample":"LEAGUE LEADERS","usage":"Page hero title. Accent the second word in cyan or the entity colour.","canvas":"96–120px"},{"name":"title","font":"Akira","size":"40px","lineHeight":0.9,"sample":"SEASON 11","usage":"Section titles, team names in matchup cards.","canvas":"40–48px"},{"name":"panel-title","font":"Akira","size":"14px","lineHeight":1.2,"tracking":"0.1em","sample":"STANDINGS","usage":"Panel head titles. A main header: the last place Akira appears.","canvas":"18px"},{"name":"label","font":"Evogria","size":"12px","lineHeight":1.2,"sample":"S11","usage":"The badge before a title, column headers, rank numbers.","canvas":"16px"},{"name":"eyebrow","font":"Evogria","size":"12px","lineHeight":1.2,"tracking":"0.2em","sample":"REGULAR SEASON","usage":"Eyebrow beside its badge and hairline, uppercase, in muted ink.","canvas":"22px"},{"name":"tab","font":"Evogria","size":"13px","lineHeight":1.2,"tracking":"0.025em","sample":"ALL SKATERS","usage":"Tab labels. Active in cyan over a 2px cyan underline.","canvas":"15px"},{"name":"chip","font":"Evogria","size":"12px","lineHeight":1.2,"tracking":"0.025em","sample":"PLAYOFFS","usage":"Filter chips and button labels.","canvas":"14px"},{"name":"body","font":"Evogria","size":"15px","lineHeight":"22px","sample":"The Cozbys took Game 3 in overtime.","usage":"Short lines on graphics and cards. Never bold.","canvas":"20–24px"},{"name":"caption","font":"Evogria","size":"12px","lineHeight":"16px","sample":"GP 24 · last 10: 7-2-1","usage":"Meta lines and sub-labels in muted ink."},{"name":"stat","font":"Evogria","size":"20px","lineHeight":1,"sample":"1,284","usage":"Stat values in rows and cells. Always tabular figures.","canvas":"28px"},{"name":"stat-lg","font":"Evogria","size":"32px","lineHeight":1,"sample":"47","usage":"Featured numbers — the top cell value, hero stats.","canvas":"40px"},{"name":"stat-xl","font":"Evogria","size":"64px","lineHeight":1,"sample":"5-2","usage":"Scores on full-size graphics.","canvas":"96–140px"},{"name":"rating","font":"Mono","size":"10px","lineHeight":1,"weight":700,"sample":"8.4","usage":"Rating badge value only — 10px xs, 12px sm, 14px md. The one place bold is allowed."},{"name":"prose","font":"Roboto","size":"16px","lineHeight":"24px","sample":"Waivers fill in for teams on Wednesday and Thursday league nights.","usage":"Paragraphs, rules and explanatory copy — anything that is not a header, a name or a number.","canvas":"22–26px"}],"rules":["Three tiers, strictly: Akira for main headers only (page, section and panel titles), Evogria for labels, names, numbers, pills and buttons, Roboto for everything else.","Never bold Evogria — it has no bold face and the synthesised weight looks wrong. Emphasise with size or colour.","Evogria runs narrower than Akira. When swapping Akira for Evogria, bump the size about 2px.","Always use tabular figures for numbers so columns line up.","Labels are Evogria, uppercase, 12–13px, tracked 0.025–0.2em, in ink at 45–55%. Never Akira: if it is not a page, section or panel title, it is not a header.","Pills are Evogria on one shared box — 18px, 20px or 24px tall. Never hand-roll a pill.","The one place bold is allowed is the rating badge value, which is mono."]},"spacing":[{"name":"space-1","value":"4px","usage":"Tight inline gaps."},{"name":"space-2","value":"8px","usage":"Chip padding, row gaps in filter bars."},{"name":"space-3","value":"12px","usage":"Chip horizontal padding, panel head padding."},{"name":"space-4","value":"16px","usage":"Page gutter, panel inner padding, the notch depth."},{"name":"space-5","value":"20px","usage":"Panel head horizontal padding, eyebrow bottom margin."},{"name":"space-6","value":"24px","usage":"Grid gap between panels."},{"name":"space-8","value":"32px","usage":"Button padding, section gap on graphics."},{"name":"space-12","value":"48px","usage":"Header band vertical padding."},{"name":"space-16","value":"64px","usage":"Safe margin on a 1920x1080 graphic, clear of broadcast overscan."}],"layout":[{"name":"notch","value":"16px","usage":"The top-right corner cut of every panel: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%)."},{"name":"container","value":"1400px","usage":"Max content width, centred, 2rem padding."}],"radius":[{"name":"radius-0","value":"0px","usage":"Everything structural: panels, chips, buttons, badges, inputs, images."},{"name":"radius-full","value":"9999px","usage":"Avatars, headshots, form dots and spotlight orbs only."}],"shadow":[{"name":"shadow-panel","value":"0 24px 70px -24px rgba(0,0,0,0.85)","usage":"Depth under every panel and card."},{"name":"shadow-none","value":"none","usage":"Chips, tabs, buttons and badges carry no shadow."}],"opacity":[{"name":"grain","value":"0.035","usage":"Film-grain overlay over the whole page."},{"name":"spotlight-cyan","value":"0.12","usage":"The cyan spotlight orb: radial-gradient(circle, rgba(1,188,251,0.12), transparent 62%), blur 30px."},{"name":"spotlight-accent","value":"0.12","usage":"The second spotlight orb — red by default, the entity colour on team and player pages."},{"name":"watermark-logo","value":"0.07","usage":"Faded entity logo behind a page header, blur 2px at 500px."}],"motion":[{"name":"ease-brand","value":"cubic-bezier(0.16, 1, 0.3, 1)","usage":"Every entrance and fill."},{"name":"duration-fill","value":"0.9s","usage":"Value bar fill, once, on view."},{"name":"duration-header","value":"0.7s","usage":"Header rise: opacity 0 to 1, y 24px to 0, blur 6px to 0."},{"name":"duration-spotlight","value":"28s","usage":"Cyan orb drift loop; the accent orb takes 34s; the header sweep rotates once per 55s."}],"shape":["Square corners everywhere. No rounded corners on panels, buttons, chips, inputs or images.","Panels carry a notched top-right corner, 16px: clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 0 100%).","Circles are only for avatars, headshots, form dots and the spotlight orbs.","No left accent bars — use colour or an icon instead.","Panel depth is one shadow: 0 24px 70px -24px rgba(0,0,0,0.85). Chips, tabs, buttons and badges carry none."],"tokens":"https://www.rinkrivals.com/brand/tokens.json","graphics":{"canvas":"1920 x 1080 on bg-page, with a 64px safe margin on all sides. Nothing but bleed imagery crosses it.","steps":["Header row, y 64–200: the code badge (cyan fill, black text), then the eyebrow label in muted ink, then a hairline to the right edge of the safe area.","Hero title under it at 96–120px, leading 0.85, uppercase, two lines at most, the second word in cyan or the entity colour. Left aligned at x 64.","The crest sits top-right in the header band at 170px, bottom-aligned with the title, a subtitle in muted ink to its left. On an entity graphic the team logo takes that spot and the crest drops to the footer at 80px.","Content zone, y 240–980: a 12-column grid with 24px gutters inside the safe area.","Every block is a panel — panel surface, the 16px notch, the panel shadow, with a head strip on top. Cells inside a panel take a 1px cyan border at 22% over a 110° cyan wash fading out by 72%.","Footer, 40px off the bottom: the site, the rules page and the stream, in Akira at 16px, 0.12em tracking, white at 45%.","Leaderboard rows are 56px tall: rank left, name at 20px, value right-aligned, a value bar behind scaled to the leader. Row one is the featured cell with the red rank badge.","Matchup: two columns, each logo at 200px, name in title, record in caption, the score between them at 96–140px. The winner takes the featured-cell treatment in their own colour."],"rules":["One red element per graphic. Cyan carries the rest.","Use the entity colour for a team or player graphic, exactly as their page does.","Never round anything, never add left accent bars, never stack gradients, never use emoji."]},"broadcast":{"carbonPanel":"background:\n  repeating-linear-gradient(45deg, rgba(0,0,0,.16) 0 1px, transparent 1px 3px),\n  repeating-linear-gradient(-45deg, rgba(255,255,255,.04) 0 1px, transparent 1px 3px),\n  linear-gradient(180deg, rgba(255,255,255,.06) 0%, rgba(255,255,255,0) 40%),\n  linear-gradient(180deg, #0a1c28, #06131c);","litTeamRow":"background:\n  repeating-linear-gradient(45deg, rgba(0,0,0,.16) 0 1px, transparent 1px 3px),\n  linear-gradient(180deg, rgba(255,255,255,.18) 0%, rgba(255,255,255,.03) 48%, rgba(0,0,0,.24) 100%),\n  linear-gradient(90deg, rgba(6,19,28,0) 0%, rgba(6,19,28,.55) 55%, rgba(6,19,28,.92) 100%),\n  var(--team);","rules":["Two surfaces carry everything on air: a carbon weave on navy, and a team colour lit from above that fades to navy across the row.","Never use color-mix(). OBS’s browser source predates it and the colour silently drops out on air — compute lighter and deeper shades from the hex before rendering.","The crest sits on a deeper tile of the team colour with a slanted right edge. Never crop a crest and never show it twice.","Numbers are Evogria, white, tabular. A score sits on a darker cell of the row.","Pills are flat and square with no border. One highlighted pill may take the team’s light shade with navy text.","Entrances wipe in from the left with a light streak; big words flip up letter by letter; numbers roll like an odometer. Nothing flashes the whole screen white."]},"donts":["No accent colours outside the palette — no emerald, yellow, slate, purple or default framework accents.","Green and orange are semantic only (win, overtime loss). Never decorative.","No rounded corners on structural UI.","No left accent bars.","No glassmorphism gradient header bars, and no busy multi-stop gradients.","Never bold Evogria.","Never use a player’s Discord avatar as their picture — use their photo-day headshot, or a silhouette.","Don’t set red as small text on navy; it fails contrast."],"assets":[{"name":"Crest (flat)","url":"https://www.rinkrivals.com/logo.png","type":"image/png"},{"name":"Crest (3D)","url":"https://www.rinkrivals.com/logo-3d.png","type":"image/png"},{"name":"Wordmark (hero)","url":"https://www.rinkrivals.com/rink_rivals_logo_hero.webp","type":"image/webp"},{"name":"Wordmark (header)","url":"https://www.rinkrivals.com/rink_rivals_logo_header.webp","type":"image/webp"},{"name":"Akira (display font)","url":"https://www.rinkrivals.com/Akira.woff2","type":"font/woff2"},{"name":"Evogria (body font)","url":"https://www.rinkrivals.com/evogria.woff2","type":"font/woff2"}]}