1
0
mirror of https://github.com/GenderDysphoria/GenderDysphoria.fyi.git synced 2025-11-25 20:42:40 +00:00

Initial site commit

This commit is contained in:
Jocelyn Badgley (Twipped)
2020-02-20 14:38:25 -08:00
parent 0a6bdb2544
commit 1c45fdaf33
136 changed files with 24538 additions and 146 deletions

168
scss/_card.scss Normal file
View File

@@ -0,0 +1,168 @@
.card {
text-decoration: none;
background: white;
&.borderless {
border: none;
}
.card-img-top + .card-img-top {
border-top: 1px solid $card-border-color;
border-radius: 0
}
.card-body {
padding: 1em;
line-height: 1.3;
color: #333;
font-size: 12px;
font-family: $font-secondary;
ul { padding-left: 1.2em; }
}
.card-body.caption {
font-size: 10px;
text-align: center;
}
.list-group-item {
font-size: 12px;
padding: 0.5rem 1.25rem;
text-decoration: none;
&.active + .active {
border-bottom: 1px solid lighten($list-group-active-bg, 15%);
background-color: lighten($list-group-active-bg, 10%);
}
}
@include media-breakpoint-up(md) {
&.left {
float: left;
margin-right: 10px;
}
&.right {
float: right;
margin-left: 10px;
}
&.center {
margin-left: auto;
margin-right: auto;
margin-bottom: 1em;
}
&.natural {
.card-img-top {
width: unset;
max-height: 50vh;
margin: 0 auto;
}
}
&.span2, &.span3, &.span4, &.span5, &.span6, &.span34 {
&.left { clear: left; }
&.right { clear: right; }
&:first-child {
margin-top: 0.5em;
}
}
&.hero { width: 35%; }
&.span1 { width: 100%; }
&.span2 { width: 50%; }
&.span3 { width: 33%; }
&.span4 { width: 25%; }
&.span5 { width: 20%; }
&.span6 { width: 15%; }
&.span34 { width: 75%; }
}
@include media-breakpoint-down(sm) {
margin-top: 0 !important;
margin-bottom: 5px;
&.hero {
margin: 0 -15px 10px -15px;
border-left: none;
border-right: none;
border-radius: 0;
img { border-radius: 0; }
}
}
&.ig-card {
background: white;
padding:12px;
font-size:14px;
line-height:17px;
color: rgb(38, 38, 38);
font-family: Roboto, Helvetica, Arial,sans-serif;
text-decoration:none;
.ig-header {
display: flex;
flex-direction: row;
align-items: center;
.ig-avatar {
background-color: #F4F4F4;
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
border-radius: 50%;
flex-grow: 0;
height: 40px;
width: 40px;
margin: 0 10px 0 0;
}
.ig-name {
display: flex;
flex-direction: column;
flex-grow: 1;
justify-content: center;
align-items: flex-start;
font-weight: 400;
line-height: 1.2;
strong {
font-weight: 600;
}
}
}
.ig-image {
margin: 10px 0;
border-radius: 5px;
}
.ig-caption {
line-height: 18px;
font-size: 14px;
font-weight: 400;
word-wrap:break-word;
margin: 0;
}
.ig-footer {
color:#c9c8cd;
font-size: 10px;
line-height: 1;
overflow:hidden;
padding:6px 0 0 0;
margin: 0;
text-overflow:ellipsis;
text-transform: uppercase;
}
}
}

55
scss/_footer.scss Normal file
View File

