770 lines
22 KiB
CSS
770 lines
22 KiB
CSS
@import 'tailwindcss';
|
|
@import 'tw-animate-css';
|
|
|
|
@config '../../../tailwind.config.mjs';
|
|
|
|
@custom-variant dark (&:is([data-theme='dark'] *));
|
|
@custom-variant sm (@media (width >= theme(--breakpoint-sm)));
|
|
@custom-variant md (@media (width >= theme(--breakpoint-md)));
|
|
@custom-variant lg (@media (width >= theme(--breakpoint-lg)));
|
|
@custom-variant xl (@media (width >= theme(--breakpoint-xl)));
|
|
@custom-variant 2xl (@media (width >= theme(--breakpoint-2xl)));
|
|
|
|
@layer base {
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
h5,
|
|
h6 {
|
|
font-weight: unset;
|
|
font-size: unset;
|
|
}
|
|
}
|
|
|
|
@plugin "@tailwindcss/typography";
|
|
|
|
@source inline("lg:col-span-4");
|
|
@source inline("lg:col-span-6");
|
|
@source inline("lg:col-span-8");
|
|
@source inline("lg:col-span-12");
|
|
@source inline("border-border");
|
|
@source inline("bg-card");
|
|
@source inline("border-error");
|
|
@source inline("bg-error/30");
|
|
@source inline("border-success");
|
|
@source inline("bg-success/30");
|
|
@source inline("border-warning");
|
|
@source inline("bg-warning/30");
|
|
|
|
@theme {
|
|
--breakpoint-sm: 40rem;
|
|
--breakpoint-md: 48rem;
|
|
--breakpoint-lg: 64rem;
|
|
--breakpoint-xl: 80rem;
|
|
--breakpoint-2xl: 86rem;
|
|
--font-mono: var(--font-geist-mono);
|
|
--font-sans: var(--font-geist-sans);
|
|
}
|
|
|
|
@layer utilities {
|
|
.container {
|
|
width: 100%;
|
|
margin-inline: auto;
|
|
padding-inline: 1rem;
|
|
}
|
|
|
|
@variant sm {
|
|
.container {
|
|
max-width: var(--breakpoint-sm);
|
|
}
|
|
}
|
|
|
|
@variant md {
|
|
.container {
|
|
max-width: var(--breakpoint-md);
|
|
padding-inline: 2rem;
|
|
}
|
|
}
|
|
|
|
@variant lg {
|
|
.container {
|
|
max-width: var(--breakpoint-lg);
|
|
}
|
|
}
|
|
|
|
@variant xl {
|
|
.container {
|
|
max-width: var(--breakpoint-xl);
|
|
}
|
|
}
|
|
|
|
@variant 2xl {
|
|
.container {
|
|
max-width: var(--breakpoint-2xl);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* ============================================
|
|
PAYLOAD CMS / SHADCN UI TOKENS
|
|
(do not modify — used by admin panel)
|
|
============================================ */
|
|
|
|
:root {
|
|
--background: oklch(100% 0 0deg);
|
|
--foreground: oklch(14.5% 0 0deg);
|
|
--card: oklch(96.5% 0.005 265deg);
|
|
--card-foreground: oklch(14.5% 0 0deg);
|
|
--popover: oklch(100% 0 0deg);
|
|
--popover-foreground: oklch(14.5% 0 0deg);
|
|
--primary: oklch(20.5% 0 0deg);
|
|
--primary-foreground: oklch(98.5% 0 0deg);
|
|
--secondary: oklch(97% 0 0deg);
|
|
--secondary-foreground: oklch(20.5% 0 0deg);
|
|
--muted: oklch(97% 0 0deg);
|
|
--muted-foreground: oklch(55.6% 0 0deg);
|
|
--accent: oklch(97% 0 0deg);
|
|
--accent-foreground: oklch(20.5% 0 0deg);
|
|
--destructive: oklch(57.7% 0.245 27.325deg);
|
|
--destructive-foreground: oklch(57.7% 0.245 27.325deg);
|
|
--border: oklch(92.2% 0 0deg);
|
|
--input: oklch(92.2% 0 0deg);
|
|
--ring: oklch(70.8% 0 0deg);
|
|
--chart-1: oklch(64.6% 0.222 41.116deg);
|
|
--chart-2: oklch(60% 0.118 184.704deg);
|
|
--chart-3: oklch(39.8% 0.07 227.392deg);
|
|
--chart-4: oklch(82.8% 0.189 84.429deg);
|
|
--chart-5: oklch(76.9% 0.188 70.08deg);
|
|
--radius: 0.625rem;
|
|
--sidebar: oklch(98.5% 0 0deg);
|
|
--sidebar-foreground: oklch(14.5% 0 0deg);
|
|
--sidebar-primary: oklch(20.5% 0 0deg);
|
|
--sidebar-primary-foreground: oklch(98.5% 0 0deg);
|
|
--sidebar-accent: oklch(97% 0 0deg);
|
|
--sidebar-accent-foreground: oklch(20.5% 0 0deg);
|
|
--sidebar-border: oklch(92.2% 0 0deg);
|
|
--sidebar-ring: oklch(70.8% 0 0deg);
|
|
--success: oklch(78% 0.08 200deg);
|
|
--warning: oklch(89% 0.1 75deg);
|
|
--error: oklch(75% 0.15 25deg);
|
|
}
|
|
|
|
[data-theme='dark'] {
|
|
--background: oklch(14.5% 0 0deg);
|
|
--foreground: oklch(98.5% 0 0deg);
|
|
--card: oklch(17% 0 0deg);
|
|
--card-foreground: oklch(98.5% 0 0deg);
|
|
--popover: oklch(14.5% 0 0deg);
|
|
--popover-foreground: oklch(98.5% 0 0deg);
|
|
--primary: oklch(98.5% 0 0deg);
|
|
--primary-foreground: oklch(20.5% 0 0deg);
|
|
--secondary: oklch(26.9% 0 0deg);
|
|
--secondary-foreground: oklch(98.5% 0 0deg);
|
|
--muted: oklch(26.9% 0 0deg);
|
|
--muted-foreground: oklch(70.8% 0 0deg);
|
|
--accent: oklch(26.9% 0 0deg);
|
|
--accent-foreground: oklch(98.5% 0 0deg);
|
|
--destructive: oklch(39.6% 0.141 25.723deg);
|
|
--destructive-foreground: oklch(63.7% 0.237 25.331deg);
|
|
--border: oklch(26.9% 0 0deg);
|
|
--input: oklch(26.9% 0 0deg);
|
|
--ring: oklch(43.9% 0 0deg);
|
|
--chart-1: oklch(48.8% 0.243 264.376deg);
|
|
--chart-2: oklch(69.6% 0.17 162.48deg);
|
|
--chart-3: oklch(76.9% 0.188 70.08deg);
|
|
--chart-4: oklch(62.7% 0.265 303.9deg);
|
|
--chart-5: oklch(64.5% 0.246 16.439deg);
|
|
--sidebar: oklch(20.5% 0 0deg);
|
|
--sidebar-foreground: oklch(98.5% 0 0deg);
|
|
--sidebar-primary: oklch(48.8% 0.243 264.376deg);
|
|
--sidebar-primary-foreground: oklch(98.5% 0 0deg);
|
|
--sidebar-accent: oklch(26.9% 0 0deg);
|
|
--sidebar-accent-foreground: oklch(98.5% 0 0deg);
|
|
--sidebar-border: oklch(26.9% 0 0deg);
|
|
--sidebar-ring: oklch(43.9% 0 0deg);
|
|
--success: oklch(28% 0.1 200deg);
|
|
--warning: oklch(35% 0.08 70deg);
|
|
--error: oklch(45% 0.1 25deg);
|
|
}
|
|
|
|
@theme inline {
|
|
--color-background: var(--background);
|
|
--color-foreground: var(--foreground);
|
|
--color-card: var(--card);
|
|
--color-card-foreground: var(--card-foreground);
|
|
--color-popover: var(--popover);
|
|
--color-popover-foreground: var(--popover-foreground);
|
|
--color-primary: var(--primary);
|
|
--color-primary-foreground: var(--primary-foreground);
|
|
--color-secondary: var(--secondary);
|
|
--color-secondary-foreground: var(--secondary-foreground);
|
|
--color-muted: var(--muted);
|
|
--color-muted-foreground: var(--muted-foreground);
|
|
--color-accent: var(--accent);
|
|
--color-accent-foreground: var(--accent-foreground);
|
|
--color-destructive: var(--destructive);
|
|
--color-destructive-foreground: var(--destructive-foreground);
|
|
--color-border: var(--border);
|
|
--color-input: var(--input);
|
|
--color-ring: var(--ring);
|
|
--color-chart-1: var(--chart-1);
|
|
--color-chart-2: var(--chart-2);
|
|
--color-chart-3: var(--chart-3);
|
|
--color-chart-4: var(--chart-4);
|
|
--color-chart-5: var(--chart-5);
|
|
--radius-sm: calc(var(--radius) - 4px);
|
|
--radius-md: calc(var(--radius) - 2px);
|
|
--radius-lg: var(--radius);
|
|
--radius-xl: calc(var(--radius) + 4px);
|
|
--color-sidebar: var(--sidebar);
|
|
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
--color-sidebar-primary: var(--sidebar-primary);
|
|
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
--color-sidebar-accent: var(--sidebar-accent);
|
|
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
--color-sidebar-border: var(--sidebar-border);
|
|
--color-sidebar-ring: var(--sidebar-ring);
|
|
--color-success: var(--success);
|
|
--color-warning: var(--warning);
|
|
--color-error: var(--error);
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border outline-ring/50;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground min-h-[100vh] flex flex-col;
|
|
font-variant-ligatures: none;
|
|
}
|
|
}
|
|
|
|
html {
|
|
opacity: 0;
|
|
}
|
|
|
|
html[data-theme='dark'],
|
|
html[data-theme='light'] {
|
|
opacity: initial;
|
|
}
|
|
|
|
|
|
/* ============================================
|
|
FIBER DIREKT DESIGN SYSTEM
|
|
============================================ */
|
|
|
|
/* ---- Font Faces ---- */
|
|
|
|
@font-face {
|
|
font-family: 'FS Joey';
|
|
src: url('/fonts/fs-joey-regular.otf') format('opentype');
|
|
font-weight: 400;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'FS Joey';
|
|
src: url('/fonts/fs-joey-italic.otf') format('opentype');
|
|
font-weight: 400;
|
|
font-style: italic;
|
|
font-display: swap;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'FS Joey Medium';
|
|
src: url('/fonts/fs-joey-medium.otf') format('opentype');
|
|
font-weight: 500;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'FS Joey Bold';
|
|
src: url('/fonts/fs-joey-bold.otf') format('opentype');
|
|
font-weight: 700;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'FS Joey Heavy';
|
|
src: url('/fonts/fs-joey-heavy.otf') format('opentype');
|
|
font-weight: 900;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
/* ---- Theme Tokens ---- */
|
|
/* This single @theme block registers ALL Fiber Direkt design tokens.
|
|
Tailwind v4 auto-generates utility classes from these:
|
|
--color-fd-navy → bg-fd-navy, text-fd-navy, border-fd-navy, etc.
|
|
--font-joey → font-joey
|
|
--text-fd-* → text-fd-display, text-fd-h1, etc. */
|
|
|
|
@theme {
|
|
/* ---- Fonts ---- */
|
|
--font-joey: 'FS Joey', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
--font-joey-italic: 'FS Joey', system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
--font-joey-medium: 'FS Joey Medium', 'FS Joey', system-ui, sans-serif;
|
|
--font-joey-bold: 'FS Joey Bold', 'FS Joey', system-ui, sans-serif;
|
|
--font-joey-heavy: 'FS Joey Heavy', 'FS Joey', system-ui, sans-serif;
|
|
|
|
/* =============================
|
|
COLORS — Full Brand Palette
|
|
============================= */
|
|
|
|
/* Navy scale */
|
|
--color-fd-navy-950: #060D14;
|
|
--color-fd-navy-900: #0A1825;
|
|
--color-fd-navy: #0E2338; /* primary — bg-fd-navy, text-fd-navy */
|
|
--color-fd-navy-700: #153350;
|
|
--color-fd-navy-600: #1C4368;
|
|
--color-fd-navy-500: #245580;
|
|
--color-fd-navy-400: #3D7199;
|
|
--color-fd-navy-300: #6A94B3;
|
|
--color-fd-navy-200: #9DB8CC;
|
|
--color-fd-navy-100: #CFDBE6;
|
|
--color-fd-navy-50: #E7EDF2;
|
|
|
|
/* Yellow scale */
|
|
--color-fd-yellow-950: #3D3000;
|
|
--color-fd-yellow-900: #5C4800;
|
|
--color-fd-yellow-800: #7A6000;
|
|
--color-fd-yellow-700: #B38C00;
|
|
--color-fd-yellow-600: #D4A600;
|
|
--color-fd-yellow: #FECC02; /* primary — bg-fd-yellow, text-fd-yellow */
|
|
--color-fd-yellow-400: #FED835;
|
|
--color-fd-yellow-300: #FEE468;
|
|
--color-fd-yellow-200: #FFEF9B;
|
|
--color-fd-yellow-100: #FFF7CD;
|
|
--color-fd-yellow-50: #FFFBE6;
|
|
|
|
/* Mint scale */
|
|
--color-fd-mint-950: #052E14;
|
|
--color-fd-mint-900: #0A4D22;
|
|
--color-fd-mint-800: #116B32;
|
|
--color-fd-mint-700: #1A8A44;
|
|
--color-fd-mint-600: #25A957;
|
|
--color-fd-mint-500: #3EC76E;
|
|
--color-fd-mint: #67EF8B; /* primary — bg-fd-mint, text-fd-mint */
|
|
--color-fd-mint-300: #8DF4A8;
|
|
--color-fd-mint-200: #B3F8C5;
|
|
--color-fd-mint-100: #D9FCE2;
|
|
--color-fd-mint-50: #ECFDF0;
|
|
|
|
/* Neutral grays */
|
|
--color-fd-gray: #F0F0F0; /* section alt backgrounds */
|
|
--color-fd-gray-warm: #F8F8F6;
|
|
--color-fd-gray-cool: #F5F7F9;
|
|
--color-fd-gray-200: #C8CCD0;
|
|
--color-fd-gray-300: #A9AEB5;
|
|
--color-fd-gray-400: #8A919A;
|
|
--color-fd-gray-500: #6B737E;
|
|
--color-fd-gray-600: #41474F;
|
|
--color-fd-gray-700: #2D3239;
|
|
--color-fd-gray-800: #1A1D21;
|
|
|
|
/* Semantic surfaces (for block backgrounds) */
|
|
--color-fd-surface: #FFFFFF;
|
|
--color-fd-surface-alt: #F0F0F0;
|
|
--color-fd-surface-navy: #0E2338;
|
|
--color-fd-surface-navy-light: #153350;
|
|
--color-fd-surface-yellow: #FFFBE6;
|
|
--color-fd-surface-mint: #ECFDF0;
|
|
|
|
/* Semantic text (for auto-resolving text on any bg) */
|
|
--color-fd-text: #0E2338;
|
|
--color-fd-text-secondary: #41474F;
|
|
--color-fd-text-muted: #6B737E;
|
|
--color-fd-text-disabled: #8A919A;
|
|
--color-fd-text-on-dark: #FFFFFF;
|
|
--color-fd-text-on-dark-muted: #9DB8CC;
|
|
--color-fd-text-accent: #FECC02;
|
|
|
|
/* =============================
|
|
TYPOGRAPHY — 9-Level Scale
|
|
=============================
|
|
Uses clamp() for fluid scaling: no breakpoint prefixes needed.
|
|
min = mobile, preferred = viewport-relative, max = desktop.
|
|
Usage: text-fd-display, text-fd-h1, text-fd-body, etc. */
|
|
|
|
/* Level 1 — Display / Hero H1 */
|
|
--text-fd-display: clamp(2.25rem, 5vw + 0.5rem, 4.875rem); /* 36px → 78px */
|
|
--text-fd-display--line-height: 1.05;
|
|
--text-fd-display--letter-spacing: -0.02em;
|
|
|
|
/* Level 2 — Section H1 */
|
|
--text-fd-h1: clamp(1.75rem, 3.5vw + 0.25rem, 3.125rem); /* 28px → 50px */
|
|
--text-fd-h1--line-height: 1.15;
|
|
--text-fd-h1--letter-spacing: -0.01em;
|
|
|
|
/* Level 3 — Block titles / H2 */
|
|
--text-fd-h2: clamp(1.375rem, 2.5vw + 0.25rem, 2.25rem); /* 22px → 36px */
|
|
--text-fd-h2--line-height: 1.2;
|
|
|
|
/* Level 4 — Card titles / H3 */
|
|
--text-fd-h3: clamp(1.125rem, 2vw + 0.125rem, 1.75rem); /* 18px → 28px */
|
|
--text-fd-h3--line-height: 1.3;
|
|
|
|
/* Level 5 — Subheadings / H4 */
|
|
--text-fd-h4: clamp(1rem, 1.5vw + 0.125rem, 1.375rem); /* 16px → 22px */
|
|
--text-fd-h4--line-height: 1.4;
|
|
|
|
/* Level 6 — Lead / large body */
|
|
--text-fd-body-lg: clamp(0.9375rem, 1.2vw + 0.125rem, 1.25rem); /* 15px → 20px */
|
|
--text-fd-body-lg--line-height: 1.6;
|
|
|
|
/* Level 7 — Body text */
|
|
--text-fd-body: clamp(0.875rem, 1vw + 0.125rem, 1.0625rem); /* 14px → 17px */
|
|
--text-fd-body--line-height: 1.7;
|
|
|
|
/* Level 8 — Small / captions */
|
|
--text-fd-small: clamp(0.8125rem, 0.9vw + 0.0625rem, 0.9375rem); /* 13px → 15px */
|
|
--text-fd-small--line-height: 1.6;
|
|
|
|
/* Level 9 — Extra small / fine print */
|
|
--text-fd-xs: clamp(0.6875rem, 0.75vw + 0.0625rem, 0.8125rem); /* 11px → 13px */
|
|
--text-fd-xs--line-height: 1.5;
|
|
|
|
/* Button text (matches h4 range but with tighter line height) */
|
|
--text-fd-btn: clamp(1rem, 1.5vw + 0.125rem, 1.375rem);
|
|
--text-fd-btn--line-height: 1.2;
|
|
}
|
|
|
|
|
|
/* ============================================
|
|
FIBER DIREKT — COMPONENT UTILITY CLASSES
|
|
============================================ */
|
|
|
|
@layer components {
|
|
|
|
/* ---- CTA Buttons ----
|
|
Usage: <a class="fd-btn-primary">Kom igång</a>
|
|
<a class="fd-btn-secondary">Läs mer</a>
|
|
<a class="fd-btn-secondary-dark">Kontakta oss</a> (on navy backgrounds)
|
|
*/
|
|
|
|
.fd-btn-primary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.75rem 2rem;
|
|
background-color: var(--color-fd-yellow);
|
|
color: var(--color-fd-navy);
|
|
font-family: var(--font-joey-bold);
|
|
font-size: var(--text-fd-btn);
|
|
line-height: var(--text-fd-btn--line-height);
|
|
border-radius: 9999px;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
border: 2px solid transparent;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.fd-btn-primary:hover {
|
|
background-color: var(--color-fd-navy);
|
|
color: var(--color-fd-yellow);
|
|
box-shadow: 0 8px 24px -4px rgba(14, 35, 56, 0.3);
|
|
transform: translateY(-2px);
|
|
}
|
|
.fd-btn-primary:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 4px 12px -2px rgba(254, 204, 2, 0.25);
|
|
}
|
|
|
|
.fd-btn-secondary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.75rem 2rem;
|
|
background-color: transparent;
|
|
color: var(--color-fd-navy);
|
|
font-family: var(--font-joey-bold);
|
|
font-size: var(--text-fd-btn);
|
|
line-height: var(--text-fd-btn--line-height);
|
|
border-radius: 9999px;
|
|
border: 2px solid var(--color-fd-navy);
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.fd-btn-secondary:hover {
|
|
background-color: var(--color-fd-navy);
|
|
color: #FFFFFF;
|
|
box-shadow: 0 8px 24px -4px rgba(14, 35, 56, 0.3);
|
|
transform: translateY(-2px);
|
|
}
|
|
.fd-btn-secondary:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 4px 12px -2px rgba(14, 35, 56, 0.2);
|
|
}
|
|
|
|
.fd-btn-secondary-dark {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.75rem 2rem;
|
|
background-color: transparent;
|
|
color: #FFFFFF;
|
|
font-family: var(--font-joey-bold);
|
|
font-size: var(--text-fd-btn);
|
|
line-height: var(--text-fd-btn--line-height);
|
|
border-radius: 9999px;
|
|
border: 2px solid #FFFFFF;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.fd-btn-secondary-dark:hover {
|
|
background-color: #FFFFFF;
|
|
color: var(--color-fd-navy);
|
|
box-shadow: 0 8px 24px -4px rgba(255, 255, 255, 0.25);
|
|
transform: translateY(-2px);
|
|
}
|
|
.fd-btn-secondary-dark:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 4px 12px -2px rgba(255, 255, 255, 0.15);
|
|
}
|
|
|
|
/* Navy-filled CTA */
|
|
.fd-btn-navy {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.75rem 2rem;
|
|
background-color: var(--color-fd-navy);
|
|
color: #FFFFFF;
|
|
font-family: var(--font-joey-bold);
|
|
font-size: var(--text-fd-btn);
|
|
line-height: var(--text-fd-btn--line-height);
|
|
border-radius: 9999px;
|
|
border: 2px solid transparent;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.fd-btn-navy:hover {
|
|
background-color: var(--color-fd-navy-700);
|
|
box-shadow: 0 8px 24px -4px rgba(14, 35, 56, 0.4);
|
|
transform: translateY(-2px);
|
|
}
|
|
.fd-btn-navy:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 4px 12px -2px rgba(14, 35, 56, 0.3);
|
|
}
|
|
|
|
/* Mint CTA (for success/eco contexts) */
|
|
.fd-btn-mint {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0.75rem 2rem;
|
|
background-color: var(--color-fd-mint);
|
|
color: var(--color-fd-navy);
|
|
font-family: var(--font-joey-bold);
|
|
font-size: var(--text-fd-btn);
|
|
line-height: var(--text-fd-btn--line-height);
|
|
border-radius: 9999px;
|
|
border: 2px solid transparent;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
}
|
|
.fd-btn-mint:hover {
|
|
background-color: var(--color-fd-mint-300);
|
|
box-shadow: 0 8px 24px -4px rgba(103, 239, 139, 0.35);
|
|
transform: translateY(-2px);
|
|
}
|
|
.fd-btn-mint:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 4px 12px -2px rgba(103, 239, 139, 0.25);
|
|
}
|
|
|
|
|
|
/* ---- Standard Section Wrapper ----
|
|
Usage: <section class="fd-section">
|
|
<section class="fd-section fd-section-tight"> (less vertical padding)
|
|
*/
|
|
|
|
.fd-section {
|
|
position: relative;
|
|
width: 100%;
|
|
padding-top: 3rem; /* 48px mobile */
|
|
padding-bottom: 3rem;
|
|
overflow: hidden;
|
|
}
|
|
@media (min-width: 48rem) {
|
|
.fd-section {
|
|
padding-top: 4rem; /* 64px tablet */
|
|
padding-bottom: 4rem;
|
|
}
|
|
}
|
|
@media (min-width: 64rem) {
|
|
.fd-section {
|
|
padding-top: 6rem; /* 96px desktop */
|
|
padding-bottom: 6rem;
|
|
}
|
|
}
|
|
|
|
.fd-section-tight {
|
|
padding-top: 2rem;
|
|
padding-bottom: 2rem;
|
|
}
|
|
@media (min-width: 48rem) {
|
|
.fd-section-tight {
|
|
padding-top: 3rem;
|
|
padding-bottom: 3rem;
|
|
}
|
|
}
|
|
@media (min-width: 64rem) {
|
|
.fd-section-tight {
|
|
padding-top: 4rem;
|
|
padding-bottom: 4rem;
|
|
}
|
|
}
|
|
|
|
/* ---- Standard Content Container ----
|
|
Usage: <div class="fd-container">
|
|
*/
|
|
.fd-container {
|
|
position: relative;
|
|
max-width: 1200px;
|
|
margin-inline: auto;
|
|
padding-inline: 1.5rem; /* 24px mobile */
|
|
}
|
|
@media (min-width: 48rem) {
|
|
.fd-container {
|
|
padding-inline: 2rem; /* 32px tablet+ */
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* ============================================
|
|
FIBER DIREKT — MOBILE ENHANCEMENTS
|
|
============================================ */
|
|
|
|
@media (max-width: 47.9375rem) {
|
|
/* Full-width buttons on mobile for clear tap targets */
|
|
.fd-btn-primary,
|
|
.fd-btn-secondary,
|
|
.fd-btn-secondary-dark,
|
|
.fd-btn-navy,
|
|
.fd-btn-mint {
|
|
width: 100%;
|
|
justify-content: center;
|
|
padding-top: 0.875rem;
|
|
padding-bottom: 0.875rem;
|
|
}
|
|
|
|
/* Ensure minimum touch target */
|
|
a, button {
|
|
min-height: 44px;
|
|
}
|
|
}
|
|
|
|
|
|
/* ============================================
|
|
FIBER DIREKT — FRONTEND DARK MODE
|
|
============================================
|
|
These are for the public site, not Payload admin.
|
|
Activated by adding data-fd-theme="dark" to <html>.
|
|
The existing [data-theme='dark'] above is for Payload's admin UI.
|
|
*/
|
|
|
|
:root {
|
|
/* Frontend surface tokens (light defaults) */
|
|
--fd-bg-primary: #FFFFFF;
|
|
--fd-bg-secondary: #F0F0F0;
|
|
--fd-bg-card: #FFFFFF;
|
|
--fd-text-primary: #0E2338;
|
|
--fd-text-secondary: #41474F;
|
|
--fd-text-muted: #6B737E;
|
|
--fd-border: #E2E4E7;
|
|
--fd-border-strong: #C8CCD0;
|
|
}
|
|
|
|
[data-fd-theme='dark'] {
|
|
--fd-bg-primary: #0A1825;
|
|
--fd-bg-secondary: #0E2338;
|
|
--fd-bg-card: #153350;
|
|
--fd-text-primary: #FFFFFF;
|
|
--fd-text-secondary: #9DB8CC;
|
|
--fd-text-muted: #6A94B3;
|
|
--fd-border: #1C4368;
|
|
--fd-border-strong: #245580;
|
|
}
|
|
|
|
/* Also support system preference if no explicit attribute */
|
|
@media (prefers-color-scheme: dark) {
|
|
:root:not([data-fd-theme='light']) {
|
|
--fd-bg-primary: #0A1825;
|
|
--fd-bg-secondary: #0E2338;
|
|
--fd-bg-card: #153350;
|
|
--fd-text-primary: #FFFFFF;
|
|
--fd-text-secondary: #9DB8CC;
|
|
--fd-text-muted: #6A94B3;
|
|
--fd-border: #1C4368;
|
|
--fd-border-strong: #245580;
|
|
}
|
|
}
|
|
/* ── FD Prose styles (for Posts rich text) ────────────────────────────────
|
|
Add these to your existing globals.css
|
|
─────────────────────────────────────────────────────────────────────── */
|
|
|
|
.fd-prose {
|
|
font-family: var(--font-joey, sans-serif);
|
|
color: theme('colors.fd-navy');
|
|
}
|
|
|
|
.fd-prose h1,
|
|
.fd-prose h2,
|
|
.fd-prose h3,
|
|
.fd-prose h4 {
|
|
font-family: var(--font-joey-heavy, sans-serif);
|
|
color: theme('colors.fd-navy');
|
|
margin-top: 2rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.fd-prose h2 { font-size: 1.75rem; }
|
|
.fd-prose h3 { font-size: 1.35rem; }
|
|
|
|
.fd-prose p {
|
|
font-size: 1.125rem;
|
|
line-height: 1.75;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.fd-prose a {
|
|
color: theme('colors.fd-navy');
|
|
text-decoration: underline;
|
|
text-underline-offset: 3px;
|
|
font-family: var(--font-joey-bold, sans-serif);
|
|
}
|
|
|
|
.fd-prose a:hover {
|
|
color: theme('colors.fd-yellow');
|
|
}
|
|
|
|
.fd-prose ul,
|
|
.fd-prose ol {
|
|
padding-left: 1.5rem;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.fd-prose li {
|
|
font-size: 1.125rem;
|
|
line-height: 1.75;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.fd-prose ul li::marker {
|
|
color: theme('colors.fd-yellow');
|
|
}
|
|
|
|
.fd-prose strong {
|
|
font-family: var(--font-joey-bold, sans-serif);
|
|
font-weight: normal;
|
|
}
|
|
|
|
.fd-prose blockquote {
|
|
border-left: 4px solid theme('colors.fd-yellow');
|
|
padding-left: 1.25rem;
|
|
margin: 2rem 0;
|
|
font-size: 1.2rem;
|
|
color: theme('colors.fd-navy');
|
|
font-style: italic;
|
|
}
|
|
|
|
.fd-prose img {
|
|
border-radius: 24px;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.fd-prose hr {
|
|
border-color: #e5e5e5;
|
|
margin: 2.5rem 0;
|
|
}
|