gwoe-antragspruefer/app/static/v2/v2.css
Dotty Dotter eb0669d6ac feat(#147): Hover-Tooltips fuer Abkuerzungen auf Antrag-Detail
User-Feedback: '(A)' hinter Partei, 'WP', 'PP' brauchen Erklaerung
fuer Erstleser:innen. Loesung: ausfuehrliche title-Tooltips plus
visuelle Affordanz (cursor:help).

Geaendert:
- v2-badge-antragsteller / -regierung: cursor:help
- v2-score-chip[title]: cursor:help
- (A) → 'A — Antragstellende Fraktion: hat den Antrag eingereicht.'
- (R) → 'R — Regierungsfraktion: traegt die aktuelle Mehrheit im Landtag.'
- WP-Chip: 'WP — Wahlprogramm-Treue (0–10): wie gut passt der Antrag
  zum aktuellen Wahlprogramm? + Begruendung'
- PP-Chip: analog fuer Parteiprogramm-Treue
- Score-Hero: Tooltip mit GWÖ-Score-Definition + Methodik-Verweis
- 'Enth.:' im Abstimmungs-Block: dotted underline + Tooltip 'Enth. —
  Enthaltung: weder Zustimmung noch Ablehnung'

Closes #147
2026-04-28 08:46:27 +02:00

1078 lines
24 KiB
CSS
Raw Permalink 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.

/*
* v2.css — Base-Styles für GWÖ-Antragsprüfer v2
* Alle Regeln leben unter dem Scope "body.v2" und kollidieren nicht
* mit dem bestehenden v1-Frontend.
*
* Abhängigkeiten: tokens.css (zuerst laden), fonts.css
*/
/* ── Phosphor Icons ─────────────────────────────────────────────── */
.v2-icon {
display: inline-flex;
flex-shrink: 0;
vertical-align: middle;
}
.v2-icon svg {
display: block;
width: 100%;
height: 100%;
fill: currentColor;
}
/* ── Reset & Box Model ──────────────────────────────────────────── */
body.v2 *, body.v2 *::before, body.v2 *::after {
box-sizing: border-box;
}
body.v2 {
margin: 0;
padding: 0;
font-family: var(--font-sans);
font-size: 15px;
line-height: 1.55;
color: var(--ecg-dark);
background: var(--paper);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
body.v2 a {
color: var(--ecg-blue);
text-decoration: none;
border-bottom: 1px solid rgba(0, 157, 165, 0.35);
}
body.v2 a:hover {
border-bottom-color: var(--ecg-blue);
}
body.v2 :focus-visible {
outline: 2px solid var(--ecg-blue);
outline-offset: 2px;
}
/* ── App-Shell Layout ───────────────────────────────────────────── */
.v2-shell {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: var(--sidebar-width) 1fr;
grid-template-areas:
"sidebar topbar"
"sidebar main"
"sidebar footer";
min-height: 100vh;
}
.v2-topbar {
grid-area: topbar;
background: var(--paper);
border-bottom: 1px solid var(--hairline);
padding: 0 24px;
height: 32px; /* harte Höhe statt min-height */
display: flex;
align-items: center;
gap: var(--space-4);
font-family: var(--font-mono);
font-size: 11px;
line-height: 1;
color: var(--ecg-dark);
}
.v2-topbar > * {
height: auto;
max-height: 24px; /* nichts darin höher als 24 px */
}
.v2-topbar select,
.v2-topbar button,
.v2-topbar a {
padding: 2px 6px;
margin: 0;
line-height: 1;
height: 22px;
display: inline-flex;
align-items: center;
}
.v2-topbar .v2-icon { width: 12px !important; height: 12px !important; }
.v2-topbar .v2-icon svg { width: 12px; height: 12px; }
.v2-topbar-spacer {
flex: 1;
}
.v2-topbar a {
color: var(--ecg-dark);
border-bottom: none;
opacity: 0.75;
letter-spacing: 0.06em;
text-transform: uppercase;
display: inline-flex;
align-items: center;
gap: 4px;
}
.v2-topbar a:hover {
opacity: 1;
color: var(--ecg-blue);
border-bottom: none;
}
.v2-topbar .v2-beta-link {
color: var(--ecg-green);
font-weight: 700;
opacity: 1;
border-bottom: 1px solid var(--ecg-green);
}
/* ── Sidebar ────────────────────────────────────────────────────── */
.v2-sidebar {
grid-area: sidebar;
width: var(--sidebar-width);
background: var(--paper);
border-right: 1px solid var(--hairline);
padding: 22px 18px;
overflow-y: auto;
position: sticky;
top: 0;
height: 100vh;
}
.v2-brand {
font-family: var(--font-sans);
font-weight: 900;
font-size: 18px;
text-transform: uppercase;
color: var(--ecg-dark);
letter-spacing: 0;
line-height: 1.05;
}
.v2-brand .grn { color: var(--ecg-green); }
.v2-brand .blu { color: var(--ecg-blue); }
.v2-brand-sub {
font-family: var(--font-mono);
font-size: 10px;
color: var(--ecg-dark);
letter-spacing: 0.1em;
text-transform: uppercase;
margin: 6px 0 26px;
opacity: 0.7;
}
.v2-nav-group {
margin-bottom: 20px;
}
.v2-nav-label {
font-family: var(--font-sans);
font-weight: 900;
font-size: 10px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--ecg-green);
margin-bottom: 6px;
padding: 0 4px;
}
.v2-nav-item {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
padding: 7px 10px;
color: var(--ecg-dark);
font-size: 13px;
font-weight: 400;
position: relative;
cursor: pointer;
text-decoration: none;
border-bottom: none;
}
.v2-nav-item:hover {
background: var(--surface);
border-bottom: none;
}
.v2-nav-item.active {
background: var(--ecg-blue);
color: #fff;
font-weight: 900;
}
.v2-nav-item.active:hover {
background: var(--ecg-blue);
}
.v2-nav-count {
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-light);
}
.v2-nav-item.active .v2-nav-count {
color: #fff;
opacity: 0.85;
}
/* ── Main Content ───────────────────────────────────────────────── */
.v2-main {
grid-area: main;
padding: 24px 28px;
background: var(--paper);
min-width: 0;
}
/* ── Footer ─────────────────────────────────────────────────────── */
.v2-footer {
grid-area: footer;
padding: 18px 24px;
border-top: 1px solid var(--hairline);
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-dark);
letter-spacing: 0.04em;
display: flex;
gap: 20px;
flex-wrap: wrap;
opacity: 0.75;
background: var(--paper);
}
.v2-footer a {
color: var(--ecg-dark);
border-bottom: none;
opacity: 0.75;
}
.v2-footer a:hover {
opacity: 1;
color: var(--ecg-blue);
border-bottom: none;
}
/* ── Typografie-Skala (Manual) ──────────────────────────────────── */
body.v2 .v2-title {
font-family: var(--font-sans);
font-weight: 900;
font-size: 52px;
line-height: 1.02;
letter-spacing: -0.005em;
text-transform: uppercase;
color: var(--ecg-dark);
margin: 0;
}
body.v2 .v2-overtitle {
font-family: var(--font-sans);
font-weight: 300;
font-size: 22px;
text-transform: uppercase;
color: var(--ecg-dark);
letter-spacing: 0.01em;
margin: 4px 0 0;
}
body.v2 h1, body.v2 .v2-h1 {
font-family: var(--font-sans);
font-weight: 900;
font-size: 26px;
line-height: 1.2;
margin: 0 0 8px;
text-transform: uppercase;
color: var(--ecg-dark);
letter-spacing: 0.005em;
}
body.v2 h2, body.v2 .v2-h2 {
font-family: var(--font-sans);
font-weight: 900;
font-size: 18px;
line-height: 1.25;
margin: 0 0 8px;
color: var(--ecg-dark);
}
body.v2 h3, body.v2 .v2-h3 {
font-family: var(--font-sans);
font-weight: 900;
font-size: 13px;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--ecg-dark);
margin: 0 0 6px;
}
body.v2 p {
margin: 0 0 14px;
max-width: 72ch;
text-wrap: pretty;
}
body.v2 strong, body.v2 b {
font-weight: 900;
color: var(--ecg-dark);
}
/* ── Toolbar / Filter-Row ───────────────────────────────────────── */
.v2-toolbar {
display: flex;
gap: 8px;
align-items: center;
padding-bottom: 14px;
border-bottom: 1px solid var(--hairline);
margin-bottom: 14px;
flex-wrap: wrap;
position: sticky;
top: 0;
background: var(--paper);
z-index: 10;
}
.v2-toolbar-sep { flex: 1; }
.v2-search {
flex: 1;
min-width: 180px;
border: 1px solid var(--hairline);
padding: 8px 12px;
font-size: 13px;
color: var(--ecg-dark);
font-family: var(--font-sans);
background: var(--paper);
outline: none;
}
.v2-search:focus {
border-color: var(--ecg-blue);
}
/* ── Chip ───────────────────────────────────────────────────────── */
.v2-chip {
border: 1px solid var(--hairline);
background: var(--paper);
padding: 5px 11px;
font-size: 12px;
color: var(--ecg-dark);
font-family: var(--font-sans);
font-weight: 400;
cursor: pointer;
white-space: nowrap;
display: inline-block;
}
.v2-chip:hover {
border-color: var(--ecg-light);
background: var(--surface);
}
.v2-chip.active,
.v2-chip[data-active="true"] {
background: var(--ecg-dark);
color: #fff;
border-color: var(--ecg-dark);
font-weight: 900;
}
.v2-chip.green.active,
.v2-chip.green[data-active="true"] {
background: var(--ecg-green);
border-color: var(--ecg-green);
color: #fff;
}
.v2-chip.dark.active,
.v2-chip.dark[data-active="true"] {
background: var(--ecg-dark);
border-color: var(--ecg-dark);
color: #fff;
}
/* ── Result Row ─────────────────────────────────────────────────── */
.v2-result-row {
display: grid;
grid-template-columns: 72px 1fr 140px 90px;
gap: 18px;
padding: 14px 4px;
border-bottom: 1px solid var(--hairline);
align-items: center;
cursor: pointer;
text-decoration: none;
color: inherit;
}
.v2-result-row:hover {
background: var(--surface);
}
.v2-score-cell {
font-family: var(--font-sans);
font-weight: 900;
font-size: 22px;
text-align: center;
padding: 8px 0;
line-height: 1;
letter-spacing: -0.02em;
}
.v2-score-cell small {
display: block;
font-family: var(--font-mono);
font-size: 9px;
letter-spacing: 0.12em;
text-transform: uppercase;
font-weight: 500;
margin-top: 3px;
opacity: 0.75;
}
.v2-score-cell.s-high { background: var(--score-high-bg); color: var(--score-high-fg); }
.v2-score-cell.s-mid { background: var(--score-mid-bg); color: var(--score-mid-fg); }
.v2-score-cell.s-low { background: var(--score-low-bg); color: var(--score-low-fg); }
.v2-r-title {
font-family: var(--font-sans);
font-weight: 900;
font-size: 14.5px;
line-height: 1.3;
color: var(--ecg-dark);
}
.v2-r-sub {
font-family: var(--font-sans);
font-size: 12px;
color: var(--ecg-dark);
margin-top: 4px;
opacity: 0.85;
}
.v2-party-chip {
display: inline-block;
font-family: var(--font-mono);
font-size: 10px;
padding: 2px 6px;
border: 1px solid var(--hairline);
margin-right: 4px;
color: var(--ecg-dark);
letter-spacing: 0.04em;
}
.v2-r-state {
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-dark);
opacity: 0.8;
}
.v2-r-date {
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-dark);
text-align: right;
opacity: 0.75;
}
/* ── Kasten (4 Varianten aus Manual Seite 13) ───────────────────── */
.v2-kasten {
padding: 18px 22px;
margin: 14px 0;
}
.v2-kasten.solid-green { background: var(--ecg-green); color: #fff; }
.v2-kasten.solid-blue { background: var(--ecg-blue); color: #fff; }
.v2-kasten.outline-green { border: 2px solid var(--ecg-green); color: var(--ecg-green); }
.v2-kasten.outline-blue { border: 2px solid var(--ecg-blue); color: var(--ecg-blue); }
.v2-kasten h4 { color: inherit; margin: 0 0 6px; }
.v2-kasten p { color: inherit; margin: 0; max-width: none; }
/* ── Score Hero ─────────────────────────────────────────────────── */
.v2-score-hero {
display: flex;
align-items: baseline;
gap: 22px;
padding: 20px 0 22px;
border-top: 2px solid var(--ecg-green);
border-bottom: 1px solid var(--hairline);
margin: 4px 0 22px;
}
.v2-score-hero.low {
border-top-color: var(--redline-contra);
}
.v2-score-hero .big-num {
font-family: var(--font-sans);
font-weight: 900;
font-size: 68px;
line-height: 0.9;
color: var(--ecg-green);
letter-spacing: -0.02em;
}
.v2-score-hero.low .big-num {
color: var(--redline-contra);
}
.v2-score-hero .slash {
color: var(--ecg-light);
font-weight: 300;
}
.v2-score-hero .verdict {
font-family: var(--font-sans);
font-size: 15px;
color: var(--ecg-dark);
max-width: 28ch;
line-height: 1.4;
}
.v2-score-hero .verdict b {
color: var(--ecg-green);
font-weight: 900;
text-transform: uppercase;
letter-spacing: 0.02em;
display: block;
font-size: 12px;
margin-bottom: 3px;
}
.v2-score-hero.low .verdict b {
color: var(--redline-contra);
}
/* ── Matrix Mini (5×5) ──────────────────────────────────────────── */
.v2-matrix-mini {
display: grid;
grid-template-columns: 130px repeat(5, 1fr);
gap: 0;
border: 1px solid var(--hairline);
font-size: 11px;
margin: 8px 0 4px;
}
.v2-matrix-mini > div {
padding: 6px 8px;
border-right: 1px solid var(--hairline);
border-bottom: 1px solid var(--hairline);
font-family: var(--font-mono);
text-align: center;
min-height: 36px;
display: flex;
align-items: center;
justify-content: center;
font-size: 11px;
}
.v2-matrix-mini > div:nth-child(6n) { border-right: 0; }
.v2-matrix-mini > div:nth-last-child(-n+6) { border-bottom: 0; }
.v2-matrix-mini .hdr { background: var(--ecg-blue); color: #fff; font-size: 10px; letter-spacing: 0.03em; font-weight: 700; line-height: 1.25; cursor: help; padding: 4px 4px; }
.v2-matrix-mini .rhdr { background: var(--surface); text-align: left; justify-content: flex-start; padding-left: 10px; color: var(--ecg-dark); font-weight: 700; font-family: var(--font-sans); font-size: 10px; letter-spacing: 0.02em; line-height: 1.25; cursor: help; }
.v2-matrix-mini .m-pp { background: var(--ecg-green); color: #fff; font-weight: 700; }
.v2-matrix-mini .m-p { background: var(--redline-ins-bg); color: var(--ecg-dark); }
.v2-matrix-mini .m-0 { background: var(--paper); color: var(--ecg-light); }
.v2-matrix-mini .m-n { background: var(--redline-del-bg); color: var(--ecg-dark); }
.v2-matrix-mini .m-nn { background: var(--redline-contra); color: #fff; font-weight: 700; }
.v2-matrix-legend {
font-family: var(--font-mono);
font-size: 10px;
color: var(--ecg-dark);
margin: 6px 0 0;
display: flex;
gap: 14px;
opacity: 0.85;
flex-wrap: wrap;
}
/* ── Quote Card ─────────────────────────────────────────────────── */
.v2-quote {
border-left: 3px solid var(--ecg-blue);
padding: 12px 16px;
background: var(--paper);
font-family: var(--font-sans);
font-weight: 400;
font-size: 14px;
color: var(--ecg-dark);
margin: 10px 0;
line-height: 1.5;
}
.v2-quote.contra {
border-left-color: var(--redline-contra);
}
.v2-quote .q-body {
font-style: italic;
}
.v2-quote cite {
display: block;
font-family: var(--font-mono);
font-size: 10px;
font-style: normal;
color: var(--ecg-dark);
margin-top: 8px;
letter-spacing: 0.06em;
text-transform: uppercase;
opacity: 0.85;
}
.v2-quote .verified {
display: inline-block;
color: var(--ecg-green);
font-weight: 700;
margin-right: 8px;
}
.v2-quote.contra .verified {
color: var(--redline-contra);
}
/* ── Redline ────────────────────────────────────────────────────── */
.v2-redline {
font-family: var(--font-mono);
font-size: 12.5px;
background: var(--surface);
padding: 12px 14px;
line-height: 1.6;
border-left: 3px solid var(--ecg-green);
color: var(--ecg-dark);
margin: 8px 0;
}
.v2-redline .del {
background: var(--redline-del-bg);
text-decoration: line-through;
padding: 0 2px;
}
.v2-redline .ins {
background: var(--redline-ins-bg);
padding: 0 2px;
}
/* ── Detail Split Layout ────────────────────────────────────────── */
.v2-detail {
display: grid;
grid-template-columns: 1.25fr 1fr;
gap: 0;
background: var(--paper);
}
.v2-detail .left {
padding: 30px 34px 30px 0;
border-right: 1px solid var(--hairline);
min-width: 0;
}
.v2-detail .right {
padding: 30px 0 30px 34px;
background: var(--surface);
min-width: 0;
}
.v2-antrag-id {
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-dark);
letter-spacing: 0.08em;
text-transform: uppercase;
opacity: 0.85;
margin-bottom: 6px;
}
.v2-big-title {
font-family: var(--font-sans);
font-weight: 900;
font-size: 24px;
line-height: 1.2;
margin: 6px 0 8px;
color: var(--ecg-dark);
text-transform: uppercase;
letter-spacing: 0.005em;
}
.v2-byline {
font-family: var(--font-sans);
font-size: 12px;
color: var(--ecg-dark);
margin-bottom: 20px;
opacity: 0.85;
}
/* ── Skeleton Loading ───────────────────────────────────────────── */
@keyframes v2-shimmer {
0% { background-position: -400px 0; }
100% { background-position: 400px 0; }
}
.v2-skeleton {
background: linear-gradient(
90deg,
var(--surface) 25%,
var(--hairline) 50%,
var(--surface) 75%
);
background-size: 800px 100%;
animation: v2-shimmer 1.4s ease-in-out infinite;
border-radius: 2px;
display: inline-block;
}
.v2-skeleton-row {
display: grid;
grid-template-columns: 72px 1fr 140px 90px;
gap: 18px;
padding: 14px 4px;
border-bottom: 1px solid var(--hairline);
align-items: center;
}
/* ── Manual-Aufzählung ──────────────────────────────────────────── */
body.v2 ul.v2-manual {
list-style: none;
padding: 0;
margin: 10px 0 16px;
}
body.v2 ul.v2-manual > li {
position: relative;
padding: 5px 0 5px 24px;
line-height: 1.5;
}
body.v2 ul.v2-manual > li::before {
content: "";
position: absolute;
left: 4px;
top: 13px;
width: 9px;
height: 9px;
background: var(--ecg-blue);
}
body.v2 ul.v2-manual > li.green::before {
background: var(--ecg-green);
}
body.v2 ul.v2-manual ul {
list-style: none;
padding: 0;
margin: 4px 0 4px 4px;
}
body.v2 ul.v2-manual ul li {
position: relative;
padding: 3px 0 3px 22px;
font-size: 14px;
}
body.v2 ul.v2-manual ul li::before {
content: "";
position: absolute;
left: 4px;
top: 3px;
color: var(--ecg-blue);
font-weight: 900;
}
/* ── Responsive: Mobile Drawer ──────────────────────────────────── */
@media (max-width: 900px) {
.v2-shell {
grid-template-columns: 1fr;
grid-template-areas:
"topbar"
"main"
"footer";
}
.v2-sidebar {
display: none;
position: fixed;
top: 0;
left: 0;
height: 100vh;
z-index: 200;
box-shadow: 4px 0 16px rgba(0,0,0,0.12);
}
.v2-sidebar.open {
display: block;
}
.v2-topbar {
position: sticky;
top: 0;
z-index: 100;
}
.v2-result-row {
grid-template-columns: 64px 1fr;
}
.v2-result-row .v2-r-date,
.v2-result-row .v2-r-state {
display: none;
}
.v2-detail {
grid-template-columns: 1fr;
}
.v2-detail .left {
padding: 20px 0;
border-right: 0;
border-bottom: 1px solid var(--hairline);
}
.v2-detail .right {
padding: 20px 0;
}
.v2-matrix-mini {
grid-template-columns: 70px repeat(5, 1fr);
font-size: 10px;
}
.v2-menu-toggle {
display: inline-flex;
}
}
@media (min-width: 901px) {
.v2-menu-toggle {
display: none;
}
}
/* ── Overlay for mobile drawer ──────────────────────────────────── */
.v2-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.3);
z-index: 150;
}
.v2-overlay.open {
display: block;
}
/* ── Button primitives ──────────────────────────────────────────── */
.v2-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 16px;
font-family: var(--font-sans);
font-size: 13px;
font-weight: 700;
cursor: pointer;
border: none;
background: var(--ecg-blue);
color: #fff;
letter-spacing: 0.02em;
text-transform: uppercase;
}
.v2-btn:hover {
background: color-mix(in srgb, var(--ecg-blue) 85%, black);
}
.v2-btn.green {
background: var(--ecg-green);
}
.v2-btn.green:hover {
background: color-mix(in srgb, var(--ecg-green) 85%, black);
}
.v2-btn.outline {
background: transparent;
border: 2px solid var(--ecg-blue);
color: var(--ecg-blue);
}
.v2-btn.outline:hover {
background: var(--ecg-blue);
color: #fff;
}
/* ── Menu Toggle Button — nur auf Mobile sichtbar (< 900 px) ───────
!important nötig wegen .v2-topbar button { display: inline-flex }
(die generische Reset-Regel hat 2 Klassen Specificity vs hier 1). */
.v2-topbar .v2-menu-toggle {
display: none !important;
padding: 6px 10px;
background: none;
border: 1px solid var(--hairline);
color: var(--ecg-dark);
font-size: 18px;
cursor: pointer;
line-height: 1;
}
@media (max-width: 900px) {
.v2-topbar .v2-menu-toggle { display: inline-flex !important; }
}
/* ── Fraktions-Score-Tabelle (Fix 2+3) ─────────────────────────── */
.v2-fraktions-scores {
display: flex;
flex-direction: column;
gap: 6px;
margin-bottom: 8px;
}
.v2-fraktion-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 6px 8px;
background: var(--paper);
border: 1px solid var(--hairline);
border-radius: 4px;
font-size: 13px;
}
.v2-fraktion-label {
font-family: var(--font-mono);
font-size: 12px;
font-weight: 600;
display: flex;
align-items: center;
gap: 4px;
min-width: 90px;
}
.v2-fraktion-scores {
display: flex;
gap: 6px;
flex-wrap: wrap;
}
.v2-score-chip {
display: inline-block;
padding: 2px 7px;
border-radius: 3px;
font-family: var(--font-mono);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.02em;
}
.v2-score-chip.chip-green {
background: var(--score-chip-green-bg);
color: var(--score-chip-green-fg);
}
.v2-score-chip.chip-mid {
background: var(--score-chip-mid-bg);
color: var(--score-chip-mid-fg);
}
.v2-score-chip.chip-red {
background: var(--score-chip-red-bg);
color: var(--score-chip-red-fg);
}
.v2-badge-antragsteller,
.v2-badge-regierung {
display: inline-flex;
align-items: center;
justify-content: center;
width: 16px;
height: 16px;
border-radius: 50%;
font-size: 10px;
font-weight: 700;
line-height: 1;
cursor: help; /* Browser zeigt Hilfe-Cursor — Affordanz fuer Tooltip */
}
/* Score-Chips bekommen die gleiche cursor-Affordanz, sodass User merken,
dass WP/PP nicht nur Labels sind sondern Tooltips haben (#147). */
.v2-score-chip[title] { cursor: help; }
.v2-badge-antragsteller {
background: var(--ecg-blue);
color: #fff;
}
.v2-badge-regierung {
background: var(--ecg-green);
color: #fff;
}
/* ── Admin-Screens ──────────────────────────────────────────────────────── */
body.v2 .v2-admin-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
body.v2 .v2-admin-table thead th {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 700;
letter-spacing: .08em;
text-transform: uppercase;
opacity: 0.5;
padding: 6px 10px;
text-align: left;
border-bottom: 1px solid var(--ecg-teal);
}
body.v2 .v2-admin-table tbody tr {
border-bottom: 1px solid rgba(0,0,0,.06);
transition: background .15s;
}
body.v2 .v2-admin-table tbody tr:hover {
background: rgba(0,120,100,.04);
}
body.v2 .v2-admin-table td {
padding: 8px 10px;
vertical-align: middle;
}
body.v2 .v2-admin-btn {
font-family: var(--font-mono);
font-size: 11px;
padding: 4px 10px;
background: var(--ecg-teal);
color: #fff;
border: none;
border-radius: 3px;
cursor: pointer;
transition: opacity .15s;
}
body.v2 .v2-admin-btn:hover { opacity: .8; }
body.v2 .v2-admin-btn:disabled { opacity: .4; cursor: default; }
body.v2 .v2-admin-btn.danger {
background: transparent;
color: var(--ecg-blue);
border: 1px solid var(--ecg-blue);
}
body.v2 .v2-admin-btn.danger:hover { background: var(--ecg-blue); color: #fff; }
body.v2 .v2-admin-badge {
font-family: var(--font-mono);
font-size: 10px;
padding: 2px 6px;
border-radius: 2px;
background: rgba(0,120,100,.12);
color: var(--ecg-teal);
}
body.v2 .v2-admin-badge.running {
background: rgba(0,120,100,.18);
color: var(--ecg-teal);
}