:root {
    /* Die 8 Positionsfarben (eigene Palette, hell genug für schwarze Schrift) */
    --pos-0: #8DB4D8; /* Blau    – oben-links   */
    --pos-1: #F4B860; /* Orange  – oben-mitte   */
    --pos-2: #9CC96E; /* Grün    – oben-rechts  */
    --pos-3: #C9E07F; /* Limette – mitte-links  */
    --pos-4: #E6A1C5; /* Rosa    – mitte-rechts */
    --pos-5: #C4A6E0; /* Lila    – unten-links  */
    --pos-6: #D8B48C; /* Sand    – unten-mitte  */
    --pos-7: #7FCFC4; /* Türkis  – unten-rechts */

    --ink: #1a1a1a;
    --muted: #555;
    --line: #ccc;
    --bg: #f5f6f8;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    color: var(--ink);
    background: var(--bg);
    line-height: 1.5;
}

.site-header, .site-footer, main {
    max-width: 1040px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 1rem;
    padding-right: 1rem;
}

/* Oberer Bereich: zwei Spalten 65/35 – links Anleitung, rechts Eingabe */
.top-grid {
    display: grid;
    grid-template-columns: 65% 35%;
    gap: 1rem;
    align-items: start;
    margin: 1rem 0;
}
.top-grid > .instructions,
.top-grid > .col-right { margin: 0; }

