Re: [csswg-drafts] [css-nesting] Problem with mixing properties and selectors (#8249)

The CSS Working Group just discussed `[css-nesting] Problem with mixing properties and selectors`, and agreed to the following:

* `RESOLVED: Close no change`

<details><summary>The full IRC log of that discussion</summary>
&lt;fantasai> scribenick: fantasai<br>
&lt;fantasai> astearns: We have this one issue, so I want to set aside the question of feature detection and down-compat<br>
&lt;fantasai> ... and also set aside question of Option 3 vs other SASS-like syntaxes<br>
&lt;fantasai> ... and go directly to, are we on the right path on a SASS-like syntax<br>
&lt;fantasai> ... or should we consider some other type of syntax?<br>
&lt;fantasai> astearns: What I would like to do is look at the argument being made in this issue around the drawbacks of a SASS-like syntax<br>
&lt;fantasai> ... and make the strongest case that we can, without arguing against anything yet, without coming up with counter-arguments, just going with the strongest argument we can for "we're on the wrong path" and see if anyone on the call agrees we should be looking at alternatives at this point<br>
&lt;fantasai> ... plinss, does this sound like a fair way forward?<br>
&lt;fantasai> plinss: yes, but we have to discuss the drawbacks of existing SASS<br>
&lt;fantasai> astearns: I'm suggesting we identify the drawbacks, but don't argue them<br>
&lt;fantasai> ... come up with the strongest presentation of the drawbacks, before we tear them apart<br>
&lt;fantasai> ... no no counter-arguments yet<br>
&lt;fantasai> astearns: Issue is about SASS-like syntax vs something else (such as an at-rule)<br>
&lt;fantasai> ... plinss has identified 4 drawbacks for a SASS-like syntax<br>
&lt;fantasai> astearns: Issues with error-recovery<br>
&lt;fantasai> astearns: Restrictions on future-syntax<br>
&lt;fantasai> astearns: Doing something SASS-like, but not actually SASSy (concatenation)<br>
&lt;fantasai> astearns: Ideal syntax requires changes to parser model<br>
&lt;fantasai> astearns: With that summary, is there anything someone wants to add that would strengthen this list of concerns?<br>
&lt;fantasai> plinss: Want to clarify my position<br>
&lt;fantasai> ... I didn't like the proposed direction<br>
&lt;fantasai> ... but because I have concerns<br>
&lt;fantasai> ... I like how we're going, but I also think the at-rule approach has merits because it doesn't have the drawbacks<br>
&lt;fantasai> ... My other concern is that, I think we look at both issues, and we've said "it's not great but it's not that, but if it's an at-rule or SASS-like, we chose SASS-like"<br>
&lt;fantasai> ... I'm not sure we've actually looked at all the issues together, and asked, in aggregate, are we still on the right path<br>
&lt;fantasai> ... Rather than looking at each decision in isolation<br>
&lt;fantasai> ... I think the issues are manageable, any one of them is not a reason to reject; but together might be enough<br>
&lt;fantasai> ... I'm leaning towards at-rule because it's safer<br>
&lt;fantasai> ... once we go down path of SASS-like syntax, we're stuck with its drawbacks forever<br>
&lt;fantasai> astearns: Of everyone on this call, is there anyone who has the same concerns?<br>
&lt;plinss> https://github.com/w3c/csswg-drafts/issues/8249#issuecomment-1496776853<br>
&lt;fantasai> SebastianZ: Thread is long, can we point to the comment summarizing the concerns?<br>
&lt;fantasai> astearns: We can get into that, but we risk running into an isolated argument<br>
&lt;fantasai> SebastianZ: I can see the point that plinss is outlining<br>
&lt;fantasai> ... these are problems<br>
&lt;fantasai> ... and error-recovery is the most important one<br>
&lt;TabAtkins> q+ about error recovery<br>
&lt;fantasai> ... which would be no problem if we went the at-rule route<br>
&lt;TabAtkins> Zakin, shut up<br>
&lt;fantasai> plinss: Just want to confirm that everyone understands the issues, e.g. what do I mean by error-recovery problem<br>
&lt;fantasai> astearns: OK, let's going to details of error-recovery<br>
&lt;fantasai> ... but keep going with approach of making the strongest possible case<br>
&lt;fantasai> astearns: In my opinion, the worst bit of error-recovery problem is, the current proposal allows for rules to be dropped in error-recovery in a mixed selector-and-property syntax<br>
&lt;fantasai> ... that would not otherwise be dropped<br>
&lt;fantasai> ... so the order in which you declare your properties and nested selectors<br>
&lt;fantasai> ... can cause parts of the stylesheet to be ignored<br>
&lt;fantasai> plinss: If you have a rule that's dropped, it can eat a following declaratoin<br>
&lt;fantasai> ... normally within a declaration block, we're in declaration recovery<br>
&lt;TabAtkins> q+<br>
&lt;fantasai> ... if we mix with rules, they have different error-recoery behavior<br>
&lt;astearns> ack TabAtkins<br>
&lt;fantasai> ... if you're recovering from a declaration, but you're parsing a rule, you're going to eat the next declaration<br>
&lt;fantasai> TabAtkins: went through details of error-recovery<br>
&lt;fantasai> ... if talking about eating of things unexpectedly, there are two potential ways<br>
&lt;fantasai> ... One is an old browser seeing nesting code<br>
&lt;fantasai> ... firstly, this will wreck your stylesheet anyway<br>
&lt;fantasai> ... You can construct an artificial scenario where optional things are nested, but it's very narrow and strange<br>
&lt;fantasai> ... usually necesary rules are written there, if you lose them your page is broke<br>
&lt;fantasai> ... The fact that the following declaration might get eaten in addition to rules being dropped, you have a problem anyway<br>
&lt;fantasai> TabAtkins: the other concern is in a browser that does understand nesting, what can happen if you have invalid rule followed by a declaration<br>
&lt;fantasai> ... or invalid declaration followed by a rule<br>
&lt;fantasai> ... details in the post<br>
&lt;fantasai> ... but with parsing change that's already in the Syntax spec<br>
&lt;fantasai> ... where a nested rule -- if you see a semicolon in the prelued (before {}), we immediately stop and throw it out<br>
&lt;fantasai> ... with that change, it's a stable, predictable amount of things being thrown out<br>
&lt;fantasai> ... if we parse an invalid rule, we read until we get to the semicolon after the rule<br>
&lt;fantasai> ... restart, try to parse as a rule, and then [missed]<br>
&lt;fantasai> ... The other way around, invalid declaration followed by invalid rule<br>
&lt;fantasai> ... we first parse until invalid declaration ends (;) , then restart as a rule but abort on the semicolon again anyway<br>
&lt;fantasai> ... and then parse the rule afterwards<br>
&lt;fantasai> ... There's a small corner-case around custom properties, because you can put anyting in them and might have something that looks like a rule inside, or [missed2]<br>
&lt;fantasai> ... but even an at-rule based syntax will interfere with custom properties in that way, so either way we have a problem<br>
&lt;fantasai> ... if you do something weird enough<br>
&lt;fantasai> TabAtkins: so in a nesting-capable browser, there's very little possibility of eating a following declaration by accident<br>
&lt;fantasai> ... and in nesting-incapable browser, you have major problems anyway; and you should be putting your declarations at the top anyway, which avoids all such problems<br>
&lt;fantasai> astearns: wanted to avoid counter-arguments ...<br>
&lt;fantasai> ... SebastianZ, enough explanation?<br>
&lt;fantasai> SebastianZ: yes<br>
&lt;fantasai> plinss: I'd like to counter<br>
&lt;fantasai> ... Nothing Tab said that's incorrect, except we differ on relative importance<br>
&lt;fantasai> ... Obviously if someone buys into nesting and they go all-in, yes the entire stylesheet is b0rked and need not go into details<br>
&lt;fantasai> ... but CSS is designed for progressive enhancement<br>
&lt;fantasai> ... a lot of websites, it isn't a single person writing a stylesheet; all aggregated together<br>
&lt;fantasai> ... you might have one person sprinkling a little nesting here and there<br>
&lt;dbaron> Scribe+ dbaron<br>
&lt;fantasai> ... and they are very likely to not read the spec and know that nested rule should go last<br>
&lt;fantasai> ... and might end up dropping a significant amount of a declaration<br>
&lt;jensimmons> q+<br>
&lt;fantasai> ... and it's also entirely possible that they won't see that, because they're on a modern machine, and not on old low-powered device<br>
&lt;TabAtkins> Again the nested rule is *also* getting dropped. Page is already broken.<br>
&lt;fantasai> ... so I think the likelihood is higher than Tab thinks<br>
&lt;fantasai> plinss: Wrt browsers that do support nesting, I agree that the current approach is robust except wrt custom properties<br>
&lt;fantasai> ... my concern is what happens in the future? If we want to add some new capability, new combinator or other strange syntax<br>
&lt;fantasai> ... might restrict ourselves from what we'd do otherwise, or have a risk of some problems<br>
&lt;astearns> ack fantasai<br>
&lt;fantasai> astearns: that's example of how things are tangled up<br>
&lt;dbaron> fantasai: I wanted to address question of downlevel clients and progressive enhancement<br>
&lt;dbaron> ... I think authors will adapt practice of putting nested rules after declarations, generally what they do already.  Not too concerned about that case.<br>
&lt;dbaron> ... Usually not going to be doing this in progressive enhacement way, and if so follow best practice.<br>
&lt;dbaron> ... more likely to see nested rules inside of @-rules.<br>
&lt;dbaron> ... unlikely to see progressive enhancement of bare nested rules followed by a declaration.  Not too worried about that case.<br>
&lt;matthieudubet> q+<br>
&lt;fantasai> astearns: when I see ppl using PostCSS examples, I immediately found declarations following after rules, it's common<br>
&lt;fantasai> plinss: I agree the risk is small, percentage is low, and web is vast<br>
&lt;fantasai> ... can still affect millions of people<br>
&lt;astearns> ack jensimmons<br>
&lt;fantasai> jensimmons: I have a question, because even though this issue is very long, there's not a simple, clear explanation that I could find of what gets eaten.<br>
&lt;fantasai> ... so here's the question<br>
&lt;fantasai> ... could someone very simply explain what gets eaten?<br>
&lt;TabAtkins> here's the maximum dangerous situation: `&lt;new-wacky-property-syntax>: {...} more-stuff;`. If they write this invalidly, or use in a Nesting-capable browser that doesn't understand the new syntax, what's the maximum damage?<br>
&lt;fantasai> ... perhaps focused on borwsers that do support nesting<br>
&lt;fantasai> plinss: in a browser that does support nesting, very little chance of things getting mis-eaten, except custom properties<br>
&lt;fantasai> ... bigger concern is down-level clients<br>
&lt;fantasai> ... becaue what gets eatin is a rule and the following declaration<br>
&lt;fantasai> ... if I start a rule, followed by a declaration, and the browser doesnt' understand that the rule is a rule and parse it as such<br>
&lt;fantasai> ... it will go into declaration error-recovery, and eat the rule *and* the next declaration (up to the semicolon)<br>
&lt;fantasai> jensimmons: And in browsers that do support nesting, something that gets eatn?<br>
&lt;matthieudubet> q-<br>
&lt;fantasai> astearns: only in custom properties where the custom property value is using a brace<br>
&lt;fantasai> jensimmons: So if using nesting, and the thing they nest is something that doesn't make sense e.g. mispell the selector<br>
&lt;matthieudubet> q+<br>
&lt;TabAtkins> Damage is: since decl parsing failed, we restart as rule. We parse until the {}, and stop. Then we'll start parsing the stuff *after* the {} fresh. It's *theoretically possible* for this to be mistaken as a valid declaration or rule, rather than the suffix of an invalid declaration. But as long as we (the CSSWG) only design top-level {}-in-declarations to be the whole value, this isn't a problem.<br>
&lt;fantasai> ... what happens to the rules after that nesting thing?<br>
&lt;fantasai> astearns: I believe we're ok. Malformed thing gets dropped, and in browser that supports nesting everything after the dropped rule is retained<br>
&lt;fantasai> ... right?<br>
&lt;fantasai> plinss: I don't think there's a situation where we drop a rule [...]<br>
&lt;fantasai> ... what gets dropped is a declaration that doesn't need to be dropped<br>
&lt;fantasai> jensimmons: in browsers that don't support nesting<br>
&lt;SebastianZ> q+<br>
&lt;fantasai> plinss: right. Also in browsers that do, but in that case much more of a corner case. But in downlevel browsers much more common<br>
&lt;fantasai> jensimmons: so in Nesting-supported browsers, would only have a problem in malformed case or a particular strange custom property value<br>
&lt;fantasai> TabAtkins: After nesting is supported, it's not possible to eat a following declaration after anything invalid<br>
&lt;fantasai> ... but if something is in valid, we might parse as a rule and the leftover stuff (that we didn't get to) could maybe be interpreted as a declaration<br>
&lt;fantasai> ... but we shouldn't need to introduce such constructs<br>
&lt;fantasai> plinss: Something that would have been interpreted as a preceding rule, you wind up with the tail end of that interpreted as another declaration or rule.<br>
&lt;fantasai> ... agree that's a corner case<br>
&lt;fantasai> plinss: In the future, we might end up introducing problems<br>
&lt;fantasai> TabAtkins: we need two restrictions, one which is already in the spec, to avoid that<br>
&lt;astearns> ack matthieudubet<br>
&lt;fantasai> matthieudubet: If we mandate in the nesting syntax to have declarations first, then style rules, so you can't mix, don't we get rid of the issues?<br>
&lt;fantasai> matthieudubet: since we know we can't mix, we don't have the issue<br>
&lt;fantasai> matthieudubet: this is similar to Option 4, two blocks, but you don't write the braces<br>
&lt;fantasai> matthieudubet: declarations first, and style rules after<br>
&lt;fantasai> plinss: There's no rule for behavior that will change existing browers<br>
&lt;fantasai> ... so even if we say it's invalid to put a declaration later, an older browser will be in declaration mode<br>
&lt;fantasai> matthieudubet: but there's less risk of this happening, because nobody would want to write such a thing (since not supported in new browsers either)<br>
&lt;fantasai> ... it's the same error-recovery, but you mitigate the risk of having this in actual style sheets<br>
&lt;jensimmons> q?<br>
&lt;fantasai> plinss: I think that's a valid approach... not sure that restriction on the SASS-like syntax is worth the benefit<br>
&lt;fantasai> ... but it is a viable path<br>
&lt;astearns> akc SebastianZ<br>
&lt;emilio> q+<br>
&lt;fantasai> SebastianZ: So if I understnad correctly, authors could put semicolon after the rule, and the next declaration wouldn't get eaten<br>
&lt;fantasai> TabAtkins: correct<br>
&lt;astearns> ack SebastianZ<br>
&lt;fantasai> SebastianZ: So just for clarification, one could use that to support all the browsers that don't support nesting<br>
&lt;jensimmons> q+<br>
&lt;fantasai> ... of course they're still skipping the nested rule, but at least we don't have the next declaration gettin eaten<br>
&lt;astearns> ack emilio<br>
&lt;fantasai> plinss: We could mandate a semicolon after nested rules, to force doing that everywhere<br>
&lt;fantasai> emilio: I think I like the declarations to be forced before<br>
&lt;fantasai> ... especially since the behavior of interleaving is the same as if they were sorted before anyway<br>
&lt;fantasai> ... if that satsifies everyone, then I think it's best<br>
&lt;fantasai> ... mostly because that way we don't have the weird problem of explaining<br>
&lt;fantasai> ... you put this after the nested rule, but the browser created an anonymous rule that put all teh declarations first<br>
&lt;fantasai> ... and acts as if you had written it before<br>
&lt;fantasai> ... so I think that might be nice<br>
&lt;TabAtkins> that's the parser switch that all the impls hated before...<br>
&lt;astearns> ack jensimmons<br>
&lt;fantasai> +1 emilio, this clarifies the cascade<br>
&lt;fantasai> jensimmons: I dont' like the idea of requiring that declarations go before nested rules<br>
&lt;fantasai> ... like plinss says, people jam CSS into things all over the place<br>
&lt;fantasai> ... it will make things less useful<br>
&lt;emilio> q+<br>
&lt;fantasai> ... and I always prefer to go for the better choice long-term and deal with limitations short-term when redesigning language<br>
&lt;fantasai> jensimmons: wrt transition, my sense is that majority of authors won't use Nesting for 3-4 years<br>
&lt;fantasai> ... those who do use it sooner, what I have been seeing is that they're using a preprocessor to do it<br>
&lt;fantasai> ... so writing their own CSS nested, and then using some automated stack to process it back out into old-school CSS<br>
&lt;fantasai> ... similar to using SASS<br>
&lt;fantasai> ... I think that might really take off, the tools ppl build for that will be popular<br>
&lt;TabAtkins> in particular, "no properties after rules" means at some point we need to decide we're "in rules". This requires some way of detecting "oh i tried to parse this as a prop but failed, looks like a rule" that won't misfire in weird cases.<br>
&lt;fantasai> ... and they will preprocess it for older browsers<br>
&lt;TabAtkins> the end result is actually *at least* as complex as today, possibly more<br>
&lt;fantasai> ... I don't think there will be an epidemic of ppl writing progressive nested rules, they're too lazy to do that<br>
&lt;fantasai> ... they already don't think about progressive enhancement nearly enough<br>
&lt;astearns> eck emilio<br>
&lt;fantasai> emilio: Reason I think this restriction is nice, not just for parsing, but let's say you don't know how nesting is specced<br>
&lt;astearns> q+<br>
&lt;TabAtkins> q+<br>
&lt;fantasai> ... you put media query inside and then more declarations at the bottom<br>
&lt;fantasai> ... that won't work like you expect<br>
&lt;astearns> ack emilio<br>
&lt;astearns> q--<br>
&lt;fantasai> ... because the declarations are shifted up, and in some cases not a problem but I'm sure it will confuse people<br>
&lt;fantasai> jensimmons: You mean, they dont' cascade as expected?<br>
&lt;fantasai> emilio: right<br>
&lt;fantasai> ... the rules inside the @media will be later in cascade order than the declarations outside @media but after it<br>
&lt;fantasai> ... I would find it confusing if I didn't know internally how it works<br>
&lt;fantasai> ... same for dropping bare declarations inside MQ and stuff, which we resolved they would be put into an anonymous rule at the front<br>
&lt;fantasai> ... if you don't know that they get moved, it's super confusing<br>
&lt;jensimmons> q-<br>
&lt;fantasai> ... that they apply as if they're at the top<br>
&lt;jensimmons> q+<br>
&lt;fantasai> ... so I think that would be a good restriction not just for the transition<br>
&lt;matthieudubet> yes it's also more obvious that the anonymous rule is after any declarations<br>
&lt;matthieudubet> than*<br>
&lt;fantasai> ... I think it's more understandable for anyone using nesting without knowing the details of the spec<br>
&lt;astearns> q- later<br>
&lt;fantasai> TabAtkins: no declarations allowed after rules is exactly a parser-switch of the kind the WG disliked<br>
&lt;fantasai> ... and there's two ways we could possibly do it<br>
&lt;fantasai> ... 1. We parse as today, you'll parse declarations properly but throw them out<br>
&lt;fantasai> ... but this means some garbage rule might be ????<br>
&lt;emilio> q+<br>
&lt;fantasai> ... 2. We do a stronger parsing switch, where we have a mode switch that changes how things are parsed<br>
&lt;astearns> s/garbage rule might be ????/garbage comment might be parsed as a rule/<br>
&lt;fantasai> ... this is more dangerous, might be possible to trigger this mode unexpectedly<br>
&lt;fantasai> ... and that's more complicated for us to be careful around in the future<br>
&lt;fantasai> ... so I don't think there's any actual benefit for instituting a parser switch<br>
&lt;astearns> q- later<br>
&lt;astearns> zakim, close queue<br>
&lt;Zakim> ok, astearns, the speaker queue is closed<br>
&lt;fantasai> TabAtkins: [something that went around too many times to capture]<br>
&lt;astearns> ack TabAtkins<br>
&lt;fantasai> plinss: I think we're getting off into the weeds of trying to mitigate these issues, all I'm asking for is a sanity check<br>
&lt;fantasai> ... if we look at all these issues, is it worth continuing down this path?<br>
&lt;fantasai> ... if so, we can continue to hash out the issues<br>
&lt;fantasai> astearns: Has anyone on the call been convinced that we should reconsider the path that we're on?<br>
&lt;astearns> ack jensimmons<br>
&lt;fantasai> ... if plinss is the only one, then perhaps we close this issue and open new issues about each individual small issue within the SASS approach<br>
&lt;fantasai> jensimmons: I think the fact that declarations that come after a rule are earlier in the cascade being earlier in the cascade<br>
&lt;fantasai> ... should add to the list<br>
&lt;fantasai> ... I'm more concerned about that that the other things<br>
&lt;fantasai> ... I don't believe we should throw out the declarations that come after the rules<br>
&lt;TabAtkins> ("declarations after rules" is an issue with any syntax, it's not specific to any one unless we totally prevent mixing syntactically)<br>
&lt;fantasai> ... I would prefer we investigate making the cascade *not* resorted<br>
&lt;fantasai> ... if that's absolutely impossible, then we have to teach it as "it's going to be confusing in the cascade, so sort to the top, this is the best practice"<br>
&lt;astearns> ack fantasai<br>
&lt;Zakim> fantasai, you wanted to support emilio's point<br>
&lt;jensimmons> q+<br>
&lt;plinss> q+<br>
&lt;astearns> ack emilio<br>
&lt;fantasai> emilio: I think the general approach we're taking is preferable as well<br>
&lt;fantasai> ... regarding Tab's comment<br>
&lt;fantasai> ... we have similar parser switches, e.g. @import rules not allowed after other rules<br>
&lt;fantasai> ... could easily implement as keep parsing as before, but throw out the declarations<br>
&lt;fantasai> ... user-wise, as a CSS author, I would prefer if this worked<br>
&lt;fantasai> ... and declarations were directly in the cascade<br>
&lt;fantasai> ... but if we're not doing that, which is also reasonable if we're concerned about perf or something, I think the restriction is not a huge deal<br>
&lt;TabAtkins> (note that Sass allows decls after rules, with exactly the same behavior as what we're specifying - all glommed together into the parent rule, preceding nested rules)<br>
&lt;fantasai> ... we can discuss in another issue at another point in time<br>
&lt;fantasai> astearns: I wanted to ask again, given the cluster of issues around the SASS-like syntax, are we convinced we're on the wrong path and should investigate alternative syntaxes?<br>
&lt;emilio> TabAtkins ugh, I think that's dumb :/<br>
&lt;fantasai> jensimmons: I think we're still going in the right direction, especially considering what we've heard from authors about what they want<br>
&lt;emeyer> I don’t know if we’re going the wrong direction, but I do think more investigation is needed.<br>
&lt;fantasai> astearns: My proposal is that we close this issue no change<br>
&lt;fantasai> ... and take each of these concerns and move them to other existing issues or new issues<br>
&lt;fantasai> ... so that we can work through solutions to these issues as much as we can in the framework we have<br>
&lt;emeyer> +1 to astearns’ proposal<br>
&lt;fantasai> ... would that be acceptable, plinss ?<br>
&lt;emilio> TabAtkins: but ok, I guess if authors are fine with that and sass doesn't have a lot of reports about that behavior... fine?<br>
&lt;fantasai> plinss: Yes. I just wanted us to look seriously at the big picture. Satisfied to go with the group consensus<br>
&lt;fantasai> ... But if we later find more issues, and suggest to go back and reconsider, we should reconsider<br>
&lt;fantasai> ... not say "despite new information, not going to reconsider"<br>
&lt;fantasai> ... at-rule we could deploy now, without working through these issues<br>
&lt;fantasai> ... but I'm not going argue this point anymore until new information comes up<br>
&lt;fantasai> astearns: proposed to clsoe this monster issue no change<br>
&lt;fantasai> ... and follow through on each individual issue on separate issues<br>
&lt;fantasai> ... any objections?<br>
&lt;fantasai> +1<br>
&lt;fantasai> RESOLVED: Close no change<br>
&lt;fantasai> ACTION: astearns to make sure smaller issues are followed up on<br>
&lt;fantasai> plinss: one other caveat, there might be someone else in the larger group that shares concerns, so maybe poll everyone?<br>
&lt;fantasai> astearns: I'll add a comment to the issue, here is what we resolved and why, and ppl can comment<br>
&lt;fantasai> plinss: I just want to make sure we make the right decision in the right way<br>
&lt;fantasai> INSERT replacing "ack fantasai" with -<br>
&lt;TabAtkins> new room topic?<br>
&lt;fantasai> fantasai: Stepping back to Plinss's question, I think we are on the right path. Considering developer ergonomics vs the downsides of this approach<br>
&lt;fantasai> fantasai: I think the best we can do is continue on this path and try to address the issues as we can<br>
&lt;fantasai> fantasai: I also wanted to support emilio's point about the cascade effects being confusing<br>
&lt;fantasai> fantasai: I think we should either make declarations after rules invalid (as emilio suggested) or sort them in the cascade as specified somehow (as jensimmons suggested)<br>
</details>


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


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

Received on Wednesday, 12 April 2023 16:04:02 UTC