From 0345c1ed18d281081bf862e2c28f0e70143174e4 Mon Sep 17 00:00:00 2001 From: Adam Moussa <166072409+amoussa1229@users.noreply.github.com> Date: Tue, 7 Apr 2026 15:11:10 -0400 Subject: [PATCH] Extract shared CSS into central main.css stylesheet Move ~2,600 lines of duplicated CSS (reset, tokens, typography, nav, footer, buttons, mobile menu, page hero, CTA, form base styles, and shared responsive breakpoints) into /assets/css/main.css. Each page now only contains page-specific styles inline. Co-Authored-By: Claude Opus 4.6 --- about/index.html | 373 +------------------------- assets/css/main.css | 440 +++++++++++++++++++++++++++++++ career/index.html | 336 +---------------------- contact/index.html | 359 +------------------------ index.html | 358 +------------------------ jobs/dispatcher/index.html | 362 +------------------------ privacy-policy/index.html | 279 +------------------- services/index.html | 359 +------------------------ social-accountability/index.html | 368 +------------------------- terms-of-service/index.html | 279 +------------------- 10 files changed, 457 insertions(+), 3056 deletions(-) create mode 100644 assets/css/main.css diff --git a/about/index.html b/about/index.html index 24ae571..cbc4060 100644 --- a/about/index.html +++ b/about/index.html @@ -21,239 +21,9 @@ + diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100644 index 0000000..cf17278 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,440 @@ +/* ══════════════════════════════════════════════ + Sea Haven Industries — Shared Styles + ══════════════════════════════════════════════ */ + +/* ── Reset & Tokens ── */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +:root { + --rose: #cc3366; + --rose-dark: #a82a54; + --rose-tint: #f7edf1; + --ink: #1a1814; + --ink-mid: #3d3730; + --body-bg: #faf9f7; + --surface: #ffffff; + --warm-gray: #f0ece6; + --border: #e0dbd4; + --text: #2a2520; + --text-muted: #7c756d; + --font-display: 'DM Serif Display', Georgia, serif; + --font-body: 'Inter', system-ui, sans-serif; + --max-w: 1200px; + --gap: clamp(1.5rem, 4vw, 3rem); +} + +html { scroll-behavior: smooth; } + +body { + font-family: var(--font-body); + font-size: 1rem; + line-height: 1.65; + color: var(--text); + background: var(--body-bg); + -webkit-font-smoothing: antialiased; +} + +img { display: block; max-width: 100%; } +a { color: inherit; text-decoration: none; } + +.container { + max-width: var(--max-w); + margin-inline: auto; + padding-inline: clamp(1.25rem, 5vw, 2.5rem); +} + +/* ── Typography ── */ +.display-xl { + font-family: var(--font-display); + font-size: clamp(2.8rem, 6vw, 5.5rem); + line-height: 1.05; + letter-spacing: -0.02em; +} +.display-lg { + font-family: var(--font-display); + font-size: clamp(2rem, 4vw, 3.5rem); + line-height: 1.1; + letter-spacing: -0.015em; +} +.display-md { + font-family: var(--font-display); + font-size: clamp(1.5rem, 3vw, 2.25rem); + line-height: 1.2; +} +.label { + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--rose); +} +.body-lg { font-size: 1.125rem; line-height: 1.7; } +.body-sm { font-size: 0.875rem; line-height: 1.6; color: var(--text-muted); } + +/* ── Buttons ── */ +.btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + font-family: var(--font-body); + font-size: 0.875rem; + font-weight: 600; + letter-spacing: 0.04em; + padding: 0.875rem 1.75rem; + border-radius: 2px; + transition: all 0.2s ease; + cursor: pointer; + border: 1.5px solid transparent; +} +.btn-primary { + background: var(--rose); + color: #fff; + border-color: var(--rose); +} +.btn-primary:hover { + background: var(--rose-dark); + border-color: var(--rose-dark); +} +.btn-outline { + background: transparent; + color: var(--rose); + border-color: var(--rose); +} +.btn-outline:hover { + background: var(--rose); + color: #fff; +} +.btn-ghost-light { + background: transparent; + color: #fff; + border-color: rgba(255,255,255,0.5); +} +.btn-ghost-light:hover { + background: rgba(255,255,255,0.12); + border-color: #fff; +} +.btn svg { width: 1rem; height: 1rem; } + +/* ── Navigation (Interior Page — always white) ── */ +.site-header { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 100; + background: rgba(255,255,255,0.97); + box-shadow: 0 1px 0 var(--border); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + transition: background 0.3s ease, box-shadow 0.3s ease; +} +.nav-inner { + display: flex; + align-items: center; + justify-content: space-between; + height: 72px; +} +.nav-logo { + display: flex; + align-items: center; + gap: 0.625rem; +} +.nav-logo img { height: 44px; width: auto; } + +.nav-links { + display: flex; + align-items: center; + gap: 2rem; + list-style: none; +} +.nav-links a { + font-size: 0.875rem; + font-weight: 500; + color: var(--ink-mid); + transition: color 0.15s; +} +.nav-links a:hover { color: var(--rose) !important; } + +.nav-cta { + font-size: 0.8125rem; + font-weight: 600; + padding: 0.625rem 1.25rem; + border-radius: 2px; + border: 1.5px solid var(--rose); + color: var(--rose); + background: transparent; + transition: all 0.2s; +} +.nav-cta:hover { + background: var(--rose) !important; + border-color: var(--rose) !important; + color: #fff !important; +} + +.nav-hamburger { + display: none; + flex-direction: column; + gap: 5px; + cursor: pointer; + padding: 4px; + background: none; + border: none; + color: var(--ink); +} +.nav-hamburger span { + display: block; + width: 24px; + height: 2px; + background: currentColor; + transition: all 0.25s; +} + +/* ── Mobile Nav ── */ +.mobile-menu { + display: none; + position: fixed; + inset: 0; + background: var(--ink); + z-index: 99; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 2rem; +} +.mobile-menu.open { display: flex; } +.mobile-menu a { + font-family: var(--font-display); + font-size: 2rem; + color: rgba(255,255,255,0.75); + transition: color 0.15s; +} +.mobile-menu a:hover { color: #fff; } +.mobile-menu-close { + position: absolute; + top: 1.5rem; + right: 1.5rem; + background: none; + border: none; + color: rgba(255,255,255,0.5); + font-size: 1.5rem; + cursor: pointer; + line-height: 1; +} + +/* ── Page Hero ── */ +.page-hero { + background: var(--ink); + padding: 140px 0 60px; +} +.breadcrumb { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.8125rem; + color: rgba(255,255,255,0.4); + margin-bottom: 1.25rem; +} +.breadcrumb a { + color: rgba(255,255,255,0.5); + transition: color 0.15s; +} +.breadcrumb a:hover { color: #fff; } +.breadcrumb span { color: rgba(255,255,255,0.25); } +.page-hero h1 { + font-family: var(--font-display); + font-size: clamp(2.25rem, 5vw, 3.5rem); + line-height: 1.1; + color: #fff; +} + +/* ── Section Scaffolding ── */ +.section { padding: clamp(4rem, 8vw, 7rem) 0; } +.section-header { margin-bottom: clamp(2.5rem, 5vw, 4rem); } +.section-header .label { margin-bottom: 0.75rem; } + +/* ── CTA Banner ── */ +.cta-section { + position: relative; + overflow: hidden; + background: var(--warm-gray); +} +.cta-inner { + display: grid; + grid-template-columns: 1fr auto; + gap: 3rem; + align-items: center; + padding: clamp(3.5rem, 7vw, 6rem) 0; +} +.cta-text .label { margin-bottom: 0.75rem; } +.cta-text h2 { margin-bottom: 1rem; } +.cta-text p { + color: var(--text-muted); + font-size: 1rem; + max-width: 520px; + line-height: 1.75; +} +.cta-actions { + display: flex; + flex-direction: column; + gap: 0.75rem; + align-items: flex-start; + white-space: nowrap; +} +.cta-phone { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.875rem; + color: var(--text-muted); +} +.cta-phone strong { + color: var(--text); + font-weight: 600; +} + +/* ── Common Form Styles ── */ +.form-group { + margin-bottom: 1.25rem; +} +.form-group label { + display: block; + font-size: 0.8125rem; + font-weight: 500; + color: var(--text); + margin-bottom: 0.375rem; +} +.form-group input, +.form-group textarea { + width: 100%; + border: 1px solid var(--border); + padding: 0.75rem 1rem; + border-radius: 2px; + font-family: var(--font-body); + font-size: 0.9375rem; + color: var(--text); + background: var(--surface); + transition: border-color 0.2s ease; + outline: none; +} +.form-group input::placeholder, +.form-group textarea::placeholder { + color: var(--text-muted); +} +.form-group input:focus, +.form-group textarea:focus { + border-color: var(--rose); +} +.form-group textarea { + resize: vertical; + min-height: 120px; +} +.form-submit { + margin-top: 0.5rem; +} + +/* ── Footer ── */ +.site-footer { + background: var(--ink); + padding: clamp(3.5rem, 6vw, 5rem) 0 2rem; +} +.footer-grid { + display: grid; + grid-template-columns: 1.75fr 1fr 1fr 1fr; + gap: 3rem; + padding-bottom: 3rem; + border-bottom: 1px solid rgba(255,255,255,0.07); +} +.footer-brand img { height: 38px; margin-bottom: 1rem; } +.footer-brand p { + font-size: 0.875rem; + color: rgba(255,255,255,0.4); + line-height: 1.75; + max-width: 260px; + margin-bottom: 1.5rem; +} +.footer-social { + display: flex; + gap: 0.625rem; +} +.footer-social a { + width: 36px; + height: 36px; + border: 1px solid rgba(255,255,255,0.12); + border-radius: 2px; + display: flex; + align-items: center; + justify-content: center; + color: rgba(255,255,255,0.45); + font-size: 0.75rem; + transition: all 0.2s; +} +.footer-social a:hover { + border-color: var(--rose); + color: var(--rose); +} +.footer-col h4 { + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.1em; + text-transform: uppercase; + color: rgba(255,255,255,0.3); + margin-bottom: 1.25rem; +} +.footer-col ul { list-style: none; } +.footer-col ul li { margin-bottom: 0.625rem; } +.footer-col ul li a { + font-size: 0.875rem; + color: rgba(255,255,255,0.5); + transition: color 0.15s; +} +.footer-col ul li a:hover { color: #fff; } +.footer-contact-item { + display: flex; + gap: 0.5rem; + font-size: 0.875rem; + color: rgba(255,255,255,0.5); + margin-bottom: 0.5rem; + line-height: 1.5; +} +.footer-contact-item strong { color: rgba(255,255,255,0.75); } +.footer-bottom { + display: flex; + align-items: center; + justify-content: space-between; + padding-top: 1.75rem; + gap: 1rem; + flex-wrap: wrap; +} +.footer-bottom p { + font-size: 0.8125rem; + color: rgba(255,255,255,0.28); +} +.footer-bottom-links { + display: flex; + gap: 1.5rem; + list-style: none; +} +.footer-bottom-links a { + font-size: 0.8125rem; + color: rgba(255,255,255,0.28); + transition: color 0.15s; +} +.footer-bottom-links a:hover { color: rgba(255,255,255,0.65); } + +/* ── Shared Responsive ── */ +@media (max-width: 1024px) { + .footer-grid { grid-template-columns: 1fr 1fr; gap: 2.5rem; } + .footer-brand { grid-column: span 2; } +} + +@media (max-width: 768px) { + .nav-links, .nav-cta { display: none; } + .nav-hamburger { display: flex; } + .cta-inner { grid-template-columns: 1fr; } + .footer-grid { grid-template-columns: 1fr; } + .footer-brand { grid-column: span 1; } +} + +@media (max-width: 480px) { + .page-hero { padding: 120px 0 40px; } +} diff --git a/career/index.html b/career/index.html index cb5461d..1b36e37 100644 --- a/career/index.html +++ b/career/index.html @@ -21,210 +21,9 @@ + diff --git a/services/index.html b/services/index.html index 1ac0092..dd2c6f0 100644 --- a/services/index.html +++ b/services/index.html @@ -21,239 +21,10 @@ + diff --git a/social-accountability/index.html b/social-accountability/index.html index 648e245..39425be 100644 --- a/social-accountability/index.html +++ b/social-accountability/index.html @@ -21,229 +21,9 @@ + diff --git a/terms-of-service/index.html b/terms-of-service/index.html index f1926bd..029f07b 100644 --- a/terms-of-service/index.html +++ b/terms-of-service/index.html @@ -21,181 +21,9 @@ +