@import "tailwindcss"; /* * Bindet die `dark:`-Utility-Variante an die `.dark`-Klasse. * * Tailwind 4 haengt `dark:` per Vorgabe an `prefers-color-scheme`, also an die * Einstellung des Betriebssystems. Diese Anwendung schaltet den Modus aber ueber * next-themes mit `attribute="class"` (siehe app/layout.tsx) — der Nutzer waehlt * hell/dunkel im Portal, unabhaengig von seinem System. * * Ohne diese Zeile klaffte beides auseinander: die Farbtokens unter `.dark` weiter * unten schalteten korrekt um, jede einzelne `dark:`-Utility im Quellcode blieb * dagegen wirkungslos, sobald System und Portal-Einstellung nicht zufaellig * uebereinstimmten. Betroffen waren ueber 100 Stellen — Status-, Warn- und * Fehlerfarben, Hinweisboxen und Badges in der Administration. Der Fehler fiel * lange nicht auf, weil Hintergrund und Textfarbe eben NICHT ueber `dark:` laufen, * die Oberflaeche also grundsaetzlich dunkel wurde und nur die Feinheiten fehlten. * * Aufgedeckt beim Logo-Einbau (Quick 260907-fgv, WINDOWS.md #13), dessen * Plattenkontur `dark:stroke-white/25` aus genau diesem Grund nicht griff. */ @custom-variant dark (&:where(.dark, .dark *)); @theme inline { --color-primary: var(--primary); --color-primary-foreground: var(--primary-foreground); --color-secondary: var(--secondary); --color-secondary-foreground: var(--secondary-foreground); --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); --color-card-foreground: var(--card-foreground); --color-muted: var(--muted); --color-muted-foreground: var(--muted-foreground); --color-destructive: var(--destructive); --color-destructive-foreground: var(--destructive-foreground); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-sidebar: var(--sidebar); --color-sidebar-foreground: var(--sidebar-foreground); --color-sidebar-accent: var(--sidebar-accent); --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); /* Statusfarben (quick-260924-h7x): Flaechen (Balken, Punkte, Leisten) und die abgedunkelte bzw. aufgehellte Textvariante `-fg` fuer Schrift. */ --color-status-ok: var(--status-ok); --color-status-warn: var(--status-warn); --color-status-down: var(--status-down); --color-status-idle: var(--status-idle); --color-status-orphan: var(--status-orphan); --color-status-ok-fg: var(--status-ok-fg); --color-status-warn-fg: var(--status-warn-fg); --color-status-down-fg: var(--status-down-fg); --color-status-idle-fg: var(--status-idle-fg); --color-status-orphan-fg: var(--status-orphan-fg); --color-well: var(--well); --color-link: var(--link); --color-tile: var(--tile); --color-tile-foreground: var(--tile-foreground); --color-primary-strong: var(--primary-strong); --color-input-strong: var(--input-strong); --color-appbar: var(--appbar); --color-appbar-foreground: var(--appbar-foreground); --color-appbar-muted: var(--appbar-muted); --color-appbar-hover: var(--appbar-hover); --color-sidebar-hover: var(--sidebar-hover); --radius-sm: calc(var(--radius) - 2px); --radius-md: var(--radius); --radius-lg: calc(var(--radius) + 2px); } /* Fluent-2-Hoehenstufen: shadow-sm = shadow2 (ruhende Karte), shadow-md = shadow4 (angehobene/Hover-Karte), shadow-lg = shadow16 (Menues, Dialoge). Im dunklen Erscheinungsbild tragen Haarlinien statt Schatten (--border). */ @theme { --shadow-sm: 0 0 2px oklch(0 0 0 / 0.12), 0 1px 2px oklch(0 0 0 / 0.14); --shadow-md: 0 0 2px oklch(0 0 0 / 0.12), 0 4px 8px oklch(0 0 0 / 0.14); --shadow-lg: 0 0 2px oklch(0 0 0 / 0.12), 0 8px 16px oklch(0 0 0 / 0.14); --shadow-xl: 0 0 8px oklch(0 0 0 / 0.12), 0 14px 28px oklch(0 0 0 / 0.14); } :root { /* Design „Mosaik“ (Fluent 2 / GitHub als Vorbild): 6 px fuer Bedien- elemente (rounded-md), 8 px fuer Karten (rounded-lg), 12 px fuer grosse Flaechen (rounded-xl). */ --radius: 0.375rem; /* Segoe UI Variable zuerst: unter Windows (Desktop-Client) wirkt die Oberflaeche damit wie eine native Anwendung; sonst Inter bzw. Systemschrift. */ --font-sans: "Segoe UI Variable Text", "Segoe UI", Inter, system-ui, -apple-system, sans-serif; /* Layout dimensions */ --sidebar-width: 240px; --sidebar-width-collapsed: 64px; --header-height: 48px; /* Light mode colors (OKLCH) — Arbeitsflaeche leicht kuehlgrau, Karten weiss */ --background: oklch(0.972 0.003 260); --foreground: oklch(0.2 0.006 260); --card: oklch(1 0 0); --card-foreground: oklch(0.2 0.006 260); --primary: oklch(0.91 0.19 102); --primary-foreground: oklch(0.20 0.02 90); --secondary: oklch(0.955 0.003 260); --secondary-foreground: oklch(0.2 0.006 260); --muted: oklch(0.955 0.003 260); --muted-foreground: oklch(0.49 0.01 260); --accent: oklch(0.955 0.003 260); --accent-foreground: oklch(0.2 0.006 260); --destructive: oklch(0.55 0.2 27); --destructive-foreground: oklch(0.98 0 0); --border: oklch(0.915 0.004 260); --input: oklch(0.87 0 0); /* Untere Kante von Eingabefeldern (Fluent-Eingabefeld). */ --input-strong: oklch(0.58 0.005 260); /* Tastaturfokus: dunkler Ring statt Gelb — Gelb auf Weiss erreicht nur 1,3:1 und waere als Fokusanzeige kaum sichtbar. */ --ring: oklch(0.3 0.01 260); /* Verweise: nie gelbe Schrift auf Weiss. 5,9:1 auf --card. */ --link: oklch(0.50 0.15 255); /* Neutrale Modul-Kachel (Runde 2: einfarbig statt bunt). */ --tile: oklch(0.93 0.004 260); --tile-foreground: oklch(0.35 0.01 260); /* Akzent fuer duenne Markierungen (Auswahlpille, Reiter-Unterstrich) auf hellem Grund: die Akzentfarbe um knapp ein Drittel abgedunkelt, damit auch Gelb neben Hellgrau noch erkennbar bleibt. */ --primary-strong: color-mix(in oklab, var(--primary) 70%, oklch(0.3 0.03 90)); /* Kopfzeile (dunkle App-Leiste wie GitHub / Microsoft 365) */ --appbar: oklch(0.24 0.012 260); --appbar-foreground: oklch(0.985 0 0); --appbar-muted: oklch(0.985 0 0 / 0.72); --appbar-hover: oklch(1 0 0 / 0.08); /* Sidebar tokens */ --sidebar: oklch(0.975 0.003 260); --sidebar-foreground: oklch(0.2 0.006 260); --sidebar-accent: oklch(0.925 0.005 260); --sidebar-accent-foreground: oklch(0.16 0.006 260); --sidebar-hover: oklch(0.945 0.004 260); --sidebar-border: oklch(0.915 0.004 260); /* Statusfarben (quick-260924-h7x). Die Flaechentoene stammen aus dem Design-Plan; als Schrift auf Weiss erreichen sie aber nur 2,6:1 bis 4,9:1 (gemessen, WCAG-Formel). Fuer Text gibt es deshalb die `-fg`- Variante, gemessen auf --card: ok 5,6:1, warn 5,7:1, down 6,1:1, idle/orphan 6,0:1 (auf der Pille mit 12 % Statusflaeche >= 4,9:1). */ --status-ok: oklch(0.62 0.15 152); --status-warn: oklch(0.72 0.15 70); --status-down: oklch(0.58 0.21 27); --status-idle: oklch(0.62 0.02 260); --status-orphan: oklch(0.55 0.01 260); --status-ok-fg: oklch(0.50 0.13 152); --status-warn-fg: oklch(0.52 0.12 60); --status-down-fg: oklch(0.52 0.20 27); --status-idle-fg: oklch(0.50 0.02 260); --status-orphan-fg: oklch(0.50 0.01 260); /* Eingelassene Messfelder. */ --well: oklch(0.972 0.003 260); } .dark { --background: oklch(0.2 0.01 260); --foreground: oklch(0.95 0.003 260); --card: oklch(0.245 0.01 260); --card-foreground: oklch(0.95 0.003 260); --primary: oklch(0.91 0.19 102); --primary-foreground: oklch(0.20 0.02 90); --secondary: oklch(0.28 0.01 260); --secondary-foreground: oklch(0.95 0.003 260); --muted: oklch(0.28 0.01 260); --muted-foreground: oklch(0.72 0.01 260); --accent: oklch(0.28 0.01 260); --accent-foreground: oklch(0.95 0.003 260); --destructive: oklch(0.6 0.2 27); --destructive-foreground: oklch(0.98 0 0); /* Dunkel: feine helle Haarlinie statt Schatten. */ --border: oklch(1 0 0 / 0.09); --input: oklch(1 0 0 / 0.16); --input-strong: oklch(1 0 0 / 0.42); --ring: oklch(0.92 0.005 260); --link: oklch(0.78 0.11 250); --tile: oklch(0.32 0.01 260); --tile-foreground: oklch(0.88 0.005 260); --primary-strong: var(--primary); --appbar: oklch(0.18 0.01 260); --appbar-foreground: oklch(0.985 0 0); --appbar-muted: oklch(0.985 0 0 / 0.7); --appbar-hover: oklch(1 0 0 / 0.08); /* Sidebar tokens (dark) */ --sidebar: oklch(0.21 0.01 260); --sidebar-foreground: oklch(0.93 0.003 260); --sidebar-accent: oklch(1 0 0 / 0.08); --sidebar-accent-foreground: oklch(0.98 0 0); --sidebar-hover: oklch(1 0 0 / 0.05); --sidebar-border: oklch(1 0 0 / 0.08); /* Statusfarben (dark). Textvariante auf --card gemessen: ok 7,4:1, warn 8,5:1, down 6,1:1, idle 6,1:1, orphan 5,6:1. */ --status-ok: oklch(0.72 0.15 152); --status-warn: oklch(0.80 0.14 75); --status-down: oklch(0.68 0.19 27); --status-idle: oklch(0.60 0.02 260); --status-orphan: oklch(0.52 0.01 260); --status-ok-fg: oklch(0.76 0.15 152); --status-warn-fg: oklch(0.82 0.14 75); --status-down-fg: oklch(0.74 0.16 27); --status-idle-fg: oklch(0.72 0.02 260); --status-orphan-fg: oklch(0.70 0.01 260); --well: oklch(0.215 0.01 260); } body { font-family: var(--font-sans); font-size: 0.875rem; line-height: 1.25rem; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* App shell main content responsive margin */ @media (min-width: 768px) { .app-shell-main { margin-left: var(--current-sidebar-width, var(--sidebar-width)); } } /* Tailwind-Preflight setzt in @layer base `ul, ol { list-style: none }`; das Markdown-Stylesheet von @uiw/react-markdown-preview stellt es nicht wieder her — deshalb fehlten auf „Was ist neu“ und in der Notiz-Vorschau die Aufzaehlungspunkte. Diese Regel liegt bewusst NICHT in einem @layer, damit sie die Layer-Regel unabhaengig von Spezifitaet schlaegt. Aufgabenlisten mit Kaestchen (`- [ ]`) bleiben ohne Punkt (quick-260916-jvj). */ .wmde-markdown ul { list-style: disc; } .wmde-markdown ul ul { list-style: circle; } .wmde-markdown ol { list-style: decimal; } .wmde-markdown ul.contains-task-list, .wmde-markdown li.task-list-item { list-style: none; } /* Tastaturfokus sichtbar ueberall, auch wo ein Bauteil keinen eigenen Fokusring setzt (im Basis-Layer, damit `outline-none` + eigener Ring eines Bauteils Vorrang behalten). Mausklicks loesen :focus-visible nicht aus. */ @layer base { :where(a, button, [role="tab"], [role="button"], summary, [tabindex]):focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; } } /* Fluent-Eingabefeld: untere Kante eine Stufe dunkler; Fokus = dunklerer Rahmen plus 2 px Akzentlinie unten. Gilt fuer Textfelder und Auswahllisten mit dem ueblichen `border-input`/`border-border`-Rahmen; Fehlerzustaende (aria-invalid, border-destructive) behalten ihre Farbe. Bewusst ausserhalb eines @layer, damit die Regel die Tailwind-Utilities schlaegt. `.field-plain` nimmt ein Feld aus (Such-Widget, Nutzerwunsch 29.09.: die helle Unterkante wirkte im Dunkelmodus wie eine weisse Linie). */ :is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="color"], [type="file"]), select, textarea):is(.border-input, .border-border):not([aria-invalid="true"], .border-destructive, .field-plain) { border-bottom-color: var(--input-strong); } :is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="color"], [type="file"]), select, textarea):is(.border-input, .border-border):not([aria-invalid="true"], .border-destructive, .field-plain):focus { outline: none; border-color: var(--input-strong); border-bottom-color: var(--primary); box-shadow: inset 0 -1px 0 var(--primary); } /* Karteneffekt in einer Klasse fuer neue Flaechen: hell Schatten, dunkel Haarlinie. */ .surface { background: var(--card); border-radius: 0.5rem; box-shadow: var(--shadow-sm); } .dark .surface { box-shadow: none; outline: 1px solid var(--border); outline-offset: -1px; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } } /* Knoepfe (Design „Mosaik“, Fluent 2): 32 px hoch, 6 px Radius, 14 px halbfett. Primaer = Akzentflaeche mit dunkler Schrift, Sekundaer = weisse Flaeche mit Rahmen, Subtil = ohne Flaeche. Im Komponenten-Layer, damit einzelne Utilities (etwa `w-full`) weiter ueberschreiben koennen. */ @layer components { .btn { display: inline-flex; height: 2rem; align-items: center; justify-content: center; gap: 0.5rem; border-radius: 0.375rem; border: 1px solid transparent; padding-inline: 0.75rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 600; white-space: nowrap; transition: background-color 120ms, border-color 120ms, color 120ms; } .btn:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; } .btn:disabled { cursor: not-allowed; } /* Fluent: deaktiviert = graue Flaeche, graue Schrift (nicht verblasstes Gelb). */ .btn-primary:disabled { background-color: var(--muted); color: var(--muted-foreground); border-color: var(--border); } .btn-secondary:disabled, .btn-subtle:disabled { color: var(--muted-foreground); } .btn-primary { background-color: var(--primary); color: var(--primary-foreground); } .btn-primary:hover:not(:disabled) { background-color: color-mix(in oklab, var(--primary) 88%, black); } .btn-secondary { background-color: var(--card); color: var(--foreground); border-color: oklch(0.87 0 0); box-shadow: 0 1px 2px oklch(0 0 0 / 0.06); } .btn-secondary:hover:not(:disabled) { background-color: oklch(0.965 0 0); } .dark .btn-secondary { border-color: var(--input); box-shadow: none; } .dark .btn-secondary:hover:not(:disabled) { background-color: var(--muted); } .btn-subtle { background-color: transparent; color: var(--foreground); } .btn-subtle:hover:not(:disabled) { background-color: var(--muted); } .btn-icon { width: 2rem; padding-inline: 0; } /* Knopf auf der dunklen App-Leiste (Dashboard-Aktionen, quick-260928-vxe). */ .btn-appbar { background-color: transparent; color: var(--appbar-muted); } .btn-appbar:hover:not(:disabled) { background-color: var(--appbar-hover); color: var(--appbar-foreground); } .btn-appbar:focus-visible { outline-color: var(--appbar-foreground); outline-offset: -2px; } /* Verweis: dunkle bzw. blaue Schrift, nie gelb auf Weiss. */ .link { color: var(--link); text-decoration-line: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; text-decoration-color: color-mix(in oklab, var(--link) 40%, transparent); } .link:hover { text-decoration-color: currentColor; } } /* Markdown (Notiz-Kachel, „Was ist neu“): Fluent-Schriftgroessen statt der GitHub-Vorgaben (16 px Grundschrift, 2em-Ueberschriften), Hintergrund transparent, Farben aus den Tokens. */ :root .wmde-markdown { font-family: var(--font-sans); font-size: 0.875rem; line-height: 1.5; background-color: transparent !important; color: var(--foreground) !important; --color-border-default: var(--border); --color-border-muted: var(--border); --color-accent-fg: var(--link); --color-fg-default: var(--foreground); --color-fg-muted: var(--muted-foreground); } :root .wmde-markdown h1 { font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; } :root .wmde-markdown h2 { font-size: 1rem; line-height: 1.375rem; font-weight: 600; } :root .wmde-markdown h3, :root .wmde-markdown h4 { font-size: 0.875rem; line-height: 1.25rem; font-weight: 600; } :root .w-md-editor { background-color: transparent !important; box-shadow: none !important; } /* Navigationseintrag mit Fluent-Auswahlpille, gesteuert ueber aria-current (Einstellungs- und Verwaltungsnavigation). */ .nav-item { position: relative; } .nav-item[aria-current="page"]::before { content: ""; position: absolute; left: 0; top: 50%; width: 3px; height: 1rem; margin-top: -0.5rem; border-radius: 9999px; background-color: var(--primary-strong); } /* Checkboxen und Optionsfelder in der Link-Farbe statt Browser-Blau bzw. Gelb (Gelb mit weissem Haken waere kaum lesbar). */ input[type="checkbox"], input[type="radio"] { accent-color: var(--link); } /* --------------------------------------------------------------------------- Dashboard-Kacheln (Design „Mosaik“) ------------------------------------------------------------------------- */ /* Einheitliche Kachel-Kopfzeile: 40 px, 12 px Innenabstand, 14 px halbfett. */ .widget-head { display: flex; flex-shrink: 0; align-items: center; gap: 0.5rem; min-height: 2.5rem; padding: 0.25rem 0.5rem 0.25rem 0.75rem; font-size: 0.875rem; line-height: 1.25rem; } /* Runde 3 — mehr Leben in den Kacheln, ohne bunt zu werden. Symbol-Chip: volle Akzentfarbe als Flaeche, Symbol in der passenden Vordergrundfarbe. */ .widget-icon-chip { display: inline-flex; flex-shrink: 0; align-items: center; justify-content: center; width: 1.625rem; height: 1.625rem; border-radius: 0.4375rem; background-color: var(--primary); color: var(--primary-foreground); } /* Titel ausgeblendet (quick-260928-wtt, `hideTitle` in der Widget- Konfiguration, nur in der Ansicht): die Titelzeile entfaellt. Traegt sie Aktionen (Notiz-Stift, XFrame „In neuem Tab“), bleiben nur diese als kleine Schwebeleiste oben rechts. */ [data-hide-title] .widget-head { display: none; } [data-hide-title] .widget-head:has(.widget-action) { display: flex; position: absolute; top: 0.25rem; right: 0.25rem; z-index: 5; min-height: 0; padding: 0; } [data-hide-title] .widget-head:has(.widget-action) > :not(.widget-action) { display: none; } /* Beim Laden blenden die Kacheln gestaffelt ein (je 80 ms, --enter-delay). */ @media (prefers-reduced-motion: no-preference) { .widget-card { animation: widget-enter 520ms cubic-bezier(0.2, 0.7, 0.3, 1) both; animation-delay: var(--enter-delay, 0ms); } } @keyframes widget-enter { from { opacity: 0; transform: translateY(24px) scale(0.97); } to { opacity: 1; transform: none; } } /* Aktionen der Kachel erscheinen erst beim Zeigen oder mit Tastaturfokus — nur auf Geraeten mit Maus; auf Touch bleiben sie sichtbar. */ @media (hover: hover) { [data-widget-id]:not(:hover):not(:focus-within) .widget-action:not(.widget-action-pinned) { opacity: 0; } } .widget-action { transition: opacity 120ms; } /* Notiz: ruhige Schrift, Innenabstand wie die Kopfzeile. */ :root .widget-note-body .wmde-markdown { font-size: 0.875rem; line-height: 1.5; } :root .widget-note-body .w-md-editor-preview, :root .widget-note-body .wmde-markdown { padding: 0 0.75rem 0.75rem; } :root .widget-note-body .wmde-markdown h1, :root .widget-note-body .wmde-markdown h2 { border-bottom: 0; margin-top: 0.25rem; font-size: 1rem; line-height: 1.375rem; } /* Bearbeitungsmodus: gestrichelte Akzentkontur und sichtbarer Groessengriff. */ .react-grid-item .widget-drag-handle { outline: 2px dashed var(--primary-strong); outline-offset: -2px; } .react-grid-item > .react-resizable-handle { z-index: 20; } .react-grid-item > .react-resizable-handle.react-resizable-handle-se { width: 18px; height: 18px; right: 4px; bottom: 4px; background-image: none; border-right: 2px solid var(--primary-strong); border-bottom: 2px solid var(--primary-strong); border-bottom-right-radius: 4px; } .react-grid-item > .react-resizable-handle.react-resizable-handle-se::after { display: none; } .react-grid-item.react-grid-placeholder { background: var(--primary); opacity: 0.18; border-radius: 0.5rem; } /* Mit Hintergrund: Kacheln als Windows-11-„Mica“ — halbtransparent mit Unschaerfe. Die einzige Stelle mit Transparenz. Deckkraft so gewaehlt, dass Text auch vor einem rein schwarzen (hell) bzw. rein weissen, dann auf 55 % abgedunkelten (dunkel) Bild 4,5:1 haelt. Ohne backdrop-filter oder bei „weniger Transparenz“ bleibt die Kachel deckend. */ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { @media not (prefers-reduced-transparency: reduce) { .dashboard-has-bg [data-widget-id] { background-color: oklch(1 0 0 / 0.86); -webkit-backdrop-filter: blur(20px) saturate(1.2); backdrop-filter: blur(20px) saturate(1.2); } .dark .dashboard-has-bg [data-widget-id] { background-color: oklch(0.24 0.01 260 / 0.88); border-color: oklch(1 0 0 / 0.1); } } } .dashboard-has-bg [data-widget-id] { box-shadow: 0 0 2px oklch(0 0 0 / 0.14), 0 2px 6px oklch(0 0 0 / 0.16); } /* Begruessung, Befehlsleiste und leerer Zustand: ohne Hintergrund frei auf der Arbeitsflaeche, mit Hintergrund auf derselben Kachelflaeche wie die Widgets (deckend als Rueckfall, durchscheinend wo moeglich). */ .dashboard-has-bg .dashboard-chrome { padding: 0.375rem 0.75rem; background-color: var(--card); box-shadow: 0 0 2px oklch(0 0 0 / 0.14), 0 2px 6px oklch(0 0 0 / 0.16); } .dashboard-has-bg [role="toolbar"].dashboard-chrome { padding: 0.25rem; } @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) { @media not (prefers-reduced-transparency: reduce) { .dashboard-has-bg .dashboard-chrome { background-color: oklch(1 0 0 / 0.86); -webkit-backdrop-filter: blur(20px) saturate(1.2); backdrop-filter: blur(20px) saturate(1.2); } .dark .dashboard-has-bg .dashboard-chrome { background-color: oklch(0.24 0.01 260 / 0.88); } } } /* Notiz-Checklisten: Kaestchen in der Akzentfarbe; der Browser waehlt den Haken selbst hell oder dunkel passend zur Akzentfarbe. */ :root .widget-note-body input[type="checkbox"] { accent-color: var(--primary); width: 1rem; height: 1rem; margin: 0 0.5rem 0 0; vertical-align: -0.15em; } :root .widget-note-body .task-list-item { padding-block: 0.125rem; line-height: 1.5rem; }