// Rôle : gère le layout des pages toolbox, headers, colonnes et zones de drop globales. @use "../mixins"; .toolbox-head { position: relative; z-index: 30; overflow: visible; padding: var(--space-6); border: 1px solid var(--color-border); border-radius: var(--radius-xl); background: rgba(16, 20, 38, 0.76); backdrop-filter: blur(10px); } .toolbox-head.page-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; overflow: visible; border-color: transparent; background: var(--gradient-nebula), radial-gradient(circle at 86% 18%, rgba(246, 196, 83, 0.1), transparent 28%), linear-gradient(135deg, rgba(16, 20, 38, 0.98), rgba(5, 7, 17, 0.96)); box-shadow: var(--shadow-md); backdrop-filter: none; } .toolbox-head.page-hero > * { z-index: 4; } .toolbox-head-embedded.page-hero { min-height: 132px; padding: var(--space-5); background: var(--gradient-nebula), radial-gradient(circle at 86% 18%, rgba(246, 196, 83, 0.08), transparent 30%), linear-gradient(135deg, rgba(16, 20, 38, 0.94), rgba(5, 7, 17, 0.94)); box-shadow: 0 16px 36px rgba(0, 0, 0, 0.22); } .toolbox-head-embedded.page-hero::before { background: radial-gradient(circle at 100% 0%, rgba(246, 196, 83, 0.38), transparent 24%), linear-gradient(135deg, rgba(246, 196, 83, 0.28), rgba(139, 92, 246, 0.18) 52%, rgba(196, 181, 253, 0.24)); } .toolbox-head-embedded.page-hero::after { background: linear-gradient(135deg, rgba(5, 7, 17, 0.08), rgba(5, 7, 17, 0.42)), radial-gradient(circle at 82% 16%, rgba(246, 196, 83, 0.12), transparent 32%); } .toolbox-head-embedded h1 { margin-bottom: 0; font-size: clamp(1.55rem, 3vw, 2.2rem); } .toolbox-title { width: fit-content; max-width: 100%; padding: 3px 6px; border-radius: var(--radius-sm); cursor: text; } .toolbox-title-row { display: flex; align-items: center; gap: var(--space-3); } .toolbox-hero-link { display: inline-flex; align-items: center; gap: var(--space-2); width: fit-content; margin-top: var(--space-3); } .toolbox-hero-link .ui-icon { width: 18px; height: 18px; } .toolbox-icon-picker { position: relative; z-index: 70; flex: 0 0 auto; } .toolbox-icon-picker-button, .toolbox-game-icon { width: 100px; min-width: 100px; min-height: 100px; border-color: var(--color-primary-border); background: radial-gradient(circle at 50% 35%, rgba(246, 196, 83, 0.18), transparent 44%), rgba(21, 26, 48, 0.86); } .toolbox-icon-picker-button { padding: 0; } .toolbox-game-icon { display: grid; place-items: center; overflow: hidden; border: 1px solid var(--color-primary-border); border-radius: var(--radius-md); } .toolbox-icon-picker-button img, .toolbox-game-icon img { width: 72px; height: 72px; object-fit: contain; } .toolbox-game-icon img { width: 100%; height: 100%; object-fit: cover; } .toolbox-icon-picker-menu { position: absolute; top: calc(100% + 8px); left: 0; z-index: 300; display: grid; grid-template-columns: repeat(5, 42px); gap: 7px; width: max-content; max-width: min(260px, calc(100vw - 48px)); padding: 9px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: rgba(10, 13, 28, 0.99); box-shadow: var(--shadow-lg); } .toolbox-icon-picker-menu button { width: 42px; min-width: 42px; min-height: 42px; padding: 0; border-color: var(--color-border); background: rgba(21, 26, 48, 0.88); } .toolbox-icon-picker-menu button:hover { border-color: rgba(196, 181, 253, 0.32); background: linear-gradient(135deg, rgba(31, 37, 68, 0.94), rgba(18, 22, 44, 0.96)) padding-box, linear-gradient(135deg, rgba(139, 92, 246, 0.3), rgba(196, 181, 253, 0.2)) border-box; box-shadow: 0 0 12px rgba(139, 92, 246, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.05); } .toolbox-icon-picker-menu button.active { @include mixins.temporary-toggle-active; } .toolbox-icon-picker-menu img { width: 26px; height: 26px; object-fit: contain; } .toolbox-title:focus { background: rgba(7, 10, 24, 0.72); outline: 1px solid rgba(246, 196, 83, 0.72); outline-offset: 3px; } .toolbox-tutorial-tooltip { position: fixed; z-index: 640; display: grid; gap: var(--space-3); padding: var(--space-4); border: 1px solid rgba(246, 196, 83, 0.34); border-radius: var(--radius-md); background: radial-gradient(circle at 12% 0%, rgba(246, 196, 83, 0.12), transparent 36%), rgba(7, 10, 24, 0.98); box-shadow: var(--shadow-lg), 0 0 24px rgba(139, 92, 246, 0.18); } .toolbox-tutorial-tooltip::before { content: ""; position: absolute; top: -6px; left: var(--tutorial-arrow-left, 50%); width: 10px; height: 10px; border-top: 1px solid rgba(246, 196, 83, 0.34); border-left: 1px solid rgba(246, 196, 83, 0.34); background: rgba(7, 10, 24, 0.98); transform: translateX(-50%) rotate(45deg); } .toolbox-tutorial-tooltip[data-placement="above"]::before { top: auto; bottom: -6px; border-top: 0; border-left: 0; border-right: 1px solid rgba(246, 196, 83, 0.34); border-bottom: 1px solid rgba(246, 196, 83, 0.34); } .toolbox-tutorial-tooltip[data-placement="right"]::before { top: var(--tutorial-arrow-top, 50%); left: -6px; border-top: 0; border-left: 1px solid rgba(246, 196, 83, 0.34); border-right: 0; border-bottom: 1px solid rgba(246, 196, 83, 0.34); transform: translateY(-50%) rotate(45deg); } .toolbox-tutorial-heading { display: flex; align-items: center; gap: var(--space-2); padding-right: var(--space-6); } .toolbox-tutorial-heading .ui-icon { width: 20px; height: 20px; color: var(--color-accent-gold); } .toolbox-tutorial-heading strong { color: var(--color-text-primary); line-height: 1.25; } .toolbox-tutorial-tooltip p { margin: 0; color: var(--color-text-secondary); font-size: var(--font-size-sm); line-height: 1.5; } .toolbox-tutorial-count { width: fit-content; padding: 2px 7px; border: 1px solid rgba(246, 196, 83, 0.22); border-radius: var(--radius-pill); color: var(--color-accent-gold); font-size: var(--font-size-xs); font-weight: 900; } .toolbox-tutorial-close { position: absolute; top: var(--space-3); right: var(--space-3); width: 30px; min-width: 30px; min-height: 30px; justify-content: center; padding: 0; border-color: transparent; background: transparent; color: var(--color-text-muted); } .toolbox-tutorial-close:hover { border-color: rgba(150, 165, 205, 0.18); background: rgba(21, 26, 48, 0.62); color: var(--color-text-primary); box-shadow: none; } .toolbox-tutorial-close .ui-icon { width: 16px; height: 16px; } .toolbox-tutorial-tooltip footer { display: flex; justify-content: flex-end; } .toolbox-tutorial-tooltip footer button { min-height: 36px; padding-inline: var(--space-3); } .tool-add-controls { position: relative; z-index: 280; display: inline-flex; justify-content: flex-end; } .tool-add-modal-button { min-height: 40px; border-top-right-radius: 0; border-bottom-right-radius: 0; } .tool-add-quick-toggle { width: 42px; min-width: 42px; min-height: 40px; justify-content: center; padding: 0; border-left: 1px solid rgba(255, 255, 255, 0.18); border-top-left-radius: 0; border-bottom-left-radius: 0; } .tool-add-quick-toggle .ui-icon { width: 18px; height: 18px; transition: transform 140ms ease; } .tool-add-quick-toggle.active .ui-icon { transform: rotate(180deg); } .tool-quick-add { position: absolute; top: calc(100% + 8px); right: 0; z-index: 300; display: grid; grid-template-columns: repeat(5, 40px); justify-content: flex-end; width: max-content; max-width: calc(100vw - 48px); gap: 6px; padding: 8px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: rgba(10, 13, 28, 0.99); box-shadow: var(--shadow-lg); opacity: 0; pointer-events: none; transform: translateY(-4px); transition: opacity 140ms ease, transform 140ms ease; } .tool-quick-add.is-open { opacity: 1; pointer-events: auto; transform: translateY(0); } .tool-quick-add::before { content: ""; position: absolute; right: 18px; bottom: 100%; border-right: 7px solid transparent; border-bottom: 7px solid rgba(10, 13, 28, 0.99); border-left: 7px solid transparent; } .tool-quick-add::after { content: ""; position: absolute; right: 0; bottom: 100%; width: 100%; height: 8px; } .tool-quick-add-button, .tool-add-card { color: var(--color-text-primary); } .tool-quick-add-button { background: rgba(21, 26, 48, 0.72); } .modules-toolbar { display: flex; justify-content: flex-end; margin-top: var(--space-4); } .toolbox-actions-row { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: var(--space-4); } .toolbox-actions-row > div { display: flex; flex-wrap: wrap; gap: 10px; } .toolbox-actions-row > div:last-child { justify-content: flex-end; } .toolbox-preferences-row { position: relative; isolation: isolate; display: grid; grid-template-columns: minmax(0, 1fr) auto; width: 100%; max-width: 520px; align-items: center; justify-self: end; gap: var(--space-4); margin-top: var(--space-4); padding: var(--space-4); overflow: hidden; border: 1px solid transparent; border-radius: var(--radius-lg); background: radial-gradient(circle at 100% 0%, rgba(246, 196, 83, 0.08), transparent 34%), linear-gradient(135deg, rgba(16, 20, 38, 0.84), rgba(5, 7, 17, 0.76)); color: var(--color-text-muted); font-size: var(--font-size-sm); font-weight: 800; box-shadow: var(--shadow-sm); } .toolbox-preferences-row::before { content: ""; position: absolute; inset: 0; z-index: -1; padding: 1px; border-radius: inherit; background: radial-gradient(circle at 100% 0%, rgba(246, 196, 83, 0.38), transparent 30%), linear-gradient(135deg, rgba(246, 196, 83, 0.26), rgba(139, 92, 246, 0.16), rgba(56, 189, 248, 0.18)); @include mixins.border-mask; } .toolbox-preferences-row .eyebrow { margin-bottom: 4px; font-size: 0.68rem; } .toolbox-preferences-row strong { display: block; color: var(--color-text-primary); font-size: var(--font-size-sm); } .toolbox-preferences-row + .cards { margin-top: 0; } .toast-position-switch { position: relative; display: inline-grid; grid-template-columns: repeat(2, 32px); width: 74px; min-height: 38px; align-items: center; justify-items: center; gap: 0; padding: 3px 4px; border-color: rgba(165, 180, 252, 0.12); border-radius: var(--radius-pill); background: rgba(7, 10, 24, 0.32); color: var(--color-text-secondary); } .toast-position-switch::before { content: ""; position: absolute; top: 3px; bottom: 3px; left: 4px; width: 30px; border: 1px solid rgba(246, 196, 83, 0.3); border-radius: 50%; background: linear-gradient(135deg, rgba(246, 196, 83, 0.1), rgba(139, 92, 246, 0.08)), rgba(21, 26, 48, 0.58); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); transition: transform var(--duration-fast) var(--ease-standard); } .toast-position-switch[data-position="right"]::before { transform: translateX(32px); } .toast-position-switch span { position: relative; z-index: 1; display: inline-grid; width: 30px; height: 30px; place-items: center; justify-self: center; align-self: center; border-radius: 50%; } .toast-position-switch .ui-icon { width: 16px; height: 16px; } .toast-position-switch:hover { border-color: rgba(196, 181, 253, 0.24); color: var(--color-text-primary); } .modules { align-items: start; } .modules[data-layout-cols="1"] { grid-template-columns: 1fr; } .modules[data-layout-cols="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); } .module-column { display: grid; gap: var(--space-3); align-content: start; min-width: 0; } .module-column.is-empty-warning { min-height: 132px; border: 1px dashed rgba(246, 196, 83, 0.26); border-radius: var(--radius-md); background: rgba(246, 196, 83, 0.04); } .module-column-boundary-drop-zone { position: relative; min-height: 10px; border-radius: var(--radius-pill); } .module-column-boundary-drop-zone.is-drop-target::before { position: absolute; top: 50%; right: 0; left: 0; height: 3px; border-radius: var(--radius-pill); background: rgba(246, 196, 83, 0.9); box-shadow: 0 0 12px rgba(246, 196, 83, 0.24); content: ""; pointer-events: none; transform: translateY(-50%); } .module { --reorder-drop-shadow: var(--shadow-sm); position: relative; contain: paint; overflow: hidden; border-color: transparent; background: rgba(16, 20, 38, 0.42); box-shadow: var(--shadow-sm); @include mixins.gold-panel-frame(true); } .module > * { position: relative; z-index: 1; } .module:hover { transform: none; border-color: transparent; background: rgba(16, 20, 38, 0.42); box-shadow: var(--shadow-sm), 0 0 14px rgba(139, 92, 246, 0.14), 0 0 24px rgba(196, 181, 253, 0.08); } .module:hover::before { background: linear-gradient(135deg, rgba(139, 92, 246, 0.42), rgba(196, 181, 253, 0.28)); } .module:hover::after { background: radial-gradient(circle at calc(100% - var(--radius-lg)) calc(100% - var(--radius-lg)), rgba(196, 181, 253, 0.5) 0 18px, transparent 27px), linear-gradient(90deg, transparent 0 30%, rgba(139, 92, 246, 0.08) 42%, rgba(139, 92, 246, 0.32) 72%, rgba(196, 181, 253, 0.5) 100%), linear-gradient(180deg, transparent 0 30%, rgba(139, 92, 246, 0.08) 42%, rgba(139, 92, 246, 0.32) 72%, rgba(196, 181, 253, 0.5) 100%); } [data-reorder-target="item"].is-dragging, [data-reorder-target="group"].is-dragging { cursor: grabbing; opacity: 0.58; transform: scale(0.99); } [data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target, [data-reorder-target="group"][data-reorder-orientation="vertical"].is-drop-target { position: relative; border-color: rgba(246, 196, 83, 0.72); box-shadow: var(--reorder-drop-shadow, none); } [data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target::before, [data-reorder-target="group"][data-reorder-orientation="vertical"].is-drop-target::before { position: absolute; z-index: 3; top: 0; right: 0; left: 0; height: 3px; border-radius: var(--radius-pill); background: rgba(246, 196, 83, 0.9); box-shadow: 0 0 12px rgba(246, 196, 83, 0.24); content: ""; pointer-events: none; } [data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target.drop-after, [data-reorder-target="group"][data-reorder-orientation="vertical"].is-drop-target.drop-after { box-shadow: var(--reorder-drop-shadow, none); } [data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target.drop-after::before, [data-reorder-target="group"][data-reorder-orientation="vertical"].is-drop-target.drop-after::before { top: auto; bottom: 0; } [data-reorder-target="item"][data-reorder-orientation="horizontal"].is-drop-target, [data-reorder-target="group"][data-reorder-orientation="horizontal"].is-drop-target { border-color: rgba(246, 196, 83, 0.72); box-shadow: var(--reorder-drop-shadow, none), inset 3px 0 0 rgba(246, 196, 83, 0.86); } [data-reorder-target="item"][data-reorder-orientation="horizontal"].is-drop-target.drop-after, [data-reorder-target="group"][data-reorder-orientation="horizontal"].is-drop-target.drop-after { box-shadow: var(--reorder-drop-shadow, none), inset -3px 0 0 rgba(246, 196, 83, 0.86); } .module[data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target { border-color: transparent; box-shadow: var(--shadow-sm), inset 0 3px 0 rgba(246, 196, 83, 0.86), 0 0 14px rgba(246, 196, 83, 0.12); } .module[data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target.drop-after { box-shadow: var(--shadow-sm), inset 0 -3px 0 rgba(246, 196, 83, 0.86), 0 0 14px rgba(246, 196, 83, 0.12); } .module[data-reorder-target="item"][data-reorder-orientation="vertical"].is-drop-target::before { display: none; }