// Rôle : gère l’outil task planner, ses catégories, relations et réglages. @use "../mixins"; .task-planner-module { display: grid; gap: var(--space-4); padding: var(--space-4); } .task-planner-topbar { display: grid; gap: 10px; align-items: stretch; } .task-planner-topbar .inline-form { padding: 0; } .task-planner-add-stack { display: grid; gap: var(--space-3); } .task-planner-add-stack .text-import-actions { padding-top: var(--space-2); } .task-planner-global-controls { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; } .task-planner-settings-toggle, .task-planner-dropdown-button, .task-planner-settings-button { display: inline-grid; width: 34px; min-width: 34px; min-height: 34px; place-items: center; padding: 0; border: 1px solid rgba(165, 180, 252, 0.1); border-radius: var(--radius-md); background: rgba(21, 26, 48, 0.76); color: var(--color-text-secondary); } .task-planner-settings-toggle { grid-template-columns: 16px minmax(0, auto); width: auto; max-width: 100%; padding: 0 12px; gap: 8px; } .task-planner-settings-toggle span { overflow: hidden; font-size: var(--font-size-xs); font-weight: 900; text-overflow: ellipsis; white-space: nowrap; } .task-planner-settings-toggle .ui-icon, .task-planner-dropdown-button .ui-icon, .task-planner-settings-button .ui-icon { width: 16px; height: 16px; } .task-planner-clear-completed-button { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; gap: 8px; padding: 0 12px; white-space: nowrap; } .task-planner-clear-completed-button .ui-icon { width: 15px; height: 15px; } .task-planner-settings { display: grid; grid-template-columns: minmax(130px, 1fr) minmax(110px, 0.72fr); gap: 10px; align-items: end; padding: 12px; border: 1px solid rgba(165, 180, 252, 0.12); border-radius: var(--radius-md); background: linear-gradient(135deg, rgba(139, 92, 246, 0.06), transparent 58%), rgba(7, 10, 24, 0.34); } .task-planner-settings-actions { display: flex; grid-column: 1 / -1; justify-content: flex-end; } .task-planner-settings label, .task-planner-reset-override { display: grid; gap: 6px; min-width: 0; } .task-planner-settings span, .task-planner-reset-override > span, .task-planner-relations > span { color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 900; text-transform: uppercase; } .task-planner-settings select, .task-planner-settings input, .task-planner-add-form select, .task-planner-type-select, .task-planner-reset-override select, .task-planner-reset-override input, .task-planner-relations select, .combos-device-row select, .equipment-planner-socket-links select, .equipment-planner-socket-controls select { width: 100%; min-height: 36px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background-color: rgba(15, 23, 42, 0.64); color: var(--color-text-primary); } .task-planner-settings select option, .task-planner-add-form select option, .task-planner-type-select option, .task-planner-reset-override select option, .task-planner-relations select option, .combos-device-row select option, .equipment-planner-socket-links select option, .equipment-planner-socket-controls select option { background: #11182f; color: var(--color-text-primary); } .task-planner-add-form { grid-template-columns: minmax(0, 1fr) minmax(120px, 0.36fr) auto; } .task-planner-list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; } .task-planner-child-list { position: relative; gap: 8px; margin-top: 8px; padding-left: 22px; } .task-planner-child-list::before { content: ""; position: absolute; top: -4px; bottom: 15px; left: 7px; width: 1px; background: linear-gradient(180deg, rgba(246, 196, 83, 0.46), rgba(139, 92, 246, 0.18)); } .task-planner-child-list > .task-planner-item { position: relative; } .task-planner-hidden-parent { position: relative; display: grid; gap: 8px; min-width: 0; padding: 10px; border: 1px solid rgba(165, 180, 252, 0.1); border-radius: var(--radius-md); background: linear-gradient(135deg, rgba(148, 163, 184, 0.035), transparent 56%), rgba(5, 7, 17, 0.28); } .task-planner-hidden-parent > .task-planner-child-list { margin-top: 0; } .task-planner-child-list > .task-planner-item::before, .task-planner-child-list > .task-planner-hidden-parent::before { content: ""; position: absolute; top: 25px; left: -15px; width: 11px; height: 1px; background: rgba(246, 196, 83, 0.46); } .task-planner-hidden-parent-line { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; gap: 8px; align-items: center; min-height: 34px; padding: 6px 10px; border: 1px solid rgba(165, 180, 252, 0.08); border-radius: var(--radius-md); background: linear-gradient(135deg, rgba(148, 163, 184, 0.04), transparent 58%), rgba(5, 7, 17, 0.24); opacity: 0.76; } .task-planner-hidden-parent-line > input[type="checkbox"] { justify-self: center; } .task-planner-hidden-parent-line > span { min-width: 0; overflow: hidden; color: var(--color-text-muted); font-size: var(--font-size-sm); font-weight: 800; text-decoration: line-through; text-overflow: ellipsis; white-space: nowrap; } .task-planner-hidden-parent-line > small { color: rgba(180, 189, 211, 0.62); font-size: var(--font-size-xs); font-weight: 900; } .task-planner-empty { padding: var(--space-4); border: 1px dashed rgba(165, 180, 252, 0.18); border-radius: var(--radius-md); color: var(--color-text-muted); text-align: center; } .task-planner-category-boundary-drop-zone { min-height: 10px; border: 1px dashed rgba(165, 180, 252, 0.16); border-radius: var(--radius-sm); background: rgba(15, 23, 42, 0.12); } .task-planner-category-boundary-drop-zone.is-drop-target { border-color: rgba(246, 196, 83, 0.72); background: rgba(246, 196, 83, 0.08); box-shadow: inset 0 0 0 1px rgba(246, 196, 83, 0.24); } .task-planner-category-section { display: grid; gap: 8px; padding: 10px; border: 1px solid rgba(246, 196, 83, 0.16); border-radius: var(--radius-md); background: linear-gradient(135deg, rgba(246, 196, 83, 0.04), transparent 42%), rgba(7, 10, 24, 0.18); } .task-planner-category-header { padding: 0 2px; } .task-planner-category-title { display: inline-flex; flex: 1 1 auto; min-width: 0; align-items: center; gap: 8px; } .task-planner-category-actions { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 8px; } .task-planner-category-header h3 { min-width: 0; margin: 0; overflow: hidden; color: var(--color-accent-gold); font-size: var(--font-size-sm); text-overflow: ellipsis; white-space: nowrap; } .task-planner-category-actions > span { flex: 0 0 auto; padding: 3px 9px; border: 1px solid rgba(246, 196, 83, 0.22); border-radius: var(--radius-pill); background: rgba(246, 196, 83, 0.08); color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 800; } .task-planner-category-section.is-complete .task-planner-category-header h3 { color: var(--color-text-muted); text-decoration: line-through; } .task-planner-category-section.is-dragging { cursor: grabbing; opacity: 0.58; transform: scale(0.99); } .task-planner-category-section.is-drop-target { border-color: rgba(246, 196, 83, 0.72); } .task-planner-category-section.is-drop-target.drop-after { border-color: rgba(246, 196, 83, 0.72); } .task-planner-item { position: relative; display: grid; gap: 10px; padding: 10px; border: 1px solid rgba(165, 180, 252, 0.12); border-radius: var(--radius-md); background: rgba(5, 7, 17, 0.36); } .task-planner-item.is-complete > .task-planner-line { opacity: 0.78; } .task-planner-item.has-missing-prerequisite { border-color: rgba(246, 196, 83, 0.34); background: linear-gradient(135deg, rgba(246, 196, 83, 0.06), transparent 44%), rgba(5, 7, 17, 0.36); } .task-planner-item.is-reset-soon:not(.is-complete) { border-color: rgba(34, 211, 238, 0.34); box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.07), 0 0 0 rgba(34, 211, 238, 0); animation: task-planner-reset-soon-pulse 2600ms var(--ease-standard) infinite; } @keyframes task-planner-reset-soon-pulse { 0%, 100% { border-color: rgba(34, 211, 238, 0.26); box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.05), 0 0 0 rgba(34, 211, 238, 0); } 50% { border-color: rgba(34, 211, 238, 0.44); box-shadow: inset 0 0 0 1px rgba(34, 211, 238, 0.1), 0 0 12px rgba(34, 211, 238, 0.07); } } @media (prefers-reduced-motion: reduce) { .task-planner-item.is-reset-soon:not(.is-complete) { animation: none; } } .task-planner-line { display: grid; grid-template-columns: 30px 24px minmax(0, 1fr) 134px auto auto; gap: 8px; align-items: center; } .task-planner-line > input[type="checkbox"] { justify-self: center; } .task-planner-drag-handle, .task-planner-category-drag-handle, .task-planner-delete-button { display: inline-grid; width: 30px; min-width: 30px; min-height: 30px; place-items: center; padding: 0; border: 1px solid rgba(165, 180, 252, 0.1); border-radius: var(--radius-md); background: rgba(21, 26, 48, 0.76); color: var(--color-text-secondary); } .task-planner-drag-handle:disabled { cursor: not-allowed; opacity: 0.3; } .task-planner-drag-handle .ui-icon, .task-planner-category-drag-handle .ui-icon, .task-planner-delete-button .ui-icon { width: 15px; height: 15px; } .task-planner-actions { display: inline-flex; justify-content: flex-end; gap: 6px; } .task-planner-title-input { font-weight: 800; } .task-planner-item.is-complete > .task-planner-line .task-planner-title-input { color: var(--color-text-muted); text-decoration: line-through; } .task-planner-type-select { appearance: none; -webkit-appearance: none; width: 100%; min-height: 36px; overflow: hidden; padding: 0 30px 0 10px; border-color: rgba(165, 180, 252, 0.09); text-overflow: ellipsis; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23c4b5fd' viewBox='-6.5 0 32 32'%3E%3Cpath d='M18.813 11.406l-7.906 9.906c-.75.906-1.906.906-2.625 0L.376 11.406c-.75-.938-.375-1.656.781-1.656h16.875c1.188 0 1.531.719.781 1.656z'/%3E%3C/svg%3E"), linear-gradient(135deg, rgba(139, 92, 246, 0.04), rgba(31, 41, 78, 0.08)), linear-gradient(rgba(21, 26, 48, 0.38), rgba(21, 26, 48, 0.38)); background-position: calc(100% - 10px) 50%, 0 0, 0 0; background-size: 11px 11px, auto, auto; background-repeat: no-repeat; color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 900; } .task-planner-type-select:hover, .task-planner-type-select:focus { border-color: rgba(196, 181, 253, 0.22); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23f6c453' viewBox='-6.5 0 32 32'%3E%3Cpath d='M18.813 11.406l-7.906 9.906c-.75.906-1.906.906-2.625 0L.376 11.406c-.75-.938-.375-1.656.781-1.656h16.875c1.188 0 1.531.719.781 1.656z'/%3E%3C/svg%3E"), linear-gradient(135deg, rgba(246, 196, 83, 0.06), rgba(139, 92, 246, 0.08)), linear-gradient(rgba(21, 26, 48, 0.58), rgba(21, 26, 48, 0.58)); color: var(--color-text-primary); } .task-planner-warning { display: inline-flex; align-items: center; padding: 4px 8px; border: 1px solid rgba(246, 196, 83, 0.28); border-radius: var(--radius-pill); background: rgba(246, 196, 83, 0.08); color: var(--color-accent-gold); font-size: var(--font-size-xs); font-weight: 900; white-space: nowrap; } .task-planner-prerequisite-tooltip { display: grid; gap: 7px; min-width: 180px; } .task-planner-prerequisite-tooltip strong { color: var(--color-text-primary); font-size: var(--font-size-xs); } .task-planner-prerequisite-tooltip > span { display: grid; gap: 4px; } .task-planner-prerequisite-tooltip > span > span { min-width: 0; overflow: hidden; color: var(--color-text-secondary); text-overflow: ellipsis; white-space: nowrap; } .inline-notice { display: inline-flex; width: fit-content; max-width: 100%; align-items: center; gap: 7px; padding: 5px 9px; border: 1px solid rgba(246, 196, 83, 0.28); border-radius: var(--radius-md); background: linear-gradient(135deg, rgba(246, 196, 83, 0.1), rgba(139, 92, 246, 0.08)), rgba(9, 12, 28, 0.9); box-shadow: 0 10px 24px rgba(2, 6, 23, 0.22); color: var(--color-accent-gold); font-size: var(--font-size-xs); font-weight: 900; line-height: 1.2; animation: inline-notice-in 160ms ease; } .inline-notice .ui-icon { width: 14px; height: 14px; flex: 0 0 auto; } .task-planner-notice { position: absolute; top: 48px; left: 72px; z-index: 2; pointer-events: none; } @keyframes inline-notice-in { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: translateY(0); } } .task-planner-description-panel, .task-planner-task-settings { margin-left: 62px; } .task-planner-description-panel { display: grid; gap: 10px; } .task-planner-category-field, .task-planner-description-field { display: grid; gap: 6px; min-width: 0; } .task-planner-category-field span, .task-planner-description-field span { color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 900; text-transform: uppercase; } .task-planner-category-field input { width: 100%; } .task-planner-category-field.is-disabled span { color: rgba(148, 163, 184, 0.72); } .task-planner-category-field.is-disabled input, .task-planner-category-field input:disabled { border-color: rgba(165, 180, 252, 0.08); background: linear-gradient(135deg, rgba(148, 163, 184, 0.05), transparent 62%), rgba(15, 23, 42, 0.42); box-shadow: none; color: rgba(203, 213, 225, 0.66); cursor: not-allowed; } .task-planner-description { min-height: 72px; resize: vertical; } .task-planner-task-settings { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 12px; align-items: start; padding: 10px; border: 1px solid rgba(165, 180, 252, 0.1); border-radius: var(--radius-md); background: rgba(7, 10, 24, 0.24); } .task-planner-reset-control { display: grid; grid-template-columns: minmax(0, 1fr) 34px; gap: 8px; align-items: center; } .task-planner-reset-control button { display: inline-grid; width: 34px; min-width: 34px; min-height: 36px; place-items: center; padding: 0; border: 1px solid rgba(165, 180, 252, 0.12); border-radius: var(--radius-md); background: rgba(21, 26, 48, 0.58); color: var(--color-text-secondary); } .task-planner-reset-control button:disabled { opacity: 0.42; cursor: not-allowed; } .task-planner-reset-control button .ui-icon { width: 14px; height: 14px; } .task-planner-reset-override.is-empty p { display: grid; min-height: 36px; align-items: center; margin: 0; padding: 0 12px; border: 1px solid rgba(165, 180, 252, 0.08); border-radius: var(--radius-md); background: rgba(15, 23, 42, 0.34); color: var(--color-text-muted); font-size: var(--font-size-sm); font-weight: 800; } .task-planner-relations { display: grid; grid-column: span 1; gap: 6px; min-width: 0; } .task-planner-relations > div { display: grid; gap: 6px; min-height: 36px; } .task-planner-relations em { color: var(--color-text-muted); font-size: var(--font-size-xs); font-style: normal; } .task-planner-relation-chip { display: grid; grid-template-columns: minmax(0, 1fr) auto 28px; gap: 8px; align-items: center; padding: 4px 5px 4px 9px; border: 1px solid rgba(165, 180, 252, 0.12); border-radius: var(--radius-md); background: rgba(21, 26, 48, 0.46); } .task-planner-relation-chip > span { min-width: 0; overflow: hidden; color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 800; text-overflow: ellipsis; white-space: nowrap; } .task-planner-relation-chip label { display: inline-flex; align-items: center; gap: 5px; color: var(--color-text-muted); font-size: var(--font-size-xs); font-weight: 800; } .task-planner-relation-chip label input { min-height: 0; } .task-planner-relation-chip button { display: inline-flex; width: 26px; min-width: 26px; min-height: 26px; align-items: center; justify-content: center; gap: 5px; padding: 0; border: 1px solid rgba(165, 180, 252, 0.12); border-radius: var(--radius-md); background: rgba(21, 26, 48, 0.58); color: var(--color-text-secondary); font-size: var(--font-size-xs); font-weight: 800; } .task-planner-relation-chip button .ui-icon { width: 12px; height: 12px; } .task-planner-relations select { min-height: 36px; padding-inline: 10px; }