home readme diff tree note docs

0commit a78584eba6a8f6892a015975406b90be37f9f4a7
1Author: Mason Wright <mason@lakefox.net>
2Date:   Sat Oct 18 20:47:22 2025 -0600
3
4    Working on moving docs from md to groff
5
6diff --git a/.gitignore b/.gitignore
7index 7807e77..680d65f 100755
8--- a/.gitignore
9+++ b/.gitignore
10@@ -1,3 +1,5 @@
11 build/
12 main
13 docs/dist
14+*.swp
15+*.bak
16diff --git a/Makefile b/Makefile
17index 095ad48..76a1577 100755
18--- a/Makefile
19+++ b/Makefile
20@@ -84,5 +84,11 @@ docs: $(HTML_FILES)
21 docs/dist/%.html: docs/content/%.md docs/components/navbar.html
22 	pandoc $< | template docs/components/navbar.html --stdin docs/template.html > $@
23 
24+# Will want to move to groff for docs
25+# groff -Thtml -man
26+
27 serve:
28 	cd docs/dist && python3 -m http.server 8000
29+
30+man: 
31+	@man -l docs/manpage/grim.3
32diff --git a/docs/content/features/supported-css-selectors.1 b/docs/content/features/supported-css-selectors.1
33index b556b3a..2cbc0cb 100644
34--- a/docs/content/features/supported-css-selectors.1
35+++ b/docs/content/features/supported-css-selectors.1
36@@ -1,1727 +1,93 @@
37-'\" t
38-.\" Automatically generated by Pandoc 2.17.1.1
39-.\"
40-.\" Define V font for inline verbatim, using C font in formats
41-.\" that render this, and otherwise B font.
42-.ie "\f[CB]x\f[]"x" \{\
43-. ftr V B
44-. ftr VI BI
45-. ftr VB B
46-. ftr VBI BI
47-.\}
48-.el \{\
49-. ftr V CR
50-. ftr VI CI
51-. ftr VB CB
52-. ftr VBI CBI
53-.\}
54-.TH "" "" "" "" ""
55-.hy
56-.SH Supported Selectors
57-.SS Support
58-.IP \[bu] 2
59-(*) parsing supported, not implemented
60-.IP \[bu] 2
61-(X) fully supported, implemented
62-.IP \[bu] 2
63-(/) No support planned
64-.SS Selectors
65-.PP
66-.TS
67-tab(@);
68-lw(14.0n) lw(14.0n) lw(14.0n) lw(14.0n) lw(14.0n).
69-T{
70-Name
71-T}@T{
72-Support
73-T}@T{
74-Test Case
75-T}@T{
76-Section
77-T}@T{
78-Test File
79-T}
80-_
81-T{
82-Type
83-T}@T{
84-X
85-T}@T{
86-testSelector
87-T}@T{
88-testSelector can match a element given it\[cq]s tagName
89-T}@T{
90-tests/css_selector.cc
91-T}
92-T{
93-Attribute
94-T}@T{
95-X
96-T}@T{
97-testSelector
98-T}@T{
99-testSelector can match a element by it\[cq]s attributes only
100-T}@T{
101-tests/css_selector.cc
102-T}
103-T{
104-ID
105-T}@T{
106-X
107-T}@T{
108-testSelector
109-T}@T{
110-testSelector can match a element by it\[cq]s id only
111-T}@T{
112-tests/css_selector.cc
113-T}
114-T{
115-Class
116-T}@T{
117-X
118-T}@T{
119-testSelector
120-T}@T{
121-testSelector can match a element by it\[cq]s class and not match on a
122-non class
123-T}@T{
124-tests/css_selector.cc
125-T}
126-T{
127-Universal
128-T}@T{
129-X
130-T}@T{
131-testSelector
132-T}@T{
133-testSelector can match a universal selector
134-T}@T{
135-tests/css_selector.cc
136-T}
137-T{
138-Nesting
139-T}@T{
140-X
141-T}@T{
142-parseCSS can parse a CSS sheet, parseCSS can parse multiple selectors
143-nested
144-T}@T{
145-parseCSS can parse a nested CSS rule without a &, parseCSS can parse a
146-the parent of a nested CSS rule, parseCSS can parse a nested CSS rule
147-with a pseudo element, parseCSS can parse a parent CSS rule with a
148-property in between sub-classes, multi selector test
149-T}@T{
150-tests/css_parser.cc
151-T}
152-T{
153-& Nesting
154-T}@T{
155-X
156-T}@T{
157-parseCSS can parse a CSS sheet, parseCSS can parse multiple selectors
158-nested
159-T}@T{
160-parseCSS can parse a nested CSS rule without a &, parseCSS can parse a
161-the parent of a nested CSS rule, parseCSS can parse a nested CSS rule
162-with a pseudo element, parseCSS can parse a double nested CSS rule with
163-a pseudo element and &, parseCSS can parse a nested CSS rule with a &,
164-parseCSS can parse a parent CSS rule with a property in between
165-sub-classes, multi selector test
166-T}@T{
167-tests/css_parser.cc
168-T}
169-.TE
170-.SS Combinator
171-.PP
172-.TS
173-tab(@);
174-lw(14.0n) lw(14.0n) lw(14.0n) lw(14.0n) lw(14.0n).
175-T{
176-Name
177-T}@T{
178-Support
179-T}@T{
180-Test Case
181-T}@T{
182-Section
183-T}@T{
184-Test File
185-T}
186-_
187-T{
188-Child Combinator
189-T}@T{
190-X
191-T}@T{
192-testSelector
193-T}@T{
194-testSelector can match a child combinator
195-T}@T{
196-tests/css_selector.cc
197-T}
198-T{
199-Next-Sibling Combinator
200-T}@T{
201-X
202-T}@T{
203-testSelector
204-T}@T{
205-testSelector can match a next sibling combinator
206-T}@T{
207-tests/css_selector.cc
208-T}
209-T{
210-Descendant Combinator
211-T}@T{
212-X
213-T}@T{
214-testSelector
215-T}@T{
216-testSelector can match a descendant combinator
217-T}@T{
218-tests/css_selector.cc
219-T}
220-T{
221-Subsequent-Sibling Combinator
222-T}@T{
223-X
224-T}@T{
225-testSelector
226-T}@T{
227-testSelector can match a subsequent-sibling combinator
228-T}@T{
229-tests/css_selector.cc
230-T}
231-.TE
232-.SS Pseudo Classes
233-.PP
234-.TS
235-tab(@);
236-lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n).
237-T{
238-Name
239-T}@T{
240-Support
241-T}@T{
242-Test Case
243-T}@T{
244-Section
245-T}@T{
246-Test File
247-T}@T{
248-Note
249-T}
250-_
251-T{
252-:active
253-T}@T{
254-T}@T{
255-T}@T{
256-T}@T{
257-T}@T{
258-Will be added when links are
259-T}
260-T{
261-:any-link
262-T}@T{
263-T}@T{
264-T}@T{
265-T}@T{
266-T}@T{
267-Will be added when links are
268-T}
269-T{
270-:autofill
271-T}@T{
272-T}@T{
273-T}@T{
274-T}@T{
275-T}@T{
276-Will be added when inputs are added
277-T}
278-T{
279-:buffering
280-T}@T{
281-T}@T{
282-T}@T{
283-T}@T{
284-T}@T{
285-Videos are not currently supported
286-T}
287-T{
288-:checked
289-T}@T{
290-X
291-T}@T{
292-testSelector
293-T}@T{
294-testSelector can match a element with a pseudo class
295-T}@T{
296-tests/css_selector.cc
297-T}@T{
298-T}
299-T{
300-:default
301-T}@T{
302-T}@T{
303-T}@T{
304-T}@T{
305-T}@T{
306-Will be added when inputs are added
307-T}
308-T{
309-:defined
310-T}@T{
311-T}@T{
312-T}@T{
313-T}@T{
314-T}@T{
315-T}
316-T{
317-:dir()
318-T}@T{
319-T}@T{
320-T}@T{
321-T}@T{
322-T}@T{
323-T}
324-T{
325-:disabled
326-T}@T{
327-X
328-T}@T{
329-testSelector
330-T}@T{
331-testSelector can match a element with a pseudo class
332-T}@T{
333-tests/css_selector.cc
334-T}@T{
335-T}
336-T{
337-:empty
338-T}@T{
339-T}@T{
340-T}@T{
341-T}@T{
342-T}@T{
343-Will be added when inputs are added
344-T}
345-T{
346-:enabled
347-T}@T{
348-X
349-T}@T{
350-testSelector
351-T}@T{
352-testSelector can match a element with a pseudo class
353-T}@T{
354-tests/css_selector.cc
355-T}@T{
356-T}
357-T{
358-:first
359-T}@T{
360-/
361-T}@T{
362-T}@T{
363-T}@T{
364-T}@T{
365-Will not be supported, currently there are no plans to support printing
366-T}
367-T{
368-:first-child
369-T}@T{
370-X
371-T}@T{
372-testSelector
373-T}@T{
374-testSelector can match a element with first-child
375-T}@T{
376-tests/css_selector.cc
377-T}@T{
378-T}
379-T{
380-:first-of-type
381-T}@T{
382-X
383-T}@T{
384-testSelector
385-T}@T{
386-testSelector can match a element with first-of-type
387-T}@T{
388-tests/css_selector.cc
389-T}@T{
390-T}
391-T{
392-:focus
393-T}@T{
394-T}@T{
395-T}@T{
396-T}@T{
397-T}@T{
398-T}
399-T{
400-:focus-visible
401-T}@T{
402-T}@T{
403-T}@T{
404-T}@T{
405-T}@T{
406-T}
407-T{
408-:focus-within
409-T}@T{
410-T}@T{
411-T}@T{
412-T}@T{
413-T}@T{
414-T}
415-T{
416-:fullscreen
417-T}@T{
418-T}@T{
419-T}@T{
420-T}@T{
421-T}@T{
422-Videos are not currently supported
423-T}
424-T{
425-:future
426-T}@T{
427-T}@T{
428-T}@T{
429-T}@T{
430-T}@T{
431-T}
432-T{
433-:has-slotted
434-T}@T{
435-T}@T{
436-T}@T{
437-T}@T{
438-T}@T{
439-T}
440-T{
441-:has()
442-T}@T{
443-X
444-T}@T{
445-testSelector
446-T}@T{
447-testSelector can match a :has() selector with a child combinator,
448-testSelector can match a :has() selector with a next-sibling combinator,
449-testSelector can match a :has() selector with a subsequent-sibling
450-combinator, testSelector can match a :has() selector with a decendent
451-combinator
452-T}@T{
453-tests/css_selector.cc
454-T}@T{
455-T}
456-T{
457-:host
458-T}@T{
459-T}@T{
460-T}@T{
461-T}@T{
462-T}@T{
463-T}
464-T{
465-:host-context()
466-T}@T{
467-T}@T{
468-T}@T{
469-T}@T{
470-T}@T{
471-T}
472-T{
473-:host()
474-T}@T{
475-T}@T{
476-T}@T{
477-T}@T{
478-T}@T{
479-T}
480-T{
481-:hover
482-T}@T{
483-T}@T{
484-T}@T{
485-T}@T{
486-T}@T{
487-T}
488-T{
489-:in-range
490-T}@T{
491-T}@T{
492-T}@T{
493-T}@T{
494-T}@T{
495-Will be added when inputs are added
496-T}
497-T{
498-:indeterminate
499-T}@T{
500-T}@T{
501-T}@T{
502-T}@T{
503-T}@T{
504-Will be added when inputs are added
505-T}
506-T{
507-:invalid
508-T}@T{
509-T}@T{
510-T}@T{
511-T}@T{
512-T}@T{
513-Will be added when inputs are added
514-T}
515-T{
516-:is()
517-T}@T{
518-X
519-T}@T{
520-testSelector
521-T}@T{
522-testSelector can match :is() selectors
523-T}@T{
524-tests/css_selector.cc
525-T}@T{
526-T}
527-T{
528-:lang()
529-T}@T{
530-T}@T{
531-T}@T{
532-T}@T{
533-T}@T{
534-T}
535-T{
536-:last-child
537-T}@T{
538-X
539-T}@T{
540-testSelector
541-T}@T{
542-testSelector can match a element with last-child
543-T}@T{
544-tests/css_selector.cc
545-T}@T{
546-T}
547-T{
548-:last-of-type
549-T}@T{
550-X
551-T}@T{
552-testSelector
553-T}@T{
554-testSelector can match a element with last-of-type
555-T}@T{
556-tests/css_selector.cc
557-T}@T{
558-T}
559-T{
560-:left
561-T}@T{
562-/
563-T}@T{
564-T}@T{
565-T}@T{
566-T}@T{
567-Will not be supported, currently there are no plans to support printing
568-T}
569-T{
570-:local-link
571-T}@T{
572-/
573-T}@T{
574-T}@T{
575-T}@T{
576-T}@T{
577-Doesn\[cq]t make sense to add because all links will be local
578-T}
579-T{
580-:modal
581-T}@T{
582-T}@T{
583-T}@T{
584-T}@T{
585-T}@T{
586-T}
587-T{
588-:muted
589-T}@T{
590-T}@T{
591-T}@T{
592-T}@T{
593-T}@T{
594-Videos are not currently supported
595-T}
596-T{
597-:not()
598-T}@T{
599-X
600-T}@T{
601-testSelector
602-T}@T{
603-testSelector can match :not() selectors
604-T}@T{
605-tests/css_selector.cc
606-T}@T{
607-T}
608-T{
609-:nth-child()
610-T}@T{
611-X
612-T}@T{
613-testSelector
614-T}@T{
615-testSelector can match a :nth-child(even|odd), testSelector can match a
616-:nth-child(A), testSelector can match a :nth-child(An), testSelector can
617-match a :nth-child(An+B), testSelector can match a :nth-child(An+B of
618-type), testSelector can match a :nth-child(n+B), testSelector can match
619-a :nth-child(A of type), testSelector can match a :nth-child(An of
620-type), testSelector can match a :nth-child(n+B of type)
621-T}@T{
622-tests/css_selector.cc
623-T}@T{
624-when A is 0 it is changed to a 1, the only case this will cause breaking
625-behavior is if you are trying :nth-child(0n+B) which is the same as
626-calling :nth-child(B).
627-This behavior applies to all nth-*
628-T}
629-T{
630-:nth-last-child()
631-T}@T{
632-X
633-T}@T{
634-testSelector
635-T}@T{
636-testSelector can match a :nth-last-child(even|odd), testSelector can
637-match a :nth-last-child(A), testSelector can match a
638-:nth-last-child(An), testSelector can match a :nth-last-child(An+B),
639-testSelector can match a :nth-last-child(n+B), testSelector can match a
640-:nth-last-child(An+B of type), testSelector can match a
641-:nth-last-child(A of type), testSelector can match a :nth-last-child(An
642-of type), testSelector can match a :nth-last-child(n+B of type)
643-T}@T{
644-tests/css_selector.cc
645-T}@T{
646-T}
647-T{
648-:nth-last-of-type()
649-T}@T{
650-X
651-T}@T{
652-testSelector
653-T}@T{
654-testSelector can match a :nth-last-of-type(even|odd), testSelector can
655-match a :nth-last-of-type(A), testSelector can match a
656-:nth-last-of-type(An), testSelector can match a :nth-last-of-type(An+B),
657-testSelector can match a :nth-last-of-type(n+B),
658-T}@T{
659-tests/css_selector.cc
660-T}@T{
661-T}
662-T{
663-:nth-of-type()
664-T}@T{
665-X
666-T}@T{
667-testSelector
668-T}@T{
669-testSelector can match a :nth-of-type(even|odd), testSelector can match
670-a :nth-of-type(A), testSelector can match a :nth-of-type(An),
671-testSelector can match a :nth-of-type(An+B), testSelector can match a
672-:nth-of-type(n+B),
673-T}@T{
674-tests/css_selector.cc
675-T}@T{
676-T}
677-T{
678-:only-child
679-T}@T{
680-X
681-T}@T{
682-testSelector
683-T}@T{
684-testSelector can match :only-child
685-T}@T{
686-tests/css_selector.cc
687-T}@T{
688-T}
689-T{
690-:only-of-type
691-T}@T{
692-X
693-T}@T{
694-testSelector
695-T}@T{
696-testSelector can match :only-of-type
697-T}@T{
698-tests/css_selector.cc
699-T}@T{
700-T}
701-T{
702-:open
703-T}@T{
704-T}@T{
705-T}@T{
706-T}@T{
707-T}@T{
708-T}
709-T{
710-:optional
711-T}@T{
712-T}@T{
713-T}@T{
714-T}@T{
715-T}@T{
716-T}
717-T{
718-:out-of-range
719-T}@T{
720-T}@T{
721-T}@T{
722-T}@T{
723-T}@T{
724-Will be added when inputs are added
725-T}
726-T{
727-:past
728-T}@T{
729-T}@T{
730-T}@T{
731-T}@T{
732-T}@T{
733-T}
734-T{
735-:paused
736-T}@T{
737-T}@T{
738-T}@T{
739-T}@T{
740-T}@T{
741-Videos are not currently supported
742-T}
743-T{
744-:picture-in-picture
745-T}@T{
746-T}@T{
747-T}@T{
748-T}@T{
749-T}@T{
750-Videos are not currently supported
751-T}
752-T{
753-:placeholder-shown
754-T}@T{
755-T}@T{
756-T}@T{
757-T}@T{
758-T}@T{
759-Will be added when inputs are added
760-T}
761-T{
762-:playing
763-T}@T{
764-T}@T{
765-T}@T{
766-T}@T{
767-T}@T{
768-Videos are not currently supported
769-T}
770-T{
771-:popover-open
772-T}@T{
773-T}@T{
774-T}@T{
775-T}@T{
776-T}@T{
777-T}
778-T{
779-:read-only
780-T}@T{
781-X
782-T}@T{
783-testSelector
784-T}@T{
785-testSelector can match :read-only normal element, testSelector can match
786-:read-only on a radio input, testSelector can match :read-only on a
787-readonly text input, testSelector can match :read-only on a disabled
788-text input, testSelector can match :read-only on a readonly textarea,
789-testSelector can match :read-only on a disabled textarea
790-T}@T{
791-tests/css_selector.cc
792-T}@T{
793-T}
794-T{
795-:read-write
796-T}@T{
797-X
798-T}@T{
799-testSelector
800-T}@T{
801-testSelector can match :read-write on a text input, testSelector can
802-match :read-write on a textarea, testSelector can match :read-write on a
803-contenteditable div
804-T}@T{
805-tests/css_selector.cc
806-T}@T{
807-T}
808-T{
809-:required
810-T}@T{
811-X
812-T}@T{
813-testSelector
814-T}@T{
815-testSelector can match a element with a pseudo class
816-T}@T{
817-tests/css_selector.cc
818-T}@T{
819-T}
820-T{
821-:right
822-T}@T{
823-/
824-T}@T{
825-T}@T{
826-T}@T{
827-T}@T{
828-Will not be supported, currently there are no plans to support printing
829-T}
830-T{
831-:root
832-T}@T{
833-X
834-T}@T{
835-testSelector
836-T}@T{
837-testSelector can match :root
838-T}@T{
839-tests/css_selector.cc
840-T}@T{
841-T}
842-T{
843-:scope
844-T}@T{
845-T}@T{
846-T}@T{
847-T}@T{
848-T}@T{
849-T}
850-T{
851-:seeking
852-T}@T{
853-T}@T{
854-T}@T{
855-T}@T{
856-T}@T{
857-Videos are not currently supported
858-T}
859-T{
860-:stalled
861-T}@T{
862-T}@T{
863-T}@T{
864-T}@T{
865-T}@T{
866-Video and Audio are not currently supported
867-T}
868-T{
869-:state()
870-T}@T{
871-T}@T{
872-T}@T{
873-T}@T{
874-T}@T{
875-Shadow DOM
876-T}
877-T{
878-:target
879-T}@T{
880-T}@T{
881-T}@T{
882-T}@T{
883-T}@T{
884-T}
885-T{
886-:target-current
887-T}@T{
888-T}@T{
889-T}@T{
890-T}@T{
891-T}@T{
892-T}
893-T{
894-:target-within
895-T}@T{
896-T}@T{
897-T}@T{
898-T}@T{
899-T}@T{
900-T}
901-T{
902-:user-invalid
903-T}@T{
904-T}@T{
905-T}@T{
906-T}@T{
907-T}@T{
908-T}
909-T{
910-:user-valid
911-T}@T{
912-T}@T{
913-T}@T{
914-T}@T{
915-T}@T{
916-T}
917-T{
918-:valid
919-T}@T{
920-T}@T{
921-T}@T{
922-T}@T{
923-T}@T{
924-T}
925-T{
926-:visited
927-T}@T{
928-T}@T{
929-T}@T{
930-T}@T{
931-T}@T{
932-T}
933-T{
934-:volume-locked
935-T}@T{
936-T}@T{
937-T}@T{
938-T}@T{
939-T}@T{
940-Video and Audio are not currently supported
941-T}
942-T{
943-:where()
944-T}@T{
945-X
946-T}@T{
947-testSelector
948-T}@T{
949-testSelector can match :where() selectors
950-T}@T{
951-tests/css_selector.cc
952-T}@T{
953-T}
954-.TE
955-.SS Pseudo Elements
956-.SS At-rules
957-.PP
958-.TS
959-tab(@);
960-lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n) lw(11.7n).
961-T{
962-Name
963-T}@T{
964-Support
965-T}@T{
966-Test Case
967-T}@T{
968-Section
969-T}@T{
970-Test File
971-T}@T{
972-Note
973-T}
974-_
975-T{
976-\[at]charset
977-T}@T{
978-/
979-T}@T{
980-T}@T{
981-T}@T{
982-T}@T{
983-UTF-8/ASCII are the only encodings supported
984-T}
985-T{
986-\[at]color-profile
987-T}@T{
988-/
989-T}@T{
990-T}@T{
991-T}@T{
992-T}@T{
993-Too new to support
994-T}
995-T{
996-\[at]container
997-T}@T{
998-T}@T{
999-T}@T{
1000-T}@T{
1001-T}@T{
1002-T}
1003-T{
1004-\[at]counter-style
1005-T}@T{
1006-T}@T{
1007-T}@T{
1008-T}@T{
1009-T}@T{
1010-T}
1011-T{
1012-\[at]font-face
1013-T}@T{
1014-T}@T{
1015-T}@T{
1016-T}@T{
1017-T}@T{
1018-T}
1019-T{
1020-\[at]font-feature-values
1021-T}@T{
1022-T}@T{
1023-T}@T{
1024-T}@T{
1025-T}@T{
1026-T}
1027-T{
1028-\[at]swash
1029-T}@T{
1030-/
1031-T}@T{
1032-T}@T{
1033-T}@T{
1034-T}@T{
1035-Subset of \[at]font-feature-values
1036-T}
1037-T{
1038-\[at]annotation
1039-T}@T{
1040-/
1041-T}@T{
1042-T}@T{
1043-T}@T{
1044-T}@T{
1045-Subset of \[at]font-feature-values
1046-T}
1047-T{
1048-\[at]ornaments
1049-T}@T{
1050-/
1051-T}@T{
1052-T}@T{
1053-T}@T{
1054-T}@T{
1055-Subset of \[at]font-feature-values
1056-T}
1057-T{
1058-\[at]stylistic
1059-T}@T{
1060-/
1061-T}@T{
1062-T}@T{
1063-T}@T{
1064-T}@T{
1065-Subset of \[at]font-feature-values
1066-T}
1067-T{
1068-\[at]styleset
1069-T}@T{
1070-/
1071-T}@T{
1072-T}@T{
1073-T}@T{
1074-T}@T{
1075-Subset of \[at]font-feature-values
1076-T}
1077-T{
1078-\[at]character-varient
1079-T}@T{
1080-/
1081-T}@T{
1082-T}@T{
1083-T}@T{
1084-T}@T{
1085-Subset of \[at]font-feature-values
1086-T}
1087-T{
1088-\[at]font-palette-values
1089-T}@T{
1090-T}@T{
1091-T}@T{
1092-T}@T{
1093-T}@T{
1094-T}
1095-T{
1096-\[at]import
1097-T}@T{
1098-T}@T{
1099-T}@T{
1100-T}@T{
1101-T}@T{
1102-Parsed where the first argument after \[at]import is the url and the
1103-last non parenthesized value if present is the layer name.
1104-Inbetween the url and the layer is the media queries.
1105-T}
1106-T{
1107-\[at]keyframes
1108-T}@T{
1109-T}@T{
1110-T}@T{
1111-T}@T{
1112-T}@T{
1113-T}
1114-T{
1115-\[at]layer
1116-T}@T{
1117-T}@T{
1118-T}@T{
1119-T}@T{
1120-T}@T{
1121-Currently setting the layer order via \[at]layer l1, l2; is not
1122-supported
1123-T}
1124-T{
1125-\[at]media
1126-T}@T{
1127-T}@T{
1128-T}@T{
1129-T}@T{
1130-T}@T{
1131-T}
1132-T{
1133-\[at]namespace
1134-T}@T{
1135-T}@T{
1136-T}@T{
1137-T}@T{
1138-T}@T{
1139-T}
1140-T{
1141-\[at]page
1142-T}@T{
1143-/
1144-T}@T{
1145-T}@T{
1146-T}@T{
1147-T}@T{
1148-Will not be supported, currently there are no plans to support printing
1149-T}
1150-T{
1151-\[at]position-try
1152-T}@T{
1153-T}@T{
1154-T}@T{
1155-T}@T{
1156-T}@T{
1157-Use this document to check support of features
1158-T}
1159-T{
1160-\[at]property
1161-T}@T{
1162-T}@T{
1163-T}@T{
1164-T}@T{
1165-T}@T{
1166-T}
1167-T{
1168-\[at]scope
1169-T}@T{
1170-T}@T{
1171-T}@T{
1172-T}@T{
1173-T}@T{
1174-Implementing this would cause some overhead
1175-T}
1176-T{
1177-\[at]starting-style
1178-T}@T{
1179-T}@T{
1180-T}@T{
1181-T}@T{
1182-T}@T{
1183-T}
1184-T{
1185-\[at]supports
1186-T}@T{
1187-/
1188-T}@T{
1189-T}@T{
1190-T}@T{
1191-T}@T{
1192-Use this document to check support of features
1193-T}
1194-T{
1195-\[at]view-transition
1196-T}@T{
1197-T}@T{
1198-T}@T{
1199-T}@T{
1200-T}@T{
1201-This is useful but will not be implemented until later
1202-T}
1203-.TE
1204-.SS Functions
1205-.SS Types
1206-.PP
1207-.TS
1208-tab(@);
1209-l l l l.
1210-T{
1211-Name
1212-T}@T{
1213-Support
1214-T}@T{
1215-Values
1216-T}@T{
1217-Note
1218-T}
1219-_
1220-T{
1221-AnyHover
1222-T}@T{
1223-X
1224-T}@T{
1225-None, Hover
1226-T}@T{
1227-T}
1228-T{
1229-AnyPointer
1230-T}@T{
1231-X
1232-T}@T{
1233-None, Fine, Coarse
1234-T}@T{
1235-T}
1236-T{
1237-Orientation
1238-T}@T{
1239-X
1240-T}@T{
1241-Landscape, Portrait
1242-T}@T{
1243-T}
1244-T{
1245-ColorScheme
1246-T}@T{
1247-X
1248-T}@T{
1249-Light, Dark
1250-T}@T{
1251-T}
1252-T{
1253-Contrast
1254-T}@T{
1255-X
1256-T}@T{
1257-NoPreference, More, Less
1258-T}@T{
1259-T}
1260-T{
1261-ReducedMotion
1262-T}@T{
1263-X
1264-T}@T{
1265-NoPreference, Reduce
1266-T}@T{
1267-T}
1268-T{
1269-ReducedTranparency
1270-T}@T{
1271-X
1272-T}@T{
1273-NoPreference, Reduce
1274-T}@T{
1275-T}
1276-T{
1277-Update
1278-T}@T{
1279-X
1280-T}@T{
1281-Fast, Slow
1282-T}@T{
1283-T}
1284-.TE
1285-.SS Descriptors
1286-.PP
1287-.TS
1288-tab(@);
1289-l l l l.
1290-T{
1291-Name
1292-T}@T{
1293-Support
1294-T}@T{
1295-Used by
1296-T}@T{
1297-Note
1298-T}
1299-_
1300-T{
1301-style
1302-T}@T{
1303-T}@T{
1304-\[at]container
1305-T}@T{
1306-T}
1307-T{
1308-scroll-state
1309-T}@T{
1310-\[at]container
1311-T}@T{
1312-T}@T{
1313-T}
1314-T{
1315-container
1316-T}@T{
1317-T}@T{
1318-\[at]container
1319-T}@T{
1320-T}
1321-.TE
1322-.SS Media Queries
1323-.PP
1324-.TS
1325-tab(@);
1326-lw(17.5n) lw(17.5n) lw(17.5n) lw(17.5n).
1327-T{
1328-Name
1329-T}@T{
1330-Support
1331-T}@T{
1332-Usage
1333-T}@T{
1334-Note
1335-T}
1336-_
1337-T{
1338-any-hover
1339-T}@T{
1340-X
1341-T}@T{
1342-window.setMouse(AnyPointer::Fine)
1343-T}@T{
1344-Will be set to AnyHover::Hover if AnyPointer is not AnyPointer::None,
1345-default AnyHover::Hover
1346-T}
1347-T{
1348-any-pointer
1349-T}@T{
1350-X
1351-T}@T{
1352-window.setMouse(AnyPointer::Coarse)
1353-T}@T{
1354-Default AnyPointer::Fine
1355-T}
1356-T{
1357-aspect-ratio
1358-T}@T{
1359-X
1360-T}@T{
1361-window.getAspectRatio()
1362-T}@T{
1363-Derived from width and height, returned as a double
1364-T}
1365-T{
1366-color
1367-T}@T{
1368-*
1369-T}@T{
1370-T}@T{
1371-All colors are stored as RGBA values
1372-T}
1373-T{
1374-color-gamut
1375-T}@T{
1376-*
1377-T}@T{
1378-T}@T{
1379-Only matches on \[lq]srgb\[rq]
1380-T}
1381-T{
1382-color-index
1383-T}@T{
1384-*
1385-T}@T{
1386-T}@T{
1387-Only matches on 0
1388-T}
1389-T{
1390-device-posture
1391-T}@T{
1392-*
1393-T}@T{
1394-T}@T{
1395-Only matches on \[lq]continuous\[rq]
1396-T}
1397-T{
1398-display-mode
1399-T}@T{
1400-*
1401-T}@T{
1402-T}@T{
1403-All applications will be \[lq]standalone\[rq]
1404-T}
1405-T{
1406-dynamic-range
1407-T}@T{
1408-*
1409-T}@T{
1410-T}@T{
1411-Only matches on \[lq]standard\[rq]
1412-T}
1413-T{
1414-forced-colors
1415-T}@T{
1416-*
1417-T}@T{
1418-T}@T{
1419-Only matches on \[lq]none\[rq]
1420-T}
1421-T{
1422-grid
1423-T}@T{
1424-*
1425-T}@T{
1426-T}@T{
1427-Only matches on 0
1428-T}
1429-T{
1430-height
1431-T}@T{
1432-X
1433-T}@T{
1434-window.setHeight(int)
1435-T}@T{
1436-Supports height, min-height, max-height
1437-T}
1438-T{
1439-hover
1440-T}@T{
1441-X
1442-T}@T{
1443-window.setMouse(AnyPointer::Fine)
1444-T}@T{
1445-Will match any-hover
1446-T}
1447-T{
1448-inverted-colors
1449-T}@T{
1450-*
1451-T}@T{
1452-T}@T{
1453-Only matches on \[lq]none\[rq]
1454-T}
1455-T{
1456-monochrome
1457-T}@T{
1458-*
1459-T}@T{
1460-T}@T{
1461-Only matches on 0
1462-T}
1463-T{
1464-orientation
1465-T}@T{
1466-X
1467-T}@T{
1468-window.setOrientation(Orientation::Portrait)
1469-T}@T{
1470-Defaults to Orientation::Landscape
1471-T}
1472-T{
1473-overflow-block
1474-T}@T{
1475-*
1476-T}@T{
1477-T}@T{
1478-Only matches on \[lq]scroll\[rq]
1479-T}
1480-T{
1481-overflow-inline
1482-T}@T{
1483-*
1484-T}@T{
1485-T}@T{
1486-Only matches on \[lq]scroll\[rq]
1487-T}
1488-T{
1489-pointer
1490-T}@T{
1491-X
1492-T}@T{
1493-window.setMouse(AnyPointer)
1494-T}@T{
1495-Will match any-pointer
1496-T}
1497-T{
1498-prefers-color-scheme
1499-T}@T{
1500-X
1501-T}@T{
1502-window.setColorScheme(ColorScheme::Dark)
1503-T}@T{
1504-Defaults to ColorScheme::Light
1505-T}
1506-T{
1507-prefers-contrast
1508-T}@T{
1509-X
1510-T}@T{
1511-window.setContrast(Contrast::Less)
1512-T}@T{
1513-Defaults to ColorScheme::NoPreference
1514-T}
1515-T{
1516-prefers-reduced-motion
1517-T}@T{
1518-X
1519-T}@T{
1520-window.setReducedMotion(ReducedMotion::Reduce)
1521-T}@T{
1522-Defaults to ReducedMotion::NoPreference
1523-T}
1524-T{
1525-prefers-reduced-transparency
1526-T}@T{
1527-X
1528-T}@T{
1529-window.setReducedTransparency(ReducedTransparency::Reduce)
1530-T}@T{
1531-Defaults to ReducedTransparency::NoPreference
1532-T}
1533-T{
1534-resolution
1535-T}@T{
1536-X
1537-T}@T{
1538-window.setResolution(int)
1539-T}@T{
1540-Defaults to 72dpi, accepts a int in dpi
1541-T}
1542-T{
1543-scripting
1544-T}@T{
1545-/
1546-T}@T{
1547-T}@T{
1548-Not needed
1549-T}
1550-T{
1551-update
1552-T}@T{
1553-X
1554-T}@T{
1555-window.setUpdate(Update::Slow)
1556-T}@T{
1557-Defaults to Update::Fast
1558-T}
1559-T{
1560-video-dynamic-range
1561-T}@T{
1562-*
1563-T}@T{
1564-T}@T{
1565-Only matches on \[lq]standard\[rq]
1566-T}
1567-T{
1568-width
1569-T}@T{
1570-X
1571-T}@T{
1572-window.setWidth(int)
1573-T}@T{
1574-Supports width, min-width, max-width
1575-T}
1576-.TE
1577-.SS Colors
1578-.PP
1579-.TS
1580-tab(@);
1581-lw(17.5n) lw(17.5n) lw(17.5n) lw(17.5n).
1582-T{
1583-Name
1584-T}@T{
1585-Support
1586-T}@T{
1587-Usage
1588-T}@T{
1589-Note
1590-T}
1591-_
1592-T{
1593-rgb
1594-T}@T{
1595-X
1596-T}@T{
1597-rgb(0-255, 0-255, 0-255)
1598-T}@T{
1599-You may use spaces instead of commas
1600-T}
1601-T{
1602-rgba
1603-T}@T{
1604-X
1605-T}@T{
1606-rgba(0-255, 0-255, 0-255 / 0-100%)
1607-T}@T{
1608-The alpha value MUST be a perent ranging from 0-100.
1609-You may also use spaces instead of commas
1610-T}
1611-T{
1612-hsl
1613-T}@T{
1614-X
1615-T}@T{
1616-hsl(0-360deg, 0-100%, 0-100%)
1617-T}@T{
1618-You may use spaces instead of commas
1619-T}
1620-T{
1621-hsla
1622-T}@T{
1623-X
1624-T}@T{
1625-hsla(0-360deg, 0-100%, 0-100% / 0-100%)
1626-T}@T{
1627-The alpha value MUST be a perent ranging from 0-100.
1628-You may also use spaces instead of commas
1629-T}
1630-T{
1631-hwb
1632-T}@T{
1633-X
1634-T}@T{
1635-hwb(0-360deg, 0-100%, 0-100% / 0-100%)
1636-T}@T{
1637-The alpha value MUST be a perent ranging from 0-100.
1638-You may also use spaces instead of commas
1639-T}
1640-T{
1641-lab
1642-T}@T{
1643-T}@T{
1644-T}@T{
1645-T}
1646-T{
1647-lch
1648-T}@T{
1649-T}@T{
1650-T}@T{
1651-T}
1652-T{
1653-oklab
1654-T}@T{
1655-T}@T{
1656-T}@T{
1657-T}
1658-T{
1659-oklch
1660-T}@T{
1661-T}@T{
1662-T}@T{
1663-T}
1664-T{
1665-color-mix
1666-T}@T{
1667-T}@T{
1668-T}@T{
1669-T}
1670-.TE
1671-.SS Types
1672-.PP
1673-.TS
1674-tab(@);
1675-lw(17.5n) lw(17.5n) lw(17.5n) lw(17.5n).
1676-T{
1677-Name
1678-T}@T{
1679-Support
1680-T}@T{
1681-Usage
1682-T}@T{
1683-Note
1684-T}
1685-_
1686-T{
1687-T}@T{
1688-X
1689-T}@T{
1690-xx-small, x-small, small, medium, large, x-large, xx-large, xxx-large
1691-T}@T{
1692-Based off of relative EM value
1693-T}
1694-T{
1695-T}@T{
1696-T}@T{
1697-T}@T{
1698-T}
1699-T{
1700-T}@T{
1701-T}@T{
1702-T}@T{
1703-T}
1704-T{
1705-T}@T{
1706-T}@T{
1707-T}@T{
1708-T}
1709-T{
1710-T}@T{
1711-X
1712-T}@T{
1713-baseline, first baseline, last baseline
1714-T}@T{
1715-Singular baseline computes to first baseline
1716-T}
1717-T{
1718-T}@T{
1719-/
1720-T}@T{
1721-T}@T{
1722-Will be impleamented in the future
1723-T}
1724-T{
1725-T}@T{
1726-/
1727-T}@T{
1728-T}@T{
1729-Will be impleamented in the future
1730-T}
1731-T{
1732-T}@T{
1733-X
1734-T}@T{
1735-content-box, padding-box, border-box, margin-box, fill-box, stroke-box,
1736-view-box
1737-T}@T{
1738-T}
1739-.TE
1740-.SS Other
1741-.PP
1742-.TS
1743-tab(@);
1744-l l l l.
1745-T{
1746-Name
1747-T}@T{
1748-Support
1749-T}@T{
1750-Usage
1751-T}@T{
1752-Note
1753-T}
1754-_
1755-T{
1756-Variables
1757-T}@T{
1758-X
1759-T}@T{
1760-\[en]
1761-T}@T{
1762-T}
1763-.TE
1764+.TH css support 2025-10-18 "grim"
1765+.Nm Grim
1766+.SH DESCRIPTION
1767+The purpose of this document is to outline the current support of the Cascade Style Sheets within the compiler.
1768+
1769+.SH Support for Selectors 
1770+.BI Testfile: tests/css_parser.cc
1771+.P
1772+Selector's are used for determining if a selector applies to a element. In grim you can use the following selectors:
1773+.RS
1774+1) A elements tag name: "h1", "body"
1775+.br
1776+2) Any attribute of an element: "[type='password']", "[custom_name='example']"
1777+.br
1778+3) The id attribute can be selected with: "#button", "#main"
1779+.br
1780+4) Classes: ".className", ".heading"
1781+.br
1782+5) Universal selector will match on everything, called with: "*"
1783+.RE
1784+
1785+.SS Nesting
1786+Multiple complex selector's can be made by nesting CSS selectors, below is a very simple version of nesting:
1787+.br
1788+.RS
1789+h1 {
1790+.RS
1791+color: red;
1792+.br
1793+b {
1794+.RS
1795+color: black;
1796+.RE
1797+}
1798+.RE
1799+}
1800+.RE
1801+.P
1802+This will compile into two CSS styles:
1803+.RS
1804+h1 {
1805+.br
1806+.RS 
1807+color: red;
1808+.RE
1809+}
1810+.br
1811+h1 b {
1812+.RS
1813+color: black;
1814+.RE
1815+}
1816+.RE
1817+.P
1818+.SS & Nesting
1819+If you would like more control of the selector building you can use the "&" value
1820+.br
1821+.RS
1822+h1 {
1823+.RS
1824+color: red;
1825+.br
1826+& b {
1827+.RS
1828+color: black;
1829+.RE
1830+}
1831+.RE
1832+}
1833+.RE
1834+.br
1835+The "&" value with be replaced with the parent's select. (It is not limited to just one "&") Here is what that compiles to:
1836+.RS
1837+h1 {
1838+.br
1839+.RS 
1840+color: red;
1841+.RE
1842+}
1843+.br
1844+b h1 {
1845+.RS
1846+color: black;
1847+.RE
1848+}
1849+.RE
1850+.P
1851+
1852+.SH Support for Combinators
1853+.BI Testfile: tests/css_selector.cc
1854+.P
1855+Selector's are used for determining if a selector applies to a element. In grim you can use the following selectors:
1856+
1857diff --git a/docs/content/features/supported-css-selectors.md b/docs/content/features/supported-css-selectors.md
1858index fdc74ab..00ceea9 100755
1859--- a/docs/content/features/supported-css-selectors.md
1860+++ b/docs/content/features/supported-css-selectors.md
1861@@ -186,12 +186,12 @@
1862 | rgba | X | rgba(0-255, 0-255, 0-255 / 0-100%) | The alpha value MUST be a perent ranging from 0-100. You may also use spaces instead of commas |
1863 | hsl | X | hsl(0-360deg, 0-100%, 0-100%) | You may use spaces instead of commas |
1864 | hsla | X | hsla(0-360deg, 0-100%, 0-100% / 0-100%) | The alpha value MUST be a perent ranging from 0-100. You may also use spaces instead of commas |
1865-| hwb | X | hwb(0-360deg, 0-100%, 0-100% / 0-100%) | The alpha value MUST be a perent ranging from 0-100. You may also use spaces instead of commas |
1866-| lab | | | |
1867-| lch | | | |
1868-| oklab | | | |
1869-| oklch | | | |
1870-| color-mix | | | |
1871+| hwb | / | | Use alternative color definition |
1872+| lab | / | | Use alternative color definition |
1873+| lch | / | | Use alternative color definition |
1874+| oklab | / | | Use alternative color definition |
1875+| oklch | / | | Use alternative color definition |
1876+| color-mix | / | | Use alternative color definition |
1877 
1878 ## Types
1879 | Name | Support | Usage | Note |
1880@@ -204,10 +204,34 @@
1881 | <basic-shape> | / | | Will be impleamented in the future |
1882 | <blend-mode> | / | | Will be impleamented in the future |
1883 | <box-edge> | X | content-box, padding-box, border-box, margin-box, fill-box, stroke-box, view-box  | |
1884-| <calc-keyword> | X | calc(NUMBER | PX | PERCENT | OPERATOR) | |
1885+| <calc-keyword> | X | calc(<number>, <dimention>, <percentage>, <function>) | |
1886 | <color> | X | | See Colors |
1887-| <content-distribution> | space-between, space-around, space-evenly, stretch | |
1888-
1889+| <content-distribution> | X | space-between, space-around, space-evenly, stretch | |
1890+| <centent-position> | X | center, start, end, flex-start, flex-end | |
1891+| <dimension> | X | px, rem, pt, ms, s, hz | |
1892+| <display-box> | X | contents, none | |
1893+| <display-inside> | X | flow, flow-root, table, flex, grid, ruby | |
1894+| <display-internal> | X | table-row-group, table-header-group, table-footer-group, table-row, table-cell, table-column-group, table-column, table-caption, ruby-base, ruby-text, ruby-base-container, ruby-text-container | |
1895+| <display-legacy> | X | inline-block, inline-table, inline-flex, inline-grid | |
1896+| <display-listitem> | X | <display-outside>, flow, flow-root, list-item | |
1897+| <display-outside> | X | block, inline, run-in | |
1898+| <easing-function> |  | <linear-easing-function>, linear, ease, ease-in, ease-out, ease-in-out, <cubic-bezier-function>, step-start, step-end, <steps-function>, jump-start, jump-end, jump-none, jump-both, start, end | |
1899+| <filter-function> | X | <blur>, <brightness>, <contrast>, <drop-shadow>, <gray-scale>, <hue-rotate>, <invert>, <opactity>, <sepia>, <saturate> | |
1900+| <frequency-percentage> | X | <frequency>, <percentage> | |
1901+| <frequency> | X | kHz, Khz, KHz, KHZ, hz, Hz, HZ, hZ | |
1902+| <generic-family> | X | serif, sans-serif, monospace, cursive, fantasy, system-ui, ui-serif, ui-sans-serif, ui-monospace, ui-rounded, math, fangsong | |
1903+| <gradient> | X | <linear-gradient>, <repeating-linear-gradient>, <radial-gradient>, <repeating-radial-gradient>, <position> | |
1904+| <side-or-corner> | / | | Use <position> instead |
1905+| <position> | X | top, left, bottom, right, center | |
1906+| <shape> | X | circle, ellipse | |
1907+| <hex-color> | X | #RGB, #RGBA, #RRGGBB, #RRGGBBAA | |
1908+| <hue-interpolation-method> | shorter hue, longer hue, increasing hue, decreasing hue | |
1909+| <hue> |  | <number>, <angle> | |
1910+| <image> |  | <url>, <image>, <image-set>, <cross-fade>, <element>, <gradient> | | 
1911+| <integer> |  | | |
1912+| <length-percentage> |  | | |
1913+| <length> | 
1914+| <>
1915 
1916 ## Other
1917 | Name | Support | Usage | Note |