@import './tokens.css'; *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: var(--font-sans); font-size: 16px; line-height: 1.6; color: var(--color-text-primary); background-color: var(--color-bg-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; scroll-behavior: smooth; } body { min-height: 100vh; padding-bottom: 80px; /* space for persistent player */ } a { color: var(--color-accent); text-decoration: none; transition: color var(--transition-fast); } a:hover { color: var(--color-accent-hover); } img, video { max-width: 100%; height: auto; display: block; } h1, h2, h3, h4, h5, h6 { line-height: 1.2; color: var(--color-text-primary); } h1 { font-size: var(--text-4xl); } h2 { font-size: var(--text-3xl); } h3 { font-size: var(--text-2xl); } h4 { font-size: var(--text-xl); } .container { max-width: var(--max-width); margin-inline: auto; padding-inline: var(--space-6); } .container--narrow { max-width: var(--max-width-narrow); margin-inline: auto; padding-inline: var(--space-6); } /* Card base */ .card { background: var(--color-bg-secondary); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-6); box-shadow: var(--shadow-sm); transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base); } .card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); border-color: var(--color-accent); } /* Button styles */ .btn { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-3) var(--space-6); border-radius: var(--radius-sm); font-size: var(--text-sm); font-weight: 600; cursor: pointer; border: none; transition: all var(--transition-fast); } .btn--primary { background: var(--color-accent); color: hsl(220, 20%, 8%); } .btn--primary:hover { background: var(--color-accent-hover); box-shadow: var(--shadow-glow); } .btn--ghost { background: transparent; color: var(--color-text-primary); border: 1px solid var(--color-border); } .btn--ghost:hover { border-color: var(--color-accent); color: var(--color-accent); } /* Badge */ .badge { display: inline-flex; align-items: center; padding: var(--space-1) var(--space-3); border-radius: 9999px; font-size: var(--text-xs); font-weight: 600; background: var(--color-accent-glow); color: var(--color-accent); border: 1px solid hsl(200 85% 55% / 0.3); } /* Grid utilities */ .grid { display: grid; gap: var(--space-6); } .grid--2 { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); } .grid--3 { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); } /* Visually hidden (accessible) */ .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; } /* Section spacing */ .section { padding-block: var(--space-16); } .section__title { font-size: var(--text-2xl); margin-bottom: var(--space-8); } /* Fade-in animation */ .fade-in { opacity: 0; transform: translateY(20px); transition: opacity var(--transition-slow), transform var(--transition-slow); } .fade-in.visible { opacity: 1; transform: translateY(0); }