@@ -0,0 +1,55 @@
footer, .footer {
font-size: 10px;
text-align: center;
margin-top: 10px;
margin-bottom: 20px;
padding: 0 20px;
p {
margin: 0 auto;
}
&, a { color: #ccc; }
a { text-decoration: underline; }
.cc-by-nc-sa {
line-height: 1;
display: inline-block;
vertical-align: bottom;
.svg-icon {
margin: 0 5px;
}
}
}
.patreon-support {
font-size: 12px;
strong {
margin-bottom: 5px;
display: block;
}
a {
color: #aaa;
}
ul {
padding: 0;
li {
display: inline;
}
li::after {
content: ", ";
}
li:last-child::after {
content: "";
}
}
}

26
scss/_global.scss Normal file
View File

@@ -0,0 +1,26 @@
body {
font-family: $font-primary;
}
span.svg-icon {
$size: 1.5em;
display: inline-block;
position: relative;
height: $size;
width: $size;
line-height: 1;
svg {
width: 100%;
height: 100%;
fill: currentColor;
}
}
img.svg-icon {
height: 1.5em;
display: inline-block;
position: relative;
line-height: 1;
}

30
scss/_grid-row.scss Normal file
View File

@@ -0,0 +1,30 @@
.grid-row {
clear: both;
display: grid;
grid-template-rows: 1fr;
grid-gap: 10px;
grid-template-columns: repeat( auto-fit, minmax( 250px, 1fr ) );
margin-bottom: 1rem;
@include media-breakpoint-up(md) {
.double { grid-column-end: span 2; }
}
&.by-two {
grid-template-columns: repeat( auto-fit, minmax( 420px, 1fr ) );
}
&.by-three {
grid-template-columns: repeat( auto-fit, minmax( 325px, 1fr ) );
}
&.by-three-forced {
@include media-breakpoint-up(md) {
grid-template-columns: repeat( auto-fit, minmax( 30%, 1fr ) );
}
}
}

185
scss/_header.scss Normal file
View File

@@ -0,0 +1,185 @@
@mixin header--active {
min-height: 0;
color: #555;
background: #fff;
box-shadow: 1px 2px 10px rgba(0, 0, 0, 0.3);
a {
&:hover, &:focus {
text-decoration: none;
}
}
}
body.inner-page header {
@include header--active;
}
header {
color: white;
padding: 0 3rem;
position: fixed;
top: -1px;
left: -1px;
right: -1px;
z-index: 100;
@media (max-width: 500px) {
padding: 0.5rem 1rem 0;
position: static;
}
transition-property: min-height, background, box-shadow;
transition-duration: 0.4s;
background: none;
// width: 100%;
min-height: 100px;
display: flex;
align-items: center;
justify-content: center;
a {
color: inherit;
// transition: none;
&:hover, &:focus {
color: inherit;
text-decoration: none;
}
}
.top-brand {
text-align: center;
color: inherit;
font-family: $font-brand;
font-size: 2em;
white-space: nowrap;
@media (max-width: 500px) {
font-size: 1.8em;
}
}
@media (min-width: 500px) {
&.active {
@include header--active;
}
}
nav {
flex: 1;
max-width: 1200px;
display: flex;
justify-content: space-between;
align-items: center;
@media (max-width: 500px) {
flex-direction: column;
// align-items: stretch; // uncomment after menu items are added back
}
@media (max-width: 500px) {
font-size: 0.8rem;
}
}
.top-nav-inner {
display: flex;
justify-content: space-between;
align-items: center;
list-style: none;
margin: 0 0 0 1em;
padding: 0;
.top-nav-item {
transition-property: color, padding, margin;
transition-duration: 0.3s;
transition-timing-function: ease;
display: block;
padding: 0.5rem 1rem;
text-align: center;
border-top: 5px solid transparent;
border-bottom: 5px solid transparent;
white-space: nowrap;
&:hover {
border-bottom: 5px solid $primary;
}
}
.break {
flex-basis: 100%;
display: none;
}
@media (max-width: 1000px) {
.top-nav-item {
padding: 0.5rem 0.5rem;
}
}
@media (max-width: 800px) {
.top-nav-item {
border-top: none;
}
}
@media (max-width: 400px) {
flex-wrap: wrap;
justify-content: center;
.break { display: block; }
.top-nav-item {
padding: 0.25rem 0.5rem;
}
}
}
}
.disclaimer {
$cwColor: darken($gray-100, 2%);
border-bottom: 1px solid $gutter-border;
@media (min-width: 500px) {
margin-top: $header-full-height;
}
> div {
margin: 0 auto;
max-width: 1200px;
padding: 10px 1em;
@media (max-width: 500px) {
padding: 10px 1em;
}
}
background-color: $cwColor;
font-size: 0.8rem;
font-weight: 300;
.strong {
display: block;
font-weight: 600;
margin: 5px -10px;
padding: 0px 10px 5px;
font-size: 1.2rem;
font-family: $font-secondary;
p { margin: 0; }
}
p:last-child {
margin-bottom: 0;
}
}

101
scss/_index.scss Normal file
View File

@@ -0,0 +1,101 @@
.front-page {
header {
@media (max-width: 500px) {
position: absolute;
}
}
.top-fold {
min-height: 100vh;
background-color: $header-bg-mid;
background-image: linear-gradient(135deg, $header-bg-1, $header-bg-2);
padding-top: $header-full-height;
@media (max-width: 400px) {
padding-top: 100px;
}
.container {
margin: 0 auto;
padding-bottom: 1em;
padding-top: 2em;
max-width: 1000px;
}
blockquote {
padding: 1em;
border-radius: 1em;
margin-top: -2.5em;
margin-bottom: 0;
margin-left: 1em;
margin-right: 0.5em;
float: right;
background: #ad7ad6;
border: 3px solid rgba(#ad7ad6, 0.9);
box-shadow: inset 0px 1px 5px rgba(#000, 0.2), 0px 2px 3px rgba(#000, 0.7);
text-shadow: 0px 1px 3px rgba(black, 0.9);
color: $gray-100;
max-width: 500px;
width: 50vw;
font-family: $font-secondary;
transition-property: margin;
transition-duration: 0.3s;
transition-timing-function: ease;
p {
margin: 0;
}
span {
font-weight: 300;
}
}
.copy {
color: #333;
padding: 1em 1.4em;
background: #eee;
border-radius: 0.3rem;
box-shadow: inset 0px 1px 5px rgba(#000, 0.2), 0px 1px 5px rgba(#000, 0.9);
text-shadow: 0px 1px 3px rgba(#fff, 0.6);
max-width: 850px;
margin-left: 0.5em;
}
@media (max-width: 760px) {
blockquote {
max-width: unset;
width: unset;
margin-top: -1em;
margin-bottom: 1em;
}
}
@media (max-width: 865px) {
.copy {
margin-right: 0.5em;
}
blockquote {
margin-right: 1em;
}
}
}
.pager {
margin: -1.5em 1em 1em;
.btn {
min-width: unset;
}
}
}

99
scss/_markup.scss Normal file
View File

@@ -0,0 +1,99 @@
.markup {
p a {
transition-property: color, padding, margin;
transition-duration: 0.3s;
transition-timing-function: ease;
color: $primary;
text-decoration: underline;
&:hover {
color: #e84992;
}
}
img {
max-width: 100%;
}
hr {
overflow: hidden;
}
blockquote {
font-family: $font-secondary;
font-weight: 300;
font-size: 0.94em;
line-height: 1.4;
background: $trans-blue-lightest;
border: 1px solid $trans-blue;
box-shadow: 0 1px 3px rgba($trans-blue,0.5);
border-radius: 5px;
padding: 15px;
color: black;
position: relative;
overflow: hidden;
strong {
font-weight: 600;
}
&::before {
font-family: cursive;
font-weight: 700;
display: block;
padding-left: 10px;
content: "\201C";
font-size: 50px;
position: absolute;
left: -10px;
top: -16px;
color: $trans-blue;
text-shadow: 0 1px 3px rgba($trans-blue,0.5);
opacity: 0.8;
}
p:last-child {
margin-bottom: 0;
}
}
h1, h2, h3, h4, h5 {
clear: left;
display: flex;
a { text-decoration: inherit; }
.header-link {
flex: 1;
font-size: 0.75em;
text-decoration: none;
align-self: center;
text-align: right;
opacity: 0.15;
&:hover {
opacity: 1;
}
img {
height: 1em;
}
}
}
li p {
margin-bottom: 0;
margin-top: 0.5em;
}
li p + ul {
margin-bottom: 0.5em;
}
ul { padding-left: 2em; }
}

35
scss/_pager.scss Normal file
View File

@@ -0,0 +1,35 @@
.pager {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 5px;
justify-content: center;
align-items: center;
margin: 1em 0;
&.top {
margin: 0 0 1em;
}
> div {
display: flex;
}
.btn {
font-size: 0.9em;
box-shadow: 0px 1px 5px rgba(#000, 0.5);
color: white;
white-space: nowrap;
// width: 100%;
min-width: 75%;
display: flex;
}
.back, .back .btn {
justify-content: flex-start;
}
.forward, .forward .btn {
justify-content: flex-end;
}
}

105
scss/_post.scss Normal file
View File

@@ -0,0 +1,105 @@
body.page {
@media (max-width: 500px) {
font-size: 0.8em;
}
header {
background: $gray-800;
&.active { background: white; }
}
#body {
background-color: $gutter-bg;
@media (max-width: 500px) {
border-left: 1px solid $gutter-border;
border-right: 1px solid $gutter-border;
}
border-bottom: 1px solid $gutter-border;
max-width: 1200px;
margin: 0 auto;
}
article {
@media (min-width: 800px) {
margin-right: 400px;
@media (max-width: 1000px) {
margin-right: 300px;
}
}
background: $content-bg;
border-right: 1px solid $gutter-border;
padding: 1em 1em;
> h1:first-child {
margin-top: 0.5em;
}
@media (max-width: 500px) {
padding: 1em 1em;
> h1:first-child {
margin-top: 0.25em;
}
}
}
h1, h2, h3, h4, h5 { a {
color: inherit;
overflow: hidden;
} }
.gutter {
@media (min-width: 800px) {
position: relative;
height: 0;
left: calc(100% + 1em);
width: 400px;
padding: 0 1em;
@media (max-width: 1000px) {
width: 300px;
}
}
@media (min-width: 500px) and (max-width: 800px) {
float: right;
width: 300px;
margin-left: 1em;
zoom: 0.9;
}
// outline: 1px solid red;
&.flex, .flex {
display: flex;
flex-direction: column;
align-items: center;
}
> a > img:not(.card-img-top), > img {
max-width: 100%;
margin-bottom: 5px;
}
}
.full-wide {
width: calc(100vw - 4em);
background-color: darken($content-bg, 1%);
border: 1px solid $gutter-border;
border-radius: 0.3em;
padding: 1.2em 1.2em 1em;
box-shadow: 0 1px 3px rgba($gray-600, 0.5);
margin-bottom: 1em;
}
// @import "./pager";
}

360
scss/_tweet.scss Normal file
View File

@@ -0,0 +1,360 @@
.tweet {
$borderColor: #e1e8ed;
$borderHover: #ccd6dd;
$textLight: #697882;
$textDark: #1c2022;
$textHover: #3b94d9;
$borderRadius: .35em;
$avatarSize: 36px;
// zoom: 0.8;
font-size: 12px;
border: 1px solid $borderColor;
border-radius: .35em;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
margin-bottom: 1em;
background-color: white;
overflow-x: hidden;
overflow-y: auto;
@include media-breakpoint-up(md) {
&.capped { max-height: 700px; }
}
.emoji {
height: 1.25em;
width: 1.25em;
vertical-align: -0.2em;
padding: 0px 0.05em 0px 0.1em;
}
.tweet-item {
border-radius: $borderRadius;
padding: 1em 1em 13px;
.tweet-logo { display: none; }
}
.tweet-item + .tweet-item {
border-top: 1px solid $borderColor;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.tweet-item:first-child .tweet-logo { display: block; }
.tweet-header {
text-decoration: none;
display: grid;
grid-template-columns: $avatarSize 1fr 30px;
grid-template-rows: 1fr 1.2em 5px 1.1em 1fr;
grid-template-areas:
"avatar . logo"
"avatar name logo"
"avatar . logo"
"avatar screen-name logo"
"avatar . logo"
;
grid-column-gap: 10px;
grid-row-gap: 0px;
color: $textDark;
margin-bottom: 1em;
line-height: 1;
&:hover {
color: $textHover;
}
b {
grid-area: avatar;
display: flex;
justify-content: center;
align-items: center;
img {
width: $avatarSize;
height: $avatarSize;
border-radius: 50%;
}
}
strong {
-webkit-font-smoothing: antialiased;
grid-area: name;
font-size: 1.2em;
line-height: 1.1;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
align-self: flex-start;
.tweet-verified {
height: 16px;
width: 16px;
display: inline-block;
vertical-align: bottom;
margin-left: 4px;
background-image: url('/tweets/verified.svg');
background-position: center center;
background-size: contain;
background-repeat: no-repeat;
}
.tweet-protected {
height: 20px;
width: 20px;
display: inline-block;
vertical-align: bottom;
}
}
span {
grid-area: screen-name;
font-size: 1.1em;
color: $textLight;
}
.tweet-logo {
grid-area: logo;
height: 20px;
width: 30px;
}
}
.tweet-text {
line-height: 1.5em;
p { margin-bottom: 0.5em; }
a { color: $textHover; }
}
.tweet-quoted {
text-decoration: none;
border: 1px solid $borderColor;
border-radius: .35em;
padding: 10px;
display: block;
color: $textDark;
font-size: 14px;
margin-top: 10px;
&:hover {
border-color: $borderHover;
}
span {
color: $textLight;
}
span, strong {
line-height: 1;
}
}
.tweet-entities {
margin-top: 10px;
border-radius: 14px;
overflow: hidden;
max-width: 600px;
max-height: 600px;
.tweet-entities-inner {
padding-bottom: 56.25%;
position: relative;
> div {
position: absolute;
top: 0; right: 0;
bottom: 0; left: 0;
}
}
.tweet-entities-grid {
display: grid;
grid-gap: 5px;
grid-template: 1fr 1fr / 1fr 1fr;
height: 100%;
&.count1 .tweet-entity {
grid-row-end: span 2;
grid-column-end: span 2;
}
&.count2 .tweet-entity {
grid-row-end: span 2;
}
&.count3 .tweet-entity:first-child {
grid-row-end: span 2;
}
.tweet-entity {
display: flex;
align-items: stretch;
justify-content: stretch;
}
.tweet-entity > * {
flex: 1;
}
}
}
.tweet-photo {
background-size: cover;
background-position: center center;
}
.tweet-video {
width: 100%;
height: 100%;
border: 1px solid $borderColor;
border-radius: 14px;
}
.tweet-footer {
display: block;
color: $textLight;
font-size: 1em;
margin-top: 10px;
a {
text-decoration: none;
color: inherit;
&:hover {
color: $textHover;
text-decoration: underline;
}
}
}
&.collapse, &.oneblock {
.tweet-item {
.tweet-footer { display: none; }
}
.tweet-item + .tweet-item {
.tweet-header {display: none;}
}
.tweet-item:last-child {
.tweet-footer { display: block; }
}
}
&.oneblock {
padding: 20px;
&.borderless { border: none; padding: 0; }
.tweet-item {
border-top: none;
padding: 0;
}
.tweet-item + .tweet-item {
padding-top: 0.5em;
}
}
@include media-breakpoint-up(md) {
&.oneblock:not(.right) {
max-height: unset;
}
}
&.hide-reply .tweet-text a.mention:first-child { display: none; }
&.collapse:not(.grid-row) {
.tweet-item {
padding-bottom: 0.5em;
}
.tweet-item + .tweet-item {
padding-top: 0.5em;
}
.tweet-item:last-child {
padding-bottom: 20px;
}
}
&.grid-row:not(.collapse) {
border: none;
max-height: unset;
.tweet-item {
background-color: white;
border: 1px solid $borderColor;
display: flex;
flex-direction: column;
border-top-left-radius: $borderRadius;
border-top-right-radius: $borderRadius;
.tweet-logo { display: block; }
.tweet-text {
flex-grow: 1;
flex-shrink: 1;
}
}
}
&.grid-row.collapse {
border: none;
border: 1px solid $borderColor;
border-radius: 0;
max-height: unset;
grid-gap: 0;
.tweet-item {
background-color: white;
border: 1px solid $borderColor;
border-radius: 0;
display: flex;
flex-direction: column;
margin: -1px;
.tweet-logo { display: block; }
.tweet-text {
flex-grow: 1;
flex-shrink: 1;
}
}
.tweet-item {
.tweet-footer { display: none; }
}
.tweet-item + .tweet-item {
.tweet-header {display: none;}
}
.tweet-item:last-child {
.tweet-footer { display: block; }
}
@include media-breakpoint-up(md) {
&.by-two {
.tweet-item:first-child {
.tweet-logo { display: none }
}
.tweet-item:nth-child(2) {
.tweet-header {
display: grid;
b, strong, span {
visibility: hidden;
}
}
}
}
}
}
}

104
scss/style.scss Normal file
View File

@@ -0,0 +1,104 @@
$body-bg: #f8f9fa;
$content-bg: white;
$gutter-bg: #f0f0f0;
$gutter-border: #e2e2e2;
$font-primary: 'Lato', Arial, sans-serif;
$font-secondary: 'Gothic A1', 'Helvetica Neue', Helvetica, serif;
$font-brand: 'Sriracha', Geneva, monospace;
$font-family-sans-serif: $font-primary;
$font-family-base: $font-primary;
$grid-breakpoints: (
xs: 0,
sm: 500px,
md: 800px,
lg: 1000px,
xl: 1200px
) !default;
$line-height-base: 1.6;
$headings-font-family: 'Roboto', 'Helvetica Neue', Helvetica, serif;
$headings-font-weight: 300;
$font-size-base: 1rem;
$h1-font-size: $font-size-base * 2.2;
$h2-font-size: $font-size-base * 1.8;
$h3-font-size: $font-size-base * 1.5;
$h4-font-size: $font-size-base * 1.2;
$h5-font-size: $font-size-base * 1.15;
$h6-font-size: $font-size-base;
h1, h2, .h1, .h2 { font-weight: 300; }
h3, .h3 { font-weight: 400; }
h4, h5, .h4, .h5 { font-weight: 600; }
$trans-white: #fff;
$trans-pink: #F7A8B8;
$trans-blue: #55CDFC;
$trans-pink-light: #fde6eb;
$trans-blue-light: #b9eafe;
$trans-blue-lightest: #f0f8ff;
$trans-pink-dark: #ee4b6c;
$trans-blue-dark: #0377a4;
$primary: #fc0a7e;
$header-bg-1: #E81179;
$header-bg-2: #281362;
$header-bg-mid: mix($header-bg-1, $header-bg-2);
$header-full-height: 100px;
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/root";
@import "bootstrap/scss/reboot";
@import "bootstrap/scss/type";
// @import "bootstrap/scss/images";
// @import "bootstrap/scss/code";
// @import "bootstrap/scss/grid";
// @import "bootstrap/scss/tables";
// @import "bootstrap/scss/forms";
@import "bootstrap/scss/buttons";
// @import "bootstrap/scss/transitions";
@import "bootstrap/scss/dropdown";
// @import "bootstrap/scss/button-group";
// @import "bootstrap/scss/input-group";
// @import "bootstrap/scss/custom-forms";
// @import "bootstrap/scss/nav";
// @import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
// @import "bootstrap/scss/breadcrumb";
// @import "bootstrap/scss/pagination";
@import "bootstrap/scss/badge";
// @import "bootstrap/scss/jumbotron";
@import "bootstrap/scss/alert";
// @import "bootstrap/scss/progress";
// @import "bootstrap/scss/media";
@import "bootstrap/scss/list-group";
// @import "bootstrap/scss/close";
// @import "bootstrap/scss/toasts";
// @import "bootstrap/scss/modal";
// @import "bootstrap/scss/tooltip";
// @import "bootstrap/scss/popover";
// @import "bootstrap/scss/carousel";
// @import "bootstrap/scss/spinners";
@import "bootstrap/scss/utilities";
@import "bootstrap/scss/print";
@import "./global";
@import "./header";
@import "./footer";
@import "./tweet";
@import "./index";
@import "./post";
@import "./card";
@import "./grid-row";
@import "./markup";
@import "./pager";