From 6936e2f163f1add7d6afe56590faba39e37fb528 Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Fri, 22 Aug 2025 21:44:31 +0300 Subject: [PATCH] feat: css to scss --- .gitignore | 2 + app.py | 5 +- static/style.css | 465 --------------------------------------------- static/style.scss | 469 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 475 insertions(+), 466 deletions(-) delete mode 100644 static/style.css create mode 100644 static/style.scss diff --git a/.gitignore b/.gitignore index 8c9a2e9..753402d 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ docs/_build/ # Our's Dockerfile .env +./static/*.css +./static/*.css.map diff --git a/app.py b/app.py index b55caa1..6206459 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -from os import path, listdir +from os import path, listdir, system from datetime import date from configparser import ConfigParser @@ -18,6 +18,9 @@ from flask import ( app = Flask(__name__) +if app.debug: + system("sass static/style.scss static/style.css") + # ---------- LOCALES FUNCTIONS ----------------------------------------------- diff --git a/static/style.css b/static/style.css deleted file mode 100644 index b55f0fb..0000000 --- a/static/style.css +++ /dev/null @@ -1,465 +0,0 @@ -body { - margin: 0; - font-family: "Source Sans Pro", "Open Sans", sans-serif; - background: #e1e2e2 url(img/bg.png) repeat fixed 0 0; -} - -#menu { - background: rgba(22, 22, 23, .8); - color: #FFFFFF; - cursor: default; - line-height: 2em; - padding: 0.5em 0; - text-align: center; - text-shadow: 2px 2px 2px #00000063; - top: 0; - left: 0; - width: 100%; - z-index: 9000; -} - -#menu > * { - color: #fff; - cursor: pointer; - margin: 0 1em; - text-decoration: none; - transition: color 0.15s ease; -} - -#menu a:hover, -#menu a.a-sel { - color: #ffe36a; -} - -#menu img { - filter: drop-shadow(2px 2px 2px #00000020); -} - -#lang-butt { - background: transparent; - border: none; -} - -/* LANG-DROPDOWN */ - -#lang-dropdown { - position: fixed; - z-index: 9100; - display: none; - opacity: 0; - filter: alpha(opacity=0); -} - -#lang-dropdown::before { - content: ''; - display: block; - position: absolute; - border: 11px solid #333C; - border-left: 10px solid rgba(255, 255, 255, 0); - border-right: 10px solid rgba(255, 255, 255, 0); - border-top: 0px solid rgba(255, 255, 255, 0); - top: -10px; - left: 50%; - margin-left: -6px; -} - -#lang-dropdown > div { - display: block; - margin-left: 4px; - border-radius: 4px; - border: 1px solid #333; - box-shadow: 0 0 5px #000; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); - overflow: hidden; - background: #333; - background: #333E; - backdrop-filter: saturate(180%) blur(6px); -} - -#lang-dropdown > div a { - display: block; - padding: 0 3em 0 1em; - font-size: 90%; - line-height: 2.5; - border-top: 1px solid rgba(255, 255, 255, 0.06); - border-bottom: 1px solid rgba(0, 0, 0, 0.07); - text-decoration: none; - color: #fff !important; -} - -#lang-dropdown > div a:hover { - border-bottom: 1px solid #34312eff; - border-top: 1px solid #4c4c4cff; - background: #444; - background: linear-gradient(328deg, #c20d2c7d, #3928c78a); -} - -#lang-dropdown > div a.a-sel { - color: #888 !important; -} - -#lang-dropdown > div a.a-sel img { - color: #888 !important; - filter: brightness(0.5); -} - -#lang-dropdown > div a img { - display: inline-block; - vertical-align: middle; - margin-right: 10px; - margin-top: -3px; - width: 16px; - height: 11px; - filter: drop-shadow(1px 2px 2px #0003); -} - -#lang-dropdown>div a:first-child { - border-top: none; -} - -#lang-dropdown>div a:last-child { - border-bottom: none; -} - -/* ARTICLE */ - -#article { - background: rgba(254, 255, 255, 1); - border: 1px solid #c0b9c491; - border-radius: 4px; - box-shadow: rgb(28 26 40 / 12%) 0px 4px 4px -2px; - margin: 2em auto; - max-width: 910px; - padding: 2em; - text-align: justify; - color: #333; -} - -#banner { - box-sizing: border-box; - border-radius: 4px; - box-shadow: inset 0 0 0 1px #00000020; - transition: box-shadow 0.3s ease; - display: block; - margin: 0px 0px 1em; - padding: 1.25em; - text-decoration: none; -} - -#banner:hover { - box-shadow: inset 0 0 0 4px #609A21AA; -} - -#banner td { - text-align: center; - vertical-align: center; -} - -#banner img { - height: 7em; -} - -#banner h1 { - margin-top: 0em; - color: #609A21; - font-size: 2.5em; - margin: 0 0 16px; -} - -#banner p { - margin: 0em; -} - -#banner .p-link { - margin-top: 16px; - color: #609A21; - font-weight: bold; -} - -#banner a { - color: #609A21; -} - -h1 { - font-size: 125%; - padding: 0; - margin: 0 0 16px; -} - -a { - color: #1F1F1F; -} - -a:hover { - color: #000; -} - -p { - line-height: 1.5; -} - -.p-socials { - text-align: center; - margin-bottom: 0px; -} - -.p-socials a { - margin: 1em 1em; - text-decoration: none; -} - -.p-socials br { - margin: 0em 0em 1em; - display: none; -} - -.p-socials img { - height: 1em; - margin-right: 0.5em; - margin-bottom: -0.15em; -} - -.p-subscription -{ - text-align: center; -} - -/* DOWNLOADS */ - -table { - width: 100%; - border-spacing: 0; -} - -table a { - padding-bottom: 1px; - border-bottom: 1px solid; - text-decoration: none; - color: #0472D8 -} - -table a:hover -{ - color: #0053B9; -} - -tr { - vertical-align: middle; -} - -.tr-margin-bot>td{ - padding-bottom: 1em; -} - -.tr-margin-top>td{ - padding-top: 1em; -} - -td { - vertical-align: middle; -} - -td img { - vertical-align: middle; -} - -.td-image { - width: 3em; -} - -.td-description { - text-align: left; - width: 40%; -} - -.td-description .beta { - border: 1px solid grey; - color: grey; - font-size: 0.75em; - font-weight: bold; - border-radius: 0.25em; - padding: 0.25em; -} - -.td-date { - text-align: right; - padding-right: 2em; -} - -.td-languages { - text-align: right; -} - -.td-languages a + a { - display: inline; - margin-left: 1em; - margin-top: 0em; -} - -hr { - margin: 0; -} - -.help-button { - cursor: pointer; - display: inline-block; - background: #FF9800; - border-radius: 4px; - box-shadow: inset 0 1px rgba(254,181,94,0.9), inset 0 -2px rgba(0,0,0,0.04); - color: #FFFFFF; - padding: 0.5em 1em; - text-align: center; - transition: 0.5s; -} - -.help-button:hover { - background: #F6920B; -} - -acronym { - border-bottom: 1px dashed #ccc; - text-decoration: none; - cursor: help; -} - -/* SCREENS.CSS */ - -#show { - max-width: 1280px; - max-height: 800px; - width: 100%; - height: 100%; - cursor: pointer; - border: 1px solid #182028; - display: block; - position: relative; - border-radius: 4px; - overflow: hidden; -} - -#show img { - display: none; - max-width: 100%; -} - -#show img.visible { - display: block; -} - -iframe { - width: 100%; - border: none; - border-radius: 4px; - aspect-ratio: 16 / 9; -} - -#carousel { - text-align: center; - margin: 1.25em auto 1em; -} - -#dots { - text-align: center; - line-height: 1; -} - -.dot { - display: inline-block; - width: 0.625em; - height: 0.625em; - background: #ccc; - border-radius: 50%; - margin: 0 0.25em; - cursor: pointer; -} - -.dot.active { - background: #333; -} - -/* FOOTER */ - -#footer { - margin: 2em auto; - text-align: center; - color: #848585; - display: block; - text-align: center; - width: 100%; - color: rgb(132, 133, 133); - text-shadow: rgb(255, 255, 255) 1px 1px 0px; - font-size: 90%; -} - -#footer img -{ - margin-bottom: 0.5em; - height: 7em; -} - -#footer p -{ - margin: 0; - -} - -/* ADAPTIVE LAYOUT */ - -@media (max-width:864px) { - - #article { - margin: 0 0 1em; - padding: 1em 1em 1.5em; - border-radius: 0; - } - - #banner { - max-width: calc(100% - 2px); - margin: 1px 0 1em; - outline: 1px solid rgb(227 227 227);; - } - - #banner table td:first-child, - #banner table td:last-child { - display: none; - } - - #banner h1 { - font-size: 1.5em; - margin-bottom: 0; - } - - #banner p, #banner .p-link { - margin-top: 0.5em; - } - - .p-socials a { - display: block; - margin: 1em 0 0; - } - - #menu>* { - margin: 0 0.5em; - } - - .td-description { - width: auto; - } - - .td-date { - display: none; - padding-right: 1em; - padding-left: 1em; - } - - .td-languages a + a { - display: inline-block; - white-space: nowrap; - margin-top: 0.5em; - margin-left: 0em; - } - - #footer { - margin: 1em auto; - } -} \ No newline at end of file diff --git a/static/style.scss b/static/style.scss new file mode 100644 index 0000000..69de924 --- /dev/null +++ b/static/style.scss @@ -0,0 +1,469 @@ +body { + margin: 0; + font-family: "Source Sans Pro", "Open Sans", sans-serif; + background: #e1e2e2 url(img/bg.png) repeat fixed 0 0; +} + +#menu { + background: rgba(22, 22, 23, .8); + color: #FFFFFF; + cursor: default; + line-height: 2em; + padding: 0.5em 0; + text-align: center; + text-shadow: 2px 2px 2px #00000063; + top: 0; + left: 0; + width: 100%; + z-index: 9000; + + & > * { + color: #fff; + cursor: pointer; + margin: 0 1em; + text-decoration: none; + transition: color 0.15s ease; + } + + a:hover, + a.a-sel { + color: #ffe36a; + } + + img { + filter: drop-shadow(2px 2px 2px #00000020); + } +} + +#lang-butt { + background: transparent; + border: none; +} + +/* LANG-DROPDOWN */ + +#lang-dropdown { + position: fixed; + z-index: 9100; + display: none; + opacity: 0; + filter: alpha(opacity=0); + + &::before { + content: ''; + display: block; + position: absolute; + border: 11px solid #333C; + border-left: 10px solid rgba(255, 255, 255, 0); + border-right: 10px solid rgba(255, 255, 255, 0); + border-top: 0px solid rgba(255, 255, 255, 0); + top: -10px; + left: 50%; + margin-left: -6px; + } + + & > div { + display: block; + margin-left: 4px; + border-radius: 4px; + border: 1px solid #333; + box-shadow: 0 0 5px #000; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.4); + overflow: hidden; + background: #333; + background: #333E; + backdrop-filter: saturate(180%) blur(6px); + + a { + display: block; + padding: 0 3em 0 1em; + font-size: 90%; + line-height: 2.5; + border-top: 1px solid rgba(255, 255, 255, 0.06); + border-bottom: 1px solid rgba(0, 0, 0, 0.07); + text-decoration: none; + color: #fff !important; + + &:hover { + border-bottom: 1px solid #34312eff; + border-top: 1px solid #4c4c4cff; + background: #444; + background: linear-gradient(328deg, #c20d2c7d, #3928c78a); + } + + &.a-sel { + color: #888 !important; + + img { + color: #888 !important; + filter: brightness(0.5); + } + } + + img { + display: inline-block; + vertical-align: middle; + margin-right: 10px; + margin-top: -3px; + width: 16px; + height: 11px; + filter: drop-shadow(1px 2px 2px #0003); + } + + &:first-child { + border-top: none; + } + + &:last-child { + border-bottom: none; + } + } + } +} + +/* ARTICLE */ + +#article { + background: rgba(254, 255, 255, 1); + border: 1px solid #c0b9c491; + border-radius: 4px; + box-shadow: rgb(28 26 40 / 12%) 0px 4px 4px -2px; + margin: 2em auto; + max-width: 910px; + padding: 2em; + text-align: justify; + color: #333; +} + +#banner { + box-sizing: border-box; + border-radius: 4px; + box-shadow: inset 0 0 0 1px #00000020; + transition: box-shadow 0.3s ease; + display: block; + margin: 0px 0px 1em; + padding: 1.25em; + text-decoration: none; + + &:hover { + box-shadow: inset 0 0 0 4px #609A21AA; + } + + td { + text-align: center; + vertical-align: center; + } + + img { + height: 7em; + } + + h1 { + margin-top: 0em; + color: #609A21; + font-size: 2.5em; + margin: 0 0 16px; + } + + p { + margin: 0em; + } + + .p-link { + margin-top: 16px; + color: #609A21; + font-weight: bold; + } + + a { + color: #609A21; + } +} + +h1 { + font-size: 125%; + padding: 0; + margin: 0 0 16px; +} + +a { + color: #1F1F1F; + + a:hover { + color: #000; + } +} + +p { + line-height: 1.5; +} + +.p { + &-socials { + text-align: center; + margin-bottom: 0px; + + a { + margin: 1em 1em; + text-decoration: none; + } + + br { + margin: 0em 0em 1em; + display: none; + } + + img { + height: 1em; + margin-right: 0.5em; + margin-bottom: -0.15em; + } + } + + &-subscription { + text-align: center; + } +} + +/* DOWNLOADS */ + +table { + width: 100%; + border-spacing: 0; + + a { + padding-bottom: 1px; + border-bottom: 1px solid; + text-decoration: none; + color: #0472D8; + + &:hover { + color: #0053B9; + } + } +} + +tr { + vertical-align: middle; +} + +.tr-margin { + &-bot > td { + padding-bottom: 1em; + } + + &-top > td { + padding-top: 1em; + } +} + +td { + vertical-align: middle; + + img { + vertical-align: middle; + } +} + +.td { + &-image { + width: 3em; + } + + &-description { + text-align: left; + width: 40%; + + .beta { + border: 1px solid grey; + color: grey; + font-size: 0.75em; + font-weight: bold; + border-radius: 0.25em; + padding: 0.25em; + } + } + + &-date { + text-align: right; + padding-right: 2em; + } + + &-languages { + text-align: right; + + a + a { + display: inline; + margin-left: 1em; + margin-top: 0em; + } + } +} + +hr { + margin: 0; +} + +.help-button { + cursor: pointer; + display: inline-block; + background: #FF9800; + border-radius: 4px; + box-shadow: inset 0 1px rgba(254,181,94,0.9), inset 0 -2px rgba(0,0,0,0.04); + color: #FFFFFF; + padding: 0.5em 1em; + text-align: center; + transition: 0.5s; + + &:hover { + background: #F6920B; + } +} + +acronym { + border-bottom: 1px dashed #ccc; + text-decoration: none; + cursor: help; +} + +/* SCREENS.CSS */ + +#show { + max-width: 1280px; + max-height: 800px; + width: 100%; + height: 100%; + cursor: pointer; + border: 1px solid #182028; + display: block; + position: relative; + border-radius: 4px; + overflow: hidden; + + img { + display: none; + max-width: 100%; + + &.visible { + display: block; + } + } +} + +iframe { + width: 100%; + border: none; + border-radius: 4px; + aspect-ratio: 16 / 9; +} + +#carousel { + text-align: center; + margin: 1.25em auto 1em; +} + +#dots { + text-align: center; + line-height: 1; +} + +.dot { + display: inline-block; + width: 0.625em; + height: 0.625em; + background: #ccc; + border-radius: 50%; + margin: 0 0.25em; + cursor: pointer; + + .active { + background: #333; + } +} + +/* FOOTER */ + +#footer { + margin: 2em auto; + text-align: center; + color: #848585; + display: block; + text-align: center; + width: 100%; + color: rgb(132, 133, 133); + text-shadow: rgb(255, 255, 255) 1px 1px 0px; + font-size: 90%; + + img { + margin-bottom: 0.5em; + height: 7em; + } + + p { + margin: 0; + } +} + +/* ADAPTIVE LAYOUT */ + +@media (max-width:864px) { + #article { + margin: 0 0 1em; + padding: 1em 1em 1.5em; + border-radius: 0; + } + + #banner { + max-width: calc(100% - 2px); + margin: 1px 0 1em; + outline: 1px solid rgb(227 227 227);; + + table td { + &:first-child, + &:last-child { + display: none; + } + } + + h1 { + font-size: 1.5em; + margin-bottom: 0; + } + + p, .p-link { + margin-top: 0.5em; + } + } + + .p-socials a { + display: block; + margin: 1em 0 0; + } + + #menu > * { + margin: 0 0.5em; + } + + .td { + &-description { + width: auto; + } + + &-date { + display: none; + padding-right: 1em; + padding-left: 1em; + } + + &-languages a + a { + display: inline-block; + white-space: nowrap; + margin-top: 0.5em; + margin-left: 0em; + } + } + + #footer { + margin: 1em auto; + } +} \ No newline at end of file