/* Rechte Spalte: gestapelte Boxen (Formular + Ergebnis) */
.col-right {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.col-right > .controls { margin: 0; }

.site-header { padding-top: 1.5rem; }
.site-header h1 { margin: 0 0 .25rem; }
.lead { color: var(--muted); margin-top: 0; }

/* Steuerung */
.controls, .actions {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 1rem;
    margin: 1rem 0;
}

label { display: block; font-weight: 600; margin-bottom: .35rem; }

input[type="text"] {
    width: 100%;
    padding: .6rem .7rem;
    font-size: 1rem;
    border: 1px solid var(--line);
    border-radius: 6px;
}

.checkbox {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-weight: 400;
    margin-top: .75rem;
}
.checkbox input { width: auto; }

.buttons { display: flex; gap: .6rem; flex-wrap: wrap; margin-top: .75rem; }

button {
    padding: .6rem 1rem;
    font-size: 1rem;
    font-weight: 600;
    color: #fff;
    background: #1e88e5;
    border: none;
    border-radius: 6px;
    cursor: pointer;
}
button.secondary { background: #555; }
button:hover { filter: brightness(1.07); }

.error { color: #c62828; font-weight: 600; }

.card-id { margin: 0 0 .5rem; }
.card-id code { background: #eef; padding: .15rem .4rem; border-radius: 4px; }
.hint { color: var(--muted); font-weight: 400; }

/* ---------- Die Karte: feste Größe 173 x 104 mm (wie Original) ---------- */
.card-stage {
    overflow: auto;            /* auf schmalen Bildschirmen scrollbar */
    padding: 1rem;
    display: flex;
    justify-content: center;
}

.card-output {
    position: relative;
    width: 173mm;
    height: 104mm;
    flex: 0 0 auto;
    background: #fff;
    box-shadow: 0 2px 12px rgba(0, 0, 0, .15);
}

/* Farbrahmen (5 mm). Die 8 Segmente spiegeln die 8 Zellpositionen.
   Eck-Segmente sind L-förmig: Element = waagerechter Teil, ::before = senkrecht. */
.frame { position: absolute; background-color: var(--seg); }
.frame::before {
    content: "";
    position: absolute;
    background-color: inherit;
}

/* Mittelsegmente der Kanten (einfache Rechtecke) */
.frame-tm { top: 0;    left: 52mm;  width: 69mm; height: 5mm; }
.frame-bm { bottom: 0; left: 52mm;  width: 69mm; height: 5mm; }
.frame-ml { top: 20.5mm; left: 0;   width: 5mm;  height: 63mm; }
.frame-mr { top: 20.5mm; right: 0;  width: 5mm;  height: 63mm; }

/* Eck-Segmente: waagerechter Teil ... */
.frame-tl { top: 0;    left: 0;   width: 52mm; height: 5mm; }
.frame-tr { top: 0;    left: 121mm; width: 52mm; height: 5mm; }
.frame-bl { bottom: 0; left: 0;   width: 52mm; height: 5mm; }
.frame-br { bottom: 0; left: 121mm; width: 52mm; height: 5mm; }
/* ... und senkrechter Teil (Eck-L) */
.frame-tl::before { top: 0;    left: 0;  width: 5mm; height: 20.5mm; }
.frame-tr::before { top: 0;    right: 0; width: 5mm; height: 20.5mm; }
.frame-bl::before { bottom: 0; left: 0;  width: 5mm; height: 20.5mm; }
.frame-br::before { bottom: 0; right: 0; width: 5mm; height: 20.5mm; }

/* Farbzuordnung der Segmente */
.pos-0 { --seg: var(--pos-0); }
.pos-1 { --seg: var(--pos-1); }
.pos-2 { --seg: var(--pos-2); }
.pos-3 { --seg: var(--pos-3); }
.pos-4 { --seg: var(--pos-4); }
.pos-5 { --seg: var(--pos-5); }
.pos-6 { --seg: var(--pos-6); }
.pos-7 { --seg: var(--pos-7); }

/* Raster der Felder: 7 Spalten x 4 Zeilen, 7 mm Innenrand zum Rahmen */
.grid {
    position: absolute;
    top: 7mm;
    left: 7mm;
    display: grid;
    grid-template-columns: repeat(7, 21mm);
    grid-template-rows: repeat(4, 21mm);
    gap: 2mm;
}

.field {
    width: 21mm;
    height: 21mm;
    border: 0.25mm solid #000;
}

.field-cells {
    display: grid;
    grid-template-columns: repeat(3, 7mm);
    grid-template-rows: repeat(3, 7mm);
    width: 21mm;
    height: 21mm;
}

.cell {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 4.4mm;
    line-height: 1;
    color: #000;
    user-select: none;
}

/* Umgebungszellen: schwarzes Zeichen auf Farbe */
.cell.pos-0 { background: var(--pos-0); }
.cell.pos-1 { background: var(--pos-1); }
.cell.pos-2 { background: var(--pos-2); }
.cell.pos-3 { background: var(--pos-3); }
.cell.pos-4 { background: var(--pos-4); }
.cell.pos-5 { background: var(--pos-5); }
.cell.pos-6 { background: var(--pos-6); }
.cell.pos-7 { background: var(--pos-7); }

/* Zentrum: großer fetter Buchstabe ohne Hintergrund */
.cell.center {
    background: #fff;
    font-weight: 700;
    font-size: 5mm;
}

/* Logo-Platzhalter + ID (letzte beiden Spalten der 4. Zeile) */
.meta-block {
    grid-column: span 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.5mm;
}
.card-logo {
    max-width: 40mm;
    max-height: 12mm;
    object-fit: contain;
}
.card-id-print { font-size: 3.5mm; color: #000; }

/* Anleitung */
.instructions {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin: 1rem 0;
}
.instructions h2 { margin-top: 0; }

/* Auf schmalen Schirmen die beiden Spalten stapeln */
@media (max-width: 720px) {
    .top-grid { grid-template-columns: 1fr; }
}

.site-footer { color: var(--muted); font-size: .9rem; padding: 1.5rem 1rem; }

/* Farben sowohl am Bildschirm als auch im Druck exakt darstellen */
.card-output, .card-output * {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* ---------- Druck: Seite exakt kartengroß ---------- */
@page {
    size: 173mm 104mm;
    margin: 0;
}

@media print {
    .no-print { display: none !important; }
    html, body { margin: 0; padding: 0; background: #fff; }
    main { max-width: none; padding: 0; margin: 0; }
    .card-stage { overflow: visible; padding: 0; display: block; }
    .card-output { box-shadow: none; }
}
