/* GenussEtiketten Core – funktionale Styles. Farben/Schriften über --ge-* (setzt das Theme), hier nur Fallbacks. */
:root {
	--ge-papier: var(--ge-papier, #f6f2ea);
	--ge-flaeche: var(--ge-flaeche, #fffdf8);
	--ge-tinte: var(--ge-tinte, #262626);
	--ge-tinte-2: var(--ge-tinte-2, #55514b);
	--ge-aktion: var(--ge-aktion, #6b2e36);
	--ge-aktion-tinte: var(--ge-aktion-tinte, #fff);
	--ge-akzent: var(--ge-akzent, #58624a);
	--ge-linie: var(--ge-linie, rgb(38 38 38 / 0.2));
	--ge-linie-stark: var(--ge-linie-stark, rgb(38 38 38 / 0.55));
	--ge-fokus: var(--ge-fokus, #1a5fb4);
	--ge-radius: var(--ge-radius, 2px);
	--ge-f-display: var(--ge-f-display, Georgia, serif);
	--ge-f-text: var(--ge-f-text, system-ui, sans-serif);
	--ge-f-daten: var(--ge-f-daten, ui-monospace, monospace);
}
.ge-sr-only { position: absolute !important; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ge-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.ge-daten { font-family: var(--ge-f-daten); font-variant-numeric: tabular-nums; font-size: 0.925em; }
.ge-hinweis { font-size: 0.875rem; color: var(--ge-tinte-2); }
.ge-link { font-weight: 600; }
.ge-knopf { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; min-height: 3rem; padding: 0.75rem 1.4rem; border: 2px solid var(--ge-aktion); border-radius: var(--ge-radius); background: var(--ge-aktion); color: var(--ge-aktion-tinte); font-weight: 600; text-decoration: none; cursor: pointer; font-family: inherit; font-size: 1rem; line-height: 1.2; }
.ge-knopf:hover { filter: brightness(0.9); text-decoration: none; }
.ge-knopf:disabled { opacity: 0.6; cursor: wait; }
.ge-knopf--leer { background: transparent; color: var(--ge-tinte); border-color: var(--ge-linie-stark); }
.ge-knopf:focus-visible, .ge-kf input:focus-visible, .ge-kf select:focus-visible, .ge-kf textarea:focus-visible, .ge-anfrage input:focus-visible, .ge-anfrage textarea:focus-visible { outline: 3px solid var(--ge-fokus); outline-offset: 3px; }

/* Etiketten (SVG) */
.ge-etikett { width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 1px 1px rgb(0 0 0 / 0.12)) drop-shadow(0 8px 18px rgb(40 25 15 / 0.12)); }
.ge-etikett-kante { stroke: rgb(0 0 0 / 0.18); stroke-width: 0.2; }
.ge-etikett--leer { filter: none; }
.et-serif { font-family: var(--ge-f-serif, "Cormorant Garamond", Georgia, serif); font-weight: 500; }
.et-serif-i { font-family: var(--ge-f-serif, "Cormorant Garamond", Georgia, serif); font-style: italic; font-weight: 600; }
.et-display { font-family: var(--ge-f-display, "Fraunces", Georgia, serif); }
.et-sans { font-family: var(--ge-f-text, "Inter", sans-serif); }
.et-mono { font-family: var(--ge-f-daten, "IBM Plex Mono", monospace); }
.feld-markiert { animation: ge-feld-puls 1.2s ease-out 1; }
@keyframes ge-feld-puls { 0% { opacity: 0.15; } 100% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .feld-markiert { animation: none; } }

/* Formulare */
.ge-feld { display: grid; gap: 0.35rem; min-width: 0; }
.ge-feld label, .ge-feld__name { font-weight: 600; font-size: 0.95rem; }
.ge-feld input[type="text"], .ge-feld input[type="email"], .ge-feld select, .ge-feld textarea, .ge-auflagen select { width: 100%; min-height: 2.9rem; padding: 0.55rem 0.75rem; background: var(--ge-flaeche); border: 1.5px solid var(--ge-linie-stark); border-radius: var(--ge-radius); font: inherit; color: inherit; }
.ge-feld input[type="file"] { width: 100%; max-width: 100%; font: inherit; }
.ge-feld textarea { min-height: 6rem; resize: vertical; }
.ge-feld__hilfe { font-size: 0.85rem; color: var(--ge-tinte-2); margin: 0; }
.ge-feld__fehler { font-size: 0.9rem; color: #a3172a; font-weight: 600; margin: 0; }
.ge-feld__fehler:empty { display: none; }
.ge-feld input[aria-invalid="true"] { border-color: #a3172a; }
.ge-feld__status:empty { display: none; }
.ge-feld--breit { grid-column: 1 / -1; }
.ge-wahlen { display: grid; gap: 0.6rem; }
.ge-wahlen--zwei { grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); }
.ge-wahl { position: relative; display: grid; grid-template-columns: auto 1fr auto; gap: 0.25rem 0.85rem; align-items: start; padding: 0.95rem 1rem; background: var(--ge-flaeche); border: 1.5px solid var(--ge-linie); border-radius: var(--ge-radius); cursor: pointer; margin: 0; }
.ge-wahl:hover { border-color: var(--ge-linie-stark); }
.ge-wahl:has(input:checked) { border-color: var(--ge-aktion); box-shadow: inset 0 0 0 1px var(--ge-aktion); }
.ge-wahl:has(input:focus-visible) { outline: 3px solid var(--ge-fokus); outline-offset: 2px; }
.ge-wahl:has(input:disabled) { cursor: not-allowed; opacity: 0.7; }
.ge-wahl input { margin: 0.2rem 0 0; width: 1.15rem; height: 1.15rem; accent-color: var(--ge-aktion); }
.ge-wahl__titel { font-weight: 600; }
.ge-wahl__text { grid-column: 2 / 4; font-size: 0.9rem; color: var(--ge-tinte-2); }
.ge-wahl__preis { font-family: var(--ge-f-daten); font-size: 0.875rem; white-space: nowrap; }
.ge-check { display: flex; gap: 0.6rem; align-items: flex-start; min-height: 2.5rem; cursor: pointer; }
.ge-check input { width: 1.15rem; height: 1.15rem; margin-top: 0.25rem; accent-color: var(--ge-aktion); }
@media (max-width: 25rem) { .ge-wahl { grid-template-columns: auto 1fr; } .ge-wahl__preis { grid-column: 2; } }

/* Konfigurator */
.ge-kf { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; padding-bottom: 3rem; }
.ge-kf__buehne { display: grid; gap: 1.25rem; min-width: 0; }
@media (min-width: 60.01rem) and (min-height: 56rem) { .ge-kf__buehne { position: sticky; top: 5rem; } }
.ge-kf__form { min-width: 0; }
.ge-etikett-buehne { padding: clamp(1rem, 3vw, 2rem); background: var(--ge-buehne, linear-gradient(#ece4d5, #e4dbca)); border-radius: var(--ge-radius); }
.ge-kf__vorschau { max-width: 34rem; margin-inline: auto; }
.ge-kf__vorschau svg { max-height: min(22rem, 34vh); margin-inline: auto; }
.ge-kf__mass { margin: 0.9rem 0 0; text-align: center; font-size: 0.8rem; color: var(--ge-tinte-2); font-family: var(--ge-f-daten); }
.ge-kf__unter { font-family: var(--ge-f-display); font-weight: 400; font-size: 1.35rem; margin: 0.5rem 0; }
.ge-schritt { margin: 0; padding: 1.75rem 0; border: 0; border-top: 1px dashed var(--ge-linie-stark); display: grid; gap: 1rem; min-width: 0; }
.ge-schritt legend { float: left; width: 100%; margin-bottom: 1rem; padding: 0; font: 400 1.45rem/1.2 var(--ge-f-display); display: flex; align-items: center; gap: 0.75rem; }
.ge-schritt legend + * { clear: both; }
.ge-schritt__nr { display: inline-grid; place-items: center; width: 1.9rem; height: 1.9rem; border: 1px solid var(--ge-linie-stark); border-radius: 50%; font-family: var(--ge-f-daten); font-size: 0.8rem; flex: none; }
.ge-unterschritt { display: grid; gap: 1rem; margin-top: 0.5rem; }
.ge-formate { display: grid; grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr)); gap: 0.6rem; }
.ge-format { position: relative; display: grid; justify-items: center; gap: 0.35rem; padding: 0.9rem 0.6rem; background: var(--ge-flaeche); border: 1.5px solid var(--ge-linie); border-radius: var(--ge-radius); cursor: pointer; text-align: center; margin: 0; }
.ge-format input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ge-format:has(input:checked) { border-color: var(--ge-aktion); box-shadow: inset 0 0 0 1px var(--ge-aktion); }
.ge-format:has(input:focus-visible) { outline: 3px solid var(--ge-fokus); outline-offset: 2px; }
.ge-format__form { display: grid; place-items: center; height: 3.4rem; }
.ge-format__form::before { content: ""; width: var(--w); height: var(--h); border: 1.5px solid var(--ge-tinte); border-radius: 2px; background: var(--ge-papier); }
.ge-format:has(input:checked) .ge-format__form::before { background: var(--ge-aktion); border-color: var(--ge-aktion); }
.ge-format__name { font-size: 0.85rem; font-weight: 500; }
.ge-format__preis { font-size: 0.8rem; color: var(--ge-tinte-2); }
.ge-motive { display: grid; grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); gap: 0.75rem; }
.ge-motiv { position: relative; display: grid; gap: 0.35rem; padding: 0.6rem; background: var(--ge-flaeche); border: 1.5px solid var(--ge-linie); border-radius: var(--ge-radius); cursor: pointer; margin: 0; }
.ge-motiv input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.ge-motiv:has(input:checked) { border-color: var(--ge-aktion); box-shadow: inset 0 0 0 1px var(--ge-aktion); }
.ge-motiv:has(input:focus-visible) { outline: 3px solid var(--ge-fokus); outline-offset: 2px; }
.ge-motiv__bild .ge-etikett { filter: none; }
.ge-motiv__name { font-size: 0.85rem; font-weight: 600; line-height: 1.3; }
.ge-motiv__code { font-size: 0.75rem; color: var(--ge-tinte-2); }
.ge-angaben { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; }
.ge-angabe-tag { display: inline-block; margin-left: 0.35rem; padding: 0 0.4rem; font: 500 0.7rem/1.6 var(--ge-f-daten); color: var(--ge-aktion); border: 1px solid currentcolor; border-radius: 999px; vertical-align: 0.1em; }
.ge-auflagen { display: grid; gap: 0.35rem; max-width: 18rem; }
.ge-auflagen select { font-family: var(--ge-f-daten); }
.ge-kf__edition { padding: 0.9rem 1rem; border-left: 3px solid var(--ge-akzent); background: var(--ge-papier); font-size: 0.95rem; margin: 0; }
.ge-kf__edition:empty { display: none; }
.ge-kaufbox { padding: 1.25rem 1.4rem; background: var(--ge-flaeche); border: 1px dashed var(--ge-linie-stark); border-radius: var(--ge-radius); display: grid; gap: 0.9rem; }
.ge-kaufbox__titel { font: 400 1.35rem/1.2 var(--ge-f-display); margin: 0; }
.ge-kaufbox__liste { display: grid; gap: 0.4rem; margin: 0; }
.ge-kaufbox__liste div { display: grid; grid-template-columns: 8.5rem 1fr; gap: 0.5rem; font-size: 0.925rem; }
.ge-kaufbox__liste dt { color: var(--ge-tinte-2); }
.ge-kaufbox__liste dd { margin: 0; }
.ge-kaufbox__preis { padding-top: 0.8rem; border-top: 1px solid var(--ge-linie); display: grid; gap: 0.3rem; }
.ge-kaufbox__zeile { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin: 0; }
.ge-kaufbox__zeile strong { font-size: 1.35rem; font-weight: 600; }
.ge-kaufbox__status { margin: 0; padding: 0.5rem 0.7rem; background: #fff8e5; color: #5a4300; border-radius: var(--ge-radius); font-size: 0.9rem; font-weight: 600; }
.ge-kaufbox__test { margin: 0; padding: 0.4rem 0.7rem; background: #1b1b1b; color: #ffd77a; font: 600 0.8rem var(--ge-f-daten); border-radius: var(--ge-radius); }
.ge-kaufbox__ok { margin: 0.4rem 0 0; padding: 0.6rem 0.75rem; background: #e5efe2; color: #1f4d22; border-radius: var(--ge-radius); font-size: 0.9rem; }
.ge-kaufbox__knopf { width: 100%; }
.ge-kf__anfrage { display: grid; gap: 0.75rem; padding-top: 0.5rem; border-top: 1px solid var(--ge-linie); }
.ge-kf__werkzeug { display: grid; gap: 0.4rem; margin-top: 0.75rem; }
.ge-kf__schalter { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; font-weight: 600; cursor: pointer; justify-self: center; }
.ge-kf__schalter input { width: 1.15rem; height: 1.15rem; accent-color: var(--ge-aktion); }
.ge-kf__legende { font-size: 0.8rem; color: var(--ge-tinte-2); text-align: center; margin: 0; }
.ge-legende { display: inline-block; width: 1.4rem; height: 0; margin: 0 0.35rem 0.2rem 0.6rem; vertical-align: middle; border-top: 2px dashed #c0392b; }
.ge-legende--sicher { border-top: 2px dotted #1a5fb4; }
.ge-kf__pruefung { margin: 0; padding: 0.6rem 0.8rem; border-radius: var(--ge-radius); background: #fff8e5; color: #5a4300; font-size: 0.9rem; }
.ge-kf__pruefung:empty { display: none; }
.ge-kf__pruefung--fehler { background: #fff4f5; color: #7a0f1f; border: 2px solid #a3172a; font-weight: 600; }
.ge-kf__vorbehalt { text-align: center; margin: 0; }
.ge-hl { display: none; }
.zeigt-hilfslinien .ge-hl { display: inline; }
.ge-hl__druck { fill: none; stroke: #c0392b; stroke-width: 1.5; stroke-dasharray: 6 4; vector-effect: non-scaling-stroke; }
.ge-hl__sicher { fill: none; stroke: #1a5fb4; stroke-width: 1.5; stroke-dasharray: 2 3; vector-effect: non-scaling-stroke; }
@media (max-width: 60rem) { .ge-kf { grid-template-columns: minmax(0, 1fr); } .ge-kf__buehne { position: static; } }

/* Finder */
.ge-fd__raster { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: start; }
.ge-fd__form { display: grid; gap: 0.5rem; }
.ge-fd__frage { margin: 0; padding: 1.4rem 0; border: 0; border-top: 1px dashed var(--ge-linie-stark); display: grid; gap: 0.9rem; min-width: 0; }
.ge-fd__frage legend { float: left; width: 100%; margin-bottom: 0.9rem; padding: 0; font: 400 1.35rem/1.2 var(--ge-f-display); display: flex; gap: 0.75rem; align-items: center; }
.ge-fd__frage legend + * { clear: both; }
.ge-fd__knoepfe { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 0.5rem; }
.ge-fd__ergebnis { position: sticky; top: 5.5rem; display: grid; gap: 1rem; padding: 1.4rem; background: var(--ge-flaeche); border: 1px dashed var(--ge-linie-stark); border-radius: var(--ge-radius); }
.ge-fd__ergebnis h2 { font: 400 1.5rem/1.2 var(--ge-f-display); margin: 0; }
.ge-fd__ergebnis h2:focus { outline: none; }
.ge-fd__ergebnis h2:focus-visible { outline: 3px solid var(--ge-fokus); }
.ge-fd__karte { display: grid; gap: 0.75rem; padding-left: 1rem; border-left: 4px solid var(--ge-aktion); }
.ge-fd__karte--anfrage { border-left-color: var(--ge-akzent); }
.ge-fd__karte h3 { font: 400 1.35rem/1.25 var(--ge-f-display); margin: 0; }
.ge-fd__karte ul { padding-left: 1.2rem; display: grid; gap: 0.3rem; margin: 0; }
.ge-fd__aktion { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 0; }
@media (max-width: 52rem) { .ge-fd__raster { grid-template-columns: minmax(0, 1fr); } .ge-fd__ergebnis { position: static; } }

/* Formatlineal */
.ge-fl { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: start; }
.ge-fl__steuer { display: grid; gap: 1rem; }
.ge-fl fieldset { margin: 0; padding: 0; border: 0; }
.ge-fl legend { font-weight: 600; margin-bottom: 0.5rem; }
.ge-fl__formate > div { display: grid; grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); gap: 0.5rem; }
.ge-fl__formate input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ge-fl__knopf { display: grid; justify-items: center; gap: 0.3rem; padding: 0.75rem 0.5rem; background: var(--ge-flaeche); border: 1.5px solid var(--ge-linie); border-radius: var(--ge-radius); cursor: pointer; text-align: center; }
.ge-fl__formate input:checked + .ge-fl__knopf { border-color: var(--ge-aktion); box-shadow: inset 0 0 0 1px var(--ge-aktion); }
.ge-fl__formate input:focus-visible + .ge-fl__knopf { outline: 3px solid var(--ge-fokus); outline-offset: 2px; }
.ge-fl__mass { display: grid; place-items: center; height: 3.6rem; }
.ge-fl__mass span { display: block; border: 1.5px solid var(--ge-tinte); background: var(--ge-papier); border-radius: 2px; }
.ge-fl__formate input:checked + .ge-fl__knopf .ge-fl__mass span { background: var(--ge-aktion); border-color: var(--ge-aktion); }
.ge-fl__name { font-size: 0.85rem; font-weight: 500; }
.ge-fl__preis { font-size: 0.75rem; color: var(--ge-tinte-2); }
.ge-fl__gebindewahl { display: grid; gap: 0.4rem; }
.ge-fl__gebindewahl label { display: flex; gap: 0.5rem; align-items: center; min-height: 2.5rem; cursor: pointer; }
.ge-fl__gebindewahl input { width: 1.1rem; height: 1.1rem; accent-color: var(--ge-aktion); }
.ge-fl__passung { padding: 0.9rem 1rem; background: var(--ge-flaeche); border-left: 4px solid #2d6a2f; border-radius: var(--ge-radius); font-size: 0.925rem; }
.ge-fl__passung--warn { border-left-color: #b42318; }
.ge-fl__passung ul { margin: 0.4rem 0 0; padding-left: 0; list-style: none; display: grid; gap: 0.25rem; }
.ge-fl__passung li.warn { color: #7a0f1f; }
.ge-fl__titel { margin: 0; font-weight: 600; }
.ge-fl__buehne { background: var(--ge-buehne, linear-gradient(#ece4d5, #e4dbca)); padding: 1rem; border-radius: var(--ge-radius); }
.ge-fl__svg { width: 100%; height: auto; max-height: 34rem; }
.ge-fl__svg .ge-etikett { filter: none; }
.ge-fl__ticks line { stroke: rgb(38 38 38 / 0.45); stroke-width: 0.6; }
.ge-fl__text { font: 500 6px var(--ge-f-daten); fill: #55514b; }
.ge-fl__text--titel { font-size: 7px; fill: #262626; }
.ge-fl__zone { stroke: #1a5fb4; stroke-width: 0.7; stroke-dasharray: 3 2; }
.ge-fl__umfang { stroke: rgb(38 38 38 / 0.4); stroke-width: 1.2; }
.ge-fl__umfang--belegt { stroke: #2d6a2f; stroke-width: 3; }
.ge-fl__umfang--zuviel { stroke: #b42318; }
@media (max-width: 52rem) { .ge-fl { grid-template-columns: minmax(0, 1fr); } }

/* Preistabelle */
.ge-tabelle { width: 100%; border-collapse: collapse; margin-bottom: 1.25rem; }
.ge-tabelle th, .ge-tabelle td { padding: 0.75rem 0.5rem; border-bottom: 1px dashed var(--ge-linie-stark); text-align: left; vertical-align: top; }
.ge-tabelle thead th { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ge-tinte-2); font-weight: 500; }
.ge-tabelle .ge-zahl { text-align: right; white-space: nowrap; }
.ge-preis { font-weight: 600; }

/* Anfrage */
.ge-anfrage { display: grid; gap: 1rem; max-width: 52rem; }
.ge-anfrage__felder { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem 1.25rem; }
.ge-anfrage__wunsch { grid-column: 1 / -1; display: grid; gap: 0.35rem; padding: 0; border: 0; margin: 0; }
.ge-anfrage__wunsch legend { font-weight: 600; margin-bottom: 0.4rem; }
.ge-anfrage__ok { padding: 0.75rem 1rem; background: #e5efe2; color: #1f4d22; border-radius: var(--ge-radius); margin: 0; }
.ge-anfrage button[type="submit"] { justify-self: start; }
@media (max-width: 34rem) { .ge-anfrage__felder { grid-template-columns: minmax(0, 1fr); } }

/* Bibliothek */
.ge-bib__liste { list-style: none; padding: 0; margin: 1rem 0 0; display: grid; gap: 0; border-top: 1px dashed var(--ge-linie-stark); }
.ge-bib__etikett { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: 1.25rem; padding: 1.4rem 0; border-bottom: 1px dashed var(--ge-linie-stark); }
.ge-bib__bild--leer { aspect-ratio: 147 / 105; border: 1.5px dashed var(--ge-linie-stark); border-radius: 2px; background: var(--ge-flaeche); }
.ge-bib__name { font: 400 1.35rem/1.2 var(--ge-f-display); margin: 0 0 0.25rem; }
.ge-bib__meta { font-size: 0.8rem; color: var(--ge-tinte-2); margin: 0 0 0.6rem; }
.ge-bib__felder { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; margin: 0 0 0.75rem; }
.ge-bib__felder div { display: grid; }
.ge-bib__felder dt { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ge-tinte-2); }
.ge-bib__felder dd { margin: 0; font-family: var(--ge-f-daten); }
.ge-bib__aktionen { display: flex; flex-wrap: wrap; gap: 0.6rem; margin: 0; }
@media (max-width: 40rem) { .ge-bib__etikett { grid-template-columns: minmax(0, 1fr); } .ge-bib__bild { max-width: 14rem; } }

/* WooCommerce-Produktseite */
.ge-produkt .woocommerce-product-gallery, .ge-produkt .product .onsale, .ge-produkt .related.products, .ge-produkt .product_meta { display: none; }
.ge-produkt .product .summary { max-width: none; width: 100%; float: none; }

/* WCAG 2.5.8: Passwort-Anzeigen-Schalter von WooCommerce mind. 24 px */
.woocommerce .show-password-input,
.woocommerce-page .show-password-input { min-width: 24px; min-height: 24px; }
