Frameworks did not remove CSS from the interview; they moved the questions up a level. Nobody asks you to centre a div. They ask how you structure styles for a component library, why a layout shifts, how you make a modal accessible, and what the European Accessibility Act means for the product. Accessibility in particular became a legal requirement for many EU services in June 2025, and interviewers now treat it as engineering competence, not polish.
:has(), cascade layers, nesting, @scope, subgrid, color-mix() and oklch(), text-wrap: balance, @starting-style, scroll-driven animations and view transitions are Baseline; anchor positioning became Baseline Newly available in January 2026; the CSS if() function is shipping but not yet Baseline. Knowing what is safe to use without a fallback is part of the answer.app.config tokens) is what most Nuxt teams inherit.clamp(), container queries over media queries for components, dvh units, safe-area insets, reduced motion and contrast preferences, pointer capability queries, and reserved space so nothing shifts.useId for associations, Reka UI underneath Nuxt UI for keyboard and focus behaviour, <NuxtRouteAnnouncer> and <NuxtAnnouncer> for live regions, usePreferredReducedMotion from VueUse, and @axe-core/playwright in end-to-end tests.| Page | Question it answers |
|---|---|
| Cascade, layout and modern CSS | "What is new in CSS that you actually use?" and "why does this style not apply?" |
| CSS architecture and Tailwind | "How do you organise styles in a large Vue app?" |
| Responsive and adaptive design | "How do you build for phones, foldables, dark mode and reduced motion at once?" |
| Accessibility fundamentals | "What does WCAG 2.2 require and how do you test it?" |
| Accessible components in Vue | "Build an accessible modal / combobox / tabs" |
The modern CSS a Nuxt component ships in 2026, in one stylesheet:
@layer components {
.card {
container-type: inline-size; /* the card sizes its own children */
background: color-mix(in oklch, var(--ui-bg) 92%, var(--ui-primary));
padding: clamp(0.75rem, 2cqi, 1.5rem);
text-wrap: balance;
&:has(img) { display: grid; grid-template-rows: subgrid; } /* nesting + :has() */
@container (min-width: 32rem) { grid-template-columns: 1fr 2fr; }
.title { color: light-dark(var(--ui-text), var(--ui-text-inverted)); }
}
.card-menu[popover] {
position-anchor: --card-trigger; /* anchor positioning: Baseline since January 2026 */
position-area: bottom span-right;
@starting-style { opacity: 0; translate: 0 -0.25rem; }
transition: opacity 0.15s, translate 0.15s, display 0.15s allow-discrete;
}
}
Retrofitting focus management, labels and live regions onto a finished UI costs several times more than building with semantic elements and a headless primitive library from the start. Interviewers ask "when do you think about accessibility" and the only good answer is "when choosing the element".
"Current enough to use the 2026 platform without a framework hiding it: container queries, :has(), cascade layers, nesting, @scope, color-mix and oklch, view transitions, and anchor positioning now that it is Baseline. I structure styles by ownership, tokens as custom properties, scoped or utility classes per component, layers for the order, and I treat accessibility as an engineering requirement: WCAG 2.2 AA as the target, semantic elements first, a headless primitive library for keyboard and focus behaviour, and axe plus a screen reader pass in the definition of done, which the European Accessibility Act made a legal matter for many products in 2025."
Nothing yet. Notes filed here show up on every page of this section.
Typing patterns and smells
[object Object]
Cascade, layout and modern CSS
Specificity and cascade layers, custom properties and logical properties, flexbox versus grid and subgrid, container queries, :has(), nesting and @scope, modern colour, view transitions, anchor positioning, popover and dialog, and the Baseline vocabulary for support.