diff --git a/README.md b/README.md index fb46c52..6e0001f 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,14 @@ all tasks ``` bb tasks ``` + +#### Details + +``` +bb.edn ⇒ babashka commands and tasks +bb/ + brut/ + build_css.clj ⇒ clojure code that build the CSS + site.clj ⇒ clojure code that build the BRUT website +h/img/ ⇒ images for the site +``` diff --git a/brut-full.min.css b/brut-full.min.css deleted file mode 100644 index f486625..0000000 --- a/brut-full.min.css +++ /dev/null @@ -1 +0,0 @@ -/* Copyright 2022 Yann Esposito; MIT licensed */:root{--bg:#fff;--fg:#000;--bg2:#eee;--darken:rgba(0, 0, 0, 0.1);--cn-1:#d9d9d9;--cn0:#999;--cn1:#8c8c8c;--cn2:#808080;--shadow:rgba(0, 0, 0, 0.75);--cnt:#fff;--cna:#333;--cnab:#000}@media(prefers-color-scheme:dark){:root{--bg:#000;--fg:#ccc;--bg2:#333;--darken:rgba(255, 255, 255, 0.1);--cn-1:#666666;--cn0:#808080;--cn1:#8c8c8c;--cn2:#999999;--shadow:rgba(128, 128, 128, 0.3);--cnt:#000;--cna:#eee;--cnab:#fff}}.neutral{color:var(--cn-0)}.bg-neutral{background:var(--cn-1)}a{color:var(--fg)}:root{--ci-1:#b8d9fa;--ci0:#59d;--ci1:#408cd9;--ci2:#2a7fd5;--co-1:#7fdd7f;--co0:#494;--co1:#3c873c;--co2:#347634;--cw-1:#ffd24d;--cw0:#c90;--cw1:#b38600;--cw2:#997300;--ce-1:#fa9595;--ce0:#d33;--ce1:#d32323;--ce2:#bd2020;--cf-1:#dc95fa;--cf0:#a3d;--cf1:#9e23d3;--cf2:#8e20bd;--cia:#0b7ff4;--ciab:#3399ff;--coa:#1f8b1f;--coab:#1dc01d;--cwa:#997300;--cwab:#cc9900;--cea:#d90404;--ceab:#ff1111;--cfa:#9904d9;--cfab:#b811ff}@media(prefers-color-scheme:dark){:root{--ci-1:#2266aa;--ci0:#2a7fd5;--ci1:#408cd9;--ci2:#4b99e7;--co-1:#255225;--co0:#347634;--co1:#3c873c;--co2:#39a439;--cw-1:#664d00;--cw0:#997300;--cw1:#b38600;--cw2:#cc9900;--ce-1:#921818;--ce0:#bd2020;--ce1:#d32323;--ce2:#e92727;--cf-1:#6d1892;--cf0:#8e20bd;--cf1:#9e23d3;--cf2:#af27e9}}.info{color:var(--ci0)}.bg-info{background:var(--ci-1)}.ok{color:var(--co0)}.bg-ok{background:var(--co-1)}.warn{color:var(--cw0)}.bg-warn{background:var(--cw-1)}.err{color:var(--ce0)}.bg-err{background:var(--ce-1)}.fatal{color:var(--cf0)}.bg-fatal{background:var(--cf-1)}.msg.info{color:var(--fg);background:var(--ci-1);border-color:var(--ci0)}.msg.ok{color:var(--fg);background:var(--co-1);border-color:var(--co0)}.msg.warn{color:var(--fg);background:var(--cw-1);border-color:var(--cw0)}.msg.err{color:var(--fg);background:var(--ce-1);border-color:var(--ce0)}.msg.fatal{color:var(--fg);background:var(--cf-1);border-color:var(--cf0)}.msg.alert,.msg.alert *{color:var(--cnt);background:var(--cna);border-color:var(--cnab)}.msg.alert.info,.msg.alert.info *{color:#fff;background:var(--cia);border-color:var(--ciab)}.msg.alert.ok,.msg.alert.ok *{color:#fff;background:var(--coa);border-color:var(--coab)}.msg.alert.warn,.msg.alert.warn *{color:#fff;background:var(--cwa);border-color:var(--cwab)}.msg.alert.err,.msg.alert.err *{color:#fff;background:var(--cea);border-color:var(--ceab)}.msg.alert.fatal,.msg.alert.fatal *{color:#fff;background:var(--cfa);border-color:var(--cfab)}.tb.info{color:var(--ci0)}.tb.info:hover{color:var(--ci1)}.tb.info:active{color:var(--ci2)}.tb.ok{color:var(--co0)}.tb.ok:hover{color:var(--co1)}.tb.ok:active{color:var(--co2)}.tb.warn{color:var(--cw0)}.tb.warn:hover{color:var(--cw1)}.tb.warn:active{color:var(--cw2)}.tb.err{color:var(--ce0)}.tb.err:hover{color:var(--ce1)}.tb.err:active{color:var(--ce2)}.tb.fatal{color:var(--cf0)}.tb.fatal:hover{color:var(--cf1)}.tb.fatal:active{color:var(--cf2)}.btn.info{background:var(--ci0)}.btn.info:hover{background:var(--ci1)}.btn.info:active,.btn.info:focus{background:var(--ci2)}.btn.ok{background:var(--co0)}.btn.ok:hover{background:var(--co1)}.btn.ok:active,.btn.ok:focus{background:var(--co2)}.btn.warn{background:var(--cw0)}.btn.warn:hover{background:var(--cw1)}.btn.warn:active,.btn.warn:focus{background:var(--cw2)}.btn.err{background:var(--ce0)}.btn.err:hover{background:var(--ce1)}.btn.err:active,.btn.err:focus{background:var(--ce2)}.btn.fatal{background:var(--cf0)}.btn.fatal:hover{background:var(--cf1)}.btn.fatal:active,.btn.fatal:focus{background:var(--cf2)}html{font-size:12px}body,textarea,input,select{background:var(--bg);color:var(--fg);border-radius:0;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;font-size:1rem;margin:0}*{box-sizing:border-box}.addon,.sm,.nav,textarea,input,select{outline:0;font-size:10px}.tb,.btn,.nav a{text-decoration:none}.container{padding:0 20px;width:auto}@media(min-width:1310px){.container{margin:auto;width:1270px}}pre{background:var(--bg2);padding:10px}code{background:var(--darken);border:solid 1px var(--darken);padding:1px}img{max-width:100%}.big{font-size:2em}.huge{font-size:3em}.tb{font-weight:700;cursor:pointer;padding:2px}.tb:before,.tb:after{opacity:.3;display:inline-block}.tb:before{content:"〈"}.tb:after{content:"〉"}.tb:hover{text-decoration:underline}.tb:hover::before,.tb:hover::after{opacity:1}.tb:active:before{content:"《"}.tb:active:after{content:"》"}.btn{background:var(--cn0);border:solid 2px #000;color:#fff;font-weight:700;cursor:pointer;display:inline-block;margin:2px 0;padding:1rem 2rem;box-shadow:4px 4px var(--shadow);text-align:center}.btn:hover{background:var(--cn1);color:#fff}.btn:active,.btn:focus{color:#fff;background:var(--cn2);box-shadow:1px 1px #000;position:relative;top:3px;left:3px}.btn.sm{padding:.5rem 1rem}.btn.std{width:12rem}.btn.big.std{width:20rem}.btn.huge.std{width:24rem}.row{display:flex;justify-content:space-evenly;align-items:stretch;flex-wrap:wrap}.col{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;flex-wrap:wrap}.col>*,.row>*{padding:5px}.col.no-padding>*,.row.no-padding>*{padding:0}.table,.c12{width:100%}.c11{width:91.66%}.c10{width:83.33%}.c9{width:75%}.c8{width:66.66%}.c7{width:58.33%}.c6{width:50%}.c5{width:41.66%}.c4{width:33.33%}.c3{width:25%}.c2{width:16.66%}.c1{width:8.33%}@media(max-width:870px){.row .col{width:100%}}.card,.block{padding:5px;border:solid 2px;display:flex;flex-direction:column;justify-content:start;align-items:flex-start}.col>.card,.col>.block{height:100%}.row>.card,.row>.block{width:100%}.card{border-color:var(--cn-1)}.block{border-color:transparent}.central{display:flex;align-items:center;justify-content:center;background-size:cover;min-height:100vh}button~.central{min-height:calc(100vh - 50px)}.hero{padding:2rem;outline-style:double;outline-width:.5rem;margin:1rem}.push{justify-self:flex-end;margin-top:auto}h1,h2,h3,h4,h5,h6{display:table;padding:.25rem;font-size:1rem}h1{font-size:2rem}h1:before,h2:before,h3:before,h4:before,h5:before,h6:before{opacity:.3;font-size:1rem}h1:before{content:"# "}h2:before{content:"## "}h3:before{content:"### "}h4:before{content:"#### "}h5:before{content:"##### "}h6:before{content:"###### "}.ico{font:20px Arial Unicode MS,Lucida Sans Unicode;line-height:10px;vertical-align:top}label>*{display:inline}form>*{display:block;margin-bottom:10px}textarea,input,select{border:2px solid;padding:8px}textarea,input[type=text]{-webkit-appearance:none;width:13em;outline:0;border:2px solid}.addon{padding:8px 12px;border-width:2px;border-style:solid none solid solid}textarea:focus,input:focus,select:focus{border-color:var(--ci1)}.nav,.nav .current,.nav a:hover{background:#000;color:#fff}.nav{height:50px;padding:11px 0 15px}.nav a{color:#aaa;padding-right:1em;position:relative;top:-1px}.nav .pagename{font-weight:700;font-size:22px;top:1px}.btn.btn-close{background:#000;color:#aaa;float:right;font-size:25px;margin:-54px 7px;display:none}.btn.btn-close:hover{color:#fff}@media(max-width:500px){.btn.btn-close{display:block}.nav{overflow:hidden}.pagename{margin-top:-11px}.nav:active,.nav:focus{height:auto}.nav div:before{background:var(--fg);border-bottom:10px double;border-top:3px solid;content:'';float:right;height:4px;position:relative;right:3px;top:14px;width:20px}.nav a{display:block;padding:.5em 0;width:50%}}.table th,.table td{padding:.5em;text-align:left}.table tbody>:nth-child(2n-1){background:var(--bg2)}.msg{background:var(--cn-1);border-left:5px solid var(--cn0);padding:1.5em} \ No newline at end of file diff --git a/brut.min.css b/brut.min.css deleted file mode 100644 index dd85d84..0000000 --- a/brut.min.css +++ /dev/null @@ -1 +0,0 @@ -/* Copyright 2024 Yann Esposito; MIT licensed */html,body{font-size:12px;line-height:1.5em;min-height:100vh;margin:0;padding:0;border:0;outline:0}*{box-sizing:border-box}body,textarea,input,select{background:var(--bg);color:var(--fg);border-radius:0;font-family:Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,serif;font-size:1rem;margin:0}img{max-width:100%}.container{padding:0 20px;width:100%}@media(min-width:1380px){.container{margin:auto;max-width:1270px}}pre{background:var(--darken);padding:10px;margin:0;line-height:1rem;overflow:scroll}code{background:var(--darken);border:solid 1px var(--darken);padding:1px}blockquote{margin:1rem 0;padding-left:1rem;border-left:solid 1rem var(--nl)}ul{list-style-type:square;list-style-position:outside;padding-inline-start:1.5rem}ol{padding-inline-start:2rem}ul>li::marker{font-size:1.5rem}ul{padding:0;margin:0 1.5rem 0 0}li{line-height:1.2rem}.action,summary:hover{cursor:pointer;background:var(--bg2)}table{font-size:1rem}.sm{font-size:.75rem}.big{font-size:2rem;line-height:1.5em}.huge{font-size:4rem;line-height:1.5em}.addon,.sm,.nav,textarea,input,select{outline:0;line-height:1em}.hl{border-color:var(--fg)}p>.hl,li>.hl{border:solid 1px var(--fg);padding:1px}.tb,.btn,.tag{text-decoration:none;display:inline-block;text-align:center}.tb{font-weight:700;cursor:pointer;padding:2px;vertical-align:baseline}.tb:before,.tb:after{opacity:.3;display:inline-block}.tb:before{content:"❬"}.tb:after{content:"❭"}.tb:hover{text-decoration:underline}.tb:hover::before,.tb:hover::after{opacity:1}.tb:active:before{content:"❰"}.tb:active:after{content:"❱"}.btn{border:solid 2px var(--fg);font-weight:700;cursor:pointer;display:inline-block;margin:0 .25em .25em 0;padding:.5rem 1rem;box-shadow:.25em .25em var(--nl);vertical-align:bottom}.btn:hover{box-shadow:.25em .25em var(--n1)}.btn:active,.btn:focus{box-shadow:.05em .05em var(--n2);position:relative;top:.2em;left:.2em}.btn.sm{padding:.5rem 1rem}.btn.std{width:12em}.tag{padding:2px;font-size:.875rem;border:solid 1px var(--fg);margin:0 1px}.col,.row{display:flex;flex-direction:row;justify-content:stretch;align-items:stretch;flex-wrap:wrap;gap:1rem}.row>*{flex:1;max-height:100%}.col>*{flex:0;max-width:100%}.col{flex-direction:column}.col>.row{padding:0 1rem}.row>.col{padding:1rem 0}.start{justify-content:flex-start;align-items:flex-start}.middle{justify-content:center;align-item:center}.gapless{gap:0}.table,.c12{width:100%;flex:12}.c11{flex:11;width:91.66%}.c10{flex:10;width:83.33%}.c9{flex:9;width:75%}.c8{flex:8;width:66.66%}.c7{flex:7;width:58.33%}.c6{flex:6;width:50%}.c5{flex:5;width:41.66%}.c4{flex:4;width:33.33%}.c3{flex:3;width:25%}.c2{flex:2;width:16.66%}.c1{flex:1;width:8.33%}@media(max-width:960px){.row>*{flex:0 1 100%;width:100%}.no-mobile{display:none}}.no-grow{flex:0}.fixed{flex-grow:0;flex-shrink:0}.card,.block{padding:0;border:solid 1rem;overflow:hidden}.card>ul>li>a{width:100%;display:inline-block}.card>ul>li>a:hover{background:var(--accent);color:var(--bg)}.col.card,.col.block{justify-content:flex-start;align-items:flex-start}.card{border-color:var(--nl)}.card>*,.block>*{margin:1rem}.card>h1:first-child,.block>h1:first-child,.card>h2:first-child,.block>h2:first-child,.card>h3:first-child,.block>h3:first-child,.card>h4:first-child,.block>h4:first-child,.card>h5:first-child,.block>h5:first-child,.card>h6:first-child,.block>h6:first-child{margin-top:0}.card>h1,.block>h1,.card>h2,.block>h2,.card>h3,.block>h3,.card>h4,.block>h4,.card>h5,.block>h5{margin-left:0;margin-right:0}.block{border-color:transparent}.central{display:flex;align-items:center;justify-content:center;background-size:cover}button~.central{min-height:calc(100vh - 50px)}.hero{padding:2rem}.fill{flex-grow:1}footer,.push{justify-self:flex-end;margin-top:auto}.doc{max-width:65ch;font-size:1.25rem;font-family:-apple-system,BlinkMacSystemFont,avenir next,avenir,segoe ui,helvetica neue,helvetica,Cantarell,Ubuntu,roboto,noto,arial,sans-serif;text-align:justify;line-height:1.5em}.doc p{text-indent:3rem}.col.card,.row.card,.col.block,.row.block{padding:0}h1,h2,h3,h4,h5,h6{display:block;padding:0;font-size:1rem;outline:0;color:var(--bg);width:100%;margin:0 0 1rem}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:var(--bg)}.tight{margin:0}h1{background:var(--fg)}h2{background:var(--n2)}h3{background:var(--n1)}h4{color:var(--fg);background:var(--nl)}h5{color:var(--fg);background:var(--bg2)}h6{color:var(--fg)}h1:before{content:"≡ ";opacity:.3}h2:before{content:"= ";opacity:.3}h3:before{content:"- ";opacity:.3}h4:before{content:": ";opacity:.3}h5:before{content:"⋅ ";opacity:.3}h6{padding-left:1.25rem}.ico{font-family:Arial Unicode MS,Lucida Sans Unicode;font-style:normal}.big.ico,.huge.ico{vertical-align:middle}label>*{display:inline}form>*{display:block}textarea,input,select{border:2px solid;padding:2px;margin:0}textarea,input[type=text]{-webkit-appearance:none;width:13em;outline:0;border:2px solid}.addon{padding:2px;border-width:2px;border-style:solid none solid solid}textarea:focus,input:focus,select:focus{border-color:var(--accent)}.form-block:focus-within .addon{border-color:var(--accent)}.nav{background:var(--bg2);border-bottom:solid 1px var(--darken)}footer{background:var(--bg2);border-top:solid 1px var(--darken)}.nav{height:3rem;padding:11px 0 15px}.nav a{text-decoration:none;opacity:.7;padding-right:1em;position:relative;top:-1px}.nav a:hover{opacity:1}.nav .pagename{opacity:1;font-weight:700;font-size:22px;top:1px}.btn.btn-close{float:right;font-size:25px;margin:-4.1rem 0;display:none;border:none;box-shadow:none;background:0 0;color:var(--fg)}@media(max-width:640px){.btn.btn-close{display:block}.nav{overflow:hidden}.pagename{margin-top:-11px}.nav:active,.nav:focus{height:auto}.nav div:before{background:var(--bg2);border-bottom:11px double;border-top:3px solid;content:'';float:right;height:.25rem;position:relative;right:0;top:8px;width:2rem}.nav a{display:block;padding:.5em 0;width:50%}}.table th,.table td{padding:.5em;text-align:left}.table tbody>:nth-child(2n-1){background:var(--bg2)}.msg{border-left:5px solid var(--darken);padding:1rem}:root{--bg:#fff;--fg:#000;--bg2:#eee;--darken:rgba(0, 0, 0, 0.1);--nl:#d9d9d9;--n0:#999;--n1:#808080;--n2:#666666;--y:#b58900;--o:#cb4b16;--r:#dc322f;--m:#d33682;--v:#6c71c4;--b:#268bd2;--c:#2aa198;--g:#859900;--accent:var(--b)}body.soft{filter:brightness(85%)sepia(25%)}html{background:var(--bg);color:var(--fg)}.neutral{color:var(--n0)}.bg-neutral{background:var(--nl)}a{color:var(--fg)}p>a,li>a{color:var(--accent)}.msg,.btn{background-color:var(--bg2);color:var(--fg)}.hl,.msg,.btn,.b,.info,.g,.ok,.y,.warn,.r,.err,.m,.fatal,.o,.v,.c,.alert{border-color:var(--fg)}.hl,.b,.info,.g,.ok,.y,.warn,.r,.err,.m,.fatal,.o,.v,.c,.alert{color:var(--bg)}.hl a,.b a,.info a,.g a,.ok a,.y a,.warn a,.r a,.err a,.m a,.fatal a,.o a,.v a,.c a,.alert a{color:var(--bg)}.hl{background-color:var(--fg)}.b,.info{background-color:var(--b)}.g,.ok{background-color:var(--g)}.y,.warn{background-color:var(--y)}.r,.err{background-color:var(--r)}.m,.fatal{background-color:var(--m)}.o{background-color:var(--o)}.v{background-color:var(--v)}.c{background-color:var(--c)}@media(prefers-color-scheme:dark){body{filter:invert(100%)hue-rotate(180deg)}body.soft{filter:brightness(85%)sepia(25%)invert(100%)hue-rotate(180deg)}img,.fill{filter:brightness(80%)invert(100%)}.b,.info,.g,.ok,.y,.warn,.r,.err,.m,.fatal,.o,.v,.c,.alert{filter:brightness(90%)invert(100%)hue-rotate(180deg)}} \ No newline at end of file diff --git a/build.clj b/build.clj deleted file mode 100755 index c15f149..0000000 --- a/build.clj +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bb -(require '[babashka.fs :as fs] - '[babashka.process :refer [process]]) - -(def dist "_build") -(def tmp-dir (-> (fs/create-temp-dir) - (fs/delete-on-exit))) - -(def tmp-css (fs/file tmp-dir "tmp.css")) -(def brut-css "brut.min.css") - -(fs/create-dirs dist) - -(def sub-css - ["colors" - "general" - "buttons" - "grid" - "components" - "headings" - "icons" - "forms" - "navbar" - "tables" - "messages"]) - -(defn current-year [] - (-> (new java.util.Date) - .getYear - ;; yeah... it's dumb - (+ 1900))) - -(spit tmp-css (format "/* Copyright %s Yann Esposito; MIT licensed */" (current-year))) -(doseq [item sub-css] - (printf "building: %s\n" item) - (let [css (fs/file tmp-dir (str item ".css")) - min-css (fs/file dist (str item ".min.css")) - _ @(process ["lessc" (format "src/%s.less" item)] {:out css}) - minified (-> @(process ["minify" css] {:out :string}) :out)] - (spit min-css minified))) - -(fs/move tmp-css brut-css {:replace-existing true - :atomic-move true}) -(println "build: " brut-css) diff --git a/build.sh b/build.sh deleted file mode 100755 index a9280f4..0000000 --- a/build.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -DIST="_build" -TMPCSS="$DIST/tmp.css" -DISTCSS="brut.min.css" - -mkdir $DIST -p -[ -f $TMPCSS ] && rm -f $TMPCSS - - -subtypes=(general buttons grid components headings icons forms navbar tables messages colors ) -YEAR="$(date +"%Y")" -echo -n "/* Copyright $YEAR Yann Esposito; MIT licensed */" >> $TMPCSS - -for item in "${subtypes[@]}"; do - echo "building: $item" - lessc "src/$item.less" > "$DIST/$item.css" - minify "$DIST/$item.css" -o "$DIST/$item.min.css" - cat "$DIST/$item.min.css" >> $TMPCSS -done - -[ -f $DISTCSS.bak ] && rm -f $DISTCSS.bak -[ -f $DISTCSS ] && mv $DISTCSS $DISTCSS.bak -mv $TMPCSS $DISTCSS -# cleanup -rm -f $DISTCSS.bak -rm -f $TMPCSS -echo "Built: $DISTCSS" diff --git a/h/docs.html b/h/docs.html deleted file mode 100644 index 8d99e76..0000000 --- a/h/docs.html +++ /dev/null @@ -1,1158 +0,0 @@ -BRUT - documentation

