You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

406 regels
11 KiB

  1. @use '../atoms/variables' as *;
  2. @use '../atoms/mixins' as *;
  3. // ─── Minimal Theme ─────────────────────────────────────────────────────────────
  4. // Gilt nur wenn body[data-theme="minimal"] gesetzt ist.
  5. // Standard-Theme bleibt vollständig unverändert.
  6. body[data-theme="minimal"] {
  7. background: $color-white;
  8. // ── Normale Top-Nav ausblenden ──────────────────────────────────────────────
  9. .main-nav { display: none; }
  10. // ── Hamburger-Nav einblenden ────────────────────────────────────────────────
  11. .hamburger-nav {
  12. display: flex;
  13. align-items: center;
  14. justify-content: space-between;
  15. padding: $space-4 $space-4 $space-5;
  16. }
  17. // ── Page-Background weiß ───────────────────────────────────────────────────
  18. .tt-page { background: $color-white; }
  19. // ── TT-Header: kein Gradient, kein Schatten, cleaner Rahmen ───────────────
  20. .tt-header {
  21. background: $color-white;
  22. box-shadow: none;
  23. border-bottom: 1px solid $color-border;
  24. padding: $space-3 $space-5;
  25. min-height: auto;
  26. flex-direction: column;
  27. align-items: stretch;
  28. gap: 0;
  29. }
  30. // Account/Report-Header: kein Schatten
  31. .account-header,
  32. .report-header {
  33. box-shadow: none;
  34. }
  35. // Karten ohne Schatten
  36. .account-card,
  37. .crud-list,
  38. .crud-create,
  39. .entry-form {
  40. box-shadow: none;
  41. }
  42. // Standard-Meta und Collapsible umschalten
  43. .tt-header__meta { display: none; }
  44. .tt-header__minimal-bar { display: flex; }
  45. // Collapsible: standardmäßig versteckt (JS steuert aria-expanded)
  46. .tt-header__collapsible {
  47. overflow: hidden;
  48. transition: max-height $transition-slow;
  49. max-height: 0;
  50. &.is-open { max-height: 120px; }
  51. }
  52. // Week-Nav im Minimal-Stil (dunkler Hintergrund funktioniert nicht auf weiß)
  53. .week-nav {
  54. background: var(--color-bg);
  55. border-radius: $radius-md;
  56. margin-top: $space-2;
  57. }
  58. .week-nav__arrow { color: $color-text-dark; &:hover { background: $color-border; } }
  59. .week-nav__day-name { color: $color-text-base; }
  60. .week-nav__day-date { color: $color-text-muted; }
  61. .week-nav__day--active { background: $color-text-dark; .week-nav__day-name, .week-nav__day-date { color: $color-white; } }
  62. .week-nav__day:hover:not(.week-nav__day--active) { background: rgba($color-text-dark, 0.07); }
  63. .week-nav__cal { background: rgba($color-text-dark, 0.08); color: $color-text-dark; &:hover { background: rgba($color-text-dark, 0.15); } }
  64. // ── Greeting versteckt ─────────────────────────────────────────────────────
  65. .greeting { display: none; }
  66. // ── Content zentriert, angenehme Breite ───────────────────────────────────
  67. .tt-content {
  68. max-width: 660px;
  69. padding: $space-6 $space-4;
  70. gap: $space-6;
  71. }
  72. // ── Entry Form: cleaner, größere Inputs ────────────────────────────────────
  73. .entry-form {
  74. background: $color-white;
  75. border: none;
  76. border-radius: 0;
  77. padding: $space-4 0;
  78. }
  79. .entry-form__grid {
  80. grid-template-columns: 100px 1fr;
  81. gap: $space-5 $space-4;
  82. }
  83. .input,
  84. .select,
  85. .textarea {
  86. font-size: $font-size-md;
  87. }
  88. // Höhere Inputs (außer Textarea)
  89. .input,
  90. .select {
  91. height: 44px;
  92. padding: 0 $space-3;
  93. }
  94. // Borderless inputs inside the entry form — Markenfarbe statt hardcoded
  95. .entry-form .input,
  96. .entry-form .select {
  97. border: none;
  98. box-shadow: none;
  99. background-color: var(--color-bg);
  100. &:focus { box-shadow: none; }
  101. }
  102. // Bemerkung-Zeile: standardmäßig versteckt
  103. .entry-form__label--note,
  104. .entry-form__field--note {
  105. display: none;
  106. &.is-visible { display: flex; }
  107. }
  108. .entry-form__label--note.is-visible { display: block; }
  109. // Bemerkung-Toggle-Row: standardmäßig sichtbar (im Standard ausgeblendet)
  110. .entry-form__note-toggle-row { display: flex; }
  111. // ── Primärbutton in Minimal: Markenfarbe statt Orange ─────────────────────
  112. .btn-primary {
  113. background: var(--color-primary);
  114. color: var(--header-text);
  115. box-shadow: 0 2px 8px rgba(var(--color-primary-rgb), 0.35);
  116. &:hover {
  117. background: var(--color-primary-dark);
  118. box-shadow: 0 3px 12px rgba(var(--color-primary-rgb), 0.45);
  119. }
  120. }
  121. // ── Entry-List ─────────────────────────────────────────────────────────────
  122. .entry-list__summary { display: block; }
  123. // Entry List standardmäßig versteckt (JS steuert)
  124. .entry-list.is-collapsed {
  125. display: none;
  126. }
  127. .entry-list {
  128. background: $color-white;
  129. box-shadow: none;
  130. border: 1px solid $color-border;
  131. border-radius: $radius-md;
  132. }
  133. // ── Unterseiten (Report, Clients, etc.): nur Navigation ───────────────────
  134. .report-page,
  135. .crud-page,
  136. .account-page,
  137. .team-page {
  138. background: $color-white;
  139. }
  140. }
  141. // ─── Hamburger-Nav (immer im DOM, per CSS im Standard versteckt) ──────────────
  142. .hamburger-nav {
  143. display: none; // Standard: versteckt
  144. position: relative;
  145. }
  146. .hamburger-nav__toggle {
  147. width: 52px;
  148. height: 52px;
  149. border: none;
  150. border-radius: $radius-lg;
  151. background: $color-white;
  152. cursor: pointer;
  153. display: flex;
  154. align-items: center;
  155. justify-content: center;
  156. transition: background $transition-fast;
  157. &:hover { background: var(--color-bg); }
  158. }
  159. // Hamburger-Icon aus drei Balken
  160. .hamburger-nav__icon,
  161. .hamburger-nav__icon::before,
  162. .hamburger-nav__icon::after {
  163. display: block;
  164. width: 22px;
  165. height: 2px;
  166. background: $color-text-dark;
  167. border-radius: 2px;
  168. transition: transform $transition-base, opacity $transition-fast;
  169. }
  170. .hamburger-nav__icon {
  171. position: relative;
  172. &::before,
  173. &::after {
  174. content: '';
  175. position: absolute;
  176. left: 0;
  177. }
  178. &::before { top: -6px; }
  179. &::after { top: 6px; }
  180. }
  181. // X-Icon wenn geöffnet
  182. .hamburger-nav__toggle[aria-expanded="true"] {
  183. .hamburger-nav__icon {
  184. background: transparent;
  185. &::before { transform: translateY(6px) rotate(45deg); }
  186. &::after { transform: translateY(-6px) rotate(-45deg); }
  187. }
  188. }
  189. .hamburger-nav__panel {
  190. position: absolute;
  191. top: calc(100% + #{$space-2});
  192. right: 0;
  193. min-width: 200px;
  194. background: $color-white;
  195. border: 1px solid $color-border;
  196. border-radius: $radius-md;
  197. box-shadow: 0 8px 24px rgba(0,0,0,0.12);
  198. padding: $space-2 0;
  199. z-index: 301;
  200. }
  201. .hamburger-nav__item {
  202. display: block;
  203. padding: $space-3 $space-5;
  204. font-size: $font-size-base;
  205. font-weight: $font-weight-medium;
  206. color: $color-text-base;
  207. text-decoration: none;
  208. transition: background $transition-fast, color $transition-fast;
  209. &:hover { background: var(--color-bg); color: $color-text-dark; }
  210. &--active {
  211. color: var(--color-primary);
  212. font-weight: $font-weight-bold;
  213. }
  214. }
  215. .hamburger-nav__divider {
  216. height: 1px;
  217. background: $color-border;
  218. margin: $space-2 0;
  219. }
  220. // ─── TT-Header Minimal-Bar (immer im DOM, im Standard ausgeblendet) ───────────
  221. .tt-header__minimal-bar {
  222. display: none; // Standard: versteckt, Minimal: sichtbar (override oben)
  223. align-items: center;
  224. justify-content: space-between;
  225. padding: $space-1 0;
  226. }
  227. .tt-header__minimal-date {
  228. font-size: $font-size-md;
  229. font-weight: $font-weight-bold;
  230. color: $color-text-dark;
  231. }
  232. .tt-header__week-toggle {
  233. background: none;
  234. border: 1px solid $color-border;
  235. border-radius: $radius-pill;
  236. padding: $space-1 $space-3;
  237. font-size: $font-size-sm;
  238. font-weight: $font-weight-medium;
  239. color: $color-text-muted;
  240. cursor: pointer;
  241. transition: border-color $transition-fast, color $transition-fast;
  242. &:hover { border-color: $color-text-muted; color: $color-text-dark; }
  243. &[aria-expanded="true"] { color: $color-text-dark; border-color: $color-text-dark; }
  244. }
  245. // ─── Entry-List-Summary (immer im DOM, im Standard ausgeblendet) ──────────────
  246. .entry-list__summary {
  247. display: none; // Standard: versteckt
  248. }
  249. .entry-list__summary-btn {
  250. width: 100%;
  251. display: flex;
  252. align-items: center;
  253. gap: $space-2;
  254. padding: $space-3 $space-4;
  255. background: $color-white;
  256. border: 1px solid $color-border;
  257. border-radius: $radius-md;
  258. font-size: $font-size-base;
  259. font-weight: $font-weight-medium;
  260. color: $color-text-base;
  261. cursor: pointer;
  262. transition: background $transition-fast;
  263. &:hover { background: var(--color-bg); }
  264. }
  265. .entry-list__summary-count { font-weight: $font-weight-bold; color: $color-text-dark; }
  266. .entry-list__summary-sep { color: $color-text-light; }
  267. .entry-list__summary-total { color: $color-text-muted; }
  268. .entry-list__summary-arrow {
  269. margin-left: auto;
  270. color: $color-text-muted;
  271. font-size: $font-size-xs;
  272. transition: transform $transition-fast;
  273. .entry-list__summary-btn[aria-expanded="true"] & {
  274. transform: rotate(180deg);
  275. }
  276. }
  277. // ─── Note-Toggle-Button (immer im DOM, im Standard ausgeblendet) ──────────────
  278. .entry-form__note-toggle-row {
  279. display: none; // Standard: versteckt, Minimal: flex (override oben)
  280. grid-column: 2;
  281. }
  282. .entry-form__note-toggle {
  283. background: none;
  284. border: none;
  285. padding: 0;
  286. font-size: $font-size-sm;
  287. color: $color-text-muted;
  288. cursor: pointer;
  289. font-weight: $font-weight-medium;
  290. transition: color $transition-fast;
  291. &:hover { color: $color-text-dark; }
  292. &.is-open { color: $color-text-muted; }
  293. }
  294. // ─── Theme-Picker auf der Account-Seite ──────────────────────────────────────
  295. .account-form__divider-row {
  296. grid-column: 1 / -1;
  297. padding: $space-2 0 $space-4;
  298. }
  299. .account-form__divider {
  300. border: none;
  301. border-top: 1px solid $color-border;
  302. margin: 0;
  303. }
  304. .theme-picker {
  305. display: flex;
  306. gap: $space-3;
  307. flex-wrap: wrap;
  308. }
  309. .theme-option {
  310. display: flex;
  311. flex-direction: column;
  312. gap: $space-1;
  313. padding: $space-4;
  314. border: 2px solid $color-border;
  315. border-radius: $radius-md;
  316. cursor: pointer;
  317. min-width: 160px;
  318. transition: border-color $transition-fast, background $transition-fast;
  319. user-select: none;
  320. input[type="radio"] { display: none; }
  321. &:hover { border-color: var(--color-primary-light); background: rgba($color-primary, 0.02); }
  322. &--active {
  323. border-color: var(--color-primary);
  324. background: rgba($color-primary, 0.04);
  325. }
  326. }
  327. .theme-option__label {
  328. font-size: $font-size-base;
  329. font-weight: $font-weight-bold;
  330. color: $color-text-dark;
  331. }
  332. .theme-option__desc {
  333. font-size: $font-size-sm;
  334. color: $color-text-muted;
  335. line-height: 1.4;
  336. }