1
0
Fork 0
mirror of https://github.com/safing/web synced 2025-04-17 17:39:08 +00:00
safing-web/_sass/_global.scss
davegson 7cdfee5a28 Add blog padding bottom
helps space the portmaster plug and the blog a bit when active
2021-12-03 13:50:34 +01:00

523 lines
9.2 KiB
SCSS

* {
font-family: "Roboto";
}
body {
overflow-x: hidden;
}
.not-allowed {
cursor: not-allowed;
}
.spn-shadow {
box-shadow: 0 0px 90px 0 rgba(59, 93, 199, 0.1), 0 0px 5px 0 rgba(0, 0, 0, 0);
}
.hover:hover {
box-shadow: 0 0px 90px 0 rgba(59, 93, 199, 0.1), 0 0px 5px 0 rgba(0, 0, 0, 0);
}
.shake-horizontal {
-webkit-animation: shake-horizontal .8s cubic-bezier(.455, .03, .515, .955) both;
animation: shake-horizontal .8s cubic-bezier(.455, .03, .515, .955) both
}
@-webkit-keyframes shake-horizontal {
0%, 100% {
-webkit-transform: translateX(0);
transform: translateX(0)
}
10%, 30%, 50%, 70% {
-webkit-transform: translateX(-10px);
transform: translateX(-10px)
}
20%, 40%, 60% {
-webkit-transform: translateX(10px);
transform: translateX(10px)
}
80% {
-webkit-transform: translateX(8px);
transform: translateX(8px)
}
90% {
-webkit-transform: translateX(-8px);
transform: translateX(-8px)
}
}
@keyframes shake-horizontal {
0%, 100% {
-webkit-transform: translateX(0);
transform: translateX(0)
}
10%, 30%, 50%, 70% {
-webkit-transform: translateX(-10px);
transform: translateX(-10px)
}
20%, 40%, 60% {
-webkit-transform: translateX(10px);
transform: translateX(10px)
}
80% {
-webkit-transform: translateX(8px);
transform: translateX(8px)
}
90% {
-webkit-transform: translateX(-8px);
transform: translateX(-8px)
}
}
.spin {
animation-name: spin;
animation-duration: 21000ms;
animation-iteration-count: infinite;
animation-timing-function: linear;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.heart {
// animation: .8s infinite beatHeart;
}
@keyframes beatHeart {
0% {
transform: scale(1);
}
25% {
transform: scale(1.1);
}
40% {
transform: scale(1);
}
60% {
transform: scale(1.1);
}
100% {
transform: scale(1);
}
}
#menu-toggle:checked+#menu {
display: block;
}
.wiggle {
animation: wiggle .6s infinite alternate;
}
@keyframes wiggle {
0% {
transform: rotate(4deg);
}
100% {
transform: rotate(10deg);
}
}
.line {
width:100%;
text-align:center;
border-bottom: 2px solid rgba(0, 0, 0, 0.2);
line-height:0.1em;
margin:10px 0 20px;
}
.line span {
background:#fff;
padding:0 25px;
}
.support p{
color: #7d7d7d;
}
a.link {
--text-opacity: 1;
color: #667eea;
color: rgba(102, 126, 234, var(--text-opacity));
text-decoration: inherit;
background-color: transparent;
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
&:hover{
opacity: .5;
transition-duration: 150ms;
transition-timing-function: cubic-bezier(.4, 0, .2, 1);
}
}
.opacity-55 {
opacity: 0.55;
}
.hover\:opacity-55:hover {
opacity: 0.55;
}
.card{
max-width: auto;
}
.tablecard{
max-width: auto;
h3{
padding-top: 2.5rem !important;
}
ul, ol{
padding: 1rem;
li{
padding-top: 0.7rem;
color: #898989;
}
}
ul {
list-style-type: circle;
}
ol {
list-style-type: decimal;
}
a{
display: inline-table;
position: none;
padding-top: 1rem;
}
}
.cardshadow{
box-shadow: 0 0px 5px 0 rgba(0, 0, 0, 0), 0 0px 90px 0 rgba(59, 93, 199, 0.1);
}
.blogwrapper{
display: grid;
grid-template-columns: repeat(1, auto);
grid-template-rows: auto;
grid-row-gap: 15px;
grid-auto-flow: row;
margin-left: auto;
margin-right: auto;
max-width: 1350px;
}
@media (min-width: 640px) {
.blogwrapper{
grid-template-columns: repeat(1, auto);
}
#icon{
margin-top: 2rem;
}
}
.nextwrapper{
display: grid;
grid-template-columns: repeat(1, auto);
grid-template-rows: auto;
grid-row-gap: 1rem;
grid-column-gap: 1rem;
grid-auto-flow: row;
margin-left: auto;
margin-right: auto;
max-width: 1350px;
}
@media (min-width: 640px) {
.nextwrapper{
grid-template-columns: repeat(1, auto);
}
}
@media (min-width: 1024px) {
.nextwrapper{
grid-template-columns: repeat(3, minmax(auto, 445px));
.card{
max-width: 445px;
}
}
}
.dropinput {
position: absolute;
opacity: 0;
z-index: -1;
}
.tabs {
border-radius: 8px;
overflow: visible;
}
.tab {
width: 100%;
color: black;
overflow: hidden;
&-label {
display: flex;
justify-content: space-between;
padding: 1em;
background: transparent;
font-weight: bold;
cursor: pointer;
&:hover {
background: transparent;
}
&::after {
content: " ";
width: 1em;
height: 1em;
text-align: center;
transition: all .0s;
transition-timing-function: ease;
transform: rotate(-90deg);
}
}
&-content {
max-height: 0;
padding: 0 1em;
color: black;
background: transparent;
transition: all .3s;
transition-timing-function: ease-in-out;
}
&-close {
display: flex;
justify-content: flex-end;
padding: 1em;
font-size: 0.75em;
background: transparent;
cursor: pointer;
&:hover {
background: transparent;
}
}
}
#icon {
width: 35px;
position: fixed;
}
#icontwo {
width: 35px;
}
input:checked {
+ label #icon {
transform: rotate(180deg);
}
+ label #icontwo {
transform: rotate(180deg);
}
~ .tab-content {
max-height: 100%;
padding: 1em;
}
}
.dot {
position: absolute;
right: 0;
height: 5px;
width: 5px;
background-color: #6188ff;
border-radius: 50%;
display: inline-block;
}
[tooltip] {
position: relative;
}
[tooltip]::before,
[tooltip]::after {
text-transform: none;
font-size: .9em;
line-height: 1;
user-select: none;
pointer-events: none;
position: absolute;
display: none;
opacity: 0;
}
[tooltip]::before {
content: '';
border: 5px solid transparent;
z-index: 1001;
}
[tooltip]::after {
content: attr(tooltip);
font-family: Helvetica, sans-serif;
text-align: center;
min-width: 3em;
max-width: 21em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
padding: 1ch 2ch;
border-radius: 100px;
box-shadow: 0 1em 2em -.5em rgba(0, 0, 0, 0.35);
background: #333;
color: #fff;
z-index: 1000;
}
[tooltip]:hover::before,
[tooltip]:hover::after {
display: block;
}
[tooltip='']::before,
[tooltip='']::after {
display: none !important;
}
[tooltip]:not([flow])::before,
[tooltip][flow^="up"]::before {
bottom: 100%;
border-bottom-width: 0;
border-top-color: #333;
}
[tooltip]:not([flow])::after,
[tooltip][flow^="up"]::after {
bottom: calc(100% + 5px);
}
[tooltip]:not([flow])::before,
[tooltip]:not([flow])::after,
[tooltip][flow^="up"]::before,
[tooltip][flow^="up"]::after {
left: 50%;
transform: translate(-50%, -.5em);
}
@keyframes tooltips-vert {
to {
opacity: .9;
transform: translate(-50%, 0);
}
}
[tooltip]:not([flow]):hover::before,
[tooltip]:not([flow]):hover::after,
[tooltip][flow^="up"]:hover::before,
[tooltip][flow^="up"]:hover::after {
animation: tooltips-vert 300ms ease-out forwards;
}
.notification {
position: relative;
opacity: 0;
animation: notification 0.5s forwards ease-in;
animation-delay: 0.1s;
}
@keyframes notification {
100% {
opacity: 1;
}
}
// This is a hacky way to solve this problem.
// I could not find away in tailwind to set a max of cols and to allow
// each tag to have their own width.
.tag-grid{
grid-template-columns: repeat(3, minmax(max-content, 1fr))
}
@media (min-width: 640px) {
.tag-grid{
grid-template-columns: repeat(4, minmax(max-content, 1fr))
}
}
@media (min-width: 768px) {
.tag-grid{
grid-template-columns: repeat(7, minmax(max-content, 1fr))
}
}
#blog.content {
padding-bottom: 2em;
}
#portmaster-plug:hover button {
--transform-scale-x: 1.04;
--transform-scale-y: 1.04;
}
/*
Grabs External Links only:
1. make sure it is NOT an internal link like: href="/guides/" by filtering it starts with http
2. exclude all links that contain "safing.io" which is super unlikely to hit external links
3. also exclude "localhost", which basically is 2. for local development
4. exclude social icons on top of content, which is currently grabbed with :not opacity-55, kinda dirty
*/
#page-container content a[href^="http"]:not([href*="safing.io"]):not([href*="localhost"]):not([class*="opacity-55"]):not([class="exclude-external-icon"]):after {
background-image : url("/assets/img/icons/external.svg");
display : inline-block;
height : 10px;
width : 17px;
content : "";
background-repeat : no-repeat;
background-position-y: 0px;
background-position-x: 4px;
background-size : 10px;
}
/*
Grab Internal Setting links to add a cog
1., 2. from other docs pages, the href will include some form of /settings-reference(/)#
*/
#page-container content a[href*="portmaster/settings#"]:before,
#page-container content a[href*="portmaster/settings/#"]:before {
background-image : url("/assets/img/icons/cog.svg");
display : inline-block;
height : 20px;
width : 20px;
content : "";
background-repeat : no-repeat;
background-position-y: 5px;
background-position-x: 1px;
background-size : 17px;
}