- global.css: rewrite all CSS variables for light-first theme
- White bg, dark text, yellow accent (preserved)
- New --color-bg, --color-bg-soft, --color-bg-alt tokens
- All button variants audited: btn-primary (yellow/black, never matches
any white/yellow/soft bg), btn-dark (black/white, safe on yellow/light),
btn-outline-dark, btn-outline-light (only on dark), btn-outline-yellow
- Form inputs: white bg, dark text, gray border, yellow focus ring
- Nav: white bg, dark text, yellow hover underline
- Footer: white bg, dark text, social icons on soft bg
- Section variants: .section-soft, .section-yellow (utility classes)
- Removed dark variants: .section-dark, .btn-dark-as-section-bg
- Base.astro: theme-color = #fed400 (yellow)
- Hero.astro: kinetic hero on WHITE bg with yellow badge + dark text
- PageHero.astro: light hero with yellow accent line at bottom
- Navigation.astro: white bg, dark links, yellow CTA, white logo banner
with /images/logo-long-black.png (works on light/yellow)
- Footer.astro: white bg, dark text, social icons, yellow CTA
- Card components: white bg, gray border, yellow hover state
530 lines
12 KiB
CSS
530 lines
12 KiB
CSS
/* ============================================
|
|
MOREMINIMORE - LIGHT EDITORIAL DESIGN SYSTEM
|
|
Light bg + yellow accent + dark text
|
|
Audited for color conflicts (no button matches bg)
|
|
============================================ */
|
|
|
|
@import url('https://fonts.googleapis.com/css2?family=Kanit:wght@400;500;600;700;800;900&family=Noto+Sans+Thai:wght@300;400;500;600;700&display=swap');
|
|
|
|
/* ============================================
|
|
CSS CUSTOM PROPERTIES — LIGHT THEME
|
|
============================================ */
|
|
|
|
:root {
|
|
/* Brand Colors */
|
|
--color-primary: #fed400; /* yellow accent */
|
|
--color-primary-dark: #e6c100; /* hover state */
|
|
--color-primary-light: #fff5b3; /* tint for subtle backgrounds */
|
|
|
|
--color-black: #0a0a0a; /* primary text */
|
|
--color-white: #ffffff; /* pure white */
|
|
--color-bg: #ffffff; /* default page bg */
|
|
--color-bg-alt: #fafafa; /* alt section bg (was gray-100) */
|
|
--color-bg-soft: #f5f5f5; /* card bg (was gray-100) */
|
|
|
|
--color-gray-100: #f5f5f5;
|
|
--color-gray-200: #e5e5e5; /* subtle borders */
|
|
--color-gray-300: #d1d5db; /* stronger borders */
|
|
--color-gray-400: #9ca3af; /* muted icons */
|
|
--color-gray-500: #6b7280; /* secondary text */
|
|
--color-gray-600: #4b5563; /* body text (slightly lighter than black) */
|
|
--color-gray-700: #374151; /* strong body text */
|
|
|
|
/* Spacing */
|
|
--space-xs: 8px;
|
|
--space-sm: 16px;
|
|
--space-md: 24px;
|
|
--space-lg: 40px;
|
|
--space-xl: 64px;
|
|
--space-2xl: 96px;
|
|
--space-3xl: 128px;
|
|
|
|
/* Layout */
|
|
--container-max: 1400px;
|
|
--gutter: 32px;
|
|
--section-padding: 120px;
|
|
|
|
/* Animation */
|
|
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
|
|
--ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
--ease-spring: cubic-bezier(0.5, 1.5, 0.5, 1);
|
|
|
|
--duration-fast: 0.2s;
|
|
--duration-normal: 0.4s;
|
|
--duration-slow: 0.8s;
|
|
--duration-slower: 1.2s;
|
|
|
|
/* Shadows (tuned for light bg) */
|
|
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
--shadow-md: 0 8px 30px rgba(0, 0, 0, 0.08);
|
|
--shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.12);
|
|
--shadow-glow: 0 0 40px rgba(254, 212, 0, 0.3);
|
|
|
|
/* Border Radius */
|
|
--radius-sm: 4px;
|
|
--radius-md: 8px;
|
|
--radius-lg: 16px;
|
|
--radius-xl: 24px;
|
|
--radius-full: 9999px;
|
|
}
|
|
|
|
/* ============================================
|
|
RESET & BASE
|
|
============================================ */
|
|
|
|
*, *::before, *::after {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html {
|
|
scroll-behavior: smooth;
|
|
font-size: 16px;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--font-body);
|
|
font-weight: 400;
|
|
line-height: 1.7;
|
|
color: var(--color-black);
|
|
background: var(--color-white);
|
|
overflow-x: hidden;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
a {
|
|
text-decoration: none !important;
|
|
color: inherit;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: none !important;
|
|
}
|
|
|
|
/* ============================================
|
|
TYPOGRAPHY
|
|
============================================ */
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
font-family: var(--font-display);
|
|
font-weight: 800;
|
|
line-height: 1.1;
|
|
letter-spacing: -0.02em;
|
|
color: var(--color-black);
|
|
}
|
|
|
|
p {
|
|
color: var(--color-gray-700);
|
|
}
|
|
|
|
/* ============================================
|
|
LAYOUT
|
|
============================================ */
|
|
|
|
.container {
|
|
max-width: var(--container-max);
|
|
margin: 0 auto;
|
|
padding: 0 var(--gutter);
|
|
}
|
|
|
|
/* ============================================
|
|
SECTION VARIANTS (light-first)
|
|
============================================ */
|
|
|
|
.section {
|
|
padding: var(--section-padding) 0;
|
|
position: relative;
|
|
background: var(--color-white); /* default light */
|
|
}
|
|
|
|
/* Explicit variants — call them with class on the section */
|
|
.section--light { background: var(--color-white); }
|
|
.section--soft { background: var(--color-bg-alt); }
|
|
.section--yellow { background: var(--color-primary); }
|
|
.section--yellow .section-title,
|
|
.section--yellow .cta-title { color: var(--color-black); }
|
|
.section--yellow p { color: rgba(0, 0, 0, 0.7); }
|
|
|
|
/* ============================================
|
|
BUTTONS — all light-bg safe (no same-color conflicts)
|
|
============================================ */
|
|
|
|
.btn {
|
|
position: relative;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 12px;
|
|
padding: 18px 36px;
|
|
font-family: var(--font-display);
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 2px;
|
|
border: 2px solid transparent;
|
|
border-radius: var(--radius-md);
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
transition: all 0.3s var(--ease-out-expo);
|
|
text-decoration: none;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* Primary: YELLOW bg, BLACK text — works on white/light/soft/dark
|
|
(yellow is the brand; never matches the background) */
|
|
.btn-primary {
|
|
background: var(--color-primary);
|
|
color: var(--color-black);
|
|
border-color: var(--color-primary);
|
|
box-shadow: 0 4px 20px rgba(254, 212, 0, 0.25);
|
|
}
|
|
.btn-primary:hover {
|
|
background: var(--color-primary-dark);
|
|
border-color: var(--color-primary-dark);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 30px rgba(254, 212, 0, 0.4);
|
|
}
|
|
|
|
/* Dark: BLACK bg, WHITE text — for accent on yellow/light
|
|
(BLACK never matches yellow, never matches white bg) */
|
|
.btn-dark {
|
|
background: var(--color-black);
|
|
color: var(--color-white);
|
|
border-color: var(--color-black);
|
|
}
|
|
.btn-dark:hover {
|
|
background: var(--color-gray-700);
|
|
border-color: var(--color-gray-700);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
/* Outline-dark: transparent, BLACK border + text — on white/yellow
|
|
(never same color as bg since transparent) */
|
|
.btn-outline-dark {
|
|
background: transparent;
|
|
color: var(--color-black);
|
|
border-color: var(--color-black);
|
|
}
|
|
.btn-outline-dark:hover {
|
|
background: var(--color-black);
|
|
color: var(--color-white);
|
|
}
|
|
|
|
/* Outline-light: transparent, WHITE border + text — for use on dark only
|
|
⚠️ ONLY use on dark sections; never on white/light bg */
|
|
.btn-outline-light {
|
|
background: transparent;
|
|
color: var(--color-white);
|
|
border-color: var(--color-white);
|
|
}
|
|
.btn-outline-light:hover {
|
|
background: var(--color-white);
|
|
color: var(--color-black);
|
|
}
|
|
|
|
/* Outline-yellow: transparent, YELLOW border + text — on dark sections */
|
|
.btn-outline-yellow {
|
|
background: transparent;
|
|
color: var(--color-primary);
|
|
border-color: var(--color-primary);
|
|
}
|
|
.btn-outline-yellow:hover {
|
|
background: var(--color-primary);
|
|
color: var(--color-black);
|
|
}
|
|
|
|
.btn-lg {
|
|
padding: 22px 48px;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.btn-sm {
|
|
padding: 12px 24px;
|
|
font-size: 13px;
|
|
letter-spacing: 1.5px;
|
|
}
|
|
|
|
/* ============================================
|
|
BADGES & LABELS
|
|
============================================ */
|
|
|
|
.badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 10px 20px;
|
|
font-family: var(--font-display);
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 3px;
|
|
border-radius: var(--radius-full);
|
|
background: var(--color-primary);
|
|
color: var(--color-black);
|
|
}
|
|
|
|
/* Ghost badge — used on light bg; transparent + dark text + border */
|
|
.badge-ghost {
|
|
background: transparent;
|
|
color: var(--color-gray-700);
|
|
border: 1px solid var(--color-gray-300);
|
|
}
|
|
|
|
/* ============================================
|
|
CARDS — light theme (works on every light bg)
|
|
============================================ */
|
|
|
|
.card {
|
|
background: var(--color-white);
|
|
border: 1px solid var(--color-gray-200);
|
|
border-radius: var(--radius-xl);
|
|
padding: 32px;
|
|
transition: all 0.3s var(--ease-out-expo);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
.card:hover {
|
|
border-color: var(--color-primary);
|
|
transform: translateY(-4px);
|
|
box-shadow: var(--shadow-md);
|
|
}
|
|
|
|
/* ============================================
|
|
FORM ELEMENTS — light theme (no dark form)
|
|
============================================ */
|
|
|
|
.form-group {
|
|
position: relative;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.form-label {
|
|
display: block;
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 1px;
|
|
color: var(--color-gray-700);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.form-input,
|
|
.form-textarea,
|
|
.form-select {
|
|
width: 100%;
|
|
padding: 16px 20px;
|
|
font-family: var(--font-body);
|
|
font-size: 16px;
|
|
background: var(--color-white);
|
|
color: var(--color-black);
|
|
border: 2px solid var(--color-gray-200);
|
|
border-radius: var(--radius-md);
|
|
transition: all 0.3s ease;
|
|
outline: none;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.form-input::placeholder,
|
|
.form-textarea::placeholder {
|
|
color: var(--color-gray-400);
|
|
}
|
|
|
|
.form-input:focus,
|
|
.form-textarea:focus,
|
|
.form-select:focus {
|
|
border-color: var(--color-primary);
|
|
box-shadow: 0 0 0 3px rgba(254, 212, 0, 0.15);
|
|
}
|
|
|
|
.form-textarea {
|
|
resize: vertical;
|
|
min-height: 120px;
|
|
}
|
|
|
|
.form-select {
|
|
appearance: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1L6 6L11 1' stroke='%230a0a0a' stroke-width='2'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat;
|
|
background-position: right 20px center;
|
|
padding-right: 48px;
|
|
}
|
|
|
|
.form-submit {
|
|
width: 100%;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
/* ============================================
|
|
NAVIGATION — light theme
|
|
============================================ */
|
|
|
|
.nav {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 1000;
|
|
padding: 16px 0;
|
|
background: var(--color-white);
|
|
border-bottom: 1px solid var(--color-gray-200);
|
|
transition: all 0.3s var(--ease-out-expo);
|
|
}
|
|
|
|
.nav.scrolled {
|
|
padding: 12px 0;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
backdrop-filter: blur(20px);
|
|
-webkit-backdrop-filter: blur(20px);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.nav-link {
|
|
position: relative;
|
|
padding: 12px 16px;
|
|
font-family: var(--font-display);
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
letter-spacing: 2px;
|
|
color: var(--color-black);
|
|
transition: color 0.3s ease;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
}
|
|
|
|
.nav-link:hover,
|
|
.nav-link.active {
|
|
color: var(--color-primary-dark);
|
|
}
|
|
|
|
.nav-link::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: -2px;
|
|
left: 0;
|
|
width: 0;
|
|
height: 3px;
|
|
background: var(--color-primary);
|
|
transition: width 0.3s var(--ease-out-expo);
|
|
}
|
|
|
|
.nav-link:hover::after,
|
|
.nav-link.active::after {
|
|
width: 100%;
|
|
}
|
|
|
|
.nav-cta {
|
|
background: var(--color-primary);
|
|
color: var(--color-black) !important;
|
|
border-radius: var(--radius-md);
|
|
margin-left: 16px;
|
|
padding: 12px 24px;
|
|
border: 2px solid var(--color-primary);
|
|
}
|
|
|
|
.nav-cta:hover {
|
|
background: var(--color-primary-dark);
|
|
border-color: var(--color-primary-dark);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 8px 20px rgba(254, 212, 0, 0.3);
|
|
}
|
|
|
|
.nav-cta::after { display: none; }
|
|
|
|
/* ============================================
|
|
FOOTER — light theme
|
|
============================================ */
|
|
|
|
.footer {
|
|
background: var(--color-white);
|
|
color: var(--color-black);
|
|
padding: 80px 0 40px;
|
|
border-top: 1px solid var(--color-gray-200);
|
|
}
|
|
|
|
.footer-title {
|
|
font-family: var(--font-display);
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: 3px;
|
|
color: var(--color-black);
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.footer-link {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-size: 15px;
|
|
color: var(--color-gray-600);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.footer-link:hover {
|
|
color: var(--color-primary-dark);
|
|
}
|
|
|
|
.footer-link:hover .link-arrow {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
|
|
.link-arrow {
|
|
opacity: 0;
|
|
transform: translateX(-10px);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
/* ============================================
|
|
UTILITIES
|
|
============================================ */
|
|
|
|
.text-primary { color: var(--color-primary); }
|
|
.text-black { color: var(--color-black); }
|
|
.text-muted { color: var(--color-gray-500); }
|
|
|
|
.bg-primary { background: var(--color-primary); }
|
|
.bg-light { background: var(--color-white); }
|
|
.bg-soft { background: var(--color-bg-alt); }
|
|
|
|
.text-center { text-align: center; }
|
|
.text-uppercase { text-transform: uppercase; letter-spacing: 2px; }
|
|
|
|
.sr-only {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
|
|
/* ============================================
|
|
RESPONSIVE
|
|
============================================ */
|
|
|
|
@media (max-width: 1024px) {
|
|
:root {
|
|
--section-padding: 80px;
|
|
--gutter: 24px;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 640px) {
|
|
:root {
|
|
--section-padding: 60px;
|
|
--gutter: 16px;
|
|
}
|
|
.btn {
|
|
width: 100%;
|
|
padding: 16px 28px;
|
|
}
|
|
}
|