/* Kundenansicht neu: Stile der gemeinsamen Funktionsmodule (Terminplaner, Webshop, Buchungskalender, Öffnungszeiten live, News, Analyse) unter .kn. Besitzer: P4. Die Module sind dieselben Dateien wie in der alten Ansicht und bringen ihre Klassen mit (tm-, sh-, bk-, zt-, fn-, nw-, an-, hs-); diese Datei ersetzt termine.css, shop.css, buchungen.css, zeiten.css, funktionen.css (News) und analyse.css vollständig. Jede Regel steht unter .kn. Aussehen wie das Ticketsystem: Abschnitte mit Haarlinien statt Karten, Pillen für Zustände, Ring-Schatten, ein Akzent (#111). Der Prüftest test/kundenansichtNeuModulCss.test.js sichert Scope, Palette, Verbote und die Abdeckung aller Klassen der alten Dateien. Abschnitte: 0 gemeinsame Bausteine, 1 Terminplaner, 2 Webshop und Buchungskalender, 3 Öffnungszeiten live, 4 News, 5 Analyse. */ /* ============================================================ 0 Gemeinsame Bausteine === */ /* Abschnitt statt Karte: ohne Fläche, Rahmen und Radius; ab dem zweiten Abschnitt eine Haarlinie darüber */ .kn .kb-panel { max-width: none; margin: 0; padding: 20px 0; } .kn .kb-panel + .kb-panel { border-top: 1px solid var(--kn-line); } .kn .kb-panel h3 { margin: 0 0 6px; font-size: 15px; line-height: 22px; font-weight: 600; } .kn .kb-panel h4 { margin: 16px 0 4px; font-size: 14px; line-height: 20px; font-weight: 600; } .kn .kb-panel p { margin: 0 0 10px; } .kn .kb-panel p:last-child { margin-bottom: 0; } .kn .kb-empty { margin: 0; padding: 24px 0; color: var(--kn-text-2); } /* Link im Text (auch als Knopf mit data-view) */ .kn .kb-link { display: inline; padding: 0; border: 0; background: none; font: inherit; color: var(--kn-text); text-decoration: underline; text-decoration-color: var(--kn-line-strong); text-underline-offset: 3px; cursor: pointer; } .kn .kb-link:hover { text-decoration-color: currentColor; } /* Aufzählung mit Häkchen */ .kn .kb-checks { margin: 12px 0; padding: 0; list-style: none; } .kn .kb-checks li { position: relative; padding: 4px 0 4px 24px; } .kn .kb-checks li::before { content: '✓'; position: absolute; left: 0; color: var(--kn-gruen-fg); font-weight: 600; } .kn .abo-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 16px; } .kn .muted { color: var(--kn-text-2); } .kn .error { margin: 0 0 12px; font-size: 13px; color: var(--kn-danger); } /* Knöpfe: Hauptaktion schwarz, sonst weiß mit Ring-Schatten */ .kn .kb-btn-primary, .kn .abo-btn, .kn .kb-btn, .kn .kb-btn-outline { display: inline-flex; align-items: center; justify-content: center; gap: 6px; box-sizing: border-box; min-height: 36px; padding: 0 14px; border: 0; border-radius: var(--kn-radius); font: inherit; font-weight: 500; line-height: 20px; text-align: center; text-decoration: none; cursor: pointer; transition: background-color .12s, box-shadow .12s; } .kn .kb-btn-primary, .kn .abo-btn { background: var(--kn-accent); color: #fff; box-shadow: var(--kn-shadow-btn); } .kn .kb-btn-primary:hover, .kn .abo-btn:hover { background: var(--kn-accent-hover); } .kn .kb-btn, .kn .kb-btn-outline { background: var(--kn-bg); color: var(--kn-text); box-shadow: var(--kn-ring); } .kn .kb-btn:hover, .kn .kb-btn-outline:hover { background: var(--kn-bg-hover); } .kn .kb-btn-primary:disabled, .kn .abo-btn:disabled, .kn .kb-btn:disabled, .kn .kb-btn-outline:disabled { opacity: .4; cursor: not-allowed; } /* Felder der Module: weiß mit Ring-Schatten, 6 px Radius, 36 px hoch */ .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) :is(input, select, textarea):where(:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file])), .kn .tm-link-feld, .kn .tm-code-feld, .kn .zt-google-text, .kn .bk-link input, .kn input[readonly] { box-sizing: border-box; min-width: 0; min-height: 36px; padding: 6px 10px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); color: var(--kn-text); box-shadow: var(--kn-ring); font: inherit; line-height: 20px; outline: none; transition: box-shadow .12s; } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) textarea, .kn .tm-code-feld, .kn .zt-google-text { min-height: 80px; resize: vertical; } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) select, .kn .zt-feiertag select { padding-right: 28px; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235e6678' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) :is(input, select, textarea):focus, .kn .tm-link-feld:focus, .kn .tm-code-feld:focus, .kn .zt-google-text:focus { box-shadow: 0 0 0 1px var(--kn-accent), 0 0 0 4px var(--kn-accent-ring); } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit) [aria-invalid='true'] { box-shadow: 0 0 0 1px var(--kn-danger), 0 0 0 4px var(--kn-danger-ring); } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit) input::placeholder { color: var(--kn-text-3); } .kn :is(.tm-feld, .sh-feld, .nw-field) input[type=color] { min-height: 36px; padding: 2px; cursor: pointer; } .kn input[type=checkbox], .kn input[type=radio] { accent-color: var(--kn-accent); } /* Fokus schwarz, überall gleich */ .kn button:focus-visible, .kn input:focus-visible, .kn select:focus-visible, .kn textarea:focus-visible, .kn summary:focus-visible, .kn a:focus-visible, .kn [tabindex]:focus-visible { outline: 2px solid #111; outline-offset: 2px; } /* Screenreader-Text */ .kn .tm-sr, .kn .sh-sr, .kn .an-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } /* Handy: Tippflächen 44 px, Felder 16 px gegen den Zoom von iOS */ @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .kb-btn-primary, .kn .abo-btn, .kn .kb-btn, .kn .kb-btn-outline { min-height: 44px; padding: 0 16px; } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) :is(input, select, textarea):where(:not([type=checkbox]):not([type=radio]):not([type=color]):not([type=file])), .kn .tm-link-feld, .kn .tm-code-feld, .kn .zt-google-text, .kn .bk-link input, .kn input[readonly] { min-height: 44px; font-size: 16px; } .kn .kb-link { display: inline-flex; align-items: center; min-height: 44px; } } /* Reduzierte Bewegung: keine Übergänge */ @media (prefers-reduced-motion: reduce) { .kn .kb-btn-primary, .kn .abo-btn, .kn .kb-btn, .kn .kb-btn-outline { transition: none; } .kn :is(.tm-feld, .sh-feld, .nw-field, .zt-tag, .zt-zeit, .zt-regler, .tm-sprung, .fn-project, .bk-posten, .bk-staffel, .bk-filter, .bk-vorschaufelder, .bk-importform, .bk-personpreis, .an-heat-bar) :is(input, select, textarea) { transition: none; } } /* ============================================================ 1 Terminplaner (tm-) === */ /* Die tm-Bausteine gelten auch im Webshop, im Buchungskalender und bei Öffnungszeiten live (Bestellseite, Einschalt-Seite, Statuskarte, Hinweise). */ /* ---- Hinweise und Meldungen ---- */ .kn .tm-box { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; margin: 0 0 16px; padding: 10px 12px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg-subtle); color: var(--kn-text); font-size: 14px; line-height: 20px; } .kn .tm-box[hidden] { display: none; } .kn .tm-box-info { background: var(--kn-bg-subtle); } .kn .tm-box-warn { background: #fcedb9; color: #a82c00; } .kn .tm-meldung { margin: 0 0 16px; padding: 10px 12px; border: 0; border-radius: var(--kn-radius); font-size: 14px; line-height: 20px; scroll-margin-top: 72px; } .kn .tm-meldung:empty { margin: 0; padding: 0; } .kn .tm-meldung:focus { outline: none; } .kn .tm-meldung-ok { background: #d7f7c2; color: #006908; } .kn .tm-meldung-fehler { background: #ffe7f2; color: #b3093c; } .kn .tm-info p { margin: 0 0 10px; color: var(--kn-text-2); } .kn .tm-info p:last-child { margin-bottom: 0; } /* ---- Reiter (nur in der alten Ansicht gezeichnet; im Abo-Modell zeichnet die Etage sie, die Klassen bleiben gestaltet) ---- */ .kn .tm-reiterleiste { display: flex; gap: 24px; margin: 0 0 16px; border-bottom: 1px solid var(--kn-line); overflow-x: auto; scrollbar-width: none; } .kn .tm-reiterleiste::-webkit-scrollbar { display: none; } .kn .tm-reiter { flex: none; margin-bottom: -1px; padding: 8px 0 10px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--kn-text-2); font: inherit; font-size: 14px; font-weight: 600; white-space: nowrap; cursor: pointer; } .kn .tm-reiter:hover { color: var(--kn-text); } .kn .tm-reiter[aria-selected='true'] { color: var(--kn-accent); border-bottom-color: var(--kn-accent); } .kn .tm-reiter:focus-visible { outline-offset: -2px; } .kn .tm-panel:focus { outline: none; } /* ---- Werkzeugleiste: Ansicht, Pfeile, Sprung, Filter ---- */ .kn .tm-leiste { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; } .kn .tm-leiste [hidden], .kn .tm-filter[hidden] { display: none; } .kn .tm-segment { display: inline-flex; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); overflow: hidden; } .kn .tm-seg { min-height: 32px; padding: 0 14px; border: 0; background: none; color: var(--kn-text); font: inherit; font-weight: 500; cursor: pointer; transition: background-color .12s; } .kn .tm-seg + .tm-seg { box-shadow: -1px 0 0 var(--kn-line); } .kn .tm-seg:hover { background: var(--kn-bg-hover); } .kn .tm-seg[aria-pressed='true'] { background: var(--kn-accent); color: #fff; } .kn .tm-nav { display: inline-flex; align-items: center; gap: 6px; } .kn .tm-heute { min-width: 72px; } .kn .tm-pfeil { display: inline-grid; place-items: center; width: 32px; height: 32px; padding: 0; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: var(--kn-text); font: inherit; font-size: 18px; line-height: 1; cursor: pointer; } .kn .tm-pfeil:hover { background: var(--kn-bg-hover); } .kn .tm-sprung { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--kn-text-2); } .kn .tm-zeitraum { margin: 20px 0 8px; font-size: 17px; line-height: 24px; font-weight: 600; } .kn .tm-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; } .kn .tm-chip { min-height: 28px; padding: 0 12px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: var(--kn-text); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; transition: background-color .12s; } .kn .tm-chip:hover { background: var(--kn-bg-hover); } .kn .tm-chip[aria-pressed='true'] { background: var(--kn-accent); color: #fff; } .kn .tm-werkzeug-zeile { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; } .kn .tm-werkzeuge { display: contents; } .kn .tm-werkzeuge button[aria-expanded='true'] { background: var(--kn-bg-hover); } /* ---- Terminliste: Zeilen mit Haarlinie ---- */ .kn .tm-tag-kopf { margin: 20px 0 4px; font-size: 13px; font-weight: 600; color: var(--kn-text-2); } .kn .tm-tag:first-child .tm-tag-kopf { margin-top: 4px; } .kn .tm-liste[aria-busy='true'] { opacity: .55; } .kn .tm-leer { margin: 0 0 8px; padding: 12px 0; color: var(--kn-text-2); } .kn .tm-eintraege { margin: 0; padding: 0; list-style: none; } .kn .tm-eintrag { padding: 12px 8px; border-bottom: 1px solid var(--kn-line); } .kn .tm-eintrag:first-child { border-top: 1px solid var(--kn-line); } .kn .tm-eintrag:hover { background: var(--kn-bg-hover); } .kn .tm-eintrag.tm-offen { box-shadow: inset 2px 0 0 var(--kn-accent); } .kn .tm-sperre { background: var(--kn-bg-subtle); color: var(--kn-text-2); } .kn .tm-zeile { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 4px 14px; align-items: start; } .kn .tm-zeit { padding-top: 1px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; } .kn .tm-haupt { min-width: 0; } .kn .tm-name, .kn .tm-meta { display: block; overflow-wrap: anywhere; } .kn .tm-meta { margin-top: 2px; font-size: 13px; color: var(--kn-text-2); } .kn .tm-hinweis-zeile { margin: 6px 0 0; font-size: 13px; color: var(--kn-text-2); overflow-wrap: anywhere; } .kn .tm-hinweis-zeile.tm-warn { color: #a82c00; } .kn .tm-aktionen { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .kn .tm-frage:empty { display: none; } .kn .tm-frage-box { display: grid; gap: 10px; margin-top: 12px; padding: 12px 14px; border: 0; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .tm-frage-box:focus { outline: none; } .kn .tm-frage-box p { margin: 0; } .kn .tm-frage-knoepfe { display: flex; flex-wrap: wrap; gap: 8px; } .kn .tm-details { margin-top: 10px; } .kn .tm-details summary { display: inline-block; padding: 4px 0; color: var(--kn-text-2); font-size: 13px; cursor: pointer; } .kn .tm-details summary:hover { color: var(--kn-text); } .kn .tm-fakten { display: grid; gap: 6px; margin: 8px 0 0; } .kn .tm-fakten > div { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: 2px 12px; } .kn .tm-fakten dt { color: var(--kn-text-2); font-size: 13px; } .kn .tm-fakten dd { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; } .kn .tm-link-knopf { margin-top: 8px; padding: 4px 0; border: 0; background: none; color: var(--kn-danger); font: inherit; font-size: 13px; font-weight: 500; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; } /* ---- Pillen (Zustand) ---- */ .kn .tm-pille { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border: 0; border-radius: 4px; background: #ebeef1; color: #414552; font-size: 12px; font-weight: 500; white-space: nowrap; font-variant-numeric: tabular-nums; } .kn .tm-pille-ok { background: #d7f7c2; color: #006908; } .kn .tm-pille-wait { background: #fcedb9; color: #a82c00; } .kn .tm-pille-off { background: #ebeef1; color: #414552; } .kn .tm-pille-bad { background: #ffe7f2; color: #b3093c; } /* ---- Formulare ---- */ .kn .tm-formular { margin: 0 0 16px; } .kn .tm-formular h3 { margin-bottom: 6px; } .kn .tm-raster { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 0 16px; align-items: start; } .kn .tm-feld { display: grid; gap: 6px; min-width: 0; margin: 12px 0 0; } .kn .tm-feld[hidden] { display: none; } .kn .tm-feld > label, .kn .tm-label { font-weight: 500; } .kn .tm-feld input:not([type=checkbox]):not([type=radio]):not([type=color]), .kn .tm-feld select, .kn .tm-feld textarea { width: 100%; } .kn .tm-hinweis { margin: 0; font-size: 13px; color: var(--kn-text-2); } .kn .tm-feld > .tm-muster-hinweis { margin-top: 6px; font-weight: 500; } .kn .tm-fehler { margin: 0; font-size: 13px; color: var(--kn-danger); } .kn .tm-fehler:empty { display: none; } .kn .tm-zeiten { display: flex; flex-wrap: wrap; gap: 8px; } .kn .tm-haken { display: flex; align-items: flex-start; gap: 10px; margin: 12px 0 6px; cursor: pointer; } .kn .tm-haken input { flex: none; width: 16px; height: 16px; margin-top: 2px; } .kn .tm-formular .tm-frage-knoepfe { margin-top: 16px; } /* ---- Vorlagenauswahl ---- */ .kn .tm-vorlagen > p { margin: 0 0 12px; color: var(--kn-text-2); } .kn .tm-vorlagen-liste { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; min-width: 0; margin: 0 0 16px; padding: 0; border: 0; } .kn .tm-vorlage { display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px; border-radius: var(--kn-radius-lg); box-shadow: var(--kn-ring); cursor: pointer; } .kn .tm-vorlage:hover { background: var(--kn-bg-hover); } .kn .tm-vorlage:has(input:checked) { box-shadow: 0 0 0 2px #111; } .kn .tm-vorlage input { flex: none; width: 16px; height: 16px; margin-top: 2px; } .kn .tm-vorlage strong, .kn .tm-vorlage small { display: block; } .kn .tm-vorlage small { margin-top: 2px; font-size: 13px; color: var(--kn-text-2); } /* ---- Leistungen, Team & Plätze, Einstellungen ---- */ .kn .tm-tab > * + * { margin-top: 16px; } .kn .tm-tab > .tm-box { margin-bottom: 0; } .kn .tm-hinweise:empty { display: none; } .kn .tm-reihenfolge .tm-frage-knoepfe { margin: 0; } .kn .tm-gruppe-felder { display: grid; gap: 0; min-width: 0; margin: 0; padding: 0; border: 0; } .kn .tm-gruppe-felder > legend { padding: 0; font-weight: 500; } .kn .tm-feld.tm-gruppe-felder { margin-top: 12px; } .kn .tm-abschnitt h3 { margin-bottom: 4px; } .kn .tm-abschnitt h4 { margin: 16px 0 4px; font-size: 14px; font-weight: 600; } .kn .tm-abschnitt-text { margin: 0 0 12px; color: var(--kn-text-2); } .kn .tm-abschnitt .tm-box { margin: 0 0 12px; } .kn .tm-abschnitt .tm-werkzeug-zeile { align-items: center; margin-bottom: 12px; } .kn .tm-abschnitt .tm-eintraege { margin-top: 4px; } .kn .tm-kopf { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px 14px; } .kn .tm-kopf .tm-pille { flex: none; } .kn .tm-eintrag .tm-meta + .tm-meta { margin-top: 0; } .kn .tm-editor-box:empty { display: none; } .kn .tm-editor { margin-top: 12px; } .kn .tm-eintrag .tm-formular { margin: 0; padding: 12px 0 0; border: 0; border-top: 1px solid var(--kn-line); border-radius: 0; background: none; } .kn .tm-eintrag .tm-formular h3 { display: none; } .kn .tm-feld-haken { margin-top: 4px; } .kn .tm-feld-haken .tm-haken { margin: 6px 0 0; } .kn .tm-haken > span { font-weight: 500; } .kn .tm-haken small { display: block; margin-top: 2px; font-weight: 400; color: var(--kn-text-2); } .kn .tm-abschnitt form > .tm-frage-knoepfe, .kn .tm-tab > form > .tm-frage-knoepfe { margin-top: 16px; } .kn .tm-gefahr { color: var(--kn-danger); } .kn .tm-gefahr:hover { background: #ffe7f2; } .kn .tm-wochenplan .tm-raster { gap: 0 16px; } .kn .tm-feed { margin-top: 12px; padding: 12px 14px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .tm-feed h4 { margin: 0 0 6px; font-size: 14px; font-weight: 600; } .kn .tm-feed .tm-hinweis { margin: 0 0 8px; } .kn .tm-feed .tm-frage-knoepfe { margin: 10px 0 0; } .kn .tm-link-feld, .kn .tm-code-feld { width: 100%; font-size: 13px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; text-overflow: ellipsis; } .kn .tm-code-feld { display: block; margin: 4px 0 10px; line-height: 20px; white-space: pre; overflow: auto; } .kn .tm-muster { margin-top: 12px; padding: 12px 14px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .tm-muster > p { margin: 0 0 10px; font-size: 13px; color: var(--kn-text-2); } .kn .tm-muster-text { margin: 0 0 12px; padding: 0 0 0 12px; border-left: 2px solid var(--kn-line-strong); font-size: 13px; color: var(--kn-text-2); font-style: italic; } .kn .tm-zusatz { display: grid; gap: 12px; margin: 10px 0; } .kn .tm-zusatz:empty { display: none; } .kn .tm-zusatz-zeile { padding: 12px 0; border-top: 1px solid var(--kn-line); } .kn .tm-zusatz-zeile .tm-gefahr { margin-top: 10px; } .kn .tm-optionen { display: grid; gap: 4px; margin: 4px 0 8px; } .kn .tm-optionen .tm-haken { margin: 6px 0; } .kn .tm-aus { opacity: .6; cursor: not-allowed; } .kn .tm-status { margin: 0; } .kn .tm-abschnitt details.tm-details { margin-top: 12px; } /* ---- Bestellseite, Einschalt-Seite und Statuskarte (funktion-bestellen.js, zeiten-bestellen.js) ---- */ .kn .tm-bestellen > * + * { margin-top: 20px; } .kn .tm-bestellen h3 { margin-bottom: 0; } .kn .tm-bestellen h4 { margin: 0 0 6px; font-size: 14px; font-weight: 600; } .kn .tm-bestellen .tm-abschnitt-text { margin: 6px 0 0; } .kn .tm-bestellen-zusammenfassung { display: grid; gap: 0; } .kn .tm-bestellen-gruppe { padding: 12px 0; border-top: 1px solid var(--kn-line); } .kn .tm-bestellen-gruppe:last-child { border-bottom: 1px solid var(--kn-line); } .kn .tm-bestellen-gruppe-kopf { display: flex; align-items: center; justify-content: space-between; gap: 8px 14px; flex-wrap: wrap; } .kn .tm-bestellen-gruppe-kopf h4 { margin: 0; } .kn .tm-bestellen-gruppe ul { margin: 6px 0 0; padding-left: 18px; overflow-wrap: anywhere; } .kn .tm-bestellen-gruppe .tm-hinweis { margin-top: 6px; } .kn .tm-bestellen-offen { padding: 12px 14px; border-radius: var(--kn-radius); background: #fcedb9; color: #a82c00; } .kn .tm-bestellen-offen ul { display: grid; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; } .kn .tm-bestellen-offen li { display: flex; align-items: center; justify-content: space-between; gap: 6px 14px; flex-wrap: wrap; } .kn .tm-bestellen-offen li > span { min-width: 0; overflow-wrap: anywhere; } .kn .tm-bestellen-offen .tm-hinweis { color: #a82c00; } .kn .tm-bestellen-betrag { margin: 0 0 4px; font-variant-numeric: tabular-nums; } .kn .tm-bestellen-betrag strong { font-size: 20px; line-height: 28px; font-weight: 700; } .kn .tm-bestellen-preis p { margin: 0 0 4px; } .kn .tm-bestellen-belehrung .tm-hinweis { margin-bottom: 8px; } .kn .tm-rechtstext { max-height: 320px; overflow-y: auto; padding: 12px 14px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); font-size: 13px; line-height: 20px; white-space: pre-wrap; overflow-wrap: anywhere; } .kn .tm-bestellen-dokumente { display: grid; gap: 6px; margin: 0; padding-left: 18px; } .kn .tm-bestellen-dokumente a { overflow-wrap: anywhere; } .kn .tm-bestellen-text { margin: 10px 0 0; color: var(--kn-text-2); } .kn .tm-bestellen-aktion { display: grid; justify-items: start; gap: 8px; } .kn .tm-bestellen-aktion .tm-fehler { font-size: 14px; } .kn .tm-bestellen-knopf { min-height: 36px; padding: 0 20px; } .kn .tm-einschalten-platz { min-width: 0; } .kn .tm-statuskarte > * + * { margin-top: 12px; } .kn .tm-statuskarte h3 { margin: 10px 0 0; } .kn .tm-statuskarte p { margin: 0; } .kn .tm-statuskarte .tm-hinweis { font-size: 13px; } .kn .tm-statuskarte .tm-fakten { margin: 0; } .kn .tm-statuskarte .tm-aktionen { margin-top: 16px; } .kn .tm-danke { padding: 10px 12px; border-radius: var(--kn-radius); background: #d7f7c2; color: #006908; font-weight: 500; } /* ---- Fragebogen (termine-fragebogen.js) ---- */ .kn .tm-fragebogen > * + * { margin-top: 16px; } .kn .tm-fragebogen > .tm-box { margin-bottom: 0; } .kn .tm-fortschritt { padding-bottom: 12px; border-bottom: 1px solid var(--kn-line); } .kn .tm-schritt-stand { display: none; margin: 0 0 8px; font-weight: 600; } .kn .tm-schritte { display: flex; flex-wrap: wrap; gap: 4px; margin: 0; padding: 0; list-style: none; } .kn .tm-schritt { margin: 0; } .kn .tm-schritt-knopf { display: inline-flex; align-items: center; gap: 8px; padding: 4px 10px 4px 4px; border: 0; border-radius: 999px; background: none; color: var(--kn-text-2); font: inherit; font-weight: 500; text-align: left; cursor: pointer; } .kn .tm-schritt-knopf:hover:not(:disabled) { background: var(--kn-bg-hover); color: var(--kn-text); } .kn .tm-schritt-knopf:disabled { opacity: .5; cursor: not-allowed; } .kn .tm-schritt[aria-current='step'] .tm-schritt-knopf { color: var(--kn-text); font-weight: 600; } .kn .tm-schritt-nr { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; box-shadow: var(--kn-ring); background: var(--kn-bg); font-size: 12px; font-variant-numeric: tabular-nums; } .kn .tm-schritt[data-erledigt] .tm-schritt-nr { background: var(--kn-accent); color: #fff; box-shadow: none; } .kn .tm-schritt[aria-current='step'] .tm-schritt-nr { box-shadow: 0 0 0 2px #111; } .kn .tm-schritt[data-erledigt][aria-current='step'] .tm-schritt-nr { box-shadow: 0 0 0 2px #fff, 0 0 0 4px #111; } .kn .tm-fb-schritt > * + * { margin-top: 16px; } .kn .tm-fb-schritt > h3 { margin: 0; } .kn .tm-fb-schritt > h3:focus { outline: none; } .kn .tm-fb-schritt > .tm-abschnitt-text { margin-bottom: 0; } .kn .tm-fb-form > * + * { margin-top: 16px; } .kn .tm-fb-form > .tm-box, .kn .tm-fb-form .tm-fb-branchenhinweis .tm-box { margin-bottom: 0; } .kn .tm-fb-branchenhinweis:empty { display: none; } .kn .tm-fb-branchen { margin-bottom: 0; } .kn .tm-fb-branche { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; } .kn .tm-fb-branche p { margin: 0; } .kn .tm-fb-aufbewahrung { margin-top: 20px; } .kn .tm-fb-person > h4 { margin: 0 0 4px; font-size: 14px; font-weight: 600; overflow-wrap: anywhere; } .kn .tm-fb-person .tm-wochenplan { margin-top: 0; } .kn .tm-fb-ausnahmen { margin-top: 28px; } .kn .tm-fb-ausnahmen > * + * { margin-top: 16px; } .kn .tm-fb-sammel { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; } .kn .tm-fb-sammel [aria-pressed='true'] { background: var(--kn-accent); color: #fff; } .kn .tm-fb-einbau .tm-vorlagen-liste { margin-bottom: 4px; } .kn .tm-fb-einbau .tm-feld textarea { min-height: 76px; } /* ---- Handy ---- */ @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .tm-reiter { display: inline-flex; align-items: center; min-height: 44px; padding-top: 0; padding-bottom: 0; } .kn .tm-seg, .kn .tm-chip { min-height: 44px; } .kn .tm-pfeil { width: 44px; height: 44px; } .kn .tm-link-knopf { display: inline-flex; align-items: center; min-height: 44px; padding: 0; } .kn .tm-details summary { display: flex; align-items: center; min-height: 44px; padding: 0; } .kn .tm-haken { align-items: center; min-height: 44px; margin-top: 0; margin-bottom: 0; } .kn .tm-haken input { width: 20px; height: 20px; margin-top: 0; } .kn .tm-vorlage input { width: 20px; height: 20px; } .kn .tm-vorlage { min-height: 44px; } .kn .tm-schritt-stand { display: block; } .kn .tm-schritte { display: grid; grid-template-columns: repeat(auto-fill, minmax(44px, 1fr)); gap: 6px; } .kn .tm-schritt-knopf { width: 100%; min-height: 44px; justify-content: center; padding: 0; } .kn .tm-schritt-titel { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } .kn .tm-eintrag { padding: 12px 0; } .kn .tm-bestellen-knopf { min-height: 44px; } } @media (max-width: 600px) { .kn .tm-leiste { gap: 8px; } .kn .tm-segment { width: 100%; } .kn .tm-seg { flex: 1; padding-left: 8px; padding-right: 8px; } .kn .tm-nav { width: 100%; } .kn .tm-nav .tm-heute { flex: 1; } .kn .tm-sprung { width: 100%; } .kn .tm-sprung input { flex: 1; min-width: 0; } .kn .tm-zeile { grid-template-columns: minmax(0, 1fr) auto; } .kn .tm-haupt { grid-column: 1 / -1; grid-row: 2; } .kn .tm-fakten > div { grid-template-columns: minmax(0, 1fr); } .kn .tm-werkzeug-zeile > *, .kn .tm-werkzeuge > * { flex: 1 1 calc(50% - 4px); } .kn .tm-werkzeuge > .kb-btn-primary { flex-basis: 100%; } .kn .tm-aktionen > * { flex: 1 1 auto; } .kn .tm-aktionen > .tm-pfeil { flex: 0 0 44px; } .kn .tm-kopf { flex-wrap: wrap; } .kn .tm-frage-knoepfe > * { flex: 1 1 auto; } .kn .tm-bestellen-aktion { justify-items: stretch; } .kn .tm-fb-sammel > * { flex: 1 1 auto; } .kn .tm-rechtstext { max-height: 260px; } } /* ---- Reduzierte Bewegung ---- */ @media (prefers-reduced-motion: reduce) { .kn .tm-seg, .kn .tm-chip { transition: none; } } /* ============================================ 2 Webshop und Buchungskalender (sh-, bk-) === */ /* Die Reiter, Pillen und Formulare des Buchungskalenders sind die sh-Klassen des Webshops. */ /* ---- Hinweise und Meldungen ---- */ .kn .sh-box { display: flex; align-items: center; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; margin: 0 0 16px; padding: 10px 12px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg-subtle); color: var(--kn-text); font-size: 14px; line-height: 20px; } .kn .sh-box[hidden] { display: none; } .kn .sh-box-info { background: var(--kn-bg-subtle); } .kn .sh-box-warn { background: #fcedb9; color: #a82c00; } .kn .sh-hinweise:empty { display: none; } .kn .sh-meldung { margin: 0 0 16px; padding: 10px 12px; border: 0; border-radius: var(--kn-radius); font-size: 14px; line-height: 20px; scroll-margin-top: 72px; } .kn .sh-meldung:empty { margin: 0; padding: 0; } .kn .sh-meldung:focus { outline: none; } .kn .sh-meldung-ok { background: #d7f7c2; color: #006908; } .kn .sh-meldung-fehler { background: #ffe7f2; color: #b3093c; } .kn .sh-info p { margin: 0 0 10px; color: var(--kn-text-2); } .kn .sh-info p:last-child { margin-bottom: 0; } /* ---- Reiter (nur in der alten Ansicht gezeichnet; im Abo-Modell zeichnet die Etage sie) ---- */ .kn .sh-reiterleiste { display: flex; flex-wrap: nowrap; gap: 24px; margin: 0 0 16px; border-bottom: 1px solid var(--kn-line); overflow-x: auto; scrollbar-width: none; } .kn .sh-reiterleiste::-webkit-scrollbar { display: none; } .kn .sh-reiter { flex: none; margin-bottom: -1px; padding: 8px 0 10px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--kn-text-2); font: inherit; font-size: 14px; font-weight: 600; white-space: nowrap; cursor: pointer; } .kn .sh-reiter:hover { color: var(--kn-text); } .kn .sh-reiter[aria-selected='true'] { color: var(--kn-accent); border-bottom-color: var(--kn-accent); } .kn .sh-reiter:focus-visible { outline-offset: -2px; } .kn .sh-panel:focus { outline: none; } /* ---- Abschnitte, Pillen, Fakten ---- */ .kn .sh-abschnitt { margin: 0; padding: 20px 0; } .kn .sh-abschnitt + .sh-abschnitt { border-top: 1px solid var(--kn-line); } .kn .sh-abschnitt h3 { margin: 0 0 4px; font-size: 15px; line-height: 22px; font-weight: 600; } .kn .sh-abschnitt h4 { margin: 16px 0 4px; font-size: 14px; font-weight: 600; } .kn .sh-abschnitt-text { margin: 0 0 12px; color: var(--kn-text-2); } .kn .sh-pille { display: inline-flex; align-items: center; height: 20px; margin-bottom: 8px; padding: 0 6px; border: 0; border-radius: 4px; background: #ebeef1; color: #414552; font-size: 12px; font-weight: 500; white-space: nowrap; font-variant-numeric: tabular-nums; } .kn .sh-pille-ok { background: #d7f7c2; color: #006908; } .kn .sh-pille-wait { background: #fcedb9; color: #a82c00; } .kn .sh-pille-off { background: #ebeef1; color: #414552; } .kn .sh-pille-bad { background: #ffe7f2; color: #b3093c; } .kn .sh-aktionen { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; } .kn .sh-fakten { display: grid; gap: 6px; margin: 12px 0 0; } .kn .sh-fakten > div { display: grid; grid-template-columns: minmax(120px, 190px) minmax(0, 1fr); gap: 4px 16px; } .kn .sh-fakten dt { font-size: 13px; color: var(--kn-text-2); } .kn .sh-fakten dd { margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; } .kn .sh-begruendung { margin: 0 0 12px; padding: 4px 0 4px 12px; border-left: 2px solid var(--kn-line-strong); color: var(--kn-text-2); overflow-wrap: anywhere; white-space: pre-wrap; } .kn .sh-zusammenfassung { margin-top: 16px; } .kn .sh-zusammenfassung h4 { margin: 0 0 4px; font-size: 14px; font-weight: 600; } /* ---- Anfrage ---- */ .kn .sh-anfrage h3 { margin-bottom: 6px; } .kn .sh-erklaerung p { margin: 0 0 10px; color: var(--kn-text-2); } .kn .sh-erklaerung ul { margin: 0 0 12px; padding-left: 20px; color: var(--kn-text-2); } .kn .sh-erklaerung li { margin-bottom: 4px; } .kn .sh-form { margin-top: 16px; padding-top: 4px; border-top: 1px solid var(--kn-line); } .kn .sh-hinweis[data-satz] { margin: 16px 0 12px; font-size: 14px; line-height: 20px; color: var(--kn-text); } /* ---- Formulare ---- */ .kn .sh-feld { display: grid; gap: 6px; min-width: 0; margin: 12px 0 0; } .kn .sh-feld[hidden] { display: none; } .kn .sh-feld > label, .kn .sh-label { font-weight: 500; } .kn .sh-feld input:not([type=checkbox]):not([type=radio]):not([type=color]), .kn .sh-feld select, .kn .sh-feld textarea { width: 100%; } .kn .sh-hinweis { margin: 0; font-size: 13px; color: var(--kn-text-2); } .kn .sh-fehler { margin: 0; font-size: 13px; color: var(--kn-danger); } .kn .sh-fehler:empty { display: none; } .kn .sh-gruppe { min-width: 0; margin: 12px 0 0; padding: 0; border: 0; } .kn .sh-gruppe legend { padding: 0; font-weight: 500; } .kn .sh-haken { display: flex; align-items: flex-start; gap: 10px; margin: 8px 0 4px; cursor: pointer; } .kn .sh-haken input { flex: none; width: 16px; height: 16px; margin-top: 2px; } .kn .sh-haken > span { font-weight: 500; } .kn .sh-haken small { display: block; margin-top: 2px; font-weight: 400; color: var(--kn-text-2); } .kn .sh-feld-haken { margin-top: 4px; } .kn .sh-radiogruppe { min-width: 0; margin: 0 0 8px; padding: 0; border: 0; } .kn .sh-radiogruppe legend { padding: 0; font-weight: 500; } .kn .sh-frage-box { display: grid; gap: 10px; margin: 12px 0; padding: 12px 14px; border: 0; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .sh-frage-box:focus { outline: none; } .kn .sh-untergruppe[hidden], .kn .sh-abschnitt[hidden] { display: none; } /* ---- Reiter Übersicht ---- */ .kn .sh-checkliste, .kn .sh-stripe-status, .kn .sh-erklaerung-liste { display: grid; gap: 6px; margin: 0 0 12px; padding: 0; list-style: none; } .kn .sh-checkliste li, .kn .sh-stripe-status li { display: flex; align-items: flex-start; gap: 10px; } .kn .sh-checkliste .sh-haken-zeichen { flex: none; width: 20px; text-align: center; font-weight: 600; } .kn .sh-checkliste .sh-ok .sh-haken-zeichen { color: #006908; } .kn .sh-checkliste .sh-offen .sh-haken-zeichen { color: var(--kn-text-3); } .kn .sh-stripe-status .sh-ok { color: #006908; } .kn .sh-stripe-status .sh-offen { color: #a82c00; } .kn .sh-erklaerung-liste { display: block; padding-left: 20px; list-style: disc; color: var(--kn-text-2); } .kn .sh-erklaerung-liste li { margin-bottom: 4px; } .kn .sh-zustand { margin: 12px 0 0; font-weight: 600; } .kn .sh-zustand-offen { color: #006908; } .kn .sh-zustand-zu { color: var(--kn-text-2); } .kn .sh-code { margin: 0 0 8px; padding: 12px 14px; overflow-x: auto; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); font-size: 13px; line-height: 20px; white-space: pre; } .kn .sh-code code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } /* ---- Reiter Rechtliches ---- */ .kn .sh-gewaehrleistung-bild { display: block; max-width: 100%; height: auto; margin: 0 0 12px; border-radius: var(--kn-radius); background: var(--kn-bg-hover); } .kn .sh-rechtliches textarea { font-family: inherit; line-height: 20px; } /* ---- Reiter Bestellungen ---- */ .kn .sh-umschalter { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; } .kn .sh-umschalter [aria-pressed='true'] { background: var(--kn-accent); color: #fff; } .kn .sh-werkzeug { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 16px; } .kn .sh-werkzeug .sh-feld { flex: 1 1 200px; margin: 0; } .kn .sh-liste { display: grid; gap: 0; margin: 12px 0 0; padding: 0; list-style: none; } .kn .sh-zeile { display: grid; grid-template-columns: minmax(80px, 110px) minmax(110px, 150px) minmax(0, 1fr) minmax(70px, 90px) minmax(80px, 100px) auto; align-items: center; gap: 6px 12px; width: 100%; padding: 12px 8px; border: 0; border-bottom: 1px solid var(--kn-line); background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; } .kn .sh-liste > :first-child .sh-zeile, .kn .sh-liste > .sh-zeile:first-child { border-top: 1px solid var(--kn-line); } .kn .sh-zeile:hover { background: var(--kn-bg-hover); } .kn .sh-zeile .sh-pille { justify-self: start; margin: 0; } .kn .sh-zeile-name, .kn .sh-zeile-art { overflow-wrap: anywhere; } .kn .sh-zeile-summe { font-weight: 600; font-variant-numeric: tabular-nums; } .kn .sh-zeile-warnung { grid-column: 1 / -1; font-size: 13px; color: #a82c00; } .kn .sh-seiten { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; } .kn .sh-zurueck { margin-bottom: 12px; } .kn .sh-positionen, .kn .sh-verlauf { display: grid; gap: 6px; margin: 0 0 12px; padding: 0; list-style: none; } .kn .sh-positionen li { display: flex; justify-content: space-between; gap: 12px; font-variant-numeric: tabular-nums; } .kn .sh-positionen li > span:first-child { overflow-wrap: anywhere; } .kn .sh-verlauf li { display: grid; grid-template-columns: minmax(130px, 170px) minmax(0, 1fr); gap: 4px 12px; } .kn .sh-verlauf-zeit { font-size: 13px; color: var(--kn-text-2); } .kn .sh-aktionen-bereich:empty, .kn .sh-erstatten-frage:empty { display: none; } .kn .sh-widerruf { padding: 12px 14px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .sh-widerruf .sh-fakten { margin-top: 0; } /* ---- Reiter Artikel ---- */ .kn .sh-artikelliste { display: grid; gap: 0; margin: 12px 0 0; padding: 0; list-style: none; } .kn .sh-artikel { display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; gap: 8px 14px; align-items: center; padding: 12px 8px; border-bottom: 1px solid var(--kn-line); } .kn .sh-artikel:first-child { border-top: 1px solid var(--kn-line); } .kn .sh-artikel:hover { background: var(--kn-bg-hover); } .kn .sh-artikel-bild { display: block; width: 56px; height: 56px; border-radius: var(--kn-radius); object-fit: cover; background: var(--kn-bg-hover); } .kn .sh-artikel-info { display: grid; gap: 2px; min-width: 0; } .kn .sh-artikel-name { overflow-wrap: anywhere; font-weight: 500; } .kn .sh-artikel-preis { font-variant-numeric: tabular-nums; } .kn .sh-artikel-bestand { font-size: 13px; color: var(--kn-text-2); } .kn .sh-artikel-aus { color: var(--kn-danger); } .kn .sh-artikel-aktionen { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 8px; } .kn .sh-schalter { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; cursor: pointer; } .kn .sh-schalter input { width: 16px; height: 16px; } .kn .sh-artikel .sh-frage-box { grid-column: 1 / -1; margin: 4px 0 0; } .kn .sh-artikel-editor .sh-abschnitt { margin-bottom: 0; } .kn .sh-einklappbar > summary { padding: 2px 0; cursor: pointer; } .kn .sh-einklappbar > summary strong { font-size: 15px; font-weight: 600; } .kn .sh-einklappbar[open] > summary { margin-bottom: 6px; } .kn .sh-grundpreis { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0 16px; } .kn .sh-wertzeile { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1fr) auto; gap: 0 12px; align-items: end; margin-bottom: 4px; } .kn .sh-wertzeile > button { margin-bottom: 2px; } .kn .sh-bilder { display: flex; flex-wrap: wrap; gap: 12px; margin: 10px 0 0; padding: 0; list-style: none; } .kn .sh-bild { display: grid; gap: 6px; justify-items: start; padding: 8px; border-radius: var(--kn-radius-lg); box-shadow: var(--kn-ring); } .kn .sh-bild img { width: 96px; height: 96px; object-fit: cover; border-radius: var(--kn-radius); background: var(--kn-bg-hover); } .kn .sh-bild .sh-pille { margin-bottom: 0; } .kn .sh-bild .sh-aktionen { margin-top: 0; } /* ---- Buchungskalender: Anfragen und Rechnungen ---- */ .kn .bk-filter { display: flex; align-items: center; gap: 8px 12px; margin-bottom: 12px; } .kn .bk-liste { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; } .kn .bk-zeile { display: grid; grid-template-columns: 90px 1.4fr 1fr auto auto; gap: 8px 14px; align-items: center; width: 100%; padding: 12px 8px; border: 0; border-bottom: 1px solid var(--kn-line); background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; } .kn .bk-liste > :first-child .bk-zeile, .kn .bk-liste > .bk-zeile:first-child { border-top: 1px solid var(--kn-line); } .kn .bk-zeile:hover { background: var(--kn-bg-hover); } .kn .bk-zeile .sh-pille { justify-self: start; margin: 0; } .kn .bk-betrag { font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; } .kn .bk-zurueck { margin-bottom: 12px; } .kn .bk-detail-kopf { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; } .kn .bk-detail-kopf .sh-pille { margin: 0; } .kn .bk-daten { display: grid; grid-template-columns: max-content 1fr; gap: 6px 16px; margin: 12px 0 16px; } .kn .bk-daten dt { color: var(--kn-text-2); } .kn .bk-daten dd { margin: 0; overflow-wrap: anywhere; } .kn .bk-posten-kopf, .kn .bk-posten-zeile { display: grid; grid-template-columns: minmax(0, 3fr) 70px 110px 80px auto; gap: 8px; align-items: center; } .kn .bk-posten-kopf { margin-bottom: 4px; font-size: 12px; color: var(--kn-text-2); } .kn .bk-posten-zeile { margin-bottom: 8px; } .kn .bk-posten input, .kn .bk-posten select { width: 100%; } .kn .bk-summen { margin: 12px 0; text-align: right; font-variant-numeric: tabular-nums; } .kn .bk-summen p { margin: 2px 0; } .kn .bk-gesamt { font-size: 18px; font-weight: 600; } .kn .bk-aktionen { display: flex; flex-wrap: wrap; gap: 8px 12px; margin: 12px 0; } .kn .bk-tabelle { width: 100%; margin: 8px 0; border-collapse: collapse; font-variant-numeric: tabular-nums; } .kn .bk-tabelle td { padding: 8px 4px; border-bottom: 1px solid var(--kn-line); } .kn .bk-tabelle td:last-child { text-align: right; } .kn .bk-link input { width: 100%; margin: 6px 0 10px; } .kn .bk-rechnung { display: grid; grid-template-columns: 110px 100px 1fr auto auto auto; gap: 8px 14px; align-items: center; padding: 12px 8px; border-bottom: 1px solid var(--kn-line); } .kn .bk-rechnung:hover { background: var(--kn-bg-hover); } .kn .bk-rechnung .sh-pille { margin: 0; } /* ---- Buchungskalender: Kalender (belegt #111, angefragt orange, gesperrt grau, frei weiß mit Haarlinie) ---- */ .kn .bk-kalenderkopf { flex-wrap: wrap; } .kn .bk-monat { min-width: 9em; text-align: center; font-weight: 600; } .kn .bk-raster { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; width: 100%; margin: 12px 0; } .kn .bk-wochentag { text-align: center; font-size: 12px; color: var(--kn-text-2); } .kn .bk-tag { min-height: 40px; aspect-ratio: 1.5; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: inset 0 0 0 1px var(--kn-line); color: var(--kn-text); font: inherit; font-variant-numeric: tabular-nums; cursor: pointer; } .kn .bk-tag:hover { background: var(--kn-bg-hover); } .kn .bk-tag.bk-ausserhalb { opacity: .45; } .kn .bk-tag.bk-heute { font-weight: 700; box-shadow: inset 0 0 0 1px var(--kn-line-strong); } .kn .bk-tag.bk-start { outline: 2px solid #111; outline-offset: 2px; } .kn .ist-frei { background: var(--kn-bg); } .kn .ist-gebucht { background: #111; color: #fff; box-shadow: none; } .kn .ist-gebucht:hover { background: #111; } .kn .ist-reserviert { background: #fcedb9; color: #a82c00; box-shadow: none; } .kn .ist-reserviert:hover { background: #fcedb9; } .kn .ist-ical { background: #e0f2fe; color: #075985; box-shadow: none; } .kn .ist-ical:hover { background: #e0f2fe; } .kn .ist-manuell { background: #ebeef1; color: #414552; box-shadow: none; } .kn .ist-manuell:hover { background: #ebeef1; } .kn .bk-legende { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 8px 0; padding: 0; list-style: none; } .kn .bk-legende li { display: flex; align-items: center; gap: 6px; font-size: 13px; } .kn .bk-farbe { display: inline-block; width: 16px; height: 16px; border-radius: 4px; box-shadow: inset 0 0 0 1px var(--kn-line-strong); } .kn .bk-farbe.ist-gebucht, .kn .bk-farbe.ist-reserviert, .kn .bk-farbe.ist-ical, .kn .bk-farbe.ist-manuell { box-shadow: none; } /* ---- Buchungskalender: Unterkünfte, Preise, Import ---- */ .kn .bk-staffel { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; } .kn .bk-staffel input { width: 90px; } .kn .bk-personenpreise { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; min-width: 0; max-width: 100%; } .kn .bk-personenpreise[hidden], .kn .bk-preis-einzeln[hidden] { display: none; } .kn .bk-personpreis { display: grid; gap: 2px; font-size: 13px; font-weight: 500; } .kn .bk-personpreis > span { white-space: nowrap; } .kn .bk-vorschau { font-weight: 600; font-variant-numeric: tabular-nums; } .kn .bk-import { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px; } .kn .bk-anleitung details { margin: 8px 0; } .kn .bk-vorschaufelder input, .kn .bk-importform input { width: 100%; } /* ---- Handy ---- */ @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .sh-reiter { display: inline-flex; align-items: center; min-height: 44px; padding-top: 0; padding-bottom: 0; } .kn .sh-haken { align-items: center; min-height: 44px; margin-top: 0; margin-bottom: 0; } .kn .sh-haken input, .kn .sh-schalter input { width: 20px; height: 20px; margin-top: 0; } .kn .sh-schalter { min-height: 44px; } .kn .bk-tag { min-height: 44px; } .kn .sh-zeile, .kn .bk-zeile { min-height: 44px; } } @media (max-width: 700px) { .kn .sh-zeile { grid-template-columns: minmax(0, 1fr) auto; } .kn .sh-verlauf li { grid-template-columns: minmax(0, 1fr); } .kn .bk-zeile { grid-template-columns: 1fr auto; } .kn .bk-posten-kopf { display: none; } .kn .bk-posten-zeile { grid-template-columns: 1fr 1fr; } .kn .bk-posten-zeile input:first-child { grid-column: 1 / -1; } .kn .bk-rechnung { grid-template-columns: 1fr auto; } } @media (max-width: 600px) { .kn .sh-fakten > div { grid-template-columns: minmax(0, 1fr); } .kn .sh-aktionen > * { flex: 1 1 auto; } .kn .sh-artikel { grid-template-columns: 56px minmax(0, 1fr); } .kn .sh-artikel-aktionen { grid-column: 1 / -1; justify-content: flex-start; } .kn .sh-grundpreis, .kn .sh-wertzeile { grid-template-columns: minmax(0, 1fr); } } /* ---- Reduzierte Bewegung ---- */ @media (prefers-reduced-motion: reduce) { .kn .sh-zeile, .kn .bk-zeile, .kn .bk-tag { transition: none; } } /* ============================================================ 3 Öffnungszeiten live (zt-) === */ /* Bestellseite, Einschalt-Seite, Statuskarte und Hinweise nutzen die tm-Bausteine aus Abschnitt 1. */ .kn .zt-kopf > .kb-panel { margin: 0; } .kn .zt-kopf + .zt-editor { margin-top: 4px; padding-top: 20px; border-top: 1px solid var(--kn-line); } .kn .zt-editor { margin-top: 4px; } .kn .zt-editor[hidden], .kn .zt-editor:empty { display: none; } .kn .zt-hinweis h3 { margin-bottom: 8px; } .kn .zt-hinweis .kb-btn-outline { margin-top: 4px; } .kn .zt-bestellen .tm-bestellen-aktion .kb-btn-outline { justify-self: start; } .kn .zt-status .tm-box { margin-bottom: 0; } .kn .zt-status .tm-box .kb-btn-outline { flex: none; } /* ---- Editor: Zeitpläne, Feiertage, Ausnahmen ---- */ .kn .zt-editor > * + * { margin-top: 16px; } .kn .zt-editor > .tm-meldung:empty, .kn .zt-editor > .tm-box[hidden] { margin: 0; } /* die Bestätigung klebt oben: nach dem Speichern eines unteren Abschnitts springt der Fokus auf den Knopf, „gespeichert“ läge sonst außer Sicht */ .kn .zt-editor > .tm-meldung:not(:empty) { position: sticky; top: 8px; z-index: 5; box-shadow: var(--kn-ring); } .kn .zt-kopfbereich:empty { display: none; } .kn .zt-spaeter { margin: 0 4px; } .kn .zt-plaene { display: grid; gap: 0; } .kn .zt-plan { border-bottom: 1px solid var(--kn-line); } .kn .zt-plan:first-child { border-top: 1px solid var(--kn-line); } .kn .zt-plan[open] { background: var(--kn-bg); } .kn .zt-plan-kopf { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; min-height: 44px; padding: 10px 8px; list-style: none; cursor: pointer; } .kn .zt-plan-kopf:hover { background: var(--kn-bg-hover); } .kn .zt-plan-kopf::-webkit-details-marker { display: none; } .kn .zt-plan-kopf::before { content: '▸'; flex: none; color: var(--kn-text-2); transition: transform .12s; } .kn .zt-plan[open] > .zt-plan-kopf::before { transform: rotate(90deg); } .kn .zt-plan-kopf .tm-name { display: inline; font-weight: 500; } .kn .zt-plan-kopf .tm-meta { display: inline; margin: 0; } .kn .zt-plan-kopf code, .kn .tm-formular code { padding: 1px 6px; border-radius: 4px; background: var(--kn-bg-hover); font-size: 13px; } .kn .zt-plan > .tm-editor { margin: 0; padding: 0 8px 16px; } .kn .zt-plan-form .tm-frage-knoepfe { margin-top: 16px; } .kn .zt-plan-form > .tm-hinweis { margin-top: 10px; } .kn .zt-grenze { margin: 0 0 12px; } .kn .zt-grenze:empty { display: none; } .kn .zt-werkzeuge { display: flex; flex-wrap: wrap; gap: 0 8px; } .kn .zt-werkzeuge:empty { display: none; } .kn .zt-editor .tm-abschnitt > .tm-frage-box { margin: 12px 0 16px; } .kn .zt-tage { display: grid; gap: 0; margin-top: 12px; } .kn .zt-tag { min-width: 0; padding: 10px 0; border-top: 1px solid var(--kn-line); } .kn .zt-tag > .tm-feld { margin-top: 0; } .kn .zt-tag-felder { display: grid; gap: 10px; margin-top: 8px; } .kn .zt-tag-felder[hidden], .kn .zt-zeiten[hidden] { display: none; } .kn .zt-tag select, .kn .zt-feiertag select { width: 100%; max-width: 360px; } .kn .zt-zeiten { display: grid; gap: 8px; } .kn .zt-fenster { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; } .kn .zt-fenster-name { min-width: 11rem; font-size: 13px; color: var(--kn-text-2); } .kn .zt-zeit { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; } .kn .zt-zeit input { width: 8.5rem; font-variant-numeric: tabular-nums; } .kn .zt-tag > .tm-fehler { margin-top: 8px; } .kn .zt-feiertag .zt-tag { margin-top: 8px; padding: 0; border: 0; } /* ---- Live-Vorschau, Hinweis-Leiste, Kontakt-Leiste, Google ---- */ .kn .zt-editor [hidden] { display: none; } .kn .zt-vorschau { padding: 16px 0; } .kn .zt-vorschau-zeile { margin: 0; font-size: 15px; line-height: 22px; overflow-wrap: anywhere; } .kn .zt-vorschau-text { font-size: 17px; line-height: 24px; font-weight: 500; } .kn .zt-vorschau-text::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 8px; border-radius: 50%; background: var(--kn-text-3); } .kn .zt-vorschau-text[data-offen='true']::before { background: #006908; } .kn .zt-vorschau-text[data-offen='false']::before { background: #c0123c; } .kn .zt-vorschau-text[data-offen='null']::before { background: #a82c00; } .kn .zt-regler { min-width: 0; margin: 12px 0 0; padding: 0; border: 0; } .kn .zt-regler legend { margin-bottom: 2px; padding: 0; font-weight: 500; } .kn .zt-regler-felder { display: flex; flex-wrap: wrap; gap: 0 16px; } .kn .zt-regler-felder .tm-feld { margin-top: 8px; } .kn .zt-regler-ergebnis { margin-top: 10px; overflow-wrap: anywhere; } .kn .zt-regler-ergebnis:empty { display: none; } .kn .zt-regler-ergebnis[role='alert'] { color: var(--kn-danger); } .kn .zt-art { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 4px; background: #e0f2fe; color: #075985; font-size: 12px; font-weight: 500; } .kn .zt-art-info { background: #e0f2fe; color: #075985; } .kn .zt-art-aktion { background: #d7f7c2; color: #006908; } .kn .zt-art-urlaub { background: #fcedb9; color: #a82c00; } .kn .zt-art-wichtig { background: #b3093c; color: #fff; } .kn .zt-muster { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 12px; height: auto; margin: 12px 0 0; padding: 10px 14px; border-radius: var(--kn-radius); font-size: 14px; line-height: 20px; font-weight: 400; text-align: center; } .kn .zt-muster-text { overflow-wrap: anywhere; } .kn .zt-muster-knopf { padding: 2px 12px; border-radius: 999px; box-shadow: inset 0 0 0 1.5px currentColor; font-size: 13px; font-weight: 600; } .kn .zt-knopf-felder { margin-top: 0; } .kn .zt-hinweis-form .zt-tag { margin-top: 0; } .kn .zt-hinweis-liste { min-width: 0; } .kn .zt-whatsapp { margin-top: 10px; padding: 0 14px 10px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); } .kn .zt-google-text { display: block; width: 100%; font-size: 13px; line-height: 20px; white-space: pre; overflow: auto; } .kn .zt-google-aktionen { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 12px; } .kn .zt-google-aktionen a { display: inline-flex; align-items: center; text-decoration: none; } .kn .zt-google-meldung { margin-top: 10px; font-size: 13px; } .kn .zt-google-meldung:empty { display: none; } @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .zt-zeit input, .kn .zt-tag select, .kn .zt-feiertag select, .kn .zt-regler .tm-feld select, .kn .zt-regler .tm-feld input { min-height: 44px; } } @media (max-width: 600px) { .kn .zt-fenster-name { min-width: 100%; } .kn .zt-zeit input { width: 7.75rem; } .kn .zt-plan > .tm-editor { padding: 0 0 14px; } .kn .zt-bestellen .tm-bestellen-aktion { justify-items: stretch; } .kn .zt-status .tm-box .kb-btn-outline { width: 100%; } .kn .zt-status .tm-aktionen > * { flex: 1 1 auto; } } @media (prefers-reduced-motion: reduce) { .kn .zt-plan-kopf::before { transition: none; } } /* ============================================================ 4 News (fn-, nw-) === */ /* fn-: Projektwahl, Buchungs- und Statusseite der News (dieselben Klassen nutzen alle Module); die Kachel-Klassen (fn-tile …) gehören der Funktionen-Ansicht. */ .kn .fn-project { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin: 0 0 16px; padding: 0; border: 0; } .kn .fn-project + .kb-panel { border-top: 0; } .kn .fn-project label { font-weight: 500; } .kn .fn-project select { flex: 1 1 220px; max-width: 420px; } .kn .fn-booking p, .kn .fn-status p { margin: 0 0 12px; } .kn .fn-price { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; } .kn .fn-price strong { font-size: 24px; line-height: 32px; font-weight: 700; font-variant-numeric: tabular-nums; } .kn .fn-price span, .kn .fn-estimate { font-size: 14px; color: var(--kn-text-2); } .kn .fn-desc-link { margin: 0 0 12px; } .kn .fn-consent { display: flex; align-items: flex-start; gap: 10px; margin: 16px 0; font-size: 14px; cursor: pointer; } .kn .fn-consent input { flex: none; width: 16px; height: 16px; margin-top: 2px; } .kn .fn-thanks { max-width: 640px; margin: 0 0 16px; padding: 10px 12px; border-radius: var(--kn-radius); background: #d7f7c2; color: #006908; font-size: 14px; font-weight: 500; } .kn .fn-status h3 { margin: 8px 0; } .kn .fn-facts { display: grid; gap: 8px; margin: 16px 0; } .kn .fn-facts > div { display: flex; flex-wrap: wrap; gap: 4px 16px; } .kn .fn-facts dt { min-width: 150px; color: var(--kn-text-2); } .kn .fn-facts dd { margin: 0; font-weight: 500; } .kn .fn-pill { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 4px; background: #ebeef1; color: #414552; font-size: 12px; font-weight: 500; white-space: nowrap; } .kn .fn-pill-off, .kn .fn-pill-soon { background: #ebeef1; color: #414552; } .kn .fn-pill-setup { background: #fcedb9; color: #a82c00; } .kn .fn-pill-on { background: #d7f7c2; color: #006908; } /* ---- Editor der Pinnwand ---- */ .kn .nw { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 24px; align-items: start; } .kn .nw-form { display: grid; gap: 0; min-width: 0; } .kn .nw-side { position: sticky; top: 24px; display: grid; gap: 16px; min-width: 0; } .kn .nw-card { padding: 20px 0; } .kn .nw-card + .nw-card { border-top: 1px solid var(--kn-line); } .kn .nw-card h3 { margin: 0 0 16px; } .kn .nw-step { margin: 0 0 4px; font-size: 12px; font-weight: 500; color: var(--kn-text-2); } .kn .nw-types { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .kn .nw-type { display: grid; justify-items: center; gap: 6px; padding: 14px 6px 10px; border: 0; border-radius: var(--kn-radius-lg); background: var(--kn-bg); box-shadow: var(--kn-ring); color: inherit; font: inherit; font-weight: 600; text-align: center; cursor: pointer; transition: background-color .12s; } .kn .nw-type:hover { background: var(--kn-bg-hover); } .kn .nw-type small { font-size: 12px; font-weight: 400; color: var(--kn-text-2); } .kn .nw-type-ico { display: grid; place-items: center; width: 40px; height: 40px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-hover); } .kn .nw-type-ico svg { width: 22px; height: 22px; fill: none; stroke: #111; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; } .kn .nw-type[aria-pressed="true"] { box-shadow: 0 0 0 2px #111; } .kn .nw-field { display: grid; gap: 6px; margin-bottom: 16px; } .kn .nw-field > label { font-weight: 500; } .kn .nw-field input:not([type=file]):not([type=checkbox]):not([type=radio]), .kn .nw-field select, .kn .nw-field textarea { width: 100%; } .kn .nw-hint { margin: 0; font-size: 13px; color: var(--kn-text-2); } .kn .nw-hint-row { display: flex; justify-content: space-between; gap: 12px; font-variant-numeric: tabular-nums; } .kn .nw-err { margin: 0; font-size: 13px; color: var(--kn-danger); } .kn .nw-err:empty { display: none; } .kn .nw-drop { display: grid; justify-items: center; gap: 12px; padding: 16px 14px; border-radius: var(--kn-radius-lg); background: var(--kn-bg-subtle); box-shadow: inset 0 0 0 1px var(--kn-line-strong); text-align: center; } .kn .nw-drop-img { width: 100%; } .kn .nw-drop-img img { display: block; width: 100%; max-height: 220px; object-fit: cover; border-radius: var(--kn-radius); } .kn .nw-drop-btns { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; } .kn .nw-drop .nw-hint { margin: 0; } .kn .nw-only-phone { display: none; } @media (pointer: coarse) { .kn .nw-only-phone { display: inline-flex; } } .kn .nw-swatches { display: flex; gap: 10px; } .kn .nw-sw { width: 40px; height: 40px; padding: 0; border: 0; border-radius: var(--kn-radius-lg); box-shadow: var(--kn-ring); cursor: pointer; } .kn .nw-sw[aria-pressed="true"] { box-shadow: 0 0 0 2px #111; } .kn .nw-actions { margin-top: 6px; } .kn .nw-paper-sun { --paper: #fff6d6; } .kn .nw-paper-sky { --paper: #ddeffb; } .kn .nw-paper-coral { --paper: #ffe1d9; } .kn .nw-paper-white { --paper: #fff; } .kn .nw-sw, .kn .nw-thumb.nw-paper-sun, .kn .nw-thumb.nw-paper-sky, .kn .nw-thumb.nw-paper-coral, .kn .nw-thumb.nw-paper-white { background: var(--paper); } /* ---- Vorschau: Papierzettel und Polaroid (dunkle Schrift auf hellem Papier, Drehung bleibt) ---- */ .kn .nw-prev-label { display: flex; align-items: center; gap: 8px; margin: 0 0 14px; font-size: 12px; font-weight: 500; color: var(--kn-text-2); } .kn .nw-prev-label i { width: 8px; height: 8px; border-radius: 50%; background: #006908; } .kn #nw-preview { max-width: 380px; margin: 0 auto; color: #1a1f36; } .kn .nw-paper { padding: 24px 22px 20px; border-radius: 6px 6px 18px 6px; background: var(--paper, #fff); box-shadow: var(--kn-ring); transform: rotate(-1.2deg); } .kn .nw-paper h4 { margin: 8px 0; font-size: 19px; line-height: 1.25; font-weight: 600; overflow-wrap: anywhere; } .kn .nw-paper p { margin: 0; font-size: 15px; line-height: 1.5; overflow-wrap: anywhere; white-space: pre-wrap; } .kn .nw-date { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #5e6678; } .kn .nw-polaroid { margin: 0; padding: 10px 10px 14px; border-radius: 4px; background: #fff; box-shadow: var(--kn-ring); transform: rotate(-2deg); } .kn .nw-polaroid img, .kn .nw-ph { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 2px; background: #ebeef1; } .kn .nw-ph { display: grid; place-items: center; color: #5e6678; font-size: 14px; } .kn .nw-polaroid figcaption { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-top: 10px; } .kn .nw-polaroid figcaption b { font-size: 16px; font-weight: 600; overflow-wrap: anywhere; } .kn .nw-polaroid figcaption span { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #5e6678; } .kn .nw-combo { display: grid; gap: 0; } .kn .nw-combo .nw-paper { position: relative; margin: -22px 10px 0 24px; transform: rotate(2deg); } .kn .nw-prev-toggle { display: none; width: 100%; justify-content: center; } /* ---- Listen: hängende und abgelaufene Zettel ---- */ .kn .nw-lists h3 { margin: 0; font-size: 15px; font-weight: 600; } .kn .nw-lists-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 12px; margin-bottom: 8px; } .kn .nw-expired-title { margin-top: 24px !important; } .kn .nw-empty { margin: 8px 0 0; color: var(--kn-text-2); } .kn .nw-rows { margin: 0; padding: 0; list-style: none; } .kn .nw-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; padding: 12px 0; border-top: 1px solid var(--kn-line); } .kn .nw-thumb { display: grid; place-items: center; flex: none; width: 46px; height: 46px; border-radius: var(--kn-radius); object-fit: cover; color: #1a1f36; font-weight: 600; } .kn .nw-row-text { flex: 1 1 140px; min-width: 0; } .kn .nw-row-text b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; } .kn .nw-row-text small { font-size: 13px; color: var(--kn-text-2); } .kn .nw-row-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .kn .nw-row-actions button, .kn .nw-row-actions select { min-height: 32px; padding: 0 12px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: inherit; font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; } .kn .nw-row-actions button:hover { background: var(--kn-bg-hover); } .kn .nw-row-actions .nw-del { color: var(--kn-danger); } .kn .nw-confirm { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; } .kn .nw-row-err { flex: 1 0 100%; } @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .nw { grid-template-columns: minmax(0, 1fr); } .kn .nw-side { position: static; order: 2; } .kn .nw-prev-toggle { display: flex; } .kn .nw-prev { display: none; } .kn .nw-prev.is-open { display: block; } .kn .nw-types { gap: 8px; } .kn .nw-type small { display: none; } .kn .nw-type, .kn .nw-sw { min-height: 44px; } .kn .nw-sw { min-width: 44px; } .kn .nw-actions .abo-btn { flex: 1 1 auto; } .kn .nw-row-actions button, .kn .nw-row-actions select { min-height: 44px; } .kn .fn-facts dt { min-width: 0; flex: 1 0 100%; } } @media (prefers-reduced-motion: reduce) { .kn .nw-type { transition: none; } } /* ============================================================ 5 Analyse (an-, hs-) === */ /* Die Analyse bleibt über .an mit eigenen Variablen gebaut; sie sind hell belegt. Keine Karten: Abschnitte mit Haarlinie. Die Geräterahmen der Heatmap (geraete.css, Abbildungen von Geräten) bleiben unberührt. Klassen und Zustände: Vertrag im Kopf von analyse-cards.js. */ .kn .an { --an-fg: #1a1f36; --an-fg2: #5e6678; --an-muted: #5e6678; --an-faint: #8a93a3; --an-line: #ebeef1; --an-line2: #d8dde3; --an-card: #fff; --an-acc: #111; --an-acc-strong: #111; --an-acc-soft: #f6f8fa; --an-on-acc: #fff; --an-up-bg: #d7f7c2; --an-down: #b3093c; --an-down-bg: #ffe7f2; --an-prev: #8a93a3; --an-warn: #a82c00; --an-bar-fill: #ebeef1; --an-r: 12px; --an-gap: 16px; min-width: 0; color: var(--an-fg); } .kn .an, .kn .an *, .kn .an *::before, .kn .an *::after { box-sizing: border-box; } .kn .an a, .kn .an .kb-link { color: var(--an-fg); } /* ---- Kopfleiste ---- */ .kn .an-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 16px; padding: 0 0 16px; border-bottom: 1px solid var(--an-line); } .kn .an-site { --an-dot: #006908; display: flex; align-items: center; gap: 12px; flex: 1 1 260px; min-width: 0; } .kn .an-site[data-state="warn"] { --an-dot: #a82c00; } .kn .an-site[data-state="off"] { --an-dot: #8a93a3; } .kn .an-site > div { min-width: 0; } .kn .an-status-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--an-dot); } .kn .an-site-name { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 16px; font-weight: 600; } .kn .an-status { display: block; margin-top: 2px; font-size: 13px; color: var(--an-muted); } .kn .an-st { white-space: nowrap; } .kn .an-pick { display: block; max-width: 100%; padding: 2px 24px 2px 0; border: 0; border-radius: var(--kn-radius); background-color: transparent; cursor: pointer; text-overflow: ellipsis; -webkit-appearance: none; appearance: none; color: var(--an-fg); font-family: inherit; font-size: 16px; font-weight: 600; line-height: 1.3; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235e6678' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 2px center; } .kn .an-pick option { background: #fff; color: #1a1f36; } .kn .an-seg { display: inline-flex; flex: none; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); overflow: hidden; } .kn .an-seg button { min-height: 32px; padding: 0 14px; border: 0; background: none; color: var(--an-fg); font: inherit; font-weight: 500; cursor: pointer; transition: background-color .12s; } .kn .an-seg button + button { box-shadow: -1px 0 0 var(--an-line); } .kn .an-seg button:hover { background: var(--kn-bg-hover); } .kn .an-seg button.on { background: var(--an-acc); color: var(--an-on-acc); } /* ---- Reiter (nur in der alten Ansicht gezeichnet; im Abo-Modell zeichnet die Etage sie) ---- */ .kn .an-tabs { display: flex; gap: 24px; margin: 16px 0; border-bottom: 1px solid var(--an-line); overflow-x: auto; scrollbar-width: none; } .kn .an-tabs::-webkit-scrollbar { display: none; } .kn .an-tabbtn { flex: none; margin-bottom: -1px; padding: 8px 0 10px; border: 0; background: none; color: var(--an-muted); font: inherit; font-size: 14px; font-weight: 600; white-space: nowrap; cursor: pointer; } .kn .an-tabbtn:hover { color: var(--an-fg); } .kn .an-tabbtn.on { color: var(--an-acc); box-shadow: inset 0 -2px 0 var(--an-acc); } .kn .an .an-tabbtn:focus-visible { outline-offset: -2px; border-radius: 4px; } .kn .an-top + #an-stage { margin-top: var(--an-gap); } /* ---- Abschnitte und Raster ---- */ .kn .an-ov { display: grid; gap: var(--an-gap); min-width: 0; } .kn .an-ov > * { min-width: 0; } .kn .an-card { min-width: 0; padding: 16px 0 0; border: 0; border-top: 1px solid var(--an-line); border-radius: 0; background: none; } .kn .an-card h3 { margin: 0; font-size: 13px; font-weight: 600; color: var(--an-muted); } .kn .an-card > h3 { margin-bottom: 12px; } .kn .an-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 12px; } .kn .an-empty { margin: 0; color: var(--an-muted); } .kn .an-credit { margin: 2px 0 0; font-size: 12px; color: var(--an-faint); } .kn .an .an-credit a { color: inherit; } /* Das Wichtigste */ .kn .an-sum { padding: 20px 24px; border-radius: var(--an-r); background: var(--kn-bg-subtle); } .kn .an-eyebrow { margin: 0 0 8px; font-size: 12px; font-weight: 600; color: var(--an-muted); } .kn .an-lead { margin: 0 0 14px; font-size: 20px; line-height: 28px; font-weight: 600; } .kn .an-sum-empty .an-lead { margin: 0; font-size: 16px; line-height: 24px; font-weight: 500; color: var(--an-fg2); } .kn .an-lead b { white-space: nowrap; } .kn .an-points { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 24px; margin: 0; padding: 0; list-style: none; } .kn .an-points li { display: flex; align-items: flex-start; gap: 10px; color: var(--an-fg2); } .kn .an-points li > span:last-child { min-width: 0; overflow-wrap: anywhere; } .kn .an-points b { color: var(--an-fg); font-weight: 600; } .kn .an-point-ico { flex: none; display: grid; place-items: center; width: 26px; height: 26px; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: var(--an-fg); } .kn .an-ico { width: 15px; height: 15px; } /* Kennzahlen */ .kn .an-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--an-gap); } .kn .an-kpi { display: flex; flex-direction: column; padding: 14px 0 8px; } .kn .an-k { display: flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 500; color: var(--an-muted); } .kn .an-star { font-size: 11px; color: var(--an-faint); } .kn .an-v { display: block; margin: 6px 0 4px; font-size: 28px; font-weight: 700; line-height: 1.15; letter-spacing: -.02em; font-variant-numeric: tabular-nums; } .kn .an-sub { display: block; margin: -2px 0 4px; font-size: 12px; color: var(--an-muted); } .kn .an-cmp { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; min-height: 24px; margin-bottom: 10px; } .kn .an-vs { font-size: 12px; color: var(--an-faint); } .kn .an-delta { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 6px; border-radius: 4px; font-size: 12px; font-weight: 500; white-space: nowrap; font-variant-numeric: tabular-nums; } .kn .an-delta.up { background: var(--an-up-bg); color: #006908; } .kn .an-delta.down { background: var(--an-down-bg); color: var(--an-down); } .kn .an-delta.flat { background: #ebeef1; color: #414552; } .kn .an-spark { display: block; width: 100%; height: 38px; margin-top: auto; } .kn .an-spark-area { fill: #ebeef1; stroke: none; } .kn .an-spark-line { stroke: var(--an-acc); stroke-width: 1.6px; stroke-linejoin: round; stroke-linecap: round; } /* Diagramm und Kontakt-Aktionen */ .kn .an-row2 { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: var(--an-gap); align-items: stretch; } .kn .an-chartbox, .kn .an-contacts { display: flex; flex-direction: column; } .kn .an-legend { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: 12px; font-weight: 500; color: var(--an-muted); } .kn .an-leg { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; } .kn .an-leg-line { display: inline-block; width: 18px; height: 0; border-top: 3px solid var(--an-acc); border-radius: 2px; } .kn .an-leg-prev { border-top: 2px dashed var(--an-prev); } .kn .an-chartwrap { position: relative; flex: 1 1 auto; display: flex; align-items: center; min-height: 0; container-type: inline-size; } .kn .an-chart { display: block; width: 100%; height: auto; max-height: 100%; overflow: visible; touch-action: pan-y; } .kn .an-grid { stroke: var(--an-line); stroke-width: 1px; vector-effect: non-scaling-stroke; } /* Achsenschrift in viewBox-Einheiten: je nach Breite so gewählt, dass sie immer ca. 11 bis 12 px groß erscheint */ .kn .an-axis { fill: var(--an-muted); font-size: 13px; } @container (max-width: 279px) { .kn .an-axis { font-size: 28px; } } @container (min-width: 280px) and (max-width: 329px) { .kn .an-axis { font-size: 24px; } } @container (min-width: 330px) and (max-width: 379px) { .kn .an-axis { font-size: 21px; } } @container (min-width: 380px) and (max-width: 439px) { .kn .an-axis { font-size: 18px; } } @container (min-width: 440px) and (max-width: 499px) { .kn .an-axis { font-size: 16px; } } @container (min-width: 500px) and (max-width: 559px) { .kn .an-axis { font-size: 14px; } } @container (min-width: 560px) and (max-width: 629px) { .kn .an-axis { font-size: 12.5px; } } @container (min-width: 630px) and (max-width: 699px) { .kn .an-axis { font-size: 11px; } } @container (min-width: 700px) { .kn .an-axis { font-size: 10px; } } .kn .an-area { fill: #f6f8fa; stroke: none; } .kn .an-prev { fill: none; stroke: var(--an-prev); stroke-width: 2px; stroke-dasharray: 5 5; stroke-linejoin: round; vector-effect: non-scaling-stroke; } .kn .an-line { fill: none; stroke: var(--an-acc); stroke-width: 2.4px; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; } /* Punkte erst beim Zeigen oder Antippen (analyse.js setzt "on") */ .kn .an-dot { fill: var(--an-acc); stroke: #fff; stroke-width: 3px; vector-effect: non-scaling-stroke; opacity: 0; pointer-events: none; } .kn .an-dot.on { opacity: 1; } .kn .an-tip { position: absolute; z-index: 3; padding: 6px 10px; border-radius: var(--kn-radius); background: #111; box-shadow: var(--kn-ring); color: #fff; font-size: 12px; font-weight: 500; white-space: nowrap; pointer-events: none; transform: translate(-50%, calc(-100% - 12px)); } .kn .an-tip.below { transform: translate(-50%, 12px); } .kn .an-tip[hidden] { display: none; } .kn .an-sum-n { font-size: 14px; font-weight: 600; color: var(--an-fg2); font-variant-numeric: tabular-nums; } .kn .an-crows { margin: 0 0 12px; padding: 0; list-style: none; } .kn .an-crow { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto auto; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--an-line); } .kn .an-cico { display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--kn-radius); background: var(--an-acc-soft); color: var(--an-fg); } .kn .an-cico .an-ico { width: 16px; height: 16px; } .kn .an-cname { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .kn .an-crow b { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; } .kn .an-quote { margin: auto 0 0; padding: 10px 12px; border-radius: var(--kn-radius); background: var(--kn-bg-subtle); color: var(--an-fg2); font-size: 13px; } /* Ranglisten */ .kn .an-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--an-gap); } .kn .an-ltabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; } .kn .an-ltab { min-height: 28px; padding: 0 10px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: var(--an-muted); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; transition: background-color .12s; } .kn .an-ltab:hover { color: var(--an-fg); background: var(--kn-bg-hover); } .kn .an-ltab.on { background: var(--an-acc); color: var(--an-on-acc); } .kn .an-lrows { margin: 0; padding: 0; list-style: none; } .kn .an-lr { display: grid; grid-template-columns: minmax(0, 1fr) auto 52px; align-items: center; gap: 12px; padding: 6px 0; } .kn .an-lab { position: relative; display: block; min-width: 0; padding: 4px 8px; border-radius: var(--kn-radius); overflow: hidden; } .kn .an-fill { position: absolute; inset: 0 auto 0 0; border-radius: var(--kn-radius); background: var(--an-bar-fill); } .kn .an-name { position: relative; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .kn .an-lr b { font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; } .kn .an-lr em { font-size: 12px; font-style: normal; text-align: right; color: var(--an-muted); font-variant-numeric: tabular-nums; } .kn .an-more { min-height: 28px; margin-top: 8px; padding: 0 12px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: var(--an-fg2); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; } .kn .an-more:hover { color: var(--an-fg); background: var(--kn-bg-hover); } /* Datenbasis und Heatmap-Karte */ .kn .an-basis-row { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 16px; } .kn .an-ring { width: 72px; height: 72px; } .kn .an-ring-bg { stroke: #ebeef1; } .kn .an-ring-fg { stroke: var(--an-acc); } .kn .an-ring-n { fill: var(--an-fg); font-size: 15px; font-weight: 700; } .kn .an-basis-text { margin: 0; color: var(--an-fg2); } .kn .an-basis-main { display: block; margin-bottom: 2px; font-weight: 600; color: var(--an-fg); } .kn .an-teaser-row { display: flex; align-items: center; flex-wrap: wrap; gap: 14px 18px; } .kn .an-teaser-row p { flex: 1 1 170px; min-width: 0; margin: 0; color: var(--an-fg2); } /* kleine Abbildung einer Heatmap: zwei heiße Stellen und eine ruhige, nur aus Flächen */ .kn .an-mini-heat { position: relative; flex: none; width: 110px; height: 74px; border-radius: var(--kn-radius); background: #f6f8fa; box-shadow: inset 0 0 0 1px var(--an-line); overflow: hidden; } .kn .an-mini-heat::before { content: ''; position: absolute; left: 18px; top: 24px; width: 22px; height: 22px; border-radius: 50%; background: #b3093c; box-shadow: 0 0 0 7px #ffe7f2, 52px 18px 0 -5px #b3093c, 52px 18px 0 2px #ffe7f2; } .kn .an-mini-heat::after { content: ''; position: absolute; left: 50px; top: 8px; width: 12px; height: 12px; border-radius: 50%; background: #006908; box-shadow: 0 0 0 4px #d7f7c2; } .kn .an-btn { flex: none; min-height: 36px; padding: 0 14px; border: 0; border-radius: var(--kn-radius); background: var(--an-acc); box-shadow: var(--kn-shadow-btn); color: var(--an-on-acc); font: inherit; font-weight: 500; white-space: nowrap; cursor: pointer; transition: background-color .12s; } .kn .an-btn:hover { background: var(--kn-accent-hover); } /* Laden und Fehler (ohne Bewegung: ruhige Platzhalter) */ .kn .an-sk { position: relative; overflow: hidden; } .kn .an-sk > i { display: block; height: 14px; margin-top: 12px; border-radius: var(--kn-radius); background: #ebeef1; } .kn .an-sk > i:first-child { width: 38%; margin-top: 0; } .kn .an-sk > i:nth-child(2) { width: 62%; height: 28px; } .kn .an-sk > i:nth-child(3) { width: 85%; } .kn .an-skeleton .an-sum { min-height: 150px; } .kn .an-skeleton .an-kpi { min-height: 128px; } .kn .an-skeleton .an-chartbox, .kn .an-skeleton .an-contacts { min-height: 300px; } .kn .an-skeleton .an-rank { min-height: 230px; } .kn .an-error { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 16px; } .kn .an-error p { margin: 0; } /* ---- Einstellungen ---- */ .kn .an-dl { margin: 0; } .kn .an-dl > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding: 10px 0; border-top: 1px solid var(--an-line); } .kn .an-dl dt { color: var(--an-muted); } .kn .an-dl dd { margin: 0; text-align: right; overflow-wrap: anywhere; } .kn .an-swatch { display: inline-block; width: 14px; height: 14px; margin-right: 4px; border-radius: 4px; box-shadow: inset 0 0 0 1px var(--an-line2); vertical-align: -2px; } .kn .an-docs ul { margin: 0; padding: 0; list-style: none; } .kn .an-docs li { padding: 8px 0; border-top: 1px solid var(--an-line); } .kn #an-off p { margin: 0 0 12px; color: var(--an-fg2); } .kn .an-confirm { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 13px; } .kn .an-ghost { min-height: 36px; padding: 0 14px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); color: inherit; font: inherit; font-weight: 500; cursor: pointer; } .kn .an-ghost:hover { background: var(--kn-bg-hover); } .kn .an-danger { color: var(--kn-danger); } .kn .an .error { margin: 0 0 12px; text-align: left; } .kn #an-off p.error { color: var(--kn-danger); } /* ---- Einschalten und andere Zustände ---- */ .kn .an-state p, .kn .an-panel p { margin: 0 0 12px; color: var(--an-fg2); } .kn .an-state p:last-child { margin-bottom: 0; } .kn .an-panel > p, .kn .an-state p { max-width: 75ch; } .kn .an-panel > h3, .kn .an-state > h3 { margin: 0 0 10px; font-size: 18px; line-height: 26px; font-weight: 600; text-transform: none; color: var(--an-fg); } .kn .an-h4 { margin: 20px 0 8px; font-size: 14px; font-weight: 600; } .kn .an-colors { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; } .kn .an-colors input[type=color] { width: 48px; height: 36px; padding: 2px; border: 0; border-radius: var(--kn-radius); background: var(--kn-bg); box-shadow: var(--kn-ring); cursor: pointer; } .kn .an-presets { display: flex; flex-wrap: wrap; gap: 8px; } .kn .an-preset { width: 32px; height: 32px; padding: 0; border: 0; border-radius: 50%; box-shadow: var(--kn-ring); cursor: pointer; } .kn .an-hint { margin: 10px 0 0; font-size: 13px; color: var(--an-warn); } .kn .an-panel > p.an-hint, .kn .an-panel > p#an-legal { max-width: 75ch; } .kn #an-legal { color: var(--an-fg2); } .kn #an-legal a { color: var(--an-fg); text-decoration: underline; text-decoration-color: var(--kn-line-strong); text-underline-offset: 3px; } .kn .an-ctl { margin: 14px 0; padding: 12px 14px; border-radius: var(--kn-radius); background: var(--kn-bg-subtle); } .kn .an-ctl p { margin: 0 0 6px; } .kn .an-ctl p:last-child { margin: 0; } .kn .an .fn-consent { max-width: 75ch; color: var(--an-fg2); } /* Banner-Vorschau: bildet den Banner auf der Seite des Kunden ab, immer hell; die Knopffarbe kommt inline aus dem Akzent des Kunden */ .kn .an-bn { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin: 16px 0; padding: 14px 20px; border-radius: var(--kn-radius-lg); background: #fff; color: #111; box-shadow: var(--kn-ring); font: 15px/1.45 system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; } .kn .an .an-bn-text { flex: 1 1 260px; min-width: 0; max-width: none; margin: 0; color: #111; font-size: 15px; line-height: 1.45; } .kn .an-bn-link { text-decoration: underline; } .kn .an-bn-row { display: flex; gap: 10px; flex: none; } .kn .an-bn-btn { display: inline-flex; align-items: center; justify-content: center; width: 150px; height: 44px; padding: 0 20px; border: 2px solid; border-radius: 8px; font: 600 15px/1 system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; } /* ---- Heatmap ---- */ .kn .an-heat > p { margin: 0 0 14px; color: var(--an-fg2); } .kn .an-heat .hs-head { margin-bottom: 10px; } .kn .an-heat-bar { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .kn .an-heat-bar label { display: grid; gap: 4px; flex: 1 1 220px; min-width: 0; max-width: 420px; font-weight: 500; } .kn .an-heat-bar select { width: 100%; min-width: 0; text-overflow: ellipsis; } .kn .an-heat-bar select option { background: #fff; color: #1a1f36; } .kn .hs-stage { display: grid; grid-template-columns: minmax(0, 3.7fr) minmax(0, 1fr); align-items: end; gap: clamp(16px, 3vw, 40px); max-width: 980px; margin: 24px auto 4px; } .kn .hs-stage[data-big="t"] { grid-template-columns: minmax(0, 2.1fr) minmax(0, 1fr); max-width: 620px; } .kn .hs-dev { display: flex; flex-direction: column; align-items: center; gap: 14px; min-width: 0; margin: 0; } .kn .hs-frame { width: 100%; } .kn .hs-cap { min-height: 1.5em; font-size: 13px; color: var(--an-muted); text-align: center; } .kn .hs-dev .dm-canvas { background: #fff; } .kn .hs-site { position: absolute; left: 0; background: #fff; } .kn .hs-site iframe { display: block; width: 100%; height: 100%; border: 0; background: #fff; } /* ---- mittlere Breite, Handy ---- */ @media (max-width: 1100px) { .kn .an-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } .kn .an-row2 { grid-template-columns: minmax(0, 1fr); } } @media (min-width: 1101px) { .kn .an-teaser-row { flex-wrap: nowrap; } .kn .an-teaser-row p { flex-basis: 0; } } @media (max-width: 880px), (pointer: coarse) and (max-height: 500px) { .kn .an-seg { display: flex; width: 100%; } .kn .an-seg button { flex: 1 1 0; min-height: 44px; padding: 0 8px; } .kn .an-tabs { gap: 20px; } .kn .an-tabbtn { display: inline-flex; align-items: center; min-height: 44px; padding-top: 0; padding-bottom: 0; } .kn .an-ltab, .kn .an-more, .kn .an-btn, .kn .an-ghost { min-height: 44px; } .kn .an-preset { width: 44px; height: 44px; } .kn .an-ltab { display: inline-flex; align-items: center; padding: 0 14px; } .kn .an-v { font-size: 26px; } .kn .an-row2, .kn .an-pair, .kn .an-points { grid-template-columns: minmax(0, 1fr); } .kn .an-sum { padding: 18px 16px; } .kn .an-lead { font-size: 18px; line-height: 26px; } .kn .an-sum-empty .an-lead { font-size: 16px; } .kn .an-heat-bar label { max-width: none; } .kn .an-bn { display: block; margin: 12px 0; padding: 16px; } .kn .an-bn-row { flex-direction: column; margin-top: 12px; } .kn .an-bn-btn { width: 100%; } } @media (max-width: 640px) { .kn .hs-stage, .kn .hs-stage[data-big="t"] { grid-template-columns: minmax(0, 1fr); gap: 28px; } .kn .hs-dev--phone .hs-frame { width: 62%; } } @media (prefers-reduced-motion: reduce) { .kn .an-seg button, .kn .an-ltab, .kn .an-btn { transition: none; } }