Typography System
MYMUSICK uses distinct typography strategies in each theme. The original theme features a custom Gyanko font, while the formal theme uses modern Google Fonts with a clear hierarchy.
Font Families
Original Theme
Formal Theme
Gyanko Custom Font The original theme’s primary brand font is Gyanko , a custom typeface loaded via @font-face. Font Declaration
Base Typography
@font-face {
font-family : 'Gyanko' ;
src : url ( "fonts/gyanko-regular.otf" ) format ( "opentype" );
font-weight : normal ;
font-style : normal ;
}
Font Stack Element Font Family Purpose Body 'Segoe UI', Tahoma, Geneva, Verdana, sans-serifBody text, metadata .title'Gyanko', sans-serifLogo/brand text .bttlg'Gyanko', sans-serifButtons .sidebar a'Gyanko', sans-serifNavigation links .intxt'Gyanko', sans-serifSection headings
Character Set Gyanko is a display font best used for headings and UI elements. Ensure the font file is available at fonts/gyanko-regular.otf relative to your CSS file.
Usage Examples Title / Logo
Navigation
Section Headings
Buttons
.title {
font-family : 'Gyanko' , sans-serif ;
font-size : 40 px ;
letter-spacing : 2 px ;
color : var ( --accent ); /* #FF5757 */
font-weight : normal ;
margin : 0 ;
}
Google Fonts Stack The formal theme combines Bebas Neue (display) with DM Sans (body) for a professional, modern aesthetic. Font Import
CSS Variables
Base Typography
@import url ( 'https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:ital,wght@0,300;0,400;0,500;1,300&display=swap' );
Font Roles Font Variable Usage Characteristics Bebas Neue --font-displayTitles, headings, large text All-caps, condensed, bold DM Sans --font-bodyBody, UI text, labels Clean, geometric, legible
DM Sans Weight Scale
Light: 300 Metadata, captions
Medium: 500 Buttons, labels
Light Italic: 300 Emphasis
Usage Examples Display: Logo
Display: Section Heading
Display: Dialog Heading
Body: Navigation
Body: Buttons
Body: Player
.title {
font-family : var ( --font-display ); /* Bebas Neue */
font-size : 28 px ;
letter-spacing : 3 px ;
color : var ( --accent ); /* #e8ff47 */
font-weight : normal ;
line-height : 1 ;
}
Type Scale
Original Theme Sizing
Element Size Font Usage .title40pxGyanko Logo/header .intxt25pxGyanko Section heading .sidebar a24pxGyanko Navigation .bttlg16pxGyanko Buttons .search16pxSegoe UI Input fields #nowPlaying18pxSegoe UI Player text .song strong14pxSegoe UI Song title .song small12pxSegoe UI Artist name
Element Size Change .title28px-12px .intxt25pxNo change #nowPlaying14px-4px Other elements Same Unchanged
Element Size Font Usage .intxtclamp(42px, 5vw, 72px)Bebas Neue Hero heading .login-form h332pxBebas Neue Dialog heading .title28pxBebas Neue Logo Body 15pxDM Sans Base text .sidebar a14pxDM Sans Navigation .search14pxDM Sans Input .song strong13.5pxDM Sans Song title .bttlg13pxDM Sans Buttons #nowPlaying13pxDM Sans Player text .song small12pxDM Sans Metadata
Element Size Change .intxt36pxFixed size .title24px-4px #nowPlaying13pxNo change Other elements Same Unchanged
Letter Spacing
Both themes use letter-spacing for display typography to enhance readability and brand presence.
Original Theme
Formal Theme
.title {
letter-spacing : 2 px ; /* Logo: moderate tracking */
}
/* No letter-spacing on other elements */
Bebas Neue naturally has condensed proportions, so increased letter-spacing improves legibility at display sizes.
Line Height
Original Theme
/* Uses browser defaults for most elements */
/* No explicit line-height declarations */
.title {
line-height : 1 ; /* Tight for logo */
}
.intxt {
line-height : .95 ; /* Extra tight for hero */
}
/* Body elements use browser defaults (~1.5) */
Text Overflow Handling
Both themes implement ellipsis truncation for song metadata:
Original Theme
Formal Theme
.song-info {
overflow : hidden ;
}
.song strong ,
.song small {
display : block ;
white-space : nowrap ;
overflow : hidden ;
text-overflow : ellipsis ;
}
Text Colors
Original Theme
Primary Text
Secondary Text
body {
color : var ( --text-light ); /* white */
}
.title {
color : var ( --accent ); /* #FF5757 coral */
}
#nowPlaying {
color : black ; /* High contrast on teal */
}
Semantic Text Colors
Input Placeholders
body {
color : var ( --text ); /* #e8e6df warm white */
}
.title , .login-form h3 {
color : var ( --accent ); /* #e8ff47 yellow */
}
.sidebar a {
color : var ( --muted ); /* #6b6b72 gray */
}
.sidebar a :hover {
color : var ( --text ); /* Brighten on hover */
}
.song strong {
color : var ( --text ); /* Primary text */
}
.song small {
color : var ( --muted ); /* Secondary text */
font-weight : 300 ; /* Lighter weight */
}
Responsive Typography
Original Theme
Mobile Adjustments (@max-width: 600px)
@media ( max-width : 600 px ) {
.title {
font-size : 28 px ; /* Down from 40px */
}
#nowPlaying {
font-size : 14 px ; /* Down from 18px */
}
/* Other sizes remain constant */
}
Fluid Typography
Mobile Breakpoint (@max-width: 768px)
.intxt {
font-size : clamp ( 42 px , 5 vw , 72 px );
/* Scales between 42px (mobile) and 72px (desktop) */
}
Text Alignment
Original Theme
Formal Theme
.intxt {
text-align : center ; /* Centered headings */
}
#nowPlaying {
text-align : center ;
}
/* Mobile specific */
@media ( max-width : 600 px ) {
#nowPlaying {
font-size : 14 px ;
/* Already centered */
}
}
Font Loading Strategy
Original: @font-face
Formal: Google Fonts
Self-Hosted Font
Font Declaration
@font-face {
font-family : 'Gyanko' ;
src : url ( "fonts/gyanko-regular.otf" ) format ( "opentype" );
font-weight : normal ;
font-style : normal ;
}
File Structure
Ensure the font file exists at: project/
├── css/
│ └── estilooriginal.css
└── fonts/
└── gyanko-regular.otf
Fallback
Always include fallback fonts: font-family : 'Gyanko', sans-serif ;
If gyanko-regular.otf fails to load, the browser will fall back to the default sans-serif font, which may significantly change the appearance.
CDN-Hosted Fonts
Import Statement
@import url ( 'https://fonts.googleapis.com/css2?family=Bebas+Neue&family=DM+Sans:ital,wght@0,300;0,400;0,500;1,300&display=swap' );
CSS Variables
:root {
--font-display : 'Bebas Neue' , sans-serif ;
--font-body : 'DM Sans' , sans-serif ;
}
Apply Variables
body { font-family : var ( --font-body ); }
.title { font-family : var ( --font-display ); }
Loading Optimization The display=swap parameter in the Google Fonts URL ensures:
Immediate text rendering with fallback fonts
Swap to web fonts once loaded (no invisible text)
Better perceived performance
Google Fonts are cached across domains, so users likely already have Bebas Neue and DM Sans loaded from other sites.
Best Practices
Limit Font Weights Only load the weights you actually use (300, 400, 500 in formal theme)
Use Variable Fonts Consider variable fonts for better performance if many weights are needed
Fallback Stacks Always include system font fallbacks: sans-serif, serif, monospace
Optimize Display Fonts Use display fonts sparingly for headings and brand elements only
Accessibility
Font Size Minimums
Ensure body text is at least 14px for readability. Both themes meet this requirement:
Original: 16px (search), 14px+ (song info)
Formal: 15px (body), 13px+ (UI elements)
Relative Units
Consider using rem instead of px for better accessibility:
/* Current (px) */
body { font-size : 15 px ; }
/* Accessible (rem) */
html { font-size : 100 % ; } /* 16px default */
body { font-size : 0.9375 rem ; } /* 15px at default zoom */
Using rem units allows users to scale text globally via browser settings without breaking your layout.
Typography Utilities
Common text treatment patterns found in both themes:
Text Truncation
No Text Selection (for UI elements)
Smooth Font Rendering
.truncate {
white-space : nowrap ;
overflow : hidden ;
text-overflow : ellipsis ;
}