FHS StudClique Styleguide

StudClique is an online application designed specifically for students at the Fachhochschule Salzburg. Its purpose is to help them connect with classmates who share similar interests and to organize events together in a straightforward way.

The primary purpose of this styleguide is to convey, in a clear and efficient manner, both the essence of our brand and the technical foundations that underpin our codebase.

Brand & Design Tokens

Typography

Font Family & Base Font Size

StudClique uses Helvetica with a fallback of Arial and sans-Serif fonts. As a Helvetica Typeface license is very exensive we will be using the system fonts from users Computers.

The base font size is 16px, other font sizes are then defined in rem.

Sizes

Headings
Aa
Text 4xl (Heading 1)
--text-4xl
3.815rem (60.992px)
Aa
Text 3xl (Heading 2)
--text-3xl
3.815rem (60.992px)
Aa
Text 3xl (Heading 3)
--text-2xl
3.815rem (60.992px)
Aa
Text xl (Heading 4)
--text-xl
3.815rem (60.992px)
Aa
Text lg (Heading 5)
--text-lg
3.815rem (60.992px)
Aa
Text md (Heading 5)
--text-md
3.815rem (60.992px)
Body
Aa
Text base (p, ol, ul)
--text-base
3.815rem (60.992px)
Aa
Text sm
--text-sm
3.815rem (60.992px)
Aa
Text xs
--text-xs
3.815rem (60.992px)

Color Palette

All Values

Glossamer
Glossamer 50
--color-glossamer-50
#edfaf8
Glossamer 100
--color-glossamer-100
#dcf5f2
Glossamer 200
--color-glossamer-200
#aae3da
Glossamer 300
--color-glossamer-300
#7fd4c6
Glossamer 400
--color-glossamer-400
#36b39a
Glossamer 500
--color-glossamer-500
#00916e
Glossamer 600
--color-glossamer-600
#00825f
Glossamer 700
--color-glossamer-700
#006e49
Glossamer 800
--color-glossamer-800
#005735
Glossamer 900
--color-glossamer-900
#004224
Glossamer 950
--color-glossamer-950
#002b16
Neutral
Neutral 50
--color-neutral-50
#f7f7f7
Neutral 100
--color-neutral-100
#f2f2f2
Neutral 200
--color-neutral-200
#dedcdc
Neutral 300
--color-neutral-300
#c7c4c3
Neutral 400
--color-neutral-400
#9e9a99
Neutral 500
--color-neutral-500
#737373
Neutral 600
--color-neutral-600
#525252
Neutral 700
--color-neutral-700
#404040
Neutral 800
--color-neutral-800
#262626
Neutral 900
--color-neutral-900
#171717
Neutral 950
--color-neutral-950
#0a0a0a
Red
Red 100
--color-red-100
#f5dcdc
Red 500
--color-red-500
#d81313
Jungle
Jungle 100
--color-jungle-100
#dcf5de
Jungle 700
--color-jungle-700
#2a8d31

Semantic Values

Text
Text Primary
--color-text-primary
var(--color-neutral-950)
Text Inverse
--color-text-inverse
var(--color-neutral-50)
Surface
Surface Primary
--color-surface-primary
var(--color-neutral-50)
Surface Secondary
--color-surface-secondary
var(--color-neutral-100)
Surface Tertiary
--color-surface-tertiary
var(--color-neutral-200)
Surface Inverse
--color-surface-inverse
var(--color-neutral-950)
Accent
Accent
--color-accent
var(--color-glossamer-700)
Accent Contrast
--color-accent-contrast
var(--color-neutral-50)
Accent Hover
--color-accent-hover
var(--color-glossamer-900)
Secondary
Secondary
--color-secondary
var(--color-neutral-50)
Secondary Contrast
--color-secondary-contrast
var(--color-neutral-950)
Secondary Hover
--color-accent-hover
var(--color-neutral-200)
Error
Error
--color-error
var(--color-red-100)
Error Contrast
--color-error-contrast
var(--color-red-500)
Success
Success
--color-success
var(--color-jungle-100)
Success Contrast
--color-success-contrast
var(--color-jungle-700)

Spacing Scale

Variables
Space xl
--space-xl
8rem (128px)
Space lg
--space-lg
4rem (64px)
Space md
--space-md
2rem (32px)
Space base
--space-base
1rem (16px)
Space sm
--space-sm
0.5rem (8px)
Space xs
--space-xs
0.25rem (4px)

Component Library

Buttons

Try out the buttons by hovering over them, clicking on them and focusing on them to see all the different states.

Primary

Secondary

Inputs

Try out the Inputs, Textareas and Selects by hovering over them, clicking on them and focusing on them to see all the different states.

Text Input

Textarea

Select

Cards

Event Title

Short Event description using no more that 15 words to quickly get the idea across

Venue or Location

Entry price

Register

Event Title

Short Event description using no more that 15 words to quickly get the idea across

Venue or Location

Entry price

Register

Figures

StudClique Official welcome concert on Monday the 20th of June 2025

Filters

CSS Methodology

This project uses BEM (Block‑Element‑Modifier) for the bulk of its component styling, while selectively adding small utility classes for very specific, repeatable tweaks. The BEM methodology is employed to give each visual component a clear, hierarchical structure: a block represents a standalone component, an element is a child that only exists within its block, and a modifier indicates a state or variant of the block or one of its elements. By sticking to this naming convention, the CSS remains modular, prevents naming collisions, and makes it straightforward to reuse components across different parts of the site with varying visual or functional states. It is also something new for us and a great learning opportunity.

Utility classes are reserved for tiny, global styling adjustments that would otherwise need to be duplicated across multiple BEM blocks. These include font weight adjustments and heading sizes. Because they are global, they can be applied to any element regardless of its block context, avoiding redundant rules for simple tweaks. These utilities are specific and they serve purely as one‑off styling helpers. This ensures utilities address isolated visual needs that span the across several blocks.

The CSS follows the concentric‑css approach, arranging properties into nested functional layers. First comes placement (display, position, float, and clear) defining how the element sits in the flow. Next is visibility (visibility, opacity, z‑index) controlling whether the element is seen. Then the box‑model layers (margin, outline, border, background, padding) set the element’s envelope. After that come content dimensions (width, height, overflow) determining the actual size and scroll behavior. Finally typography (color, text, font) controls the element’s text appearance. This ordered, concentric structure keeps rules predictable, improves readability, and makes diffs cleaner.