[CSSWG] Minutes Telecon 2025-08-06 [css-color-adjust][css-anchor-position][web-animations][css-multicol][css-env][css-pseudo][css-page-floats][css-inline]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 please respond by starting a new thread
   with an appropriate subject line.
=========================================


CSS Color Adjust
----------------

  - RESOLVED: Republish Color Adjust

Add a `::interest-hint` pseudo element to interest invokers
-----------------------------------------------------------

  - RESOLVED: Pursue this functionality in HTML. Close this issue.
              (Issue #12437)

CSS Anchor-Position
-------------------

  - RESOLVED: All percentages (insets, sizes) resolve against the
              effective containing block (no inconsistency) (Issue
              #10861: Introduce "document containing block" for some
              purposes?)
  - The solution for issue #12371 (Define precisely when anchor recalc
      points happen, and which offsets it captures) is potentially
      editorial and needs to be investigated a bit further.
      Directionally, the proposal is anchor positioned boxes
      recalculate layout for all changes that might affect their
      size/position except scrolling except for special recalculation
      points.

Web Animations
--------------

  - RESOLVED: Make Animation Trigger related things readonly (Issue
              #11918: Should AnimationTrigger properties be readonly?)

CSS Multicol
------------

  - RESOLVED: Adopt syntax 'columns: [<column-width>||<column-count>]
              [/<column-height>]? (Issue #12050: `columns` shorthand
              with `column-height` and `column-wrap`)
  - RESOLVED: Shorthand 'columns' also resets column-wrap (if it
              exists) (Issue #12050)

CSS Env
-------

  - RESOLVED: Don't use env() for this. Use an @page descriptor roughly
              as proposed by dholbert; work out details in the issue.
              (Issue #11395: Expose unprintable areas via CSS)

Pseudo/Page Floats/Inline
-------------------------

  - RESOLVED: Accept Elika's bullet points in the last comment:
              https://github.com/w3c/csswg-drafts/issues/8842#issuecomment-2762607744
              (Issue #8842: Float and first-letter pseudo-element
interaction missing from the latest specs)

===== FULL MEETING MINUTES ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2025Aug/0000.html

Present:
  Rachel Andrew
  Tab Atkins-Bittner
  David Awogbemila
  Kevin Babbitt
  Oriol Brufau
  Kurt Catti-Schmidt
  Emilio Cobos Álvarez
  Sam Davis
  Yehonatan Daniv
  Elika Etemad
  Javier Fernandez
  Robert Flack
  Mason Freed
  Diego Gonzalez
  Hoch Hochkeppel
  Daniel Holbert
  Roman Komarov
  Una Kravets
  Chris Lilley
  Alison Maher
  Eric Meyer
  Florian Rivoal
  Alan Stearns
  Miriam Suzanne
  Lea Verou
  Sam Weinig
  Sebastian Zartner

Scribe: fantasai

Administrivia
=============

  <fantasai> Several people missed the gap breakout. Check out the
             minutes.
  <fantasai> Survey is out wrt masking prefs for TPAC
  <fantasai> Paris F2F is soon! REGISTER IN THE WIKI
  <TabAtkins> https://wiki.csswg.org/planning/paris-2025
  <fantasai> Tab is trying to make reservations.
  astearns: Even if you're not in person, please register your
            availability in the wiki for virtual participation.

Color Adjust
============
  scribe: emilio
  scribe's scribe: fantasai

Publication
-----------
  github: https://github.com/w3c/csswg-drafts/issues/6900#issuecomment-3145806082

  alisonmaher: we we wanted to republish color adjust
  fantasai: what's changed?
  alisonmaher: removal of special handling of system colors
  alisonmaher: emulation support for forced-colors
  alisonmaher: updated the properties that apply
  alisonmaher: and changed the fallback logic
  <ChrisL> https://www.w3.org/TR/2025/CRD-css-color-adjust-1-20250812/#changes
  astearns: questions / concerns?

  RESOLVED: Republish Color Adjust

Add a `::interest-hint` pseudo element to interest invokers
===========================================================
  github: https://github.com/w3c/csswg-drafts/issues/12437

  masonf: re. interest invokers, we have some props to control the
          delay, pseudo classes (open issue)
  masonf: the idea here is to add a pseudo-element as a `<button>` with
          invokers, only for interestfor and when the element has
          `content`
  masonf: this is generically useful but specially useful for
          touchscreens
  masonf: so you can just tap on it
  masonf: should be styled like a button
  masonf: tentative name is `::interest-hint` or `::interest-button`
  masonf: number of open questions
  masonf: one is name
  masonf: another is what kind of pseudo-element is it (tree abiding,
          fully stylable, something else?)
  masonf: should there be a way to put it before the originating
          element rather than ::after
  masonf: some others after prototyping this
  masonf: this is a button that can be originated by a button
  masonf: so button-in-button which is a no-no in a few questions
  masonf: another is focusability
  masonf: similar to those there's a question about how to handle click
          of them
  <fantasai> ::interest-button seems clearer, ::interest-hint feels
             like it could be the hint card
  masonf: because of all these questions
  masonf: maybe this is an html feature
  masonf: so you have a button with a toggleinterest command or so
  masonf: not sure how much time we have to dig into it

  astearns: may be better to start with html?
  emilio: Was going to ask about that, this feels like a feature that
          is more generically useful.
  <lea> +1
  <lea> (to emilio)
  emilio: A pseudo-element for this feels oddly specific, especially if
          conditional on the element. What triggers creation, is it all
          elements, only elements that can trigger a popover, something
          else?
  emilio: Feels like an HTML solution that can toggle interest feels
          more generic to me, and less open questions.

  lea: agree with emilio, this feels overfit to me, I'd rather expose
       the right primitive to authors rather than special-casing that
       particular interaction
  TabAtkins: having tried to implement, it's very difficult to get right
  TabAtkins: don't want to put the burden on authors
  TabAtkins: bikeshed specs do it badly
  TabAtkins: so fixing it properly seems worth it
  lea: agree it should be easier, not sure we should special-case it
       for interest invokers like that
  lea: but yeah let's figure out what's making it so hard
  TabAtkins: the difficulty is that there's tons of things that can
             interact with this transient interest
  TabAtkins: plus all the a11y tree interactions
  TabAtkins: not sure there are primitives that we could make much
             easier
  TabAtkins: for something that's so common and so useful
  TabAtkins: it's worthwhile to special-case

  masonf: command/commandfor feels pretty easy for an author
  masonf: the ua could know the right relations from that
  masonf: so should be easy
  masonf: almost dropped the issue from the agenda, seems like the
          prevailing sentiment is that it belongs in html
  <TabAtkins> (My big fear is that when we try to genericize these
              sorts of interactions too much, we run into the issues
              that CSS Toggles had - they're just *too* generic, and
              actually need pretty specific handling to do right.)

  lea: related, we have a parallel issue to make ::tooltip stylable
  lea: many of these use cases are covered by that
  lea: also we see over and over that any ua-generated ui needs to be
       customizable
  lea: I understand the pseudo makes it styleable but limits what you
       can do
  lea: e.g. can't do inline svg
  lea: if we add this feature I can see many cases that it should serve
       but shouldn't
  lea: that's why I suggested decomposing it
  <fantasai> +1 to emilio / lea / masonf

  masonf: should we resolve on this not being in CSS?
  astearns: would like to see html solution, but you file it?
  masonf: anyone would object against this?
  <fantasai> PROPOSED: Pursue this functionality in HTML
  <masonf> +1

  RESOLVED: Pursue this functionality in HTML. Close this issue.

CSS Anchor-Position
===================
  scribe: fantasai
  scribe's scribe: TabAtkins

Introduce "document containing block" for some purposes?
--------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10861#issuecomment-3014425000

  TabAtkins: If you have an abspos that has its CB generated by a
             scroller, right now, it's CB is like the ICB -- a
             viewport-sized box anchored to the origin
  TabAtkins: This is not great in many case, so we had adopted a
             proposal to adopt a CB approximating the scrollable area
  TabAtkins: Ian and I thought that percentages should still resolve
             against this new CB
  TabAtkins: fantasai thought that was weird and inconsistent so
             thought we shouldn't do that, and be consistent
  TabAtkins: Ian and I reviewed, and couldn't remember why we wanted
             width/height to resolve against the scrollport when the
             rest of the CB is the entire scrollable area
  TabAtkins: So we're ok with resolving on all percentages resolving
             against the effective containing block

  RESOLVED: All percentages (insets, sizes) resolve against the
            effective containing block (no inconsistency)

Define precisely when anchor recalc points happen, and which offsets
    it captures
--------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/12371

  TabAtkins: We have a concept in anchor positioning where we can't
             always track the exact position of the anchor, because if
             it is in different scrolling context then that can get
             janky
  TabAtkins: So we define specific points in time when we do go and
             look for the actual scroll offsets to get accurate
             positions for layout
  TabAtkins: We remember those, and if you scroll after that, you lose
             the connection
  TabAtkins: There's one spot that Emilio thought should add, a
             recalculation point, is when your anchor references change.
  TabAtkins: Agree that's a missing point
  TabAtkins: If there's more here, I would agree with Emilio, but at
             the minimum we should add anchor reference changing as a
             scroll recalculation point
  astearns: Further question on whether you need to recalc when the
            layout changes.
  TabAtkins: That should be implicit in the spec already... only scroll
             positions that we don't live-respond to

  fantasai: I think my question is should we be defining this in the
            opposite direction?
  fantasai: so we say what we don't pay attention to (scrolling) rather
            than what we do (several things)
  fantasai: lots of things to include that you might want to respond
            to. mainly we just want to say that it doesn't respond to
            scrolling.
  fantasai: if you change the layout of the anchor itself, that
            recalcs the anchor box - positioned element might need to
            resize, etc.
  fantasai: if the CB changes, etc.
  fantasai: I'm assuming all of these things make it become invalid,
            otherwise your layout wont' make sense
  TabAtkins: Layout changes are definitely intended to already be
             captured live. If spec doesn't make that clear, I'll
             clarify
  TabAtkins: I can consider flipping the definition, but do what to be
             careful about what we require things to do.
  TabAtkins: Right now allow list where you definitely remember changes
             is a good approach... but a lot of the things you listed
             should be implied.
  TabAtkins: but can take a resolution on that and make sure spec
             reflects it
  fantasai: So what are the exceptions that you don't do relayout for?
  TabAtkins: You don't respond to scroll positions, except as defined
             where you refresh those anchors.
  TabAtkins: Layout refreshes everything. Should invalidate everything.
             But as long as layout isn't changing, we should only
             respond to scrolling at particular spots as defined.
  fantasai: [explains why the spec is confusion]
  TabAtkins: Ok, sounds like I should clarify the spec.

  PROPOSED: Anchor positioned boxes recalculate layout for all changes
      that might affect their size/position except scrolling except for
      special recalculation points.
  TabAtkins: Need to think about it a bit, but I think that's probably
             right.
  TabAtkins: Let's come back if anything more than editorial changes is
             needed.

Web Animations
==============

Should AnimationTrigger properties be readonly?
-----------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11918

  flackr: If we make the objects you get from JS for AnimationTrigger
          writeable, then it requires introducing complexity of knowing
          when to take changed values from style vs when author has
          overwritten and need to take that.
  flackr: So proposal is to make them readonly
  flackr: This way if you get a CSS trigger, we will always track
          updates to style
  flackr: and don't need to track whether developer has changed
          behavior through JS object
  flackr: Follow conventions for modifications to animations
  <kbabbitt> +1
  <ydaniv> SGTM
  astearns: Seeing agreement in the issue. Anyone with concerns?
  <TabAtkins> +1
  astearns: Proposed to make these properties readonly
  flackr: applies to class of trigger-related things

  RESOLVED: Make Animation Trigger related things readonly

CSS Multicol
============

`columns` shorthand with `column-height` and `column-wrap`
----------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/12050

  rachelandrew: Need to decide what to do with 'columns' shorthand and
                new properties
  rachelandrew: Syntax we're proposing is in my last comment on the
                issue -- should we add column-height, and how do we
                represent it unambiguously
  <TabAtkins> Looks good to me. Always unhappy having to use a /, but
              it's needed here.
  fantasai: LGTM, with Oriol's fixes
  florian: Seems fine to me. If we need column-wrap property...
           probably should cascade together?
  fantasai: we could say that if column-wrap exists, it's reset-only by
            the longhand
  astearns: If it goes to the shorthand, can extend it later
  rachelandrew: yes
  astearns: if we do need it in the shorthand, we can put it in after
            column-height probably
  florian: I don't think the proposal says you reset colum-wrap right
           now, is that okay?
  fantasai: We can resolve on both.
  rachelandrew: I'm okay for now, yes.
  PROPOSED: Adopt syntax 'columns: [ <column-width> || <column-count> ]
      [ / <column-height> ]?
  <TabAtkins> +1
  <florian> +1
  <kbabbitt> sgtm
  PROPOSED: Shorthand 'columns' also resets column-wrap (if it exists)
  <florian> +1
  astearns: Any objections?

  RESOLVED: Adopt syntax 'columns: [ <column-width> || <column-count> ]
            [ / <column-height> ]?
  RESOLVED: Shorthand 'columns' also resets column-wrap (if it exists)

CSS Env
=======

Expose unprintable areas via CSS
--------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11395

  TabAtkins: Proposal to add new env() variables for the unprintable
             area of the page
  TabAtkins: They will be zero on a normal screen display
  TabAtkins: But when printing, they would show how far you need to be
             to ensure stuff is printed
  TabAtkins: There seems to be overall agreement that this is fine.
             Some amount of fingerprinting concern, but since only
             shows up when you're printing less concern.

  dholbert: Last few comments between me and Morten is that we don't
            want to use environment variable
  dholbert: because you can't know that when preparing, depending on
            how it gets printed
  dholbert: If you tell them there's a half-inch margin, and they are
            printing onto some other size of paper and are scaling
            things down
  dholbert: then you are in the unprintable area
  dholbert: so I suggested a different approach
  dholbert: which is to clamp the margins
  dholbert: But exposing the numeric value is potentially a footgun

  florian: I followed why an env() variable wouldn't be appropriate.
           Didn't follow what you're proposing instead.
  florian: There are cases where unprintable area differs on which side.
  florian: It's not generally knowable what it is. But sometimes it is
  florian: Would your proposal allow for that?
  dholbert: Yes
  dholbert: Simple way is to use the largest unprintable as if it's the
            distance on all sides
  dholbert: so can have a simple keyword for that
  dholbert: or could ask for per-side behavior
  dholbert: I suggested 'enforce-safe-margin' descriptor, that UA could
            take into account after it knows the requested page size
            and the output paper size
  <fantasai> ->
https://github.com/w3c/csswg-drafts/issues/11395#issuecomment-3029150700
  dholbert: Idea is to floor the author's specified margin with
            whatever info we get from the printer
  dholbert: Author could choose whether to apply same increase to all 4
            sides, or each individually, or add it into already
            requested margin
  dholbert: Morten and I are not sure that we can know each side
            surely, because e.g. for duplex printing might not know
  dholbert: So might be a printer-specific detail.
  florian: In general case that we won't always know, but in some cases
           we can
  florian: If you don't know, should assume they're all the same

  astearns: sounds like we do prefer the descriptor over env(). Should
            we resolve on using a descriptor and take it back to the
            issue?
  PROPOSED: Don't use env() for this. Use an @page descriptor roughly
      as proposed by dholbert; work out details in the issue.

  RESOLVED: Don't use env() for this. Use an @page descriptor roughly
            as proposed by dholbert; work out details in the issue.

  <fantasai> +1 thanks dholbert !
  <dholbert> \o/

Pseudo/Page Floats/Inline
=========================

Float and first-letter pseudo-element interaction missing from the
    latest specs
------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8842

  <fantasai> ->
https://github.com/w3c/csswg-drafts/issues/8842#issuecomment-2762607744
  fantasai: some issues needed to be clarified, and some unclear details
  fantasai: but I think we should say that if initial-letter is
            anything but normal, we ignore float
  fantasai: otherwise, if float is on the ::first-letter, behavior is
            impl-defined. And deprecated.
  fantasai: I think that should address most concerns.
  <TabAtkins> (sounds good to me)

  florian: when you say impl-defined, how broadly do you mean this? "it
           must work, but impl defined how it works" or "whether it
           does anything at all is impl defined"?
  fantasai: the latter, no real requirements at all on it
  fantasai: if we defined this today, we would not make float work
  florian: probably true. it is working on browsers today though, with
           some differences, right?
  fantasai: yeah, so that's a web-compat decision they can make about
            what they want to continue to do. but otherwise we want to
            move people to initial-letters
  kizu: sounds good. some small context
  kizu: a case initial-letter doesn't cover that float does is
        shape-outside.
  kizu: wonder if we could define shape-outside to work with
        initial-letter. common for it to have ascenders/descenders that
        you want to wrap text around
  kizu: this is I think where we had interop issues, if you used
        initial-letter + float + shape-outside, it didn't correctly
        work everywhere
  fantasai: shape-outside is defined, I think, to interact with
            initial-letter in the spec, I think?
  kizu: hm, I'll look again, it might have not been there a while ago
  astearns: I recall adding something for this...
  fantasai: [reads from the spec about shape-outside]
  kizu: I'll do more tests and see what we have today
  astearns: so proposed resolution is to follow what's outlined in the
            last comment of this issue?
  <fantasai> See If the value of shape-outside is not none,
             shape-outside is used instead of the glyph outline.
  <fantasai> In both cases, shape-margin is applied to expand the
             outline, and the resulting outline is clipped by the
             initial letter’s margin edges.
  <fantasai> https://www.w3.org/TR/css-inline-3/#initial-letter-wrapping
  astearns: concerns? objections?
  <TabAtkins> +1

  RESOLVED: Accept Elika's bullet points in the last comment

Received on Thursday, 7 August 2025 23:32:58 UTC