.btn { padding: 12px 24px; border-radius: 12px; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 500; gap: 8px; transition: all 0.2s ease; } .btn i { font-size: 15px; } .btn-primary { background: var(--color-accent-gradient); color: var(--color-danger-text); box-shadow: 0 4px 15px var(--color-accent-shadow); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px var(--color-accent-shadow-lg); } .btn-primary:active { transform: translateY(0); box-shadow: 0 2px 10px var(--color-accent-shadow); } .btn-secondary { background-color: var(--color-bg-hover); color: var(--color-text-secondary); border: 2px solid var(--color-border); } .btn-secondary:hover { background-color: var(--color-bg-input-alt); border-color: var(--color-border-medium); transform: translateY(-2px); box-shadow: 0 4px 12px var(--color-shadow-sm); } .btn-secondary:active { transform: translateY(0); background-color: var(--color-border); } .btn-danger { background: var(--color-danger-gradient); color: var(--color-danger-text); box-shadow: 0 4px 15px var(--color-danger-ring); } .btn-danger:hover { transform: translateY(-2px); box-shadow: 0 6px 20px var(--color-danger-ring-lg); } .btn-danger:active { transform: translateY(0); box-shadow: 0 2px 10px var(--color-danger-ring); } /* View Toggle Buttons */ .view-toggle { display: flex; gap: 2px; padding: 3px; background-color: var(--color-bg-muted); border-radius: 10px; border: 1px solid var(--color-border); } .toggle-btn { display: flex; align-items: center; justify-content: center; width: 36px; height: 32px; background-color: transparent; border: none; border-radius: 8px; cursor: pointer; color: var(--color-text-faint); font-size: 14px; transition: all 0.2s ease; } .toggle-btn:hover { background-color: var(--color-border); color: var(--color-text-subtle); } .toggle-btn.active { background-color: var(--color-border); color: var(--color-accent); box-shadow: 0 1px 3px var(--color-shadow); } .toggle-btn i { pointer-events: none; } /* ── Group-by selector (inside .view-toggle) ────────────── */ .view-toggle-separator { width: 1px; height: 20px; background: var(--color-border-medium); align-self: center; margin: 0 2px; } .view-toggle-separator.hidden { display: none; } .group-by-selector { display: flex; align-items: center; position: relative; } .group-by-selector.hidden { display: none; } .group-by-btn.active { color: var(--color-accent); } /* Sort direction button — rotate the SVG icon when order is reversed */ .sort-dir-btn .oxi-icon { transition: transform 0.2s ease; } .sort-dir-btn.active .oxi-icon { transform: rotate(180deg); } /* Active label shown inline next to the icon */ .group-by-label { display: none; font-size: 0.78rem; font-weight: 600; white-space: nowrap; } /* When a group-by is selected the label has text — expand the button to fit */ .group-by-btn:has(.group-by-label:not(:empty)) { width: auto; padding: 0 8px; gap: 5px; } .group-by-btn:has(.group-by-label:not(:empty)) .group-by-label { display: inline; } .group-by-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 200; min-width: 140px; background: var(--color-bg-surface); border: 1px solid var(--color-border); border-radius: 8px; box-shadow: 0 4px 16px var(--color-shadow); padding: 4px; display: flex; flex-direction: column; gap: 2px; } .group-by-menu.hidden { display: none; } .group-by-option { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border: none; background: transparent; border-radius: 6px; cursor: pointer; font-size: 0.85rem; color: var(--color-text); text-align: left; width: 100%; } .group-by-option:hover { background: var(--color-border); } .group-by-option.active { color: var(--color-accent); font-weight: 600; }