/** * Global Styles * * Base styles and theme variables for the annotation platform */ /* Base Reset */ * { box-sizing: border-box; } html, body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { background: var(--theme-background); color: var(--theme-paragraph); transition: background-color 0.3s ease, color 0.3s ease; } /* Typography */ h1, h2, h3, h4, h5, h6 { color: var(--theme-headline); margin: 0; font-weight: 600; } p { color: var(--theme-paragraph); margin: 0; } a { color: var(--theme-button); text-decoration: none; transition: color 0.2s ease; &:hover { color: var(--theme-button-hover); } } /* Scrollbar Styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--theme-background-secondary); } ::-webkit-scrollbar-thumb { background: var(--theme-border); border-radius: 4px; &:hover { background: var(--theme-paragraph-subtle); } } /* Focus Styles */ *:focus-visible { outline: 2px solid var(--theme-button); outline-offset: 2px; } /* Selection */ ::selection { background: var(--theme-button); color: var(--theme-button-text); } /* Override @humansignal/ui Button styles to use theme colors */ :global { /* Button base overrides */ .button_base__1vMSr { --text-color: var(--theme-headline); --background-color: transparent; --border-color: var(--theme-border); --background-color-hover: var(--theme-background-secondary); --border-color-hover: var(--theme-button); --background-color-active: var(--theme-background-tertiary); } /* Primary button variant */ .button_variant-primary__bdYre { --text-color: var(--theme-button-text) !important; --background-color: var(--theme-button) !important; --border-color: var(--theme-button) !important; --background-color-hover: var(--theme-button-hover) !important; --border-color-hover: var(--theme-button-hover) !important; --background-color-active: var(--theme-button-active) !important; } /* Neutral button variant */ .button_variant-neutral__3kZXm { --text-color: var(--theme-headline); --background-color: transparent; --border-color: var(--theme-border); --background-color-hover: var(--theme-background-secondary); --border-color-hover: var(--theme-button); --background-color-active: var(--theme-background-tertiary); } /* Input fields */ input[type="text"], input[type="email"], input[type="password"], input[type="number"], textarea, select { background: var(--theme-background) !important; color: var(--theme-headline) !important; border-color: var(--theme-border) !important; &:focus { border-color: var(--theme-button) !important; outline-color: var(--theme-button) !important; } &::placeholder { color: var(--theme-paragraph-subtle) !important; } } /* Form labels */ label { color: var(--theme-headline) !important; } /* Error states */ .text-error-foreground, [class*="error"] { color: var(--theme-error) !important; } /* Disabled states */ :disabled, [disabled] { opacity: 0.5; cursor: not-allowed; } } /* Utility Classes */ .text-headline { color: var(--theme-headline); } .text-paragraph { color: var(--theme-paragraph); } .text-subtle { color: var(--theme-paragraph-subtle); } .bg-primary { background: var(--theme-background); } .bg-secondary { background: var(--theme-background-secondary); } .bg-tertiary { background: var(--theme-background-tertiary); } .border-default { border-color: var(--theme-border); } .border-subtle { border-color: var(--theme-border-subtle); } /* Card Styles */ .card { background: var(--theme-card-background); border: 1px solid var(--theme-card-border); border-radius: 12px; padding: 24px; transition: all 0.2s ease; &:hover { border-color: var(--theme-button); box-shadow: 0 4px 12px var(--theme-shadow); } } /* Button Base Styles */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 20px; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; text-decoration: none; &:disabled { opacity: 0.5; cursor: not-allowed; } } .btn-primary { background: var(--theme-button); color: var(--theme-button-text); &:hover:not(:disabled) { background: var(--theme-button-hover); } &:active:not(:disabled) { background: var(--theme-button-active); } } .btn-secondary { background: transparent; color: var(--theme-paragraph); border: 1px solid var(--theme-border); &:hover:not(:disabled) { background: var(--theme-background-secondary); border-color: var(--theme-button); color: var(--theme-button); } } /* Status Colors */ .status-success { color: var(--theme-success); } .status-warning { color: var(--theme-warning); } .status-error { color: var(--theme-error); } .status-info { color: var(--theme-info); } /* Loading Spinner */ @keyframes spin { to { transform: rotate(360deg); } } .spinner { display: inline-block; width: 20px; height: 20px; border: 2px solid var(--theme-border); border-top-color: var(--theme-button); border-radius: 50%; animation: spin 0.6s linear infinite; } /* Transitions */ .fade-enter { opacity: 0; } .fade-enter-active { opacity: 1; transition: opacity 0.3s ease; } .fade-exit { opacity: 1; } .fade-exit-active { opacity: 0; transition: opacity 0.3s ease; }