Files
SCOicideSquad/static/stylesheet.css
T

552 lines
15 KiB
CSS

:root {
--fallback-primary: hsl(15, 80%, 45%);
--fallback-background: hsl(15, 20%, 95%);
--fallback-surface: hsl(0, 0%, 100%);
--fallback-text: hsl(250, 20%, 15%);
--fallback-static-white: hsl(0, 0%, 100%);
--fallback-static-black: hsl(250, 20%, 15%);
--fallback-text-inverted: hsl(0, 0%, 100%);
--fallback-success: hsl(140, 50%, 45%);
--fallback-danger: hsl(25, 80%, 50%);
--fallback-warning: hsl(50, 90%, 65%);
--fallback-border: hsla(250, 20%, 15%, 0.2);
--fallback-border-light: hsla(250, 20%, 15%, 0.1);
--fallback-primary-transparent: hsla(15, 80%, 45%, 0.1);
--fallback-shadow-primary: hsla(15, 80%, 45%, 0.3);
--fallback-overlay: rgba(0, 0, 0, 0.6);
--lightness-primary: 0.35;
--chroma-primary: 0.15;
--hue-primary: 15;
--lightness-background: 0.95;
--chroma-background: 0.01;
--hue-background: var(--hue-primary);
--lightness-surface: 1;
--chroma-surface: 0;
--hue-surface: 0;
--lightness-text: 0.15;
--chroma-text: 0.05;
--hue-text: 250;
--lightness-static-white: 1;
--chroma-static-white: 0;
--hue-static-white: 0;
--lightness-static-black: 0.15;
--chroma-static-black: 0.05;
--hue-static-black: 250;
--lightness-text-inverted: 1;
--chroma-text-inverted: 0;
--hue-text-inverted: 0;
--lightness-success: 0.60;
--chroma-success: 0.18;
--hue-success: 140;
--lightness-danger: 0.50;
--chroma-danger: 0.22;
--hue-danger: 25;
--lightness-warning: 0.85;
--chroma-warning: 0.15;
--hue-warning: 80;
--dimension-multiplier: 1;
--spacing-scale-base: 0.25rem;
--spacing-small: calc(var(--spacing-scale-base) * 2 * var(--dimension-multiplier));
--spacing-medium: calc(var(--spacing-scale-base) * 4 * var(--dimension-multiplier));
--spacing-large: calc(var(--spacing-scale-base) * 6 * var(--dimension-multiplier));
--border-radius-small: calc(0.5rem * var(--dimension-multiplier));
--border-radius-large: calc(1.25rem * var(--dimension-multiplier));
--border-radius-pill: calc(999rem * var(--dimension-multiplier));
}
@media (prefers-color-scheme: dark) {
:root {
--fallback-primary: hsl(15, 80%, 60%);
--fallback-background: hsl(250, 15%, 15%);
--fallback-surface: hsl(250, 15%, 20%);
--fallback-text: hsl(250, 20%, 90%);
--fallback-text-inverted: hsl(0, 0%, 0%);
--fallback-border: hsla(250, 20%, 90%, 0.2);
--fallback-border-light: hsla(250, 20%, 90%, 0.1);
--fallback-primary-transparent: hsla(15, 80%, 60%, 0.1);
--fallback-shadow-primary: hsla(15, 80%, 60%, 0.3);
--lightness-primary: 0.65;
--chroma-primary: 0.20;
--lightness-background: 0.15;
--chroma-background: 0.02;
--lightness-surface: 0.20;
--chroma-surface: 0.02;
--lightness-text: 0.90;
--chroma-text: 0.02;
--lightness-text-inverted: 0;
--chroma-text-inverted: 0;
--hue-text-inverted: 0;
}
}
@media (prefers-reduced-motion: reduce) {
* {
transition-duration: 0s !important;
animation-duration: 0s !important;
}
}
body {
background-color: var(--fallback-background);
background-color: oklch(var(--lightness-background) var(--chroma-background) var(--hue-background));
color: var(--fallback-text);
color: oklch(var(--lightness-text) var(--chroma-text) var(--hue-text));
font-family: system-ui, -apple-system, sans-serif;
font-size: calc(1rem * var(--dimension-multiplier));
line-height: 1.6;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
min-height: 100vh;
transition: background-color 0.3s ease, color 0.3s ease;
}
.brand-link {
text-decoration: none;
color: inherit;
display: block;
transition: opacity 0.2s ease;
}
.brand-link:hover {
opacity: 0.8;
}
.application-header {
background-color: var(--fallback-primary);
background-color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
color: var(--fallback-text-inverted);
color: oklch(var(--lightness-text-inverted) var(--chroma-text-inverted) var(--hue-text-inverted));
padding: var(--spacing-medium) var(--spacing-large);
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 4px 12px var(--fallback-border-light);
box-shadow: 0 4px 12px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.1);
position: sticky;
top: 0;
z-index: 100;
}
.brand-container {
display: flex;
align-items: center;
gap: var(--spacing-small);
}
.brand-logo {
width: calc(2rem * var(--dimension-multiplier));
height: calc(2rem * var(--dimension-multiplier));
color: currentColor;
}
.application-title {
margin: 0;
font-size: calc(1.25rem * var(--dimension-multiplier));
font-weight: 800;
letter-spacing: -0.02em;
}
.application-content {
flex: 1;
padding: var(--spacing-large);
width: 100%;
max-width: calc(48rem * var(--dimension-multiplier));
margin: 0 auto;
box-sizing: border-box;
}
.content-card {
background-color: var(--fallback-surface);
background-color: oklch(var(--lightness-surface) var(--chroma-surface) var(--hue-surface));
padding: var(--spacing-large);
border-radius: var(--border-radius-large);
box-shadow: 0 10px 25px -5px var(--fallback-border-light), 0 8px 10px -6px var(--fallback-border-light);
box-shadow: 0 10px 25px -5px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.05), 0 8px 10px -6px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.01);
margin-bottom: var(--spacing-large);
transition: background-color 0.3s ease, box-shadow 0.3s ease;
}
.section-title {
margin-top: 0;
margin-bottom: var(--spacing-medium);
display: flex;
align-items: center;
gap: var(--spacing-small);
}
.card-subtitle {
margin-top: 0;
margin-bottom: var(--spacing-small);
opacity: 0.7;
text-transform: uppercase;
font-size: calc(0.875rem * var(--dimension-multiplier));
letter-spacing: 0.05em;
}
.input-form {
display: flex;
flex-direction: column;
gap: var(--spacing-medium);
}
.inline-form {
display: inline-block;
}
.flexible_form_container {
display: flex;
gap: calc(0.5rem * var(--dimension-multiplier));
align-items: center;
flex-wrap: wrap;
}
.form-group {
display: flex;
flex-direction: column;
gap: calc(0.25rem * var(--dimension-multiplier));
}
.input-label {
font-weight: bold;
font-size: calc(0.875rem * var(--dimension-multiplier));
}
.text-input {
padding: var(--spacing-medium);
border: 2px solid var(--fallback-border);
border: 2px solid oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.2);
border-radius: var(--border-radius-small);
background-color: var(--fallback-background);
background-color: oklch(var(--lightness-background) var(--chroma-background) var(--hue-background));
color: inherit;
font-size: inherit;
transition: border-color 0.2s ease, background-color 0.3s ease;
}
.text-input:focus {
outline: none;
border-color: var(--fallback-primary);
border-color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
}
.small-input {
width: calc(12rem * var(--dimension-multiplier));
padding: var(--spacing-small);
}
.time-input {
width: calc(13rem * var(--dimension-multiplier));
}
.action-button {
padding: var(--spacing-medium) var(--spacing-large);
border: none;
border-radius: var(--border-radius-pill);
font-size: inherit;
font-weight: bold;
cursor: pointer;
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--spacing-small);
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
color: var(--fallback-text-inverted);
color: oklch(var(--lightness-text-inverted) var(--chroma-text-inverted) var(--hue-text-inverted));
}
.action-button:hover, .action-button:focus {
filter: brightness(1.1);
transform: translateY(-1px);
}
.icon-button {
padding: calc(0.5rem * var(--dimension-multiplier));
border-radius: var(--border-radius-small);
}
.primary-button {
background-color: var(--fallback-primary);
background-color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
box-shadow: 0 4px 12px var(--fallback-shadow-primary);
box-shadow: 0 4px 12px oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary) / 0.3);
}
.success-button {
background-color: var(--fallback-success);
background-color: oklch(var(--lightness-success) var(--chroma-success) var(--hue-success));
}
.danger-button {
background-color: var(--fallback-danger);
background-color: oklch(var(--lightness-danger) var(--chroma-danger) var(--hue-danger));
}
.warning-button {
background-color: var(--fallback-warning);
background-color: oklch(var(--lightness-warning) var(--chroma-warning) var(--hue-warning));
color: var(--fallback-static-black);
color: oklch(var(--lightness-static-black) var(--chroma-static-black) var(--hue-static-black));
}
.secondary-button {
background-color: transparent;
color: var(--fallback-text);
color: oklch(var(--lightness-text) var(--chroma-text) var(--hue-text));
border: 2px solid var(--fallback-border);
border: 2px solid oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.2);
}
.large-button {
padding: var(--spacing-large) calc(2.5rem * var(--dimension-multiplier));
font-size: calc(1.125rem * var(--dimension-multiplier));
width: 100%;
}
.small-button {
padding: calc(0.25rem * var(--dimension-multiplier)) calc(0.75rem * var(--dimension-multiplier));
font-size: calc(0.875rem * var(--dimension-multiplier));
}
.tab-container {
display: flex;
background-color: var(--fallback-surface);
background-color: oklch(var(--lightness-surface) var(--chroma-surface) var(--hue-surface));
border-radius: var(--border-radius-pill);
padding: calc(0.375rem * var(--dimension-multiplier));
gap: calc(0.25rem * var(--dimension-multiplier));
box-shadow: 0 4px 12px var(--fallback-border-light);
box-shadow: 0 4px 12px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.05);
margin-bottom: var(--spacing-large);
overflow-x: auto;
}
.tab-button {
flex: 1;
border-radius: var(--border-radius-pill);
padding: calc(0.625rem * var(--dimension-multiplier)) var(--spacing-medium);
border: none;
background: transparent;
color: inherit;
font-size: inherit;
font-weight: bold;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: calc(0.5rem * var(--dimension-multiplier));
white-space: nowrap;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.active-tab {
background-color: var(--fallback-primary);
background-color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
color: var(--fallback-text-inverted);
color: oklch(var(--lightness-text-inverted) var(--chroma-text-inverted) var(--hue-text-inverted));
box-shadow: 0 2px 8px var(--fallback-border-light);
box-shadow: 0 2px 8px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.15);
}
.tab-content {
display: none;
}
.active-content {
display: block;
animation: fade-in 0.3s ease-out;
}
@keyframes fade-in {
from { opacity: 0; transform: translateY(calc(0.25rem * var(--dimension-multiplier))); }
to { opacity: 1; transform: translateY(0); }
}
.status-pill {
display: inline-flex;
align-items: center;
gap: calc(0.375rem * var(--dimension-multiplier));
padding: calc(0.25rem * var(--dimension-multiplier)) calc(0.875rem * var(--dimension-multiplier));
border-radius: var(--border-radius-pill);
font-size: calc(0.875rem * var(--dimension-multiplier));
font-weight: bold;
color: var(--fallback-static-white);
color: oklch(var(--lightness-static-white) var(--chroma-static-white) var(--hue-static-white));
margin-left: var(--spacing-small);
}
.warning-pill {
background-color: var(--fallback-warning);
background-color: oklch(var(--lightness-warning) var(--chroma-warning) var(--hue-warning));
color: var(--fallback-static-black);
color: oklch(var(--lightness-static-black) var(--chroma-static-black) var(--hue-static-black));
}
.success-pill {
background-color: var(--fallback-success);
background-color: oklch(var(--lightness-success) var(--chroma-success) var(--hue-success));
}
.danger-pill {
background-color: var(--fallback-danger);
background-color: oklch(var(--lightness-danger) var(--chroma-danger) var(--hue-danger));
}
.notice-card {
border-left: calc(0.375rem * var(--dimension-multiplier)) solid var(--fallback-primary);
border-left: calc(0.375rem * var(--dimension-multiplier)) solid oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
}
.danger-card {
border-left-color: var(--fallback-danger);
border-left-color: oklch(var(--lightness-danger) var(--chroma-danger) var(--hue-danger));
}
.success-card {
border-left-color: var(--fallback-success);
border-left-color: oklch(var(--lightness-success) var(--chroma-success) var(--hue-success));
}
.warning-card {
border-left-color: var(--fallback-warning);
border-left-color: oklch(var(--lightness-warning) var(--chroma-warning) var(--hue-warning));
}
.target-name {
font-size: calc(2.5rem * var(--dimension-multiplier));
text-align: center;
margin: var(--spacing-large) 0;
color: var(--fallback-primary);
color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
font-weight: 800;
}
.data-table {
width: 100%;
border-collapse: collapse;
}
.data-table th, .data-table td {
padding: var(--spacing-medium);
border-bottom: 1px solid var(--fallback-border-light);
border-bottom: 1px solid oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.1);
text-align: left;
}
.data-table th {
font-weight: 800;
text-transform: uppercase;
font-size: calc(0.75rem * var(--dimension-multiplier));
letter-spacing: 0.05em;
opacity: 0.7;
}
.highlighted-row {
background-color: var(--fallback-primary-transparent);
background-color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary) / 0.1);
}
.highlighted-row td {
font-weight: bold;
}
.unregistered-row {
opacity: 0.6;
}
.markdown-container h1, .markdown-container h2, .markdown-container h3 {
color: var(--fallback-primary);
color: oklch(var(--lightness-primary) var(--chroma-primary) var(--hue-primary));
}
.markdown-container ul {
padding-left: var(--spacing-large);
}
.modal-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: var(--fallback-overlay);
background-color: oklch(0 0 0 / 0.6);
backdrop-filter: blur(4px);
justify-content: center;
align-items: center;
z-index: 1000;
}
.active-modal {
display: flex;
}
.modal-dialog {
background-color: var(--fallback-surface);
background-color: oklch(var(--lightness-surface) var(--chroma-surface) var(--hue-surface));
padding: var(--spacing-large);
border-radius: var(--border-radius-large);
max-width: calc(32rem * var(--dimension-multiplier));
width: 90%;
box-shadow: 0 20px 40px var(--fallback-border);
box-shadow: 0 20px 40px oklch(0 0 0 / 0.2);
}
.modal-title {
margin-top: 0;
display: flex;
align-items: center;
gap: var(--spacing-small);
}
.modal-actions {
display: flex;
gap: var(--spacing-medium);
justify-content: flex-end;
margin-top: var(--spacing-large);
}
.qr-code-container {
background-color: var(--fallback-static-white);
background-color: oklch(var(--lightness-static-white) var(--chroma-static-white) var(--hue-static-white));
padding: var(--spacing-medium);
border-radius: var(--border-radius-large);
display: inline-block;
margin-bottom: var(--spacing-medium);
box-shadow: inset 0 0 0 2px var(--fallback-border-light);
box-shadow: inset 0 0 0 2px oklch(var(--lightness-text) var(--chroma-text) var(--hue-text) / 0.1);
}
.qr-code-container svg {
display: block;
width: calc(14rem * var(--dimension-multiplier));
height: calc(14rem * var(--dimension-multiplier));
}
.qr-code-container svg path {
fill: var(--fallback-static-black);
fill: oklch(var(--lightness-static-black) var(--chroma-static-black) var(--hue-static-black));
}
.monospace-identifier {
font-family: monospace;
}