input.css 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. @tailwind base;
  2. @tailwind components;
  3. @tailwind utilities;
  4. @layer base {
  5. /* Hide native spinner buttons on every number input app-wide. The
  6. team prefers keyboard typing over the tiny, inconsistent UA
  7. controls. */
  8. input[type="number"]::-webkit-outer-spin-button,
  9. input[type="number"]::-webkit-inner-spin-button {
  10. -webkit-appearance: none;
  11. margin: 0;
  12. }
  13. input[type="number"] {
  14. -moz-appearance: textfield;
  15. appearance: textfield;
  16. }
  17. }
  18. @layer utilities {
  19. /* Phase 13: the Focus filter temporarily hides entire sw columns when the
  20. focused worker has no assignment on any visible row. Separate from the
  21. .hidden set driven by the Columns dropdown so clearing Focus restores
  22. the user's manual column picks. */
  23. .focus-auto-hidden {
  24. display: none;
  25. }
  26. }
  27. @layer components {
  28. /* Phase 15: big-screen / beamer presentation scope. Applied via
  29. views/sprints/present.php on the root <main>. Tightens typography
  30. and cell padding so the task table fits the viewport without
  31. horizontal scroll at 1920×1080; hides drag handles and per-row
  32. delete buttons (not meaningful during a group discussion). */
  33. .beamer-root table {
  34. table-layout: fixed;
  35. font-size: clamp(0.75rem, 0.95vw, 1.05rem);
  36. }
  37. .beamer-root td,
  38. .beamer-root th {
  39. padding: 0.25rem 0.35rem;
  40. }
  41. .beamer-root .handle,
  42. .beamer-root [data-delete-task] {
  43. display: none;
  44. }
  45. /* JS-driven toggle (sprint-planner.js): when the rendered task table
  46. is wider than the viewport, rotate worker-column headers to save
  47. horizontal space. Leaves non-worker headers (Task / Owner / Prio
  48. / Tot) untouched. */
  49. .beamer-vertical-headers thead th[data-sort-col^="sw-"] {
  50. writing-mode: vertical-rl;
  51. transform: rotate(180deg);
  52. padding: 0.5rem 0.25rem;
  53. }
  54. /* Phase 18: per-cell task-assignment status. The colour class
  55. applies directly to the <td> — no nested wrapper — so the cell's
  56. table-layout and the input it contains render exactly as they
  57. did before the feature, with only the cell background tinting.
  58. The four .assign-status-* class names are interpolated server-
  59. side ("assign-status-<?= $st ?>"), so they're held in
  60. tailwind.config.js's safelist; otherwise the JIT prunes them. */
  61. .assign-status-zugewiesen { /* default: no override, stays whatever
  62. the row's bg is */ }
  63. .assign-status-gestartet { background-color: theme('colors.yellow.200'); }
  64. .assign-status-abgeschlossen { background-color: theme('colors.green.200'); }
  65. .assign-status-abgebrochen { background-color: theme('colors.red.200'); }
  66. .dark .assign-status-gestartet { background-color: theme('colors.yellow.700'); }
  67. .dark .assign-status-abgeschlossen { background-color: theme('colors.green.700'); }
  68. .dark .assign-status-abgebrochen { background-color: theme('colors.red.700'); }
  69. /* Tiny chevron-only <select> sitting next to the day input. We hide
  70. the selected text via font-size:0 + color:transparent so only the
  71. browser's native dropdown arrow shows; clicking it opens the
  72. option list with its full-size text restored. */
  73. .assign-status-select {
  74. width: 1rem;
  75. min-width: 0;
  76. margin-left: 2px;
  77. padding: 0;
  78. border: 0;
  79. background-color: transparent;
  80. font-size: 0;
  81. line-height: 1;
  82. color: transparent;
  83. cursor: pointer;
  84. vertical-align: middle;
  85. }
  86. .assign-status-select:focus {
  87. outline: 2px solid theme('colors.slate.400');
  88. outline-offset: 1px;
  89. border-radius: 2px;
  90. }
  91. .assign-status-select option {
  92. font-size: 0.875rem;
  93. color: theme('colors.slate.900');
  94. background-color: theme('colors.white');
  95. }
  96. .dark .assign-status-select option {
  97. color: theme('colors.slate.100');
  98. background-color: theme('colors.slate.800');
  99. }
  100. }