Files
PunktFri/static/style.css
Henrik Jess Nielsen 51a9e55cf8
Some checks failed
Build and Deploy PunktFri / build-and-deploy (push) Failing after 10s
design: IBM Carbon enterprise redesign
- Font: IBM Plex Sans + IBM Plex Mono (fra Google Fonts)
- Farver: IBM Blue #0043CE, IBM Dark #161616, neutrale grå
- Hero: lys grå baggrund, stort mørkt H1 — ikke dark panel
- Header: hvid med bottom border — ikke mørk grøn
- Signup-sektion: hvid baggrund, blå top-border
- Footer: lys grå — ikke mørk grøn
- Inputs: IBM Carbon bottom-border stil, ingen border-radius
- Knap: IBM Blue med hvid tekst
2026-04-26 22:39:45 +02:00

651 lines
13 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;
}
/* ── 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;
}
.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;
}
/* ── 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;
}
}