Styling fix and scraper bug fix

This commit is contained in:
2026-06-14 18:39:55 +02:00
parent 6ed2a3ae0c
commit 566595984f
21 changed files with 2150 additions and 119 deletions
+343
View File
@@ -0,0 +1,343 @@
/* Component styles - must come first */
@import './components.css';
@import './modals.css';
@import './responsive.css';
/* Design Tokens */
:root {
/* Color - calm, trustworthy palette */
--c-bg: #f7f8fa;
--c-surface: #ffffff;
--c-border: #e3e6eb;
--c-text: #1c2733;
--c-text-muted: #5b6675;
--c-accent: #2f6f4f; /* calm green */
--c-accent-weak: #e8f1ec;
--c-danger: #b3261e;
--c-danger-weak: #fdeceb;
--c-success: #1e7d4f;
--c-success-weak: #e7f4ec;
--c-warning: #8a6d1f;
/* Spacing scale (8px base) */
--sp-1: 4px;
--sp-2: 8px;
--sp-3: 12px;
--sp-4: 16px;
--sp-5: 24px;
--sp-6: 32px;
--sp-8: 48px;
/* Type scale */
--fs-sm: 0.875rem;
--fs-base: 1rem;
--fs-lg: 1.25rem;
--fs-xl: 1.5rem;
--fs-2xl: 2rem;
--lh: 1.5;
/* Shape & depth */
--radius: 8px;
--shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06);
--shadow-md: 0 4px 12px rgba(16, 24, 40, 0.08);
/* Content width */
--maxw: 960px;
color-scheme: light;
}
/* Reset & Base */
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
main,
mark,
meter,
nav,
output,
progress,
section,
summary,
time,
video {
margin: 0;
padding: 0;
border: 0;
}
body {
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
background: var(--c-bg);
color: var(--c-text);
line-height: var(--lh);
font-size: var(--fs-base);
}
/* Headings */
h1 {
font-size: var(--fs-2xl);
font-weight: 700;
margin-bottom: var(--sp-4);
}
h2 {
font-size: var(--fs-xl);
font-weight: 700;
margin-bottom: var(--sp-3);
}
h3 {
font-size: var(--fs-lg);
font-weight: 600;
margin-bottom: var(--sp-3);
}
/* Text */
p {
margin-bottom: var(--sp-3);
}
small {
font-size: var(--fs-sm);
color: var(--c-text-muted);
}
/* Lists */
ul,
ol {
margin-left: var(--sp-5);
margin-bottom: var(--sp-3);
}
li {
margin-bottom: var(--sp-2);
}
/* Links */
a {
color: var(--c-accent);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
a:focus-visible {
outline: 2px solid var(--c-accent);
outline-offset: 2px;
border-radius: 2px;
}
/* Buttons - base */
button {
font-family: inherit;
font-size: var(--fs-base);
cursor: pointer;
border: none;
border-radius: var(--radius);
padding: var(--sp-3) var(--sp-4);
transition: background-color 0.2s, color 0.2s, box-shadow 0.2s;
}
button:focus-visible {
outline: 2px solid var(--c-accent);
outline-offset: 2px;
}
button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
/* Inputs & Selects */
input,
select,
textarea {
font-family: inherit;
font-size: var(--fs-base);
border: 1px solid var(--c-border);
border-radius: var(--radius);
padding: var(--sp-3) var(--sp-4);
background: var(--c-surface);
color: var(--c-text);
transition: border-color 0.2s, box-shadow 0.2s;
}
input:focus,
select:focus,
textarea:focus {
outline: none;
border-color: var(--c-accent);
box-shadow: 0 0 0 3px rgba(47, 111, 79, 0.1);
}
input:disabled,
select:disabled,
textarea:disabled {
background-color: #f0f0f0;
cursor: not-allowed;
}
/* Label */
label {
display: block;
margin-bottom: var(--sp-2);
font-weight: 500;
color: var(--c-text);
}
/* Tables */
table {
width: 100%;
border-collapse: collapse;
}
th {
text-align: left;
font-weight: 600;
padding: var(--sp-3) var(--sp-4);
background-color: var(--c-bg);
border-bottom: 1px solid var(--c-border);
color: var(--c-text-muted);
}
td {
padding: var(--sp-3) var(--sp-4);
border-bottom: 1px solid var(--c-border);
}
tr:hover td {
background-color: rgba(47, 111, 79, 0.02);
}
/* Section container */
main {
max-width: var(--maxw);
margin: 0 auto;
padding: var(--sp-5);
}
/* Utility classes for form */
.form-group {
margin-bottom: var(--sp-5);
}
.form-group label {
margin-bottom: var(--sp-2);
}
/* Message boxes */
.error-message {
padding: var(--sp-3) var(--sp-4);
background-color: var(--c-danger-weak);
color: var(--c-danger);
border-left: 4px solid var(--c-danger);
border-radius: var(--radius);
margin-bottom: var(--sp-4);
}
.success-message {
padding: var(--sp-3) var(--sp-4);
background-color: var(--c-success-weak);
color: var(--c-success);
border-left: 4px solid var(--c-success);
border-radius: var(--radius);
margin-bottom: var(--sp-4);
}
.warning-message {
padding: var(--sp-3) var(--sp-4);
background-color: #fef8e7;
color: var(--c-warning);
border-left: 4px solid var(--c-warning);
border-radius: var(--radius);
margin-bottom: var(--sp-4);
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}