Design System

Living reference for mhmdaskari.github.io. Design tokens are defined in assets/css/tokens.css — the single source of truth. Components below are styled by assets/css/main.css (Dimension template) and assets/css/styles.css (custom CV, blog, and opened-window refinements). To re-theme the site, edit a token and reload.

Color tokens

Values are read live from :root via getComputedStyle.

Backgrounds

--color-bg
--color-bg-alt
--color-bg-overlay

Foreground / text

--color-fg
--color-fg-bold
--color-fg-light
--color-fg-faint

Borders

--color-border
--color-border-bg
--color-border-bg-alt

Custom-component surfaces & lines

--color-surface-1
--color-surface-2
--color-line-subtle
--color-line-soft
--color-line-muted
--color-line-timeline
--color-line-blog

--color-line-blog and --color-fg-faint are off-palette (light grays inherited from the original blog styling).

Opacity steps

--opacity-mutedThe quick brown fox
--opacity-softThe quick brown fox
--opacity-mediumThe quick brown fox
--opacity-strongThe quick brown fox

Typography

Family · weights 300 / 600.

Type scale

--text-h1

Heading 1

--text-h2

Heading 2

--text-h3

Heading 3

--text-h4

Heading 4

--text-h5
Heading 5
--text-h6
Heading 6

Body & inline

Body copy at 1rem, line-height . This is strong, this is emphasized, this is a link, and this is inline code set in .

Spacing & radius

Spacing / sizing

--space-element
--size-element-height

Radius & border width

--radius ()
--radius-small ()
--border-width ()

Motion

Hover the box — it transitions over --duration-transition.

--duration-transition
--duration-bg
--duration-intro
--duration-article

Text

This is bold and this is strong. This is italic and this is emphasized. This is superscript text and this is subscript text. This is underlined and this is code: for (;;) { ... }. Finally, this is a link.


Blockquote

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum.

Preformatted

i = 0;

while (!deck.isInOrder()) {
    print 'Iteration ' + i;
    deck.shuffle();
    i++;
}

Lists

Unordered

ul

Alternate

ul.alt

Ordered

  1. Dolor pulvinar etiam.
  2. Etiam vel felis viverra.
  3. Felis enim feugiat.
ol

Tables

Default

NameDescriptionPrice
Item OneAnte turpis integer aliquet porttitor.29.99
Item TwoVis ac commodo adipiscing arcu aliquet.19.99
Item ThreeMorbi faucibus arcu accumsan lorem.29.99
100.00
table · .table-wrapper

Alternate

NameDescriptionPrice
Item OneAnte turpis integer aliquet porttitor.29.99
Item TwoVis ac commodo adipiscing arcu aliquet.19.99
Item ThreeMorbi faucibus arcu accumsan lorem.29.99
100.00
table.alt

Buttons

a.button[.primary|.small|.icon|.disabled] · ul.actions

Form

.fields · .field[.half] · input / select / textarea

Icons

Brand icons (Font Awesome)

ul.icons · a.icon.brands.fa-*

Academic icons (Academicons)

ul.icons · a.ai.ai-* (no .icon class, matching the site)

Images

Example image, full width
span.image.fit
Example image, floated left

The .image.left variant floats with the surrounding text wrapping to its right, while .image.fit spans the full content width. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

span.image.left

Box

A bordered .box container with standard padding. Useful for grouping related content.

.box

The .box.alt variant drops the border, padding, and radius.

.box.alt

Custom — opened article window

Production target: #main article. The visual scrollbar is injected and positioned by assets/js/main.js, while sizing, fade, and mobile scroll containment live in assets/css/styles.css.

Popup panel reference

This represents the active Dimension article panel used for About, CV, Projects, Blog, and Contact.

  • Native article scrollbars are visually transparent so content does not shift when the scrollbar appears.
  • The custom .article-scrollbar fades in on hover, wheel, touch swipe, or scroll.
  • On mobile, body.is-article-visible locks the outer page after the opening phase, letting the article own the scroll.
body.is-article-visible · #main article · .article-scrollbar[.is-scrollable][.is-visible] · .article-scrollbar-thumb

Custom — CV components

Styled by assets/css/styles.css. Used inside the injected CV.

Section title

h3.cv-section-title · i.fas

Timeline

University of California, Los Angeles Graduate Student Researcher

PhD Candidate in Civil Engineering

Expected Dec 2026 • Los Angeles, CA

Example Institution

BSc in Engineering

2015 – 2019

.cv-timeline · .cv-timeline-item · .cv-tag / .cv-role / .cv-meta

Skills

Languages PythonRC++
Tools GitDockerLaTeX
.cv-skills · .cv-skill-group · .cv-skill-label · .cv-badge

Publications

  1. An example publication title demonstrating the citation block

    Doe, J., Askari, M., & Smith, A.

    Journal of Examples, 12(3), 100–120 In press

    DOI: 10.0000/example.2026.001
ol.cv-pub-list · .cv-pub · .cv-pub-title/-authors/-venue/-doi/-status

Rows (presentations / certifications)

May 2025
Example Conference

A modular object-oriented framework for demonstrations.

Jan 2024
Certification Body

Certified Example Practitioner.

.cv-rows · .cv-row-item · .cv-row-date · .cv-row-body · .cv-row-venue

Custom — Blog card

Markup generated by assets/js/blog.js, styled by assets/css/styles.css.

2025-10-03

An example blog post

An example blog post

This is the body text of a blog post. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

.blog-post · .blog-header · .blog-date · .blog-title · .blog-text