Files
PunktFri/static/style.css
Henrik Jess Nielsen ff33f622be
All checks were successful
Build and Deploy PunktFri / build-and-deploy (push) Successful in 47s
Add 'Forening vs. firma' section with structural comparison
Neutral, factual explanation of why a forening provides structural
guarantees an ApS cannot:
- Cannot be sold/acquired
- No profit motive — overskud stays in the org
- Transparent accounts
- Members, not customers — you own the collective
- Concluding note: ingen kan købe PunktFri og tjene penge på dine domæner

CSS: compare-grid with two-column layout, preferred column highlighted
in primary blue with checkmarks, non-preferred column with muted dashes.
2026-04-26 23:40:49 +02:00

1006 lines
20 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: #2563EB;
--primary-d: #1D4ED8;
--primary-bg: #EFF6FF;
--hero-bg: #0F172A;
--dark: #111827;
--text: #374151;
--muted: #9CA3AF;
--border: #E5E7EB;
--section-alt:#F9FAFB;
--white: #FFFFFF;
--red: #DC2626;
--red-bg: #FEF2F2;
--red-border: #FECACA;
--green: #16A34A;
--green-bg: #F0FDF4;
--green-bdr: #BBF7D0;
--mono: 'IBM Plex Mono', 'Fira Code', 'Consolas', monospace;
/* legacy aliases so tak/admin still work */
--gray-20: #E5E7EB;
--gray-10: #F9FAFB;
}
*, *::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: 0;
margin-top: 2rem;
border: 1px solid var(--border);
}
@media (max-width: 580px) {
.target-grid {
grid-template-columns: 1fr;
}
.target-box + .target-box {
border-left: none;
border-top: 1px solid var(--border);
}
}
.target-box {
padding: 1.75rem 2rem;
background: var(--white);
}
.target-box + .target-box {
border-left: 1px solid var(--border);
}
.target-box h3 {
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.12em;
margin-bottom: 1.25rem;
font-family: var(--mono);
color: var(--muted);
}
.target-box ul {
list-style: none;
}
.target-box ul li {
padding: 0.55rem 0 0.55rem 1.5rem;
font-size: 0.9rem;
color: var(--text);
position: relative;
line-height: 1.5;
border-bottom: 1px solid var(--border);
}
.target-box ul li:last-child {
border-bottom: none;
}
.target-box.is-for ul li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--primary);
font-weight: 600;
top: 0.55rem;
}
.target-box.not-for ul li::before {
content: "—";
position: absolute;
left: 0;
color: var(--muted);
top: 0.55rem;
}
/* ── 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;
}
}
/* ── Form helpers ──────────────────── */
.required {
color: var(--red);
}
.optional {
color: var(--muted);
font-weight: 400;
}
/* ── Timeline ─────────────────────── */
.timeline {
position: relative;
margin-top: 2rem;
padding-left: 2.5rem;
}
.timeline::before {
content: '';
position: absolute;
left: 6px;
top: 10px;
bottom: 10px;
width: 2px;
background: var(--border);
}
.timeline-item {
position: relative;
padding-bottom: 2.25rem;
}
.timeline-item:last-child {
padding-bottom: 0;
}
.timeline-marker {
position: absolute;
left: -2.5rem;
top: 4px;
width: 14px;
height: 14px;
border-radius: 50%;
border: 2px solid var(--border);
background: var(--white);
z-index: 1;
}
.timeline-marker.is-now {
background: var(--primary);
border-color: var(--primary);
}
.timeline-marker.is-soon {
background: var(--white);
border-color: var(--primary);
box-shadow: 0 0 0 4px var(--primary-bg);
}
.timeline-marker.is-future {
background: var(--white);
border-color: var(--border);
}
.timeline-date {
display: flex;
align-items: center;
gap: 0.5rem;
font-size: 0.72rem;
font-family: var(--mono);
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.08em;
margin-bottom: 0.3rem;
}
.timeline-badge {
display: inline-block;
font-size: 0.62rem;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--red);
background: var(--red-bg);
border: 1px solid var(--red-border);
padding: 0.05rem 0.4rem;
border-radius: 2px;
font-family: var(--mono);
}
.timeline-body h3 {
font-size: 1rem;
font-weight: 600;
color: var(--dark);
margin-bottom: 0.35rem;
}
.timeline-body p {
font-size: 0.9rem;
color: var(--text);
line-height: 1.65;
margin: 0;
max-width: 56ch;
}
/* ── FAQ ──────────────────────────── */
.faq {
margin-top: 1.5rem;
border: 1px solid var(--border);
}
.faq-item {
border-bottom: 1px solid var(--border);
}
.faq-item:last-child {
border-bottom: none;
}
.faq-item summary {
display: flex;
align-items: center;
justify-content: space-between;
padding: 1.1rem 1.5rem;
font-size: 0.95rem;
font-weight: 600;
color: var(--dark);
cursor: pointer;
list-style: none;
user-select: none;
}
.faq-item summary::-webkit-details-marker {
display: none;
}
.faq-item summary::after {
content: '+';
font-size: 1.2rem;
font-weight: 300;
color: var(--muted);
flex-shrink: 0;
margin-left: 1rem;
line-height: 1;
transition: transform 0.15s ease;
}
.faq-item[open] summary::after {
content: '';
}
.faq-item summary:hover {
background: var(--section-alt);
}
.faq-answer {
padding: 0 1.5rem 1.25rem;
border-top: 1px solid var(--border);
}
.faq-answer p {
margin: 0;
font-size: 0.9rem;
color: var(--text);
line-height: 1.7;
padding-top: 1rem;
}
/* ── Compare grid (forening vs. firma) ─────────────────────── */
.compare-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.5rem;
margin: 1.5rem 0;
}
@media (max-width: 640px) {
.compare-grid { grid-template-columns: 1fr; }
}
.compare-col {
border: 1px solid var(--border);
border-radius: 6px;
padding: 1.25rem 1.5rem;
}
.compare-col h3 {
font-size: 0.85rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--muted);
margin: 0 0 1rem 0;
display: flex;
align-items: center;
gap: 0.5rem;
flex-wrap: wrap;
}
.compare-col.is-preferred {
border-color: var(--primary);
background: var(--primary-bg);
}
.compare-col.is-preferred h3 {
color: var(--primary);
}
.preferred-badge {
font-size: 0.7rem;
font-weight: 600;
background: var(--primary);
color: #fff;
padding: 0.15rem 0.5rem;
border-radius: 3px;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.compare-col ul {
list-style: none;
padding: 0;
margin: 0;
}
.compare-col ul li {
padding: 0.5rem 0;
font-size: 0.88rem;
line-height: 1.55;
border-bottom: 1px solid var(--border);
color: var(--text);
}
.compare-col ul li:last-child { border-bottom: none; }
.compare-col:not(.is-preferred) ul li::before {
content: '';
color: var(--muted);
margin-right: 0.5rem;
}
.compare-col.is-preferred ul li::before {
content: '✓';
color: var(--primary);
margin-right: 0.5rem;
font-weight: 700;
}