@use '../atoms/variables' as *; // ─── Minimal Theme ───────────────────────────────────────────────────────────── // Gilt nur wenn body[data-theme="minimal"] gesetzt ist. // Standard-Theme bleibt vollständig unverändert. body[data-theme="minimal"] { background: #fff; // ── Normale Top-Nav ausblenden ────────────────────────────────────────────── .main-nav { display: none; } // ── Hamburger-Nav einblenden ──────────────────────────────────────────────── .hamburger-nav { display: flex; justify-content: flex-end; padding: $space-3 $space-3 0; } // ── Page-Background weiß ─────────────────────────────────────────────────── .tt-page { background: #fff; } // ── TT-Header: kein Gradient, cleaner Rahmen ─────────────────────────────── .tt-header { background: #fff; box-shadow: 0 1px 0 $color-border; padding: $space-3 $space-5; min-height: auto; flex-direction: column; align-items: stretch; gap: 0; } // Standard-Meta und Collapsible umschalten .tt-header__meta { display: none; } .tt-header__minimal-bar { display: flex; } // Collapsible: standardmäßig versteckt (JS steuert aria-expanded) .tt-header__collapsible { overflow: hidden; transition: max-height $transition-slow; max-height: 0; &.is-open { max-height: 120px; } } // Week-Nav im Minimal-Stil (dunkler Hintergrund funktioniert nicht auf weiß) .week-nav { background: var(--color-bg); border-radius: $radius-md; margin-top: $space-2; } .week-nav__arrow { color: $color-text-dark; &:hover { background: $color-border; } } .week-nav__day-name { color: $color-text-base; } .week-nav__day-date { color: $color-text-muted; } .week-nav__day--active { background: $color-text-dark; .week-nav__day-name, .week-nav__day-date { color: $color-white; } } .week-nav__day:hover:not(.week-nav__day--active) { background: rgba($color-text-dark, 0.07); } .week-nav__cal { background: rgba($color-text-dark, 0.08); color: $color-text-dark; &:hover { background: rgba($color-text-dark, 0.15); } } // ── Greeting versteckt ───────────────────────────────────────────────────── .greeting { display: none; } // ── Content zentriert und schmaler ──────────────────────────────────────── .tt-content { max-width: 520px; padding: $space-6 $space-4; gap: $space-6; } // ── Entry Form: cleaner, größere Inputs ──────────────────────────────────── .entry-form { background: #fff; border: none; box-shadow: none; border-radius: 0; padding: $space-4 0; } .entry-form__grid { grid-template-columns: 100px 1fr; gap: $space-5 $space-4; } .input, .select, .textarea { font-size: $font-size-md; } // Höhere Inputs (außer Textarea) .input, .select { height: 44px; padding: 0 $space-3; } // Borderless inputs inside the entry form .entry-form .input, .entry-form .select { border: none; box-shadow: none; background-color: $color-bg; &:focus { box-shadow: none; } } // Bemerkung-Zeile: standardmäßig versteckt .entry-form__label--note, .entry-form__field--note { display: none; &.is-visible { display: flex; } } .entry-form__label--note.is-visible { display: block; } // Bemerkung-Toggle-Row: standardmäßig sichtbar (im Standard ausgeblendet) .entry-form__note-toggle-row { display: flex; } // ── Entry-List-Summary ───────────────────────────────────────────────────── .entry-list__summary { display: block; } // Entry List standardmäßig versteckt (JS steuert) .entry-list.is-collapsed { display: none; } .entry-list { box-shadow: none; border: 1px solid $color-border; border-radius: $radius-md; } // ── Unterseiten (Report, Clients, etc.): nur Navigation ─────────────────── // Subpages übernehmen den Hamburger und das weiße Layout automatisch // durch .main-nav { display: none } und .hamburger-nav { display: block } // Report-Seite weißer Hintergrund .report-page, .crud-page, .account-page, .team-page { background: #fff; } } // ─── Hamburger-Nav (immer im DOM, per CSS im Standard versteckt) ────────────── .hamburger-nav { display: none; // Standard: versteckt position: relative; } .hamburger-nav__toggle { width: 40px; height: 40px; border: 1px solid $color-border; border-radius: $radius-md; background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: $shadow-card; transition: background $transition-fast; &:hover { background: $color-bg; } } // Hamburger-Icon aus drei Balken .hamburger-nav__icon, .hamburger-nav__icon::before, .hamburger-nav__icon::after { display: block; width: 18px; height: 2px; background: $color-text-dark; border-radius: 2px; transition: transform $transition-base, opacity $transition-fast; } .hamburger-nav__icon { position: relative; &::before, &::after { content: ''; position: absolute; left: 0; } &::before { top: -5px; } &::after { top: 5px; } } // X-Icon wenn geöffnet .hamburger-nav__toggle[aria-expanded="true"] { .hamburger-nav__icon { background: transparent; &::before { transform: translateY(5px) rotate(45deg); } &::after { transform: translateY(-5px) rotate(-45deg); } } } .hamburger-nav__panel { position: absolute; top: calc(100% + #{$space-2}); right: 0; min-width: 200px; background: #fff; border: 1px solid $color-border; border-radius: $radius-md; box-shadow: 0 8px 24px rgba(0,0,0,0.12); padding: $space-2 0; z-index: 301; } .hamburger-nav__item { display: block; padding: $space-3 $space-5; font-size: $font-size-base; font-weight: $font-weight-medium; color: $color-text-base; text-decoration: none; transition: background $transition-fast, color $transition-fast; &:hover { background: $color-bg; color: $color-text-dark; } &--active { color: var(--color-primary); font-weight: $font-weight-bold; } } .hamburger-nav__divider { height: 1px; background: $color-border; margin: $space-2 0; } // ─── TT-Header Minimal-Bar (immer im DOM, im Standard ausgeblendet) ─────────── .tt-header__minimal-bar { display: none; // Standard: versteckt, Minimal: sichtbar (override oben) align-items: center; justify-content: space-between; padding: $space-1 0; } .tt-header__minimal-date { font-size: $font-size-md; font-weight: $font-weight-bold; color: $color-text-dark; } .tt-header__week-toggle { background: none; border: 1px solid $color-border; border-radius: $radius-pill; padding: $space-1 $space-3; font-size: $font-size-sm; font-weight: $font-weight-medium; color: $color-text-muted; cursor: pointer; transition: border-color $transition-fast, color $transition-fast; &:hover { border-color: $color-text-muted; color: $color-text-dark; } &[aria-expanded="true"] { color: $color-text-dark; border-color: $color-text-dark; } } // ─── Entry-List-Summary (immer im DOM, im Standard ausgeblendet) ────────────── .entry-list__summary { display: none; // Standard: versteckt } .entry-list__summary-btn { width: 100%; display: flex; align-items: center; gap: $space-2; padding: $space-3 $space-4; background: none; border: 1px solid $color-border; border-radius: $radius-md; font-size: $font-size-base; font-weight: $font-weight-medium; color: $color-text-base; cursor: pointer; transition: background $transition-fast; &:hover { background: $color-bg; } } .entry-list__summary-count { font-weight: $font-weight-bold; color: $color-text-dark; } .entry-list__summary-sep { color: $color-text-light; } .entry-list__summary-total { color: $color-text-muted; } .entry-list__summary-arrow { margin-left: auto; color: $color-text-muted; font-size: $font-size-xs; transition: transform $transition-fast; .entry-list__summary-btn[aria-expanded="true"] & { transform: rotate(180deg); } } // ─── Note-Toggle-Button (immer im DOM, im Standard ausgeblendet) ────────────── .entry-form__note-toggle-row { display: none; // Standard: versteckt, Minimal: flex (override oben) grid-column: 2; } .entry-form__note-toggle { background: none; border: none; padding: 0; font-size: $font-size-sm; color: $color-primary; cursor: pointer; font-weight: $font-weight-medium; transition: color $transition-fast; &:hover { color: var(--color-primary-dark); } &.is-open { color: $color-text-muted; } } // ─── Theme-Picker auf der Account-Seite ────────────────────────────────────── .account-form__divider-row { grid-column: 1 / -1; padding: $space-2 0 $space-4; } .account-form__divider { border: none; border-top: 1px solid $color-border; margin: 0; } .theme-picker { display: flex; gap: $space-3; flex-wrap: wrap; } .theme-option { display: flex; flex-direction: column; gap: $space-1; padding: $space-4; border: 2px solid $color-border; border-radius: $radius-md; cursor: pointer; min-width: 160px; transition: border-color $transition-fast, background $transition-fast; user-select: none; input[type="radio"] { display: none; } &:hover { border-color: var(--color-primary-light); background: rgba($color-primary, 0.02); } &--active { border-color: var(--color-primary); background: rgba($color-primary, 0.04); } } .theme-option__label { font-size: $font-size-base; font-weight: $font-weight-bold; color: $color-text-dark; } .theme-option__desc { font-size: $font-size-sm; color: $color-text-muted; line-height: 1.4; }