webapp/channels/src/sass/CLAUDE.OPTIONAL.md
sass/../components/CLAUDE.md).sass/
├── styles.scss # Main entry point (imports all modules)
├── base/
│ ├── _css_variables.scss # Theme CSS variables (colors, elevations, radii)
│ ├── _structure.scss # Base structural styles
│ └── _typography.scss # Typography defaults
├── components/ # Global component styles (legacy)
├── layout/ # Layout styles (headers, sidebars, content)
├── responsive/ # Responsive breakpoint styles
├── routes/ # Route-specific styles
├── utils/
│ ├── _mixins.scss # Reusable mixins
│ ├── _functions.scss # SCSS functions
│ ├── _variables.scss # SCSS variables (non-CSS)
│ └── _animations.scss # Animation definitions
└── widgets/ # Widget styles
All theme colors are defined in base/_css_variables.scss. Always use CSS variables for colors:
// GOOD
.MyComponent {
color: var(--center-channel-color);
background: var(--center-channel-bg);
border: var(--border-default);
}
--center-channel-color, --link-color, --button-bg.--center-channel-color-rgb (for rgba transparency).--elevation-1 through --elevation-6.--radius-xs through --radius-full.--border-default, --border-light, --border-dark.Use mixins from utils/_mixins.scss for responsive styles; do not hard-code media queries.
@import 'utils/mixins';
.MyComponent {
padding: 16px;
@include tablet { padding: 12px; }
@include mobile { padding: 8px; }
}
.ComponentName__element) and modifiers (&.modifier).!important; favor specificity via nested classes or utility mixins.px for sizing unless inheriting from existing rem usage; keep consistent within a file.