@import "tailwindcss"; /* DM Sans font family - Self hosted */ @font-face { font-family: "DM Sans"; src: url("/fonts/DMSans-latin.woff2") format("woff2"); font-weight: 400 700; font-style: normal; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; } @font-face { font-family: "DM Sans"; src: url("/fonts/DMSans-latin-ext.woff2") format("woff2"); font-weight: 400 700; font-style: normal; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; } /* Intro font family - Self hosted */ @font-face { font-family: "Intro"; src: local("Intro Demo"), url("/fonts/IntroDemoBlackCaps.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: "Intro Inline"; src: local("Intro Demo"), url("/fonts/IntroDemoBlackCapsInline.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; } /* Font theme tokens */ @theme { --font-body: "DM Sans", sans-serif; } body { font-family: var(--font-body); } /* Link hover underline animation */ @utility link-hover { @apply relative after:absolute after:bottom-0 after:left-0 after:h-[2px] after:w-0 after:bg-current after:transition-[width] after:duration-300 hover:after:w-full; } @utility link-hover { &::after { content: ""; position: absolute; bottom: 0; left: 0; height: 2px; width: 0; background-color: currentColor; transition: width 300ms; } &:hover::after { width: 100%; } } /* Smooth scrolling for the entire page */ html { scroll-behavior: smooth; } /* Respect reduced motion preferences */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms; animation-iteration-count: 1; transition-duration: 0.01ms; scroll-behavior: auto; } } /* Hide scrollbar but keep functionality */ html { scrollbar-width: thin; scrollbar-color: rgba(0, 0, 0, 0.2) transparent; } ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.2); border-radius: 3px; } /* ─── Theme Colors (CSS Variables for shadcn/ui) ───────────────────────────── These variables are used by shadcn/ui components and the toast system. ─────────────────────────────────────────────────────────────────────────── */ :root { --background: 0 0% 100%; --foreground: 0 0% 10%; --card: 0 0% 100%; --card-foreground: 0 0% 10%; --popover: 0 0% 100%; --popover-foreground: 0 0% 10%; --primary: 340 70% 49%; --primary-foreground: 0 0% 100%; --secondary: 183 40% 23%; --secondary-foreground: 0 0% 100%; --muted: 0 0% 96%; --muted-foreground: 0 0% 45%; --accent: 340 70% 49%; --accent-foreground: 0 0% 100%; --destructive: 0 84% 60%; --destructive-foreground: 0 0% 100%; --border: 0 0% 90%; --input: 0 0% 90%; --ring: 340 70% 49%; --radius: 0rem; } /* ─── Text Selection Colors ───────────────────────────────────────────────── Each section gets a ::selection style that harmonizes with its background. The goal: selection feels native to each section, not a browser default. ─────────────────────────────────────────────────────────────────────────── */ /* Default / White backgrounds (Hero, ArtForms) */ ::selection { background-color: #d82560; color: #ffffff; } /* Info section — magenta background (#d82560/96) */ #info ::selection { background-color: #ffffff; color: #d82560; } /* Registration section — dark teal background (#214e51/96) */ #registration ::selection { background-color: #d09035; color: #1a1a1a; }