From 9f681e94a9f5e3fd64c113ca3de6e2e9c859c76d Mon Sep 17 00:00:00 2001 From: nsde Date: Fri, 21 Jul 2023 23:50:17 +0200 Subject: [PATCH] Homepage fronte-end 70% done --- .vscode/settings.json | 21 +++++++++ app.py | 24 ++++++++++ static/css/_vars.sass | 13 ++++++ static/css/base.css | 57 +++++++++++++++++++++++ static/css/base.css.map | 1 + static/css/base.sass | 49 ++++++++++++++++++++ static/css/footer.css | 58 +++++++++++++++++++++++ static/css/footer.css.map | 1 + static/css/footer.sass | 58 +++++++++++++++++++++++ static/css/home.css | 14 ++++++ static/css/home.css.map | 1 + static/css/home.sass | 13 ++++++ static/css/navbar.css | 93 +++++++++++++++++++++++++++++++++++++ static/css/navbar.css.map | 1 + static/css/navbar.sass | 95 ++++++++++++++++++++++++++++++++++++++ static/img/fav.ico | Bin 0 -> 16958 bytes static/img/icon.png | Bin 0 -> 38030 bytes templates/index.html | 9 ++++ 18 files changed, 508 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 app.py create mode 100644 static/css/_vars.sass create mode 100644 static/css/base.css create mode 100644 static/css/base.css.map create mode 100644 static/css/base.sass create mode 100644 static/css/footer.css create mode 100644 static/css/footer.css.map create mode 100644 static/css/footer.sass create mode 100644 static/css/home.css create mode 100644 static/css/home.css.map create mode 100644 static/css/home.sass create mode 100644 static/css/navbar.css create mode 100644 static/css/navbar.css.map create mode 100644 static/css/navbar.sass create mode 100644 static/img/fav.ico create mode 100644 static/img/icon.png create mode 100644 templates/index.html diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c3d4535 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,21 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/__pycache__": true, + "**/.vscode": true, + "**/*.map": true, + "static/css/base.css": true, + "static/css/home.css": true, + "static/css/navbar.css": true + }, + "hide-files.files": [ + "static/css/base.css", + "static/css/home.css", + "static/css/navbar.css" + ] +} \ No newline at end of file diff --git a/app.py b/app.py new file mode 100644 index 0000000..a6275c1 --- /dev/null +++ b/app.py @@ -0,0 +1,24 @@ +import os +import flask +import logging + +from dotenv import load_dotenv + +load_dotenv() + +app = flask.Flask(__name__) + +log = logging.getLogger('werkzeug') +log.disabled = True + +@app.context_processor +def inject_variables(): + return { + 'contact_email': os.getenv('CONTACT_EMAIL') + } + +@app.route('/') +def index(): + return flask.render_template('index.html') + +app.run(debug=True, use_evalex=False, port=2323) diff --git a/static/css/_vars.sass b/static/css/_vars.sass new file mode 100644 index 0000000..ed0f32f --- /dev/null +++ b/static/css/_vars.sass @@ -0,0 +1,13 @@ +$text: #f3f3f3 +$background: #03060d +$secondary: #253038 +$border: #161d2bb0 + +$primary: #922646 +$primary-light: #f45a88 +$accent: #28aaf0 + +$edge: 5px + +$main-width: 800px +$more-width: 1000px diff --git a/static/css/base.css b/static/css/base.css new file mode 100644 index 0000000..1e784a7 --- /dev/null +++ b/static/css/base.css @@ -0,0 +1,57 @@ +@import url("https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap"); +html { + scroll-behavior: smooth; +} + +body { + background-color: #03060d; +} + +nav, main, footer { + max-width: 800px; + margin: 0 auto; +} + +*, *::before, *::after { + box-sizing: border-box; + border: none; + color: #f3f3f3; + font-family: "Inter", sans-serif; +} + +a { + text-decoration: none; +} + +h1, h1 *, h2, h2 *, h3, h3 * { + font-weight: 700; + line-height: 4.8rem; + font-family: "Syne", sans-serif; +} + +img { + display: block; + max-width: 100%; +} + +p { + line-height: 18px; + line-height: 32px; +} + +:focus:not(:focus-visible) { + outline: none; +} + +mark { + color: #f3f3f3; + background: #f45a88; + padding: 5px 7px; + border-radius: 5px; +} + +@media (max-width: 900px) { + body { + margin: 0 2rem; + } +}/*# sourceMappingURL=base.css.map */ \ No newline at end of file diff --git a/static/css/base.css.map b/static/css/base.css.map new file mode 100644 index 0000000..7ad2052 --- /dev/null +++ b/static/css/base.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["base.sass","base.css","_vars.sass"],"names":[],"mappings":"AACQ,kFAAA;AAER;EACI,uBAAA;ACDJ;;ADGA;EACI,yBENS;ADMb;;ADEA;EACI,gBECS;EFAT,cAAA;ACCJ;;ADCA;EACI,sBAAA;EACA,YAAA;EACA,cEhBG;EFiBH,gCAAA;ACEJ;;ADAA;EACI,qBAAA;ACGJ;;ADAI;EACI,gBAAA;EACA,mBAAA;EACA,+BAAA;ACGR;;ADDA;EACI,cAAA;EACA,eAAA;ACIJ;;ADFA;EACI,iBAAA;EACA,iBAAA;ACKJ;;ADHA;EACI,aAAA;ACMJ;;ADJA;EACI,cExCG;EFyCH,mBEnCY;EFoCZ,gBAAA;EACA,kBAAA;ACOJ;;ADLA;EACI;IACI,cAAA;ECQN;AACF","file":"base.css","sourcesContent":["@import '_vars'\n@import url('https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap')\n\nhtml\n scroll-behavior: smooth\n\nbody\n background-color: $background\n\nnav, main, footer\n max-width: $main-width\n margin: 0 auto\n\n*, *::before, *::after\n box-sizing: border-box\n border: none\n color: $text\n font-family: 'Inter', sans-serif\n\na\n text-decoration: none\n\nh1, h2, h3\n &, *\n font-weight: 700\n line-height: 4.8rem\n font-family: 'Syne', sans-serif\n\nimg\n display: block\n max-width: 100%\n\np\n line-height: 18px\n line-height: 32px\n\n:focus:not(:focus-visible)\n outline: none\n\nmark\n color: $text\n background: $primary-light\n padding: 5px 7px\n border-radius: 5px\n\n@media (max-width: 900px)\n body\n margin: 0 2rem\n\n","@import url(\"https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap\");\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n background-color: #03060d;\n}\n\nnav, main, footer {\n max-width: 800px;\n margin: 0 auto;\n}\n\n*, *::before, *::after {\n box-sizing: border-box;\n border: none;\n color: #f3f3f3;\n font-family: \"Inter\", sans-serif;\n}\n\na {\n text-decoration: none;\n}\n\nh1, h1 *, h2, h2 *, h3, h3 * {\n font-weight: 700;\n line-height: 4.8rem;\n font-family: \"Syne\", sans-serif;\n}\n\nimg {\n display: block;\n max-width: 100%;\n}\n\np {\n line-height: 18px;\n line-height: 32px;\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n}\n\nmark {\n color: #f3f3f3;\n background: #f45a88;\n padding: 5px 7px;\n border-radius: 5px;\n}\n\n@media (max-width: 900px) {\n body {\n margin: 0 2rem;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]} \ No newline at end of file diff --git a/static/css/base.sass b/static/css/base.sass new file mode 100644 index 0000000..1b92906 --- /dev/null +++ b/static/css/base.sass @@ -0,0 +1,49 @@ +@import '_vars' +@import url('https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap') + +html + scroll-behavior: smooth + +body + background-color: $background + +nav, main, footer + max-width: $main-width + margin: 0 auto + +*, *::before, *::after + box-sizing: border-box + border: none + color: $text + font-family: 'Inter', sans-serif + +a + text-decoration: none + +h1, h2, h3 + &, * + font-weight: 700 + line-height: 4.8rem + font-family: 'Syne', sans-serif + +img + display: block + max-width: 100% + +p + line-height: 18px + line-height: 32px + +:focus:not(:focus-visible) + outline: none + +mark + color: $text + background: $primary-light + padding: 5px 7px + border-radius: 5px + +@media (max-width: 900px) + body + margin: 0 2rem + diff --git a/static/css/footer.css b/static/css/footer.css new file mode 100644 index 0000000..d38cd14 --- /dev/null +++ b/static/css/footer.css @@ -0,0 +1,58 @@ +footer { + padding-top: 4rem; + margin: 4rem auto; + max-width: 800px; +} +footer.wide { + max-width: 1000px; +} +footer div.rows { + display: grid; + grid-auto-flow: column; + margin-bottom: 2rem; +} +footer div.rows div.row { + margin-right: 1.5rem; + margin-bottom: 0.5rem; +} +footer div.rows div.row:last-child { + margin-right: 0; + margin-bottom: 0; +} +footer div.rows div.row h2 { + opacity: 1; + font-size: 1rem; + font-weight: 500; + margin: 1rem 0; + line-height: normal; +} +footer div.rows div.row a { + width: -moz-fit-content; + width: fit-content; + font-size: 14px; + opacity: 0.6; + display: block; + text-decoration: none; + margin-bottom: 1rem; +} +footer div.rows div.row a:hover { + opacity: 0.8; +} +footer p { + opacity: 0.7; +} + +@media (max-width: 1000px) { + footer div.rows { + grid-auto-flow: row; + grid-template-columns: repeat(2, 1fr); + } + footer div.rows div.row { + margin-bottom: 1rem; + } +} +@media (max-width: 600px) { + footer div.rows { + grid-template-columns: 1fr; + } +}/*# sourceMappingURL=footer.css.map */ \ No newline at end of file diff --git a/static/css/footer.css.map b/static/css/footer.css.map new file mode 100644 index 0000000..2579417 --- /dev/null +++ b/static/css/footer.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["footer.sass","_vars.sass","footer.css"],"names":[],"mappings":"AAEA;EACI,iBAAA;EACA,iBAAA;EACA,gBCMS;ACPb;AFGI;EACI,iBCIK;ACLb;AFGI;EACI,aAAA;EACA,sBAAA;EAEA,mBAAA;AEFR;AFIQ;EACI,oBAAA;EACA,qBAAA;AEFZ;AFIY;EACI,eAAA;EACA,gBAAA;AEFhB;AFIY;EACI,UAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AEFhB;AFIY;EACI,uBAAA;EAAA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;EACA,mBAAA;AEFhB;AFIgB;EACI,YAAA;AEFpB;AFII;EACI,YAAA;AEFR;;AFIA;EAEQ;IACI,mBAAA;IACA,qCAAA;EEFV;EFIU;IACI,mBAAA;EEFd;AACF;AFGA;EAEQ;IACI,0BAAA;EEFV;AACF","file":"footer.css","sourcesContent":["@import '_vars'\n\nfooter\n padding-top: 4rem\n margin: 4rem auto\n max-width: $main-width\n\n &.wide\n max-width: $more-width\n\n div.rows\n display: grid\n grid-auto-flow: column\n // justify-content: space-between\n margin-bottom: 2rem\n\n div.row\n margin-right: 1.5rem\n margin-bottom: 0.5rem\n\n &:last-child\n margin-right: 0\n margin-bottom: 0\n\n h2\n opacity: 1\n font-size: 1rem\n font-weight: 500\n margin: 1rem 0\n line-height: normal\n\n a\n width: fit-content\n font-size: 14px\n opacity: 0.6\n display: block\n text-decoration: none\n margin-bottom: 1rem\n\n &:hover\n opacity: 0.8\n\n p\n opacity: 0.7\n\n@media (max-width: 1000px)\n footer\n div.rows\n grid-auto-flow: row\n grid-template-columns: repeat(2, 1fr)\n\n div.row\n margin-bottom: 1rem\n\n@media (max-width: 600px)\n footer\n div.rows\n grid-template-columns: 1fr\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","footer {\n padding-top: 4rem;\n margin: 4rem auto;\n max-width: 800px;\n}\nfooter.wide {\n max-width: 1000px;\n}\nfooter div.rows {\n display: grid;\n grid-auto-flow: column;\n margin-bottom: 2rem;\n}\nfooter div.rows div.row {\n margin-right: 1.5rem;\n margin-bottom: 0.5rem;\n}\nfooter div.rows div.row:last-child {\n margin-right: 0;\n margin-bottom: 0;\n}\nfooter div.rows div.row h2 {\n opacity: 1;\n font-size: 1rem;\n font-weight: 500;\n margin: 1rem 0;\n line-height: normal;\n}\nfooter div.rows div.row a {\n width: fit-content;\n font-size: 14px;\n opacity: 0.6;\n display: block;\n text-decoration: none;\n margin-bottom: 1rem;\n}\nfooter div.rows div.row a:hover {\n opacity: 0.8;\n}\nfooter p {\n opacity: 0.7;\n}\n\n@media (max-width: 1000px) {\n footer div.rows {\n grid-auto-flow: row;\n grid-template-columns: repeat(2, 1fr);\n }\n footer div.rows div.row {\n margin-bottom: 1rem;\n }\n}\n@media (max-width: 600px) {\n footer div.rows {\n grid-template-columns: 1fr;\n }\n}"]} \ No newline at end of file diff --git a/static/css/footer.sass b/static/css/footer.sass new file mode 100644 index 0000000..9c5ea23 --- /dev/null +++ b/static/css/footer.sass @@ -0,0 +1,58 @@ +@import '_vars' + +footer + padding-top: 4rem + margin: 4rem auto + max-width: $main-width + + &.wide + max-width: $more-width + + div.rows + display: grid + grid-auto-flow: column + // justify-content: space-between + margin-bottom: 2rem + + div.row + margin-right: 1.5rem + margin-bottom: 0.5rem + + &:last-child + margin-right: 0 + margin-bottom: 0 + + h2 + opacity: 1 + font-size: 1rem + font-weight: 500 + margin: 1rem 0 + line-height: normal + + a + width: fit-content + font-size: 14px + opacity: 0.6 + display: block + text-decoration: none + margin-bottom: 1rem + + &:hover + opacity: 0.8 + + p + opacity: 0.7 + +@media (max-width: 1000px) + footer + div.rows + grid-auto-flow: row + grid-template-columns: repeat(2, 1fr) + + div.row + margin-bottom: 1rem + +@media (max-width: 600px) + footer + div.rows + grid-template-columns: 1fr diff --git a/static/css/home.css b/static/css/home.css new file mode 100644 index 0000000..9fd6a66 --- /dev/null +++ b/static/css/home.css @@ -0,0 +1,14 @@ +header { + max-width: 800px; + margin: 0 auto; + font-size: 40px; +} + +@media (max-width: 800px) { + header { + font-size: 26px; + } + header h1 { + line-height: 3rem; + } +}/*# sourceMappingURL=home.css.map */ \ No newline at end of file diff --git a/static/css/home.css.map b/static/css/home.css.map new file mode 100644 index 0000000..d98ac12 --- /dev/null +++ b/static/css/home.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["home.sass","_vars.sass","home.css"],"names":[],"mappings":"AAEA;EACI,gBCQS;EDPT,cAAA;EACA,eAAA;AEDJ;;AFGA;EACI;IACI,eAAA;EEAN;EFEM;IACI,iBAAA;EEAV;AACF","file":"home.css","sourcesContent":["@import '_vars'\n\nheader\n max-width: $main-width\n margin: 0 auto\n font-size: 40px\n\n@media (max-width: 800px)\n header\n font-size: 26px\n \n h1\n line-height: 3rem\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","header {\n max-width: 800px;\n margin: 0 auto;\n font-size: 40px;\n}\n\n@media (max-width: 800px) {\n header {\n font-size: 26px;\n }\n header h1 {\n line-height: 3rem;\n }\n}"]} \ No newline at end of file diff --git a/static/css/home.sass b/static/css/home.sass new file mode 100644 index 0000000..2ad88fb --- /dev/null +++ b/static/css/home.sass @@ -0,0 +1,13 @@ +@import '_vars' + +header + max-width: $main-width + margin: 0 auto + font-size: 40px + +@media (max-width: 800px) + header + font-size: 26px + + h1 + line-height: 3rem diff --git a/static/css/navbar.css b/static/css/navbar.css new file mode 100644 index 0000000..3f45339 --- /dev/null +++ b/static/css/navbar.css @@ -0,0 +1,93 @@ +nav { + display: flex; + align-items: center; + position: relative; +} +nav > .logo { + display: inline-block; + stroke: #f45a88; + min-height: 40px; + min-width: 40px; + height: 40px; + width: 40px; + margin-right: 8px; + transition: stroke 0.2s; +} +nav > h1 { + font-weight: 500; + font-size: 20px; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +nav > h1 mark { + font-size: 1rem; + position: relative; + top: -3px; +} +nav > span { + flex-grow: 1; +} +nav #menu { + display: none; + cursor: pointer; +} + +.link-menu > a { + font-size: 14px; + font-weight: 600; + margin-left: 2rem; + text-decoration: none; + transition: color 0.1s; +} +.link-menu > a:hover { + color: #f45a88; +} + +@media (max-width: 800px) { + .link-menu { + transform: scale(0.8) translateX(1rem); + opacity: 0; + z-index: 100; + width: 200px; + position: absolute; + top: 5rem; + right: 2rem; + background: #253038; + padding: 1rem 0; + border-radius: 5px; + -webkit-backdrop-filter: blur(4px); + backdrop-filter: blur(4px); + border: 1px solid rgba(22, 29, 43, 0.6901960784); + transition: transform 0.2s, opacity 0.2s; + } + .link-menu.open { + opacity: 1; + transform: inherit; + } + .link-menu a { + font-size: 20px; + display: block; + line-height: 3rem; + } + nav .logo { + stroke: #f45a88; + } + nav #menu { + display: block; + min-height: 32px; + min-width: 32px; + height: 32px; + width: 32px; + cursor: pointer; + transition: 0.5s; + } + nav #menu.active { + transform: rotate(90deg); + } +} +@media (max-width: 400px) { + nav h1 { + display: none; + } +}/*# sourceMappingURL=navbar.css.map */ \ No newline at end of file diff --git a/static/css/navbar.css.map b/static/css/navbar.css.map new file mode 100644 index 0000000..68c3653 --- /dev/null +++ b/static/css/navbar.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["navbar.sass","navbar.css","_vars.sass"],"names":[],"mappings":"AAEA;EACI,aAAA;EACA,mBAAA;EACA,kBAAA;ACDJ;ADGI;EACI,qBAAA;EACA,eEHQ;EFIR,gBAAA;EACA,eAAA;EACA,YAAA;EACA,WAAA;EAEA,iBAAA;EACA,uBAAA;ACFR;ADII;EACI,gBAAA;EACA,eAAA;EACA,yBAAA;KAAA,sBAAA;UAAA,iBAAA;ACFR;ADIQ;EACI,eAAA;EACA,kBAAA;EACA,SAAA;ACFZ;ADKI;EACI,YAAA;ACHR;ADMI;EACI,aAAA;EACA,eAAA;ACJR;;ADOI;EACI,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,sBAAA;ACJR;ADMQ;EACI,cExCI;ADoChB;;ADMA;EACI;IACI,sCAAA;IACA,UAAA;IAEA,YAAA;IACA,YAAA;IACA,kBAAA;IACA,SAAA;IACA,WAAA;IACA,mBExDI;IFyDJ,eAAA;IACA,kBEnDD;IFoDC,kCAAA;YAAA,0BAAA;IACA,gDAAA;IAEA,wCAAA;ECLN;EDOM;IACI,UAAA;IACA,kBAAA;ECLV;EDOM;IACI,eAAA;IACA,cAAA;IACA,iBAAA;ECLV;EDQM;IACI,eEvEI;EDiEd;EDQM;IACI,cAAA;IACA,gBAAA;IACA,eAAA;IACA,YAAA;IACA,WAAA;IACA,eAAA;IACA,gBAAA;ECNV;EDQU;IACI,wBAAA;ECNd;AACF;ADOA;EAEQ;IACI,aAAA;ECNV;AACF","file":"navbar.css","sourcesContent":["@import '_vars'\n\nnav\n display: flex\n align-items: center\n position: relative\n\n >.logo\n display: inline-block\n stroke: $primary-light\n min-height: 40px\n min-width: 40px\n height: 40px\n width: 40px\n\n margin-right: 8px\n transition: stroke 0.2s\n\n >h1\n font-weight: 500\n font-size: 20px\n user-select: none\n\n mark\n font-size: 1rem\n position: relative\n top: -3px\n\n\n >span\n flex-grow: 1\n\n\n #menu\n display: none\n cursor: pointer\n\n.link-menu\n >a\n font-size: 14px\n font-weight: 600\n margin-left: 2rem\n text-decoration: none\n transition: color 0.1s\n\n &:hover\n color: $primary-light\n\n@media (max-width: 800px)\n .link-menu\n transform: scale(0.8) translateX(1rem)\n opacity: 0\n\n z-index: 100\n width: 200px\n position: absolute\n top: 5rem\n right: 2rem\n background: $secondary\n padding: 1rem 0\n border-radius: $edge\n backdrop-filter: blur(4px)\n border: 1px solid $border\n\n transition: transform 0.2s, opacity 0.2s\n\n &.open\n opacity: 1\n transform: inherit\n\n a\n font-size: 20px\n display: block\n line-height: 3rem\n\n nav\n .logo\n stroke: $primary-light\n\n #menu\n display: block\n min-height: 32px\n min-width: 32px\n height: 32px\n width: 32px\n cursor: pointer\n transition: 0.5s\n\n &.active\n transform: rotate(90deg)\n\n@media (max-width: 400px)\n nav\n h1\n display: none","nav {\n display: flex;\n align-items: center;\n position: relative;\n}\nnav > .logo {\n display: inline-block;\n stroke: #f45a88;\n min-height: 40px;\n min-width: 40px;\n height: 40px;\n width: 40px;\n margin-right: 8px;\n transition: stroke 0.2s;\n}\nnav > h1 {\n font-weight: 500;\n font-size: 20px;\n user-select: none;\n}\nnav > h1 mark {\n font-size: 1rem;\n position: relative;\n top: -3px;\n}\nnav > span {\n flex-grow: 1;\n}\nnav #menu {\n display: none;\n cursor: pointer;\n}\n\n.link-menu > a {\n font-size: 14px;\n font-weight: 600;\n margin-left: 2rem;\n text-decoration: none;\n transition: color 0.1s;\n}\n.link-menu > a:hover {\n color: #f45a88;\n}\n\n@media (max-width: 800px) {\n .link-menu {\n transform: scale(0.8) translateX(1rem);\n opacity: 0;\n z-index: 100;\n width: 200px;\n position: absolute;\n top: 5rem;\n right: 2rem;\n background: #253038;\n padding: 1rem 0;\n border-radius: 5px;\n backdrop-filter: blur(4px);\n border: 1px solid rgba(22, 29, 43, 0.6901960784);\n transition: transform 0.2s, opacity 0.2s;\n }\n .link-menu.open {\n opacity: 1;\n transform: inherit;\n }\n .link-menu a {\n font-size: 20px;\n display: block;\n line-height: 3rem;\n }\n nav .logo {\n stroke: #f45a88;\n }\n nav #menu {\n display: block;\n min-height: 32px;\n min-width: 32px;\n height: 32px;\n width: 32px;\n cursor: pointer;\n transition: 0.5s;\n }\n nav #menu.active {\n transform: rotate(90deg);\n }\n}\n@media (max-width: 400px) {\n nav h1 {\n display: none;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]} \ No newline at end of file diff --git a/static/css/navbar.sass b/static/css/navbar.sass new file mode 100644 index 0000000..ba007d0 --- /dev/null +++ b/static/css/navbar.sass @@ -0,0 +1,95 @@ +@import '_vars' + +nav + display: flex + align-items: center + position: relative + + >.logo + display: inline-block + stroke: $primary-light + min-height: 40px + min-width: 40px + height: 40px + width: 40px + + margin-right: 8px + transition: stroke 0.2s + + >h1 + font-weight: 500 + font-size: 20px + user-select: none + + mark + font-size: 1rem + position: relative + top: -3px + + + >span + flex-grow: 1 + + + #menu + display: none + cursor: pointer + +.link-menu + >a + font-size: 14px + font-weight: 600 + margin-left: 2rem + text-decoration: none + transition: color 0.1s + + &:hover + color: $primary-light + +@media (max-width: 800px) + .link-menu + transform: scale(0.8) translateX(1rem) + opacity: 0 + + z-index: 100 + width: 200px + position: absolute + top: 5rem + right: 2rem + background: $secondary + padding: 1rem 0 + border-radius: $edge + backdrop-filter: blur(4px) + border: 1px solid $border + + transition: transform 0.2s, opacity 0.2s + + &.open + opacity: 1 + transform: inherit + + a + font-size: 20px + display: block + line-height: 3rem + + nav + .logo + stroke: $primary-light + + #menu + display: block + min-height: 32px + min-width: 32px + height: 32px + width: 32px + cursor: pointer + transition: 0.5s + + &.active + transform: rotate(90deg) + +@media (max-width: 400px) + nav + h1 + display: none \ No newline at end of file diff --git a/static/img/fav.ico b/static/img/fav.ico new file mode 100644 index 0000000000000000000000000000000000000000..242e8fd071cdfca8f8d00b1ab4d49a2a7e308224 GIT binary patch literal 16958 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 + +
+

Free Generative AI for everyone

+
+
+
+{% include 'parts/end.html' %}