Documentation

Here a bunch of examples with their source code to make them happen.

[§] Textual content

title in h1

Some text in <p> with different styles; bold, strong, italic, emphasis, code. If you really want something to be extremly visible, use the class hl.

Links will looks like this into text: This is a link inside a paragraph.

The text should be very dense on purpose. Forget your lessons about nice space in design here. The goal of this design is to produce professional UI applications. So no time to make it breathes. We want to make it compact and efficient.

Note we still try to keep a coherent and nice vertical rythm.

Here is some blockquote. This can give you an idea about the look and feel for them.


code
-  <div id="text">
-    <h1>title in h1</h1>
-    <p>Some text in &lt;p&gt; with different styles; <b>bold</b>,
-    <strong>strong</strong>, <i>italic</i>, <em>emphasis</em>,
-    <code>code</code>. If you really want something to be extremly
-    visible, <strong class="hl">use the class <code class="hl">hl</code></strong>.</p>
-    <p>Links will looks like this into text: <a href="#">This is a
-    link inside a paragraph.</a></p>
-    <p>The text should be <strong class="hl">very dense</strong> on
-    purpose. Forget your lessons about nice space in design here.
-    The goal of this design is to produce <em>professional</em> UI
-    applications. So no time to make it breathes. We want to make
-    it compact and efficient.</p>
-    <p>Note we still try to keep a coherent and nice vertical
-    rythm.</p>
-    <blockquote>
-      <p>Here is some blockquote. This can give you an idea about
-      the look and feel for them.</p>
-    </blockquote>
-  </div>
-

