@anyblades/blades 3.0.0-alpha.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,92 @@
1
+
2
+ # Contributor Covenant 3.0 Code of Conduct
3
+
4
+ ## Our Pledge
5
+
6
+ We pledge to make our community welcoming, safe, and equitable for all.
7
+
8
+ We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
9
+
10
+ ## Encouraged Behaviors
11
+
12
+ While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
13
+
14
+ With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
15
+
16
+ 1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
17
+ 2. Engaging **kindly and honestly** with others.
18
+ 3. Respecting **different viewpoints** and experiences.
19
+ 4. **Taking responsibility** for our actions and contributions.
20
+ 5. Gracefully giving and accepting **constructive feedback**.
21
+ 6. Committing to **repairing harm** when it occurs.
22
+ 7. Behaving in other ways that promote and sustain the **well-being of our community**.
23
+
24
+
25
+ ## Restricted Behaviors
26
+
27
+ We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
28
+
29
+ 1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
30
+ 2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
31
+ 3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits.
32
+ 4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
33
+ 5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
34
+ 6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
35
+ 7. Behaving in other ways that **threaten the well-being** of our community.
36
+
37
+ ### Other Restrictions
38
+
39
+ 1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
40
+ 2. **Failing to credit sources.** Not properly crediting the sources of content you contribute.
41
+ 3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
42
+ 4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
43
+
44
+
45
+ ## Reporting an Issue
46
+
47
+ Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
48
+
49
+ When an incident does occur, it is important to report it promptly. To report a possible violation, use **coc@any.digital**.
50
+
51
+ Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
52
+
53
+
54
+ ## Addressing and Repairing Harm
55
+
56
+ ****
57
+
58
+ If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
59
+
60
+ 1) Warning
61
+ 1) Event: A violation involving a single incident or series of incidents.
62
+ 2) Consequence: A private, written warning from the Community Moderators.
63
+ 3) Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
64
+ 2) Temporarily Limited Activities
65
+ 1) Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
66
+ 2) Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
67
+ 3) Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
68
+ 3) Temporary Suspension
69
+ 1) Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
70
+ 2) Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
71
+ 3) Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
72
+ 4) Permanent Ban
73
+ 1) Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
74
+ 2) Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
75
+ 3) Repair: There is no possible repair in cases of this severity.
76
+
77
+ This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
78
+
79
+
80
+ ## Scope
81
+
82
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
83
+
84
+
85
+ ## Attribution
86
+
87
+ This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
88
+
89
+ Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
90
+
91
+ For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
92
+
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <!--section:summary-->
6
6
 
7
- <h1><span class="mark-brand">Minimal CSS Framework</span> <small>for</small> Semantic HTML</h1>
7
+ <h1><b class="mark-brand">Minimal CSS Framework</b> <small>for</small> Semantic HTML</h1>
8
8
 
