input.css 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. .stepper-popover {
  59. @apply fixed z-50 flex items-center gap-2 rounded-md border
  60. border-slate-200 bg-white px-2 py-1 shadow-lg
  61. dark:border-slate-600 dark:bg-slate-800;
  62. }
  63. .stepper-popover button {
  64. @apply rounded px-2 py-1 text-lg font-semibold text-slate-700
  65. hover:bg-slate-100 dark:text-slate-200 dark:hover:bg-slate-700;
  66. }
  67. .stepper-popover output {
  68. @apply min-w-[3rem] text-center font-mono text-slate-900
  69. dark:text-slate-100;
  70. }
  71. .stepper-popover input[type="range"] {
  72. @apply accent-slate-600 dark:accent-slate-400;
  73. }
  74. }