Remark if you need to present a long text to read you can still use the class doc. Take a look at the next paragraph for example:

Lorem ipsum with pretty Lorem ipsum dolor sit amet consectetur adipiscing elit, urna consequat felis vehicula class ultricies mollis dictumst, aenean non a in donec nulla. Phasellus ante pellentesque erat cum risus consequat imperdiet aliquam, integer placerat et turpis mi eros nec lobortis taciti, vehicula nisl litora tellus ligula porttitor metus.

Vivamus integer non suscipit taciti mus etiam at primis tempor sagittis sit, euismod libero facilisi aptent elementum felis blandit cursus gravida sociis erat ante, eleifend lectus nullam dapibus netus feugiat curae curabitur est ad. Massa curae fringilla porttitor quam sollicitudin iaculis aptent leo ligula euismod dictumst, orci penatibus mauris eros etiam praesent erat volutpat posuere hac. Metus fringilla nec ullamcorper odio aliquam lacinia conubia mauris tempor, etiam ultricies proin quisque lectus sociis id tristique, integer phasellus taciti pretium adipiscing tortor sagittis ligula.

The doc class ensure the width of the text is not too wide and use a very legible font.

code
-  <div id="doc">
-    <p>Remark if you need to present a long text to read you can
-    still use the class <code>doc</code>. Take a look at the next
-    paragraph for example:</p>
-    <div class="doc">
-      <p>Lorem ipsum with pretty Lorem ipsum dolor sit amet
-      consectetur adipiscing elit, urna consequat felis vehicula
-      class ultricies mollis dictumst, aenean non a in donec nulla.
-      Phasellus ante pellentesque erat cum risus consequat
-      imperdiet aliquam, integer placerat et turpis mi eros nec
-      lobortis taciti, vehicula nisl litora tellus ligula porttitor
-      metus.</p>
-      <p>Vivamus integer non suscipit taciti mus etiam at primis
-      tempor sagittis sit, euismod libero facilisi aptent elementum
-      felis blandit cursus gravida sociis erat ante, eleifend
-      lectus nullam dapibus netus feugiat curae curabitur est ad.
-      Massa curae fringilla porttitor quam sollicitudin iaculis
-      aptent leo ligula euismod dictumst, orci penatibus mauris
-      eros etiam praesent erat volutpat posuere hac. Metus
-      fringilla nec ullamcorper odio aliquam lacinia conubia mauris
-      tempor, etiam ultricies proin quisque lectus sociis id
-      tristique, integer phasellus taciti pretium adipiscing tortor
-      sagittis ligula.</p>
-    </div>
-    <p>The <code>doc</code> class ensure the width of the text is
-    not too wide and use a very legible font.</p>
-  </div>
-

