1974 lines
39 KiB
CSS
1974 lines
39 KiB
CSS
@font-face {
|
|
font-family: 'Nunito';
|
|
font-style: normal;
|
|
font-weight: 200 1000;
|
|
src: url(/fonts/nunito-variable.woff2) format('woff2');
|
|
}
|
|
|
|
:root {
|
|
--bg-color: hsl(206, 12%, 95%);
|
|
--text-color: hsl(200, 35%, 25%);
|
|
--color-primary: #2196f3;
|
|
--outline-color: #14e0ff;
|
|
--button-bg: linear-gradient(to right, #e0e0e0, #bdbdbd);
|
|
--button-bg-box-shadow-color: rgba(160, 160, 160, 0.5);
|
|
--button-bg-primary: linear-gradient(to right, #42a5f5, #2979ff);
|
|
--button-bg-primary-box-shadow-color: rgba(66, 165, 245, 0.5);
|
|
--button-bg-secondary: linear-gradient(to right, #7e57c2, #6200ea);
|
|
--button-bg-secondary-box-shadow-color: rgba(81, 45, 168, 0.5);
|
|
--button-bg-danger: linear-gradient(to right, #ee3b3b, #e11c1c);
|
|
--button-bg-danger-box-shadow-color: rgba(168, 45, 45, 0.5);
|
|
--button-bg-success: linear-gradient(to right, #31b647, #26be3f);
|
|
--button-bg-success-box-shadow-color: rgba(25, 221, 51, 50%);
|
|
--features-bg: hsl(230, 15%, 92%);
|
|
--extensions-bg: hsl(230, 15%, 20%);
|
|
--send-icon-hover-color: #673ab7;
|
|
--send-spinner-icon-color: hsl(200, 15%, 70%);
|
|
--success-icon-color: hsl(144, 40%, 57%);
|
|
--error-icon-color: #f24f4f;
|
|
--copy-icon-color: hsl(144, 40%, 57%);
|
|
--copy-icon-bg-color: hsl(144, 100%, 96%);
|
|
--keyframe-slidey-offset: 0;
|
|
}
|
|
|
|
/* ANIMATIONS */
|
|
@keyframes spin {
|
|
from { transform: rotate(0deg); }
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
|
|
@keyframes fadein {
|
|
from { opacity: 0 }
|
|
to { opacity: 1 }
|
|
}
|
|
|
|
@keyframes slidey {
|
|
from { transform: translateY(var(--keyframe-slidey-offset)) }
|
|
to { transform: translateY(0) }
|
|
}
|
|
|
|
@keyframes tooltip {
|
|
to { opacity: 0.9; transform: translate(-50%, 0); }
|
|
}
|
|
|
|
/* GENERAL */
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
background-color: var(--bg-color);
|
|
font: 16px/1.45 'Nunito', sans-serif;
|
|
overflow-x: hidden;
|
|
color: var(--text-color);
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
outline-color: var(--outline-color);
|
|
|
|
}
|
|
|
|
*::-moz-focus-inner {
|
|
border: none;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
|
|
hr {
|
|
width: 100%;
|
|
height: 2px;
|
|
outline: none;
|
|
border: none;
|
|
background-color: hsl(200, 20%, 92%);
|
|
}
|
|
|
|
span.bold { font-weight: bold; }
|
|
span.underline { border-bottom: 2px dotted #999; }
|
|
|
|
a,
|
|
button.link {
|
|
color: var(--color-primary);
|
|
border-bottom: 1px dotted transparent;
|
|
text-decoration: none;
|
|
transition: all 0.2s ease-out;
|
|
}
|
|
|
|
a:hover,
|
|
button.link:hover {
|
|
border-bottom-color: var(--color-primary);
|
|
}
|
|
|
|
a.nav {
|
|
color: inherit;
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
a.nav:hover {
|
|
color: var(--color-primary);
|
|
}
|
|
|
|
a.button,
|
|
button {
|
|
position: relative;
|
|
width: auto;
|
|
height: 40px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0 32px;
|
|
font-size: 13px;
|
|
font-weight: normal;
|
|
text-align: center;
|
|
line-height: 1;
|
|
word-break: keep-all;
|
|
color: #444;
|
|
border: none;
|
|
border-radius: 100px;
|
|
transition: all 0.4s ease-out;
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
background: var(--button-bg);
|
|
box-shadow: 0 5px 6px var(--button-bg-box-shadow-color);
|
|
}
|
|
|
|
a.button.primary,
|
|
button.primary {
|
|
color: white;
|
|
background: var(--button-bg-primary);
|
|
box-shadow: 0 5px 6px var(--button-bg-primary-box-shadow-color);
|
|
}
|
|
|
|
a.button.secondary,
|
|
button.secondary {
|
|
color: white;
|
|
background: var(--button-bg-secondary);
|
|
box-shadow: 0 5px 6px var(--button-bg-secondary-box-shadow-color);
|
|
}
|
|
|
|
a.button.danger,
|
|
button.danger {
|
|
color: white;
|
|
background: var(--button-bg-danger);
|
|
box-shadow: 0 5px 6px var(--button-bg-danger-box-shadow-color);
|
|
}
|
|
|
|
a.button.success,
|
|
button.success {
|
|
color: white;
|
|
background: var(--button-bg-success);
|
|
box-shadow: 0 5px 6px var(--button-bg-success-box-shadow-color);
|
|
}
|
|
|
|
a.button:focus,
|
|
a.button:hover,
|
|
button:focus,
|
|
button:hover {
|
|
box-shadow: 0 6px 15px var(--button-bg-box-shadow-color);
|
|
transform: translateY(-2px) scale(1.02, 1.02);
|
|
}
|
|
|
|
a.button.primary:focus,
|
|
a.button.primary:hover,
|
|
button.primary:focus,
|
|
button.primary:hover {
|
|
box-shadow: 0 6px 15px var(--button-bg-primary-box-shadow-color);
|
|
}
|
|
|
|
a.button.secondary:focus,
|
|
a.button.secondary:hover,
|
|
button.secondary:focus,
|
|
button.secondary:hover {
|
|
box-shadow: 0 6px 15px var(--button-bg-secondary-box-shadow-color);
|
|
}
|
|
|
|
a.button.danger:focus,
|
|
a.button.danger:hover,
|
|
button.danger:focus,
|
|
button.danger:hover {
|
|
box-shadow: 0 6px 15px var(--button-bg-danger-box-shadow-color);
|
|
}
|
|
|
|
a.button.success:focus,
|
|
a.button.success:hover,
|
|
button.success:focus,
|
|
button.success:hover {
|
|
box-shadow: 0 6px 15px var(--button-bg-success-box-shadow-color);
|
|
}
|
|
|
|
a.button:disabled,
|
|
button:disabled { cursor: default; }
|
|
a.button:disabled:hover,
|
|
button:disabled:hover { transform: none; }
|
|
|
|
a.button svg.with-text,
|
|
a.button span svg,
|
|
button svg.with-text,
|
|
button span svg {
|
|
width: 16px;
|
|
height: auto;
|
|
margin-right: 0.5rem;
|
|
stroke: white;
|
|
stroke-width: 2;
|
|
}
|
|
|
|
a.button.action,
|
|
button.action {
|
|
padding: 5px;
|
|
width: 24px;
|
|
height: 24px;
|
|
box-shadow: 0 2px 1px hsla(200, 15%, 60%, 0.12);
|
|
}
|
|
|
|
a.button.action:disabled,
|
|
button.action:disabled {
|
|
background: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
a.button.action svg,
|
|
button.action svg {
|
|
width: 100%;
|
|
margin-right: 0;
|
|
}
|
|
|
|
a.button.action.delete,
|
|
button.action.delete {
|
|
background: hsl(0, 100%, 96%);
|
|
}
|
|
|
|
a.button.action.delete svg,
|
|
button.action.delete svg {
|
|
stroke-width: 2;
|
|
stroke: hsl(0, 100%, 69%);
|
|
}
|
|
|
|
a.button.action.edit,
|
|
button.action.edit {
|
|
background: hsl(46, 100%, 94%);
|
|
}
|
|
|
|
a.button.action.edit svg,
|
|
button.action.edit svg {
|
|
stroke-width: 2.5;
|
|
stroke: hsl(46, 90%, 50%);
|
|
}
|
|
|
|
a.button.action.qrcode,
|
|
button.action.qrcode {
|
|
background: hsl(0, 0%, 94%);
|
|
}
|
|
|
|
a.button.action.qrcode svg,
|
|
button.action.qrcode svg {
|
|
fill: hsl(0, 0%, 35%);
|
|
stroke: none;
|
|
}
|
|
|
|
a.button.action.stats,
|
|
button.action.stats {
|
|
background: hsl(260, 100%, 96%);
|
|
}
|
|
|
|
a.button.action.stats svg,
|
|
button.action.stats svg {
|
|
stroke-width: 2.5;
|
|
stroke: hsl(260, 100%, 69%);
|
|
}
|
|
|
|
a.button.action.ban,
|
|
button.action.ban {
|
|
background: hsl(10, 100%, 96%);
|
|
}
|
|
|
|
a.button.action.ban svg,
|
|
button.action.ban svg {
|
|
stroke-width: 2;
|
|
stroke: hsl(10, 100%, 40%);
|
|
}
|
|
|
|
a.button.action.password sv,
|
|
button.action.password svg,
|
|
a.button.action.banned svg,
|
|
button.action.banned svg {
|
|
stroke-width: 2.5;
|
|
stroke: #bbb;
|
|
}
|
|
|
|
button.nav {
|
|
box-sizing: border-box;
|
|
width: auto;
|
|
height: 28px;
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 0 8px;
|
|
border: none;
|
|
border-radius: 4px;
|
|
box-shadow: 0 0px 10px rgba(100, 100, 100, 0.1);
|
|
background: none;
|
|
background-color: white;
|
|
transition: all 0.2s ease-in-out;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
button.nav:disabled {
|
|
background-color: #f6f6f6;
|
|
box-shadow: 0 0px 5px rgba(150, 150, 150, 0.1);
|
|
opacity: 0.9;
|
|
color: #bbb;
|
|
cursor: default;
|
|
}
|
|
|
|
button.nav svg {
|
|
width: 14px;
|
|
height: auto;
|
|
}
|
|
|
|
button.nav svg { stroke-width: 2.5; }
|
|
|
|
button.nav:hover { transform: translateY(-2px); }
|
|
button.nav:disabled:hover { transform: none; }
|
|
|
|
button.link {
|
|
position: relative;
|
|
width: auto;
|
|
height: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
padding: 0 0 2px 0;
|
|
font-size: 1rem;
|
|
font-weight: normal;
|
|
border-radius: 0;
|
|
text-align: left;
|
|
line-height: normal;
|
|
word-break: normal;
|
|
cursor: pointer;
|
|
background: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
button.link:hover {
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
|
|
button.link span {
|
|
height: 1rem;
|
|
}
|
|
|
|
button.link svg {
|
|
stroke: var(--color-primary);
|
|
}
|
|
|
|
svg.spinner {
|
|
animation: spin 1s linear infinite, fadein 0.3s ease-in-out;
|
|
}
|
|
|
|
input {
|
|
filter: none;
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="email"],
|
|
input[type="password"] {
|
|
box-sizing: border-box;
|
|
width: 240px;
|
|
height: 44px;
|
|
padding: 0 24px;
|
|
font-size: 15px;
|
|
letter-spacing: 0.05em;
|
|
color: #444;
|
|
background-color: white;
|
|
border: none;
|
|
border-radius: 100px;
|
|
border-bottom: 5px solid #f5f5f5;
|
|
border-bottom-width: 5px;
|
|
box-shadow: 0 10px 35px hsla(200, 15%, 70%, 0.2);
|
|
transition: all 0.5s ease-out;
|
|
}
|
|
|
|
|
|
input[type="text"]:focus,
|
|
input[type="email"]:focus,
|
|
input[type="password"]:focus {
|
|
outline: none;
|
|
box-shadow: 0 20px 35px hsla(200, 15%, 70%, 0.4);
|
|
}
|
|
|
|
input[type="text"]::placeholder,
|
|
input[type="email"]::placeholder,
|
|
input[type="password"]::placeholder {
|
|
font-size: 14px;
|
|
letter-spacing: 0.05em;
|
|
color: #888;
|
|
}
|
|
|
|
.error input[type="text"],
|
|
.error input[type="email"],
|
|
.error input[type="password"] {
|
|
border-bottom-color: rgba(250, 10, 10, 0.8);
|
|
box-shadow: 0 10px 15px hsla(0, 100%, 75%, 0.2);
|
|
}
|
|
|
|
select {
|
|
position: relative;
|
|
width: 240px;
|
|
height: 44px;
|
|
padding: 0 24px;
|
|
font-size: 15px;
|
|
box-sizing: border-box;
|
|
letter-spacing: 0.05em;
|
|
color: #444;
|
|
background-color: white;
|
|
box-shadow: 0 10px 35px hsla(200, 15%, 70%, 0.2);
|
|
border: none;
|
|
border-radius: 100px;
|
|
border-bottom: 5px solid #f5f5f5;
|
|
border-bottom-width: 5px;
|
|
transition: all 0.5s ease-out;
|
|
appearance: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24' fill='none' stroke='%235c666b' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat, repeat;
|
|
background-position: right 1.2em top 50%, 0 0;
|
|
background-size: 1em auto, 100%;
|
|
}
|
|
|
|
select:focus {
|
|
outline: none;
|
|
box-shadow: 0 20px 35px hsla(200, 15%, 70%, 0.4);
|
|
}
|
|
|
|
.error select {
|
|
border-bottom-color: rgba(250, 10, 10, 0.8);
|
|
box-shadow: 0 10px 15px hsla(0, 100%, 75%, 0.2);
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
position: relative;
|
|
width: 1rem;
|
|
height: 1rem;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 4px;
|
|
background-color: white;
|
|
box-shadow: 0 2px 4px rgba(50, 50, 50, 0.2);
|
|
margin: 0;
|
|
-webkit-appearance: none;
|
|
appearance: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
input[type="checkbox"]:focus {
|
|
outline: 3px solid rgba(65, 164, 245, 0.5);
|
|
}
|
|
|
|
input[type="checkbox"]::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
width: 80%;
|
|
height: 80%;
|
|
display: block;
|
|
border-radius: 2px;
|
|
background-color: #9575cd;
|
|
box-shadow: 0 2px 4px rgba(50, 50, 50, 0.2);
|
|
cursor: pointer;
|
|
opacity: 0;
|
|
transform: translate(-50%, -50%) scale(0);
|
|
transition: all 0.1s ease-in-out;
|
|
}
|
|
|
|
input[type="checkbox"]:checked:after {
|
|
opacity: 1;
|
|
transform: translate(-50%, -50%) scale(1);
|
|
}
|
|
|
|
label {
|
|
display: flex;
|
|
color: rgb(41, 71, 86);
|
|
font-size: 1rem;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
font-weight: bold;
|
|
}
|
|
|
|
label input {
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
label.checkbox {
|
|
flex-direction: row;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
font-weight: normal;
|
|
}
|
|
|
|
label.checkbox input[type="checkbox"] {
|
|
margin: 0 0.75rem 2px 0;
|
|
}
|
|
|
|
p.error,
|
|
p.success {
|
|
display: flex;
|
|
align-items: center;
|
|
font-weight: normal;
|
|
animation: fadein 0.3s ease-in-out;
|
|
}
|
|
|
|
p.error { color: red; }
|
|
p.success { color: #0ea30e; }
|
|
|
|
table {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
background-color: white;
|
|
border-radius: 12px;
|
|
box-shadow: 0 6px 15px hsla(200, 20%, 70%, 0.3);
|
|
text-align: center;
|
|
overflow: auto;
|
|
}
|
|
|
|
table tr {
|
|
flex: 1 1 auto;
|
|
}
|
|
|
|
table tr,
|
|
table th,
|
|
table td,
|
|
table thead,
|
|
table tfoot {
|
|
display: flex;
|
|
overflow: hidden;
|
|
}
|
|
|
|
table tbody,
|
|
table tr {
|
|
overflow: visible;
|
|
}
|
|
|
|
table tbody,
|
|
table thead,
|
|
table tfoot {
|
|
flex-direction: column;
|
|
}
|
|
|
|
table tr {
|
|
padding: 0 0.5rem;
|
|
border-bottom: 1px solid hsl(200, 14%, 94%);
|
|
}
|
|
|
|
table th,
|
|
table td {
|
|
flex-basis: 0;
|
|
padding: 0.75rem;
|
|
}
|
|
|
|
table td {
|
|
position: relative;
|
|
white-space: nowrap;
|
|
font-size: 15px;
|
|
align-items: center;
|
|
}
|
|
|
|
table tbody {
|
|
border-bottom-right-radius: 12px;
|
|
border-bottom-left-radius: 12px;
|
|
animation: fadein 0.3s ease-in-out;
|
|
}
|
|
|
|
table tbody + tfoot {
|
|
border: none;
|
|
}
|
|
|
|
table thead {
|
|
background-color: hsl(200, 12%, 95%);
|
|
border-top-right-radius: 12px;
|
|
border-top-left-radius: 12px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
table thead tr {
|
|
border-bottom: 1px solid hsl(200, 14%, 90%);
|
|
}
|
|
|
|
table tfoot {
|
|
background-color: hsl(200, 12%, 95%);
|
|
border-bottom-right-radius: 12px;
|
|
border-bottom-left-radius: 12px;
|
|
}
|
|
|
|
table tr.loading-placeholder {
|
|
flex: 1 1 auto;
|
|
justify-content: center;
|
|
animation: fadein 0.3s ease-in-out;
|
|
}
|
|
|
|
table tr.loading-placeholder td {
|
|
flex: 0 0 auto;
|
|
font-size: 18px;
|
|
font-weight: 300;
|
|
}
|
|
|
|
.dialog {
|
|
position: fixed;
|
|
width: 100%;
|
|
height: 100%;
|
|
top: 0;
|
|
left: 0;
|
|
display: none;
|
|
justify-content: center;
|
|
align-items: center;
|
|
background-color: rgba(50, 50, 50, 0.8);
|
|
z-index: 1000;
|
|
animation: fadein 0.2s ease-in-out;
|
|
}
|
|
|
|
.dialog.open { display: flex; }
|
|
|
|
.dialog .box {
|
|
min-width: 450px;
|
|
max-width: 90%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 3rem 2rem;
|
|
background-color: white;
|
|
border-radius: 8px;
|
|
--keyframe-slidey-offset: -30px;
|
|
animation: slidey 0.2s ease-in-out;
|
|
}
|
|
|
|
.dialog.qrcode .box {
|
|
min-width: auto;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.dialog .content-wrapper {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.dialog .loading {
|
|
display: none;
|
|
width: 24px;
|
|
height: 24px;
|
|
margin: 3rem 0;
|
|
animation: fadein 0.2s ease-in-out;
|
|
}
|
|
|
|
.dialog.htmx-request .loading {
|
|
display: block;
|
|
}
|
|
|
|
.dialog.htmx-request .content-wrapper {
|
|
display: none;
|
|
}
|
|
|
|
.dialog .loading svg {
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
.dialog .content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
animation: fadein 0.2s ease-in-out;
|
|
}
|
|
|
|
.dialog .content h2 {
|
|
font-weight: bold !important;
|
|
margin-bottom: 0.5rem !important;
|
|
margin-top: 0;
|
|
}
|
|
|
|
.dialog .content .buttons {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
.dialog .content .buttons button { margin-right: 2rem; }
|
|
.dialog .content .buttons button:last-child { margin-right: 0; }
|
|
|
|
.dialog .content {
|
|
align-items: center;
|
|
}
|
|
|
|
.dialog .content #dialog-error {
|
|
margin-top: 1rem;
|
|
margin-bottom: -1rem;
|
|
}
|
|
|
|
.dialog .content .icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
border-radius: 100%;
|
|
padding: 5px;
|
|
margin-bottom: 1.5rem;
|
|
border: 2px solid;
|
|
}
|
|
|
|
.dialog .content .icon svg {
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.dialog .content .icon.success {
|
|
border-color: var(--success-icon-color);
|
|
}
|
|
|
|
.dialog .content .icon.success svg {
|
|
stroke-width: 2;
|
|
stroke: var(--success-icon-color);
|
|
}
|
|
|
|
.dialog .content .icon.error {
|
|
border-color: var(--error-icon-color);
|
|
}
|
|
|
|
.dialog .content .icon.error svg {
|
|
stroke-width: 1.5;
|
|
stroke: var(--error-icon-color);
|
|
}
|
|
|
|
.dialog .content svg.spinner {
|
|
display: none;
|
|
width: 24px;
|
|
margin: 0.5rem 0;
|
|
}
|
|
.dialog .content.htmx-request svg.spinner { display: block; }
|
|
.dialog .content.htmx-request button { display: none; }
|
|
|
|
.inputs { display: flex; align-items: flex-start; margin-bottom: 1rem; }
|
|
.inputs label { flex: 0 0 0; margin-right: 1rem; }
|
|
.inputs label:last-child { margin-right: 0; }
|
|
|
|
[data-tooltip] {
|
|
position: relative;
|
|
overflow: visible;
|
|
}
|
|
|
|
[data-tooltip]:before,
|
|
[data-tooltip]:after {
|
|
position: absolute;
|
|
left: 50%;
|
|
display: none;
|
|
font-size: 11px;
|
|
line-height: 1;
|
|
opacity: 0;
|
|
transform: translate(-50%, -0.5rem);
|
|
}
|
|
|
|
[data-tooltip]:before {
|
|
content: "";
|
|
border: 4px solid transparent;
|
|
top: -4px;
|
|
border-bottom-width: 0;
|
|
border-top-color: #333;
|
|
z-index: 1001;
|
|
}
|
|
|
|
[data-tooltip]:after {
|
|
content: attr(data-tooltip);
|
|
top: -25px;
|
|
text-align: center;
|
|
min-width: 1rem;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
padding: 5px 7px;
|
|
border-radius: 4px;
|
|
box-shadow: 0 1em 2em -0.5em rgba(0, 0, 0, 0.35);
|
|
background: #333;
|
|
color: #fff;
|
|
z-index: 1000;
|
|
}
|
|
|
|
[data-tooltip]:hover:before,
|
|
[data-tooltip]:hover:after {
|
|
display: block;
|
|
}
|
|
|
|
[data-tooltip]:before,
|
|
[data-tooltip]:after,
|
|
[data-tooltip]:hover:before,
|
|
[data-tooltip]:hover:after {
|
|
animation: tooltip 300ms ease-out forwards;
|
|
}
|
|
|
|
/* DISTINCT */
|
|
|
|
.main-wrapper {
|
|
min-height: 100vh;
|
|
width: 100%;
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.section-container {
|
|
max-width: 90%;
|
|
flex: 1 1 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
/* LOGIN & SIGNUP */
|
|
|
|
form#login-signup {
|
|
max-width: 100%;
|
|
flex: 1 1 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 400px;
|
|
margin: 3rem 0 0;
|
|
}
|
|
|
|
form#login-signup label { margin-bottom: 2rem; }
|
|
|
|
form#login-signup input {
|
|
width: 100%;
|
|
height: 72px;
|
|
margin-top: 1rem;
|
|
padding: 0 3rem;
|
|
font-size: 16px;
|
|
}
|
|
|
|
form#login-signup .buttons-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
form#login-signup .buttons-wrapper button {
|
|
height: 56px;
|
|
flex: 1 1 auto;
|
|
padding: 0 1rem 2px;
|
|
margin-right: 1rem;
|
|
}
|
|
|
|
form#login-signup .buttons-wrapper button:last-child { margin-right: 0; }
|
|
|
|
form#login-signup a.forgot-password {
|
|
align-self: flex-start;
|
|
font-size: 14px;
|
|
}
|
|
|
|
form#login-signup svg.spinner { display: none; }
|
|
form#login-signup.htmx-request:not(.signup) .login svg { display: none; }
|
|
form#login-signup.htmx-request:not(.signup) .login svg.spinner { display: block; }
|
|
form#login-signup.htmx-request.signup .signup svg.spinner { display: block; }
|
|
form#login-signup.htmx-request.signup .signup svg.icon { display: none; }
|
|
form#login-signup.htmx-request .error { opacity: 0; }
|
|
|
|
form#login-signup p.error {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.login-signup-message {
|
|
flex: 1 1 auto;
|
|
margin-top: 3rem;
|
|
}
|
|
|
|
.login-signup-message h1 {
|
|
font-weight: 300;
|
|
font-size: 24px;
|
|
}
|
|
|
|
/* HEADER */
|
|
|
|
header {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
width: 1232px;
|
|
max-width: 100%;
|
|
padding: 0 32px;
|
|
height: 102px;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
display: flex;
|
|
}
|
|
|
|
header .logo-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
header a.logo {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
font-size: 22px;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
border: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
header a.logo:hover { border: none; color: inherit; }
|
|
|
|
header .logo img {
|
|
margin: 0 12px 0 0;
|
|
padding: 0;
|
|
}
|
|
|
|
header ul.logo-links {
|
|
list-style: none;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
margin: 0 0 0 0.5rem;
|
|
padding: 0;
|
|
}
|
|
|
|
header ul.logo-links li {
|
|
padding: 2px 0 0;
|
|
margin: 0 0 0 32px;
|
|
}
|
|
|
|
header ul.logo-links li a {
|
|
font-size: 16px;
|
|
}
|
|
|
|
header nav ul {
|
|
display: flex;
|
|
flex-direction: row-reverse;
|
|
align-items: center;
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
header nav ul li {
|
|
margin: 0 0 0 32px;
|
|
padding: 0;
|
|
}
|
|
|
|
header nav ul li:last-child { margin-left: 0; }
|
|
|
|
|
|
/* SHORTENER */
|
|
|
|
main {
|
|
width: 800px;
|
|
max-width: 100%;
|
|
flex: 0 0 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 0 1rem;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
main #shorturl {
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 1rem 0 3rem;
|
|
}
|
|
|
|
main #shorturl h1 {
|
|
margin: 0;
|
|
border-bottom: 2px dotted transparent;
|
|
font-weight: 300;
|
|
font-size: 2rem;
|
|
}
|
|
|
|
main #shorturl h1.link {
|
|
cursor: pointer;
|
|
border-bottom-color: hsl(200, 35%, 65%);
|
|
transition: opacity 0.3s ease-in-out;
|
|
--keyframe-slidey-offset: -10px;
|
|
animation: fadein 0.2s ease-in-out, slidey 0.2s ease-in-out;
|
|
}
|
|
|
|
main #shorturl h1.link:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
.clipboard {
|
|
width: 35px;
|
|
height: 35px;
|
|
display: flex;
|
|
margin-right: 1rem;
|
|
}
|
|
|
|
.clipboard button {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
margin: 0;
|
|
padding: 7px;
|
|
box-shadow: none;
|
|
outline: none;
|
|
border: none;
|
|
background: none;
|
|
border-radius: 100%;
|
|
background-color: var(--copy-icon-bg-color);
|
|
transition: transform 0.4s ease-out;
|
|
box-shadow: 0 2px 1px hsla(200, 15%, 60%, 0.12);
|
|
cursor: pointer;
|
|
--keyframe-slidey-offset: -10px;
|
|
animation: slidey 0.2s ease-in-out;
|
|
}
|
|
|
|
.clipboard.small { width: 24px; height: 24px; }
|
|
.clipboard.small button { width: 24px; height: 24px; padding: 5px; }
|
|
|
|
.clipboard button:hover,
|
|
.clipboard button:focus {
|
|
transform: translateY(-2px) scale(1.02, 1.02);
|
|
}
|
|
|
|
.clipboard button:focus {
|
|
outline: 3px solid rgba(65, 164, 245, 0.5);
|
|
}
|
|
|
|
.clipboard svg {
|
|
stroke: var(--copy-icon-color);
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.clipboard svg.copy {
|
|
stroke-width: 2.5;
|
|
}
|
|
|
|
.clipboard svg.check {
|
|
display: none;
|
|
padding: 3px;
|
|
stroke-width: 3;
|
|
--keyframe-slidey-offset: -10px;
|
|
animation: slidey 0.2s ease-in-out;
|
|
}
|
|
|
|
.clipboard.copied button {
|
|
background-color: transparent;
|
|
box-shadow: none;
|
|
}
|
|
|
|
|
|
.clipboard.copied button { display: none; }
|
|
.clipboard.copied svg.check { display: block; }
|
|
|
|
main #shorturl h1 span {
|
|
border-bottom: 1px dotted #999;
|
|
}
|
|
|
|
main form {
|
|
position: relative;
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
main form input#target {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 72px;
|
|
display: flex;
|
|
padding: 0 84px 0 40px;
|
|
font-size: 20px;
|
|
}
|
|
|
|
main form input#target::placeholder {
|
|
font-size: 17px;
|
|
}
|
|
|
|
main form p.error {
|
|
font-size: 13px;
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
main form .target-wrapper p.error {
|
|
font-size: 15px;
|
|
margin-left: 1rem;
|
|
}
|
|
|
|
main form .target-wrapper {
|
|
position: relative;
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
main form button.submit {
|
|
box-sizing: content-box;
|
|
position: absolute;
|
|
cursor: pointer;
|
|
width: 28px;
|
|
height: auto;
|
|
right: 0;
|
|
top: 16px;
|
|
padding: 4px;
|
|
margin: 0 2rem 0;
|
|
background: none;
|
|
box-shadow: none;
|
|
outline: none;
|
|
border: none;
|
|
}
|
|
|
|
main form button.submit:focus,
|
|
main form button.submit:hover {
|
|
outline: none;
|
|
}
|
|
|
|
main form button.submit svg.send {
|
|
fill: #aaa;
|
|
animation: fadein 0.3s ease-in-out;
|
|
transition: fill 0.2s ease-in-out;
|
|
}
|
|
|
|
main form button.submit:hover svg.send {
|
|
fill: var(--send-icon-hover-color);
|
|
}
|
|
|
|
main form button.submit svg.spinner {
|
|
display: none;
|
|
fill: none;
|
|
stroke: var(--send-spinner-icon-color);
|
|
stroke-width: 2;
|
|
}
|
|
|
|
main form.htmx-request button.submit svg.send { display: none; }
|
|
main form.htmx-request button.submit svg.spinner { display: block; }
|
|
|
|
main form label#advanced {
|
|
margin-top: 2rem;
|
|
align-self: flex-start;
|
|
}
|
|
|
|
main form label#advanced input {
|
|
width: 1.1rem;
|
|
height: 1.1rem;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
#advanced-options {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
#advanced-options.hidden { display: none; }
|
|
|
|
.advanced-input-wrapper {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
|
|
.advanced-input-wrapper label {
|
|
flex: 1 1 0;
|
|
padding-right: 1rem;
|
|
}
|
|
|
|
.advanced-input-wrapper label.expire-in { flex: 1 1 34%; }
|
|
.advanced-input-wrapper label.description { flex: 1 1 65%; }
|
|
|
|
.advanced-input-wrapper label:last-child { padding-right: 0; }
|
|
|
|
.advanced-input-wrapper label input,
|
|
.advanced-input-wrapper label select {
|
|
width: 100%;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
/* LINKS TABLE */
|
|
|
|
#links-table-wrapper {
|
|
width: 1200px;
|
|
max-width: 95%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex: 1 1 auto;
|
|
align-items: flex-start;
|
|
margin: 7rem 0 7.5rem;
|
|
}
|
|
|
|
#links-table-wrapper h2 {
|
|
font-weight: 300;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
#links-table-wrapper table thead,
|
|
#links-table-wrapper table tbody,
|
|
#links-table-wrapper table tfoot {
|
|
min-width: 1000px;
|
|
}
|
|
|
|
#links-table-wrapper tr {
|
|
padding: 0 0.5rem;
|
|
}
|
|
|
|
#links-table-wrapper th,
|
|
#links-table-wrapper td {
|
|
padding: 1rem;
|
|
}
|
|
|
|
#links-table-wrapper td {
|
|
font-size: 16px;
|
|
}
|
|
|
|
|
|
#links-table-wrapper table .original-url { flex: 7 7 0; }
|
|
#links-table-wrapper table .created-at { flex: 2.5 2.5 0; }
|
|
#links-table-wrapper table .short-link { flex: 3 3 0; }
|
|
#links-table-wrapper table .views { flex: 1 1 0; justify-content: flex-end; }
|
|
#links-table-wrapper table .actions { flex: 3 3 0; justify-content: flex-end; overflow: visible; }
|
|
#links-table-wrapper table .actions a.button,
|
|
#links-table-wrapper table .actions button { margin-right: 0.5rem; }
|
|
#links-table-wrapper table .actions a.button:last-child,
|
|
#links-table-wrapper table .actions button:last-child { margin-right: 0; }
|
|
|
|
#links-table-wrapper table td.original-url,
|
|
#links-table-wrapper table td.created-at {
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
}
|
|
|
|
#links-table-wrapper table td.original-url p.description,
|
|
#links-table-wrapper table td.created-at p.expire-in {
|
|
margin: 0;
|
|
font-size: 14px;
|
|
color: #888;
|
|
}
|
|
|
|
#links-table-wrapper table tr.no-links {
|
|
flex: 1 1 auto;
|
|
justify-content: center;
|
|
animation: fadein 0.3s ease-in-out;
|
|
}
|
|
|
|
#links-table-wrapper table.htmx-request tbody tr { opacity: 0.5; }
|
|
#links-table-wrapper table tr.loading-placeholder { opacity: 0.6 !important; }
|
|
|
|
#links-table-wrapper table tr.loading-placeholder td,
|
|
#links-table-wrapper table tr.no-links td {
|
|
flex: 0 0 auto;
|
|
font-size: 18px;
|
|
font-weight: 300;
|
|
}
|
|
|
|
#links-table-wrapper table tr.loading-placeholder svg.spinner {
|
|
width: 1rem;
|
|
height: auto;
|
|
margin-right: 0.5rem;
|
|
stroke-width: 1.5;
|
|
}
|
|
|
|
#links-table-wrapper table tr.links-controls { justify-content: space-between; }
|
|
#links-table-wrapper table tfoot tr.links-controls { justify-content: flex-end; }
|
|
|
|
#links-table-wrapper table th.search,
|
|
#links-table-wrapper table th.nav {
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
}
|
|
|
|
#links-table-wrapper table [name="search"] {
|
|
width: auto;
|
|
height: 32px;
|
|
font-size: 14px;
|
|
padding: 0 1.5rem;
|
|
border-radius: 3px;
|
|
border-bottom-width: 2px;
|
|
}
|
|
|
|
#links-table-wrapper table [name="search"]::placeholder {
|
|
font-size: 13px;
|
|
}
|
|
|
|
#links-table-wrapper table tr.links-controls .checkbox {
|
|
margin-left: 1rem;
|
|
font-size: 15px;
|
|
}
|
|
|
|
#links-table-wrapper table .limit,
|
|
#links-table-wrapper table .pagination {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
#links-table-wrapper table button.nav { margin-right: 0.75rem; }
|
|
#links-table-wrapper table button.nav:last-child { margin-right: 0; }
|
|
|
|
#links-table-wrapper table .nav-divider {
|
|
height: 20px;
|
|
width: 1px;
|
|
opacity: 0.4;
|
|
background-color: #888;
|
|
margin: 0 1.5rem;
|
|
}
|
|
|
|
#links-table-wrapper table tbody tr:hover {
|
|
background-color: hsl(200, 14%, 98%);
|
|
}
|
|
|
|
#links-table-wrapper table tbody td.right-fade:after {
|
|
content: "";
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
width: 16px;
|
|
background: linear-gradient(to left, white, rgba(255, 255, 255, 0.001));
|
|
}
|
|
|
|
#links-table-wrapper table tbody tr:hover td.right-fade:after {
|
|
background: linear-gradient(to left, hsl(200, 14%, 98%), rgba(255, 255, 255, 0.001));
|
|
}
|
|
|
|
|
|
#links-table-wrapper table .clipboard { margin-right: 0.5rem; }
|
|
#links-table-wrapper table .clipboard svg.check { width: 24px; }
|
|
|
|
#links-table-wrapper table tr.edit {
|
|
background-color: #fafafa;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit td {
|
|
width: 100%;
|
|
padding: 2rem 1.5rem;
|
|
flex-basis: auto;
|
|
}
|
|
#links-table-wrapper table tr.edit td form {
|
|
width: 100;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit td form > div {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: start;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit label { margin: 0 0.5rem 1rem; }
|
|
#links-table-wrapper table tr.edit label:first-child { margin-left: 0; }
|
|
#links-table-wrapper table tr.edit label:last-child { margin-right: 0; }
|
|
|
|
#links-table-wrapper table tr.edit input {
|
|
height: 44px;
|
|
padding: 0 1.5rem;
|
|
font-size: 15px;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit input,
|
|
#links-table-wrapper table tr.edit input + p {
|
|
width: 240px;
|
|
max-width: 100%;
|
|
font-size: 14px;
|
|
text-wrap: wrap;
|
|
text-align: left;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit input[name="target"],
|
|
#links-table-wrapper table tr.edit input[name="description"],
|
|
#links-table-wrapper table tr.edit input[name="target"] + p,
|
|
#links-table-wrapper table tr.edit input[name="description"] + p {
|
|
width: 420px;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit button {
|
|
height: 38px;
|
|
margin-right: 1rem;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit button:last-child { margin-right: 0; }
|
|
|
|
#links-table-wrapper table tr.edit form {
|
|
--keyframe-slidey-offset: -5px;
|
|
animation: fadein 0.3s ease-in-out, slidey 0.32s ease-in-out;
|
|
}
|
|
|
|
#links-table-wrapper table tr.edit form.no-animation { animation: none; }
|
|
|
|
#links-table-wrapper table tr.edit { display: none; }
|
|
#links-table-wrapper table tr.edit.show { display: flex; }
|
|
#links-table-wrapper table tr.edit td.loading { display: none; }
|
|
#links-table-wrapper table tr.edit.htmx-request td.loading { display: block; }
|
|
#links-table-wrapper table tr.edit td.loading svg { width: 16px; height: 16px; }
|
|
|
|
#links-table-wrapper table tr.edit form.htmx-request button .reload { display: none; }
|
|
#links-table-wrapper table tr.edit form button .loader { display: none; }
|
|
#links-table-wrapper table tr.edit form.htmx-request button .loader { display: inline-block; }
|
|
|
|
#links-table-wrapper table tr.edit form .response p { margin: 2rem 0 0; }
|
|
|
|
#links-table-wrapper table tr.edit p.no-links {
|
|
width: 100%;
|
|
text-align: center;
|
|
}
|
|
|
|
.dialog .ban-checklist {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.dialog .ban-checklist label { margin: 1rem 1.5rem 1rem 0; }
|
|
.dialog .ban-checklist label:last-child { margin-right: 0; }
|
|
|
|
|
|
/* INTRO */
|
|
|
|
.introduction {
|
|
width: 1200px;
|
|
max-width: 98%;
|
|
display: flex;
|
|
align-items: center;
|
|
margin: 150px 0 0;
|
|
}
|
|
|
|
.introduction .text-wrapper {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin-top: -32px;
|
|
}
|
|
|
|
.introduction h2 {
|
|
font-weight: 300;
|
|
font-size: 28px;
|
|
padding-right: 2rem;
|
|
margin-bottom: 2.5rem
|
|
}
|
|
|
|
.introduction img {
|
|
width: 60%;
|
|
flex: 0 0 60%;
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
/* FEATURES */
|
|
|
|
.features {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
width: 100%;
|
|
flex: 0 0 auto;
|
|
padding: 5rem 0;
|
|
margin: 0;
|
|
background-color: var(--features-bg);
|
|
}
|
|
|
|
.features h3 {
|
|
font-weight: 300;
|
|
font-size: 28px;
|
|
margin-bottom: 72px;
|
|
}
|
|
|
|
.features ul {
|
|
width: 1200px;
|
|
max-width: 100%;
|
|
flex: 1 1 auto;
|
|
justify-content: center;
|
|
flex-wrap: nowrap;
|
|
display: flex;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.features ul li {
|
|
max-width: 25%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
padding: 0 1.5rem;
|
|
margin: 0;
|
|
}
|
|
|
|
.features ul li .icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 100%;
|
|
background-color: var(--color-primary);
|
|
}
|
|
|
|
.features ul li .icon svg {
|
|
width: 16px;
|
|
height: auto;
|
|
stroke: white;
|
|
stroke-width: 2px;
|
|
}
|
|
|
|
.features ul li h4 {
|
|
margin: 1rem;
|
|
padding: 0;
|
|
font-size: 15px;
|
|
}
|
|
|
|
.features ul li p {
|
|
margin: 0;
|
|
padding: 0;
|
|
font-size: 14px;
|
|
font-weight: 300;
|
|
text-align: center;
|
|
}
|
|
|
|
/* EXTENSIONS */
|
|
|
|
.extensions {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
flex: 0 0 auto;
|
|
flex-wrap: nowrap;
|
|
padding: 5rem 0;
|
|
background-color: var(--extensions-bg);
|
|
color: white;
|
|
}
|
|
|
|
.extensions h3 {
|
|
font-size: 28px;
|
|
font-weight: 300;
|
|
margin-bottom: 4rem;
|
|
}
|
|
|
|
.extensions .extenstions-wrapper {
|
|
width: 1200px;
|
|
max-width: 100%;
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
justify-content: center;
|
|
flex-wrap: nowrap;
|
|
}
|
|
|
|
.extensions a.extension-button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0 1rem;
|
|
padding: 0.75rem 1.75rem;
|
|
background-color: #eee;
|
|
border: 1px solid #aaa;
|
|
font-size: 14px;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
border-radius: 4px;
|
|
outline: none;
|
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
|
|
transition: transform 0.3s ease-out;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.extensions a.extension-button:hover {
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
.extensions a.extension-button.chrome { color: #4285f4; }
|
|
.extensions a.extension-button.firefox { color: #e0890f; }
|
|
|
|
.extensions a.extension-button svg {
|
|
width: 18px;
|
|
height: auto;
|
|
margin: 0 1rem 2px 0;
|
|
}
|
|
|
|
.extensions a.extension-button.chrome svg { fill: #4285f4; }
|
|
.extensions a.extension-button.firefox svg { fill: #e0890f; }
|
|
|
|
/* FOOTER */
|
|
|
|
footer {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
padding: 1rem 0;
|
|
font-size: 13px;
|
|
text-align: center;
|
|
}
|
|
|
|
/* SETTINGS */
|
|
|
|
#settings {
|
|
width: 600px;
|
|
max-width: 90%;
|
|
}
|
|
|
|
h1.settings-welcome {
|
|
font-size: 28px;
|
|
font-weight: 300;
|
|
}
|
|
|
|
h1.settings-welcome span {
|
|
border-bottom: 2px dotted #999;
|
|
padding-bottom: 2px;
|
|
font-weight: normal;
|
|
}
|
|
|
|
/* SETTINGS - DOMAIN */
|
|
|
|
#domains-table { margin-top: 1rem; }
|
|
#domains-table .domain { flex: 2 2 0; }
|
|
#domains-table .homepage { flex: 2 2 0; }
|
|
#domains-table .actions { flex: 1 1 0; justify-content: flex-end; padding-right: 1rem; }
|
|
#domains-table .no-entry { flex: 1 1 0; opacity: 0.8; }
|
|
|
|
.add-domain-wrapper {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin: 1.5rem 0 2rem;
|
|
}
|
|
|
|
.add-domain-wrapper > .spinner {
|
|
width: 20px;
|
|
display: none;
|
|
margin: 1rem 0 0 1rem;
|
|
}
|
|
.add-domain-wrapper.htmx-request > button { display: none; }
|
|
.add-domain-wrapper.htmx-request > .spinner { display: block; }
|
|
|
|
form#add-domain { margin-top: 1rem; }
|
|
form#add-domain .buttons-wrapper { display: flex; }
|
|
form#add-domain button { margin-right: 1rem }
|
|
form#add-domain .spinner { width: 20px; display: none; }
|
|
form#add-domain.htmx-request .buttons-wrapper { display: none; }
|
|
form#add-domain.htmx-request .spinner { display: block; }
|
|
form#add-domain .error { font-size: 0.85rem; }
|
|
|
|
/* SETTINGS - API */
|
|
|
|
#apikey-wrapper { margin-bottom: 1.5rem; }
|
|
|
|
#apikey {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
#apikey p {
|
|
font-weight: bold;
|
|
border-bottom: 1px dotted #999;
|
|
transition: opacity 0.2s ease-in-out;
|
|
cursor: pointer;
|
|
}
|
|
|
|
#apikey p:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
form#generate-apikey .spinner { display: none; }
|
|
form#generate-apikey.htmx-request svg { display: none; }
|
|
form#generate-apikey.htmx-request .spinner { display: block; }
|
|
|
|
/* SETTINGS - CHANGE PASSWORD */
|
|
|
|
#change-password-wrapper { margin-bottom: 1.5rem; }
|
|
|
|
form#change-password { margin-top: 1.5rem; }
|
|
form#change-password button { margin-top: 1rem; }
|
|
form#change-password .spinner { display: none; }
|
|
form#change-password.htmx-request svg { display: none; }
|
|
form#change-password.htmx-request .spinner { display: block; }
|
|
|
|
/* SETTINGS - CHANGE EMAIL */
|
|
|
|
#change-email-wrapper { margin-bottom: 1.5rem; }
|
|
|
|
form#change-email { margin-top: 1.5rem; }
|
|
form#change-email button { margin-top: 1rem; }
|
|
form#change-email .spinner { display: none; }
|
|
form#change-email.htmx-request svg { display: none; }
|
|
form#change-email.htmx-request .spinner { display: block; }
|
|
|
|
|
|
/* SETTINGS - DELETE ACCOUNT */
|
|
|
|
#delete-account-wrapper { margin-bottom: 1.5rem; }
|
|
|
|
form#delete-account { margin-top: 1.5rem; }
|
|
form#delete-account button { margin-top: 1rem; }
|
|
form#delete-account .spinner { display: none; }
|
|
form#delete-account.htmx-request svg { display: none; }
|
|
form#delete-account.htmx-request .spinner { display: block; }
|
|
|
|
/* STATS */
|
|
|
|
#stats-section {
|
|
width: 1200px;
|
|
max-width: 95%;
|
|
}
|
|
|
|
.loading-stats {
|
|
width: 100%;
|
|
flex: 1 1 0;
|
|
margin-top: -5rem;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.loading-stats .spinner {
|
|
width: 1.25rem;
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
.stats-info {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.stats-info h2 { font-weight: 300; font-size: 24px; }
|
|
.stats-info p { font-size: 14px; }
|
|
.stats-info h2,
|
|
.stats-info p { margin: 0 }
|
|
|
|
#stats {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
background-color: white;
|
|
border-radius: 12px;
|
|
box-shadow: 0 6px 15px hsla(200, 20%, 70%, 0.3);
|
|
overflow: hidden;
|
|
padding: 0;
|
|
}
|
|
|
|
.stats-head {
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
background-color: hsl(200, 12%, 95%);
|
|
justify-content: space-between;
|
|
padding: 0.75rem 1.5rem;
|
|
}
|
|
|
|
.total-number { font-weight: bold; }
|
|
|
|
.stats-nav { display: flex; align-items: center; }
|
|
|
|
.stats-nav button { margin-right: 0.75rem; }
|
|
.stats-nav button:last-child { margin-right: 0; }
|
|
|
|
.stats-period {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
padding: 0.75rem 1.5rem;
|
|
}
|
|
|
|
.stats-period h2 {
|
|
font-size: 24px;
|
|
font-weight: 300;
|
|
margin: 1rem 0 0;
|
|
}
|
|
|
|
.stats-period span.total-in-period {
|
|
font-weight: bold;
|
|
border-bottom: 1px dotted hsl(200, 35%, 65%);
|
|
}
|
|
|
|
p.last-update {
|
|
font-size: 14px;
|
|
color: hsl(200, 14%, 60%);
|
|
margin: 0.75rem 0 0;
|
|
}
|
|
|
|
#stats canvas {
|
|
width: 100%;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.stats-columns-wrapper {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.stats-columns-wrapper > div {
|
|
flex: 1 1 50%;
|
|
}
|
|
|
|
svg.map path {
|
|
fill: hsl(200, 15%, 92%);
|
|
stroke: #fff;
|
|
transition: all 0.1s ease-in-out;
|
|
}
|
|
|
|
svg.map path.color-1 { fill: hsl(261, 46%, 90%); }
|
|
svg.map path.color-2 { fill: hsl(261, 46%, 86%); }
|
|
svg.map path.color-3 { fill: hsl(261, 46%, 82%); }
|
|
svg.map path.color-4 { fill: hsl(261, 46%, 76%); }
|
|
svg.map path.color-5 { fill: hsl(261, 46%, 72%); }
|
|
svg.map path.color-6 { fill: hsl(261, 46%, 68%); }
|
|
svg.map path.active { stroke: hsl(261, 46%, 50%); stroke-width: 1.5; }
|
|
|
|
#map-tooltip {
|
|
position: fixed;
|
|
}
|
|
|
|
#map-tooltip.visible::before,
|
|
#map-tooltip.visible::after {
|
|
display: block !important;
|
|
}
|
|
|
|
#map-tooltip:before {
|
|
border-top-color: rgba(255, 255, 255, 0.95);
|
|
}
|
|
|
|
#map-tooltip:after {
|
|
box-shadow: 0 1em 2em -0.5em rgba(0, 0, 0, 0.15);
|
|
background: rgba(255, 255, 255, 0.95);
|
|
color: #333;
|
|
}
|
|
|
|
.stats-back-to-home {
|
|
width: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.stats-error {
|
|
width: 100%;
|
|
flex: 1 1 auto;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
text-align: center;
|
|
}
|
|
|
|
.stats-error p { margin-top: -3rem; display: flex; align-items: center; }
|
|
.stats-error p svg { width: 1.2rem; margin: 0 0.5rem 0.1rem 0; }
|
|
.stats-error .stats-back-to-home { margin-top: 0 }
|
|
|
|
/* 404 - NOT FOUND */
|
|
|
|
#notfound {
|
|
width: 800px;
|
|
align-items: center;
|
|
}
|
|
|
|
#notfound h2 {
|
|
font-size: 28px;
|
|
font-weight: 300;
|
|
}
|
|
|
|
/* BANNED */
|
|
|
|
#banned { width: 1200px; align-items: center; }
|
|
#banned h2 { font-weight: normal; }
|
|
#banned h4 { font-weight: normal; margin: 0; }
|
|
|
|
/* REPORT */
|
|
|
|
#report { width: 600px; }
|
|
|
|
#report form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-top: 2rem;
|
|
}
|
|
|
|
#report form .inputs-wrapper {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
#report form button { margin: 0 0 0.2rem 1rem; }
|
|
#report form .spinner { display: none; }
|
|
#report form.htmx-request svg { display: none; }
|
|
#report form.htmx-request .spinner { display: block; }
|
|
|
|
#report-email .spinner { display: none; }
|
|
#report-email .htmx-request svg { display: none; }
|
|
#report-email .htmx-request .spinner { display: block; }
|
|
|
|
.eye-icon svg { stroke-width: 0.5; }
|
|
|
|
/* RESET PASSWORD */
|
|
|
|
#reset-password form {
|
|
width: 100%;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
#reset-password form .inputs-wrapper {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
margin-top: 2rem;
|
|
|
|
}
|
|
|
|
#reset-password form label { flex: 0 0 280px; }
|
|
#reset-password form label input { width: 100%; }
|
|
#reset-password form button { margin: 0 0 0.2rem 1rem; }
|
|
#reset-password .spinner { display: none; }
|
|
#reset-password .htmx-request svg { display: none; }
|
|
#reset-password .htmx-request .spinner { display: block; }
|
|
|
|
/* VERIFY USER */
|
|
/* VERIFY CHANGE EMAIL */
|
|
/* RESET PASSWORD TOKEN */
|
|
|
|
.verify-page {
|
|
width: 600px;
|
|
align-items: center;
|
|
}
|
|
|
|
.verify-page h2,
|
|
.verify-page h3 {
|
|
display: flex;
|
|
align-items: center;
|
|
text-align: center;
|
|
font-weight: normal;
|
|
}
|
|
|
|
.verify-page h2 svg,
|
|
.verify-page h3 svg {
|
|
width: 1.15em;
|
|
height: auto;
|
|
margin-right: 0.5rem;
|
|
}
|
|
|
|
/* URL INFO */
|
|
|
|
#url-info {
|
|
width: 1200px;
|
|
align-items: center;
|
|
text-align: center;
|
|
}
|
|
|
|
#url-info h3 { font-weight: normal; margin: 0; }
|
|
|
|
/* PROTECTED */
|
|
|
|
#protected { width: 600px; }
|
|
|
|
#protected form { width: 100%; margin-top: 1rem; }
|
|
#protected form .inputs-wrapper { width: 100%; display: flex; align-items: flex-end; }
|
|
#protected form label { flex: 0 0 280px; }
|
|
#protected form label input { width: 100%; }
|
|
#protected form button { margin: 0 0 0.2rem 1rem; }
|
|
#protected form .spinner { display: none; }
|
|
#protected form.htmx-request svg { display: none; }
|
|
#protected form.htmx-request .spinner { display: block; }
|
|
|
|
/* TERMS */
|
|
|
|
#terms { width: 600px; } |