Re: [csswg-drafts] Proposal: CSS @sheet (#11509)

The CSS Working Group just discussed `Proposal: CSS @sheet`, and agreed to the following:

* `RESOLVED: Add kurt as editor of css-cascade`

<details><summary>The full IRC log of that discussion</summary>
&lt;emilio> slides: https://docs.google.com/presentation/d/1zE9NgFltry9Qor6ajT695wZiN74zEpydtc1oEbzlhOw/edit#slide=id.p<br>
&lt;emilio> kschmi: justin proposed this in 2020<br>
&lt;emilio> ... great discussion in 2023 where there was a resolution to add it to css-cascade<br>
&lt;emilio> ... and we have some suggestions to expand it<br>
&lt;emilio> ... so I want to touch on those<br>
&lt;emilio> ... quick recap<br>
&lt;astearns> new explainer: https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/AtSheet/explainer.md<br>
&lt;emilio> ... main initial goal is bundling<br>
&lt;emilio> ... non-obvious is that this is not obvious but this helps compression rations<br>
&lt;emilio> ... if you can combine more things into one file dictionaries you get more hit<br>
&lt;emilio> ... some testing gives 0.4% compression improvements, so not massive but not nothing<br>
&lt;emilio> ... the important thing I want to go through is that there's a solution for sharing inline styles with declarative shadow DOM<br>
&lt;emilio> ... core concept was resolved in 2023<br>
&lt;emilio> ... where we allowed to reference fragments<br>
&lt;emilio> ... not yet in the cascade spec<br>
&lt;emilio> ... so that was the original proposal<br>
&lt;emilio> ... so you have an `@sheet` block with an identifier and you can import them with a constructable stylesheet<br>
&lt;emilio> ... so that's kinda the bundling scenario. The CSS bits are a pre-requisite<br>
&lt;emilio> ... but we can't get the JS part until CSS adds the syntax<br>
&lt;emilio> ... so `&lt;link rel=foo.css#fragment>` and also `@import`<br>
&lt;emilio> ... so it can cache the file and only make one request<br>
&lt;emilio> q+<br>
&lt;emilio> ... hasn't been spec'd yet, but I think that's worth doing independently<br>
&lt;emilio> ... but the extension is why doesn't this work for same-page URL<br>
&lt;noamr> q+<br>
&lt;emilio> ... so plain fragments would work on inline styles<br>
&lt;fantasai> scribe+<br>
&lt;bramus> scribe+<br>
&lt;astearns> ack emilio<br>
&lt;fantasai> emilio: 2 things that come to mind<br>
&lt;fantasai> emilio: 1. Why is this CSS-specific, in the sense that other resources ... including fragments and stuff<br>
&lt;fantasai> emilio: This introduces quite a divergence in how we interpret URLs<br>
&lt;fantasai> emilio: What you're proposing feels a bit weird because a plain fragment URL usually references the same document<br>
&lt;fantasai> emilio: I guess we do have some precedent for some fragment-only URLs being a bit special<br>
&lt;fantasai> emilio: One thing I'm concerned about, how does this behave-- if a browser doesn't implement it, the browser pulls the whole stylesheet and ignores it<br>
&lt;matthieud> q+<br>
&lt;fantasai> emilio: it would import nested stylesheets<br>
&lt;fantasai> emilio: feels like a more explicit mechanism here would be nice, but maybe we can live with this?<br>
&lt;fantasai> emilio: I'm a bit worried about feature detection and fallbacks<br>
&lt;fantasai> scribe-<br>
&lt;astearns> q+ justin<br>
&lt;astearns> ack noamr<br>
&lt;miriam> We allow `supports()` in imports<br>
&lt;bramus> noamr: When i see the # i expect it to be an id<br>
&lt;bramus> … mixes html and css too much<br>
&lt;bramus> … would prefer so,meting that has a sheet attr on link<br>
&lt;bramus> … and other modifier to import, we have one for layer<br>
&lt;bramus> … in general would be careful to use hasehs for sth that is not dom id<br>
&lt;bramus> … confuses things<br>
&lt;florian> q?<br>
&lt;bramus> kurt: fragment already acceptd in prior discussion<br>
&lt;bramus> … mgiht need to be revisited<br>
&lt;bramus> … if fragment does work, much like acnhors you dont need a URL it means local<br>
&lt;florian> q+<br>
&lt;bramus> … this is building on that<br>
&lt;bramus> … there’s a precedent: if there is no file assume it is in the same doc<br>
&lt;bramus> … only thing doing that is anchors, which is excepction to a lot of things<br>
&lt;bramus> … if we do revisit fragment for this scenario, then we need to revisit for this<br>
&lt;bramus> … other syntax or attr … would feel inconsistsent to not do this<br>
&lt;bramus> noamr: wnated to say that it is different<br>
&lt;bramus> … fragmetns and svg clip path and shapes – there are precedents but they refer to the dom id<br>
&lt;bramus> … no prob with multidoc<br>
&lt;astearns> ack dbaron<br>
&lt;bramus> dbaron: from a URL design perspective the meaning of a fragment is generally specific to the mime-type of th resource<br>
&lt;fantasai> +1 dbaron<br>
&lt;bramus> … the idea that in a css file to refer to an @sheet can be sensible<br>
&lt;justinf> +1 as well<br>
&lt;bramus> … and in an HTML file they already refer to IDs and we should be very careful about changing that<br>
&lt;bramus> … I could imagine with an @sheet inside a style element, and then use the id of the style element<br>
&lt;justinf> fragments without a preceding URL refer to something in the HTML document already<br>
&lt;bramus> … one of the design principles here is the meaning of fragment in a URL is specificy to the mime-type<br>
&lt;emilio> q+<br>
&lt;bramus> kurt: makes sense<br>
&lt;bramus> … we do have a .css file in this example<br>
&lt;bramus> … but there is HTML and there is a mismatch witht he mimetype<br>
&lt;ydaniv> q+<br>
&lt;bramus> … great point<br>
&lt;noamr> +1, exactly, I have no problem with it inside CSS files<br>
&lt;astearns> ack matthieud<br>
&lt;bramus> matthieud: answer for emilio about old browser<br>
&lt;bramus> … that dnt udnerstand @sheet<br>
&lt;castastrophe> q+<br>
&lt;bramus> … how to resolve the rules inteh block<br>
&lt;emilio> ... So re. what happens for all browsers, are we going to lose all the rules<br>
&lt;bramus> … same solution with @layer can be applied<br>
&lt;emilio> ... but we could make like @layer where anything after is considered part of it<br>
&lt;emilio> ... so this looks a lot about @layer<br>
&lt;emilio> ... just with no notion of priority\<br>
&lt;fantasai> emilio: Concern is not only with what's in the block<br>
&lt;bramus> emilio: concern is not only what happens with contents of the blocks but older browser dont have concept of importing parts of a stylesheet<br>
&lt;bramus> … external parts would apply<br>
&lt;bramus> matthieud: doesnt work for ???<br>
&lt;bramus> emilio: but doesnt work for link either<br>
&lt;ydaniv> q-<br>
&lt;emilio> s/???/@import<br>
&lt;astearns> acj justinf<br>
&lt;emilio> ack justin<br>
&lt;emilio> justinf: Wanna comment on the fragment thing<br>
&lt;matthieud> I would have like an answer about the @layer vs @sheet though ?<br>
&lt;emilio> ... has been touched that the impolicit URL is the HTML document url<br>
&lt;emilio> ... being able to do about dom vs. stylesheet<br>
&lt;emilio> ... on the DSD case there could be multiple sheets<br>
&lt;emilio> ... and in order to do this we have to have a central resource<br>
&lt;emilio> ... and I'd be a bit wary of this<br>
&lt;emilio> ... there's also a question of external stylesheets with nested @sheets<br>
&lt;emilio> ... it's something I'd want to avoid, we're trying to avoid global resources like custom element names or what not<br>
&lt;emilio> ... so I wouldn't add another one<br>
&lt;astearns> ack florian<br>
&lt;emilio> florian: narrowly on this specific slide, as long as @sheet is something that exists I agree it'd be nice to use it on inline styles<br>
&lt;noamr> For the `#` - it can be `#:~:sheet=the-sheet-name` like text fragments<br>
&lt;emilio> ... slightly more generally I think this is quite complex and we need to move into the discussion of what this does for shadow dom<br>
&lt;emilio> ... yeah it's convenient to have one file with preprocessing<br>
&lt;emilio> ... http/2 deals with some of the multiple request complexity<br>
&lt;astearns> ack emilio<br>
&lt;justinf> for shadow DOM basic bundling is sufficient, IMO<br>
&lt;florian> s/use it on inline styles/use it on inline style elements<br>
&lt;emilio> ... so outside of shadow dom I don't see a lot of use for this<br>
&lt;bramus> emilio: agree with florian that main use case feels … basically about shadow dom. if you have no, you can bundle and call it a day<br>
&lt;bramus> … want to try a counter proposal tha tmight work<br>
&lt;bramus> … and doesnt need to add anything new<br>
&lt;bramus> … except 1 thing<br>
&lt;bramus> … what you really want is @import but without separate request to import into shadow dom<br>
&lt;bramus> … talked about removing constructbile stylesheet restircition in adoptable ones<br>
&lt;bramus> … if you have data-uri @import that you could import into SD you kinda get this behavior<br>
&lt;bramus> … not user friendly, but if use case is bundlers then they can prolly manage<br>
&lt;bramus> … idea would be to get the @import stylesheet and shadowroot.adopted.push(…)<br>
&lt;bramus> … and if you dont want that to aply to the doc, you could isable with a non-mathcing media in the elem<br>
&lt;justinf> q+<br>
&lt;bramus> … we have a lot of similar pieces that would be nice<br>
&lt;bramus> …  if use cases are narrow, e.g shadow dom and bundling<br>
&lt;bramus> … then you might be able to get away with this<br>
&lt;bramus> … has that been explored?<br>
&lt;bramus> q?<br>
&lt;justinf> isn't that unwinding the whole proposal, including the previous resolutions?<br>
&lt;emilio> yes<br>
&lt;astearns> ack castastrophe<br>
&lt;justinf> `@sheet` seems a lot simpler than data URI and changes to import to me<br>
&lt;emilio> castastrophe: just a question, trying to picture things in the design systems space<br>
&lt;emilio> ... how would you import multiple sheets, multiple `&lt;link>` or `@import`?<br>
&lt;emilio> kschmi: yeah you'd need multiple sheets or @import or both<br>
&lt;astearns> ack justinf<br>
&lt;emilio> justinf: Responding to emilio or florian... The basic @sheet to me is very simple<br>
&lt;emilio> ... there's no way currently to include an inert chunk of CSS<br>
&lt;emilio> ... turns out you can with @supports<br>
&lt;emilio> ... but @import + data uri + ... feels a lot more complex than @sheet<br>
&lt;emilio> ... The additional complexity is adding ways to reference these from inline styles<br>
&lt;emilio> ... I don't think that complexity applies to that part of the proposal<br>
&lt;emilio> FWIW `@import url("data...") not all;` doesn't seem /terribly/ complex to me<br>
&lt;emilio> kschmi: so re. shadow dom<br>
&lt;justinf> but then you need that `@import()` to 1) be inert, and 2) be importable as a separate sheet<br>
&lt;emilio> ... current mechanism are duplicate `&lt;link rel>` or inline styles or script-based adoptedStyleSheets<br>
&lt;emilio> ... so for declarative shadow DOM is not great<br>
&lt;emilio> ... If we support the standalone fragment we can support it for declarative shadow dom<br>
&lt;emilio> ... that's kinda why this is relevant to DSD<br>
&lt;emilio> ... solves that messy problem r/n<br>
&lt;noamr> q+<br>
&lt;emilio> ... big question justinf is concerned about is scoping<br>
&lt;justinf> q+<br>
&lt;emilio> ... which is an issue, might be the same as inheriting from parent<br>
&lt;emilio> ... lots of open issues, we have an explainer in MSEdgeExplainers<br>
&lt;emilio> ... big list of open issues, but key problem we're solving is inline styles with declarative shadow dom<br>
&lt;emilio> ... another solution for this would be declarative CSS modules<br>
&lt;emilio> ... `&lt;script type=css-module>` and `adoptedstylesheets=""`<br>
&lt;emilio> ... TAG pointed to `@sheet`<br>
&lt;emilio> ... seems this still has more issues<br>
&lt;emilio> ... If we could get this standalone fragment thing would be nice<br>
&lt;emilio> ... both seem good proposals, but I think there's a big demand to solve this<br>
&lt;emilio> ... so there's shared goals, but they can solve the same problem<br>
&lt;emilio> ... curious to see what the WG and developers prefer<br>
&lt;emilio> ... that was more or less it<br>
&lt;emilio> q+<br>
&lt;emilio> ack noamr<br>
&lt;justinf> noam +1<br>
&lt;emilio> noamr: When I see this whole thing I see it like an HTML problem and not a CSS problem<br>
&lt;emilio> ... You can fix this with shadow DOM if you have a fragment refer to an ID in your document<br>
&lt;emilio> ... it seems also a problem with script importing<br>
&lt;fantasai> s/ID/ID of a &lt;style> or &lt;link> element/<br>
&lt;emilio> ... maybe we can present this at WHATNOT<br>
&lt;fantasai> +1 noamr<br>
&lt;emilio> ... But I wonder if there are commonalities to importing style and script<br>
&lt;emilio> ... and there are solutions that could require less work<br>
&lt;emilio> kschmi: Yeah if there was a way like svg fragment you're right we wouldn't need @sheet for this<br>
&lt;justinf> the only issue with IDs with DSD is that we need a *global* ID to cross shadow root boundaries. But that's a DOM issue<br>
&lt;emilio> ... We could have an attribute<br>
&lt;emilio> noamr: you'd add a link pointing to the ID<br>
&lt;castastrophe> q+<br>
&lt;astearns> ack justinf<br>
&lt;emilio> justinf: re. the scoping, one of the reasons I was shaking my head with scoping<br>
&lt;emilio> ... we want to render instances, in a way that the root needs to hold the stylesheet of component a, but you don't want to emit them until you've found the first<br>
&lt;emilio> ... so I think we need some sort of global resource<br>
&lt;emilio> ... but I'd be very careful about choosing what global resource<br>
&lt;noamr> for bundling, you can have an external HTML file that has multiple &lt;style> elements with IDs and you refer to them<br>
&lt;emilio> ... but I agree with noamr that this is kind of an HTML issue, because IDs don't propagate across shadow boundaries<br>
&lt;bramus> emilio: wanted to ask whether other subresources have same nees<br>
&lt;bramus> … but tha t is what noam ended up asking<br>
&lt;astearns> ack emilio<br>
&lt;astearns> ac castastrophe<br>
&lt;astearns> ack castastrophe<br>
&lt;emilio> castastrophe: had a question about @sheet, the syntax makes me think that if I wanted to override a sheet namespace I would be able to<br>
&lt;emilio> ... with the fragment syntax it makes me feel like you can't<br>
&lt;emilio> ... if I declare another ID in the DOM it doesn't override the first<br>
&lt;emilio> ... what is the behavior here?<br>
&lt;emilio> kschmi: That's one of the open questions<br>
&lt;florian> q+<br>
&lt;emilio> ... @layer would add to it<br>
&lt;astearns> ack fantasai<br>
&lt;astearns> ack florian<br>
&lt;emilio> florian: I find the shadow dom use case very compelling<br>
&lt;emilio> ... more compelling than the other use cases<br>
&lt;emilio> ... if we agree to solve it with @sheet it motivates solving some of the `@sheet`s<br>
&lt;emilio> ... issues<br>
&lt;emilio> ... the way @sheet is imported seems problematic<br>
&lt;emilio> ... browsers doing different things for `url(#foo)` seems like a problem<br>
&lt;emilio> ... the overriding is question is a challenge as well<br>
&lt;castastrophe> q+<br>
&lt;emilio> ... the shadow dom use case seems the most compelling, the other ones seem nice<br>
&lt;emilio> ... if we decide to solve the shadow dom use case some other way, not sure we want `@sheet`<br>
&lt;justinf> this difference in behavior with legacy browser is always the case... I'm personally hoping that @sheet support can coincide with CSS imports support in Webkit and Gecko so that if you can import a stylehsheet you can also import an `@sheet`<br>
&lt;emilio> kschmi: Great points, I think the original proposal was about importing / bundling<br>
&lt;noamr> justinf: I think hash-fragments, e.g. in same-document links, cross shadow boundaries?<br>
&lt;emilio> justinf: this is an addon to JS import asserts in CSS modules<br>
&lt;emilio> ... you have a lot of JS modules which depend on small fragments on CSS<br>
&lt;emilio> ... but bundlers don't know how to deal with bundling CSS there<br>
&lt;emilio> ... that was my main motivation, you end up with lots of small CSS files otherwise<br>
&lt;emilio> ... was kinda hoping that if @sheet is simple enough it'd ship along CSS imports in webkit / gecko<br>
&lt;miriam> q+<br>
&lt;emilio> ... happens to be a simple polyfill for transforming to @import<br>
&lt;astearns> ack castastrophe<br>
&lt;justinf> transforming to @supports, not @import<br>
&lt;emilio> castastrophe: I see where you're coming from florian<br>
&lt;emilio> ... if we solve it for webcomponents my preference would be to solve it for native DOM solutions as well<br>
&lt;bramus> Big +1<br>
&lt;emilio> ... I'm doing so much transforming of code between the two systems, so it'd be nice to allow authors to just write it once<br>
&lt;astearns> ack miriam<br>
&lt;justinf> btw, CSS imports is mainly a feature that makes CSS more usable from JS defined components... it doesn't need to be web components or shadow DOM<br>
&lt;emilio> miriam: high level syntax thought, there was some mention of syntax looking similar to @layer, but funcitonality is entirely different<br>
&lt;emilio> ... I think it overlaps more with @scope<br>
&lt;justinf> q+<br>
&lt;noamr> +1<br>
&lt;emilio> q+<br>
&lt;emilio> kschmi: Yeah the way I think about @sheet is a separate file<br>
&lt;matthieud> actually yes I agree, @scope is closer to this than @layer<br>
&lt;emilio> ... @layer is a different cascade layer, and that's why you can have multiple layers and so on<br>
&lt;emilio> ... @sheet is only one definition per sheet, that kinda helps my mental model a bit<br>
&lt;emilio> matthieud: I agree that @scope is closer than @layer<br>
&lt;emilio> ack justinf<br>
&lt;astearns> ack justinf<br>
&lt;emilio> justinf: Wanted to comment, I wanted to make sure that this is not always associated with shadow dom and webcomponents<br>
&lt;emilio> ... having a way to import this seems useful for non-shadow-dom related use cases as well<br>
&lt;emilio> ... so I'm hoping this would be much broader<br>
&lt;bramus> (FWIW: I believe @layer was only mentioned in relation to what browsers do when they don’t support it: they discard the entire block.)<br>
&lt;emilio> ack emilio<br>
&lt;astearns> ack emilio<br>
&lt;bramus> emilio: want to suggest that if we are doing this we could bypass a lot of the fragment issues if we allow importing using a different syntad<br>
&lt;emilio> @import sheet(name)<br>
&lt;bramus> s/syntad/syntax<br>
&lt;bramus> emilio: that bypasses a lot of the questions about what the fragment means<br>
&lt;castastrophe> or both? @import url() sheet()<br>
&lt;florian> +1<br>
&lt;bramus> justinf: still seems to have the global namespace<br>
&lt;weinig> (not sure if this has been mentioned, or how relevant it is, but there is a some written thoughts on fragments here -> https://www.w3.org/TR/fragid-best-practices/)<br>
&lt;bramus> emilio: that’s kinda ???<br>
&lt;emilio> castastrophe: +1 to emilio, you could combine it with url and specify different sheets from that URL<br>
&lt;bramus> emilio: that wouldn have global namespace issues<br>
&lt;bramus> … because you arkimporting this sheet from that url<br>
&lt;bramus> justinf: depends on … declarative dom use case (missed)<br>
&lt;bramus> emilio: guess you could with  no URL you import the document or some smaller thing<br>
&lt;bramus> … if you ignore the improt and inline style hting, it still works for declarative shadow dom<br>
&lt;noamr> Perhaps "importing from inline" and "partially importing from a sheet" don't require the same solution?<br>
&lt;bramus> … do `@import url() sheet()`<br>
&lt;bramus> justinf: if you can do that, solves 99% of ht eproblems<br>
&lt;bramus> … if you can bundle all, you can do ahead of time and import later<br>
&lt;noamr> q+<br>
&lt;justinf> q+<br>
&lt;bramus> kurt: challenge with file specific syntax is what justin was saying – need to support same doc styles<br>
&lt;astearns> Zakim, close queue<br>
&lt;Zakim> ok, astearns, the speaker queue is closed<br>
&lt;bramus> … you want a high per site to paint auickly with styles<br>
&lt;bramus> … best option is not an external file<br>
&lt;bramus> … that is feedback i got from devs<br>
&lt;bramus> … "sure separte file is nice, but inline in html is powerful for first paint"<br>
&lt;astearns> ack noamr<br>
&lt;emilio> `&lt;style>@import url(..) sheet(..)&lt;/style>`<br>
&lt;bramus> noamr: seems like different problem?<br>
&lt;astearns> ack justinf<br>
&lt;emilio> justinf: wanted to clarify on `&lt;stlye>`. In a server component case you don't have all the components, they depend on the page<br>
&lt;emilio> ... something like an amazon product page is a canonical example<br>
&lt;emilio> ... could render millions of components<br>
&lt;emilio> ... I don't think any external file solution deals with that<br>
&lt;bramus> emilio: they are not exclusive<br>
&lt;bramus> … as noam was saying, having a specific syntax to import sheets and being able to import from an inline style seem like differnet<br>
&lt;bramus> justinf: agree<br>
&lt;bramus> … would love to see capabitliy in html<br>
&lt;bramus> emilio: ok<br>
&lt;bramus> … then we are in agreement<br>
&lt;bramus> florian: you emilio are proposing to solve with css syntax, not html<br>
&lt;bramus> emilio: i was proposing to have specific syntax for importing style sheet from a file<br>
&lt;bramus> … tha tdoes not avoid adding that fro m???<br>
&lt;bramus> florian: if you have @import url() sheet() it imports tehs eet fro,m the url<br>
&lt;bramus> … if you omit the url, its from the current file<br>
&lt;bramus> … if the curernt file is the html, then that is where you try and go find it<br>
&lt;bramus> emilio: or you could impor from url(#something) to refer to that style or link<br>
&lt;castastrophe> q+<br>
&lt;bramus> florian: the syntax you proposed not only is useful but fully replaces need for link rel=stylesheet and makes it not an html problem<br>
&lt;bramus> emilio: still need to define how to target a partciular element<br>
&lt;noamr> import url("#my-inline-style") sheet(my-sheet)<br>
&lt;bramus> castastrophe: if you are inside sd with import, do you have timport @import from sd or from parent?<br>
&lt;bramus> … does not exist right now<br>
&lt;bramus> noamr: url fragment are not ???<br>
&lt;bramus> astearns: should prolly close this for now<br>
&lt;emilio> noamr: URL fragments do cross shadow boundaries, like `&lt;a href="#foo">` doesn't look only inside its shadow tree<br>
&lt;bramus> … was mentionedthat this should be presented at whatnot<br>
&lt;bramus> … kurt, can you do that?<br>
&lt;bramus> kurt: yes<br>
&lt;bramus> astearns: and then we ahve issue of @sheet not being a spec<br>
&lt;bramus> … would you kurt be intereste to be an editor for that?<br>
&lt;bramus> kurt: yes<br>
&lt;emilio> s/kurt/kschmi/<br>
&lt;bramus> astearns: So I proposed to add kschmi as editor for css-cascade-7 to spec that<br>
&lt;bramus> … start with what we have not, and then extend to shadow dom and othe ruse cases and bring back to the group<br>
&lt;bramus> kschmi: sgtm<br>
&lt;bramus> TabAtkins: the number?<br>
&lt;bramus> astearns: taking that from fantasai that @scope is prolly done and to take 6 to CR<br>
&lt;bramus> TabAtkins: if 6 is ready for cr and 5 is in cr, then merge scope into 5<br>
&lt;bramus> … dont like many numbers, especially when its only 1 feature per number<br>
&lt;bramus> fantasai: we should get 4 in rec bc layers are shipping and 6 should move to cr and merge down contents of 5 into 6<br>
&lt;bramus> PROPOSED RESOLUTION: Add kurt as editor of css-cascade and work with current editors to figure out the number<br>
&lt;bramus> florian: IUC we resolved on adding @sheet syntax itself, but not on the importing part<br>
&lt;bramus> … regardless we have had enough debate about that that we should add an inline issue in the spec<br>
&lt;bramus> … that its a moving target<br>
&lt;bramus> astearns: editor’s discretion<br>
&lt;bramus> RESOLVED: Add kurt as editor of css-cascade<br>
&lt;bramus> astearns: let’s move on to shape issues<br>
&lt;justinf> thank you everyone!<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/11509#issuecomment-2622330858 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 29 January 2025 17:23:09 UTC