headings

By default there is some space before and after any heading:

h1

h2

h3

h4

h5
h6

tight headings

You can remove the space by using the class tight to the heading:

h1 tight

h2 tight

h3 tight

h4 tight

h5 tight
h6 tight

code
-  <div>
-    <h3>headings</h3>
-    <p>By default there is some space before and after any
-    heading:</p>
-    <h1>h1</h1>
-    <h2>h2</h2>
-    <h3>h3</h3>
-    <h4>h4</h4>
-    <h5>h5</h5>
-    <h6>h6</h6>
-    <h3>tight headings</h3>
-    <p>You can remove the space by using the class
-    <code>tight</code> to the heading:</p>
-    <h1 class="tight">h1 tight</h1>
-    <h2 class="tight">h2 tight</h2>
-    <h3 class="tight">h3 tight</h3>
-    <h4 class="tight">h4 tight</h4>
-    <h5 class="tight">h5 tight</h5>
-    <h6 class="tight">h6 tight</h6>
-  </div>
-

itemization

ul

  • item 1
  • item 2
  • item 3; with a very long text that should wrap to the next line in any browser. We'll see that the wrapped text should be aligned with the text of the other items. This is due to the list-style-position: outside.
  • item 4

ol

  1. item 1
  2. item 2
  3. item 3
  4. item 4
