commit abbd54942800409d24b36b1988ff5ad48aad98f3 Author: Julie Blanc Date: Mon Jan 19 22:14:03 2026 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..587a7e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +.zip +weaver_manager.sh +fonts/* \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..5bf5534 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,28 @@ +stages: + - update + +update_subtree: + stage: update + script: + - echo "Configuring Git user..." + - git config --global user.email "bot@csspageweaver.org" + - git config --global user.name "Update Bot" + + - echo "Updating subtree..." + - git subtree pull --prefix=csspageweaver https://gitlab.com/csspageweaver/csspageweaver.git main --squash + + # Fetch the latest changes from the remote to compare + - git fetch origin + + # Check if there are any changes to push + - | + if git diff --quiet origin/main; then + echo "No changes to push." + else + echo "Pushing changes..." + git push https://oauth2:${ACCESS_TOKEN}@gitlab.com/csspageweaver/boilerplate.git HEAD:main + fi + + only: + - schedules + - triggered diff --git a/ReadMe.md b/ReadMe.md new file mode 100644 index 0000000..1f42a3f --- /dev/null +++ b/ReadMe.md @@ -0,0 +1,10 @@ +# Book + + +## PAndoc command line + +``` +pandoc src/input.docx \ + --lua-filter=lua/add-style-as-class.lua \ + -o src/output.html +``` \ No newline at end of file diff --git a/css/modules/_footnotes.scss b/css/modules/_footnotes.scss new file mode 100644 index 0000000..8284658 --- /dev/null +++ b/css/modules/_footnotes.scss @@ -0,0 +1,39 @@ +@page { + @footnote { + float: bottom; + + } + } + + .pagedjs_footnote_content{ + padding-top: calc(var(--baseline)*1); + } + +.inline-note { + float: footnote; + font-size: 9px; + line-height: calc(var(--baseline)*0.9); + padding-left: var(--indent); + position: relative; + font-weight: 100; + + &::marker{ + display: none; + content: ""; + } + +} + + +[data-counter-note]{ +&::before{ + content: attr(data-counter-note) "."; + position: absolute; + // left: calc(var(--indent)*-1); + left: 0px; + } +} + +[data-footnote-call]{ + font-size: 9px; +} diff --git a/css/modules/_init.scss b/css/modules/_init.scss new file mode 100644 index 0000000..7516d89 --- /dev/null +++ b/css/modules/_init.scss @@ -0,0 +1,20 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +a { + color: currentColor; +} + +body { + -webkit-font-smoothing: antialiased; /* Chrome, Safari, iOS */ + -moz-osx-font-smoothing: grayscale; /* Firefox macOS */ + + text-rendering: optimizeLegibility; /* meilleure lisibilité, ligatures, kerning */ + font-feature-settings: "liga" 1; /* active les ligatures si la police les supporte */ + + font-family: var(--font); + font-size: var(--font-size); + line-height: var(--baseline); +} \ No newline at end of file diff --git a/css/modules/_layout.scss b/css/modules/_layout.scss new file mode 100644 index 0000000..278356f --- /dev/null +++ b/css/modules/_layout.scss @@ -0,0 +1,79 @@ +@media print { + @page { + size: 134mm 205mm; + // size: 150mm 220mm; + margin-top: 67px; + margin-bottom: 10mm; + margin-left: 10mm; + margin-right: 10mm; + bleed: 6mm; + marks: crop; + } + @page:left { + margin-left: 12mm; + margin-right: 32mm; + @top-left { + content: counter(page); + } + // @top-right { + // content: "Höchstpersönlichkeit"; + // font-variant-caps: small-caps; + // letter-spacing: 0.01em; + // } + } + @page:right { + margin-left: 32mm; + margin-right: 12mm; + @top-right { + content: counter(page); + } + @top-left { + content: "Höchstpersönlichkeit"; + font-variant-caps: small-caps; + letter-spacing: 0.05em; + } + + } + @page:first { + @top-left-corner { content: none; } + @top-left { content: none; } + @top-center { content: none; } + @top-right { content: none; } + @top-right-corner { content: none; } + @left-top { content: none; } + @left-middle { content: none; } + @left-bottom { content: none; } + @right-top { content: none; } + @right-middle { content: none; } + @right-bottom { content: none; } + @bottom-left-corner { content: none; } + @bottom-left { content: none; } + @bottom-center { content: none; } + @bottom-right { content: none; } + @bottom-right-corner { content: none; } + } + @page:blank { + @top-left-corner { content: none; } + @top-left { content: none; } + @top-center { content: none; } + @top-right { content: none; } + @top-right-corner { content: none; } + @left-top { content: none; } + @left-middle { content: none; } + @left-bottom { content: none; } + @right-top { content: none; } + @right-middle { content: none; } + @right-bottom { content: none; } + @bottom-left-corner { content: none; } + @bottom-left { content: none; } + @bottom-center { content: none; } + @bottom-right { content: none; } + @bottom-right-corner { content: none; } + } +} + + +#section__content{ + break-before: right; + +} \ No newline at end of file diff --git a/css/modules/_list-of-abbr.scss b/css/modules/_list-of-abbr.scss new file mode 100644 index 0000000..dc9bed9 --- /dev/null +++ b/css/modules/_list-of-abbr.scss @@ -0,0 +1,4 @@ +#section__list-of-abbr{ + display: none; + color: red; +} \ No newline at end of file diff --git a/css/modules/_text.scss b/css/modules/_text.scss new file mode 100644 index 0000000..0fd8176 --- /dev/null +++ b/css/modules/_text.scss @@ -0,0 +1,108 @@ +sup{ + line-height: 0; +} + +hr{ + border: none; + height: var(--baseline); +} + +a{ + color: currentColor; + text-decoration: none; +} + +p{ + text-align: justify; + orphans: 2; + widows: 2; +} + +p, li{ + hyphens: auto; + hyphenate-limit-chars: 7 3 4; + hyphenate-limit-lines: 2; + hyphenate-limit-zone: 8%; + word-spacing: -0.004em; +} + + + +ol[type="1"]{ + list-style-type: none; + position: relative; + break-after: avoid; + + position: absolute; + left: calc(var(--indent)*-3); + &::before{ + content: attr(start); + font-family: var(--font-sans); + // font-weight: 200; + font-size: 0.6rem; + color: #999; + display: block; + padding: 0px 2px; + border: 1px solid #efefef; + + min-width: 1.5ch; + display: flex; + justify-content: center; + } + + + +} + +.pagedjs_left_page{ + ol[type="1"] { + left: inherit; + right: calc(var(--indent)*-3); + } +} + +p + p, +ol[type="1"] + p{ + text-indent: calc(var(--indent)*0.5); +} + + + +blockquote{ + padding-left: var(--indent); + margin-top: calc(var(--baseline)*1); + margin-bottom: calc(var(--baseline)*1); + + p{ + font-style: italic; + em{ + font-style: normal; + } + } + + + u{ + font-variant: small-caps; + text-decoration: none; + } + +} + +blockquote + ol + p{ text-indent: 0px; } + + + +.these{ + &::before{ + content: "---" + } + &::after{ + content: "---"; + } + &::before, &::after{ + display: flex; + // width: 3ch; + justify-content: center; + } + +} \ No newline at end of file diff --git a/css/modules/_titles-counters.scss b/css/modules/_titles-counters.scss new file mode 100644 index 0000000..efd6adc --- /dev/null +++ b/css/modules/_titles-counters.scss @@ -0,0 +1,50 @@ +#section__content{ + + counter-reset: h1; + + h1{ + counter-increment: h1 1; + counter-reset: h2; + } + + h1::before{ + content: counter(h1, upper-alpha); + + } + + h2{ + counter-increment: h2 1; + counter-reset: h3; + } + + h2::before{ + content: counter(h2, upper-roman); + } + + h3{ + counter-increment: h3 1; + counter-reset: h4; + } + + h3::before{ + content: counter(h3); + } + + h4{ + counter-increment: h4 1; + counter-reset: h5; + } + + h4::before{ + content: counter(h4, lower-alpha) ". "; + } + + h5{ + counter-increment: h5 1; + counter-reset: h6; + } + + h5::before{ + content: counter(h5, lower-alpha) counter(h5, lower-alpha) ". "; + } + } \ No newline at end of file diff --git a/css/modules/_titles.scss b/css/modules/_titles.scss new file mode 100644 index 0000000..b26db1e --- /dev/null +++ b/css/modules/_titles.scss @@ -0,0 +1,124 @@ + +#section__content{ + + + h1, h2, h3 { + break-inside: avoid; + break-after: avoid; + + /* hack for avoiding break-after */ + margin-bottom: calc(var(--baseline)*-3); + &::after{ + content: ''; + display: block; + height: calc(var(--baseline)*3); + // background-color: rgba(255, 255, 0, 0.595); + } + } + + + h1 + ol + p, + h2 + ol + p, + h3 + ol + p, + h4 + ol + p, + h5 + ol + p, + h6 + ol + p{ + text-indent: 0; + } + + h1{ + font-family: var(--font-title); + font-weight: normal; + font-size: 1.5rem; + line-height: calc(var(--baseline)*1.4); + text-align: center; + position: relative; + margin-top: calc(var(--baseline)*3 - 3px); + padding-bottom: calc(var(--baseline)*1); + padding-left: 1ch; + padding-right: 1ch; + &::before{ + display: block; + font-size: 1rem; + + } + } + + h1:first-of-type{ + margin-top: 3px!important; + } + + + + + h2{ + font-family: var(--font-title); + font-weight: normal; + font-size: 1.3rem; + line-height: calc(var(--baseline)*1.2); + + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline)*1 + 9px); + padding-bottom: calc(var(--baseline)*1); + &::before{ + position: absolute; + left: 0; + } + } + + h3{ + font-family: var(--font-sans); + font-weight: normal; + font-size: 1rem; + line-height: calc(var(--baseline)*1); + + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline)*1 + 9px); + padding-bottom: calc(var(--baseline)*1); + &::before{ + // font-family: 'Helixotrope 4'; + // font-size: var(--font-size); + // font-weight: bold; + position: absolute; + left: 0; + } + } + + h4{ + font-family: var(--font-sans); + font-weight: normal; + font-size: 0.8rem; + line-height: calc(var(--baseline)*1); + + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline)*0.5); + margin-bottom: calc(var(--baseline)*0.5); + font-weight: 500; + + } + + + h5{ + font-family: var(--font-sans); + font-weight: normal; + font-size: 0.7rem; + line-height: calc(var(--baseline)*1); + position: relative; + margin-top: calc(var(--baseline)*0.75); + margin-bottom: calc(var(--baseline)*0.25); + + } + + + +} + +[data-id="section__content"][data-split-from] > :first-child { + margin-top: 0; +} \ No newline at end of file diff --git a/css/modules/_var.scss b/css/modules/_var.scss new file mode 100644 index 0000000..3b7e71a --- /dev/null +++ b/css/modules/_var.scss @@ -0,0 +1,11 @@ +:root{ + --font: 'Edgar', sans-serif; + --font-title: "Heliotrope 3 Caps", sans-serif; + --font-sans: "Heliotrope 4", sans-serif; + --font-size: 12px; + --baseline: 16px; + + --indent: 26px; +} + + diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..f500709 --- /dev/null +++ b/css/style.css @@ -0,0 +1,427 @@ +@charset "UTF-8"; +:root { + --font: "Edgar", sans-serif; + --font-title: "Heliotrope 3 Caps", sans-serif; + --font-sans: "Heliotrope 4", sans-serif; + --font-size: 12px; + --baseline: 16px; + --indent: 26px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +a { + color: currentColor; +} + +body { + -webkit-font-smoothing: antialiased; /* Chrome, Safari, iOS */ + -moz-osx-font-smoothing: grayscale; /* Firefox macOS */ + text-rendering: optimizeLegibility; /* meilleure lisibilité, ligatures, kerning */ + font-feature-settings: "liga" 1; /* active les ligatures si la police les supporte */ + font-family: var(--font); + font-size: var(--font-size); + line-height: var(--baseline); +} + +@media print { + @page { + size: 134mm 205mm; + margin-top: 67px; + margin-bottom: 10mm; + margin-left: 10mm; + margin-right: 10mm; + bleed: 6mm; + marks: crop; + } + @page :left { + margin-left: 12mm; + margin-right: 32mm; + @top-left { + content: counter(page); + } + } + @page :right { + margin-left: 32mm; + margin-right: 12mm; + @top-right { + content: counter(page); + } + @top-left { + content: "Höchstpersönlichkeit"; + font-variant-caps: small-caps; + letter-spacing: 0.05em; + } + } + @page :first { + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + @left-top { + content: none; + } + @left-middle { + content: none; + } + @left-bottom { + content: none; + } + @right-top { + content: none; + } + @right-middle { + content: none; + } + @right-bottom { + content: none; + } + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } + } + @page :blank { + @top-left-corner { + content: none; + } + @top-left { + content: none; + } + @top-center { + content: none; + } + @top-right { + content: none; + } + @top-right-corner { + content: none; + } + @left-top { + content: none; + } + @left-middle { + content: none; + } + @left-bottom { + content: none; + } + @right-top { + content: none; + } + @right-middle { + content: none; + } + @right-bottom { + content: none; + } + @bottom-left-corner { + content: none; + } + @bottom-left { + content: none; + } + @bottom-center { + content: none; + } + @bottom-right { + content: none; + } + @bottom-right-corner { + content: none; + } + } +} +#section__content { + -moz-column-break-before: right; + break-before: right; +} + +sup { + line-height: 0; +} + +hr { + border: none; + height: var(--baseline); +} + +a { + color: currentColor; + text-decoration: none; +} + +p { + text-align: justify; + orphans: 2; + widows: 2; +} + +p, li { + -webkit-hyphens: auto; + hyphens: auto; + hyphenate-limit-chars: 7 3 4; + hyphenate-limit-lines: 2; + hyphenate-limit-zone: 8%; + word-spacing: -0.004em; +} + +ol[type="1"] { + list-style-type: none; + position: relative; + -moz-column-break-after: avoid; + break-after: avoid; + position: absolute; + left: calc(var(--indent) * -3); +} +ol[type="1"]::before { + content: attr(start); + font-family: var(--font-sans); + font-size: 0.6rem; + color: #999; + display: block; + padding: 0px 2px; + border: 1px solid #efefef; + min-width: 1.5ch; + display: flex; + justify-content: center; +} + +.pagedjs_left_page ol[type="1"] { + left: inherit; + right: calc(var(--indent) * -3); +} + +p + p, +ol[type="1"] + p { + text-indent: calc(var(--indent) * 0.5); +} + +blockquote { + padding-left: var(--indent); + margin-top: calc(var(--baseline) * 1); + margin-bottom: calc(var(--baseline) * 1); +} +blockquote p { + font-style: italic; +} +blockquote p em { + font-style: normal; +} +blockquote u { + font-variant: small-caps; + text-decoration: none; +} + +blockquote + ol + p { + text-indent: 0px; +} + +.these::before { + content: "---"; +} +.these::after { + content: "---"; +} +.these::before, .these::after { + display: flex; + justify-content: center; +} + +#section__content { + counter-reset: h1; +} +#section__content h1 { + counter-increment: h1 1; + counter-reset: h2; +} +#section__content h1::before { + content: counter(h1, upper-alpha); +} +#section__content h2 { + counter-increment: h2 1; + counter-reset: h3; +} +#section__content h2::before { + content: counter(h2, upper-roman); +} +#section__content h3 { + counter-increment: h3 1; + counter-reset: h4; +} +#section__content h3::before { + content: counter(h3); +} +#section__content h4 { + counter-increment: h4 1; + counter-reset: h5; +} +#section__content h4::before { + content: counter(h4, lower-alpha) ". "; +} +#section__content h5 { + counter-increment: h5 1; + counter-reset: h6; +} +#section__content h5::before { + content: counter(h5, lower-alpha) counter(h5, lower-alpha) ". "; +} + +#section__content h1, #section__content h2, #section__content h3 { + -moz-column-break-inside: avoid; + break-inside: avoid; + -moz-column-break-after: avoid; + break-after: avoid; + /* hack for avoiding break-after */ + margin-bottom: calc(var(--baseline) * -3); +} +#section__content h1::after, #section__content h2::after, #section__content h3::after { + content: ""; + display: block; + height: calc(var(--baseline) * 3); +} +#section__content h1 + ol + p, +#section__content h2 + ol + p, +#section__content h3 + ol + p, +#section__content h4 + ol + p, +#section__content h5 + ol + p, +#section__content h6 + ol + p { + text-indent: 0; +} +#section__content h1 { + font-family: var(--font-title); + font-weight: normal; + font-size: 1.5rem; + line-height: calc(var(--baseline) * 1.4); + text-align: center; + position: relative; + margin-top: calc(var(--baseline) * 3 - 3px); + padding-bottom: calc(var(--baseline) * 1); + padding-left: 1ch; + padding-right: 1ch; +} +#section__content h1::before { + display: block; + font-size: 1rem; +} +#section__content h1:first-of-type { + margin-top: 3px !important; +} +#section__content h2 { + font-family: var(--font-title); + font-weight: normal; + font-size: 1.3rem; + line-height: calc(var(--baseline) * 1.2); + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline) * 1 + 9px); + padding-bottom: calc(var(--baseline) * 1); +} +#section__content h2::before { + position: absolute; + left: 0; +} +#section__content h3 { + font-family: var(--font-sans); + font-weight: normal; + font-size: 1rem; + line-height: calc(var(--baseline) * 1); + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline) * 1 + 9px); + padding-bottom: calc(var(--baseline) * 1); +} +#section__content h3::before { + position: absolute; + left: 0; +} +#section__content h4 { + font-family: var(--font-sans); + font-weight: normal; + font-size: 0.8rem; + line-height: calc(var(--baseline) * 1); + text-align: right; + padding-left: 3ch; + position: relative; + margin-top: calc(var(--baseline) * 0.5); + margin-bottom: calc(var(--baseline) * 0.5); + font-weight: 500; +} +#section__content h5 { + font-family: var(--font-sans); + font-weight: normal; + font-size: 0.7rem; + line-height: calc(var(--baseline) * 1); + position: relative; + margin-top: calc(var(--baseline) * 0.75); + margin-bottom: calc(var(--baseline) * 0.25); +} + +[data-id=section__content][data-split-from] > :first-child { + margin-top: 0; +} + +@page { + @footnote { + float: bottom; + } +} +.pagedjs_footnote_content { + padding-top: calc(var(--baseline) * 1); +} + +.inline-note { + float: footnote; + font-size: 9px; + line-height: calc(var(--baseline) * 0.9); + padding-left: var(--indent); + position: relative; + font-weight: 100; +} +.inline-note::marker { + display: none; + content: ""; +} + +[data-counter-note]::before { + content: attr(data-counter-note) "."; + position: absolute; + left: 0px; +} + +[data-footnote-call] { + font-size: 9px; +} + +#section__list-of-abbr { + display: none; + color: red; +}/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/css/style.css.map b/css/style.css.map new file mode 100644 index 0000000..fc0a9af --- /dev/null +++ b/css/style.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["style.css","modules/_var.scss","modules/_init.scss","modules/_layout.scss","modules/_text.scss","modules/_titles-counters.scss","modules/_titles.scss","modules/_footnotes.scss","modules/_list-of-abbr.scss"],"names":[],"mappings":"AAAA,gBAAgB;ACAhB;EACI,2BAAA;EACA,6CAAA;EACA,uCAAA;EACA,iBAAA;EACA,gBAAA;EAEA,cAAA;ADCJ;;AERA;EACI,SAAA;EACA,UAAA;EACA,sBAAA;AFWJ;;AETA;EACI,mBAAA;AFYJ;;AETA;EACI,mCAAA,EAAA,wBAAA;EACA,kCAAA,EAAA,kBAAA;EAEA,kCAAA,EAAA,6CAAA;EACA,+BAAA,EAAA,mDAAA;EAEA,wBAAA;EACA,2BAAA;EACA,4BAAA;AFUJ;;AG5BA;EACI;IACI,iBAAA;IAEA,gBAAA;IACA,mBAAA;IACA,iBAAA;IACA,kBAAA;IACA,UAAA;IACA,WAAA;EH8BN;EG5BE;IACI,iBAAA;IACA,kBAAA;IACA;MACI,sBAAA;IH8BR;EACF;EGvBE;IACI,iBAAA;IACA,kBAAA;IACA;MACI,sBAAA;IHyBR;IGvBI;MACI,+BAAA;MACA,6BAAA;MACA,sBAAA;IHyBR;EACF;EGtBE;IACI;MAAmB,aAAA;IHyBvB;IGxBI;MAAY,aAAA;IH2BhB;IG1BI;MAAc,aAAA;IH6BlB;IG5BI;MAAa,aAAA;IH+BjB;IG9BI;MAAoB,aAAA;IHiCxB;IGhCI;MAAY,aAAA;IHmChB;IGlCI;MAAe,aAAA;IHqCnB;IGpCI;MAAe,aAAA;IHuCnB;IGtCI;MAAa,aAAA;IHyCjB;IGxCI;MAAgB,aAAA;IH2CpB;IG1CI;MAAgB,aAAA;IH6CpB;IG5CI;MAAsB,aAAA;IH+C1B;IG9CI;MAAe,aAAA;IHiDnB;IGhDI;MAAiB,aAAA;IHmDrB;IGlDI;MAAgB,aAAA;IHqDpB;IGpDI;MAAuB,aAAA;IHuD3B;EACF;EGtDE;IACI;MAAmB,aAAA;IHyDvB;IGxDI;MAAY,aAAA;IH2DhB;IG1DI;MAAc,aAAA;IH6DlB;IG5DI;MAAa,aAAA;IH+DjB;IG9DI;MAAoB,aAAA;IHiExB;IGhEI;MAAY,aAAA;IHmEhB;IGlEI;MAAe,aAAA;IHqEnB;IGpEI;MAAe,aAAA;IHuEnB;IGtEI;MAAa,aAAA;IHyEjB;IGxEI;MAAgB,aAAA;IH2EpB;IG1EI;MAAgB,aAAA;IH6EpB;IG5EI;MAAsB,aAAA;IH+E1B;IG9EI;MAAe,aAAA;IHiFnB;IGhFI;MAAiB,aAAA;IHmFrB;IGlFI;MAAgB,aAAA;IHqFpB;IGpFI;MAAuB,aAAA;IHuF3B;EACF;AACF;AGpFA;EACI,+BAAA;OAAA,mBAAA;AHsFJ;;AIlKA;EACI,cAAA;AJqKJ;;AIlKA;EACI,YAAA;EACA,uBAAA;AJqKJ;;AIlKA;EACI,mBAAA;EACA,qBAAA;AJqKJ;;AIlKA;EACI,mBAAA;EACA,UAAA;EACA,SAAA;AJqKJ;;AIlKA;EACI,qBAAA;UAAA,aAAA;EACA,4BAAA;EACA,wBAAA;EACA,wBAAA;EACA,sBAAA;AJqKJ;;AIhKA;EACI,qBAAA;EACA,kBAAA;EACA,8BAAA;OAAA,kBAAA;EAEA,kBAAA;EACA,8BAAA;AJkKJ;AIjKI;EACI,oBAAA;EACA,6BAAA;EAEA,iBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;EACA,yBAAA;EAEA,gBAAA;EACA,aAAA;EACA,uBAAA;AJiKR;;AIzJI;EACI,aAAA;EACA,+BAAA;AJ4JR;;AIxJA;;EAEI,sCAAA;AJ2JJ;;AItJA;EACI,2BAAA;EACA,qCAAA;EACA,wCAAA;AJyJJ;AIvJI;EACI,kBAAA;AJyJR;AIxJQ;EACI,kBAAA;AJ0JZ;AIrJI;EACM,wBAAA;EACA,qBAAA;AJuJV;;AIlJA;EAAqB,gBAAA;AJsJrB;;AIjJI;EACI,cAAA;AJoJR;AIlJI;EACI,cAAA;AJoJR;AIlJI;EACI,aAAA;EAEA,uBAAA;AJmJR;;AK3PA;EAEI,iBAAA;AL6PJ;AK3PI;EACI,uBAAA;EACA,iBAAA;AL6PR;AK1PI;EACI,iCAAA;AL4PR;AKxPI;EACI,uBAAA;EACA,iBAAA;AL0PR;AKvPI;EACI,iCAAA;ALyPR;AKtPK;EACG,uBAAA;EACA,iBAAA;ALwPR;AKrPI;EACI,oBAAA;ALuPR;AKpPI;EACI,uBAAA;EACA,iBAAA;ALsPR;AKnPI;EACI,sCAAA;ALqPR;AKlPI;EACI,uBAAA;EACA,iBAAA;ALoPR;AKjPI;EACI,+DAAA;ALmPR;;AM9RI;EACI,+BAAA;OAAA,mBAAA;EACA,8BAAA;OAAA,kBAAA;EAEA,kCAAA;EACA,yCAAA;ANgSR;AM/RQ;EACI,WAAA;EACA,cAAA;EACA,iCAAA;ANiSZ;AM3RI;;;;;;EAMI,cAAA;AN6RR;AM1RI;EACI,8BAAA;EACA,mBAAA;EACA,iBAAA;EACA,wCAAA;EACA,kBAAA;EACA,kBAAA;EACA,2CAAA;EACA,yCAAA;EACA,iBAAA;EACA,kBAAA;AN4RR;AM3RQ;EACI,cAAA;EACA,eAAA;AN6RZ;AMxRI;EACI,0BAAA;AN0RR;AMpRI;EACI,8BAAA;EACA,mBAAA;EACA,iBAAA;EACA,wCAAA;EAEA,iBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2CAAA;EACA,yCAAA;ANqRR;AMpRQ;EACI,kBAAA;EACA,OAAA;ANsRZ;AMlRI;EACI,6BAAA;EACA,mBAAA;EACA,eAAA;EACA,sCAAA;EAEA,iBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2CAAA;EACA,yCAAA;ANmRR;AMlRQ;EAII,kBAAA;EACA,OAAA;ANiRZ;AM7QI;EACI,6BAAA;EACA,mBAAA;EACA,iBAAA;EACA,sCAAA;EAEA,iBAAA;EACA,iBAAA;EACA,kBAAA;EACC,uCAAA;EACD,0CAAA;EACA,gBAAA;AN8QR;AMzQI;EACI,6BAAA;EACA,mBAAA;EACA,iBAAA;EACA,sCAAA;EACA,kBAAA;EACA,wCAAA;EACA,2CAAA;AN2QR;;AMnQA;EACQ,aAAA;ANsQR;;AOhYA;EACI;IACE,aAAA;EPmYJ;AACF;AO/XE;EACA,sCAAA;APiYF;;AO9XA;EACE,eAAA;EACA,cAAA;EACA,wCAAA;EACA,2BAAA;EACA,kBAAA;EACA,gBAAA;APiYF;AO/XE;EACE,aAAA;EACA,WAAA;APiYJ;;AO1XA;EACI,oCAAA;EACA,kBAAA;EAEA,SAAA;AP4XJ;;AOxXA;EACM,cAAA;AP2XN;;AQhaA;EACI,aAAA;EACA,UAAA;ARmaJ","file":"style.css"} \ No newline at end of file diff --git a/css/style.scss b/css/style.scss new file mode 100644 index 0000000..d81f558 --- /dev/null +++ b/css/style.scss @@ -0,0 +1,9 @@ +@charset "UTF-8"; +@import 'modules/var'; +@import 'modules/init'; +@import 'modules/layout'; +@import 'modules/text'; +@import 'modules/titles-counters'; +@import 'modules/titles'; +@import 'modules/footnotes'; +@import 'modules/list-of-abbr'; \ No newline at end of file diff --git a/csspageweaver/.gitignore b/csspageweaver/.gitignore new file mode 100644 index 0000000..496ee2c --- /dev/null +++ b/csspageweaver/.gitignore @@ -0,0 +1 @@ +.DS_Store \ No newline at end of file diff --git a/csspageweaver/.gitlab-ci.yml b/csspageweaver/.gitlab-ci.yml new file mode 100644 index 0000000..6ba6a80 --- /dev/null +++ b/csspageweaver/.gitlab-ci.yml @@ -0,0 +1,104 @@ +stages: + - prepare + - release + +# This job compile CSS Page Weaver and few plugins +prepare_job: + stage: prepare + image: ubuntu:latest + rules: + - if: $CI_COMMIT_TAG + before_script: + - apt-get update && apt-get install -y git curl jq zip bash + - git config --global user.email "csspageweaver@csspageweaver.org" + - git config --global user.name "Automated Releaser" + script: + + - | + # Store Job ID since next stage (release_job) link to current job artifacts + echo "ARTIFACTS_JOB=$CI_JOB_ID" >> build.env + + - | + # create plugins folder if needed + mkdir -p plugins + + - | + # Set plugins list + REPO_LIST=( + "baseline" + "grid" + "imposition" + "marginBox" + "spread" + "previewPage" + "reloadInPlace" + ) + + - | + # Add listed plugins as git subtree. Need deployment tokens if repos are private + for REPO in "${REPO_LIST[@]}"; do + SUBTREE_URL="https://gitlab.com/csspageweaver/plugins/${REPO}.git" + git subtree add --prefix="plugins/$REPO" "$SUBTREE_URL" main --squash + done + + - | + # Define the pluginsParameters object + PLUGINS_PARAMETERS='{ + "baseline": { + "size": 16, + "position": 0 + }, + "reloadInPlace": { + "blur": false, + "behavior": "instant" + } + }' + + - | + # Add plugin list to manifest + MANIFEST_PATH="manifest.json" + PLUGINS_ENTRY=$(jq --arg repos "${REPO_LIST[*]}" '.plugins = ($repos | split(" "))' "$MANIFEST_PATH") + echo "$PLUGINS_ENTRY" > "$MANIFEST_PATH" + + - | + # Add plugin parameters to manifest + PARAMETERS_PLUGINS_ENTRY=$(jq --argjson pluginsParameters "$PLUGINS_PARAMETERS" '.pluginsParameters = $pluginsParameters' "$MANIFEST_PATH") + echo "$PARAMETERS_PLUGINS_ENTRY" > "$MANIFEST_PATH" + + - | + # create folder + mkdir -p csspageweaver + + # Copy releveant folder and file to a csspageweaver folder + cp -r interface/ lib/ modules/ plugins/ csspageweaver/ + cp main.js manifest.json README.md .gitignore csspageweaver/ + + + artifacts: + name: csspageweaver-core-$CI_COMMIT_TAG + paths: + - csspageweaver/ + reports: + dotenv: build.env + expire_in: never + +# This job create a release based on previous artifact +release_job: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:latest + needs: + - job: prepare_job + artifacts: true + rules: + - if: $CI_COMMIT_TAG + script: + - echo "running release_job for $CI_COMMIT_TAG " + release: + name: 'Release $CI_COMMIT_TAG' + tag_name: '$CI_COMMIT_TAG' + ref: '$CI_COMMIT_SHA' + description: 'Auto release' + assets: + links: + - name: '👉 CSS Page Weaver with plugins embed' + url: 'https://gitlab.com/csspageweaver/csspageweaver/-/jobs/$ARTIFACTS_JOB/artifacts/download' diff --git a/csspageweaver/README.md b/csspageweaver/README.md new file mode 100644 index 0000000..6d48bef --- /dev/null +++ b/csspageweaver/README.md @@ -0,0 +1,177 @@ +# CSS Page Weaver + +![Interface](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/uploads/e724d6782600c30bc1b8d1ad56b24217/_screen_copie.webp) + +CSS Page Weaver is a browser-based publishing tool, made up of [PagedJs](https://pagedjs.org/about/) library and modulars additionals features. While it's design to ease installation for beginners CSS Page Weaver also bring elegant and extendable solution for more advanced users. + +## ✨ Features + +- **Streamlined and Ready-to-Use**: Get started quickly with a standardized way to integrate features. +- **Extensive Plugin Library**: No need to reinvent the wheel with the available plugins. +- **WYSIWYG Editor**: Streamline your design pratice with an extandable interface. +- **Create and Share Plugins**: Develop and share your own plugins easily. + +## ⛵ Getting Started + +### Prerequisites + +- A local web server + +### 🪴 Installation (fastest way) + +If you feel a bit lost with following instruction, you should probably look at the [CSS Page Weaver compiled with a few plugins](https://gitlab.com/csspageweaver/csspageweaver/-/releases) + +Integrate it at the root level of your page and add a link to `csspageweaver` main _module_ into your HTML template + +```html + +``` + +*Do you need to also install PagedJs? Nope! CSS Page Weaver already embed it.* + +### Use + +Run a simple server. That's it! + +### Boilerplate + +Don't have a project to test it? There is [a ready-to-use boilerplate](https://gitlab.com/csspageweaver//boilerplate). Download, unzip & run a server! + + +## 🚀 Going further + +### 🌲 Installation (complete way) + +Released version on CSS Page Weaver is compiled with few plugins. You can install the package yourself for greater control. + +#### Clone CSS Page Weaver repo in your project [option A]. + +```bash +# With HTTPS +git clone https://gitlab.com/csspageweaver/csspageweaver.git + +# With SSH +git clone git@gitlab.com:csspageweaver/csspageweaver.git +``` +#### Clone CSS Page Weaver as a git subtree [option B]. + +Subtree are great to: +- embed CSS Page Weaver repo in another repo +- get updates + +```bash + git subtree add --prefix csspageweaver/ git@gitlab.com:csspageweaver/cssPageWeaver.git --squash +``` + +### 🔌 Dependencies + +CSS Page Weaver is designed to work with plugins. In this complete installation, you need to install plugins by yourself. If you've downloaded [the last release of CSS Page Weaver](https://gitlab.com/csspageweaver/csspageweaver/-/releases), few plugins are already embedded. + +**Here is a [list of all plugins](https://gitlab.com/csspageweaver//plugins) known.** + +**Steps** + +1. Download and place plugin folder in `csspageweaver/plugins` +2. Add plugin to manifest + +#### Installation as subtree + +We prefer to install plugins using Git Subtree because it allows us to easily preserve the filiation link with the plugin directory (and to obtain updates!). + +Bear in mind, if you're not comfortable with command lines, that *step 1* can easily be replaced by a simple *download, drag and drop*. + +Otherwise, here is how it works. + +##### (Step 1) Clone plugin as a subtree + +Install plugin as a submodule of `csspageweaver` + +```bash + git subtree add --prefix="csspageweaver/plugins/{{PLUGIN_FOLDER_NAME}}" git@gitlab.com:csspageweaver/plugins/{{PLUGIN_NAME}}.git --squash +``` + +##### (Step 2) Add plugin to manifest + +Almost done. Add a mention to `csspageweaver/manifest.json` + +```json +{ + "plugins": [ + // existing plugin, + "PLUGIN_FOLDER_NAME" + ], +} +``` + +Look at complete [plugins list](https://gitlab.com/csspageweaver/plugins) and [plugins installation guide](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/design/plugins/install) + +#### Update as subtree + +This is where Git subtrees are wonderful + +```bash +git subtree pull --prefix="csspageweaver/plugins/{{PLUGIN_NAME}}" main --squash +``` + +A bit dazed? Don't worry. Once again, you can update your plugins with your favorite *download, unzip, drag and drop* shady method. + +### 🎁 Package manager + +You already like the principle of subtrees, but you think (rightly) that the multiplication of command lines can be a bit tedious in the long run? Installation and dependencies can me handle with our [Package Manager](https://gitlab.com/csspageweaver/package-manager) + +**Install CSS Page Weaver and plugins with package manager** + +```bash +./weaver_manager.sh --install +``` + +**Get update with package manager** + +```bash +./weaver_manager.sh --pull +``` + +See [Package Manager repository](https://gitlab.com/csspageweaver-toolkit/package_manager) and [further documentation on managing your installation](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/maintain_and_develop/core/5-manage_csspageweaver_integration) + + + +## 🔄 Customization + +### Basic Information + +Edit `csspageweaver/manifest.json` to declare: +- Plugins +- Plugins configuration +- Stylesheets +- Your custom hooks + +### CSS Page Weaver behavior (advanced) + +Edit `csspageweaver/main.js` to: +- disable Common dictionary +- disable Interface +- Choose render method + +## 🎓 Documentation + +A complete [documentation is available](https://gitlab.com/csspageweaver/csspageweaver/-/wikis/home) + +## 📝 License + +This project is licensed under the MIT License + +## 👏 Acknowledgements + +CSS Page Weaver is based on [PagedJs](https://pagedjs.org/about/) by Coko Foundation. + +CSS Page Weaver is an original idea of Julie Blanc ehanced by Benjamin G. +Julien Taquet was a great help in reimagining the rendering module. Finally, Nicolas Taffin and Julien Bidoret helped to oversee this tool. + +All CSS Page Weaver plugins remains linked to their original creators. +Without them, GUI would remain an empty shell. Thanks 🙏 + +## 🙌 Contributing + +Features and documentation requests are welcome! Feel free to check the [issues page](https://gitlab.com/csspageweaver/csspageweaver/-/issues). + +Contributions must follow our [code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/) \ No newline at end of file diff --git a/csspageweaver/interface/css/grid.css b/csspageweaver/interface/css/grid.css new file mode 100644 index 0000000..561d174 --- /dev/null +++ b/csspageweaver/interface/css/grid.css @@ -0,0 +1,46 @@ +@media print { + + + + /* Size and marin for all pages ------------- */ + @page { + size: 148mm 210mm; + margin-top: 20mm; + margin-bottom: 20mm; + bleed: 6mm; + marks: crop; + @bottom-center{ + content: counter(page); + } + } + + figure, img{ + width: 100%; + } + + +} + + +*{ + margin: 0; + padding: 0; +} + + +#image-full{ + --pagedjs-full-page: spread; + width: 100%; + height: 100%; +} + +#image-full img{ + width: 100%; + height: 100%; + object-fit: cover; +} + + +.pagedjs_note{ + color: red; +} \ No newline at end of file diff --git a/csspageweaver/interface/css/interface.css b/csspageweaver/interface/css/interface.css new file mode 100644 index 0000000..dda88e6 --- /dev/null +++ b/csspageweaver/interface/css/interface.css @@ -0,0 +1,136 @@ +/* CSS for Paged.js interface – v0.2 +Julie Blanc - 2020 +MIT License https://opensource.org/licenses/MIT +A simple stylesheet to see pages on screen (with baseline included) +Adapted for this project */ + + +/* Change the look */ +:root { + --color-background: #efefef; + --color-pageSheet: #cfcfcf; + --color-pageBox: violet; + --color-paper: white; + --pagedjs-crop-color: #000; + --pagedjs-crop-stroke: 1px; + --color-preview: #222; + --pagedjs-margin-interface: 20px; + --pagedjs-header-height: 80px; + + /* --pagedjs-bleed-left-right: 0mm!important; */ +} + +.pagedjs_marks-crop{ + z-index: 999999999999; +} + +/* To define how the book look on the screen: */ +@media screen, pagedjs-ignore { + body { + background-color: var(--color-background); + padding-left: var(--pagedjs-margin-interface); + padding-right: var(--pagedjs-margin-interface); + min-width: calc(var(--pagedjs-width) * 2 + var(--pagedjs-margin-interface)*2); + } + body.no-spread{ + min-width: calc(var(--pagedjs-width) + var(--pagedjs-margin-interface)*2); + + } + + .pagedjs_pages { + display: flex; + width: calc(var(--pagedjs-width) * 2); + flex: 0; + flex-wrap: wrap; + margin: 0 auto; + margin-bottom: var(--pagedjs-header-height); + margin-top: var(--pagedjs-header-height); + + } + + .pagedjs_page { + background-color: var(--color-paper); + box-shadow: 0 0 0 1px var(--color-pageSheet); + margin: 0; + flex-shrink: 0; + flex-grow: 0; + margin-top: 10mm; + } + + .pagedjs_first_page { + margin-left: calc(var(--pagedjs-width) - var(--pagedjs-bleed-left)); + } + + .pagedjs_page:last-of-type { + margin-bottom: 10mm; + } + + .pagedjs_pagebox{ + box-shadow: 0 0 0 1px var(--color-pageBox); + } + + .pagedjs_left_page{ + z-index: 20; + width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width))!important; + } + + /* .pagedjs_left_page .pagedjs_sheet{ + z-index: 20; + width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width) + 1px)!important; + } */ + + .pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-crop { + border-color: transparent; + } + + + .pagedjs_left_page .pagedjs_bleed-right .pagedjs_marks-middle{ + width: 0; + } + + .pagedjs_right_page{ + z-index: 10; + position: relative; + left: calc(var(--pagedjs-bleed-left)*-1); + } + + /* show the margin-box */ + + .pagedjs_margin-top-left-corner-holder, + .pagedjs_margin-top, + .pagedjs_margin-top-left, + .pagedjs_margin-top-center, + .pagedjs_margin-top-right, + .pagedjs_margin-top-right-corner-holder, + .pagedjs_margin-bottom-left-corner-holder, + .pagedjs_margin-bottom, + .pagedjs_margin-bottom-left, + .pagedjs_margin-bottom-center, + .pagedjs_margin-bottom-right, + .pagedjs_margin-bottom-right-corner-holder, + .pagedjs_margin-right, + .pagedjs_margin-right-top, + .pagedjs_margin-right-middle, + .pagedjs_margin-right-bottom, + .pagedjs_margin-left, + .pagedjs_margin-left-top, + .pagedjs_margin-left-middle, + .pagedjs_margin-left-bottom { + box-shadow: 0 0 0 1px inset var(--color-marginBox); + } + +} + + + +.note { + float: footnote; +} + +/* define the position of the footnote on the page (only bottom is possible for now) */ + +@page { + @footnote { + float: bottom; + } +} \ No newline at end of file diff --git a/csspageweaver/interface/css/panel.css b/csspageweaver/interface/css/panel.css new file mode 100644 index 0000000..f7abe62 --- /dev/null +++ b/csspageweaver/interface/css/panel.css @@ -0,0 +1,532 @@ +@import url("../fonts/IBM_Plex_Mono/stylesheet.css"); + +@media print{ + csspageweaver-gui{ + display: none; + } +} + +@media screen, pagedjs-ignore { + + + /* TOGGLE PANEL ----------------------------------- */ + #cssPageWeaver_toggle-panel ~ #cssPageWeaver_panel{ display: none; } + #cssPageWeaver_toggle-panel + label #panel-open{ display: none; } + + #cssPageWeaver_toggle-panel:checked ~ #cssPageWeaver_panel{ display: block; } + #cssPageWeaver_toggle-panel:checked + label #panel-open{ display: block; } + #cssPageWeaver_toggle-panel:checked + label #panel-closed{ display: none; } + + #cssPageWeaver_toggle-panel{ display: none; } + + + /* STYLE ----------------------------------- */ + :root{ + --cssPageWeaver-font:'IBM Plex Mono'; + --cssPageWeaver-size: 16px; + --cssPageWeaver-fixed: 30px; + + /* --cssPageWeaver-color-border: #8fb6b0; + --cssPageWeaver-color-accent: #EE6C4D; + --cssPageWeaver-color-accent-hover: #852811; + --cssPageWeaver-color-text: #464f4e; + --cssPageWeaver-color-bg: #f8f8f2; */ + + + /* --cssPageWeaver-color-accent: #EE6C4D; + --cssPageWeaver-color-accent-hover: #852811; + --cssPageWeaver-color-border: #86766e; + --cssPageWeaver-color-text: #4f4946; + --cssPageWeaver-color-bg: #efefef; */ + + --cssPageWeaver-color-accent: RebeccaPurple; + --cssPageWeaver-color-accent-hover: BlueViolet; + --cssPageWeaver-color-border: #836e86; + --cssPageWeaver-color-border-light: #999999; + --cssPageWeaver-color-text: #4e464f; + --cssPageWeaver-color-bg: #f1f0f0; + + --cssPageWeaver-radius: 5px; + } + + + /* Toggle button -------------------------------------------- */ + + #cssPageWeaver_toggle-panel + label{ + background-color: var(--cssPageWeaver-color-bg); + border: 2px solid var(--cssPageWeaver-color-border); + border-radius: var(--cssPageWeaver-color-radius); + + --size: 30px; + width: var(--size); + height: var(--size); + + display: flex; + align-items: center; + justify-content: center; + font-size: 1.25em; + + color: var(--cssPageWeaver-color-text); + //border-radius: var(--cssPageWeaver-radius); + + transition: border-radius .25s ease-in-out; + + } + + #cssPageWeaver_toggle-panel:checked + label{ + border-top-left-radius: var(--cssPageWeaver-radius); + } + + + /* CONTAINER -------------------------------------------- */ + + csspageweaver-gui *{ + margin: 0; + padding: 0; + + } + + + csspageweaver-gui{ + font-family: var(--cssPageWeaver-font); + color: var(--cssPageWeaver-color-text); + font-size: var(--cssPageWeaver-size); + } + + csspageweaver-gui label, + csspageweaver-gui button{ + cursor: pointer!important; + } + + #cssPageWeaver_toggle-panel + label{ + position: fixed; + left: var(--cssPageWeaver-fixed); + top: var(--cssPageWeaver-fixed); + width: 30px; + left: 30px; + z-index: 9000; + } + + #cssPageWeaver_panel{ + width: 296px; + background-color: var(--cssPageWeaver-color-bg); + border: 2px solid var(--cssPageWeaver-color-border); + border-radius: var(--cssPageWeaver-radius); + position: fixed; + left: var(--cssPageWeaver-fixed); + top: var(--cssPageWeaver-fixed); + z-index: 8900; + padding: 1em 1em .5em 1em; + + max-height: 80vh; + max-height: calc(100vh - 5rem); + overflow: scroll; + + } + + + /* panel-group ------------------------------------- */ + + + #cssPageWeaver_panel .panel-group{ + margin: 0; + padding-top: 1.25em; + } + #cssPageWeaver_panel .panel-group:not(:last-of-type){ + border-bottom: 1px solid var(--cssPageWeaver-color-border); + padding-bottom: 1.25em; + } + + + + /* panel-group-title ------------------------------------- */ + + #cssPageWeaver_panel h1, + #cssPageWeaver_panel button, + #cssPageWeaver_panel p, + #cssPageWeaver_panel svg, + #cssPageWeaver_panel label{ + all: initial; + all: unset; + } + + + #cssPageWeaver_panel .panel-group-title{ + display: grid; + grid-template-columns: auto 1ch 1fr; + grid-gap: .5ch; + } + + #cssPageWeaver_panel h1 span{ + font-size: 0.75em; + } + + + #cssPageWeaver_panel .panel-group-title:not(:empty) + *{ + margin-top: 1.25em; + } + + #cssPageWeaver_panel .panel-group-title h1{ + font-size: 1em; + font-weight: 600; + margin: 0; + } + + #cssPageWeaver_panel .panel-group-title input{ + display: none; + } + #cssPageWeaver_panel .panel-group-title label{ + grid-column: -1; + } + + #cssPageWeaver_panel .panel-group-title label span{ + /* color: var(--cssPageWeaver-color-accent); */ + font-size: 16px; + border: 1.5px solid var(--cssPageWeaver-color-accent); + padding: 0.25ch 1ch 0.5ch 1ch; + min-width: 4ch; + text-align: center; + + font-size: 0.8em; + font-weight: 500; + border-radius: var(--cssPageWeaver-radius); + + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); + color: var(--cssPageWeaver-color-bg); + + font-style: italic; + + } + + #cssPageWeaver_panel .panel-group-title label span:hover{ + background-color: var(--cssPageWeaver-color-accent-hover); + border-color: var(--cssPageWeaver-color-accent-hover); + color: var(--cssPageWeaver-color-bg); + + } + + #cssPageWeaver_panel .panel-group-title input:not(:checked) + label[id*="toggle"] span.button-see{ + background-color: var(--cssPageWeaver-color-bg); + color: var(--cssPageWeaver-color-accent); + } + + #cssPageWeaver_panel .panel-group-title input:checked + label[id*="toggle"] span.button-hide{ + background-color: var(--cssPageWeaver-color-bg); + color: var(--cssPageWeaver-color-accent); + } + + /* INFO BOX ---------------------------------- */ + #cssPageWeaver_panel .panel-group-title details{ + position: relative; + } + #cssPageWeaver_panel .panel-group-title summary{ + color: var(--cssPageWeaver-color-text); + //border: 1px solid black; + //border-radius: 1rem; + width: 1rem; + font-size: .8em; + height: 1rem; + text-align: center; + cursor: pointer; + opacity: .3; + line-height: 160%; + } + + #cssPageWeaver_panel .panel-group-title details summary::marker { + display: none; + content: ""; + border: 1px solid currentColor; + } + +} + +#cssPageWeaver_panel .panel-group-title details p{ + position: absolute; + background: var(--cssPageWeaver-color-bg); + padding: .5ch; + width: max-content; + max-width: 10rem; + font-size: .7rem; + margin-top: .5ch; + border: 1px solid var(--cssPageWeaver-color-accent); + border-radius: .2ch; + top: -50%; + left: 2em; + transform: translateX(0%); +} + + +/* panel-group-values ---------------------------------- */ + +#cssPageWeaver_panel .panel-group-values{ + margin-top: 0.5em; + margin-bottom: 0.5em; + display: flex; + align-items: center; + justify-content: space-between; +} + + +/* INPUT NUMBER ---------------------------------- */ + + +#cssPageWeaver_panel input[type="number"]{ + font-family: var(--cssPageWeaver-font)!important; + color: var(--cssPageWeaver-color-text); + width: 8ch; + background-color: transparent!important; + border: 1px solid var(--cssPageWeaver-color-text); + font-size: calc(var(--cssPageWeaver-size)*0.9); + padding-left: 0.5ch; +} + +#cssPageWeaver_panel input[type="number"]:focus, +#cssPageWeaver_panel input[type="number"]:focus-visible{ + border: 1px solid var(--cssPageWeaver-color-accent)!important; + outline: none; +} + + +/* INPUT CHECKBOX ---------------------------------- */ + +#cssPageWeaver_panel input[type="checkbox"], +#cssPageWeaver_panel input[type="radio"]{ display: none; } + +#cssPageWeaver_panel input + label:not([id*="toggle"])::before{ + content: ""; + --size: 12px; + width: var(--size); + height: var(--size); + display: inline-block; + box-sizing: border-box; + border: 1.5px solid var(--cssPageWeaver-color-text); + margin-right: 1ch; + +} + +#cssPageWeaver_panel input:checked + label{ + color: var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input:checked + label::before{ + border: 5px solid var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input + label:hover{ + color: var(--cssPageWeaver-color-accent-hover); +} + +#cssPageWeaver_panel input + label:hover::before{ + border: 1.5px solid var(--cssPageWeaver-color-accent-hover); +} + +#cssPageWeaver_panel input[type="radio"]:checked + label:hover::before{ + border: 5px solid var(--cssPageWeaver-color-accent); +} +#cssPageWeaver_panel input[type="radio"]:checked + label:hover{ + color: var(--cssPageWeaver-color-accent); +} +#cssPageWeaver_panel input[type="checkbox"] + label:hover::before{ + border: 5px solid var(--cssPageWeaver-color-accent-hover); +} + +/* INPUT RADIO ---------------------------------- */ + + #cssPageWeaver_panel input[type="radio"] + label{ + margin-bottom: 0.5em; +} + +/* exception */ +/*#cssPageWeaver_panel #baseline-toggle + label::before{ display: none; } +*/ + +/* BUTTONS-GROUP ------------------------------------------- */ + +#cssPageWeaver_panel .buttons-group button, +#cssPageWeaver_panel .buttons-group .button{ + display: inline-block; + --size: 40px; + background-color: transparent; + border: 1.5px solid var(--cssPageWeaver-color-accent); + border-radius: var(--cssPageWeaver-radius); + box-sizing: border-box; + + color: var(--cssPageWeaver-color-accent); + + width: var(--size); + height: var(--size); + + text-align: center; + vertical-align: middle; + text-decoration: none; +} + +#cssPageWeaver_panel .buttons-group .button:not(:has(*)){ + padding: .5em 0; +} + +#cssPageWeaver_panel .buttons-group input{ + display: none; +} + +#cssPageWeaver_panel .buttons-group button svg, +#cssPageWeaver_panel .buttons-group .button svg{ + fill: var(--cssPageWeaver-color-accent); + padding: 0.25em; +} + +#cssPageWeaver_panel .buttons-group{ + display: flex; + justify-content: flex-start; + align-items: center; + gap: 1ch; +} + +#cssPageWeaver_panel .buttons-group.align-right{ + justify-content: flex-end; +} + +#cssPageWeaver_panel .panel-group-title:not(:empty) + .buttons-group{ + padding-top: 0.25em; + margin-top: .5em; +} + +#cssPageWeaver_panel .buttons-group .force-right{ + text-align: right; + flex-grow: 1; +} + +#panel-buttons .buttons-group{ + padding-top: 1.25em; + display: flex; +} + + +#panel-buttons .buttons-group button, +#panel-buttons .buttons-group .button{ + margin-left: 0.5em; +} + +#cssPageWeaver_panel input + label.label-block{ + display: block; + margin-top: 1rem; +} + +#cssPageWeaver_panel .panel-group-title.button-toggle label::before{ display: none!important; } + +/* CHECKED BUTTONS --------------------------------------- */ + +#cssPageWeaver_panel .buttons-group input:checked + button, +#cssPageWeaver_panel .buttons-group input:checked + .button{ + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); + cursor: pointer; +} +#cssPageWeaver_panel .buttons-group input:checked + button svg, +#cssPageWeaver_panel .buttons-group input:checked + .button svg{ + fill: var(--cssPageWeaver-color-bg); +} + +/* TOGGLE LABEL ICONS --------------------------------------- */ + +#cssPageWeaver_panel input[id*="toggle"] + .buttons-group{ + margin-top: 1rem; +} + +#cssPageWeaver_panel input[id*="toggle"]:checked + .buttons-group .button:nth-of-type(1), +#cssPageWeaver_panel input[id*="toggle"]:not(:checked) + .buttons-group .button:nth-of-type(2){ + background-color: var(--cssPageWeaver-color-accent); + border-color: var(--cssPageWeaver-color-accent); +} + +#cssPageWeaver_panel input[id*="toggle"]:checked + .buttons-group .button:nth-of-type(1) svg, +#cssPageWeaver_panel input[id*="toggle"]:not(:checked) + .buttons-group .button:nth-of-type(2) svg{ + fill: var(--cssPageWeaver-color-bg); +} + +/* DETAILS CONTAINER< ------------------- */ + +[data-open-container*="details"] ~ [id*="details"]{ + box-sizing: border-box; + position: relative; + top: 1em; + + max-height: 0px; + overflow: hidden; + transition: max-height 1s; +} + +[data-open-container*="details"]:checked ~ [id*="details"]{ + max-height: 100vh; + margin-bottom: 0.5em; + border-top: .5px solid var(--cssPageWeaver-color-border-light); +} + + +/* HOVER BUTTONS ------------------------------------------------------------ */ + +#cssPageWeaver_panel .buttons-group button:hover, +#cssPageWeaver_panel .buttons-group .button:hover{ + background-color: var(--cssPageWeaver-color-accent-hover)!important; + border-color: var(--cssPageWeaver-color-accent-hover)!important; +} +#cssPageWeaver_panel .buttons-group button:hover svg, +#cssPageWeaver_panel .buttons-group .button:hover svg{ + fill: var(--cssPageWeaver-color-bg)!important; +} + +/* SHORTCUT ------------------------------------------------------------ */ + +#cssPageWeaver_panel .shortcut-list{ + list-style: none; + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: .25em; + margin-top: .5em; +} +#cssPageWeaver_panel .shortcut-list li{ + font-size: .75em; + color: var(--cssPageWeaver-color-text); + border: 1px solid; + border-radius: .25em; + padding: .2em; + cursor: help; + opacity: .5; +} + +/* List hidden hooks ------------------------------------------------------------ */ + +#cssPageWeaver_panel #hidden-features h1 { + font-weight: bold; + margin-bottom: .5em; + +} +#cssPageWeaver_panel #hidden-features summary { + display: flex; + flex-direction: row; + justify-content: space-between; + padding-top: 1em; + font-size: .75rem; + cursor: pointer; +} +#cssPageWeaver_panel #hidden-features ul{ + list-style: none; + font-size: .75rem; + display: flex; + flex-wrap: wrap; + gap: .75em; +} +#cssPageWeaver_panel #hidden-features ul li{ + margin-bottom: .25em; + color: var(--cssPageWeaver-color-bg); + padding: .2em .4em; + border-radius: .2em; + background: var(--cssPageWeaver-color-accent); + font-style: italic; +} + +#cssPageWeaver_panel #hidden-features summary::marker { + display: none; +} \ No newline at end of file diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff new file mode 100644 index 0000000..4074b47 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 new file mode 100644 index 0000000..88e4e8b Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff new file mode 100644 index 0000000..fc65a67 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff2 new file mode 100644 index 0000000..c352e40 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff new file mode 100644 index 0000000..2c11f2e Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff2 new file mode 100644 index 0000000..f0d77ab Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-MediumItalic.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff new file mode 100644 index 0000000..7d63d89 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff2 new file mode 100644 index 0000000..d0d7ded Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff new file mode 100644 index 0000000..1da7753 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 new file mode 100644 index 0000000..79dffdb Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff new file mode 100644 index 0000000..9f92825 Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff2 b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff2 new file mode 100644 index 0000000..0aa811e Binary files /dev/null and b/csspageweaver/interface/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBoldItalic.woff2 differ diff --git a/csspageweaver/interface/fonts/IBM_Plex_Mono/stylesheet.css b/csspageweaver/interface/fonts/IBM_Plex_Mono/stylesheet.css new file mode 100644 index 0000000..46f5086 --- /dev/null +++ b/csspageweaver/interface/fonts/IBM_Plex_Mono/stylesheet.css @@ -0,0 +1,42 @@ +@font-face { + src: url('IBMPlexMono-Regular.woff2') format("woff2"), + url('IBMPlexMono-Regular.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; +} +@font-face { + src: url('IBMPlexMono-Italic.woff2') format("woff2"), + url('IBMPlexMono-Italic.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 400; +} +@font-face { + src: url('IBMPlexMono-Medium.woff2') format("woff2"), + url('IBMPlexMono-Medium.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 500; +} +@font-face { + src: url('IBMPlexMono-MediumItalic.woff2') format("woff2"), + url('IBMPlexMono-MediumItalic.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 500; +} +@font-face { + src: url('IBMPlexMono-SemiBold.woff2') format("woff2"), + url('IBMPlexMono-SemiBold.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 600; +} +@font-face { + src: url('IBMPlexMono-SemiBoldItalic.woff2') format("woff2"), + url('IBMPlexMono-SemiBoldItalic.woff') format("woff"); + font-family: 'IBM Plex Mono'; + font-style: italic; + font-weight: 600; +} diff --git a/csspageweaver/lib/csstree.min.js b/csspageweaver/lib/csstree.min.js new file mode 100644 index 0000000..a1c5dd7 --- /dev/null +++ b/csspageweaver/lib/csstree.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).csstree=t()}(this,(function(){"use strict";function e(e){return{prev:null,next:null,data:e}}function t(e,t,n){var i;return null!==r?(i=r,r=r.cursor,i.prev=t,i.next=n,i.cursor=e.cursor):i={prev:t,next:n,cursor:e.cursor},e.cursor=i,i}function n(e){var t=e.cursor;e.cursor=t.cursor,t.prev=null,t.next=null,t.cursor=r,r=t}var r=null,i=function(){this.cursor=null,this.head=null,this.tail=null};i.createItem=e,i.prototype.createItem=e,i.prototype.updateCursors=function(e,t,n,r){for(var i=this.cursor;null!==i;)i.prev===e&&(i.prev=t),i.next===n&&(i.next=r),i=i.cursor},i.prototype.getSize=function(){for(var e=0,t=this.head;t;)e++,t=t.next;return e},i.prototype.fromArray=function(t){var n=null;this.head=null;for(var r=0;rs&&(p=a-l+3,a=l-2);for(var d=o;d<=u;d++)d>=0&&d0&&r[d].length>p?"…":"")+r[d].substr(p,s-2)+(r[d].length>p+s-1?"…":""));return[n(o,i),new Array(a+h+2).join("-")+"^",n(i,u)].filter(Boolean).join("\n")}var h=function(e,t,n,r,i){var a=o("SyntaxError",e);return a.source=t,a.offset=n,a.line=r,a.column=i,a.sourceFragment=function(e){return u(a,isNaN(e)?0:e)},Object.defineProperty(a,"formattedMessage",{get:function(){return"Parse error: "+a.message+"\n"+u(a,2)}}),a.parseError={offset:n,line:r,column:i},a},p={EOF:0,Ident:1,Function:2,AtKeyword:3,Hash:4,String:5,BadString:6,Url:7,BadUrl:8,Delim:9,Number:10,Percentage:11,Dimension:12,WhiteSpace:13,CDO:14,CDC:15,Colon:16,Semicolon:17,Comma:18,LeftSquareBracket:19,RightSquareBracket:20,LeftParenthesis:21,RightParenthesis:22,LeftCurlyBracket:23,RightCurlyBracket:24,Comment:25},d=Object.keys(p).reduce((function(e,t){return e[p[t]]=t,e}),{}),m={TYPE:p,NAME:d},g=0;function f(e){return e>=48&&e<=57}function b(e){return e>=65&&e<=90}function y(e){return e>=97&&e<=122}function k(e){return b(e)||y(e)}function v(e){return e>=128}function x(e){return k(e)||v(e)||95===e}function w(e){return e>=0&&e<=8||11===e||e>=14&&e<=31||127===e}function S(e){return 10===e||13===e||12===e}function C(e){return S(e)||32===e||9===e}function z(e,t){return 92===e&&(!S(t)&&t!==g)}var A=new Array(128);T.Eof=128,T.WhiteSpace=130,T.Digit=131,T.NameStart=132,T.NonPrintable=133;for(var P=0;P=65&&e<=70||e>=97&&e<=102},isUppercaseLetter:b,isLowercaseLetter:y,isLetter:k,isNonAscii:v,isNameStart:x,isName:function(e){return x(e)||f(e)||45===e},isNonPrintable:w,isNewline:S,isWhiteSpace:C,isValidEscape:z,isIdentifierStart:function(e,t,n){return 45===e?x(t)||45===t||z(t,n):!!x(e)||92===e&&z(e,t)},isNumberStart:function(e,t,n){return 43===e||45===e?f(t)?2:46===t&&f(n)?3:0:46===e?f(t)?2:0:f(e)?1:0},isBOM:function(e){return 65279===e?1:65534===e?1:0},charCodeCategory:T},E=L.isDigit,D=L.isHexDigit,O=L.isUppercaseLetter,B=L.isName,I=L.isWhiteSpace,N=L.isValidEscape;function M(e,t){return te.length)return!1;for(var i=t;i=0&&I(e.charCodeAt(t));t--);return t+1},findWhiteSpaceEnd:function(e,t){for(;t>24:H},lookupOffset:function(e){return(e+=this.tokenIndex)0?e>24,this.source,i)){case 1:break e;case 2:r++;break e;default:i=16777215&this.offsetAndType[r],this.balance[n]===r&&(r=n)}return r-this.tokenIndex},isBalanceEdge:function(e){return this.balance[this.tokenIndex]>24===V;e++,t++);t>0&&this.skip(t)},skipSC:function(){for(;this.tokenType===V||this.tokenType===G;)this.next()},skip:function(e){var t=this.tokenIndex+e;t>24,this.tokenEnd=16777215&t):(this.tokenIndex=this.tokenCount,this.next())},next:function(){var e=this.tokenIndex+1;e>24,this.tokenEnd=16777215&e):(this.tokenIndex=this.tokenCount,this.eof=!0,this.tokenType=H,this.tokenStart=this.tokenEnd=this.source.length)},dump:function(){var e=this.firstCharOffset;return Array.prototype.slice.call(this.offsetAndType,0,this.tokenCount).map((function(t,n){var r=e,i=16777215&t;return e=i,{idx:n,type:Y[t>>24],chunk:this.source.substring(r,i),balance:this.balance[n]}}),this)}};var Q=K;function X(e){return e}function Z(e,t,n,r){var i,a;switch(e.type){case"Group":i=function(e,t,n,r){var i=" "===e.combinator||r?e.combinator:" "+e.combinator+" ",a=e.terms.map((function(e){return Z(e,t,n,r)})).join(i);return(e.explicit||n)&&(a=(r||","===a[0]?"[":"[ ")+a+(r?"]":" ]")),a}(e,t,n,r)+(e.disallowEmpty?"!":"");break;case"Multiplier":return Z(e.term,t,n,r)+t(0===(a=e).min&&0===a.max?"*":0===a.min&&1===a.max?"?":1===a.min&&0===a.max?a.comma?"#":"+":1===a.min&&1===a.max?"":(a.comma?"#":"")+(a.min===a.max?"{"+a.min+"}":"{"+a.min+","+(0!==a.max?a.max:"")+"}"),e);case"Type":i="<"+e.name+(e.opts?t(function(e){switch(e.type){case"Range":return" ["+(null===e.min?"-∞":e.min)+","+(null===e.max?"∞":e.max)+"]";default:throw new Error("Unknown node type `"+e.type+"`")}}(e.opts),e.opts):"")+">";break;case"Property":i="<'"+e.name+"'>";break;case"Keyword":i=e.name;break;case"AtKeyword":i="@"+e.name;break;case"Function":i=e.name+"(";break;case"String":case"Token":i=e.value;break;case"Comma":i=",";break;default:throw new Error("Unknown node type `"+e.type+"`")}return t(i,e)}var $=function(e,t){var n=X,r=!1,i=!1;return"function"==typeof t?n=t:t&&(r=Boolean(t.forceBraces),i=Boolean(t.compact),"function"==typeof t.decorate&&(n=t.decorate)),Z(e,n,r,i)};function J(e,t){var n=e&&e.loc&&e.loc[t];return n?{offset:n.offset,line:n.line,column:n.column}:null}var ee=function(e,t){var n=o("SyntaxReferenceError",e+(t?" `"+t+"`":""));return n.reference=t,n},te=function(e,t,n,r){var i=o("SyntaxMatchError",e),a=function(e){for(var t=e.tokens,n=e.longestMatch,r=n1}}(r),s=a.mismatchOffset||0,l=a.node||n,c=J(l,"end"),u=a.last?c:J(l,"start"),h=a.css;return i.rawMessage=e,i.syntax=t?$(t):"",i.css=h,i.mismatchOffset=s,i.loc={source:l&&l.loc&&l.loc.source||"",start:u,end:c},i.line=u?u.line:void 0,i.column=u?u.column:void 0,i.offset=u?u.offset:void 0,i.message=e+"\n syntax: "+i.syntax+"\n value: "+(i.css||"")+"\n --------"+new Array(i.mismatchOffset+1).join("-")+"^",i},ne=Object.prototype.hasOwnProperty,re=Object.create(null),ie=Object.create(null),ae=45;function oe(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===ae&&e.charCodeAt(t+1)===ae}function se(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===ae&&e.charCodeAt(t+1)!==ae){var n=e.indexOf("-",t+2);if(-1!==n)return e.substring(t,n+1)}return""}var le={keyword:function(e){if(ne.call(re,e))return re[e];var t=e.toLowerCase();if(ne.call(re,t))return re[e]=re[t];var n=oe(t,0),r=n?"":se(t,0);return re[e]=Object.freeze({basename:t.substr(r.length),name:t,vendor:r,prefix:r,custom:n})},property:function(e){if(ne.call(ie,e))return ie[e];var t=e,n=e[0];"/"===n?n="/"===e[1]?"//":"/":"_"!==n&&"*"!==n&&"$"!==n&&"#"!==n&&"+"!==n&&"&"!==n&&(n="");var r=oe(t,n.length);if(!r&&(t=t.toLowerCase(),ne.call(ie,t)))return ie[e]=ie[t];var i=r?"":se(t,n.length),a=t.substr(0,n.length+i.length);return ie[e]=Object.freeze({basename:t.substr(a.length),name:t.substr(n.length),hack:n,vendor:i,prefix:a,custom:r})},isCustomProperty:oe,vendorPrefix:se},ce="undefined"!=typeof Uint32Array?Uint32Array:Array,ue=function(e,t){return null===e||e.length=e.length?void(h>Pe,l[c]=m,l[m++]=c;m0?6:0;if(!He(a))return 0;if(++i>6)return 0}return i}function rt(e,t,n){if(!e)return 0;for(;et(n(t),Je);){if(++e>6)return 0;t++}return t}var it=Le.isIdentifierStart,at=Le.isHexDigit,ot=Le.isDigit,st=Le.cmpStr,lt=Le.consumeNumber,ct=Le.TYPE,ut=["unset","initial","inherit"],ht=["calc(","-moz-calc(","-webkit-calc("];function pt(e,t){return te.max)return!0}return!1}function bt(e,t){var n=e.index,r=0;do{if(r++,e.balance<=n)break}while(e=t(r));return r}function yt(e){return function(t,n,r){return null===t?0:t.type===ct.Function&&mt(t.value,ht)?bt(t,n):e(t,n,r)}}function kt(e){return function(t){return null===t||t.type!==e?0:1}}function vt(e){return function(t,n,r){if(null===t||t.type!==ct.Dimension)return 0;var i=lt(t.value,0);if(null!==e){var a=t.value.indexOf("\\",i),o=-1!==a&>(t.value,a)?t.value.substring(i,a):t.value.substr(i);if(!1===e.hasOwnProperty(o.toLowerCase()))return 0}return ft(r,t.value,i)?0:1}}function xt(e){return"function"!=typeof e&&(e=function(){return 0}),function(t,n,r){return null!==t&&t.type===ct.Number&&0===Number(t.value)?1:e(t,n,r)}}var wt,St={"ident-token":kt(ct.Ident),"function-token":kt(ct.Function),"at-keyword-token":kt(ct.AtKeyword),"hash-token":kt(ct.Hash),"string-token":kt(ct.String),"bad-string-token":kt(ct.BadString),"url-token":kt(ct.Url),"bad-url-token":kt(ct.BadUrl),"delim-token":kt(ct.Delim),"number-token":kt(ct.Number),"percentage-token":kt(ct.Percentage),"dimension-token":kt(ct.Dimension),"whitespace-token":kt(ct.WhiteSpace),"CDO-token":kt(ct.CDO),"CDC-token":kt(ct.CDC),"colon-token":kt(ct.Colon),"semicolon-token":kt(ct.Semicolon),"comma-token":kt(ct.Comma),"[-token":kt(ct.LeftSquareBracket),"]-token":kt(ct.RightSquareBracket),"(-token":kt(ct.LeftParenthesis),")-token":kt(ct.RightParenthesis),"{-token":kt(ct.LeftCurlyBracket),"}-token":kt(ct.RightCurlyBracket),string:kt(ct.String),ident:kt(ct.Ident),"custom-ident":function(e){if(null===e||e.type!==ct.Ident)return 0;var t=e.value.toLowerCase();return mt(t,ut)?0:dt(t,"default")?0:1},"custom-property-name":function(e){return null===e||e.type!==ct.Ident?0:45!==pt(e.value,0)||45!==pt(e.value,1)?0:1},"hex-color":function(e){if(null===e||e.type!==ct.Hash)return 0;var t=e.value.length;if(4!==t&&5!==t&&7!==t&&9!==t)return 0;for(var n=1;ne.index||e.balancee.index||e.balance=128||0===$t[n])break}return e.pos===t&&e.error("Expect a keyword"),e.substringToPos(t)}function nn(e){for(var t=e.pos;t57)break}return e.pos===t&&e.error("Expect a number"),e.substringToPos(t)}function rn(e){var t=e.str.indexOf("'",e.pos+1);return-1===t&&(e.pos=e.str.length,e.error("Expect an apostrophe")),e.substringToPos(t+1)}function an(e){var t,n=null;return e.eat(Kt),t=nn(e),e.charCode()===Ft?(e.pos++,e.charCode()!==Xt&&(n=nn(e))):n=t,e.eat(Xt),{min:Number(t),max:n?Number(n):0}}function on(e,t){var n=function(e){var t=null,n=!1;switch(e.charCode()){case _t:e.pos++,t={min:0,max:0};break;case jt:e.pos++,t={min:1,max:0};break;case Ut:e.pos++,t={min:0,max:1};break;case Bt:e.pos++,n=!0,t=e.charCode()===Kt?an(e):{min:1,max:0};break;case Kt:t=an(e);break;default:return null}return{type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}(e);return null!==n?(n.term=t,n):t}function sn(e){var t=e.peek();return""===t?null:{type:"Token",value:t}}function ln(e){var t,n=null;return e.eat(qt),t=tn(e),e.charCode()===Mt&&e.nextCharCode()===Rt&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Vt&&(en(e),n=function(e){var t=null,n=null,r=1;return e.eat(Vt),e.charCode()===Wt&&(e.peek(),r=-1),-1==r&&e.charCode()===Zt?e.peek():t=r*Number(nn(e)),en(e),e.eat(Ft),en(e),e.charCode()===Zt?e.peek():(r=1,e.charCode()===Wt&&(e.peek(),r=-1),n=r*Number(nn(e))),e.eat(Gt),null===t&&null===n?null:{type:"Range",min:t,max:n}}(e)),e.eat(Yt),on(e,{type:"Type",name:t,opts:n})}function cn(e,t){function n(e,t){return{type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:!1}}for(t=Object.keys(t).sort((function(e,t){return Jt[e]-Jt[t]}));t.length>0;){for(var r=t.shift(),i=0,a=0;i1&&(e.splice(a,i-a,n(e.slice(a,i),r)),i=a+1),a=-1))}-1!==a&&t.length&&e.splice(a,i-a,n(e.slice(a,i),r))}return r}function un(e){for(var t,n=[],r={},i=null,a=e.pos;t=hn(e);)"Spaces"!==t.type&&("Combinator"===t.type?(null!==i&&"Combinator"!==i.type||(e.pos=a,e.error("Unexpected combinator")),r[t.value]=!0):null!==i&&"Combinator"!==i.type&&(r[" "]=!0,n.push({type:"Combinator",value:" "})),n.push(t),i=t,a=e.pos);return null!==i&&"Combinator"===i.type&&(e.pos-=a,e.error("Unexpected combinator")),{type:"Group",terms:n,combinator:cn(n,r)||" ",disallowEmpty:!1,explicit:!1}}function hn(e){var t=e.charCode();if(t<128&&1===$t[t])return function(e){var t;return t=tn(e),e.charCode()===Mt?(e.pos++,{type:"Function",name:t}):on(e,{type:"Keyword",name:t})}(e);switch(t){case Gt:break;case Vt:return on(e,function(e){var t;return e.eat(Vt),t=un(e),e.eat(Gt),t.explicit=!0,e.charCode()===Ot&&(e.pos++,t.disallowEmpty=!0),t}(e));case qt:return e.nextCharCode()===Nt?function(e){var t;return e.eat(qt),e.eat(Nt),t=tn(e),e.eat(Nt),e.eat(Yt),on(e,{type:"Property",name:t})}(e):ln(e);case Qt:return{type:"Combinator",value:e.substringToPos(e.nextCharCode()===Qt?e.pos+2:e.pos+1)};case It:return e.pos++,e.eat(It),{type:"Combinator",value:"&&"};case Ft:return e.pos++,{type:"Comma"};case Nt:return on(e,{type:"String",value:rn(e)});case Dt:case Pt:case Tt:case Et:case Lt:return{type:"Spaces",value:en(e)};case Ht:return(t=e.nextCharCode())<128&&1===$t[t]?(e.pos++,{type:"AtKeyword",name:tn(e)}):sn(e);case _t:case jt:case Ut:case Bt:case Ot:break;case Kt:if((t=e.nextCharCode())<48||t>57)return sn(e);break;default:return sn(e)}}function pn(e){var t=new At(e),n=un(t);return t.pos!==e.length&&t.error("Unexpected input"),1===n.terms.length&&"Group"===n.terms[0].type&&(n=n.terms[0]),n}pn("[a&&#|<'c'>*||e() f{2} /,(% g#{1,2} h{2,})]!");var dn=pn,mn=function(){};function gn(e){return"function"==typeof e?e:mn}var fn=function(e,t,n){var r=mn,i=mn;if("function"==typeof t?r=t:t&&(r=gn(t.enter),i=gn(t.leave)),r===mn&&i===mn)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");!function e(t){switch(r.call(n,t),t.type){case"Group":t.terms.forEach(e);break;case"Multiplier":e(t.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+t.type)}i.call(n,t)}(e)},bn=new Q,yn={decorator:function(e){var t=null,n={len:0,node:null},r=[n],i="";return{children:e.children,node:function(n){var r=t;t=n,e.node.call(this,n),t=r},chunk:function(e){i+=e,n.node!==t?r.push({len:e.length,node:t}):n.len+=e.length},result:function(){return kn(i,r)}}}};function kn(e,t){var n=[],r=0,i=0,a=t?t[i].node:null;for(Le(e,bn);!bn.eof;){if(t)for(;i2&&e.charCodeAt(e.length-2)===Cn&&e.charCodeAt(e.length-1)===zn}function Tn(e){return"Keyword"===e.type||"AtKeyword"===e.type||"Function"===e.type||"Type"===e.type&&Pn(e.name)}function Ln(e){if("function"==typeof e)return{type:"Generic",fn:e};switch(e.type){case"Group":var t=function e(t,n,r){switch(t){case" ":for(var i=xn,a=n.length-1;a>=0;a--){i=An(l=n[a],i,wn)}return i;case"|":i=wn;var o=null;for(a=n.length-1;a>=0;a--){if(Tn(l=n[a])&&(null===o&&a>0&&Tn(n[a-1])&&(i=An({type:"Enum",map:o=Object.create(null)},xn,i)),null!==o)){var s=(Pn(l.name)?l.name.slice(0,-1):l.name).toLowerCase();if(s in o==!1){o[s]=l;continue}}o=null,i=An(l,xn,i)}return i;case"&&":if(n.length>5)return{type:"MatchOnce",terms:n,all:!0};for(i=wn,a=n.length-1;a>=0;a--){var l=n[a];c=n.length>1?e(t,n.filter((function(e){return e!==l})),!1):xn,i=An(l,c,i)}return i;case"||":if(n.length>5)return{type:"MatchOnce",terms:n,all:!1};for(i=r?xn:wn,a=n.length-1;a>=0;a--){var c;l=n[a];c=n.length>1?e(t,n.filter((function(e){return e!==l})),!0):xn,i=An(l,c,i)}return i}}(e.combinator,e.terms.map(Ln),!1);return e.disallowEmpty&&(t=An(t,Sn,wn)),t;case"Multiplier":return function(e){var t=xn,n=Ln(e.term);if(0===e.max)n=An(n,Sn,wn),(t=An(n,null,wn)).then=An(xn,xn,t),e.comma&&(t.then.else=An({type:"Comma",syntax:e},t,wn));else for(var r=e.min||1;r<=e.max;r++)e.comma&&t!==xn&&(t=An({type:"Comma",syntax:e},t,wn)),t=An(n,An(xn,xn,t),wn);if(0===e.min)t=An(xn,xn,t);else for(r=0;r=65&&r<=90&&(r|=32),r!==t.charCodeAt(n))return!1}return!0}function Vn(e){return null===e||(e.type===Nn.Comma||e.type===Nn.Function||e.type===Nn.LeftParenthesis||e.type===Nn.LeftSquareBracket||e.type===Nn.LeftCurlyBracket||e.type===Nn.Delim)}function Gn(e){return null===e||(e.type===Nn.RightParenthesis||e.type===Nn.RightSquareBracket||e.type===Nn.RightCurlyBracket||e.type===Nn.Delim)}function Kn(e,t,n){function r(){do{f=++by&&(y=b)}function c(){k=k.type===_n?k.prev:{type:jn,syntax:u.syntax,token:k.token,prev:k},u=u.prev}var u=null,h=null,p=null,d=null,m=0,g=null,f=null,b=-1,y=0,k={type:Mn,syntax:null,token:null,prev:null};for(r();null===g&&++mp.tokenIndex)&&(p=d,d=!1);else if(null===p){g=Wn;break}t=p.nextState,h=p.thenStack,u=p.syntaxStack,k=p.matchStack,b=p.tokenIndex,f=bb){for(;b":"<'"+t.name+"'>"));if(!1!==d&&null!==f&&"Type"===t.type)if("custom-ident"===t.name&&f.type===Nn.Ident||"length"===t.name&&"0"===f.value){null===d&&(d=a(t,p)),t=Bn;break}u={syntax:t.syntax,opts:t.syntax.opts||null!==u&&u.opts||null,prev:u},k={type:_n,syntax:t.syntax,token:k.token,prev:k},t=z.match;break;case"Keyword":var A=t.name;if(null!==f){var P=f.value;if(-1!==P.indexOf("\\")&&(P=P.replace(/\\[09].*$/,"")),Hn(P,A)){l(),t=On;break}}t=Bn;break;case"AtKeyword":case"Function":if(null!==f&&Hn(f.value,t.name)){l(),t=On;break}t=Bn;break;case"Token":if(null!==f&&f.value===t.value){l(),t=On;break}t=Bn;break;case"Comma":null!==f&&f.type===Nn.Comma?Vn(k.token)?t=Bn:(l(),t=Gn(f)?Bn:On):t=Vn(k.token)||Gn(f)?On:Bn;break;case"String":var T="";for(S=b;S=0}function nr(e){return Boolean(e)&&tr(e.offset)&&tr(e.line)&&tr(e.column)}function rr(e,t){return function(n,r){if(!n||n.constructor!==Object)return r(n,"Type of node should be an Object");for(var i in n){var o=!0;if(!1!==er.call(n,i)){if("type"===i)n.type!==e&&r(n,"Wrong node type `"+n.type+"`, expected `"+e+"`");else if("loc"===i){if(null===n.loc)continue;if(n.loc&&n.loc.constructor===Object)if("string"!=typeof n.loc.source)i+=".source";else if(nr(n.loc.start)){if(nr(n.loc.end))continue;i+=".end"}else i+=".start";o=!1}else if(t.hasOwnProperty(i)){var s=0;for(o=!1;!o&&s");else{if(!Array.isArray(c))throw new Error("Wrong value `"+c+"` in `"+e+"."+a+"` structure definition");o.push("List")}}i[a]=o.join(" | ")}return{docs:i,check:rr(e,r)}}var ar=ee,or=te,sr=En.buildMatchGraph,lr=Qn,cr=function(e){var t={};if(e.node)for(var n in e.node)if(er.call(e.node,n)){var r=e.node[n];if(!r.structure)throw new Error("Missed `structure` field in `"+n+"` node type definition");t[n]=ir(n,r)}return t},ur=sr("inherit | initial | unset"),hr=sr("inherit | initial | unset | <-ms-legacy-expression>");function pr(e,t,n){var r={};for(var i in e)e[i].syntax&&(r[i]=n?e[i].syntax:$(e[i].syntax,{compact:t}));return r}function dr(e,t,n){return{matched:e,iterations:n,error:t,getTrace:$n.getTrace,isType:$n.isType,isProperty:$n.isProperty,isKeyword:$n.isKeyword}}function mr(e,t,n,r){var i,a=vn(n,e.syntax);return function(e){for(var t=0;t(e[n]=this.createDescriptor(t.descriptors[n],"AtruleDescriptor",n),e),{}):null}},addProperty_:function(e,t){this.properties[e]=this.createDescriptor(t,"Property",e)},addType_:function(e,t){this.types[e]=this.createDescriptor(t,"Type",e),t===St["-ms-legacy-expression"]&&(this.valueCommonSyntax=hr)},matchAtrulePrelude:function(e,t){var n=le.keyword(e),r=n.vendor?this.getAtrulePrelude(n.name)||this.getAtrulePrelude(n.basename):this.getAtrulePrelude(n.name);return r?mr(this,r,t,!0):n.basename in this.atrules?dr(null,new Error("At-rule `"+e+"` should not contain a prelude")):dr(null,new ar("Unknown at-rule",e))},matchAtruleDescriptor:function(e,t,n){var r=le.keyword(e),i=le.keyword(t),a=r.vendor?this.atrules[r.name]||this.atrules[r.basename]:this.atrules[r.name];if(!a)return dr(null,new ar("Unknown at-rule",e));if(!a.descriptors)return dr(null,new Error("At-rule `"+e+"` has no known descriptors"));var o=i.vendor?a.descriptors[i.name]||a.descriptors[i.basename]:a.descriptors[i.name];return o?mr(this,o,n,!0):dr(null,new ar("Unknown at-rule descriptor",t))},matchDeclaration:function(e){return"Declaration"!==e.type?dr(null,new Error("Not a Declaration node")):this.matchProperty(e.property,e.value)},matchProperty:function(e,t){var n=le.property(e);if(n.custom)return dr(null,new Error("Lexer matching doesn't applicable for custom properties"));var r=n.vendor?this.getProperty(n.name)||this.getProperty(n.basename):this.getProperty(n.name);return r?mr(this,r,t,!0):dr(null,new ar("Unknown property",e))},matchType:function(e,t){var n=this.getType(e);return n?mr(this,n,t,!1):dr(null,new ar("Unknown type",e))},match:function(e,t){return"string"==typeof e||e&&e.type?("string"!=typeof e&&e.match||(e=this.createDescriptor(e,"Type","anonymous")),mr(this,e,t,!1)):dr(null,new ar("Bad syntax"))},findValueFragments:function(e,t,n,r){return Jn.matchFragments(this,t,this.matchProperty(e,t),n,r)},findDeclarationValueFragments:function(e,t,n){return Jn.matchFragments(this,e.value,this.matchDeclaration(e),t,n)},findAllFragments:function(e,t,n){var r=[];return this.syntax.walk(e,{visit:"Declaration",enter:function(e){r.push.apply(r,this.findDeclarationValueFragments(e,t,n))}.bind(this)}),r},getAtrulePrelude:function(e){return this.atrules.hasOwnProperty(e)?this.atrules[e].prelude:null},getAtruleDescriptor:function(e,t){return this.atrules.hasOwnProperty(e)&&this.atrules.declarators&&this.atrules[e].declarators[t]||null},getProperty:function(e){return this.properties.hasOwnProperty(e)?this.properties[e]:null},getType:function(e){return this.types.hasOwnProperty(e)?this.types[e]:null},validate:function(){function e(r,i,a,o){if(a.hasOwnProperty(i))return a[i];a[i]=!1,null!==o.syntax&&fn(o.syntax,(function(o){if("Type"===o.type||"Property"===o.type){var s="Type"===o.type?r.types:r.properties,l="Type"===o.type?t:n;s.hasOwnProperty(o.name)&&!e(r,o.name,l,s[o.name])||(a[i]=!0)}}),this)}var t={},n={};for(var r in this.types)e(this,r,t,this.types[r]);for(var r in this.properties)e(this,r,n,this.properties[r]);return t=Object.keys(t).filter((function(e){return t[e]})),n=Object.keys(n).filter((function(e){return n[e]})),t.length||n.length?{types:t,properties:n}:null},dump:function(e,t){return{generic:this.generic,types:pr(this.types,!t,e),properties:pr(this.properties,!t,e)}},toString:function(){return JSON.stringify(this.dump())}};var fr=gr,br={SyntaxError:Ct,parse:dn,generate:$,walk:fn},yr=Le.isBOM,kr=10,vr=12,xr=13;var wr=function(){this.lines=null,this.columns=null,this.linesAndColumnsComputed=!1};wr.prototype={setSource:function(e,t,n,r){this.source=e,this.startOffset=void 0===t?0:t,this.startLine=void 0===n?1:n,this.startColumn=void 0===r?1:r,this.linesAndColumnsComputed=!1},ensureLinesAndColumnsComputed:function(){this.linesAndColumnsComputed||(!function(e,t){for(var n=t.length,r=ue(e.lines,n),i=e.startLine,a=ue(e.columns,n),o=e.startColumn,s=t.length>0?yr(t.charCodeAt(0)):0;s",needPositions:!1,onParseError:Lr,onParseErrorThrow:!1,parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Pr,createList:function(){return new a},createSingleNodeList:function(e){return(new a).appendData(e)},getFirstListNode:function(e){return e&&e.first()},getLastListNode:function(e){return e.last()},parseWithFallback:function(e,t){var n=this.scanner.tokenIndex;try{return e.call(this)}catch(e){if(this.onParseErrorThrow)throw e;var r=t.call(this,n);return this.onParseErrorThrow=!0,this.onParseError(e,r),this.onParseErrorThrow=!1,r}},lookupNonWSType:function(e){do{var t=this.scanner.lookupType(e++);if(t!==Or)return t}while(0!==t);return 0},eat:function(e){if(this.scanner.tokenType!==e){var t=this.scanner.tokenStart,n=Dr[e]+" is expected";switch(e){case Br:this.scanner.tokenType===Ir||this.scanner.tokenType===Nr?(t=this.scanner.tokenEnd-1,n="Identifier is expected but function found"):n="Identifier is expected";break;case Mr:this.scanner.isDelim(35)&&(this.scanner.next(),t++,n="Name is expected");break;case Rr:this.scanner.tokenType===_r&&(t=this.scanner.tokenEnd,n="Percent sign is expected");break;default:this.scanner.source.charCodeAt(this.scanner.tokenStart)===e&&(t+=1)}this.error(n,t)}this.scanner.next()},consume:function(e){var t=this.scanner.getTokenValue();return this.eat(e),t},consumeFunctionName:function(){var e=this.scanner.source.substring(this.scanner.tokenStart,this.scanner.tokenEnd-1);return this.eat(Ir),e},getLocation:function(e,t){return this.needPositions?this.locationMap.getLocationRange(e,t,this.filename):null},getLocationFromList:function(e){if(this.needPositions){var t=this.getFirstListNode(e),n=this.getLastListNode(e);return this.locationMap.getLocationRange(null!==t?t.loc.start.offset-this.locationMap.startOffset:this.scanner.tokenStart,null!==n?n.loc.end.offset-this.locationMap.startOffset:this.scanner.tokenStart,this.filename)}return null},error:function(e,t){var n=void 0!==t&&t",t.needPositions=Boolean(n.positions),t.onParseError="function"==typeof n.onParseError?n.onParseError:Lr,t.onParseErrorThrow=!1,t.parseAtrulePrelude=!("parseAtrulePrelude"in n)||Boolean(n.parseAtrulePrelude),t.parseRulePrelude=!("parseRulePrelude"in n)||Boolean(n.parseRulePrelude),t.parseValue=!("parseValue"in n)||Boolean(n.parseValue),t.parseCustomProperty="parseCustomProperty"in n&&Boolean(n.parseCustomProperty),!t.context.hasOwnProperty(i))throw new Error("Unknown context `"+i+"`");return r=t.context[i].call(t,n),t.scanner.eof||t.error(),r}},Wr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),qr=function(e){if(0<=e&&e>>=5)>0&&(t|=32),n+=qr(t)}while(r>0);return n};var Ur=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){t.getArg=function(e,t,n){if(t in e)return e[t];if(3===arguments.length)return n;throw new Error('"'+t+'" is a required argument.')};var n=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,r=/^data:.+\,.+$/;function i(e){var t=e.match(n);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function a(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function o(e){var n=e,r=i(e);if(r){if(!r.path)return e;n=r.path}for(var o,s=t.isAbsolute(n),l=n.split(/\/+/),c=0,u=l.length-1;u>=0;u--)"."===(o=l[u])?l.splice(u,1):".."===o?c++:c>0&&(""===o?(l.splice(u+1,c),c=0):(l.splice(u,2),c--));return""===(n=l.join("/"))&&(n=s?"/":"."),r?(r.path=n,a(r)):n}function s(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),s=i(e);if(s&&(e=s.path||"/"),n&&!n.scheme)return s&&(n.scheme=s.scheme),a(n);if(n||t.match(r))return t;if(s&&!s.host&&!s.path)return s.host=t,a(s);var l="/"===t.charAt(0)?t:o(e.replace(/\/+$/,"")+"/"+t);return s?(s.path=l,a(s)):l}t.urlParse=i,t.urlGenerate=a,t.normalize=o,t.join=s,t.isAbsolute=function(e){return"/"===e.charAt(0)||n.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if((e=e.slice(0,r)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var l=!("__proto__"in Object.create(null));function c(e){return e}function u(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function h(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=l?c:function(e){return u(e)?"$"+e:e},t.fromSetString=l?c:function(e){return u(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,n){var r=h(e.source,t.source);return 0!==r?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)||n?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=e.generatedLine-t.generatedLine)?r:h(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)||n?r:0!==(r=h(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)?r:h(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=h(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)?n:h(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var r=i(n);if(!r)throw new Error("sourceMapURL could not be parsed");if(r.path){var l=r.path.lastIndexOf("/");l>=0&&(r.path=r.path.substring(0,l+1))}t=s(a(r),t)}return o(t)}})),Hr=(Ur.getArg,Ur.urlParse,Ur.urlGenerate,Ur.normalize,Ur.join,Ur.isAbsolute,Ur.relative,Ur.toSetString,Ur.fromSetString,Ur.compareByOriginalPositions,Ur.compareByGeneratedPositionsDeflated,Ur.compareByGeneratedPositionsInflated,Ur.parseSourceMapInput,Ur.computeSourceURL,Object.prototype.hasOwnProperty),Vr="undefined"!=typeof Map;function Gr(){this._array=[],this._set=Vr?new Map:Object.create(null)}Gr.fromArray=function(e,t){for(var n=new Gr,r=0,i=e.length;r=0)return t}else{var n=Ur.toSetString(e);if(Hr.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},Gr.prototype.at=function(e){if(e>=0&&er||i==r&&o>=a||Ur.compareByGeneratedPositionsInflated(t,n)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},Qr.prototype.toArray=function(){return this._sorted||(this._array.sort(Ur.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};var Xr=Kr.ArraySet,Zr={MappingList:Qr}.MappingList;function $r(e){e||(e={}),this._file=Ur.getArg(e,"file",null),this._sourceRoot=Ur.getArg(e,"sourceRoot",null),this._skipValidation=Ur.getArg(e,"skipValidation",!1),this._sources=new Xr,this._names=new Xr,this._mappings=new Zr,this._sourcesContents=null}$r.prototype._version=3,$r.fromSourceMap=function(e){var t=e.sourceRoot,n=new $r({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=t&&(r.source=Ur.relative(t,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),n.addMapping(r)})),e.sources.forEach((function(r){var i=r;null!==t&&(i=Ur.relative(t,r)),n._sources.has(i)||n._sources.add(i);var a=e.sourceContentFor(r);null!=a&&n.setSourceContent(r,a)})),n},$r.prototype.addMapping=function(e){var t=Ur.getArg(e,"generated"),n=Ur.getArg(e,"original",null),r=Ur.getArg(e,"source",null),i=Ur.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,n,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=n&&n.line,originalColumn:null!=n&&n.column,source:r,name:i})},$r.prototype.setSourceContent=function(e,t){var n=e;null!=this._sourceRoot&&(n=Ur.relative(this._sourceRoot,n)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[Ur.toSetString(n)]=t):this._sourcesContents&&(delete this._sourcesContents[Ur.toSetString(n)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},$r.prototype.applySourceMap=function(e,t,n){var r=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');r=e.file}var i=this._sourceRoot;null!=i&&(r=Ur.relative(i,r));var a=new Xr,o=new Xr;this._mappings.unsortedForEach((function(t){if(t.source===r&&null!=t.originalLine){var s=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=s.source&&(t.source=s.source,null!=n&&(t.source=Ur.join(n,t.source)),null!=i&&(t.source=Ur.relative(i,t.source)),t.originalLine=s.line,t.originalColumn=s.column,null!=s.name&&(t.name=s.name))}var l=t.source;null==l||a.has(l)||a.add(l);var c=t.name;null==c||o.has(c)||o.add(c)}),this),this._sources=a,this._names=o,e.sources.forEach((function(t){var r=e.sourceContentFor(t);null!=r&&(null!=n&&(t=Ur.join(n,t)),null!=i&&(t=Ur.relative(i,t)),this.setSourceContent(t,r))}),this)},$r.prototype._validateMapping=function(e,t,n,r){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},$r.prototype._serializeMappings=function(){for(var e,t,n,r,i=0,a=1,o=0,s=0,l=0,c=0,u="",h=this._mappings.toArray(),p=0,d=h.length;p0){if(!Ur.compareByGeneratedPositionsInflated(t,h[p-1]))continue;e+=","}e+=Yr(t.generatedColumn-i),i=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=Yr(r-c),c=r,e+=Yr(t.originalLine-1-s),s=t.originalLine-1,e+=Yr(t.originalColumn-o),o=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=Yr(n-l),l=n)),u+=e}return u},$r.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=Ur.relative(t,e));var n=Ur.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},$r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},$r.prototype.toString=function(){return JSON.stringify(this.toJSON())};var Jr={SourceMapGenerator:$r}.SourceMapGenerator,ei={Atrule:!0,Selector:!0,Declaration:!0},ti=Object.prototype.hasOwnProperty;function ni(e,t){var n=e.children,r=null;"function"!=typeof t?n.forEach(this.node,this):n.forEach((function(e){null!==r&&t.call(this,r),this.node(e),r=e}),this)}var ri=function(e){function t(e){if(!ti.call(n,e.type))throw new Error("Unknown node type: "+e.type);n[e.type].call(this,e)}var n={};if(e.node)for(var r in e.node)n[r]=e.node[r].generate;return function(e,n){var r="",i={children:ni,node:t,chunk:function(e){r+=e},result:function(){return r}};return n&&("function"==typeof n.decorator&&(i=n.decorator(i)),n.sourceMap&&(i=function(e){var t=new Jr,n=1,r=0,i={line:1,column:0},a={line:0,column:0},o=!1,s={line:1,column:0},l={generated:s},c=e.node;e.node=function(e){if(e.loc&&e.loc.start&&ei.hasOwnProperty(e.type)){var u=e.loc.start.line,h=e.loc.start.column-1;a.line===u&&a.column===h||(a.line=u,a.column=h,i.line=n,i.column=r,o&&(o=!1,i.line===s.line&&i.column===s.column||t.addMapping(l)),o=!0,t.addMapping({source:e.loc.source,original:a,generated:i}))}c.call(this,e),o&&ei.hasOwnProperty(e.type)&&(s.line=n,s.column=r)};var u=e.chunk;e.chunk=function(e){for(var t=0;t|","angle-percentage":"|","angular-color-hint":"","angular-color-stop":"&&?","angular-color-stop-list":"[ [, ]?]# , ","animateable-feature":"scroll-position|contents|",attachment:"scroll|fixed|local","attr()":"attr( ? [, ]? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attribute-selector":"'[' ']'|'[' [|] ? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [? ]+ ? )","auto-track-list":"[? [|]]* ? [? [|]]* ?","baseline-position":"[first|last]? baseline","basic-shape":"|||","bg-image":"none|","bg-layer":"|| [/ ]?||||||||","bg-position":"[[left|center|right|top|bottom|]|[left|center|right|] [top|center|bottom|]|[center|[left|right] ?]&&[center|[top|bottom] ?]]","bg-size":"[|auto]{1,2}|cover|contain","blur()":"blur( )","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity",box:"border-box|padding-box|content-box","brightness()":"brightness( )","calc()":"calc( )","calc-sum":" [['+'|'-'] ]*","calc-product":" ['*' |'/' ]*","calc-value":"|||( )","cf-final-image":"|","cf-mixing-image":"?&&","circle()":"circle( []? [at ]? )","clamp()":"clamp( #{3} )","class-selector":"'.' ","clip-source":"",color:"||||||currentcolor|","color-stop":"|","color-stop-angle":"{1,2}","color-stop-length":"{1,2}","color-stop-list":"[ [, ]?]# , ",combinator:"'>'|'+'|'~'|['||']","common-lig-values":"[common-ligatures|no-common-ligatures]",compat:"searchfield|textarea|push-button|button-bevel|slider-horizontal|checkbox|radio|square-button|menulist|menulist-button|listbox|meter|progress-bar","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[? * [ *]*]!","compound-selector-list":"#","complex-selector":" [? ]*","complex-selector-list":"#","conic-gradient()":"conic-gradient( [from ]? [at ]? , )","contextual-alt-values":"[contextual|no-contextual]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[|contents||||counter( , <'list-style-type'>? )]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"","contrast()":"contrast( [] )","counter()":"counter( , [|none]? )","counter-style":"|symbols( )","counter-style-name":"","counters()":"counters( , , [|none]? )","cross-fade()":"cross-fade( , ? )","cubic-bezier-timing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( , , , )","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"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","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( {2,3} ? )","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( )","ellipse()":"ellipse( [{2}]? [at ]? )","ending-shape":"circle|ellipse","env()":"env( , ? )","explicit-track-list":"[? ]+ ?","family-name":"|+","feature-tag-value":" [|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":" '{' '}'","feature-value-block-list":"+","feature-value-declaration":" : + ;","feature-value-declaration-list":"","feature-value-name":"","fill-rule":"nonzero|evenodd","filter-function":"|||||||||","filter-function-list":"[|]+","final-bg-layer":"<'background-color'>|||| [/ ]?||||||||","fit-content()":"fit-content( [|] )","fixed-breadth":"","fixed-repeat":"repeat( [] , [? ]+ ? )","fixed-size":"|minmax( , )|minmax( , )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|","font-variant-css21":"[normal|small-caps]","font-weight-absolute":"normal|bold|","frequency-percentage":"|","general-enclosed":"[ )]|( )","generic-family":"serif|sans-serif|cursive|fantasy|monospace|-apple-system","generic-name":"serif|sans-serif|cursive|fantasy|monospace","geometry-box":"|fill-box|stroke-box|view-box",gradient:"|||||<-legacy-gradient>","grayscale()":"grayscale( )","grid-line":"auto||[&&?]|[span&&[||]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( [/ ]? )|hsl( , , , ? )","hsla()":"hsla( [/ ]? )|hsla( , , , ? )",hue:"|","hue-rotate()":"hue-rotate( )",image:"|||||","image()":"image( ? [? , ?]! )","image-set()":"image-set( # )","image-set-option":"[|] ","image-src":"|","image-tags":"ltr|rtl","inflexible-breadth":"||min-content|max-content|auto","inset()":"inset( {1,4} [round <'border-radius'>]? )","invert()":"invert( )","keyframes-name":"|","keyframe-block":"# { }","keyframe-block-list":"+","keyframe-selector":"from|to|","leader()":"leader( )","leader-type":"dotted|solid|space|","length-percentage":"|","line-names":"'[' * ']'","line-name-list":"[|]+","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"|thin|medium|thick","linear-color-hint":"","linear-color-stop":" ?","linear-gradient()":"linear-gradient( [|to ]? , )","mask-layer":"|| [/ ]?||||||[|no-clip]||||","mask-position":"[|left|center|right] [|top|center|bottom]?","mask-reference":"none||","mask-source":"","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( #{6} )","matrix3d()":"matrix3d( #{16} )","max()":"max( # )","media-and":" [and ]+","media-condition":"|||","media-condition-without-or":"||","media-feature":"( [||] )","media-in-parens":"( )||","media-not":"not ","media-or":" [or ]+","media-query":"|[not|only]? [and ]?","media-query-list":"#","media-type":"","mf-boolean":"","mf-name":"","mf-plain":" : ","mf-range":" ['<'|'>']? '='? | ['<'|'>']? '='? | '<' '='? '<' '='? | '>' '='? '>' '='? ","mf-value":"|||","min()":"min( # )","minmax()":"minmax( [|||min-content|max-content|auto] , [|||min-content|max-content|auto] )","named-color":"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>","namespace-prefix":"","ns-prefix":"[|'*']? '|'","number-percentage":"|","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]",nth:"|even|odd","opacity()":"opacity( [] )","overflow-position":"unsafe|safe","outline-radius":"|","page-body":"? [; ]?| ","page-margin-box":" '{' '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector-list":"[#]?","page-selector":"+| *","perspective()":"perspective( )","polygon()":"polygon( ? , [ ]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|] [top|center|bottom|]?|[[left|right] ]&&[[top|bottom] ]]","pseudo-class-selector":"':' |':' ')'","pseudo-element-selector":"':' ","pseudo-page":": [left|right|first|blank]",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-gradient()":"radial-gradient( [||]? [at ]? , )","relative-selector":"? ","relative-selector-list":"#","relative-size":"larger|smaller","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-linear-gradient()":"repeating-linear-gradient( [|to ]? , )","repeating-radial-gradient()":"repeating-radial-gradient( [||]? [at ]? , )","rgb()":"rgb( {3} [/ ]? )|rgb( {3} [/ ]? )|rgb( #{3} , ? )|rgb( #{3} , ? )","rgba()":"rgba( {3} [/ ]? )|rgba( {3} [/ ]? )|rgba( #{3} , ? )|rgba( #{3} , ? )","rotate()":"rotate( [|] )","rotate3d()":"rotate3d( , , , [|] )","rotateX()":"rotateX( [|] )","rotateY()":"rotateY( [|] )","rotateZ()":"rotateZ( [|] )","saturate()":"saturate( )","scale()":"scale( , ? )","scale3d()":"scale3d( , , )","scaleX()":"scaleX( )","scaleY()":"scaleY( )","scaleZ()":"scaleZ( )","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","shape-radius":"|closest-side|farthest-side","skew()":"skew( [|] , [|]? )","skewX()":"skewX( [|] )","skewY()":"skewY( [|] )","sepia()":"sepia( )",shadow:"inset?&&{2,4}&&?","shadow-t":"[{2,3}&&?]",shape:"rect( , , , )|rect( )","shape-box":"|margin-box","side-or-corner":"[left|right]||[top|bottom]","single-animation":"