Spaces:
Sleeping
Sleeping
| // SAAP Global Styles | |
| @import './tokens.scss'; | |
| @import './mixins.scss'; | |
| @import './utilities.scss'; | |
| // === BASE STYLES === | |
| *, | |
| *::before, | |
| *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| html { | |
| font-size: 16px; | |
| scroll-behavior: smooth; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| body { | |
| font-family: var(--saap-font-family); | |
| font-size: var(--saap-text-base); | |
| font-weight: var(--saap-font-normal); | |
| line-height: var(--saap-leading-normal); | |
| color: var(--saap-neutral-800); | |
| background-color: var(--saap-neutral-50); | |
| min-height: 100vh; | |
| } | |
| // === TYPOGRAPHY === | |
| h1, h2, h3, h4, h5, h6 { | |
| font-weight: var(--saap-font-semibold); | |
| line-height: var(--saap-leading-tight); | |
| margin-bottom: var(--saap-space-4); | |
| color: var(--saap-neutral-900); | |
| } | |
| h1 { | |
| font-size: var(--saap-text-5xl); | |
| font-weight: var(--saap-font-bold); | |
| color: var(--saap-primary-800); | |
| } | |
| h2 { | |
| font-size: var(--saap-text-4xl); | |
| color: var(--saap-primary-600); | |
| } | |
| h3 { | |
| font-size: var(--saap-text-3xl); | |
| } | |
| h4 { | |
| font-size: var(--saap-text-2xl); | |
| font-weight: var(--saap-font-medium); | |
| } | |
| h5 { | |
| font-size: var(--saap-text-xl); | |
| font-weight: var(--saap-font-medium); | |
| } | |
| h6 { | |
| font-size: var(--saap-text-lg); | |
| font-weight: var(--saap-font-medium); | |
| } | |
| p { | |
| margin-bottom: var(--saap-space-4); | |
| color: var(--saap-neutral-700); | |
| } | |
| small { | |
| font-size: var(--saap-text-sm); | |
| color: var(--saap-neutral-600); | |
| } | |
| code { | |
| font-family: var(--saap-font-mono); | |
| font-size: 0.9em; | |
| padding: var(--saap-space-1) var(--saap-space-2); | |
| background-color: var(--saap-neutral-100); | |
| border-radius: var(--saap-border-radius-sm); | |
| color: var(--saap-neutral-800); | |
| } | |
| pre { | |
| font-family: var(--saap-font-mono); | |
| padding: var(--saap-space-4); | |
| background-color: var(--saap-neutral-100); | |
| border-radius: var(--saap-border-radius); | |
| overflow-x: auto; | |
| margin-bottom: var(--saap-space-4); | |
| code { | |
| padding: 0; | |
| background: none; | |
| } | |
| } | |
| // === LINKS === | |
| a { | |
| color: var(--saap-primary-600); | |
| text-decoration: none; | |
| transition: var(--saap-transition-fast); | |
| &:hover { | |
| color: var(--saap-primary-800); | |
| text-decoration: underline; | |
| } | |
| &:focus { | |
| outline: 2px solid var(--saap-primary-400); | |
| outline-offset: 2px; | |
| border-radius: var(--saap-border-radius-sm); | |
| } | |
| } | |
| // === BUTTONS === | |
| button { | |
| font-family: inherit; | |
| cursor: pointer; | |
| border: none; | |
| background: none; | |
| padding: 0; | |
| transition: var(--saap-transition); | |
| &:focus { | |
| outline: 2px solid var(--saap-primary-400); | |
| outline-offset: 2px; | |
| } | |
| &:disabled { | |
| cursor: not-allowed; | |
| opacity: 0.6; | |
| } | |
| } | |
| // === FORM ELEMENTS === | |
| input, textarea, select { | |
| font-family: inherit; | |
| font-size: inherit; | |
| border: 1px solid var(--saap-neutral-300); | |
| border-radius: var(--saap-border-radius); | |
| padding: var(--saap-space-3) var(--saap-space-4); | |
| background-color: white; | |
| transition: var(--saap-transition-fast); | |
| &:focus { | |
| outline: none; | |
| border-color: var(--saap-primary-400); | |
| box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); | |
| } | |
| &:disabled { | |
| background-color: var(--saap-neutral-100); | |
| cursor: not-allowed; | |
| opacity: 0.6; | |
| } | |
| &::placeholder { | |
| color: var(--saap-neutral-500); | |
| } | |
| } | |
| textarea { | |
| resize: vertical; | |
| min-height: 100px; | |
| } | |
| // === SCROLLBARS === | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| background: var(--saap-neutral-100); | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| background: var(--saap-neutral-400); | |
| border-radius: var(--saap-border-radius); | |
| &:hover { | |
| background: var(--saap-neutral-500); | |
| } | |
| } | |
| // === SELECTION === | |
| ::selection { | |
| background: var(--saap-primary-200); | |
| color: var(--saap-primary-900); | |
| } | |
| // === FOCUS STYLES === | |
| .focus-ring { | |
| &:focus { | |
| outline: 2px solid var(--saap-primary-400); | |
| outline-offset: 2px; | |
| } | |
| } | |
| // === SCREEN READER === | |
| .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; | |
| } | |
| // === ANIMATIONS === | |
| @keyframes fadeIn { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes slideInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes slideInDown { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| @keyframes spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| // === UTILITY ANIMATIONS === | |
| .fade-in { | |
| animation: fadeIn 0.3s ease-in-out; | |
| } | |
| .slide-in-up { | |
| animation: slideInUp 0.3s ease-out; | |
| } | |
| .slide-in-down { | |
| animation: slideInDown 0.3s ease-out; | |
| } | |
| .pulse { | |
| animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; | |
| } | |
| .spin { | |
| animation: spin 1s linear infinite; | |
| } | |