eldouma-graphics / src /styles.css
Moeeldouma's picture
Deploy Eldouma Graphics — Docker Space, bring-your-own-key demo
39d98a0 verified
Raw
History Blame Contribute Delete
9.38 kB
@import "tailwindcss";
/* Eldouma Graphics design tokens — DARK, matched to the marketing home page
(near-black cool surfaces #06060c–#101016, orange primary #e7723b, purple/teal
accent glows). Inter body + Space Grotesk display, JetBrains Mono for numerics. */
@theme {
--font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
--font-display: "Space Grotesk", "Inter", ui-sans-serif, system-ui, sans-serif;
--font-mono: "JetBrains Mono", ui-monospace, monospace;
--color-primary: #e7723b; /* brand orange — actions / selection / accents */
--color-primary-bright: #f4934f; /* lighter orange for hovers / gradients */
--color-accent-violet: #7c5cff; /* secondary glow (matches home) */
--color-accent-teal: #36c2b8; /* tertiary glow (matches home) */
--color-bg: #0a0a0f; /* app base (cool near-black, == home hero) */
--color-surface: #101016; /* panels (== home card) */
--color-surface-raised: #17171f;/* modals / dropdowns / popovers */
--color-surface-sunken: #070709;/* timeline wells / input fields */
--color-fg: #eeeef2; /* near-white text */
--color-fg-muted: #9d9caa; /* secondary text (cool grey) */
--color-fg-subtle: #6a6976; /* tertiary / hints */
--color-border: #24242f; /* hairline (sits just above surface) */
--color-border-strong: #353542; /* emphasised dividers / focus rings */
--color-destructive: #f0584f; /* brightened for dark legibility */
--color-success: #46b46a;
--color-warning: #eec152;
/* timeline item colors by element type — tuned to read on the dark wells */
--color-tl-video: #5c93c6;
--color-tl-audio: #5fb079;
--color-tl-image: oklch(0.66 0.12 130);
--color-tl-gif: oklch(0.66 0.12 195);
--color-tl-solid: oklch(0.64 0.14 305);
--color-tl-motion: #c46a9b;
--color-tl-text: #3bb0b0;
--color-tl-caption: #9d9caa;
--radius: 0.375rem;
}
:root {
--tl-edge: #f4934f; /* orange clip edge — pops on dark */
--tl-playhead: #f4f4f6; /* light playhead on the dark timeline */
}
/* fonts used by the motion-graphics templates — loaded globally so the gallery
previews (which render outside the Remotion composition) look faithful */
@font-face { font-family: "Poppins"; font-weight: 600; src: url(/fonts/Poppins-SemiBold.ttf); font-display: swap; }
@font-face { font-family: "Poppins"; font-weight: 700; src: url(/fonts/Poppins-Bold.ttf); font-display: swap; }
@font-face { font-family: "Poppins"; font-weight: 800; src: url(/fonts/Poppins-ExtraBold.ttf); font-display: swap; }
@font-face { font-family: "Fraunces"; font-weight: 700; src: url(/fonts/Fraunces-Bold.ttf); font-display: swap; }
@font-face { font-family: "Fraunces"; font-weight: 900; src: url(/fonts/Fraunces-Black.ttf); font-display: swap; }
@font-face { font-family: "JetBrains Mono"; font-weight: 500; src: url(/fonts/JetBrainsMono-Regular.ttf); font-display: swap; }
@font-face { font-family: "JetBrains Mono"; font-weight: 700; src: url(/fonts/JetBrainsMono-Bold.ttf); font-display: swap; }
@font-face { font-family: "Space Grotesk"; font-weight: 500; src: url(/fonts/SpaceGrotesk-Medium.ttf); font-display: swap; }
@font-face { font-family: "Space Grotesk"; font-weight: 700; src: url(/fonts/SpaceGrotesk-Bold.ttf); font-display: swap; }
@font-face { font-family: "Newsreader"; font-weight: 400 500; src: url(/fonts/Newsreader-Medium.ttf); font-display: swap; }
/* no heavier Newsreader cut ships — map bold/display weights to the real Medium glyphs so magazine titles aren't faux-bolded */
@font-face { font-family: "Newsreader"; font-weight: 600 900; src: url(/fonts/Newsreader-Medium.ttf); font-display: swap; }
@font-face { font-family: "Newsreader"; font-weight: 500; font-style: italic; src: url(/fonts/Newsreader-Italic.ttf); font-display: swap; }
/* --- expanded free-font library (all SIL OFL 1.1) — variable fonts cover every weight from one file --- */
@font-face { font-family: "Inter"; font-weight: 100 900; src: url(/fonts/Inter-Variable.ttf); font-display: swap; }
@font-face { font-family: "Montserrat"; font-weight: 100 900; src: url(/fonts/Montserrat-Variable.ttf); font-display: swap; }
@font-face { font-family: "Playfair Display"; font-weight: 400 900; src: url(/fonts/PlayfairDisplay-Variable.ttf); font-display: swap; }
@font-face { font-family: "Oswald"; font-weight: 200 700; src: url(/fonts/Oswald-Variable.ttf); font-display: swap; }
@font-face { font-family: "Lora"; font-weight: 400 700; src: url(/fonts/Lora-Variable.ttf); font-display: swap; }
@font-face { font-family: "Manrope"; font-weight: 200 800; src: url(/fonts/Manrope-Variable.ttf); font-display: swap; }
@font-face { font-family: "Sora"; font-weight: 100 800; src: url(/fonts/Sora-Variable.ttf); font-display: swap; }
@font-face { font-family: "Anton"; font-weight: 400 900; src: url(/fonts/Anton-Regular.ttf); font-display: swap; }
@font-face { font-family: "Bebas Neue"; font-weight: 400 900; src: url(/fonts/BebasNeue-Regular.ttf); font-display: swap; }
@font-face { font-family: "Archivo Black"; font-weight: 400 900; src: url(/fonts/ArchivoBlack-Regular.ttf); font-display: swap; }
/* Arabic type library (also declared in the render composition; here for the editor UI / font picker) */
@font-face { font-family: "Cairo"; font-weight: 200 1000; src: url(/fonts/Cairo-Variable.ttf); font-display: swap; }
@font-face { font-family: "Amiri"; font-weight: 400 600; src: url(/fonts/Amiri-Regular.ttf); font-display: swap; }
@font-face { font-family: "Amiri"; font-weight: 700 900; src: url(/fonts/Amiri-Bold.ttf); font-display: swap; }
@font-face { font-family: "Tajawal"; font-weight: 400 600; src: url(/fonts/Tajawal-Regular.ttf); font-display: swap; }
@font-face { font-family: "Tajawal"; font-weight: 700 900; src: url(/fonts/Tajawal-Bold.ttf); font-display: swap; }
@font-face { font-family: "Almarai"; font-weight: 300 600; src: url(/fonts/Almarai-Regular.ttf); font-display: swap; }
@font-face { font-family: "Almarai"; font-weight: 700 900; src: url(/fonts/Almarai-ExtraBold.ttf); font-display: swap; }
@font-face { font-family: "El Messiri"; font-weight: 400 700; src: url(/fonts/ElMessiri-Variable.ttf); font-display: swap; }
@font-face { font-family: "Reem Kufi"; font-weight: 400 700; src: url(/fonts/ReemKufi-Variable.ttf); font-display: swap; }
@font-face { font-family: "Lalezar"; font-weight: 400 900; src: url(/fonts/Lalezar-Regular.ttf); font-display: swap; }
@font-face { font-family: "Changa"; font-weight: 200 800; src: url(/fonts/Changa-Variable.ttf); font-display: swap; }
@font-face { font-family: "Aref Ruqaa"; font-weight: 400 600; src: url(/fonts/ArefRuqaa-Regular.ttf); font-display: swap; }
@font-face { font-family: "Aref Ruqaa"; font-weight: 700 900; src: url(/fonts/ArefRuqaa-Bold.ttf); font-display: swap; }
@font-face { font-family: "Caveat"; font-weight: 400 700; src: url(/fonts/Caveat-Variable.ttf); font-display: swap; }
@font-face { font-family: "Bangers"; font-weight: 400 900; src: url(/fonts/Bangers-Regular.ttf); font-display: swap; }
/* --- added fonts (SIL OFL 1.1): English display + more Arabic faces --- */
@font-face { font-family: "DM Serif Display"; font-weight: 400 700; src: url(/fonts/DMSerifDisplay-Regular.ttf); font-display: swap; }
@font-face { font-family: "Outfit"; font-weight: 100 900; src: url(/fonts/Outfit-Variable.ttf); font-display: swap; }
@font-face { font-family: "Syne"; font-weight: 400 800; src: url(/fonts/Syne-Variable.ttf); font-display: swap; }
@font-face { font-family: "Markazi Text"; font-weight: 400 700; src: url(/fonts/MarkaziText-Variable.ttf); font-display: swap; }
@font-face { font-family: "IBM Plex Sans Arabic"; font-weight: 400 500; src: url(/fonts/IBMPlexSansArabic-Regular.ttf); font-display: swap; }
@font-face { font-family: "IBM Plex Sans Arabic"; font-weight: 600 800; src: url(/fonts/IBMPlexSansArabic-Bold.ttf); font-display: swap; }
@font-face { font-family: "Rakkas"; font-weight: 400 700; src: url(/fonts/Rakkas-Regular.ttf); font-display: swap; }
@font-face { font-family: "Noto Kufi Arabic"; font-weight: 300 800; src: url(/fonts/NotoKufiArabic-Variable.ttf); font-display: swap; }
* { box-sizing: border-box; }
html, body, #root { height: 100%; margin: 0; }
body {
background: var(--color-bg);
color: var(--color-fg);
font-family: var(--font-sans);
font-feature-settings: "ss01";
-webkit-font-smoothing: antialiased;
}
/* dense pro-editor scrollbars (dark theme) */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #2c2c38; border-radius: 9999px; }
::-webkit-scrollbar-thumb:hover { background: #3a3a48; }
::-webkit-scrollbar-track { background: transparent; }
::selection { background: color-mix(in oklch, var(--color-primary) 38%, transparent); }
.eyebrow { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-fg-muted); }
.num { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
/* imperative transcript playhead highlight (avoids re-rendering 502 words per frame) */
.tw-active { background: color-mix(in oklch, var(--color-primary) 28%, transparent); border-radius: 4px; }
/* toast enter (used by lib/toast.tsx; motion-safe so Reduce Motion users get no slide) */
@keyframes toast-in { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } }