/* Hello welcome to my styles. Here are some notes. * * - I use Noto Sans because it supports most languages. * - I will implement light mode first and then attempt dark. * - All variables should be declared at the top. * - Use as little as possible, write from scratch, and utilize helper * classes. * - No transpilers! */ @import url('https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;800&display=swap'); :root { --clrBg: #fff; --clrPanel: #f9f9f9; --clrBorder: #f2f2f2; --clrBtn: #202020; --clrText: #202020; --clrTextLight: #868686; --clrTextLighter: #abb4ca; --clrHeart: #ff5050; --clrWarn: #fbc560; --navPadding: 5px; --fsSmall: 12px; --fsNormal: 16px; --fsReduced: 14px; --fsEnlarged: 18px; --ffDefault: "Noto Sans", sans-serif; } *:focus-visible { /* Technically this is bad and something else should be done to indicate * that something is in focus. */ outline: none; } body { background: var(--clrBg); color: var(--clrText); font-family: "Noto Sans", sans-serif; font-size: var(--fsNormal); margin: 0; padding: 0; width: 100%; height: 100%; } /* Utilities */ .flex-fill { flex: 1; } .hide { display: none; } .loader { font-size: 24px; } button.action:disabled { cursor: default; background-color: var(--clrTextLight); } button { background: #171717; cursor: pointer; } button.icon { border: none; background: transparent; padding: 0; margin: 0; } button.action { border: none; border-radius: 50px; background: #171717; padding: 10px 15px; font-size: 16px; color: white; font-weight: 800; } .float-right { float: right; } /* Application Framework */ button.nav { color: var(--clrBtn); font-size: 24px; padding: calc(var(--navPadding) * 4) calc(var(--navPadding) * 5); } #app-icon-logo { font-size: 28px; text-align: center; padding: calc(var(--navPadding) * 4); } #app-icon-logo > img { border-radius: 50%; width: 42px; height: 42px; } #container { display: flex; /* flex-direction: row; width: 100vw; height: 100vh; overflow: hidden;*/ } #nav { flex-shrink: 1; border-right: 1px solid var(--clrBorder); } #content { display: flex; flex-direction: column; border-right: 1px solid var(--clrBorder); } #content header > label { padding: 22px 15px; font-size: 22px; font-weight: 800; display: block; } #view { max-width: 750px; overflow-y: scroll; flex: 1; } /* Events & Content */ .event { display: flex; flex-direction: row; padding: 15px; transition: background-color 0.2s linear; } .event:hover { background-color: var(--clrPanel); } .loading-events { text-align: center; padding: 15px; } .userpic { flex-shrink: 1; } .pfp { border-radius: 50%; width: 64px; height: 64px; object-fit: fill; font-size: 3.25em; } .event-content { flex: 1; padding-left: 15px; } .event-content > .info { display: inline-block; } .username { font-weight: 800; font-size: var(--fsReduced); } .chatroom-name { font-weight: bold; } .timestamp, .replying-to, .boosted-by { font-size: var(--fsSmall); color: var(--clrTextLight); } .comment { word-break: break-word; } .inline-img { width: 100%; } .action-bar { } .action-bar > button { margin-right: 25px; color: var(--clrTextLighter); font-size: var(--fsNormal); } .reactions { padding-bottom: 15px; } .reaction-group { display: inline-flex; align-items: center; border: 2px solid var(--clrBorder); padding: 4px; border-radius: 5px; } .reaction-group img { width: 18px; height: 18px; object-fit: cover; border-radius: 50%; margin-left: -8px; vertical-align: top; } .reaction-group img:first-of-type { margin-left: 0px; } .reaction-emoji { margin-right: 4px; } .action-bar button.icon { transition: color 0.3s linear; } .action-bar button.icon:hover { color: var(--clrText); } .action-bar button.heart:hover { color: var(--clrHeart); } details.cw summary { background: #f2f2f2; padding: 10px; border-radius: 12px; color: #444; cursor: pointer; margin-bottom: 10px; outline: none; } /* Thread Expansion */ .thread-collapsed { padding: 15px; } .thread-summary { background: #f2f2f2; padding: 10px; border-radius: 12px; color: #444; cursor: pointer; } /* Modal */ .modal { position: fixed; z-index: 1; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.4); opacity: 1; transition: opacity 0.2s linear; } .modal.closed { opacity: 0; pointer-events: none; } .modal-content { padding: 20px; overflow: auto; border-radius: 15px; background: var(--clrPanel); max-width: 700px; margin: 0 auto; margin-top: 35px; } .modal header { display: flex; } .modal header label { font-weight: 800; font-size: var(--fsEnlarged); flex: 1; } .modal header button { font-size: 24px; } /* Post & Reply */ #newpost { padding: 0px 15px 15px; display: flex; flex-direction: row; border-bottom: solid 1px var(--clrBorder); } #newpost > :first-child { width: 64px; } #newpost > :last-child { padding-left: 15px; flex: 1; } textarea.post-input { display: block; width: 100%; border: none; background: transparent; color: var(--clrText); font-size: var(--fsEnlarged); font-family: var(--ffDefault); margin: 10px 0; padding: 0; box-sizing: border-box; resize: vertical; } .post-tools { text-align: right; } .post-tools > button.icon { margin-right: 10px; font-size: var(--fsEnlarged); color: var(--clrTextLight); } .post-tools > button.icon.cw.active { color: var(--clrWarn); } input[type="text"].cw { border: none; border-bottom: solid 2px var(--clrWarn); font-size: var(--fsReduced); } .clickable { cursor: pointer; } .bottom-border { border-bottom: solid 1px var(--clrBorder); } .deleted-comment { border: 2px dashed var(--clrBorder); border-radius: 10px; padding: 10px; } @media (max-width: 800px){ :root { --navPadding: 2px; } .pfp { width: 44px; height: 44px; font-size: 2.2em; } #newpost > :first-child { width: 0; } }