A comprehensive guide to visual consistency, brand identity, and implementation standards
Implementation Note: This document uses CSS classes for visual examples rather than inline styles to improve maintainability. When adapting this guide for other formats (like PDF export), you may need to include the CSS definitions or convert them back to inline styles.
- Brand Identity
- Typography
- Color System
- Component Standards
- Layout & Spacing
- Animation Guidelines
- Accessibility Standards
- Implementation Examples
- Responsive Design
The Cawnpore Magazine's visual identity embodies:
- Literary heritage: Reflecting both historical context and contemporary literary culture
- Elegance: Clean, sophisticated design that puts content first
- Warmth: Inviting color palette that creates a comfortable reading experience
- Cultural connection: Visual elements that honor Cawnpore's history and significance
- Maintain clear space around the logo equal to 50% of its height
- Minimum display size: 32px height
- Always use the logo in its entirety without cropping or modifying
- Acceptable variants: primary burgundy on light backgrounds, cream on dark backgrounds
| Element Type | Font Family | Weight | Style |
|---|---|---|---|
| Primary Headings | "Crimson Text", serif | 700 | Italic |
| Body Text | Georgia, serif | 400 | Normal |
| Navigation | Serif fonts | 400 | Normal |
| Quotes | Georgia, serif | 400 | Italic |
| Element | Desktop | Tablet | Mobile | Line Height |
|---|---|---|---|---|
| H1 | 62px | 48px | 32px | 1.2 |
| H2 | 36px | 30px | 24px | 1.25 |
| H3 | 24px | 20px | 18px | 1.3 |
| Body | 16px | 16px | 14px | 1.6 |
| Small | 14px | 13px | 12px | 1.5 |
- Use heading elements (h1-h6) semantically, not just for styling
- Maintain a single H1 per page for proper document structure
- Limit line length to 65-75 characters for optimal readability
- Avoid all-caps text except for navigation items
- Use proper typographic punctuation (smart quotes, em dashes)
<style> /* CSS classes for color swatches */ .color-swatch { width: 50px; height: 30px; border: 1px solid #ccc; } .burgundy { background-color: #780000; } .cream { background-color: #fdf0d5; } .deep-rose { background-color: #c5415d; } .deep-purple { background-color: #37163a; } </style>
| Color | Swatch | Hex Code | RGB | Usage |
|---|---|---|---|---|
| Burgundy | #780000 | rgb(120, 0, 0) | Headers, navigation, buttons, accents | |
| Cream | #fdf0d5 | rgb(253, 240, 213) | Backgrounds, text on dark colors | |
| Deep Rose | #c5415d | rgb(197, 65, 93) | Highlights, active states | |
| Deep Purple | #37163a | rgb(55, 22, 58) | Secondary accents, card backgrounds |
| Gradient Name | Visual | CSS Definition | Usage |
|---|---|---|---|
| Primary Gradient | linear-gradient(135deg, #d24848, #7a0000, #cea8bc) |
Navigation background, feature sections | |
| Card Gradient | linear-gradient(to bottom, #cdb2ad, #fdf0d5, #bcaf87) |
Card backgrounds, content containers | |
| Button Gradient | linear-gradient(45deg, #37163a, pink) |
Primary buttons | |
| Secondary Button | linear-gradient(45deg, pink, #37163a) |
Secondary buttons |
- Ensure text has a minimum contrast ratio of 4.5:1 against backgrounds
- Use the WebAIM contrast checker for verification: https://webaim.org/resources/contrastchecker/
Note: Always verify the trustworthiness of external tools before use. WebAIM is a reputable organization, but you may also consider alternative contrast checkers such as Color Contrast Accessibility Validator or Accessible Colors.
- Don't rely solely on color to convey information or state
- Provide additional visual cues (icons, patterns, etc.) alongside color indicators
The following color combinations are recommended for consistent usage across the site:
| Purpose | Foreground | Background | Example |
|---|---|---|---|
| Primary Content | Dark Text (#262626) | Cream (#fdf0d5) | Text Sample |
| Inverted Content | Cream (#fdf0d5) | Burgundy (#780000) | Text Sample |
| Highlighted Content | White (#ffffff) | Deep Rose (#c5415d) | Text Sample |
| Secondary Content | Cream (#fdf0d5) | Deep Purple (#37163a) | Text Sample |
While the site currently doesn't implement dark mode, these color mappings should be used if dark mode is implemented:
| Light Mode Color | Dark Mode Equivalent | Sample |
|---|---|---|
| Cream Background (#fdf0d5) | Dark Brown (#1a0f05) | |
| Burgundy (#780000) | Lighter Burgundy (#a63636) | |
| Dark Text (#262626) | Off-white Text (#e0e0e0) |
input[type="text"],
input[type="email"],
input[type="password"],
textarea {
padding: 15px;
border: none;
border-radius: 15px;
width: 100%;
background-color: #fff;
margin-bottom: 15px;
font-family: Georgia, serif;
font-size: 16px;
transition: box-shadow 0.3s ease;
}
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
textarea:focus {
outline: none;
box-shadow: 0 0 0 2px #780000;
}input[type="checkbox"],
input[type="radio"] {
margin-right: 8px;
accent-color: #780000;
}
label {
display: flex;
align-items: center;
margin-bottom: 10px;
font-size: 16px;
color: #333;
}select {
padding: 12px 15px;
border: none;
border-radius: 15px;
background-color: #fff;
width: 100%;
font-family: Georgia, serif;
font-size: 16px;
appearance: none;
background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
background-repeat: no-repeat;
background-position: right 15px center;
background-size: 16px;
}
select:focus {
outline: none;
box-shadow: 0 0 0 2px #780000;
}form {
width: 100%;
max-width: 600px;
margin: 0 auto;
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
margin-bottom: 8px;
font-weight: 500;
}
.form-error {
color: #c5415d;
font-size: 14px;
margin-top: 5px;
}.primary-button {
display: inline-block;
text-decoration: none;
color: white;
border: none;
border-radius: 95px 8px;
padding: 12px 34px;
font-size: 13px;
font-weight: 600;
background: linear-gradient(45deg, #37163a, pink);
position: relative;
cursor: pointer;
}.secondary-button {
display: inline-block;
text-decoration: none;
color: #f9f9e6;
border: none;
border-radius: 8px 95px;
padding: 12px 46px;
font-size: 13px;
font-weight: 600;
background: linear-gradient(45deg, pink, #37163a);
position: relative;
cursor: pointer;
}| State | Appearance |
|---|---|
| Default | As specified above |
| Hover | Border: 1px solid #780000; Gradient reversed; Transition: 1s |
| Focus | Same as hover + visible outline |
| Active | Scale: 0.95 |
| Disabled | Opacity: 0.6; Cursor: not-allowed |
.card {
display: block;
position: relative;
width: 300px;
height: auto;
min-height: 416px;
background-color: rgba(234, 171, 214, 0.4);
border-radius: 10px;
padding: 2em 1.2em;
margin: 12px;
text-decoration: none;
z-index: 0;
overflow: hidden;
background: linear-gradient(to bottom, #cdb2ad, #fdf0d5, #bcaf87);
font-family: Arial, Helvetica, sans-serif;
box-shadow: 10px 10px 20px #c6bcc5;
max-width: 320px;
}.navigation {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 5%;
margin-right: 6px;
background: linear-gradient(135deg,
rgba(242, 237, 237, 0.3),
rgba(122, 0, 0, 0.8),
rgba(17, 16, 16, 0.3)
);
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-bottom: 1px solid rgba(179, 177, 177, 0.2);
position: fixed;
top: 0;
height: 9%;
width: 100%;
z-index: 999;
}- Main content: 80% (desktop), 90% (mobile)
- Header height: 60vh (desktop), 40vh (mobile)
- Standard section padding: 80px top/bottom, 20px left/right
| Size | Value | Usage |
|---|---|---|
| xs | 4px | Minimal separation, icon padding |
| sm | 8px | Close elements, button padding |
| md | 16px | Standard spacing, card margin |
| lg | 32px | Section internal spacing |
| xl | 64px | Major section breaks |
| xxl | 80px | Section padding top/bottom |
- Use flexible layouts with CSS Grid or Flexbox
- Standard gap between grid items: 16px
- Card layouts should use flexible sizing with min/max width constraints
.container {
display: flex;
flex-wrap: wrap;
gap: 16px;
justify-content: center;
align-items: flex-start;
padding: 1rem;
}| Speed | Duration | Usage |
|---|---|---|
| Fast | 0.2s | Micro-interactions, icon changes |
| Medium | 0.3-0.5s | Hover effects, color changes |
| Slow | 0.8-1s | Major transitions, gradient changes |
.nav-links ul li::after {
content: '';
width: 0%;
height: 2px;
background: #fdf0d5;
display: block;
margin: auto;
transition: 0.5s;
}
.nav-links ul li:hover::after {
width: 100%;
}.card:before {
content: '';
position: absolute;
z-index: -1;
top: -16px;
right: -16px;
background: linear-gradient(135deg, #8B0000, #5a0000);
height: 40px;
width: 40px;
border-radius: 32px;
transform: scale(1);
transform-origin: 50% 50%;
transition: transform 0.35s ease-out;
}
.card:hover:before {
transform: scale(28);
}
.card:hover .small-desc {
transition: all 0.5s ease-out;
color: rgba(255, 255, 255, 0.8);
}@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.loader i {
animation: spin 2s linear infinite;
}- Provide a mechanism to reduce or disable animations for users with vestibular disorders
- Avoid animations that involve large movements of page elements
- Keep animations subtle and purposeful, not distracting
- All pages must be navigable by keyboard
- Interactive elements must have visible focus states
- Color alone should not convey meaning
- Text should maintain minimum contrast ratio of 4.5:1
- Images should have appropriate alt text
- Use appropriate ARIA landmarks for page sections (e.g.,
role="navigation",role="main") - Include ARIA attributes when native HTML semantics are insufficient
- Use ARIA labels for elements that need additional context
Example:
<nav role="navigation" aria-label="Main Menu">
<!-- Navigation content -->
</nav>All interactive elements must have visible focus states that meet WCAG 2.1 AA requirements:
- Focus indicators must have sufficient contrast
- Focus must be clearly visible and not obscured
- Focus should move in a logical order through the page
Accessibility should be tested using the following methods and tools:
- Use the WAVE Web Accessibility Evaluation Tool: https://wave.webaim.org/
Note: Always verify the trustworthiness of external tools before use. Alternative tools include Axe by Deque, Siteimprove Accessibility Checker, or Tenon.
- Run Lighthouse accessibility audits in Chrome DevTools
- Use the axe DevTools browser extension
- Test keyboard navigation (Tab, Enter, Space, Arrow keys)
- Verify with screen readers (NVDA on Windows, VoiceOver on Mac)
- Check for sufficient color contrast in different lighting conditions
- Test with zoomed browser content (up to 200%)
- Disable CSS to verify logical content structure
- Navigation: Can be accessed and used with keyboard only
- Images: Have appropriate alt text (decorative images should use
alt="") - Forms: All inputs have associated labels and error messages
- Interactive Elements: Have appropriate roles and states
- Dynamic Content: Announces changes to screen readers
Each page should link to an accessibility statement that:
- States the target compliance level (WCAG 2.1 AA)
- Provides contact information for accessibility issues
- Lists any known accessibility limitations
<section class="standard-section">
<h2 class="section-heading">Section Title</h2>
<div class="section-content">
<p>Content paragraph with appropriate line length and spacing.</p>
<!-- Additional content -->
</div>
</section><div class="card">
<p class="card-title">Card Title</p>
<p class="small-desc">
Card description text goes here. Keep it concise and meaningful.
</p>
<div class="go-corner">
<div class="go-arrow">→</div>
</div>
</div><nav role="navigation" aria-label="Main Menu">
<div class="nav-links" id="navLinks">
<i class="fa fa-times" onclick="hideMenu()"></i>
<ul>
<li><a href="index.html">HOME</a></li>
<li><a href="about.html">ABOUT</a></li>
<!-- Additional navigation items -->
</ul>
</div>
<i class="fa fa-bars" onclick="showMenu()"></i>
</nav>| Breakpoint | Width | Target Devices |
|---|---|---|
| Small | Up to 700px | Mobile phones |
| Medium | 701px - 1024px | Tablets, small laptops |
| Large | 1025px and above | Desktops, large screens |
Use these standard media query templates for consistent responsive behavior:
/* Mobile styles */
@media (max-width: 700px) {
/* Mobile-specific styles */
}
/* Tablet styles */
@media (min-width: 701px) and (max-width: 1024px) {
/* Tablet-specific styles */
}
/* Desktop styles */
@media (min-width: 1025px) {
/* Desktop-specific styles */
}Include these print styles for optimal printed output:
@media print {
/* Hide navigation, footer, and interactive elements */
nav, footer, button, .social-icons, .subscription-box {
display: none !important;
}
/* Optimize text for print */
body {
font-size: 12pt;
line-height: 1.5;
color: #000;
background: #fff;
}
/* Ensure all text is visible */
.card, .card:hover .small-desc {
color: #000 !important;
background: #fff !important;
}
/* Display full URLs for links */
a[href]:after {
content: " (" attr(href) ")";
font-size: 90%;
}
/* Page breaks */
h1, h2, h3 {
page-break-after: avoid;
page-break-inside: avoid;
}
img {
page-break-inside: avoid;
max-width: 100% !important;
}
/* Avoid wasteful blank pages */
@page {
margin: 2cm;
}
}- Navigation collapses to hamburger menu
- Multi-column layouts stack vertically
- Font sizes reduce according to type scale
- Touch targets maintain minimum size of 44px × 44px
- Card layouts adjust to single column with full width
@media (max-width: 700px) {
.nav-links ul {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
padding: 40px 20px;
}
.nav-links ul li {
display: block;
opacity: 0;
transform: translateX(30px);
animation: slideIn 0.4s forwards;
}
.nav-links {
position: fixed;
background: linear-gradient(135deg, #d24848, #7a0000, #cea8bc);
height: 100vh;
width: 200px;
top: 0;
right: -100%;
text-align: left;
z-index: 2;
box-shadow: -8px 0 20px rgba(0, 0, 0, 0.5);
transition: right 0.4s ease-in-out;
}
.nav-links.nav-active {
right: 0;
}
}This style guide is a living document and may be updated as the design system evolves. Always refer to the most recent version when implementing new features or making changes to existing components.