input.css 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. @tailwind base;
  2. @tailwind components;
  3. @tailwind utilities;
  4. @layer base {
  5. /* Phase 17: hide native spinner buttons on every number input app-wide.
  6. The team prefers either keyboard typing or the custom
  7. [data-stepper] popover over the tiny, inconsistent UA 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 17: floating stepper popover. Anchored to the active
  55. [data-stepper] input in JS; uses `position: fixed` so it never
  56. flickers when scrolling the container table. Dark-mode siblings
  57. match the Phase 16 palette.
  58. As of the hover follow-up: the popover opens on pointerenter over
  59. the input and auto-closes shortly after the pointer leaves both
  60. input and popover — no click needed. The optional range slider
  61. now renders vertically (top = max, bottom = min). */
  62. .stepper-popover {
  63. @apply fixed z-50 flex items-center gap-2 rounded-md border
  64. border-slate-200 bg-white px-2 py-1 shadow-lg
  65. dark:border-slate-600 dark:bg-slate-800;
  66. }
  67. .stepper-popover .stepper-controls {
  68. @apply flex flex-col items-center gap-1;
  69. }
  70. .stepper-popover button {
  71. @apply rounded px-2 py-1 text-lg font-semibold leading-none text-slate-700
  72. hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-slate-700;
  73. }
  74. .stepper-popover output {
  75. @apply min-w-[3rem] text-center font-mono text-slate-900
  76. dark:text-slate-100;
  77. }
  78. .stepper-popover input[type="range"] {
  79. @apply accent-slate-600 dark:accent-slate-400;
  80. /* Vertical orientation. Modern browsers (Chrome 111+, Firefox
  81. 110+, Safari 16.4+) honour writing-mode on <input type="range">;
  82. the -webkit-appearance fallback keeps older WebKit correct.
  83. The `orient` attribute set in JS handles older Firefox. */
  84. writing-mode: vertical-lr;
  85. direction: rtl;
  86. -webkit-appearance: slider-vertical;
  87. appearance: slider-vertical;
  88. width: 1.5rem;
  89. height: 6rem;
  90. }
  91. }