Files
PunktFri/static/style.css
Henrik Jess Nielsen 7a42b8bfa3
All checks were successful
Build and Deploy PunktFri / build-and-deploy (push) Successful in 49s
Improve landing page: hero CTA, founding member note, share box on tak
- Add hero CTA button linking directly to signup form (#tilmeld anchor)
- Add id='tilmeld' anchor to signup section
- Add founding-note: early signups shape the initiative
- Improve /tak page: share box with pre-written copy-paste text + clipboard button
- Update tak contact link styling (remove inline styles)
- Add CSS for .hero-cta, .founding-note, .share-box, .copy-btn, .copy-confirm
2026-04-26 23:12:10 +02:00

758 lines
15 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 {
--primary: #0043CE;
--primary-d: #002D9C;
--primary-bg: #EEF4FF;
--dark: #161616;
--text: #525252;
--muted: #8D8D8D;
--gray-20: #E0E0E0;
--gray-10: #F4F4F4;
--white: #FFFFFF;
--red: #DA1E28;
--red-bg: #FFF1F1;
--red-border: #FFB3B8;
--green: #198038;
--green-bg: #DEFBE6;
--green-bdr: #A7F0BA;
--mono: 'IBM Plex Mono', 'Fira Code', 'Consolas', monospace;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'IBM Plex Sans', 'Segoe UI', system-ui, sans-serif;
color: var(--text);
line-height: 1.65;
background: var(--white);
font-size: 1rem;
}
/* ── Header ─────────────────────────── */
header {
background: var(--white);
border-bottom: 1px solid var(--gray-20);
padding: 0 1.5rem;
position: sticky;
top: 0;
z-index: 100;
}
header nav {
max-width: 860px;
margin: 0 auto;
height: 56px;
display: flex;
align-items: center;
}
.logo {
color: var(--dark);
font-weight: 700;
font-size: 1.1rem;
letter-spacing: -0.01em;
text-decoration: none;
font-family: 'IBM Plex Sans', sans-serif;
}
.logo span {
color: var(--primary);
}
/* ── Hero ────────────────────────────── */
.hero {
background: var(--gray-10);
border-bottom: 1px solid var(--gray-20);
padding: 5rem 1.5rem 4.5rem;
}
.hero-inner {
max-width: 860px;
margin: 0 auto;
}
.hero h1 {
font-size: clamp(2.75rem, 7vw, 4.5rem);
font-weight: 700;
letter-spacing: -0.03em;
margin-bottom: 0.75rem;
line-height: 1.0;
color: var(--dark);
}
.hero h1 .accent {
color: var(--primary);
}
.hero .tagline {
font-size: clamp(1rem, 2.2vw, 1.2rem);
color: var(--text);
margin-bottom: 2rem;
font-weight: 400;
}
.hero .intro {
font-size: 1.05rem;
color: var(--text);
line-height: 1.75;
max-width: 640px;
border-left: 3px solid var(--primary);
padding-left: 1rem;
}
.hero-cta {
display: inline-block;
margin-top: 2rem;
padding: 0.875rem 2rem;
background: var(--primary);
color: var(--white);
text-decoration: none;
font-weight: 600;
font-size: 0.975rem;
border-radius: 0;
transition: background 0.15s;
letter-spacing: 0.01em;
}
.hero-cta:hover {
background: var(--primary-d);
}
/* ── Sections ────────────────────────── */
.section {
padding: 3.5rem 1.5rem;
border-bottom: 1px solid var(--gray-20);
}
.section-inner {
max-width: 860px;
margin: 0 auto;
}
.section:nth-child(odd) {
background: var(--white);
}
.section:nth-child(even) {
background: var(--gray-10);
}
.section h2 {
font-size: 1.5rem;
font-weight: 700;
margin-bottom: 1.25rem;
color: var(--dark);
line-height: 1.2;
letter-spacing: -0.01em;
display: flex;
align-items: center;
gap: 0.75rem;
flex-wrap: wrap;
}
.section p {
margin-bottom: 1rem;
font-size: 0.975rem;
color: var(--text);
}
/* ── Problem list ────────────────────── */
.problem-list {
list-style: none;
margin: 1.25rem 0 0;
border: 1px solid var(--gray-20);
background: var(--white);
}
.problem-list li {
padding: 1rem 1rem 1rem 3.25rem;
position: relative;
border-bottom: 1px solid var(--gray-20);
font-size: 0.95rem;
color: var(--text);
}
.problem-list li:last-child {
border-bottom: none;
}
.problem-list li::before {
content: "—";
position: absolute;
left: 1rem;
top: 1rem;
color: var(--red);
font-family: var(--mono);
font-weight: 500;
}
.problem-list li strong {
color: var(--dark);
font-family: var(--mono);
font-size: 0.82rem;
font-weight: 500;
display: block;
margin-bottom: 0.2rem;
}
/* ── Target grid ─────────────────────── */
.target-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.5rem;
margin-top: 1.5rem;
}
@media (max-width: 580px) {
.target-grid { grid-template-columns: 1fr; }
}
.target-box {
padding: 1.5rem;
border: 1px solid var(--gray-20);
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(--green);
background: var(--green-bg);
border-color: var(--green-bdr);
border-top-color: var(--green);
}
.target-box h3 {
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.12em;
margin-bottom: 1rem;
font-family: var(--mono);
}
.target-box.not-for h3 { color: var(--red); }
.target-box.is-for h3 { color: var(--green); }
.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);
position: relative;
line-height: 1.5;
}
.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.42rem;
}
.target-box.is-for ul li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--green);
font-size: 0.8rem;
font-family: var(--mono);
top: 0.35rem;
}
/* ── Idea list ───────────────────────── */
.idea-items {
list-style: none;
margin-top: 1.25rem;
border: 1px solid var(--gray-20);
background: var(--white);
}
.idea-items li {
padding: 0.9rem 1rem 0.9rem 2.75rem;
position: relative;
border-bottom: 1px solid var(--gray-20);
font-size: 0.95rem;
color: var(--text);
}
.idea-items li:last-child {
border-bottom: none;
}
.idea-items li::before {
content: "→";
position: absolute;
left: 1rem;
top: 0.9rem;
color: var(--primary);
font-family: var(--mono);
font-size: 0.85rem;
}
.status-badge {
display: inline-block;
background: var(--primary-bg);
color: var(--primary);
border: 1px solid #B0C9FF;
padding: 0.15rem 0.55rem;
font-size: 0.65rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
font-family: var(--mono);
vertical-align: middle;
position: relative;
top: -2px;
}
/* ── Not-list ────────────────────────── */
.not-list {
list-style: none;
margin-top: 1.25rem;
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(--gray-20);
padding: 0.65rem 1rem;
color: var(--muted);
display: flex;
align-items: center;
gap: 0.6rem;
font-family: var(--mono);
font-size: 0.82rem;
}
.not-list li::before {
content: "";
color: var(--muted);
flex-shrink: 0;
}
/* ── Signup form ─────────────────────── */
.form-section {
background: var(--white) !important;
border-top: 2px solid var(--primary);
}
.form-section .lead {
color: var(--dark) !important;
margin-bottom: 0.5rem;
font-size: 1.05rem !important;
font-weight: 600;
}
.form-section .disclaimer {
color: var(--muted) !important;
font-size: 0.875rem !important;
margin-bottom: 2rem;
line-height: 1.6;
border-left: 3px solid var(--gray-20);
padding-left: 1rem;
}
.form-section .founding-note {
color: var(--dark) !important;
font-size: 0.9rem !important;
margin-bottom: 1rem;
background: var(--primary-bg);
border-left: 3px solid var(--primary);
padding: 0.75rem 1rem;
line-height: 1.6;
}
.signup-form {
margin-top: 1.5rem;
}
.form-group {
margin-bottom: 1.5rem;
}
.form-group label {
display: block;
font-size: 0.875rem;
font-weight: 600;
margin-bottom: 0.4rem;
color: var(--dark);
}
.form-group .hint {
display: block;
font-size: 0.78rem;
color: var(--muted);
font-weight: 400;
margin-top: 0.3rem;
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.625rem 0.875rem;
background: var(--white);
border: 1px solid var(--gray-20);
border-bottom: 2px solid var(--muted);
border-radius: 0;
color: var(--dark);
font-size: 0.975rem;
font-family: inherit;
transition: border-color 0.15s;
}
.form-group input:focus,
.form-group textarea:focus {
outline: none;
border-color: var(--primary);
border-bottom-color: var(--primary);
}
.form-group textarea {
min-height: 100px;
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: var(--text);
font-size: 0.975rem;
}
.radio-group input[type="radio"] {
width: 1rem;
height: 1rem;
accent-color: var(--primary);
flex-shrink: 0;
}
.error-msg {
background: var(--red-bg);
border: 1px solid var(--red-border);
border-left: 3px solid var(--red);
color: var(--red);
padding: 0.875rem 1rem;
margin-bottom: 1.5rem;
font-size: 0.9rem;
}
.submit-btn {
background: var(--primary);
color: var(--white);
border: none;
padding: 0.875rem 2rem;
font-size: 0.975rem;
font-weight: 600;
border-radius: 0;
cursor: pointer;
width: 100%;
transition: background 0.15s;
font-family: inherit;
letter-spacing: 0.01em;
}
.submit-btn:hover {
background: var(--primary-d);
}
/* ── Footer ──────────────────────────── */
footer {
background: var(--gray-10);
border-top: 1px solid var(--gray-20);
padding: 2.5rem 1.5rem;
}
.footer-inner {
max-width: 860px;
margin: 0 auto;
text-align: center;
}
.footer-inner p {
font-size: 0.875rem;
color: var(--muted);
margin-bottom: 0.5rem;
}
.footer-inner strong {
color: var(--dark);
}
.footer-inner a {
color: var(--primary);
text-decoration: none;
}
.footer-inner a:hover {
text-decoration: underline;
}
.footer-small {
font-size: 0.75rem !important;
color: var(--gray-20) !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(--gray-10);
}
.tak-card {
max-width: 520px;
text-align: center;
background: var(--white);
border: 1px solid var(--gray-20);
border-top: 3px solid var(--primary);
padding: 3rem 2.5rem;
}
.tak-icon {
font-size: 2rem;
margin-bottom: 1rem;
color: var(--primary);
font-family: var(--mono);
font-weight: 500;
}
.tak-card h1 {
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 0.75rem;
color: var(--dark);
}
.tak-card p {
color: var(--text);
margin-bottom: 0.75rem;
font-size: 0.975rem;
}
.back-link {
display: inline-block;
margin-top: 1.25rem;
color: var(--primary);
text-decoration: none;
font-weight: 600;
font-family: var(--mono);
font-size: 0.85rem;
}
.back-link:hover {
text-decoration: underline;
}
.tak-contact {
font-size: 0.82rem;
color: var(--muted);
margin-top: 1.25rem;
margin-bottom: 0;
}
.tak-contact a {
color: var(--primary);
text-decoration: none;
}
.tak-contact a:hover {
text-decoration: underline;
}
/* ── Share box (tak page) ────────────── */
.share-box {
margin: 2rem 0 1.5rem;
background: var(--gray-10);
border: 1px solid var(--gray-20);
padding: 1.5rem;
text-align: left;
}
.share-heading {
font-size: 0.9rem !important;
font-weight: 700;
color: var(--dark) !important;
margin-bottom: 0.4rem !important;
}
.share-sub {
font-size: 0.82rem !important;
color: var(--muted) !important;
margin-bottom: 1rem !important;
line-height: 1.55;
}
.share-text {
background: var(--white);
border: 1px solid var(--gray-20);
padding: 0.875rem 1rem;
font-size: 0.82rem;
color: var(--text);
line-height: 1.55;
font-family: var(--mono);
margin-bottom: 0.75rem;
word-break: break-word;
user-select: all;
cursor: text;
}
.copy-btn {
background: var(--dark);
color: var(--white);
border: none;
padding: 0.5rem 1.25rem;
font-size: 0.82rem;
font-weight: 600;
border-radius: 0;
cursor: pointer;
font-family: inherit;
transition: background 0.15s;
}
.copy-btn:hover {
background: #333;
}
.copy-confirm {
display: none;
margin-left: 0.75rem;
font-size: 0.82rem;
color: var(--green);
font-family: var(--mono);
font-weight: 500;
}
/* ── Admin ───────────────────────────── */
.admin-section {
padding: 2rem 1.5rem;
max-width: 1100px;
margin: 0 auto;
}
.admin-section h1 {
font-size: 1.5rem;
font-weight: 700;
margin-bottom: 0.4rem;
color: var(--dark);
}
.admin-meta {
color: var(--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.875rem;
}
.signups-table th {
background: var(--dark);
color: var(--white);
padding: 0.75rem 0.875rem;
text-align: left;
font-weight: 600;
border-bottom: 2px solid var(--primary);
white-space: nowrap;
font-family: var(--mono);
font-size: 0.75rem;
letter-spacing: 0.06em;
text-transform: uppercase;
}
.signups-table td {
padding: 0.75rem 0.875rem;
border-bottom: 1px solid var(--gray-20);
vertical-align: top;
color: var(--text);
}
.signups-table tr:hover td {
background: var(--gray-10);
}
.badge-ja {
background: var(--green-bg);
color: var(--green);
padding: 0.15rem 0.5rem;
font-size: 0.7rem;
font-weight: 600;
font-family: var(--mono);
text-transform: uppercase;
border: 1px solid var(--green-bdr);
}
.badge-nej {
background: var(--red-bg);
color: var(--red);
padding: 0.15rem 0.5rem;
font-size: 0.7rem;
font-weight: 600;
font-family: var(--mono);
text-transform: uppercase;
border: 1px solid var(--red-border);
}
.empty-state {
text-align: center;
padding: 3rem;
color: var(--muted);
font-family: var(--mono);
}
/* ── Mobile ──────────────────────────── */
@media (max-width: 640px) {
.hero {
padding: 3.5rem 1.25rem 3rem;
}
.section {
padding: 2.5rem 1.25rem;
}
}