# Coding Standards Documentation
## Introduction
This document outlines our **HTML class naming conventions** and **structural guidelines**. Adhering to these standards ensures **consistent, readable, and maintainable code** across all web projects. Our goal is to facilitate **seamless team collaboration**, **reduce development time**, and **improve long-term code maintainability**.
-----
## HTML Class Naming Conventions
We'll primarily use a **BEM (Block Element Modifier)-like approach** for class naming. This method provides clarity, prevents naming collisions, and makes our CSS more modular and scalable.
### Buttons
Buttons are fundamental interactive elements. These classes ensure consistent styling and clear intent.
* **`.btn`**
* **Description**: Applies **base styles** to all buttons (e.g., `display`, `padding`, `border-radius`). This is the foundation for all button variations.
* **Usage**: ``
* **`.btn--primary`**, **`.btn--secondary`**, etc.
* **Description**: Defines different **semantic styles** for buttons (e.g., primary action, secondary action). These classes typically apply specific colors, background colors, and hover states.
* **Usage**:
* ``
* ``
* **`.btn--large`**, **`.btn--small`**
* **Description**: **Modifies the size** of the button, adjusting properties like `padding` and `font-size`.
* **Usage**:
* ``
* ``
* **`.btn--disabled`**
* **Description**: Visually indicates a **non-interactive button**, typically by dimming it and disabling pointer events.
* **Usage**: ``
### Layout
Layout classes help create consistent page structures and enable responsive design.
* **`.container`**
* **Description**: Wraps main page content, typically used to **center content** and **limit its maximum width**, often providing consistent horizontal padding.
* **Usage**: `
...
`
* **`.row`**
* **Description**: Creates **horizontal groupings of elements**, often leveraging Flexbox or Grid for column arrangement.
* **Usage**: `
...
`
* **`.col`**, **`.col--[breakpoint]-[size]`** (e.g., `.col--md-6`)
* **Description**: Divides a `.row` into **vertical columns**. Widths are typically defined by additional classes for responsiveness (e.g., `.col--md-6` for 50% width on medium screens and up), implying a foundational CSS grid system.
* **Usage**:
* `
...
`
* `
...
`
### Sections
These classes define the main structural blocks of a web page, improving semantic understanding and styling.
* **`.header`**
* **Description**: Styles the **top section of a web page**, commonly containing the site logo, navigation, and search bar.
* **Usage**: `...`
* **`.main`**
* **Description**: Styles the **primary content area** of a web page. Ideally, there should be only one `` element per document.
* **Usage**: `...`
* **`.footer`**
* **Description**: Styles the **bottom section of a web page**, often including copyright information or sitemaps.
* **Usage**: ``
* **`.section`**
* **Description**: A generic class for **thematic groupings of content**, useful for applying consistent padding, margins, or background styles.
* **Usage**: `...`
### Forms
Form classes ensure a consistent look and feel for user input elements.
* **`.form`**
* **Description**: Styles the **entire form container**, applying general layout and spacing rules to its elements.
* **Usage**: ``
* **`.form__group`**
* **Description**: Groups related form elements (e.g., a label and its input) for consistent vertical spacing.
* **Usage**:
```html