styles.css 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  1. :root {
  2. /* Standard Farben mit verbessertem Kontrast */
  3. --rot-hell: #ffe6e6;
  4. --gelb-hell: #fff8db;
  5. --gruen-hell: #e8f5e8;
  6. --rot: #b30000; /* Verbessert von #800000 für besseren Kontrast */
  7. --gelb: #9d5502; /* Verbessert von #784801 für besseren Kontrast */
  8. --gruen: #004d26; /* Verbessert von #006633 für besseren Kontrast */
  9. --weiss: #ffffff;
  10. --schwarz: #000000;
  11. --grau-hell: #f7f9fa;
  12. --grau-stark: #d7d8d9;
  13. --berlin-rot: #e20613;
  14. --diwo-blau: #145c9e;
  15. --diwo-blau-hell: #cfe8fc;
  16. /* Focus Ring Farbe für bessere Sichtbarkeit */
  17. --focus-color: #0066cc;
  18. --focus-outline: 3px solid var(--focus-color);
  19. }
  20. /* Alternative Farben mit besserem Kontrast */
  21. :root[data-color-scheme="alternative"] {
  22. --rot-hell: #ffe6f5;
  23. --gelb-hell: #ffeccc;
  24. --gruen-hell: #e6f9ff;
  25. --rot: #cc0044; /* Verbessert für besseren Kontrast */
  26. --gelb: #b8620e; /* Verbessert für besseren Kontrast */
  27. --gruen: #008a8a; /* Verbessert für besseren Kontrast */
  28. }
  29. * {
  30. box-sizing: border-box;
  31. }
  32. body {
  33. margin: 0;
  34. padding: 16px;
  35. background: var(--grau-hell);
  36. color: var(--schwarz);
  37. font: 14px/1.5 system-ui, sans-serif; /* Verbesserte Zeilenhöhe für bessere Lesbarkeit */
  38. }
  39. /* Focus-Stile für bessere Keyboard-Navigation */
  40. *:focus {
  41. outline: var(--focus-outline);
  42. outline-offset: 2px;
  43. }
  44. /* Verbesserter Focus für interaktive Elemente */
  45. button:focus,
  46. select:focus,
  47. input:focus,
  48. .person-row:focus,
  49. .section-header:focus {
  50. outline: var(--focus-outline);
  51. outline-offset: 2px;
  52. }
  53. h1, h2, h3 {
  54. margin: 0.2rem 0 0.6rem;
  55. line-height: 1.3; /* Verbesserte Zeilenhöhe für Überschriften */
  56. }
  57. .muted {
  58. opacity: 0.8;
  59. }
  60. .row {
  61. display: flex;
  62. gap: 0.5rem;
  63. align-items: center;
  64. }
  65. .grid-2 {
  66. display: grid;
  67. grid-template-columns: 1fr 1fr;
  68. gap: 12px;
  69. }
  70. .grid-2 .full {
  71. grid-column: 1/-1;
  72. }
  73. textarea,
  74. input,
  75. select {
  76. width: 100%;
  77. padding: 0.5rem;
  78. background: var(--weiss);
  79. color: var(--schwarz);
  80. border: 2px solid var(--grau-stark); /* Dickerer Border für bessere Sichtbarkeit */
  81. border-radius: 4px;
  82. font-size: 14px; /* Explizite Schriftgröße für bessere Lesbarkeit */
  83. }
  84. /* Hover-Effekte für bessere Interaktivität */
  85. textarea:hover,
  86. input:hover,
  87. select:hover {
  88. border-color: var(--diwo-blau);
  89. }
  90. button {
  91. padding: 0.5rem 0.9rem;
  92. border: 2px solid var(--grau-stark);
  93. background: #fff;
  94. cursor: pointer;
  95. font-size: 14px;
  96. min-height: 44px;
  97. transition: all 0.2s ease;
  98. }
  99. button:hover {
  100. background: var(--grau-hell);
  101. border-color: var(--diwo-blau);
  102. }
  103. button:active {
  104. transform: translateY(1px);
  105. }
  106. .error-box {
  107. background: var(--rot-hell);
  108. border-left: 4px solid var(--rot);
  109. padding: 0.6rem;
  110. margin: 0.6rem 0;
  111. border-radius: 4px;
  112. }
  113. /* DIWO Header Styles */
  114. .diwo-header {
  115. background: var(--weiss);
  116. border: 1px solid var(--grau-stark);
  117. padding: 12px 16px;
  118. margin-bottom: 16px;
  119. border-radius: 4px;
  120. }
  121. .header-row-1 {
  122. display: flex;
  123. align-items: center;
  124. gap: 20px;
  125. margin-bottom: 8px;
  126. padding-bottom: 8px;
  127. border-bottom: 1px solid var(--grau-stark);
  128. }
  129. .kunde-logo {
  130. width: auto;
  131. height: 50px;
  132. display: flex;
  133. align-items: center;
  134. justify-content: center;
  135. }
  136. .kunde-logo-container {
  137. display: flex;
  138. align-items: center;
  139. justify-content: center;
  140. width: 100%;
  141. height: 100%;
  142. }
  143. .kunde-logo-image {
  144. max-width: auto;
  145. max-height: 50px;
  146. object-fit: contain;
  147. border-radius: 4px;
  148. }
  149. .diwo-title {
  150. display: flex;
  151. flex-direction: column;
  152. align-items: flex-start;
  153. }
  154. .diwo-title h1 {
  155. font-size: 24px;
  156. font-weight: bold;
  157. margin: 0;
  158. color: var(--diwo-blau);
  159. }
  160. .diwo-title h2 {
  161. font-size: 18px;
  162. font-weight: normal;
  163. margin: 0;
  164. color: var(--schwarz);
  165. }
  166. .page-title {
  167. font-size: 16px;
  168. font-weight: bold;
  169. margin-left: auto;
  170. }
  171. .header-row-2 {
  172. display: grid;
  173. grid-template-columns: auto 1fr auto;
  174. gap: 20px;
  175. margin-bottom: 8px;
  176. align-items: center;
  177. }
  178. .aktenzeichen {
  179. font-weight: bold;
  180. font-size: 14px;
  181. }
  182. .antragsteller-info {
  183. text-align: center;
  184. font-weight: bold;
  185. }
  186. .location-info {
  187. text-align: right;
  188. font-size: 13px;
  189. }
  190. .header-row-3 {
  191. display: flex;
  192. justify-content: space-between;
  193. align-items: center;
  194. margin-top: 8px;
  195. padding-top: 8px;
  196. border-top: 1px solid var(--grau-stark);
  197. }
  198. .vorgang-info {
  199. font-size: 13px;
  200. }
  201. .zeitraum-controls {
  202. display: flex;
  203. align-items: center;
  204. gap: 8px;
  205. }
  206. .zeitraum-form {
  207. display: flex;
  208. align-items: center;
  209. gap: 8px;
  210. }
  211. .zeitraum-form label {
  212. font-size: 13px;
  213. font-weight: bold;
  214. white-space: nowrap;
  215. }
  216. .zeitraum-select {
  217. width: 200px;
  218. padding: 4px 8px;
  219. font-size: 13px;
  220. min-height: 32px;
  221. }
  222. .wechseln-btn {
  223. padding: 4px 8px;
  224. font-size: 12px;
  225. min-width: 32px;
  226. min-height: 32px;
  227. }
  228. /* Vergleichslegende */
  229. .vergleich-legende {
  230. display: flex;
  231. align-items: center;
  232. gap: 12px;
  233. margin: 12px 0;
  234. padding: 8px 12px;
  235. background: var(--grau-hell);
  236. border: 1px solid var(--grau-stark);
  237. border-radius: 4px;
  238. font-size: 13px;
  239. }
  240. .legende-item {
  241. display: flex;
  242. align-items: center;
  243. gap: 4px;
  244. padding: 4px 8px;
  245. border-radius: 3px;
  246. }
  247. .legende-item:has(.plus) {
  248. background: var(--gruen-hell);
  249. border: 1px solid var(--gruen); /
  250. }
  251. .legende-item:has(.minus) {
  252. background: var(--rot-hell);
  253. border: 1px solid var(--rot);
  254. }
  255. .legende-item:has(.warn) {
  256. background: var(--gelb-hell);
  257. border: 1px solid var(--gelb);
  258. }
  259. .legende-title {
  260. margin-right: 8px;
  261. font-size: 13px;
  262. }
  263. .legende-spacer {
  264. color: var(--grau-stark);
  265. font-weight: bold;
  266. }
  267. .selected-indicator-text {
  268. border: 3px solid var(--diwo-blau);
  269. padding: 2px 4px;
  270. border-radius: 2px;
  271. display: inline-block;
  272. background: var(--diwo-blau-hell);
  273. }
  274. table {
  275. width: 100%;
  276. border-collapse: collapse;
  277. background: var(--weiss);
  278. border: 1px solid var(--grau-stark);
  279. margin: 0.6rem 0 1rem;
  280. /* Zusätzlicher Platz für Focus-Outlines innerhalb der Tabelle */
  281. border-spacing: 0;
  282. }
  283. th, td {
  284. border: 1px solid var(--grau-stark);
  285. padding: 0.5rem;
  286. vertical-align: top;
  287. text-align: left;
  288. }
  289. th {
  290. background: var(--grau-stark);
  291. position: sticky;
  292. top: 0;
  293. font-weight: bold;
  294. color: var(--schwarz);
  295. }
  296. .sym {
  297. width: 2.5rem;
  298. min-width: 2.5rem;
  299. max-width: 2.5rem;
  300. text-align: center;
  301. font-weight: 700;
  302. font-size: 16px;
  303. }
  304. .sym.plus {
  305. color: var(--gruen);
  306. }
  307. .sym.minus {
  308. color: var(--rot);
  309. }
  310. .sym.warn {
  311. color: var(--gelb);
  312. }
  313. .diff-row-added {
  314. background: var(--gruen-hell);
  315. }
  316. .diff-row-removed {
  317. background: var(--rot-hell);
  318. }
  319. .cell-changed,
  320. td:has(.cell-changed) {
  321. background: var(--gelb-hell);
  322. }
  323. /* Verbessertes Icon für geänderte Zellen */
  324. .cell-changed:not(.sym)::before {
  325. content: "! ";
  326. color: var(--gelb);
  327. font-weight: bold;
  328. font-size: 0.9em;
  329. margin-right: 4px;
  330. }
  331. .old {
  332. display: block;
  333. font-size: 0.85em;
  334. margin-top: 0.2rem;
  335. opacity: 0.9;
  336. font-style: italic;
  337. }
  338. .header {
  339. display: flex;
  340. justify-content: space-between;
  341. align-items: center;
  342. margin-bottom: 8px;
  343. }
  344. .legend {
  345. margin: 0.5rem 0 1rem;
  346. }
  347. /* Person Selection - Blue outline for selected person */
  348. .person-selected {
  349. outline: 3px solid var(--diwo-blau);
  350. outline-offset: -3px;
  351. }
  352. /* Clickable table rows mit verbesserter Accessibility */
  353. .person-row {
  354. cursor: pointer;
  355. transition: background-color 0.2s ease;
  356. position: relative;
  357. }
  358. .person-row:hover {
  359. background-color: var(--diwo-blau-hell);
  360. }
  361. .person-row:focus {
  362. background-color: var(--diwo-blau-hell);
  363. /* Verbesserte Focus-Umrahmung für Tabellenzeilen */
  364. outline: var(--focus-outline);
  365. outline-offset: 1px; /* Reduzierter Offset für bessere Sichtbarkeit in Tabellen */
  366. z-index: 1; /* Stelle sicher, dass der Focus-Ring über anderen Elementen liegt */
  367. }
  368. /* Verbesserte Focus-Styles für alle Tabellenzeilen */
  369. tr:focus {
  370. outline: var(--focus-outline);
  371. outline-offset: 1px;
  372. position: relative;
  373. z-index: 1;
  374. }
  375. /* Skip to content für Screen Reader */
  376. .skip-link {
  377. position: absolute;
  378. top: -40px;
  379. left: 6px;
  380. background: var(--diwo-blau);
  381. color: var(--weiss);
  382. padding: 8px;
  383. text-decoration: none;
  384. border-radius: 4px;
  385. z-index: 1000;
  386. }
  387. .skip-link:focus {
  388. top: 6px;
  389. }
  390. .table-action {
  391. padding: 0.25rem 0.5rem;
  392. border: 1px solid var(--grau-stark);
  393. background: #fff;
  394. cursor: pointer;
  395. font-size: 0.85rem;
  396. min-height: 32px;
  397. }
  398. .table-action:hover {
  399. filter: brightness(0.98);
  400. }
  401. /* Farbwahl in der Legende */
  402. .color-picker-container {
  403. position: relative;
  404. display: flex;
  405. align-items: center;
  406. gap: 4px;
  407. margin-left: auto;
  408. }
  409. .color-picker-toggle {
  410. background: none;
  411. border: 2px solid var(--grau-stark);
  412. cursor: pointer;
  413. font-size: 16px;
  414. padding: 4px;
  415. border-radius: 4px;
  416. transition: all 0.2s ease;
  417. min-height: 32px;
  418. min-width: 32px;
  419. }
  420. .color-picker-toggle:hover {
  421. background: var(--grau-stark);
  422. border-color: var(--diwo-blau);
  423. }
  424. .color-picker-popup {
  425. position: absolute;
  426. top: 100%;
  427. right: 0;
  428. background: var(--weiss);
  429. border: 2px solid var(--grau-stark);
  430. border-radius: 4px;
  431. padding: 12px;
  432. box-shadow: 0 4px 12px rgba(20, 92, 158, 0.2);
  433. z-index: 1000;
  434. font-size: 13px;
  435. min-width: 160px;
  436. }
  437. .color-picker-popup.hidden {
  438. display: none;
  439. }
  440. .color-picker-popup label {
  441. font-weight: bold;
  442. margin-bottom: 6px;
  443. display: block;
  444. }
  445. .color-scheme-select {
  446. width: 100%;
  447. padding: 6px 8px;
  448. font-size: 13px;
  449. border: 2px solid var(--grau-stark);
  450. border-radius: 4px;
  451. min-height: 32px;
  452. }
  453. /* Responsive Layout für Freibeträge und Kinderbetreuung */
  454. .freibetrag-container {
  455. display: flex;
  456. gap: 16px;
  457. margin: 0.6rem 0 1rem;
  458. }
  459. .freibetrag-section {
  460. flex: 1;
  461. min-width: 0;
  462. }
  463. .freibetrag-section h3 {
  464. margin: 0 0 0.6rem;
  465. font-size: 16px;
  466. }
  467. .kinderbetreuung-container {
  468. max-width: 50%;
  469. }
  470. /* Bei kleinen Bildschirmen: Untereinander anordnen */
  471. @media (max-width: 1200px) {
  472. .freibetrag-container {
  473. flex-direction: column;
  474. }
  475. .kinderbetreuung-container {
  476. max-width: 100%;
  477. }
  478. }
  479. /* Ausklappbare Sektionen */
  480. .section-container {
  481. margin: 0.6rem 0 1rem;
  482. }
  483. .section-header {
  484. background: var(--grau-stark);
  485. padding: 12px 16px;
  486. border: 2px solid var(--grau-stark);
  487. border-radius: 4px 4px 0 0;
  488. cursor: pointer;
  489. display: flex;
  490. align-items: center;
  491. gap: 8px;
  492. user-select: none;
  493. transition: all 0.2s ease;
  494. min-height: 44px;
  495. }
  496. .section-header:hover {
  497. background: #c5c6c7;
  498. border-color: var(--diwo-blau);
  499. }
  500. .section-header h3 {
  501. margin: 0;
  502. font-size: 16px;
  503. font-weight: bold;
  504. }
  505. .toggle-icon {
  506. font-size: 14px;
  507. transition: transform 0.2s ease;
  508. font-weight: bold;
  509. }
  510. .toggle-icon.collapsed {
  511. transform: rotate(-90deg);
  512. }
  513. .section-content {
  514. border: 2px solid var(--grau-stark);
  515. border-top: none;
  516. border-radius: 0 0 4px 4px;
  517. transition: max-height 0.3s ease;
  518. overflow: visible; /* Geändert von hidden zu visible für Focus-Outlines */
  519. padding: 4px; /* Zusätzlicher Platz für Focus-Outlines */
  520. }
  521. .section-content.collapsed {
  522. display: none;
  523. }
  524. .section-content table {
  525. margin: 0;
  526. border: none;
  527. }