code
-  <div id="itemize">
-    <h2>itemization</h2>
-    <h3>ul</h3>
-    <ul>
-      <li>item 1</li>
-      <li>item 2</li>
-      <li>item 3; with a very long text that should wrap to the
-      next line in any browser. We'll see that the wrapped text
-      should be aligned with the text of the other items. This is
-      due to the <code>list-style-position: outside</code>.</li>
-      <li>item 4</li>
-    </ul>
-    <h3>ol</h3>
-    <ol>
-      <li>item 1</li>
-      <li>item 2</li>
-      <li>item 3</li>
-      <li>item 4</li>
-    </ol>
-  </div>
-

[§] Grid

With default gap

c12
c11
c1
c10
c2
c9
c3
c8
c4
c7
c5
c6
c6
c5
c7
c4
c8
c3
c9
c2
c10
c1
c11
c12

code
-  <div>
-    <h3>With default gap</h3>
-    <div>
-      <div class="row">
-        <div class="bg-neutral c12">
-          c12
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c11">
-          c11
-        </div>
-        <div class="y c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c10">
-          c10
-        </div>
-        <div class="y c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c9">
-          c9
-        </div>
-        <div class="y c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c8">
-          c8
-        </div>
-        <div class="y c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="y c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="y c6">
-          c6
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="y c7">
-          c7
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="y c8">
-          c8
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="y c9">
-          c9
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="y c10">
-          c10
-        </div>
-      </div>
-      <div class="row">
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="y c11">
-          c11
-        </div>
-      </div>
-      <div class="row">
-        <div class="y c12">
-          c12
-        </div>
-      </div>
-    </div>
-  </div>
-

Gapless