9
9
  <big>Fully compatible and actively maintained successor to [Pico CSS](//blades.ninja/css/pico/).</big>
10
10
 
@@ -56,7 +56,7 @@ Full list of CSS files available on CDN: https://cdn.jsdelivr.net/npm/@anyblades
56
56
  npm install @anyblades/blades
57
57
  ```
58
58
 
59
- Then, `@import` Blades into your CSS file:
59
+ Then, `@import` sources into your CSS file:
60
60
 
61
61
  ```css
62
62
  @import "@anyblades/blades";
@@ -74,11 +74,10 @@ Live example using <i class="fa-brands fa-tailwind-css"></i> Tailwind: https://g
74
74
 
75
75
  ### <mark>D.</mark> Official starters
76
76
 
77
- - [11ty / Build Awesome Micro-Starter[s]](https://micro.build.blades.ninja/),
78
- including the best [Content-First Starter](//content.build.blades.ninja/)
79
- - [Grav CMS v2](https://getgrav.org/migrate-to-2#:~:text=blades) uses Blades CSS by default
80
- ([Quark2 theme](//github.com/getgrav/grav-theme-quark2#quark-2-theme:~:text=blades)
81
- & [Devtools plugin](//github.com/getgrav/grav-plugin-devtools#theme-scaffolding:~:text=blades))
77
+ - https://github.com/buildawesome-one/starter
78
+ - https://github.com/buildawesome-one/examples
79
+ - https://github.com/getgrav/grav-theme-quark2
80
+ - https://github.com/getgrav/grav-plugin-devtools
82
81
 
83
82
  ---
84
83
 
@@ -104,7 +103,7 @@ Live example using <i class="fa-brands fa-tailwind-css"></i> Tailwind: https://g
104
103
 
105
104
  ### Dynamic templates
106
105
 
107
- [Available for Nunjucks, Twig and Liquid ↗](https://blades.ninja/tpl/)<!--{role=button .outline}-->
106
+ [Available for Nunjucks, Liquid and Twig ↗](https://blades.ninja/tpl/)<!--{role=button .outline}-->
108
107
 
109
108
  <!--section:gh-only-->
110
109
 
@@ -189,23 +188,26 @@ Live example using <i class="fa-brands fa-tailwind-css"></i> Tailwind: https://g
189
188
 
190
189
  ---
191
190
 
192
- ## <sup style>Trusted by</sup><!-- DRY with featured -->
191
+ ## <sup style>Trusted by</sup>
193
192
 
194
- - <b hidden>🐍</b> [Flask & Jinja community website](https://palletsprojects.com/)
193
+ - 🐍 [Flask & Jinja](https://palletsprojects.com/) community website
194
+ - 🪐 [Grav CMS v2](https://getgrav.org/migrate-to-2#:~:text=blades) default theme
195
195
 
196
196
  <!--section:info-->
197
197
 
198
- ## <sup style>Featured by</sup>
198
+ ## <sup style>Featured by</sup> <!-- Z-A after 11ty -->
199
199
 
200
200
  - [getgrav.org](https://getgrav.org/migrate-to-2#:~:text=blades)
201
201
  - [@11ty/buildawesome](https://bsky.app/profile/11ty.dev/post/3mp75r53ccv2b) [↗](https://mastodon.social/@11ty@neighborhood.11ty.dev/116816881367741413)
202
- - [sveltiacms.app](https://sveltiacms.app/en/docs/start#:~:text=anyblades) <!--Z-A-->
202
+ - [<i class="fa-brands fa-build-awesome mark-brand"></i> buildawesome.one](https://buildawesome.one/#:~:text=blades)
203
203
  - [libhunt.com](https://www.libhunt.com/r/blades)
204
204
  - [context7.com](https://context7.com/anyblades/blades)
205
205
  - [awesome-css](https://github.com/uhub/awesome-css)
206
206
  - [awesome-css-frameworks](https://github.com/gabrielizalo/awesome-css-frameworks-and-ui-libraries/tree/master/Lightweight)
207
207
  - [@pauleveritt](https://fosstodon.org/@pauleveritt/116387278969347700)
208
+ - [@daviding](https://www.reddit.com/r/Wordpress/comments/1vnfhkr/comment/p3k9z1c/#:~:text=blades)
208
209
  - [@cantdutchthis](https://news.ycombinator.com/item?id=48729467)
210
+ - [@adamdjbrett](https://github.com/adamdjbrett/11ty-wisp#features:~:text=blades)
209
211
 
210
212
  <!--{.markerless .columns}-->
211
213
  <!--[hostfurl.com, @johnheenan]-->
@@ -213,6 +215,6 @@ Live example using <i class="fa-brands fa-tailwind-css"></i> Tailwind: https://g
213
215
  ## <sup style>Credits</sup>
214
216
 
215
217
  - https://picocss.com/ for [inspiration](//blades.ninja/css/pico/)
216
- - https://11ty.dev/ for site generation
218
+ - https://11ty.dev/ for [site generation](//buildawesome.one/)
217
219
 
218
220
  <!--{.markerless}-->
package/css/blades.css CHANGED
@@ -2,14 +2,12 @@
2
2
  * Blades CSS v3 with Pico CSS 🥷✨
3
3
  * Copyright 2026 (https://blades.ninja/)
4
4
  * Licensed under MIT
5
- */
6
- /*!
5
+ *//*!
7
6
  * Blades CSS' Pico fork v2.5 🥷✨
8
7
  * Copyright 2019-2025 (https://picocss.com)
9
8
  * Copyright 2026 (https://blades.ninja/css/pico/)
10
9
  * Licensed under MIT
11
- */
12
- /**
10
+ *//**
13
11
  * Variables
14
12
  */
15
13
  :scope,
@@ -680,6 +678,7 @@ progress,
680
678
  [type="range"] {
681
679
  accent-color: var(--pico-primary);
682
680
  }
681
+
683
682
  /**
684
683
  * Document
685
684
  * Content-box & Responsive typography
@@ -1417,6 +1416,7 @@ template {
1417
1416
  canvas {
1418
1417
  display: inline-block;
1419
1418
  }
1419
+
1420
1420
  /**
1421
1421
  * Basics form elements
1422
1422
  */
@@ -3220,6 +3220,7 @@ textarea,
3220
3220
  }
3221
3221
 
3222
3222
  /* Layout */
3223
+
3223
3224
  /*
3224
3225
  \3c !--section:code-->
3225
3226
  ```css */
@@ -3296,17 +3297,17 @@ textarea,
3296
3297
 
3297
3298
  /* @TODO: add to tricks-wiki why `*` works here, but `&` fails */
3298
3299
 
3299
- .breakout-all > *:is(h2, h3, h4, h5, h6):not([class]):where(hr + *)::before {
3300
+ .breakout-all > *:is(h2, h3, h4, h5, h6):not([class]):where(hr:not([class]) + *)::before {
3300
3301
  display: none !important;
3301
3302
  }
3302
3303
 
3303
- .breakout-all > *:is(hr) {
3304
+ .breakout-all > *:is(hr):not([class]) {
3304
3305
  height: 0.5rem;
3305
3306
  overflow: visible;
3306
3307
  border: none;
3307
3308
  }
3308
3309
 
3309
- .breakout-all > *:is(hr)::before {
3310
+ .breakout-all > *:is(hr):not([class])::before {
3310
3311
  left: 50%;
3311
3312
  width: 100dvw;
3312
3313
  height: 100%;
@@ -3386,7 +3387,6 @@ Useful for tables of contents and long lists.
3386
3387
  bottom: 0;
3387
3388
  padding-top: 50vh;
3388
3389
  }
3389
-
3390
3390
  /* Content */
3391
3391
  /*\3c !--section:docs-->
3392
3392
 
@@ -3650,6 +3650,7 @@ code[data-caption]::before {
3650
3650
  }
3651
3651
 
3652
3652
  /* Forms */
3653
+
3653
3654
  /*!
3654
3655
  * Float Label CSS v2 by Blades CSS 🥷🏷️
3655
3656
  * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
@@ -3750,7 +3751,6 @@ The `:has(*:placeholder-shown:not(:focus))` trick allows this input state inform
3750
3751
  Historically, this was not possible: the float label had to be placed after the input field to be targeted using the `input:focus + label` selector.
3751
3752
 
3752
3753
  */
3753
-
3754
3754
  /* Components */
3755
3755
  /* Extends https://github.com/picocss/pico/blob/main/scss/content/_link.scss
3756
3756
  \3c !--section:code-->
@@ -3830,7 +3830,6 @@ dl.timeline dd, .has-timeline > dl dd {
3830
3830
  padding: 0.25rem 0 0.75rem 1rem;
3831
3831
  border-inline-start: 0.25rem solid var(--blades-timeline-border-color);
3832
3832
  }
3833
-
3834
3833
  /* Utilities */
3835
3834
  /*\3c !--section:docs-->
3836
3835
 
@@ -3926,7 +3925,6 @@ label:has(> span):has(input:not([type="checkbox"], [type="radio"], [type="range"
3926
3925
  .has-float-label:has(*:placeholder-shown:not(:focus)) label {
3927
3926
  padding-block: 0.75rem; /* match Pico */
3928
3927
  }
3929
-
3930
3928
  html {
3931
3929
  /* Prevent horizontal overflow and scrolling, modern way. */
3932
3930
  overflow-x: clip;
@@ -118,7 +118,7 @@ button:focus,[type=submit]:focus,[type=button]:focus,[role=button]:focus
118
118
  table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
119
119
  ),.breakout>:is(
120
120
  table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
121
- ){width:-moz-fit-content;width:fit-content;min-width:100%;max-width:min(125%,100dvw);margin-left:50%;transform:translateX(-50%)}.breakout-all>:is(img,picture):not(.does-not-exist),.breakout>:is(img,picture):not(.does-not-exist){min-width:auto}.breakout-all>.breakout-item-max,.breakout>.breakout-item-max{width:min(125%,100dvw)!important}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class]){position:relative}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class])::before{display:block;position:absolute;background:gray;content:"";opacity:12.5%}.breakout-all>:is(h2,h3,h4,h5,h6):not([class])::before{top:50%;right:100%;width:10em;height:.25em;margin-right:.8ch;transform:translateY(-50%);background:linear-gradient(to left,gray,transparent)}.breakout-all>:is(h2,h3,h4,h5,h6):not([class]):where(hr + *)::before{display:none!important}.breakout-all>:is(hr){height:.5rem;overflow:visible;border:none}.breakout-all>:is(hr)::before{left:50%;width:100dvw;height:100%;transform:translateX(-50%)}.columns{-moz-columns:25ch auto;columns:25ch auto}.columns>*{-moz-column-break-inside:avoid;break-inside:avoid}[href="#top"]{position:fixed;right:0;bottom:0;padding-top:50vh}h1,h2,h3,h4,h5,h6{position:relative}h1 a[aria-hidden=true],h2 a[aria-hidden=true],h3 a[aria-hidden=true],h4 a[aria-hidden=true],h5 a[aria-hidden=true],h6 a[aria-hidden=true]{visibility:hidden;position:absolute;top:50%;right:100%;padding-right:.2ch;transform:translateY(-50%);color:silver;text-decoration:none}@media (hover:hover){h1:hover a[aria-hidden=true],h2:hover a[aria-hidden=true],h3:hover a[aria-hidden=true],h4:hover a[aria-hidden=true],h5:hover a[aria-hidden=true],h6:hover a[aria-hidden=true]{visibility:visible}}ol[style*="--list-marker:"],ul[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol[style*="--list-marker:"]>li,ul[style*="--list-marker:"]>li{list-style-type:inherit}ol li[style*="--list-marker:"],ul li[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol li[data-marker]::marker,ul li[data-marker]::marker{content:attr(data-marker) " "}ol.markerless,ul.markerless{padding-inline-start:1.25rem}ol.markerless li,ul.markerless li{list-style:none}.unlist-all ol,.unlist-all ul,ol.unlist,ol.unlist-all,ul.unlist,ul.unlist-all{padding-inline-start:0}.unlist-all ol>li,.unlist-all ul>li,ol.unlist-all>li,ol.unlist>li,ul.unlist-all>li,ul.unlist>li{list-style:none}th hr{visibility:hidden;width:12ch;height:0;margin:0}th hr.lg{width:18ch}th hr.x2{width:24ch}table.borderless td,table.borderless th{border:none}.breakout-all>table:not(.does-not-exist),.breakout>table:not(.does-not-exist),table.responsive{display:block;width:-moz-max-content;width:max-content;min-width:auto;max-width:100dvw;margin-left:50%;padding-inline:7.5%;overflow-x:auto;transform:translateX(-50%);-webkit-overflow-scrolling:touch}.breakout-all>table:not(.does-not-exist) td,.breakout-all>table:not(.does-not-exist) th,.breakout>table:not(.does-not-exist) td,.breakout>table:not(.does-not-exist) th,table.responsive td,table.responsive th{padding-inline-start:0}@media (width < 768px){pre{border-radius:0}}code[data-caption]::before{display:block;margin-bottom:1rem;content:attr(data-caption);font-style:italic;opacity:50%}/*!
121
+ ){width:-moz-fit-content;width:fit-content;min-width:100%;max-width:min(125%,100dvw);margin-left:50%;transform:translateX(-50%)}.breakout-all>:is(img,picture):not(.does-not-exist),.breakout>:is(img,picture):not(.does-not-exist){min-width:auto}.breakout-all>.breakout-item-max,.breakout>.breakout-item-max{width:min(125%,100dvw)!important}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class]){position:relative}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class])::before{display:block;position:absolute;background:gray;content:"";opacity:12.5%}.breakout-all>:is(h2,h3,h4,h5,h6):not([class])::before{top:50%;right:100%;width:10em;height:.25em;margin-right:.8ch;transform:translateY(-50%);background:linear-gradient(to left,gray,transparent)}.breakout-all>:is(h2,h3,h4,h5,h6):not([class]):where(hr:not([class]) + *)::before{display:none!important}.breakout-all>:is(hr):not([class]){height:.5rem;overflow:visible;border:none}.breakout-all>:is(hr):not([class])::before{left:50%;width:100dvw;height:100%;transform:translateX(-50%)}.columns{-moz-columns:25ch auto;columns:25ch auto}.columns>*{-moz-column-break-inside:avoid;break-inside:avoid}[href="#top"]{position:fixed;right:0;bottom:0;padding-top:50vh}h1,h2,h3,h4,h5,h6{position:relative}h1 a[aria-hidden=true],h2 a[aria-hidden=true],h3 a[aria-hidden=true],h4 a[aria-hidden=true],h5 a[aria-hidden=true],h6 a[aria-hidden=true]{visibility:hidden;position:absolute;top:50%;right:100%;padding-right:.2ch;transform:translateY(-50%);color:silver;text-decoration:none}@media (hover:hover){h1:hover a[aria-hidden=true],h2:hover a[aria-hidden=true],h3:hover a[aria-hidden=true],h4:hover a[aria-hidden=true],h5:hover a[aria-hidden=true],h6:hover a[aria-hidden=true]{visibility:visible}}ol[style*="--list-marker:"],ul[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol[style*="--list-marker:"]>li,ul[style*="--list-marker:"]>li{list-style-type:inherit}ol li[style*="--list-marker:"],ul li[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol li[data-marker]::marker,ul li[data-marker]::marker{content:attr(data-marker) " "}ol.markerless,ul.markerless{padding-inline-start:1.25rem}ol.markerless li,ul.markerless li{list-style:none}.unlist-all ol,.unlist-all ul,ol.unlist,ol.unlist-all,ul.unlist,ul.unlist-all{padding-inline-start:0}.unlist-all ol>li,.unlist-all ul>li,ol.unlist-all>li,ol.unlist>li,ul.unlist-all>li,ul.unlist>li{list-style:none}th hr{visibility:hidden;width:12ch;height:0;margin:0}th hr.lg{width:18ch}th hr.x2{width:24ch}table.borderless td,table.borderless th{border:none}.breakout-all>table:not(.does-not-exist),.breakout>table:not(.does-not-exist),table.responsive{display:block;width:-moz-max-content;width:max-content;min-width:auto;max-width:100dvw;margin-left:50%;padding-inline:7.5%;overflow-x:auto;transform:translateX(-50%);-webkit-overflow-scrolling:touch}.breakout-all>table:not(.does-not-exist) td,.breakout-all>table:not(.does-not-exist) th,.breakout>table:not(.does-not-exist) td,.breakout>table:not(.does-not-exist) th,table.responsive td,table.responsive th{padding-inline-start:0}@media (width < 768px){pre{border-radius:0}}code[data-caption]::before{display:block;margin-bottom:1rem;content:attr(data-caption);font-style:italic;opacity:50%}/*!
122
122
  * Float Label CSS v2 by Blades CSS 🥷🏷️
123
123
  * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
124
124
  * Licensed under MIT
@@ -29,6 +29,7 @@
29
29
  }
30
30
 
31
31
  /* Layout */
32
+
32
33
  /*
33
34
  \3c !--section:code-->
34
35
  ```css */
@@ -105,17 +106,17 @@
105
106
 
106
107
  /* @TODO: add to tricks-wiki why `*` works here, but `&` fails */
107
108
 
108
- .breakout-all > *:is(h2, h3, h4, h5, h6):not([class]):where(hr + *)::before {
109
+ .breakout-all > *:is(h2, h3, h4, h5, h6):not([class]):where(hr:not([class]) + *)::before {
109
110
  display: none !important;
110
111
  }
111
112
 
112
- .breakout-all > *:is(hr) {
113
+ .breakout-all > *:is(hr):not([class]) {
113
114
  height: 0.5rem;
114
115
  overflow: visible;
115
116
  border: none;
116
117
  }
117
118
 
118
- .breakout-all > *:is(hr)::before {
119
+ .breakout-all > *:is(hr):not([class])::before {
119
120
  left: 50%;
120
121
  width: 100dvw;
121
122
  height: 100%;
@@ -195,7 +196,6 @@ Useful for tables of contents and long lists.
195
196
  bottom: 0;
196
197
  padding-top: 50vh;
197
198
  }
198
-
199
199
  /* Content */
200
200
  /*\3c !--section:docs-->
201
201
 
@@ -459,6 +459,7 @@ code[data-caption]::before {
459
459
  }
460
460
 
461
461
  /* Forms */
462
+
462
463
  /*!
463
464
  * Float Label CSS v2 by Blades CSS 🥷🏷️
464
465
  * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
@@ -559,7 +560,6 @@ The `:has(*:placeholder-shown:not(:focus))` trick allows this input state inform
559
560
  Historically, this was not possible: the float label had to be placed after the input field to be targeted using the `input:focus + label` selector.
560
561
 
561
562
  */
562
-
563
563
  /* Components */
564
564
  /* Extends https://github.com/picocss/pico/blob/main/scss/content/_link.scss
565
565
  \3c !--section:code-->
@@ -639,7 +639,6 @@ dl.timeline dd, .has-timeline > dl dd {
639
639
  padding: 0.25rem 0 0.75rem 1rem;
640
640
  border-inline-start: 0.25rem solid var(--blades-timeline-border-color);
641
641
  }
642
-
643
642
  /* Utilities */
644
643
  /*\3c !--section:docs-->
645
644
 
@@ -735,7 +734,6 @@ label:has(> span):has(input:not([type="checkbox"], [type="radio"], [type="range"
735
734
  .has-float-label:has(*:placeholder-shown:not(:focus)) label {
736
735
  padding-block: 0.75rem; /* match Pico */
737
736
  }
738
-
739
737
  html {
740
738
  /* Prevent horizontal overflow and scrolling, modern way. */
741
739
  overflow-x: clip;
@@ -10,7 +10,7 @@
10
10
  table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
11
11
  ),.breakout>:is(
12
12
  table,pre,figure,video,iframe,canvas,img,picture,.breakout-item,.breakout-item-max
13
- ){width:-moz-fit-content;width:fit-content;min-width:100%;max-width:min(125%,100dvw);margin-left:50%;transform:translateX(-50%)}.breakout-all>:is(img,picture):not(.does-not-exist),.breakout>:is(img,picture):not(.does-not-exist){min-width:auto}.breakout-all>.breakout-item-max,.breakout>.breakout-item-max{width:min(125%,100dvw)!important}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class]){position:relative}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class])::before{display:block;position:absolute;background:gray;content:"";opacity:12.5%}.breakout-all>:is(h2,h3,h4,h5,h6):not([class])::before{top:50%;right:100%;width:10em;height:.25em;margin-right:.8ch;transform:translateY(-50%);background:linear-gradient(to left,gray,transparent)}.breakout-all>:is(h2,h3,h4,h5,h6):not([class]):where(hr + *)::before{display:none!important}.breakout-all>:is(hr){height:.5rem;overflow:visible;border:none}.breakout-all>:is(hr)::before{left:50%;width:100dvw;height:100%;transform:translateX(-50%)}.columns{-moz-columns:25ch auto;columns:25ch auto}.columns>*{-moz-column-break-inside:avoid;break-inside:avoid}[href="#top"]{position:fixed;right:0;bottom:0;padding-top:50vh}h1,h2,h3,h4,h5,h6{position:relative}h1 a[aria-hidden=true],h2 a[aria-hidden=true],h3 a[aria-hidden=true],h4 a[aria-hidden=true],h5 a[aria-hidden=true],h6 a[aria-hidden=true]{visibility:hidden;position:absolute;top:50%;right:100%;padding-right:.2ch;transform:translateY(-50%);color:silver;text-decoration:none}@media (hover:hover){h1:hover a[aria-hidden=true],h2:hover a[aria-hidden=true],h3:hover a[aria-hidden=true],h4:hover a[aria-hidden=true],h5:hover a[aria-hidden=true],h6:hover a[aria-hidden=true]{visibility:visible}}ol[style*="--list-marker:"],ul[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol[style*="--list-marker:"]>li,ul[style*="--list-marker:"]>li{list-style-type:inherit}ol li[style*="--list-marker:"],ul li[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol li[data-marker]::marker,ul li[data-marker]::marker{content:attr(data-marker) " "}ol.markerless,ul.markerless{padding-inline-start:1.25rem}ol.markerless li,ul.markerless li{list-style:none}.unlist-all ol,.unlist-all ul,ol.unlist,ol.unlist-all,ul.unlist,ul.unlist-all{padding-inline-start:0}.unlist-all ol>li,.unlist-all ul>li,ol.unlist-all>li,ol.unlist>li,ul.unlist-all>li,ul.unlist>li{list-style:none}th hr{visibility:hidden;width:12ch;height:0;margin:0}th hr.lg{width:18ch}th hr.x2{width:24ch}table.borderless td,table.borderless th{border:none}.breakout-all>table:not(.does-not-exist),.breakout>table:not(.does-not-exist),table.responsive{display:block;width:-moz-max-content;width:max-content;min-width:auto;max-width:100dvw;margin-left:50%;padding-inline:7.5%;overflow-x:auto;transform:translateX(-50%);-webkit-overflow-scrolling:touch}.breakout-all>table:not(.does-not-exist) td,.breakout-all>table:not(.does-not-exist) th,.breakout>table:not(.does-not-exist) td,.breakout>table:not(.does-not-exist) th,table.responsive td,table.responsive th{padding-inline-start:0}@media (width < 768px){pre{border-radius:0}}code[data-caption]::before{display:block;margin-bottom:1rem;content:attr(data-caption);font-style:italic;opacity:50%}/*!
13
+ ){width:-moz-fit-content;width:fit-content;min-width:100%;max-width:min(125%,100dvw);margin-left:50%;transform:translateX(-50%)}.breakout-all>:is(img,picture):not(.does-not-exist),.breakout>:is(img,picture):not(.does-not-exist){min-width:auto}.breakout-all>.breakout-item-max,.breakout>.breakout-item-max{width:min(125%,100dvw)!important}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class]){position:relative}.breakout-all>:is(h2,h3,h4,h5,h6,hr):not([class])::before{display:block;position:absolute;background:gray;content:"";opacity:12.5%}.breakout-all>:is(h2,h3,h4,h5,h6):not([class])::before{top:50%;right:100%;width:10em;height:.25em;margin-right:.8ch;transform:translateY(-50%);background:linear-gradient(to left,gray,transparent)}.breakout-all>:is(h2,h3,h4,h5,h6):not([class]):where(hr:not([class]) + *)::before{display:none!important}.breakout-all>:is(hr):not([class]){height:.5rem;overflow:visible;border:none}.breakout-all>:is(hr):not([class])::before{left:50%;width:100dvw;height:100%;transform:translateX(-50%)}.columns{-moz-columns:25ch auto;columns:25ch auto}.columns>*{-moz-column-break-inside:avoid;break-inside:avoid}[href="#top"]{position:fixed;right:0;bottom:0;padding-top:50vh}h1,h2,h3,h4,h5,h6{position:relative}h1 a[aria-hidden=true],h2 a[aria-hidden=true],h3 a[aria-hidden=true],h4 a[aria-hidden=true],h5 a[aria-hidden=true],h6 a[aria-hidden=true]{visibility:hidden;position:absolute;top:50%;right:100%;padding-right:.2ch;transform:translateY(-50%);color:silver;text-decoration:none}@media (hover:hover){h1:hover a[aria-hidden=true],h2:hover a[aria-hidden=true],h3:hover a[aria-hidden=true],h4:hover a[aria-hidden=true],h5:hover a[aria-hidden=true],h6:hover a[aria-hidden=true]{visibility:visible}}ol[style*="--list-marker:"],ul[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol[style*="--list-marker:"]>li,ul[style*="--list-marker:"]>li{list-style-type:inherit}ol li[style*="--list-marker:"],ul li[style*="--list-marker:"]{list-style-type:var(--list-marker)}ol li[data-marker]::marker,ul li[data-marker]::marker{content:attr(data-marker) " "}ol.markerless,ul.markerless{padding-inline-start:1.25rem}ol.markerless li,ul.markerless li{list-style:none}.unlist-all ol,.unlist-all ul,ol.unlist,ol.unlist-all,ul.unlist,ul.unlist-all{padding-inline-start:0}.unlist-all ol>li,.unlist-all ul>li,ol.unlist-all>li,ol.unlist>li,ul.unlist-all>li,ul.unlist>li{list-style:none}th hr{visibility:hidden;width:12ch;height:0;margin:0}th hr.lg{width:18ch}th hr.x2{width:24ch}table.borderless td,table.borderless th{border:none}.breakout-all>table:not(.does-not-exist),.breakout>table:not(.does-not-exist),table.responsive{display:block;width:-moz-max-content;width:max-content;min-width:auto;max-width:100dvw;margin-left:50%;padding-inline:7.5%;overflow-x:auto;transform:translateX(-50%);-webkit-overflow-scrolling:touch}.breakout-all>table:not(.does-not-exist) td,.breakout-all>table:not(.does-not-exist) th,.breakout>table:not(.does-not-exist) td,.breakout>table:not(.does-not-exist) th,table.responsive td,table.responsive th{padding-inline-start:0}@media (width < 768px){pre{border-radius:0}}code[data-caption]::before{display:block;margin-bottom:1rem;content:attr(data-caption);font-style:italic;opacity:50%}/*!
14
14
  * Float Label CSS v2 by Blades CSS 🥷🏷️
15
15
  * Copyright 2016–2026 (https://blades.ninja/css/float-label/)
16
16
  * Licensed under MIT
@@ -4,8 +4,7 @@
4
4
  * Copyright 2019-2025 (https://picocss.com)
5
5
  * Copyright 2026 (https://blades.ninja/css/pico/)
6
6
  * Licensed under MIT
7
- */
8
- /**
7
+ *//**
9
8
  * Variables
10
9
  */
11
10
  :scope,
@@ -676,6 +675,7 @@ progress,
676
675
  [type="range"] {
677
676
  accent-color: var(--pico-primary);
678
677
  }
678
+
679
679
  /**
680
680
  * Document
681
681
  * Content-box & Responsive typography
@@ -1413,6 +1413,7 @@ template {
1413
1413
  canvas {
1414
1414
  display: inline-block;
1415
1415
  }
1416
+
1416
1417
  /**
1417
1418
  * Basics form elements
1418
1419
  */
package/css/pico.css CHANGED
@@ -3,8 +3,7 @@
3
3
  * Copyright 2019-2025 (https://picocss.com)
4
4
  * Copyright 2026 (https://blades.ninja/css/pico/)
5
5
  * Licensed under MIT
6
- */
7
- /**
6
+ *//**
8
7
  * Variables
9
8
  */
10
9
  :scope,
@@ -675,6 +674,7 @@ progress,
675
674
  [type="range"] {
676
675
  accent-color: var(--pico-primary);
677
676
  }
677
+
678
678
  /**
679
679
  * Document
680
680
  * Content-box & Responsive typography
@@ -1412,6 +1412,7 @@ template {
1412
1412
  canvas {
1413
1413
  display: inline-block;
1414
1414
  }
1415
+
1415
1416
  /**
1416
1417
  * Basics form elements
1417
1418
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anyblades/blades",
3
- "version": "3.0.0-alpha.2",
3
+ "version": "3.0.0",
4
4
  "exports": {
5
5
  ".": "./src/blades.css",
6
6
  "./pico": "./src/pico.css",
@@ -67,13 +67,13 @@
67
67
  }
68
68
 
69
69
  /* @TODO: add to tricks-wiki why `*` works here, but `&` fails */
70
- &:where(hr + *) {
70
+ &:where(hr:not([class]) + *) {
71
71
  &::before {
72
72
  display: none !important;
73
73
  }
74
74
  }
75
75
  }
76
- &:is(hr) {
76
+ &:is(hr):not([class]) {
77
77
  height: 0.5rem;
78
78
  border: none;
79
79
  overflow: visible;