:root { color-scheme: light; --hintergrund: #f4f3f0; --flaeche: #fcfcfb; --text: #0b0b0b; --text-2: #52514e; --rand: #dcdad4; --raster: #e6e4df; --akzent: #2a78d6; --akzent-text: #ffffff; --fehler: #c62828; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; line-height: 1.5; } @media (prefers-color-scheme: dark) { :root { color-scheme: dark; --hintergrund: #121211; --flaeche: #1a1a19; --text: #f0efec; --text-2: #c3c2b7; --rand: #34332f; --raster: #2a2a28; --akzent: #3987e5; --fehler: #ef7b7b; } } * { box-sizing: border-box; } body { margin: 0; background: var(--hintergrund); color: var(--text); } #root { max-width: 1280px; margin: 0 auto; padding: 16px; } [hidden] { display: none !important; } h1, h2, h3 { margin: 0 0 12px; line-height: 1.25; } h1 { font-size: 1.5rem; } h2 { font-size: 1.1rem; } h3 { font-size: 0.95rem; margin-top: 20px; color: var(--text-2); } p { margin: 0 0 12px; } .kopf { display: flex; flex-wrap: wrap; align-items: end; justify-content: space-between; gap: 12px; margin-bottom: 16px; } .kopf p { margin: 0; color: var(--text-2); } .reiter, .werkzeug, .experiment-wahl { display: inline-flex; border: 1px solid var(--rand); border-radius: 8px; overflow: hidden; background: var(--flaeche); } .experiment-wahl { margin-bottom: 12px; } .reiter__tab, .werkzeug__option { border: 0; background: transparent; color: var(--text); padding: 8px 14px; font: inherit; cursor: pointer; } .reiter__tab + .reiter__tab, .werkzeug__option + .werkzeug__option { border-left: 1px solid var(--rand); } .reiter__tab.aktiv, .werkzeug__option.aktiv { background: var(--akzent); color: var(--akzent-text); } .karte { background: var(--flaeche); border: 1px solid var(--rand); border-radius: 12px; padding: 16px; min-width: 0; } .simulation { display: grid; grid-template-columns: minmax(0, 1fr) 320px; grid-template-areas: "gitter parameter" "verlauf parameter"; gap: 16px; align-items: start; } .simulation__gitter { grid-area: gitter; } .simulation__parameter { grid-area: parameter; } .simulation__verlauf { grid-area: verlauf; } @media (max-width: 860px) { .simulation { grid-template-columns: minmax(0, 1fr); grid-template-areas: "gitter" "parameter" "verlauf"; } } .experimente { display: grid; gap: 16px; } .gitter { display: block; width: 100%; max-width: 640px; margin: 0 auto; image-rendering: pixelated; border-radius: 4px; } .gitter--interaktiv { cursor: crosshair; touch-action: none; } .legende { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 16px; list-style: none; padding: 0; margin: 12px 0; font-size: 0.875rem; color: var(--text-2); } .legende li { display: flex; align-items: center; gap: 6px; } .legende__farbe { width: 12px; height: 12px; border-radius: 3px; outline: 1px solid var(--rand); } .steuerung { display: flex; flex-wrap: wrap; align-items: end; gap: 8px; margin-bottom: 12px; } .steuerung .werkzeug { margin-left: auto; } .knopf { border: 1px solid var(--rand); background: var(--flaeche); color: var(--text); border-radius: 8px; padding: 8px 14px; font: inherit; cursor: pointer; } .knopf:disabled { opacity: 0.5; cursor: default; } .knopf--primaer { background: var(--akzent); border-color: var(--akzent); color: var(--akzent-text); min-width: 88px; } .kennzahlen { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; margin: 0 0 12px; } .kennzahlen div { border: 1px solid var(--rand); border-radius: 8px; padding: 8px 12px; } .kennzahlen dt { font-size: 0.8rem; color: var(--text-2); } .kennzahlen dd { margin: 0; font-size: 1.15rem; font-variant-numeric: tabular-nums; } .hinweis { font-size: 0.875rem; color: var(--text-2); } .feld { display: grid; gap: 4px; margin-bottom: 12px; font-size: 0.9rem; } .feld--inline { margin-bottom: 0; } .feld__zeile { display: flex; gap: 8px; } .feld__zeile input { flex: 1; min-width: 0; } input[type="number"], select { font: inherit; color: var(--text); background: var(--flaeche); border: 1px solid var(--rand); border-radius: 8px; padding: 7px 10px; } .feld--inline input { width: 110px; } .regler { display: grid; gap: 2px; margin-bottom: 10px; font-size: 0.9rem; } .regler__kopf { display: flex; justify-content: space-between; } .regler output { color: var(--text-2); font-variant-numeric: tabular-nums; } .regler input { width: 100%; accent-color: var(--akzent); } progress { width: 100%; accent-color: var(--akzent); } .fehler { color: var(--fehler); } .tabelle-rahmen { overflow-x: auto; } table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } th, td { text-align: left; padding: 8px 12px; border-bottom: 1px solid var(--rand); white-space: nowrap; } th { font-size: 0.85rem; font-weight: 600; color: var(--text-2); } .beispiele { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; } .beispiele figure { margin: 0; } .beispiele .gitter { max-width: 400px; } .beispiele figcaption { margin-top: 8px; font-size: 0.875rem; text-align: center; color: var(--text-2); } .beispiele strong { color: var(--text); } /* Recharts zeichnet SVG; Farben über CSS, damit sie dem Farbschema folgen */ .diagramm .recharts-cartesian-grid line { stroke: var(--raster); } .diagramm .recharts-cartesian-axis-line { stroke: var(--rand); } .diagramm .recharts-text { fill: var(--text-2); font-size: 12px; } .diagramm .recharts-legend-item-text { color: var(--text) !important; } .diagramm .recharts-tooltip-cursor { stroke: var(--text-2); }