c12
c11
c1
c10
c2
c9
c3
c8
c4
c7
c5
c6
c6
c5
c7
c4
c8
c3
c9
c2
c10
c1
c11
c12
code
-  <div>
-    <h3>Gapless</h3>
-    <div>
-      <div class="row gapless">
-        <div class="bg-neutral c12">
-          c12
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c11">
-          c11
-        </div>
-        <div class="y c1">
-          c1
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c10">
-          c10
-        </div>
-        <div class="y c2">
-          c2
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c9">
-          c9
-        </div>
-        <div class="y c3">
-          c3
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c8">
-          c8
-        </div>
-        <div class="y c4">
-          c4
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="y c5">
-          c5
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="y c6">
-          c6
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="y c7">
-          c7
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="y c8">
-          c8
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="y c9">
-          c9
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="y c10">
-          c10
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="y c11">
-          c11
-        </div>
-      </div>
-      <div class="row gapless">
-        <div class="y c12">
-          c12
-        </div>
-      </div>
-    </div>
-  </div>
-

3 columns


c1
c10
c1

c2
c9
c1
c1
c9
c2

c3
c8
c1
c2
c8
c2
c1
c8
c3

c4
c7
c1
c3
c7
c2
c2
c7
c3
c1
c7
c4

c5
c6
c1
c4
c6
c2
c3
c6
c3
c2
c6
c4
c1
c6
c5

c6
c5
c1
c5
c5
c2
c4
c5
c3
c3
c5
c4
c2
c5
c5
c1
c5
c6

c7
c4
c1
c6
c4
c2
c5
c4
c3
c4
c4
c4
c3
c4
c5
c2
c4
c6
c1
c4
c7

c8
c3
c1
c7
c3
c2
c6
c3
c3
c5
c3
c4
c4
c3
c5
c3
c3
c6
c2
c3
c7
c1
c3
c8

c9
c2
c1
c8
c2
c2
c7
c2
c3
c6
c2
c4
c5
c2
c5
c4
c2
c6
c3
c2
c7
c2
c2
c8
c1
c2
c9

c10
c1
c1
c9
c1
c2
c8
c1
c3
c7
c1
c4
c6
c1
c5
c5
c1
c6
c4
c1
c7
c3
c1
c8
c2
c1
c9
c1
c1
c10


code
-  <div>
-    <h3>3 columns</h3>
-    <div>
-      <br></br>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c10">
-          c10
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c9">
-          c9
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c9">
-          c9
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c8">
-          c8
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c8">
-          c8
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c8">
-          c8
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c7">
-          c7
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c6">
-          c6
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c6">
-          c6
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c5">
-          c5
-        </div>
-        <div class="r c6">
-          c6
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c7">
-          c7
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c6">
-          c6
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c6">
-          c6
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c4">
-          c4
-        </div>
-        <div class="r c7">
-          c7
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c8">
-          c8
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c7">
-          c7
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c6">
-          c6
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c6">
-          c6
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c7">
-          c7
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c3">
-          c3
-        </div>
-        <div class="r c8">
-          c8
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c9">
-          c9
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c8">
-          c8
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c7">
-          c7
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c6">
-          c6
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c6">
-          c6
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c7">
-          c7
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c8">
-          c8
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c2">
-          c2
-        </div>
-        <div class="r c9">
-          c9
-        </div>
-      </div><br></br>
-      <div class="row">
-        <div class="b c10">
-          c10
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c1">
-          c1
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c9">
-          c9
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c2">
-          c2
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c8">
-          c8
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c3">
-          c3
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c7">
-          c7
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c4">
-          c4
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c6">
-          c6
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c5">
-          c5
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c5">
-          c5
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c6">
-          c6
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c4">
-          c4
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c7">
-          c7
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c3">
-          c3
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c8">
-          c8
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c2">
-          c2
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c9">
-          c9
-        </div>
-      </div>
-      <div class="row">
-        <div class="b c1">
-          c1
-        </div>
-        <div class="bg-neutral c1">
-          c1
-        </div>
-        <div class="r c10">
-          c10
-        </div>
-      </div><br></br>
-    </div>
-  </div>
-

[§] Images

Images

Inside a grid

Inside a card

In a block

Directly in the column

code
-  <div id="images">
-    <h1>Images</h1>
-    <h2>Inside a grid</h2>
-    <div class="row">
-      <div class="card">
-      <p>Inside a card</p><img src="../h/img/brutalism.webp"></img></div>
-      <div class="block">
-      <p>In a block</p><img src="../h/img/brutalism.webp"></img></div>
-      <div><span>Directly in the column</span><img src="../h/img/brutalism.webp"></img></div>
-    </div>
-  </div>
-

[§] icons

Safe

☎ ♂ ♀ ⓧ © § ® ⇦ ⇧ ⇨ ⇩♠ ♣ ♥ ♦ ♪ ♛ ♜ ♝ ♞ ♟☜ ☞ ♨ ♭ ♯ ¥£ ¢❊ ฿ ๏ ※ ₧ ₨ ₪ € № -

The "Safe" icons should work almost everywhere.

Inserting in the middle of © some § text ® to check the size. Now this should give an idea about the size relatively to the text. Hmmm this is quite long and boring ฿ to write text in between like that!


code
-  <div class="col start">
-    <h4>Safe</h4><i class="ico block big">☎ ♂ ♀ ⓧ © § ® ⇦ ⇧ ⇨ ⇩♠ ♣
-    ♥ ♦ ♪ ♛ ♜ ♝ ♞ ♟☜ ☞ ♨ ♭ ♯ ¥£ ¢❊ ฿ ๏ ※ ₧ ₨ ₪ € №</i>
-    <div class="msg push">
-      <p>The "Safe" icons should work almost everywhere.</p>
-      <p><span>Inserting</span> <i class="ico">☎</i>
-      <span>in</span> <i class="ico">♂</i> <span>the</span>
-      <i class="ico">♀</i> <span>middle</span> <i class="ico">ⓧ</i>
-      <span>of</span> <i class="ico">©</i> <span>some</span>
-      <i class="ico">§</i> <span>text</span> <i class="ico">®</i>
-      <span>to</span> <i class="ico">⇦</i> <span>check</span>
-      <i class="ico">⇧</i> <span>the</span> <i class="ico">⇨</i>
-      <span>size.</span> <i class="ico">⇩</i> <span>Now</span>
-      <i class="ico">♠</i> <span>this</span> <i class="ico">♣</i>
-      <span>should</span> <i class="ico">♥</i> <span>give</span>
-      <i class="ico">♦</i> <span>an</span> <i class="ico">♪</i>
-      <span>idea</span> <i class="ico">♛</i> <span>about</span>
-      <i class="ico">♜</i> <span>the</span> <i class="ico">♝</i>
-      <span>size</span> <i class="ico">♞</i>
-      <span>relatively</span> <i class="ico">♟</i> <span>to</span>
-      <i class="ico">☜</i> <span>the</span> <i class="ico">☞</i>
-      <span>text.</span> <i class="ico">♨</i> <span>Hmmm</span>
-      <i class="ico">♭</i> <span>this</span> <i class="ico">♯</i>
-      <span>is</span> <i class="ico">¥</i> <span>quite</span>
-      <i class="ico">£</i> <span>long</span> <i class="ico">¢</i>
-      <span>and</span> <i class="ico">❊</i> <span>boring</span>
-      <i class="ico">฿</i> <span>to</span> <i class="ico">๏</i>
-      <span>write</span> <i class="ico">※</i> <span>text</span>
-      <i class="ico">₧</i> <span>in</span> <i class="ico">₨</i>
-      <span>between</span> <i class="ico">₪</i> <span>like</span>
-      <i class="ico">€</i> <span>that!</span> <i class="ico">№</i></p>
-    </div>
-  </div>
-

