Files
PunktFri/static/style.css
Henrik Jess Nielsen df365ec49f
Some checks failed
Build and Deploy PunktFri / build-and-deploy (push) Failing after 5s
design: SUSE-inspireret redesign
- Farveskema: SUSE skovgrøn (#0C322C) + signaturgrøn (#30BA78)
- Typografi: Source Sans 3 + JetBrains Mono til tekniske elementer
- Installer-layout: venstre grønne border-accenter på sektionsoverskrifter
- Hero: venstre-alignet med grøn left-border på intro-tekst
- Lister: panel-stil med border-top accent (rød/grøn)
- Footer: mørk grøn (matcher header)
- Knap: SUSE grøn med mørk tekst
2026-04-26 22:34:11 +02:00

688 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:root {
--suse-dark: #0C322C;
--suse-mid: #1a4a3f;
--suse-green: #30BA78;
--suse-green-d: #22a065;
--suse-pale: #f2faf6;
--suse-light: #e4f5ec;
--suse-border: #c8e8d8;
--text: #1a2a24;
--text-mid: #3a5248;
--text-muted: #6b8880;
--border: #dde8e4;
--white: #ffffff;
--red: #c0392b;
--red-bg: #fdf2f1;
--red-border: #f5c4be;
--mono: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Source Sans 3', 'Segoe UI', system-ui, sans-serif;
color: var(--text);
line-height: 1.65;
background: var(--white);
font-size: 1rem;
}
/* ── Nav ─────────────────────────────── */
header {
background: var(--suse-dark);
padding: 0 1.5rem;
border-bottom: 2px solid var(--suse-green);
}
header nav {
max-width: 900px;
margin: 0 auto;
height: 54px;
display: flex;
align-items: center;
}
.logo {
color: var(--white);
font-weight: 700;
font-size: 1.15rem;
letter-spacing: 0.01em;
text-decoration: none;
font-family: 'Source Sans 3', sans-serif;
}
.logo span {
color: var(--suse-green);
}
/* ── Hero ────────────────────────────── */
.hero {
background: var(--suse-dark);
color: var(--white);
padding: 4.5rem 1.5rem 4rem;
text-align: left;
position: relative;
overflow: hidden;
}
.hero::after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 3px;
background: linear-gradient(90deg, var(--suse-green) 0%, transparent 60%);
}
.hero-inner {
max-width: 760px;
margin: 0 auto;
}
.hero h1 {
font-size: clamp(2.4rem, 6vw, 4rem);
font-weight: 700;
letter-spacing: -0.02em;
margin-bottom: 0.5rem;
line-height: 1.05;
color: var(--white);
}
.hero h1 .accent {
color: var(--suse-green);
}
.hero .tagline {
font-size: clamp(1rem, 2.2vw, 1.2rem);
color: #a8cfc0;
margin-bottom: 2rem;
font-weight: 400;
font-style: italic;
}
.hero .intro {
font-size: 1rem;
color: #c4ddd4;
line-height: 1.75;
max-width: 640px;
border-left: 3px solid var(--suse-green);
padding-left: 1rem;
}
/* ── Sections ────────────────────────── */
.section {
padding: 3rem 1.5rem;
border-bottom: 1px solid var(--border);
}
.section-inner {
max-width: 760px;
margin: 0 auto;
}
.section:nth-child(odd) {
background: var(--white);
}
.section:nth-child(even) {
background: var(--suse-pale);
}
.section h2 {
font-size: 1.35rem;
font-weight: 700;
margin-bottom: 1.25rem;
color: var(--suse-dark);
padding-left: 0.9rem;
border-left: 3px solid var(--suse-green);
line-height: 1.25;
display: flex;
align-items: center;
gap: 0.6rem;
flex-wrap: wrap;
}
.section p {
margin-bottom: 1rem;
font-size: 0.975rem;
color: var(--text-mid);
}
/* ── Problem list ────────────────────── */
.problem-list {
list-style: none;
margin: 1rem 0 0;
border: 1px solid var(--border);
border-radius: 4px;
overflow: hidden;
}
.problem-list li {
padding: 0.85rem 1rem 0.85rem 3rem;
position: relative;
border-bottom: 1px solid var(--border);
font-size: 0.95rem;
color: var(--text-mid);
background: var(--white);
}
.problem-list li:last-child {
border-bottom: none;
}
.problem-list li::before {
content: "✕";
position: absolute;
left: 1rem;
top: 50%;
transform: translateY(-50%);
color: var(--red);
font-size: 0.75rem;
font-family: var(--mono);
}
.problem-list li strong {
color: var(--text);
font-family: var(--mono);
font-size: 0.85rem;
font-weight: 500;
}
/* ── Target grid ─────────────────────── */
.target-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 1.25rem;
}
@media (max-width: 580px) {
.target-grid {
grid-template-columns: 1fr;
}
}
.target-box {
padding: 1.25rem;
border: 1px solid var(--border);
border-radius: 3px;
background: var(--white);
border-top: 3px solid transparent;
}
.target-box.not-for {
border-top-color: var(--red);
background: var(--red-bg);
border-color: var(--red-border);
border-top-color: var(--red);
}
.target-box.is-for {
border-top-color: var(--suse-green);
background: var(--suse-pale);
border-color: var(--suse-border);
border-top-color: var(--suse-green);
}
.target-box h3 {
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.1em;
margin-bottom: 0.85rem;
font-family: var(--mono);
}
.target-box.not-for h3 {
color: var(--red);
}
.target-box.is-for h3 {
color: var(--suse-green-d);
}
.target-box ul {
list-style: none;
}
.target-box ul li {
padding: 0.3rem 0 0.3rem 1.4rem;
font-size: 0.9rem;
color: var(--text-mid);
position: relative;
line-height: 1.45;
}
.target-box.not-for ul li::before {
content: "✕";
position: absolute;
left: 0;
color: var(--red);
font-size: 0.7rem;
font-family: var(--mono);
top: 0.4rem;
}
.target-box.is-for ul li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--suse-green-d);
font-size: 0.8rem;
font-family: var(--mono);
top: 0.3rem;
}
/* ── Idea list ───────────────────────── */
.idea-items {
list-style: none;
margin-top: 1rem;
border: 1px solid var(--suse-border);
border-radius: 3px;
overflow: hidden;
}
.idea-items li {
padding: 0.8rem 1rem 0.8rem 2.75rem;
position: relative;
border-bottom: 1px solid var(--suse-border);
font-size: 0.95rem;
color: var(--text-mid);
background: var(--white);
}
.idea-items li:last-child {
border-bottom: none;
}
.idea-items li::before {
content: "→";
position: absolute;
left: 1rem;
top: 50%;
transform: translateY(-50%);
color: var(--suse-green);
font-family: var(--mono);
font-size: 0.85rem;
}
.status-badge {
display: inline-block;
background: var(--suse-light);
color: var(--suse-mid);
border: 1px solid var(--suse-border);
border-radius: 3px;
padding: 0.1rem 0.5rem;
font-size: 0.65rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
font-family: var(--mono);
vertical-align: middle;
position: relative;
top: -1px;
}
/* ── Not-list ────────────────────────── */
.not-list {
list-style: none;
margin-top: 1rem;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0.5rem;
}
@media (max-width: 480px) {
.not-list {
grid-template-columns: 1fr;
}
}
.not-list li {
background: var(--white);
border: 1px solid var(--border);
border-radius: 3px;
padding: 0.6rem 0.9rem;
font-size: 0.875rem;
color: var(--text-muted);
display: flex;
align-items: center;
gap: 0.5rem;
font-family: var(--mono);
font-size: 0.82rem;
}
.not-list li::before {
content: "";
color: var(--text-muted);
font-size: 0.85rem;
flex-shrink: 0;
font-family: var(--mono);
}
/* ── Signup form ─────────────────────── */
.form-section {
background: var(--suse-dark) !important;
color: var(--white);
border-bottom: none;
}
.form-section h2 {
color: var(--white);
border-left-color: var(--suse-green);
}
.form-section .lead {
color: #a8cfc0 !important;
margin-bottom: 0.5rem;
font-size: 1rem !important;
}
.form-section .disclaimer {
color: #6b8880 !important;
font-size: 0.875rem !important;
margin-bottom: 1.75rem;
line-height: 1.6;
}
.signup-form {
margin-top: 1.25rem;
}
.form-group {
margin-bottom: 1.25rem;
}
.form-group label {
display: block;
font-size: 0.875rem;
font-weight: 600;
margin-bottom: 0.4rem;
color: #c4ddd4;
letter-spacing: 0.01em;
}
.form-group .hint {
display: block;
font-size: 0.78rem;
color: #5a7870;
font-weight: 400;
margin-top: 0.25rem;
font-family: var(--mono);
}
.form-group input[type="text"],
.form-group input[type="email"],
.form-group input[type="number"],
.form-group textarea {
width: 100%;
padding: 0.65rem 0.875rem;
background: var(--suse-mid);
border: 1px solid #2d6050;
border-radius: 3px;
color: #e8f5f0;
font-size: 0.975rem;
font-family: inherit;
transition: border-color 0.15s, background 0.15s;
}
.form-group input:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--suse-green);
background: #1f5545;
}
.form-group textarea {
min-height: 90px;
resize: vertical;
}
.radio-group {
display: flex;
gap: 1.5rem;
margin-top: 0.3rem;
}
.radio-group label {
display: flex;
align-items: center;
gap: 0.4rem;
font-weight: 400;
cursor: pointer;
color: #c4ddd4;
font-size: 0.975rem;
}
.radio-group input[type="radio"] {
width: 1rem;
height: 1rem;
accent-color: var(--suse-green);
flex-shrink: 0;
}
.error-msg {
background: #3d1010;
border: 1px solid #c0392b;
color: #f5c4be;
padding: 0.75rem 1rem;
border-radius: 3px;
margin-bottom: 1.25rem;
font-size: 0.9rem;
}
.submit-btn {
background: var(--suse-green);
color: var(--suse-dark);
border: none;
padding: 0.875rem 2rem;
font-size: 1rem;
font-weight: 700;
border-radius: 3px;
cursor: pointer;
width: 100%;
transition: background 0.15s;
font-family: inherit;
letter-spacing: 0.01em;
}
.submit-btn:hover {
background: var(--suse-green-d);
}
/* ── Footer ──────────────────────────── */
footer {
background: var(--suse-dark);
border-top: 1px solid var(--suse-mid);
padding: 2rem 1.5rem;
}
.footer-inner {
max-width: 760px;
margin: 0 auto;
text-align: center;
}
.footer-inner p {
font-size: 0.85rem;
color: #6b8880;
margin-bottom: 0.5rem;
}
.footer-inner strong {
color: #a8cfc0;
}
.footer-inner a {
color: var(--suse-green);
text-decoration: none;
}
.footer-inner a:hover {
text-decoration: underline;
}
.footer-small {
font-size: 0.75rem !important;
color: #3d5a52 !important;
margin-top: 0.25rem;
font-family: var(--mono);
}
/* ── Tak page ────────────────────────── */
.tak-section {
min-height: 65vh;
display: flex;
align-items: center;
justify-content: center;
padding: 3rem 1.5rem;
background: var(--suse-pale);
}
.tak-card {
max-width: 520px;
text-align: center;
background: var(--white);
border: 1px solid var(--suse-border);
border-top: 3px solid var(--suse-green);
border-radius: 3px;
padding: 2.5rem 2rem;
}
.tak-icon {
font-size: 2rem;
margin-bottom: 1rem;
color: var(--suse-green);
font-family: var(--mono);
font-weight: 500;
}
.tak-card h1 {
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 0.75rem;
color: var(--suse-dark);
}
.tak-card p {
color: var(--text-mid);
margin-bottom: 0.75rem;
font-size: 0.95rem;
}
.back-link {
display: inline-block;
margin-top: 1.25rem;
color: var(--suse-green-d);
text-decoration: none;
font-size: 0.9rem;
font-weight: 600;
font-family: var(--mono);
font-size: 0.85rem;
}
.back-link:hover {
text-decoration: underline;
}
/* ── Admin ───────────────────────────── */
.admin-section {
padding: 2rem 1.5rem;
max-width: 1100px;
margin: 0 auto;
}
.admin-section h1 {
font-size: 1.4rem;
font-weight: 700;
margin-bottom: 0.4rem;
color: var(--suse-dark);
}
.admin-meta {
color: var(--text-muted);
font-size: 0.875rem;
margin-bottom: 1.5rem;
font-family: var(--mono);
}
.table-wrapper {
overflow-x: auto;
}
.signups-table {
width: 100%;
border-collapse: collapse;
font-size: 0.85rem;
}
.signups-table th {
background: var(--suse-dark);
color: var(--suse-green);
padding: 0.6rem 0.75rem;
text-align: left;
font-weight: 600;
border-bottom: 2px solid var(--suse-green);
white-space: nowrap;
font-family: var(--mono);
font-size: 0.78rem;
letter-spacing: 0.05em;
text-transform: uppercase;
}
.signups-table td {
padding: 0.6rem 0.75rem;
border-bottom: 1px solid var(--border);
vertical-align: top;
color: var(--text-mid);
}
.signups-table tr:hover td {
background: var(--suse-pale);
}
.badge-ja {
background: var(--suse-light);
color: var(--suse-mid);
padding: 0.1rem 0.45rem;
border-radius: 2px;
font-size: 0.72rem;
font-weight: 700;
font-family: var(--mono);
text-transform: uppercase;
}
.badge-nej {
background: var(--red-bg);
color: var(--red);
padding: 0.1rem 0.45rem;
border-radius: 2px;
font-size: 0.72rem;
font-weight: 700;
font-family: var(--mono);
text-transform: uppercase;
}
.empty-state {
text-align: center;
padding: 3rem;
color: var(--text-muted);
font-family: var(--mono);
}
/* ── Mobile ──────────────────────────── */
@media (max-width: 640px) {
.hero {
padding: 3rem 1.25rem 2.75rem;
text-align: left;
}
.section {
padding: 2.25rem 1.25rem;
}
}