@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); @import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200'); .material-symbols-outlined { font-family: 'Material Symbols Outlined'; font-weight: normal; font-style: normal; display: inline-block; line-height: 1; text-transform: none; letter-spacing: normal; word-wrap: normal; white-space: nowrap; direction: ltr; -webkit-font-feature-settings: 'liga'; -webkit-font-smoothing: antialiased; user-select: none; font-variation-settings: 'FILL' 0, 'wght' 400, 'opsz' 20; } :root { /* Native OS-Controls (selects, scrollbars) sollen dem aktuellen Theme folgen. Wert wird im prefers-color-scheme: dark Block ueberschrieben. */ color-scheme: light; /* === LIGHT MODE (RAPPORT cream + olive + deep green) === */ --bg-base: #e0dbd4; --bg-panel: #e0dbd4; --bg-section: #e0dbd4; --bg-item: #e0dbd4; --bg-item-hover: #d4cfc8; --bg-input: #ece8e2; --bg-dialog: #e4dfd7; --bg-overlay: rgba(26, 26, 24, 0.36); --border: #c8c2ba; --border-light: #d4cfc8; --border-focus: #2f5d54; --text-primary: #1a1a18; --text-secondary:#555550; --text-muted: #8a8580; --text-label: #1a1a18; /* Petrol-Gruen (von Rapport-HTML uebernommen) */ --accent: #2f5d54; --accent-light: #4a8a7c; --accent-dim: #e6efed; --accent-border: rgba(47, 93, 84, 0.35); /* Active-Marker (aktives Geschoss / aktive Ebene) — saturiertes Petrol */ --active: #1a655a; --active-light: #2f8275; --active-dim: rgba(26, 101, 90, 0.10); --warn: #b5621e; --warn-light: #d47a30; --warn-dim: #fdf0e8; --danger: #8a1a1a; --danger-light: #b03030; --overlay-hover: rgba(26, 26, 24, 0.05); --overlay-active:rgba(26, 26, 24, 0.10); --r: 4px; --r-lg: 8px; --shadow-1: 0 1px 2px rgba(26,26,24,0.08); --shadow-2: 0 2px 8px rgba(26,26,24,0.12); --shadow-3: 0 6px 24px rgba(26,26,24,0.18); --select-arrow: url("data:image/svg+xml;utf8,"); --font: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; --font-mono: 'DM Mono', 'SF Mono', monospace; } /* === DARK MODE (Rhino-tonig) === */ @media (prefers-color-scheme: dark) { :root { color-scheme: dark; --bg-base: #2a2a2a; --bg-panel: #2a2a2a; --bg-section: #2a2a2a; --bg-item: #2a2a2a; --bg-item-hover: #353535; --bg-input: #1f1f1f; --bg-dialog: #2c2c2c; --bg-overlay: rgba(0,0,0,0.55); --border: #4a4a4a; --border-light: #3d3d3d; --border-focus: #5fa896; --text-primary: #e8e8e8; --text-secondary:#a8a8a8; --text-muted: #707070; --text-label: #c8c8c8; /* Petrol-Gruen (von Rapport-HTML uebernommen) */ --accent: #5fa896; --accent-light: #6db5a4; --accent-dim: rgba(95, 168, 150, 0.15); --accent-border: rgba(95, 168, 150, 0.4); /* Active-Marker — saturiertes Petrol, distinct vom accent */ --active: #7dc8b8; --active-light: #8ad1bf; --active-dim: rgba(125, 200, 184, 0.16); --warn: #d48030; --warn-light: #e09040; --warn-dim: rgba(212, 128, 48, 0.18); --danger: #c85050; --danger-light: #d86060; --overlay-hover: rgba(255,255,255,0.06); --overlay-active:rgba(255,255,255,0.10); --shadow-1: 0 1px 2px rgba(0,0,0,0.30); --shadow-2: 0 2px 8px rgba(0,0,0,0.40); --shadow-3: 0 6px 24px rgba(0,0,0,0.55); --select-arrow: url("data:image/svg+xml;utf8,"); } } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: var(--font); font-size: 12px; background: var(--bg-base); color: var(--text-primary); -webkit-font-smoothing: antialiased; letter-spacing: 0.01em; } #root { display: flex; flex-direction: column; height: 100vh; overflow: hidden; } button { font-family: var(--font); cursor: pointer; border: none; outline: none; background: none; color: inherit; position: relative; transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.14s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.22s cubic-bezier(0.4, 0, 0.2, 1); } input, select { font-family: var(--font-mono); font-size: 11px; background: var(--bg-input); color: var(--text-primary); border: 1px solid var(--border); border-radius: var(--r); padding: 5px 8px; outline: none; transition: border-color 0.16s, box-shadow 0.16s; } input:hover { border-color: var(--text-muted); } input:focus, select:focus { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-dim); } input[type="number"]::-webkit-inner-spin-button { opacity: 0.3; } /* Pill-shaped select */ select { appearance: none; -webkit-appearance: none; background-color: var(--bg-item); background-image: var(--select-arrow); background-repeat: no-repeat; background-position: right 10px center; padding: 5px 26px 5px 14px; border-radius: 999px; border: 1px solid var(--border); font-family: var(--font); font-weight: 500; font-size: 10px; letter-spacing: 0.04em; cursor: pointer; color: var(--text-primary); } select:hover { background-color: var(--bg-item-hover); border-color: var(--text-muted); } /* Opt-out: System-native Chrome (Oberleiste). Setzt die globalen pill/appearance:none Overrides zurueck und ueberlaesst WebKit das Rendering — Standard-macOS-Combobox + Native-Popup-Menue. */ select.native-control, input.native-control { appearance: auto; -webkit-appearance: auto; background: revert; background-image: none; border: revert; border-radius: revert; padding: revert; font: revert; letter-spacing: revert; box-shadow: none; } select.native-control:hover, input.native-control:hover { background: revert; border-color: revert; } select.native-control:focus, input.native-control:focus { box-shadow: revert; border-color: revert; } /* Utility */ .label-xs { font-size: 10px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); } /* --- Buttons --- */ .btn-outlined { font-size: 10px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-item); color: var(--text-secondary); height: 26px; display: inline-flex; align-items: center; justify-content: center; gap: 4px; } .btn-outlined:hover { background: var(--bg-item-hover); border-color: var(--text-secondary); color: var(--text-primary); } .btn-outlined:disabled { opacity: 0.4; cursor: not-allowed; } .btn-contained { font-size: 10px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; padding: 5px 16px; border-radius: 999px; border: none; background: var(--accent); color: #fff; box-shadow: var(--shadow-1); height: 28px; display: inline-flex; align-items: center; justify-content: center; gap: 4px; } .btn-contained:hover { background: var(--accent-light); box-shadow: var(--shadow-2); } .btn-text { font-size: 10px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; padding: 5px 12px; border-radius: 999px; background: transparent; color: var(--text-secondary); height: 28px; display: inline-flex; align-items: center; justify-content: center; } .btn-text:hover { background: var(--overlay-hover); color: var(--text-primary); } /* Icon button (circular hover) */ .btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: transparent; color: var(--text-secondary); font-size: 12px; flex-shrink: 0; } .btn-icon:hover { background: var(--overlay-hover); color: var(--text-primary); } .btn-icon:active { background: var(--overlay-active); } .btn-icon-sm { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: transparent; color: var(--text-muted); flex-shrink: 0; } .btn-icon-sm:hover { background: var(--overlay-hover); color: var(--text-primary); } .btn-icon-sm.is-on { color: var(--text-primary); } .btn-icon-xs { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: transparent; color: var(--text-muted); flex-shrink: 0; } .btn-icon-xs:hover { background: var(--overlay-hover); color: var(--text-primary); } /* Icon button — danger variant */ .btn-icon-danger { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: transparent; color: var(--danger); flex-shrink: 0; } .btn-icon-danger:hover { background: var(--danger-light); color: #fff; } .btn-icon-danger:disabled { opacity: 0.35; cursor: not-allowed; } /* Tonal icon button (subtle filled) */ .btn-icon-tonal { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--bg-item); color: var(--text-secondary); border: 1px solid var(--border); flex-shrink: 0; } .btn-icon-tonal:hover { background: var(--bg-item-hover); color: var(--text-primary); border-color: var(--text-secondary); } /* FAB-style add button */ .btn-add { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--accent); color: #fff; border: none; box-shadow: var(--shadow-1); } .btn-add:hover { background: var(--accent-light); box-shadow: var(--shadow-2); } .btn-add:active { box-shadow: var(--shadow-1); } /* Tiny stepper for lw etc. */ .btn-step { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 10px; border-radius: 2px; background: transparent; color: var(--text-muted); line-height: 1; } .btn-step:hover { background: var(--overlay-hover); color: var(--text-primary); } /* Chip-style badge */ .chip { font-size: 9px; font-weight: 600; letter-spacing: 0.06em; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--border); background: var(--bg-item); color: var(--text-secondary); display: inline-flex; align-items: center; } .chip-accent { background: var(--accent-dim); border-color: var(--accent-border); color: var(--accent); } .chip-info { background: var(--active-dim); border-color: rgba(26, 78, 138, 0.3); color: var(--active); } .chip-warn { background: var(--warn-dim); border-color: rgba(181, 98, 30, 0.3); color: var(--warn); }