Total Set

✉ ✰ ☁ ✈ ☑ ☒ ✆ ☀ ☮ ☢ ☠ ☣ ⌂ ℗ ☺ ☻ ☼ ∡ ∿ ⊝ ⊘ ⁂ ☤ ♫ ☄ ✎ ☟ ☝ ☹ ☭ ☚ ☛ ✌ 〠 ☃ ♮ ☂ ☸ ✍ ☯ ✂ ₩ ◍ ۩ -
Just a bunch of a few more unicode icons.
code
-  <div class="col start">
-    <h4>Total Set</h4><i class="ico block big">✉ ✰ ☁ ✈ ☑ ☒ ✆ ☀ ☮ ☢
-    ☠ ☣ ⌂ ℗ ☺ ☻ ☼ ∡ ∿ ⊝ ⊘ ⁂ ☤ ♫ ☄ ✎ ☟ ☝ ☹ ☭ ☚ ☛ ✌ 〠 ☃ ♮ ☂ ☸ ✍ ☯ ✂ ₩
-    ◍ ۩</i>
-    <div class="msg">
-      Just a bunch of a few more unicode icons.
-    </div>
-  </div>
-

[§] Forms





$


Be careful with addons! If you do not want a space between the addon and the input make sure that there is no space between the <span> and <input> tags. Example:
... </span> <input ...
$
... </span><input ...
$

code
-  <div>
-    <input id="example1" placeholder="text input" type="text"></input><br></br>
-    <br></br>
-    <textarea cols="30" id="textarea1" placeholder="textarea" rows="3"></textarea><br></br>
-    <br></br>
-    <div class="form-block">
-      <span class="addon info">$</span><input placeholder="with addon" type="text"></input>
-    </div><br></br>
-    <br></br>
-    <div class="msg">
-      <strong>Be careful with addons!</strong> If you do not want a
-      space between the addon and the input make sure that there is
-      no space between the <code>&lt;span&gt;</code> and
-      <code>&lt;input&gt;</code> tags. Example:
-      <pre>... &lt;/span&gt;<span class="hl"> </span>&lt;input ...</pre>
-      <div class="form-block">
-        <span class="addon">$</span> <input class="smooth" type="text"></input>
-      </div>
-      <pre>... &lt;/span&gt;&lt;input ...</pre>
-      <div class="form-block">
-        <span class="addon">$</span><input class="smooth" type="text"></input>
-      </div>
-    </div>
-  </div>
-

[§] Tables

#Widgets SoldRevenue (£)Profit (£)
15102
210204
35001000200

code
-  <table class="table">
-    <thead>
-      <tr>
-        <th>#</th>
-        <th>Widgets Sold</th>
-        <th>Revenue (£)</th>
-        <th>Profit (£)</th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr>
-        <td>1</td>
-        <td>5</td>
-        <td>10</td>
-        <td>2</td>
-      </tr>
-      <tr>
-        <td>2</td>
-        <td>10</td>
-        <td>20</td>
-        <td>4</td>
-      </tr>
-      <tr>
-        <td>3</td>
-        <td>500</td>
-        <td>1000</td>
-        <td>200</td>
-      </tr>
-    </tbody>
-  </table>
-

[§] Buttons

Tags

  • item-1tag
  • item-2hl tag
  • item-3info
  • item-4ok
  • item-5warn
  • item-6err
  • item-7fatal

code
-  <div id="tags">
-    <h2>Tags</h2>
-    <ul>
-      <li>item-1<span class="tag">tag</span></li>
-      <li>item-2<span class="tag hl">hl tag</span></li>
-      <li>item-3<span class="tag info">info</span></li>
-      <li>item-4<span class="tag ok">ok</span></li>
-      <li>item-5<span class="tag warn">warn</span></li>
-      <li>item-6<span class="tag err">err</span></li>
-      <li>item-7<span class="tag fatal">fatal</span></li>
-    </ul>
-  </div>
-

Inline Tags

tagtag hlinfookwarnerrfatal
code
-  <div id="tags-inline">
-    <h2>Inline Tags</h2><span class="tag">tag</span><span class="tag hl">tag hl</span><span class="tag info">info</span><span class="tag ok">ok</span><span class="tag warn">warn</span><span class="tag err">err</span><span class="tag fatal">fatal</span>
-  </div>
-

code
-  <div id="text-buttons">
-    <h3>Textual buttons</h3><a class="tb">tb</a><a class="tb hl">tb
-    hl</a><a class="tb info">tb info</a><a class="tb ok">tb
-    ok</a><a class="tb warn">tb warn</a><a class="tb err">tb
-    err</a><a class="tb fatal">tb fatal</a>
-  </div>
-

Textual Buttons Sizes

Some text: small button
Some text: normal ok
Some text: big warn
Some text: huge err
code
-  <div id="text-buttons-sizes">
-    <h3>Textual Buttons Sizes</h3>
-    <div class="block">
-      Some text: <a class="tb sm">small button</a><br></br>
-      Some text: <a class="tb ok">normal ok</a><br></br>
-      Some text: <a class="tb big warn">big warn</a><br></br>
-      Some text: <a class="tb huge err">huge err</a>
-    </div>
-  </div>
-

