Neon Gothic is a hybrid visual aesthetic that fuses the dramatic verticality, ornate stonework, and spiritual gravitas of medieval Gothic architecture with the electric luminosity of neon lighting and contemporary dark-mode digital interfaces. Where traditional Gothic design draws the eye upward through pointed arches, ribbed vaults, and soaring spires, Neon Gothic reinterprets these forms as glowing outlines traced against near-black surfaces – cathedral geometry rendered in phosphorescent light. The result is a design language that feels simultaneously ancient and hyper-modern, sacred and synthetic.
The aesthetic draws from several real-world visual sources. Gothic Revival architecture of the 18th and 19th centuries provides the structural vocabulary: lancet arches, tracery patterns, rose windows, flying buttresses, and pinnacle silhouettes. Neon signage culture, from the rain-slicked streets of Tokyo and Hong Kong to the vintage motel signs of the American Southwest, supplies the color temperature and luminous quality. Contemporary cyberpunk and dark-mode UI trends provide the digital framework, where darkness is not merely background but active negative space that amplifies every point of light.
In web and interface design, Neon Gothic translates to layouts built on strong vertical axes and symmetrical compositions, wrapped in deep black or dark purple-grey backgrounds. Typography blends blackletter and modern geometric sans-serifs, with display text often rendered in glowing neon hues. Decorative elements draw on Gothic tracery, pointed arch frames, and rose window motifs – but always as luminous outlines rather than solid masses. The color palette is deliberately restricted: a foundation of near-blacks and dark stone greys punctuated by two or three neon accent colors, typically electric violet, cyan, and magenta, with occasional warm amber for contrast. Every colored element should appear to emit its own light, casting soft glow halos into the surrounding darkness. The overall mood is one of reverent intensity – the hushed awe of a cathedral nave crossed with the electric buzz of a neon-lit urban night.
The Neon Gothic palette is built on a foundation of near-black and dark stone tones, pierced by intense neon accent colors. The darkness should feel deep and atmospheric, like the interior of a medieval cathedral at midnight, while the neon accents cut through with the sharp, electric quality of gas-tube signage. Every accent color should be applied with accompanying glow effects to maintain the luminous character.
| Swatch | Hex | Role/Usage |
|---|---|---|
| Obsidian Black | #0B0B10 |
Primary background, deepest layer |
| Cathedral Stone | #15151F |
Card backgrounds, secondary surfaces |
| Dark Cloister | #1C1C2A |
Elevated panels, nav backgrounds |
| Gargoyle Grey | #2A2A3C |
Borders, dividers, subtle container backgrounds |
| Ash Mortar | #3A3A50 |
Inactive states, subtle structural elements |
| Neon Violet | #A855F7 |
Primary accent, headings, interactive elements |
| Electric Orchid | #C026D3 |
Secondary accent, hover states, decorative glow |
| Spectral Cyan | #06B6D4 |
Tertiary accent, links, informational highlights |
| Magenta Flame | #EC4899 |
Highlight accent, notifications, call-to-action |
| Phantom Green | #10B981 |
Success states, confirmations, secondary decorative |
| Votive Amber | #F59E0B |
Warning indicators, warm accent, candle-light references |
| Crypt Crimson | #EF4444 |
Error states, danger, critical alerts |
| Ghost Silver | #D4D4E0 |
Primary body text on dark backgrounds |
| Mist Grey | #8888A0 |
Secondary text, captions, muted labels |
| Wraith White | #F0F0F8 |
High-emphasis text, bright display headings |
:root {
/* Backgrounds */
--gothic-bg-void: #0b0b10;
--gothic-bg-stone: #15151f;
--gothic-bg-cloister: #1c1c2a;
--gothic-bg-elevated: #2a2a3c;
--gothic-bg-mortar: #3a3a50;
/* Neon accents */
--gothic-violet: #a855f7;
--gothic-orchid: #c026d3;
--gothic-cyan: #06b6d4;
--gothic-magenta: #ec4899;
--gothic-green: #10b981;
--gothic-amber: #f59e0b;
--gothic-crimson: #ef4444;
/* Text */
--gothic-text-primary: #d4d4e0;
--gothic-text-secondary: #8888a0;
--gothic-text-bright: #f0f0f8;
/* Glows (box-shadow / text-shadow values) */
--gothic-glow-violet: 0 0 12px rgba(168, 85, 247, 0.5), 0 0 45px rgba(168, 85, 247, 0.15);
--gothic-glow-orchid: 0 0 12px rgba(192, 38, 211, 0.5), 0 0 45px rgba(192, 38, 211, 0.15);
--gothic-glow-cyan: 0 0 12px rgba(6, 182, 212, 0.5), 0 0 45px rgba(6, 182, 212, 0.15);
--gothic-glow-magenta: 0 0 12px rgba(236, 72, 153, 0.5), 0 0 45px rgba(236, 72, 153, 0.15);
/* Borders */
--gothic-border: 1px solid rgba(168, 85, 247, 0.15);
--gothic-border-bright: 1px solid rgba(168, 85, 247, 0.4);
--gothic-border-cyan: 1px solid rgba(6, 182, 212, 0.3);
}
Neon Gothic typography bridges two eras: the dense, ornamental character of medieval blackletter scripts and the clean precision of modern geometric sans-serifs. Display text and headings lean into blackletter or decorative serif faces to establish the Gothic identity, while body text uses highly legible sans-serif or monospace fonts to ensure readability on dark backgrounds. Glowing text-shadow effects applied to headings reinforce the neon dimension. The interplay between archaic letterforms and electric luminosity is central to the aesthetic’s tension.
| Font | Style | Best For |
|---|---|---|
| UnifrakturCook | Blackletter, medieval | Display headings, hero titles, logo text |
| MedievalSharp | Gothic serif, angular | Secondary headings, section titles |
| Cinzel | Classical serif, elegant | Formal headings, navigation labels |
| Cinzel Decorative | Ornamental serif | Feature titles, decorative display |
| Playfair Display | High-contrast serif | Subheadings, pull quotes, editorial text |
| Inter | Clean geometric sans | Body text, readable long-form content |
| Rajdhani | Condensed semi-rounded | Navigation, labels, UI elements |
| Space Mono | Retro-futuristic monospace | Code blocks, data elements, technical captions |
| Orbitron | Geometric, futuristic | Accent labels, counters, secondary display |
| Heading Font | Body Font | Character |
|---|---|---|
| UnifrakturCook (700) | Inter (400) | High-contrast medieval-modern, signature Neon Gothic |
| Cinzel Decorative (400) | Inter (300) | Elegant Gothic-classical with clean readability |
| MedievalSharp (400) | Rajdhani (400) | Angular Gothic with condensed modern body |
| Cinzel (700) | Space Mono (400) | Formal Gothic meets technical interface |
| Playfair Display (700) | Inter (400) | Refined Gothic-inspired editorial |
/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=UnifrakturCook:wght@700&family=Cinzel:wght@400;700;900&family=Inter:wght@300;400;500;600&display=swap');
/* Headings -- Gothic blackletter with neon glow */
h1, h2, h3 {
font-family: 'Cinzel', 'Playfair Display', serif;
font-weight: 700;
color: var(--gothic-text-bright);
text-transform: uppercase;
letter-spacing: 0.1em;
line-height: 1.2;
}
/* Display / Hero text -- blackletter with full neon treatment */
.gothic-display {
font-family: 'UnifrakturCook', 'MedievalSharp', serif;
font-size: clamp(2.5rem, 7vw, 6rem);
letter-spacing: 0.05em;
line-height: 1.1;
color: var(--gothic-violet);
text-shadow:
0 0 10px rgba(168, 85, 247, 0.8),
0 0 30px rgba(168, 85, 247, 0.4),
0 0 60px rgba(168, 85, 247, 0.2);
}
/* Body text -- clean modern sans for readability */
body {
font-family: 'Inter', system-ui, sans-serif;
font-weight: 400;
letter-spacing: 0.02em;
line-height: 1.75;
color: var(--gothic-text-primary);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Multi-layered neon text glow */
.gothic-neon-text {
color: var(--gothic-violet);
text-shadow:
0 0 7px rgba(168, 85, 247, 0.9),
0 0 20px rgba(168, 85, 247, 0.6),
0 0 42px rgba(168, 85, 247, 0.35),
0 0 82px rgba(168, 85, 247, 0.15);
}
/* Cyan neon variant */
.gothic-neon-text--cyan {
color: var(--gothic-cyan);
text-shadow:
0 0 7px rgba(6, 182, 212, 0.9),
0 0 20px rgba(6, 182, 212, 0.6),
0 0 42px rgba(6, 182, 212, 0.35),
0 0 82px rgba(6, 182, 212, 0.15);
}
/* Pulsing neon animation */
@keyframes neon-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.85; }
}
.gothic-neon-text--pulse {
animation: neon-pulse 3s ease-in-out infinite;
}
.gothic-card {
background: var(--gothic-bg-stone);
border: 1px solid rgba(168, 85, 247, 0.2);
padding: 2rem;
position: relative;
text-align: center;
clip-path: polygon(
0% 5%, 5% 0%, 95% 0%, 100% 5%,
100% 95%, 95% 100%, 5% 100%, 0% 95%
);
transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.gothic-card:hover {
border-color: rgba(168, 85, 247, 0.5);
box-shadow:
0 0 15px rgba(168, 85, 247, 0.15),
0 0 45px rgba(168, 85, 247, 0.05),
inset 0 0 15px rgba(168, 85, 247, 0.05);
}
/* Pointed arch top ornament */
.gothic-card::before {
content: '';
position: absolute;
top: -1px;
left: 50%;
transform: translateX(-50%);
width: 60px;
height: 30px;
border-bottom: 2px solid var(--gothic-violet);
border-radius: 0 0 50% 50%;
box-shadow: 0 4px 12px rgba(168, 85, 247, 0.3);
}
/* Bottom glow line */
.gothic-card::after {
content: '';
position: absolute;
bottom: 0;
left: 10%;
width: 80%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
var(--gothic-violet),
transparent
);
box-shadow: 0 0 10px rgba(168, 85, 247, 0.5);
}
.gothic-button {
display: inline-block;
padding: 0.85rem 2.5rem;
font-family: 'Cinzel', serif;
font-size: 0.85rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--gothic-violet);
background: transparent;
border: 1px solid var(--gothic-violet);
position: relative;
cursor: pointer;
transition: all 0.35s ease;
text-decoration: none;
clip-path: polygon(
0% 8px, 8px 0%, calc(100% - 8px) 0%, 100% 8px,
100% calc(100% - 8px), calc(100% - 8px) 100%,
8px 100%, 0% calc(100% - 8px)
);
}
.gothic-button:hover {
color: var(--gothic-text-bright);
background: rgba(168, 85, 247, 0.1);
border-color: var(--gothic-violet);
box-shadow:
0 0 12px rgba(168, 85, 247, 0.5),
0 0 35px rgba(168, 85, 247, 0.15),
inset 0 0 12px rgba(168, 85, 247, 0.1);
text-shadow: 0 0 8px rgba(168, 85, 247, 0.6);
}
/* Magenta variant */
.gothic-button--magenta {
color: var(--gothic-magenta);
border-color: var(--gothic-magenta);
}
.gothic-button--magenta:hover {
background: rgba(236, 72, 153, 0.1);
border-color: var(--gothic-magenta);
box-shadow:
0 0 12px rgba(236, 72, 153, 0.5),
0 0 35px rgba(236, 72, 153, 0.15),
inset 0 0 12px rgba(236, 72, 153, 0.1);
text-shadow: 0 0 8px rgba(236, 72, 153, 0.6);
}
.gothic-nav {
display: flex;
justify-content: center;
align-items: center;
gap: 2.5rem;
padding: 1.25rem 2rem;
background: rgba(11, 11, 16, 0.92);
border-bottom: 1px solid rgba(168, 85, 247, 0.15);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
position: sticky;
top: 0;
z-index: 100;
}
.gothic-nav::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
var(--gothic-violet) 20%,
var(--gothic-cyan) 50%,
var(--gothic-violet) 80%,
transparent
);
opacity: 0.5;
}
.gothic-nav a {
font-family: 'Cinzel', serif;
font-size: 0.8rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.18em;
color: var(--gothic-text-secondary);
text-decoration: none;
padding: 0.4rem 0;
position: relative;
transition: color 0.3s ease, text-shadow 0.3s ease;
}
.gothic-nav a:hover {
color: var(--gothic-violet);
text-shadow: 0 0 12px rgba(168, 85, 247, 0.5);
}
.gothic-nav a::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: var(--gothic-violet);
box-shadow: 0 0 6px rgba(168, 85, 247, 0.5);
transition: width 0.3s ease;
}
.gothic-nav a:hover::after {
width: 100%;
}
.gothic-hero {
text-align: center;
padding: 8rem 2rem 6rem;
position: relative;
overflow: hidden;
background:
radial-gradient(ellipse at 50% 0%, rgba(168, 85, 247, 0.08) 0%, transparent 60%),
radial-gradient(ellipse at 50% 100%, rgba(6, 182, 212, 0.05) 0%, transparent 50%),
var(--gothic-bg-void);
border-bottom: 1px solid rgba(168, 85, 247, 0.2);
}
/* Pointed arch overlay at bottom */
.gothic-hero::after {
content: '';
position: absolute;
bottom: -1px;
left: 50%;
transform: translateX(-50%);
width: 120px;
height: 60px;
border-top: 2px solid var(--gothic-violet);
border-radius: 50% 50% 0 0;
box-shadow: 0 -4px 20px rgba(168, 85, 247, 0.25);
}
.gothic-hero h1 {
font-family: 'UnifrakturCook', serif;
font-size: clamp(3rem, 8vw, 7rem);
color: var(--gothic-violet);
text-shadow:
0 0 10px rgba(168, 85, 247, 0.8),
0 0 30px rgba(168, 85, 247, 0.4),
0 0 60px rgba(168, 85, 247, 0.2);
margin-bottom: 1rem;
line-height: 1.1;
}
.gothic-hero .subtitle {
font-family: 'Cinzel', serif;
font-size: clamp(0.9rem, 1.5vw, 1.1rem);
text-transform: uppercase;
letter-spacing: 0.25em;
color: var(--gothic-text-secondary);
margin-bottom: 2rem;
}
.gothic-hero .description {
max-width: 600px;
margin: 0 auto 2.5rem;
font-size: 1.05rem;
line-height: 1.8;
color: var(--gothic-text-primary);
}
/* Pointed arch divider between sections */
.gothic-divider {
width: 100%;
height: 50px;
position: relative;
display: flex;
justify-content: center;
align-items: center;
margin: 3rem 0;
}
.gothic-divider::before,
.gothic-divider::after {
content: '';
flex: 1;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(168, 85, 247, 0.4)
);
}
.gothic-divider::after {
background: linear-gradient(
90deg,
rgba(168, 85, 247, 0.4),
transparent
);
}
/* Central ornament -- diamond shape */
.gothic-divider span {
width: 10px;
height: 10px;
background: var(--gothic-violet);
transform: rotate(45deg);
margin: 0 1rem;
box-shadow: 0 0 8px rgba(168, 85, 247, 0.6);
flex-shrink: 0;
}
/* Pointed arch container using clip-path */
.gothic-arch {
position: relative;
background: var(--gothic-bg-stone);
padding: 3rem 2rem 2rem;
clip-path: polygon(
0% 15%, 50% 0%, 100% 15%,
100% 100%, 0% 100%
);
border: 1px solid rgba(168, 85, 247, 0.2);
}
/* Inner content area */
.gothic-arch__content {
max-width: 500px;
margin: 0 auto;
text-align: center;
}
/* Stained-glass color overlay */
.gothic-stained-glass {
background: linear-gradient(
135deg,
rgba(168, 85, 247, 0.05) 0%,
rgba(6, 182, 212, 0.05) 33%,
rgba(236, 72, 153, 0.05) 66%,
rgba(168, 85, 247, 0.05) 100%
);
border: 1px solid rgba(168, 85, 247, 0.1);
padding: 2rem;
}
/* CSS-only rose window ornament */
.gothic-rose {
width: 120px;
height: 120px;
border-radius: 50%;
border: 2px solid var(--gothic-violet);
position: relative;
margin: 2rem auto;
box-shadow:
0 0 12px rgba(168, 85, 247, 0.3),
inset 0 0 12px rgba(168, 85, 247, 0.1);
}
.gothic-rose::before {
content: '';
position: absolute;
inset: 15px;
border-radius: 50%;
border: 1px solid rgba(168, 85, 247, 0.4);
background: conic-gradient(
from 0deg,
rgba(168, 85, 247, 0.1) 0deg,
transparent 30deg,
rgba(6, 182, 212, 0.1) 60deg,
transparent 90deg,
rgba(236, 72, 153, 0.1) 120deg,
transparent 150deg,
rgba(168, 85, 247, 0.1) 180deg,
transparent 210deg,
rgba(6, 182, 212, 0.1) 240deg,
transparent 270deg,
rgba(236, 72, 153, 0.1) 300deg,
transparent 330deg,
rgba(168, 85, 247, 0.1) 360deg
);
}
.gothic-rose::after {
content: '';
position: absolute;
inset: 35px;
border-radius: 50%;
border: 1px solid rgba(168, 85, 247, 0.3);
box-shadow: 0 0 8px rgba(168, 85, 247, 0.2);
}
| Aesthetic | Relationship to Neon Gothic |
|---|---|
| Cyberpunk | Shares neon-on-dark palette and glow effects, but lacks Gothic architectural vocabulary |
| Gothic Revival | Direct architectural ancestor; provides all structural and ornamental vocabulary |
| Dark Academia | Shares reverence for historical forms and dark palettes, but is warm and analog where Neon Gothic is electric |
| Vaporwave | Shares neon color sensibility, but is ironic and nostalgic vs. Neon Gothic’s sincere gravitas |
| Cathedral Core | Shares Gothic architectural fascination but favors natural stone and candlelight over neon |
| Stained Glass | A decorative sub-element of Gothic design; Neon Gothic reinterprets it through luminous digital color |
| Dark Mode UI | Shares the dark background paradigm; Neon Gothic adds ornamental and architectural character |
| Art Deco | Shares geometric formality and luxury, but Art Deco is angular and metallic where Neon Gothic is pointed and luminous |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Neon Gothic</title>
<link href="https://fonts.googleapis.com/css2?family=UnifrakturCook:wght@700&family=Cinzel:wght@400;600;700;900&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
/* ===========================
CSS CUSTOM PROPERTIES
=========================== */
:root {
/* Backgrounds */
--gothic-bg-void: #0b0b10;
--gothic-bg-stone: #15151f;
--gothic-bg-cloister: #1c1c2a;
--gothic-bg-elevated: #2a2a3c;
--gothic-bg-mortar: #3a3a50;
/* Neon accents */
--gothic-violet: #a855f7;
--gothic-orchid: #c026d3;
--gothic-cyan: #06b6d4;
--gothic-magenta: #ec4899;
--gothic-green: #10b981;
--gothic-amber: #f59e0b;
/* Text */
--gothic-text-primary: #d4d4e0;
--gothic-text-secondary: #8888a0;
--gothic-text-bright: #f0f0f8;
}
/* ===========================
RESET & BASE
=========================== */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
background: var(--gothic-bg-void);
color: var(--gothic-text-primary);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
font-weight: 400;
letter-spacing: 0.02em;
line-height: 1.75;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Cinzel', serif;
font-weight: 700;
color: var(--gothic-text-bright);
text-transform: uppercase;
letter-spacing: 0.1em;
line-height: 1.2;
}
a {
color: var(--gothic-cyan);
text-decoration: none;
transition: color 0.3s ease, text-shadow 0.3s ease;
}
a:hover {
color: var(--gothic-violet);
text-shadow: 0 0 10px rgba(168, 85, 247, 0.5);
}
/* ===========================
AMBIENT BACKGROUND
=========================== */
body::before {
content: '';
position: fixed;
inset: 0;
background:
radial-gradient(ellipse at 20% 20%, rgba(168, 85, 247, 0.04) 0%, transparent 50%),
radial-gradient(ellipse at 80% 80%, rgba(6, 182, 212, 0.03) 0%, transparent 50%),
radial-gradient(ellipse at 50% 50%, rgba(236, 72, 153, 0.02) 0%, transparent 40%);
pointer-events: none;
z-index: 0;
}
/* ===========================
NAVIGATION
=========================== */
nav {
display: flex;
justify-content: center;
align-items: center;
gap: 2.5rem;
padding: 1.25rem 2rem;
background: rgba(11, 11, 16, 0.92);
border-bottom: 1px solid rgba(168, 85, 247, 0.12);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
position: sticky;
top: 0;
z-index: 100;
}
nav::after {
content: '';
position: absolute;
bottom: -1px;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
var(--gothic-violet) 20%,
var(--gothic-cyan) 50%,
var(--gothic-violet) 80%,
transparent
);
opacity: 0.4;
}
nav a {
font-family: 'Cinzel', serif;
font-size: 0.75rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--gothic-text-secondary);
padding: 0.4rem 0;
position: relative;
}
nav a:hover {
color: var(--gothic-violet);
text-shadow: 0 0 12px rgba(168, 85, 247, 0.5);
}
nav a::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: var(--gothic-violet);
box-shadow: 0 0 6px rgba(168, 85, 247, 0.5);
transition: width 0.3s ease;
}
nav a:hover::after {
width: 100%;
}
/* ===========================
HERO SECTION
=========================== */
.hero {
text-align: center;
padding: 8rem 2rem 6rem;
position: relative;
overflow: hidden;
background:
radial-gradient(ellipse at 50% 0%, rgba(168, 85, 247, 0.08) 0%, transparent 60%),
radial-gradient(ellipse at 50% 100%, rgba(6, 182, 212, 0.05) 0%, transparent 50%);
border-bottom: 1px solid rgba(168, 85, 247, 0.15);
}
.hero::after {
content: '';
position: absolute;
bottom: -1px;
left: 50%;
transform: translateX(-50%);
width: 100px;
height: 50px;
border-top: 2px solid var(--gothic-violet);
border-radius: 50% 50% 0 0;
box-shadow: 0 -4px 18px rgba(168, 85, 247, 0.25);
}
.hero .overline {
font-family: 'Cinzel', serif;
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.35em;
color: var(--gothic-text-secondary);
display: block;
margin-bottom: 1rem;
}
.hero h1 {
font-family: 'UnifrakturCook', serif;
font-size: clamp(3rem, 8vw, 7rem);
color: var(--gothic-violet);
text-transform: none;
text-shadow:
0 0 10px rgba(168, 85, 247, 0.8),
0 0 30px rgba(168, 85, 247, 0.4),
0 0 60px rgba(168, 85, 247, 0.2);
margin-bottom: 1.5rem;
line-height: 1.1;
letter-spacing: 0.03em;
}
.hero p {
max-width: 580px;
margin: 0 auto 2.5rem;
font-size: 1.05rem;
line-height: 1.85;
color: var(--gothic-text-primary);
}
/* ===========================
DIVIDER
=========================== */
.divider {
display: flex;
justify-content: center;
align-items: center;
margin: 3rem 0;
padding: 0 2rem;
}
.divider::before,
.divider::after {
content: '';
flex: 1;
max-width: 300px;
height: 1px;
}
.divider::before {
background: linear-gradient(90deg, transparent, rgba(168, 85, 247, 0.35));
}
.divider::after {
background: linear-gradient(90deg, rgba(168, 85, 247, 0.35), transparent);
}
.divider span {
width: 8px;
height: 8px;
background: var(--gothic-violet);
transform: rotate(45deg);
margin: 0 1rem;
box-shadow: 0 0 8px rgba(168, 85, 247, 0.6);
flex-shrink: 0;
}
/* ===========================
CONTENT SECTION
=========================== */
.content {
max-width: 1100px;
margin: 0 auto;
padding: 4rem 2rem;
position: relative;
z-index: 1;
}
.content h2 {
text-align: center;
font-size: clamp(1.4rem, 3vw, 2rem);
margin-bottom: 0.75rem;
color: var(--gothic-cyan);
text-shadow: 0 0 12px rgba(6, 182, 212, 0.3);
}
.content .section-sub {
text-align: center;
font-size: 0.85rem;
color: var(--gothic-text-secondary);
letter-spacing: 0.15em;
text-transform: uppercase;
margin-bottom: 3rem;
}
/* ===========================
CARD GRID
=========================== */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.card {
background: var(--gothic-bg-stone);
border: 1px solid rgba(168, 85, 247, 0.15);
padding: 2.5rem 2rem 2rem;
position: relative;
text-align: center;
transition: border-color 0.4s ease, box-shadow 0.4s ease;
}
.card:hover {
border-color: rgba(168, 85, 247, 0.4);
box-shadow:
0 0 20px rgba(168, 85, 247, 0.1),
inset 0 0 20px rgba(168, 85, 247, 0.03);
}
.card::before {
content: '';
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
width: 50px;
height: 25px;
border-bottom: 2px solid var(--gothic-violet);
border-radius: 0 0 50% 50%;
box-shadow: 0 4px 12px rgba(168, 85, 247, 0.25);
}
.card::after {
content: '';
position: absolute;
bottom: 0;
left: 15%;
width: 70%;
height: 1px;
background: linear-gradient(90deg, transparent, var(--gothic-violet), transparent);
box-shadow: 0 0 8px rgba(168, 85, 247, 0.4);
}
.card h3 {
font-size: 1.1rem;
margin-bottom: 1rem;
color: var(--gothic-text-bright);
letter-spacing: 0.12em;
}
.card p {
font-size: 0.92rem;
line-height: 1.75;
color: var(--gothic-text-secondary);
margin-bottom: 1.5rem;
}
.card .tag {
display: inline-block;
font-family: 'Cinzel', serif;
font-size: 0.65rem;
text-transform: uppercase;
letter-spacing: 0.2em;
color: var(--gothic-violet);
border: 1px solid rgba(168, 85, 247, 0.3);
padding: 0.3rem 0.9rem;
background: rgba(168, 85, 247, 0.05);
}
/* ===========================
BUTTONS
=========================== */
.cta {
text-align: center;
padding: 2rem 2rem 4rem;
position: relative;
z-index: 1;
}
.button {
display: inline-block;
padding: 0.85rem 2.5rem;
font-family: 'Cinzel', serif;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.15em;
color: var(--gothic-violet);
background: transparent;
border: 1px solid var(--gothic-violet);
cursor: pointer;
transition: all 0.35s ease;
text-decoration: none;
position: relative;
}
.button:hover {
color: var(--gothic-text-bright);
background: rgba(168, 85, 247, 0.1);
box-shadow:
0 0 14px rgba(168, 85, 247, 0.45),
0 0 40px rgba(168, 85, 247, 0.12),
inset 0 0 14px rgba(168, 85, 247, 0.08);
text-shadow: 0 0 8px rgba(168, 85, 247, 0.5);
}
.button--cyan {
color: var(--gothic-cyan);
border-color: var(--gothic-cyan);
}
.button--cyan:hover {
color: var(--gothic-text-bright);
background: rgba(6, 182, 212, 0.1);
border-color: var(--gothic-cyan);
box-shadow:
0 0 14px rgba(6, 182, 212, 0.45),
0 0 40px rgba(6, 182, 212, 0.12),
inset 0 0 14px rgba(6, 182, 212, 0.08);
text-shadow: 0 0 8px rgba(6, 182, 212, 0.5);
}
/* ===========================
FEATURES SECTION
=========================== */
.features {
max-width: 900px;
margin: 0 auto;
padding: 4rem 2rem;
position: relative;
z-index: 1;
}
.features h2 {
text-align: center;
font-size: clamp(1.4rem, 3vw, 2rem);
margin-bottom: 3rem;
color: var(--gothic-violet);
text-shadow: 0 0 12px rgba(168, 85, 247, 0.3);
}
.feature-list {
list-style: none;
display: grid;
gap: 1.5rem;
}
.feature-list li {
display: flex;
align-items: flex-start;
gap: 1rem;
padding: 1.25rem 1.5rem;
background: var(--gothic-bg-stone);
border-left: 2px solid var(--gothic-violet);
box-shadow: -4px 0 12px rgba(168, 85, 247, 0.08);
transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.feature-list li:hover {
border-left-color: var(--gothic-cyan);
box-shadow: -4px 0 16px rgba(6, 182, 212, 0.12);
}
.feature-list li::before {
content: '\2726';
color: var(--gothic-violet);
font-size: 1.2rem;
flex-shrink: 0;
margin-top: 0.1rem;
text-shadow: 0 0 6px rgba(168, 85, 247, 0.5);
}
/* ===========================
ROSE WINDOW ORNAMENT
=========================== */
.rose-ornament {
width: 100px;
height: 100px;
border-radius: 50%;
border: 2px solid var(--gothic-violet);
position: relative;
margin: 3rem auto;
box-shadow:
0 0 12px rgba(168, 85, 247, 0.25),
inset 0 0 12px rgba(168, 85, 247, 0.08);
}
.rose-ornament::before {
content: '';
position: absolute;
inset: 12px;
border-radius: 50%;
border: 1px solid rgba(168, 85, 247, 0.35);
background: conic-gradient(
from 0deg,
rgba(168, 85, 247, 0.08) 0deg,
transparent 30deg,
rgba(6, 182, 212, 0.08) 60deg,
transparent 90deg,
rgba(236, 72, 153, 0.08) 120deg,
transparent 150deg,
rgba(168, 85, 247, 0.08) 180deg,
transparent 210deg,
rgba(6, 182, 212, 0.08) 240deg,
transparent 270deg,
rgba(236, 72, 153, 0.08) 300deg,
transparent 330deg,
rgba(168, 85, 247, 0.08) 360deg
);
}
.rose-ornament::after {
content: '';
position: absolute;
inset: 30px;
border-radius: 50%;
border: 1px solid rgba(168, 85, 247, 0.3);
box-shadow: 0 0 6px rgba(168, 85, 247, 0.2);
}
/* ===========================
FOOTER
=========================== */
footer {
text-align: center;
padding: 3rem 2rem;
border-top: 1px solid rgba(168, 85, 247, 0.1);
font-size: 0.8rem;
color: var(--gothic-text-secondary);
letter-spacing: 0.08em;
position: relative;
z-index: 1;
}
footer::before {
content: '';
position: absolute;
top: -1px;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(
90deg,
transparent,
rgba(168, 85, 247, 0.3) 30%,
rgba(6, 182, 212, 0.2) 50%,
rgba(168, 85, 247, 0.3) 70%,
transparent
);
}
footer span {
color: var(--gothic-violet);
text-shadow: 0 0 8px rgba(168, 85, 247, 0.4);
}
/* ===========================
NEON PULSE ANIMATION
=========================== */
@keyframes neon-breathe {
0%, 100% {
text-shadow:
0 0 10px rgba(168, 85, 247, 0.8),
0 0 30px rgba(168, 85, 247, 0.4),
0 0 60px rgba(168, 85, 247, 0.2);
}
50% {
text-shadow:
0 0 6px rgba(168, 85, 247, 0.6),
0 0 20px rgba(168, 85, 247, 0.3),
0 0 45px rgba(168, 85, 247, 0.1);
}
}
.hero h1 {
animation: neon-breathe 4s ease-in-out infinite;
}
/* ===========================
RESPONSIVE
=========================== */
@media (max-width: 768px) {
nav {
gap: 1.2rem;
padding: 1rem 1rem;
}
nav a {
font-size: 0.65rem;
letter-spacing: 0.12em;
}
.hero {
padding: 5rem 1.5rem 4rem;
}
.card-grid {
grid-template-columns: 1fr;
}
.button {
display: block;
margin: 0.5rem auto;
max-width: 280px;
}
}
</style>
</head>
<body>
<!-- Navigation -->
<nav>
<a href="#">Cathedral</a>
<a href="#">Gallery</a>
<a href="#">Reliquary</a>
<a href="#">Codex</a>
<a href="#">Vespers</a>
</nav>
<!-- Hero Section -->
<header class="hero">
<span class="overline">Enter the Luminous Dark</span>
<h1>Neon Gothic</h1>
<p>Gothic architecture meets neon luminescence. Pointed arches
traced in electric violet, dark stone rendered as pixel-deep
black, and the sacred geometry of medieval cathedrals reborn
in phosphorescent light.</p>
</header>
<!-- Divider -->
<div class="divider">
<span></span><span></span><span></span>
</div>
<!-- Cards Section -->
<section class="content">
<h2>The Three Pillars</h2>
<p class="section-sub">Darkness · Structure · Light</p>
<div class="card-grid">
<div class="card">
<h3>Vaulted Darkness</h3>
<p>The near-black background is not mere absence but
active negative space -- the vast interior of a
cathedral nave at midnight, waiting to be pierced
by luminous accents.</p>
<span class="tag">Foundation</span>
</div>
<div class="card">
<h3>Sacred Geometry</h3>
<p>Pointed arches, tracery patterns, and rose window
motifs provide the structural vocabulary. Every layout
echoes the bilateral symmetry and vertical aspiration
of Gothic architecture.</p>
<span class="tag">Structure</span>
</div>
<div class="card">
<h3>Neon Radiance</h3>
<p>Electric violet, spectral cyan, and magenta flame
cut through the darkness like stained glass lit
from within. Every accent glows, every border
emits its own light.</p>
<span class="tag">Illumination</span>
</div>
</div>
</section>
<!-- CTA Buttons -->
<div class="cta">
<a href="#" class="button">Enter the Cathedral</a>
<a href="#" class="button button--cyan">View the Codex</a>
</div>
<!-- Divider -->
<div class="divider">
<span></span><span></span><span></span>
</div>
<!-- Features Section -->
<section class="features">
<h2>Design Tenets</h2>
<ul class="feature-list">
<li>Darkness is the dominant canvas. Light is always artificial, always neon.</li>
<li>Gothic forms provide structure. Neon provides the material expression.</li>
<li>Symmetry and vertical emphasis create sacred, upward-drawing compositions.</li>
<li>Ornament is essential but must be rendered as light -- outlines over fills.</li>
<li>Restraint in accent hues. Two to three neon colors, never more.</li>
</ul>
</section>
<!-- Rose Window Ornament -->
<div class="rose-ornament"></div>
<!-- Footer -->
<footer>
<p>Crafted in the spirit of <span>Neon Gothic</span> · Where cathedrals meet circuitry</p>
</footer>
</body>
</html>
#0B0B10 or #15151F rather than pure #000000; the subtle blue-violet undertone creates atmospheric depth and prevents the flat, lifeless quality of true blackbox-shadow or text-shadow values with increasing spread radius and decreasing opacity to simulate realistic neon light falloff (e.g., 7px at 90%, 20px at 60%, 42px at 35%, 82px at 15%)-webkit-font-smoothing: antialiased and -moz-osx-font-smoothing: grayscale to ensure clean, thin letterforms against dark surfacesbox-shadow are GPU-composited but can be expensive when applied to many elements simultaneously; limit heavy multi-layer glows to key focal elements (hero text, primary buttons, card borders on hover) and use simpler single-layer glows for ambient elementsclip-path: polygon() to create pointed arch shapes for cards and section containers; test on Safari with -webkit-clip-path fallback, and note that clip-path disables box-shadow – use filter: drop-shadow() instead when both are neededease-in-out timing; faster cycles feel anxious and undermine the reverential moodbackdrop-filter: blur(12px) with semi-transparent backgrounds for navigation and overlay elements to create the effect of light filtering through translucent stone; always include the -webkit-backdrop-filter prefix for Safari