Die Profilseiten sind ohne Login abrufbar und betten die Kaeufe als JSON ins HTML ein. Gelesen wird dieses JSON statt der gerenderten Tabelle: das ist unempfindlich gegen Layout-Aenderungen und liefert zusaetzlich Kaufdatum, Betrag und den Storno-Status. Ein Headless-Browser ist nicht noetig. Der Abgleich bucht nichts von sich aus. Eindeutige Treffer landen als regulaerer Import in der bestehenden Vorschau, die per package_bought_id dedupliziert. Titel, die nach CC klingen, sich aber keiner Guthaben-Art sicher zuordnen lassen, gehen in eine Handpruefung statt geraten zu werden - sichtbar als Hinweis auf der Uebersicht und als Box beim Spieler. Beachtet werden dabei: stornierte Kaeufe werden uebersprungen, der Web- Bereich enthaelt nie CC-Pakete, und ein Redesign-Titel zaehlt als Redesign, auch wenn Custom Character darin vorkommt. Letzteres war auch in den Standard-Mappings des Datei-Imports falsch herum einsortiert. Der Lauf geht bewusst nur ueber bereits erfasste Spieler und haelt eine Sekunde Abstand zwischen den Anfragen, da die Seite fremde Infrastruktur ist. Voraussetzung dafuer ist, dass SteamIDs auf eine Schreibweise gebracht werden: die Legacy-Form, die Steam3-Form und die 64-Bit-Zahl bezeichnen dieselbe Person, wurden bisher aber als verschiedene Spieler gefuehrt. Gespeichert wird jetzt immer die 64-Bit-Form, Eingabe und Suche akzeptieren alle drei.
836 lines
13 KiB
CSS
836 lines
13 KiB
CSS
:root {
|
|
--bg: #12141a;
|
|
--bg-raised: #1a1d26;
|
|
--bg-input: #21252f;
|
|
--border: #2c3140;
|
|
--border-strong: #3a4154;
|
|
--text: #e6e8ee;
|
|
--text-muted: #9099ad;
|
|
--accent: #5b8cff;
|
|
--accent-hover: #6d99ff;
|
|
--positive: #4ac28a;
|
|
--negative: #f2626b;
|
|
--warn: #e0a34a;
|
|
--radius: 8px;
|
|
--radius-lg: 12px;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
background: var(--bg);
|
|
color: var(--text);
|
|
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
font-size: 15px;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 1.6rem;
|
|
margin: 0 0 0.2rem;
|
|
}
|
|
h2 {
|
|
font-size: 1.15rem;
|
|
margin: 0 0 0.75rem;
|
|
}
|
|
h3 {
|
|
font-size: 1rem;
|
|
margin: 1.5rem 0 0.5rem;
|
|
}
|
|
|
|
a {
|
|
color: var(--accent);
|
|
text-decoration: none;
|
|
}
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.boot {
|
|
padding: 3rem;
|
|
text-align: center;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
/* --- Rahmen --- */
|
|
|
|
.shell {
|
|
min-height: 100vh;
|
|
}
|
|
|
|
.topbar {
|
|
background: var(--bg-raised);
|
|
border-bottom: 1px solid var(--border);
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 10;
|
|
}
|
|
|
|
.topbar-inner {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 0.7rem 1.5rem;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.brand {
|
|
font-weight: 700;
|
|
font-size: 1.05rem;
|
|
color: var(--text);
|
|
}
|
|
.brand:hover {
|
|
text-decoration: none;
|
|
color: var(--accent);
|
|
}
|
|
|
|
.nav {
|
|
display: flex;
|
|
gap: 0.35rem;
|
|
flex: 1;
|
|
}
|
|
|
|
.nav a {
|
|
padding: 0.35rem 0.75rem;
|
|
border-radius: var(--radius);
|
|
color: var(--text-muted);
|
|
font-weight: 500;
|
|
}
|
|
.nav a:hover {
|
|
background: var(--bg-input);
|
|
color: var(--text);
|
|
text-decoration: none;
|
|
}
|
|
.nav a.active {
|
|
background: var(--bg-input);
|
|
color: var(--text);
|
|
}
|
|
|
|
.topbar-right {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.user-chip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.45rem;
|
|
color: var(--text-muted);
|
|
font-size: 0.9rem;
|
|
}
|
|
.user-chip:hover {
|
|
text-decoration: none;
|
|
color: var(--text);
|
|
}
|
|
|
|
.role-tag {
|
|
font-size: 0.7rem;
|
|
padding: 0.1rem 0.4rem;
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: 4px;
|
|
letter-spacing: 0.03em;
|
|
}
|
|
|
|
.content {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 1.75rem 1.5rem 4rem;
|
|
}
|
|
|
|
.page.narrow {
|
|
max-width: 620px;
|
|
}
|
|
|
|
.page-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 1rem;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.back-link {
|
|
font-size: 0.85rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
/* --- Bausteine --- */
|
|
|
|
.block {
|
|
background: var(--bg-raised);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 1.25rem;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.block-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
.block-head h2 {
|
|
margin: 0;
|
|
}
|
|
|
|
.muted {
|
|
color: var(--text-muted);
|
|
}
|
|
.small {
|
|
font-size: 0.85rem;
|
|
}
|
|
.mono {
|
|
font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
|
|
font-size: 0.85em;
|
|
}
|
|
.pos {
|
|
color: var(--positive);
|
|
}
|
|
.neg {
|
|
color: var(--negative);
|
|
}
|
|
.num {
|
|
text-align: right;
|
|
}
|
|
.link-strong {
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* --- Guthaben --- */
|
|
|
|
.balances {
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.balance-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: 0.85rem;
|
|
}
|
|
|
|
.balance-card {
|
|
background: var(--bg-raised);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 1.1rem 1.25rem;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.15rem;
|
|
}
|
|
|
|
.balance-card.is-negative {
|
|
border-color: var(--negative);
|
|
background: color-mix(in srgb, var(--negative) 8%, var(--bg-raised));
|
|
}
|
|
|
|
.balance-label {
|
|
font-size: 0.85rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.balance-value {
|
|
font-size: 2.4rem;
|
|
font-weight: 700;
|
|
line-height: 1.1;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.balance-card.is-negative .balance-value {
|
|
color: var(--negative);
|
|
}
|
|
|
|
.eligibility {
|
|
display: flex;
|
|
gap: 1.25rem;
|
|
margin-top: 0.75rem;
|
|
font-size: 0.9rem;
|
|
flex-wrap: wrap;
|
|
}
|
|
.eligibility .ok {
|
|
color: var(--positive);
|
|
}
|
|
.eligibility .no {
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.overdrawn-hint {
|
|
margin: 0.6rem 0 0;
|
|
font-size: 0.875rem;
|
|
color: var(--warn);
|
|
}
|
|
|
|
.mini-counter {
|
|
display: inline-block;
|
|
min-width: 1.9rem;
|
|
padding: 0.1rem 0.4rem;
|
|
border-radius: 5px;
|
|
background: var(--bg-input);
|
|
text-align: center;
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: 600;
|
|
}
|
|
.mini-counter.is-negative {
|
|
background: color-mix(in srgb, var(--negative) 20%, transparent);
|
|
color: var(--negative);
|
|
}
|
|
|
|
/* --- CC-Listen --- */
|
|
|
|
.action-bar {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
flex-wrap: wrap;
|
|
margin-bottom: 1.25rem;
|
|
}
|
|
|
|
.cc-list {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.cc-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 1rem;
|
|
padding: 0.85rem 1rem;
|
|
background: var(--bg-input);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
}
|
|
|
|
.cc-item.is-inactive {
|
|
opacity: 0.85;
|
|
border-style: dashed;
|
|
}
|
|
|
|
.cc-actions {
|
|
display: flex;
|
|
gap: 0.4rem;
|
|
flex-shrink: 0;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.lore {
|
|
margin: 0.35rem 0;
|
|
font-size: 0.9rem;
|
|
color: var(--text-muted);
|
|
max-width: 60ch;
|
|
}
|
|
|
|
.badge {
|
|
display: inline-block;
|
|
margin-left: 0.5rem;
|
|
padding: 0.1rem 0.45rem;
|
|
border-radius: 4px;
|
|
font-size: 0.72rem;
|
|
font-weight: 600;
|
|
background: var(--bg);
|
|
border: 1px solid var(--border-strong);
|
|
color: var(--text-muted);
|
|
}
|
|
.badge-free {
|
|
border-color: var(--positive);
|
|
color: var(--positive);
|
|
}
|
|
.badge-paid {
|
|
border-color: var(--warn);
|
|
color: var(--warn);
|
|
}
|
|
.badge-new {
|
|
border-color: var(--accent);
|
|
color: var(--accent);
|
|
}
|
|
|
|
/* --- Tabellen --- */
|
|
|
|
.table-wrap {
|
|
overflow-x: auto;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
}
|
|
.table-wrap.scroll {
|
|
max-height: 60vh;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 0.925rem;
|
|
}
|
|
.table.small {
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.table th {
|
|
text-align: left;
|
|
padding: 0.6rem 0.8rem;
|
|
background: var(--bg-input);
|
|
border-bottom: 1px solid var(--border);
|
|
font-weight: 600;
|
|
font-size: 0.82rem;
|
|
color: var(--text-muted);
|
|
position: sticky;
|
|
top: 0;
|
|
}
|
|
|
|
.table td {
|
|
padding: 0.6rem 0.8rem;
|
|
border-bottom: 1px solid var(--border);
|
|
vertical-align: top;
|
|
}
|
|
|
|
.table tbody tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
.table tbody tr:hover {
|
|
background: color-mix(in srgb, var(--accent) 5%, transparent);
|
|
}
|
|
|
|
.table .empty {
|
|
text-align: center;
|
|
color: var(--text-muted);
|
|
padding: 2rem;
|
|
}
|
|
|
|
.is-reversed td {
|
|
opacity: 0.45;
|
|
text-decoration: line-through;
|
|
}
|
|
.is-skipped td {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.row-actions {
|
|
display: flex;
|
|
gap: 0.3rem;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.details {
|
|
max-width: 40ch;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/* --- Formulare --- */
|
|
|
|
label {
|
|
display: block;
|
|
margin: 0.85rem 0 0.3rem;
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
}
|
|
|
|
input[type='text'],
|
|
input[type='password'],
|
|
input[type='search'],
|
|
input:not([type]),
|
|
select,
|
|
textarea {
|
|
width: 100%;
|
|
padding: 0.5rem 0.7rem;
|
|
background: var(--bg-input);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius);
|
|
color: var(--text);
|
|
font: inherit;
|
|
font-size: 0.925rem;
|
|
}
|
|
|
|
input:focus,
|
|
select:focus,
|
|
textarea:focus {
|
|
outline: 2px solid var(--accent);
|
|
outline-offset: -1px;
|
|
border-color: transparent;
|
|
}
|
|
|
|
textarea {
|
|
resize: vertical;
|
|
}
|
|
|
|
.search {
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.field label {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.grid-2 {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 0.85rem;
|
|
margin-bottom: 0.85rem;
|
|
}
|
|
|
|
.inline-form {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
margin: 1rem 0;
|
|
}
|
|
.inline-form input {
|
|
flex: 1;
|
|
}
|
|
.inline-form select {
|
|
width: auto;
|
|
}
|
|
|
|
.checkbox,
|
|
.radio {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 0.55rem;
|
|
margin: 0.5rem 0;
|
|
font-weight: 400;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.checkbox input,
|
|
.radio input {
|
|
width: auto;
|
|
margin-top: 0.3rem;
|
|
}
|
|
|
|
.radio-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.2rem;
|
|
padding: 0.6rem 0.8rem;
|
|
background: var(--bg-input);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
}
|
|
|
|
.form-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 0.6rem;
|
|
margin-top: 1.25rem;
|
|
}
|
|
|
|
.file-drop {
|
|
display: block;
|
|
margin: 1rem 0 0;
|
|
padding: 2.5rem;
|
|
border: 2px dashed var(--border-strong);
|
|
border-radius: var(--radius-lg);
|
|
text-align: center;
|
|
cursor: pointer;
|
|
color: var(--text-muted);
|
|
}
|
|
.file-drop:hover {
|
|
border-color: var(--accent);
|
|
color: var(--text);
|
|
}
|
|
.file-drop input {
|
|
display: none;
|
|
}
|
|
|
|
.qr {
|
|
display: block;
|
|
margin: 1rem 0;
|
|
border-radius: var(--radius);
|
|
background: #fff;
|
|
padding: 0.5rem;
|
|
}
|
|
|
|
/* --- Buttons --- */
|
|
|
|
.btn {
|
|
padding: 0.5rem 0.9rem;
|
|
background: var(--bg-input);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius);
|
|
color: var(--text);
|
|
font: inherit;
|
|
font-size: 0.9rem;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
.btn:hover:not(:disabled) {
|
|
background: var(--border);
|
|
}
|
|
.btn:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.btn-primary {
|
|
background: var(--accent);
|
|
border-color: var(--accent);
|
|
color: #fff;
|
|
}
|
|
.btn-primary:hover:not(:disabled) {
|
|
background: var(--accent-hover);
|
|
border-color: var(--accent-hover);
|
|
}
|
|
|
|
.btn-ghost {
|
|
background: transparent;
|
|
border-color: transparent;
|
|
color: var(--text-muted);
|
|
}
|
|
.btn-ghost:hover:not(:disabled) {
|
|
background: var(--bg-input);
|
|
color: var(--text);
|
|
}
|
|
|
|
.btn-danger {
|
|
background: transparent;
|
|
border-color: var(--negative);
|
|
color: var(--negative);
|
|
}
|
|
.btn-danger:hover:not(:disabled) {
|
|
background: color-mix(in srgb, var(--negative) 15%, transparent);
|
|
}
|
|
|
|
.btn-small {
|
|
padding: 0.3rem 0.65rem;
|
|
font-size: 0.85rem;
|
|
}
|
|
.btn-tiny {
|
|
padding: 0.2rem 0.5rem;
|
|
font-size: 0.78rem;
|
|
}
|
|
.btn-block {
|
|
width: 100%;
|
|
margin-top: 0.85rem;
|
|
}
|
|
|
|
/* --- Hinweise --- */
|
|
|
|
.notice {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: flex-start;
|
|
gap: 1rem;
|
|
padding: 0.7rem 0.9rem;
|
|
border-radius: var(--radius);
|
|
margin: 0.85rem 0;
|
|
font-size: 0.9rem;
|
|
border: 1px solid;
|
|
}
|
|
|
|
.notice-error {
|
|
background: color-mix(in srgb, var(--negative) 12%, transparent);
|
|
border-color: var(--negative);
|
|
color: var(--negative);
|
|
}
|
|
.notice-success {
|
|
background: color-mix(in srgb, var(--positive) 12%, transparent);
|
|
border-color: var(--positive);
|
|
color: var(--positive);
|
|
}
|
|
.notice-warn {
|
|
background: color-mix(in srgb, var(--warn) 12%, transparent);
|
|
border-color: var(--warn);
|
|
color: var(--warn);
|
|
}
|
|
.notice-info {
|
|
background: var(--bg-input);
|
|
border-color: var(--border);
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
.notice-close {
|
|
background: none;
|
|
border: none;
|
|
color: inherit;
|
|
cursor: pointer;
|
|
opacity: 0.7;
|
|
font-size: 0.85rem;
|
|
padding: 0;
|
|
}
|
|
|
|
/* --- Modal --- */
|
|
|
|
.modal-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
background: rgba(0, 0, 0, 0.6);
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
padding: 3rem 1rem;
|
|
z-index: 100;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.modal {
|
|
background: var(--bg-raised);
|
|
border: 1px solid var(--border-strong);
|
|
border-radius: var(--radius-lg);
|
|
width: 100%;
|
|
max-width: 520px;
|
|
}
|
|
|
|
.modal-head {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 1rem 1.25rem;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
.modal-head h2 {
|
|
margin: 0;
|
|
font-size: 1.05rem;
|
|
}
|
|
|
|
.modal-body {
|
|
padding: 0.5rem 1.25rem 1.25rem;
|
|
}
|
|
|
|
.modal-foot {
|
|
padding: 1rem 1.25rem;
|
|
border-top: 1px solid var(--border);
|
|
}
|
|
|
|
/* --- Tabs --- */
|
|
|
|
.tabs {
|
|
display: flex;
|
|
gap: 0.3rem;
|
|
margin-bottom: 1.25rem;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.tab {
|
|
padding: 0.55rem 1rem;
|
|
background: none;
|
|
border: none;
|
|
border-bottom: 2px solid transparent;
|
|
color: var(--text-muted);
|
|
font: inherit;
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
}
|
|
.tab:hover {
|
|
color: var(--text);
|
|
}
|
|
.tab.is-active {
|
|
color: var(--text);
|
|
border-bottom-color: var(--accent);
|
|
}
|
|
|
|
/* --- Import-Zusammenfassung --- */
|
|
|
|
.summary-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
gap: 0.6rem;
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.summary-card {
|
|
padding: 0.75rem;
|
|
background: var(--bg-input);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
text-align: center;
|
|
}
|
|
.summary-card.is-active {
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.summary-value {
|
|
display: block;
|
|
font-size: 1.6rem;
|
|
font-weight: 700;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.summary-label {
|
|
display: block;
|
|
font-size: 0.78rem;
|
|
color: var(--text-muted);
|
|
}
|
|
|
|
/* --- Login --- */
|
|
|
|
.login-page {
|
|
min-height: 100vh;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 1.5rem;
|
|
}
|
|
|
|
.login-card {
|
|
width: 100%;
|
|
max-width: 370px;
|
|
background: var(--bg-raised);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 2rem;
|
|
}
|
|
|
|
.login-card h1 {
|
|
text-align: center;
|
|
margin-bottom: 0.2rem;
|
|
}
|
|
|
|
.login-sub {
|
|
text-align: center;
|
|
color: var(--text-muted);
|
|
margin: 0 0 1.25rem;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
/* --- Schmale Viewports --- */
|
|
|
|
@media (max-width: 820px) {
|
|
.balance-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.grid-2 {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.topbar-inner {
|
|
flex-wrap: wrap;
|
|
gap: 0.75rem;
|
|
}
|
|
.cc-item {
|
|
flex-direction: column;
|
|
}
|
|
.cc-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
.content {
|
|
padding: 1.25rem 1rem 3rem;
|
|
}
|
|
}
|
|
|
|
/* --- GExtension-Abgleich --- */
|
|
|
|
.head-actions {
|
|
display: flex;
|
|
gap: 0.6rem;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.block-flag {
|
|
border-color: var(--warn);
|
|
}
|
|
|
|
.usage-hint {
|
|
margin: -0.5rem 0 1.25rem;
|
|
}
|