code
-  <div class="col">
-    <h2>Buttons</h2>
-    <div class="row">
-      <div class="card">
-        <h3>Classic</h3><a class="btn">btn</a><a class="btn hl">btn
-        hl</a><a class="btn info">btn info</a><a class="btn ok">btn
-        ok</a><a class="btn warn">btn warn</a><a class="btn err">btn err</a><a class="btn fatal">btn fatal</a>
-      </div>
-      <div class="card">
-        <h3>Sizes</h3><a class="btn sm">btn sm</a><a class="btn info">btn info</a><a class="btn big warn">btn big
-        warn</a><a class="btn huge err">btn huge err</a>
-      </div>
-    </div>
-    <div class="row">
-      <div class="col c4 card">
-        <h3>Standardized Width <code>btn std</code></h3>
-        <div class="col">
-          <a class="btn std">btn std</a><a class="btn std hl">btn
-          std hl</a><a class="btn std info">btn std
-          info</a><a class="btn std ok">btn std ok</a><a class="btn std warn">btn std warn</a><a class="btn std err">btn
-          std err</a><a class="btn std fatal">btn std fatal</a>
-        </div>
-      </div>
-      <div class="col card c4">
-        <h3>Big</h3>
-        <div class="col big">
-          <a class="btn std">btn std</a><a class="btn std hl">btn
-          std hl</a><a class="btn std info">btn std
-          info</a><a class="btn std ok">btn std ok</a><a class="btn std warn">btn std warn</a><a class="btn std err">btn
-          std err</a><a class="btn std fatal">btn std fatal</a>
-        </div>
-      </div>
-      <div class="col card c4">
-        <h3>Huge</h3>
-        <div class="col huge">
-          <a class="btn std">btn std</a><a class="btn std hl">btn
-          std hl</a><a class="btn std info">btn std
-          info</a><a class="btn std ok">btn std ok</a><a class="btn std warn">btn std warn</a><a class="btn std err">btn
-          std err</a><a class="btn std fatal">btn std fatal</a>
-        </div>
-      </div>
-    </div>
-  </div>
-

[§] Messages

Basic Messages


Normal Message This is a normal message with msg.
Info This is done by adding info to the class. -
OK This is done by adding ok to the class. -
Warning This is done by adding warn to the class. -
Error This is done by adding err to the class. -
Fatal This is done by adding fatal to the class. -
Highlighted This is done by adding hl to the class. -

code
-  <div class="row">
-    <div class="col c6 gapless">
-      <h2>Basic Messages</h2><br></br>
-      <div class="msg">
-        <strong>Normal Message</strong> This is a normal message
-        with <code>msg</code>.
-      </div>
-      <div class="msg info">
-        <strong><i class="ico big">☞</i> Info</strong> This is done
-        by adding <code>info</code> to the class.
-      </div>
-      <div class="msg ok">
-        <strong><i class="ico big">☑</i> OK</strong> This is done
-        by adding <code>ok</code> to the class.
-      </div>
-      <div class="msg warn">
-        <strong><i class="ico big">☣</i> Warning</strong> This is
-        done by adding <code>warn</code> to the class.
-      </div>
-      <div class="msg err">
-        <strong><i class="ico big">☒</i> Error</strong> This is
-        done by adding <code>err</code> to the class.
-      </div>
-      <div class="msg fatal">
-        <strong><i class="ico big">☠</i> Fatal</strong> This is
-        done by adding <code>fatal</code> to the class.
-      </div>
-      <div class="msg hl">
-        <strong><i class="ico big">☞</i>Highlighted</strong> This
-        is done by adding <code>hl</code> to the class.
-      </div>
-    </div>
-  </div>
-

code
-  <div class="navbar">
-    <nav class="nav" onclick="this.focus()" tabindex="-1">
-      <div class="container">
-        <a class="pagename current" href="#">BRUT</a><a href="#">One</a><a href="#">Two</a><a href="#">Three</a><a href="#">Four</a>
-      </div>
-    </nav><button class="btn-close btn sm">×</button>
-  </div>
-

code
-  <footer>
-    <div class="container">
-      <p>Made by <a href="https://yannesposito.com">Yann
-      Esposito</a></p>
-    </div>
-  </footer>
-
\ No newline at end of file diff --git a/h/download.html b/h/download.html deleted file mode 100644 index b477362..0000000 --- a/h/download.html +++ /dev/null @@ -1 +0,0 @@ -BRUT - download
Download BRUT
\ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 7b98d38..0000000 --- a/index.html +++ /dev/null @@ -1 +0,0 @@ -BRUT

BRUT

A Brutalist and Minimalist CSS Framework

This CSS framework is ideal to be used for private admin interfaces.

Just by the look of it, it will scream: THIS IS NOT FOR NON-TECHNICAL PEOPLE!!!

Docs

A few quick examples to show every components. This should be quick and straightforward.

This CSS framework makes its best to respect some expected composability accross classes. Here are a few examples:

A block:

textual btn

classic btn

Some message block

Then add the class big:

textual btn

classic btn

Some message block
Docs

Download

Download BRUT

Download
\ No newline at end of file diff --git a/optim-img.sh b/optim-img.sh deleted file mode 100755 index b48cff4..0000000 --- a/optim-img.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env zsh - -src="$1" -dst="$2" - -sizeof() { - stat --format="%s" "$*" -} - - -convert "$src" -resize 800x800\> "$dst" - -before=$(sizeof $src) - -if [[ "${src:e}" == "gif" ]]; then - after=$(sizeof $dst) - dest=$dst -else - cwebp "$dst" -quiet -o "$dst.webp" - after=$(sizeof $dst.webp) - dest=$dst.webp -fi - - -if (( before <= after )); then - cp -f "$src" "$dst" - print -- "[0%] cp $before => $before" -else - gain=$(( ( (before - after) * 100 ) / before )) - print -- "[$gain%] convert $before => $after" -fi -