# D11 theme set up What I would recommend for your stack Core stack Reset / normalize Use: Modern Normalize Very small and sensible. Design tokens / vars Use either: your own variables or selectively import from Open Props Open Props You do not need the whole library. You can literally copy only the tokens you want. Example: :root { --font-sans: system-ui, sans-serif; --size-1: 0.25rem; --size-2: 0.5rem; --size-3: 1rem; --size-4: 1.5rem; --radius-2: 8px; --surface-1: #ffffff; --surface-2: #f5f5f5; --text-1: #111; --text-2: #555; --brand: hsl(210 90% 50%); } That alone gets you surprisingly far. Native CSS nesting is now good enough You can now do: .card { padding: var(--size-4); & h2 { margin-block-start: 0; } & a { color: var(--brand); } } No Sass needed. Browser support is now solid. Cascade layers are a huge replacement for old Sass architecture This is one of the biggest modern CSS improvements. @layer reset, tokens, base, layout, components, utilities; Then: @layer base { body { font-family: var(--font-sans); } } This gives you predictable override behavior without specificity nightmares. Honestly better than many old Sass architectures. Container queries are transformative for Drupal theming Instead of: @media (min-width: 900px) you can do: @container (min-width: 40rem) This is fantastic for: paragraphs blocks views reusable Drupal components because components respond to their container, not the viewport. That maps beautifully to Drupal’s block-based structure. Suggested file structure Something like: css/ reset.css tokens.css base.css layout.css components/ buttons.css cards.css forms.css navigation.css Then load in your .libraries.yml. Very maintainable. I would honestly skip Pico entirely then Given what you just said, I think you may actually prefer: normalize/reset your own tokens semantic HTML native CSS features tiny component CSS instead of Pico. Because Pico is opinionated. You may eventually find yourself undoing its typography/layout assumptions. Whereas your own token system: stays tiny teaches future-you exactly how the site works avoids framework drift keeps Drupal Twig very clean Modern CSS features worth embracing immediately These are absolutely worth using now: clamp() font-size: clamp(1rem, 2vw, 1.5rem); logical properties margin-block: 1rem; padding-inline: 2rem; Much cleaner than top/right/bottom/left. :where() Low-specificity selectors: :where(article, section, aside) h2 { margin-top: 0; } Excellent for maintainability. color-mix() background: color-mix(in srgb, var(--brand), white 90%); Incredibly useful. Tooling I would still keep Even without preprocessing, I’d still consider: Vite only for: live reload JS bundling asset handling NOT CSS transforms. Or skip even that initially. Modern Drupal theming can genuinely be: CSS files ES modules libraries.yml done. And that’s refreshing compared to the old webpack/gulp era. This approach fits Drupal especially well Drupal’s strengths are: semantic HTML server rendering reusable structured content progressive enhancement A lightweight native CSS architecture aligns with that extremely well. You avoid importing frontend-app complexity into a CMS that doesn’t necessarily benefit from it. ──────────────────────────────────────────────────────────────────