From f31752797e8789533767dfca2ba5d769188c4485 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lera=20Elvo=C3=A9?= Date: Sun, 12 Apr 2026 21:05:12 +0300 Subject: [PATCH] import css from redesign project --- data/static/css/normalize.css | 223 +++++++++++ data/static/css/style.css | 692 ++++++++++++++++++++++++++++++++++ 2 files changed, 915 insertions(+) create mode 100644 data/static/css/normalize.css create mode 100644 data/static/css/style.css diff --git a/data/static/css/normalize.css b/data/static/css/normalize.css new file mode 100644 index 0000000..4d00a0a --- /dev/null +++ b/data/static/css/normalize.css @@ -0,0 +1,223 @@ +/*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize */ + +/* + * Document + * ======== + */ + +/** + * Use a better box model (opinionated). + */ + +*, +::before, +::after { + box-sizing: border-box; +} + +/** + * 1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) + * 2. Correct the line height in all browsers. + * 3. Prevent adjustments of font size after orientation changes in iOS. + * 4. Use a more readable tab size (opinionated). + */ + +html { + font-family: + system-ui, + 'Segoe UI', + Roboto, + Helvetica, + Arial, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji'; /* 1 */ + line-height: 1.15; /* 2 */ + -webkit-text-size-adjust: 100%; /* 3 */ + tab-size: 4; /* 4 */ +} + +/* + * Sections + * ======== + */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/* + * Text-level semantics + * ==================== + */ + +/** + * Add the correct font weight in Chrome and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) + * 2. Correct the odd 'em' font sizing in all browsers. + */ + +code, +kbd, +samp, +pre { + font-family: + ui-monospace, + SFMono-Regular, + Consolas, + 'Liberation Mono', + Menlo, + monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent 'sub' and 'sup' elements from affecting the line height in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* + * Tabular data + * ============ + */ + +/** + * Correct table border color inheritance in Chrome and Safari. (https://issues.chromium.org/issues/40615503, https://bugs.webkit.org/show_bug.cgi?id=195016) + */ + +table { + border-color: currentcolor; +} + +/* + * Forms + * ===== + */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: normal; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; +} + +/** + * Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers. + */ + +legend { + padding: 0; +} + +/** + * Add the correct vertical alignment in Chrome and Firefox. + */ + +progress { + vertical-align: baseline; +} + +/** + * Correct the cursor style of increment and decrement buttons in Safari. + */ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to 'inherit' in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* + * Interactive + * =========== + */ + +/* + * Add the correct display in Chrome and Safari. + */ + +summary { + display: list-item; +} diff --git a/data/static/css/style.css b/data/static/css/style.css new file mode 100644 index 0000000..9b28d21 --- /dev/null +++ b/data/static/css/style.css @@ -0,0 +1,692 @@ +@import url("/static/css/normalize.css"); + +@font-face { + font-family: "Cadman"; + src: url("/static/fonts/Cadman_Roman.woff2"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Cadman"; + src: url("/static/fonts/Cadman_Bold.woff2");; + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: "Cadman"; + src: url("/static/fonts/Cadman_Italic.woff2"); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: "Cadman"; + src: url("/static/fonts/Cadman_BoldItalic.woff2"); + font-weight: bold; + font-style: italic; +} + +@font-face { + font-family: "Atkinson Hyperlegible Mono"; + src: url("/static/fonts/AtkinsonHyperlegibleMono-VariableFont_wght.ttf"); + font-weight: 125 950; + font-style: normal; +} + +@font-face { + font-family: "Atkinson Hyperlegible Mono"; + src: url("/static/fonts/AtkinsonHyperlegibleMono-Italic-VariableFont_wght.ttf"); + font-weight: 125 950; + font-style: italic; +} + +@font-face { + font-family: "site-title"; + src: url("/static/fonts/ChicagoFLF.woff2"); +} + +:root { + --base-padding: 6px; + --border-radius: 3px; + --border-thickness: 1px; + --wrapper-side-margin: 36px; + + /* colors */ + --bg-color-primary: #c1ceb1; + --bg-color-secondary: #aeb8a1; + --bg-color-tertiary: #797976; + --bg-color-contrast: #bfb1ce; + + --font-color-main: black; + --font-color-anti: white; + --font-color-link: #c11c1c; + --font-color-link-visited: hsl(from var(--font-color-link) h calc(s * 0.5) calc(l * 0.7)); + + --critical-color: #f73030; + --warn-color: #dfdf61; + --infobox-color: #97b3ec; + + --button-color-primary: #b1cecd; +} + +body { + --small-padding: calc(var(--base-padding) / 2); + --medium-padding: calc(var(--base-padding) * 2); + --big-padding: calc(var(--base-padding) * 3); + --huge-padding: calc(var(--base-padding) * 4); + --input-height: calc(var(--base-padding) * 6); + + --code-bg-color: hsl(from var(--bg-color-primary) h calc(s * 0.2) calc(l * 0.2)); + + background-color: var(--bg-color-tertiary); + font-family: Cadman; + color: var(--font-color-main); +} + +#wrapper { + margin: var(--big-padding) var(--wrapper-side-margin); +} + +button, .linkbutton, input[type="submit"] { + --main-color: var(--button-color-primary); + --font-color: var(--font-color-main); + --border-color: hsl(from var(--main-color) h calc(s * 1.3) 25); + --hover-color: hsl(from var(--main-color) h s calc(l * 1.05)); + --active-color: hsl(from var(--main-color) h s calc(l * 0.8)); + --disabled-color: hsl(from var(--main-color) h calc(s * 0.5) l); + --bottom-color: hsl(from var(--main-color) h s calc(l * 0.7)); + --top-color: hsl(from var(--main-color) h s calc(l * 1.2)); + --top-color2: hsl(from var(--main-color) h s calc(l * 1.1)); + --inset-color: #fff7; +/* position: relative; */ +/* display: inline-block; */ + padding: var(--small-padding) var(--big-padding); + margin: var(--base-padding) 0px; + border-radius: var(--border-radius); + border: solid var(--border-thickness) var(--border-color); + background: linear-gradient(var(--top-color) 0%, var(--top-color2) 25%, var(--main-color) 26%, var(--main-color) 50%, var(--bottom-color) 100%); + box-shadow: inset 0px 2px 5px 3px var(--inset-color); + color: var(--font-color); + text-decoration: none; + cursor: default; + + line-height: normal; + display: inline flex; + align-items: center; + justify-content: center; + + &.minimal { + margin: 0; + padding: 0; + } + + &.critical { + --main-color: var(--critical-color); + --font-color: var(--font-color-anti); + } + + &.warn { + --main-color: var(--warn-color); + } + + &.rss { + --main-color: #fba668; + } + + &.alt { + --main-color: var(--bg-color-contrast); + } + + &:hover { + background: linear-gradient(var(--top-color) 0%, var(--top-color2) 25%, var(--hover-color) 26%, var(--hover-color) 80%, var(--bottom-color) 100%); + } + + &:is(:active, .active) { + background: linear-gradient(var(--active-color) 0%, var(--active-color) 50%, var(--main-color) 100%); + } + + &:disabled { + background: var(--disabled-color); + --inset-color: #fff3; + } +} + +.tab-button { + border-bottom: none; + margin-bottom: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + &.active { + padding-top: calc(var(--base-padding) * 1.5); + } +} + +.tab-bar { + display: flex; + gap: var(--base-padding); + + &> * { + margin-top: auto; + position: relative; + bottom: -2px; + } +} + +.tab-content { + + + &.hidden { + display: none; + } +} + + +.babycode-editor { + width: 100%; + height: 150px; + resize: vertical; +} + +.post-edit-form { + display: flex; + flex-direction: column; +} + +input[type="text"], input[type="password"], textarea, select { + --main-color: hsl(from var(--bg-color-primary) h s calc(l + 10)); + --active-color: hsl(from var(--main-color) h s calc(l + 5)); + --border-color: hsl(from var(--main-color) h calc(s * 1.3) 25); + background-color: var(--main-color); + border-radius: var(--border-radius); + border: solid var(--border-thickness) var(--border-color); + + padding: var(--small-padding) var(--medium-padding); + margin: var(--base-padding) 0px; + + &:focus { + background-color: var(--active-color); + } +} + +h1 { + margin: 0; +} + +:where(a:link) { + color: var(--font-color-link); +} +:where(a:visited) { + color: var(--font-color-link-visited); +} + +a.site-title { + font-family: site-title; + font-size: 3em; + text-decoration: none; + color: var(--font-color-main); +} + +#header { + background-color: var(--bg-color-primary); + display: flex; + justify-content: space-between; + align-items: baseline; + flex-wrap: wrap; + + &>.site-title { + flex-basis: 100%; + } + + &>ul { + margin-top: var(--base-padding); + margin-bottom: var(--base-padding); + } +} + +.plank { + --main-color: var(--bg-color-primary); + --lighter-color: hsl(from var(--main-color) h s calc(l*1.1)); + --darker-color: hsl(from var(--main-color) h s calc(l*0.9)); + --border-color: hsl(from var(--main-color) h s 90); + --rotation: 180deg; + padding: var(--medium-padding) var(--huge-padding); + + background: linear-gradient(var(--rotation), var(--lighter-color) 0%, var(--main-color) 30%, var(--main-color) 70%, var(--darker-color) 100%); + background-color: var(--main-color); + + border: 2px groove var(--border-color); + + &:not(.no-shadow) { + box-shadow: 0px 6px 3px 0px #0004; + } + + &.minimal { + padding: var(--small-padding) var(--big-padding); + } + + &:not(.even){ + margin-bottom: var(--small-padding); + } + + &.top { + border-top-left-radius: var(--border-radius); + border-top-right-radius: var(--border-radius); + + &:not(.even){ + margin-bottom: var(--medium-padding); + } + } + + &.bottom { + border-bottom-left-radius: var(--border-radius); + border-bottom-right-radius: var(--border-radius); + + &:not(.even){ + margin-top: var(--medium-padding); + } + } +} + +.info { + margin: 0; + font-size: 1.5em; + font-weight: bold; +} + +form.horizontal { + display: flex; + gap: var(--base-padding); + align-items: center; + + &.wrap { + flex-wrap: wrap; + } + + &> fieldset { + display: flex; + gap: var(--base-padding); + align-items: center; + } +} + +fieldset { + border-radius: var(--border-radius); + margin: 0; +} + +ul.horizontal, ol.horizontal { + display: inline flex; + align-items: center; + margin: 0; + padding: 0; + gap: var(--base-padding); + + & li { + list-style-type: none; + } + + &.wrap { + flex-wrap: wrap; + } + + &.bullet li::before { + content: '\2022'; + } + + & li > button, li > .linkbutton { + margin: 0; + } +} + +.primary-bg { + --main-color: var(--bg-color-primary); + background-color: var(--bg-color-primary); +} + +.secondary-bg { + --main-color: var(--bg-color-secondary); + --rotation: 0deg; +} + +.tertiary-bg { + --main-color: var(--bg-color-tertiary); + --rotation: 0deg; +} + +.contrast-bg { + --main-color: var(--bg-color-contrast); +} + +.motd { + display: flex; + gap: var(--base-padding); +} + +.contain-svg { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + + &.horizontal { + flex-direction: row; + gap: var(--base-padding); + } +} + +.infobox { + --main-color: var(--infobox-color); + justify-content: start; + + &.critical { + --main-color: hsl(from var(--critical-color) h 50% calc(l * 0.7)); + color: var(--font-color-anti); + } + + &.warn { + --main-color: hsl(from var(--warn-color) h 50% calc(l * 1.2)); + } +} + +.pager { + display: flex; + gap: var(--base-padding); + align-items: center; +} + +.button-row { + display: flex; + gap: var(--base-padding); + align-items: center; + justify-items: center; + flex-wrap: wrap; + + &> * { + aspect-ratio: 1; + min-height: 32px; + width: auto; + flex: 0 0 auto; + } +} + +.title-container { + display: flex; + gap: var(--base-padding); + justify-content: start; + align-items: end; + flex-wrap: wrap; +} + +.motd-content { + display: flex; + flex-direction: column; + width: 75% +} + +footer { + display: flex; + justify-content: space-between; + align-items: center; +} + +.topic-info { + display: flex; + flex-direction: column; + gap: var(--base-padding); +} + +.settings-grid { + display: grid; + gap: var(--base-padding); + --grid-item-base-width: 600px; + --grid-item-max-width: calc((100% - var(--grid-item-base-width)) / 2); + grid-template-columns: repeat(auto-fill, minmax(max(var(--grid-item-base-width), var(--grid-item-max-width)), 1fr)); + + &> * { + height: fit-content; + width: 100%; + } +} + +.thread-actions { + display: flex; + flex-wrap: wrap; + gap: var(--base-padding); + width: fit-content; +} + +.actions-group { + display: flex; + flex-wrap: wrap; +} + +.flex-last { + margin-left: auto; +} + +.flex-grow { + flex-grow: 1; +} + +.post { + padding: var(--base-padding); + + display: grid; + grid-template-columns: min(230px, 20vw) 1fr; +} + +.userpage-usercard { + display: grid; + grid-template-columns: min(300px, 30vw) 1fr; +} + +.usercard-inner { + display: flex; + flex-direction: column; + align-items: center; + top: var(--big-padding); + position: sticky; + gap: var(--base-padding); +} + +.avatar { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} + +.post-content { + display: grid; + grid-template-rows: min-content 1fr min-content; + &> * { + min-width: 0; + } +} + +.badge-button { + min-width: 88px; + min-height: 31px; + max-width: 88px; + max-height: 31px; +} + +.badges-container { + display: flex; + flex-wrap: wrap; + gap: var(--small-padding); + justify-content: center; + align-items: center; + + &.nocenter { + justify-content: start; + } +} + +.usercard-rest { + display: flex; + flex-direction: column; + align-items: center; + gap: inherit; +} + +.post-info { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; +} + +.user-stats { + display: flex; + flex-direction: column; + gap: var(--base-padding); +} + +#new-post-toast { + position: fixed; + bottom: 80px; + right: 80px; + display: flex; + flex-direction: column; + gap: var(--big-padding); + + &.hidden { + display: none; + } +} + +.notification-buttons { + display: flex; + flex-wrap: wrap; + gap: var(--base-padding); + justify-content: center; +} + +.babycode-editor-controls { + display: flex; + gap: var(--base-padding); + align-items: center; + flex-wrap: wrap; +} + +/* babycode tags */ +.inline-code { + background-color: var(--code-bg-color); + color: var(--font-color-anti); + padding: var(--base-padding); + border-radius: var(--border-radius); +} + +.babycode-big { + font-size: 2em; +} + +.babycode-small { + font-size: 0.75em; +} + +.babycode-center { + text-align: center; +} + +.babycode-right { + text-align: right; +} + +.post-image { + max-height: 400px; + max-width: 400px; + width: auto; + height: auto; + object-fit: contain; +} + +.code-block-container { + display: flex; + flex-direction: column; + min-width: 0; + + &> button { + align-self: start; + } +} + +code, kbd { + font-family: "Atkinson Hyperlegible Mono"; +} + +pre { + font-family: unset; + margin: 0; + margin-bottom: var(--base-padding); +} + +pre code { + display: block; + background-color: var(--code-bg-color); + color: var(--font-color-anti); + padding: var(--base-padding); + overflow: scroll; +} + +summary { + cursor: pointer; +} + +.emoji { + max-width: 15px; + max-height: 15px; +} + +@media (max-width: 768px) { + #wrapper { + margin-left: 0; + margin-right: 0; + } + + .settings-grid { + --grid-item-base-width: 400px; + } + + .mobile-fill-flex { + width: 100%; + } + + .post, .userpage-usercard { + grid-template-columns: unset; + grid-template-rows: min-content 1fr; + } + + .avatar { + max-width: 40%; + max-height: 40%; + } + + .usercard-inner { + flex-direction: row; + } + + .thread-title-counter { + display: flex; + flex-wrap: wrap; + gap: var(--base-padding); + } + + .title-container { + justify-content: space-between; + } + + #new-post-toast { + right: 0; + left: 0; + bottom: 0; + } + + .post-image { + max-width: min(75vw, 400px); + max-height: 50vh; + } +}