/* ************************************************************************* */ /* SIDENAV SECTIONS (SHARED) */ /* ************************************************************************* */ /* Shared section shell */ #divRelaySection, #divBlossomSection, .sidenavSection { flex-shrink: 0; background-color: var(--secondary-color); border-top: 3px solid var(--primary-color); padding: 10px; transition: padding-top 0.5s ease, padding-bottom 0.5s ease; } /* Shared section title */ #divRelaySectionTitle, #divBlossomSectionTitle, .sidenavSectionTitle { font-family: pageKanji; font-size: 100%; font-weight: bold; margin-bottom: 10px; padding-bottom: 5px; border-bottom: 1px solid var(--muted-color); cursor: pointer; user-select: none; display: flex; justify-content: space-between; align-items: center; transition: border-color 0.2s ease, color 0.2s ease, margin-bottom 0.5s ease, padding-top 0.5s ease, padding-bottom 0.5s ease; } #divBlossomSectionTitle.dragover, .sidenavSectionTitle.dragover { color: var(--accent-color); border-bottom-color: var(--accent-color); } .sidenavSectionToggleIcon { width: 16px; height: 16px; margin-left: 8px; flex-shrink: 0; } .sidenavSectionToggleIcon svg { pointer-events: none; } /* Shared section list */ #divRelayList, #divBlossomList, .sidenavSectionList { font-size: 70%; font-family: var(--font-family); overflow: hidden; max-height: 55vh; opacity: 1; transition: max-height 0.5s ease, opacity 0.5s ease, margin 0.5s ease, padding 0.5s ease; } #divRelaySection.collapsed #divRelayList, #divBlossomSection.collapsed #divBlossomList, .sidenavSection.collapsed .sidenavSectionList { max-height: 0; opacity: 0; margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; pointer-events: none; } /* AI list container */ #divAiList { display: flex; flex-direction: column; gap: 0; } #divRelaySection.collapsed, #divBlossomSection.collapsed, .sidenavSection.collapsed { padding-top: 0; padding-bottom: 0; } #divRelaySection.collapsed #divRelaySectionTitle, #divBlossomSection.collapsed #divBlossomSectionTitle, .sidenavSection.collapsed .sidenavSectionTitle { margin-bottom: 0; padding-top: 8px; padding-bottom: 8px; } /* Shared row primitives */ .sidenavRowEntry { border-bottom: 1px solid var(--muted-color); padding: 4px 0; } .sidenavRow { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 100%; color: var(--primary-color); cursor: pointer; word-break: break-all; transition: color 0.2s ease; padding: 2px 0; } .sidenavRow:hover, .sidenavRowName.active { color: var(--accent-color); } .sidenavRowName { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: inherit; } .sidenavRowMeta { font-size: 80%; margin-left: 5px; white-space: nowrap; flex-shrink: 0; color: var(--primary-color); } .sidenavRowToggle { width: 16px; height: 16px; margin-left: 10px; flex-shrink: 0; } .sidenavRowToggle svg { pointer-events: none; } .sidenavRowDetails { font-size: 85%; color: var(--muted-color); max-height: 0; opacity: 0; overflow: hidden; transition: max-height 0.25s ease, opacity 0.25s ease, margin 0.25s ease; margin: 0; padding-left: 0; } .sidenavRowDetails.expanded { max-height: 120px; opacity: 1; margin-top: 4px; padding-left: 0; } .sidenavRowIndent, .relayRowIndent { display: inline-block; padding: 0 4px; font-size: 100%; line-height: 1; color: transparent; user-select: none; flex-shrink: 0; } .sidenavRow.with-indent::before { content: '≡'; display: inline-block; padding: 0 4px; font-size: 100%; line-height: 1; color: transparent; user-select: none; flex-shrink: 0; } /* AI section aliases to shared row primitives */ .aiProviderEntry { border-bottom: 1px solid var(--muted-color); padding: 4px 0; } .aiProviderRow { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 100%; color: var(--primary-color); cursor: pointer; word-break: break-all; transition: color 0.2s ease; padding: 2px 0; } .aiProviderRow::before { content: '≡'; display: inline-block; padding: 0 4px; font-size: 100%; line-height: 1; color: transparent; user-select: none; flex-shrink: 0; } .aiProviderRow:hover, .aiProviderName.active { color: var(--accent-color); } .aiProviderName { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: inherit; font-weight: bold; } .aiProviderToggle { width: 16px; height: 16px; flex-shrink: 0; } .aiProviderToggle svg { pointer-events: none; } .aiProviderDetails { font-size: 100%; color: var(--muted-color); max-height: 0; opacity: 0; overflow: hidden; transition: max-height 0.25s ease, opacity 0.25s ease, margin 0.25s ease; margin: 0; padding-left: 0; } .aiProviderDetails.expanded { max-height: none; opacity: 1; margin-top: 4px; padding-left: 0; } .aiSavedProviderEmpty { font-size: 70%; color: var(--muted-color); font-style: italic; padding: 4px 0; } /* AI compact dropdown groups (inside AI section) */ #divAiList { display: flex; flex-direction: column; gap: 6px; } #divAiProvidersList { display: flex; flex-direction: column; gap: 0; } #divAiSection:not(.collapsed) #divAiList { max-height: none; overflow: visible; } .aiCompactTools { display: flex; flex-direction: column; gap: 6px; margin-top: 2px; font-size: 1em; } .aiCompactGroup { border-bottom: 1px solid var(--muted-color); padding-bottom: 4px; margin-left: 36px; } .aiCompactGroupHeader { display: flex; align-items: center; justify-content: space-between; gap: 8px; cursor: pointer; color: var(--primary-color); font-weight: 600; font-size: 1em; padding: 3px 0; user-select: none; } .aiCompactGroupHeader:hover { color: var(--accent-color); } .aiCompactGroupTitle { display: inline-flex; align-items: center; min-height: 16px; } .aiCompactGroupToggle { width: 14px; height: 14px; flex-shrink: 0; } .aiCompactGroupToggle svg { pointer-events: none; } .aiCompactGroupBody { overflow: hidden; max-height: 2000px; opacity: 1; font-size: 1em; transition: max-height 0.25s ease, opacity 0.2s ease, margin 0.2s ease; margin-top: 4px; padding-left: 12px; } .aiCompactGroupBody.collapsed { max-height: 0; opacity: 0; margin-top: 0; pointer-events: none; } /* Hide old top placement; panels get re-parented into compact group bodies by JS */ #divSideNavBody > .aiCompactSourcePanel { display: none; } .aiCompactGroupBody > .aiCompactSourcePanel { display: flex; flex-direction: column; gap: 6px; margin-top: 0; padding-top: 0; border-top: none; } .aiCompactGroupBody .aiSideLabel { font-size: 100%; margin: 0; } .aiCompactGroupBody .aiConfigField { display: flex; flex-direction: column; gap: 3px; } .aiCompactGroupBody .aiInput, .aiCompactGroupBody .aiTextarea, .aiCompactGroupBody .aiDropdownBtn, .aiCompactGroupBody .btn { font-size: 100%; padding: 5px 6px; } .aiCompactGroupBody .aiTextarea { min-height: 56px; } .aiCompactGroupBody .aiActionGroup, .aiCompactGroupBody .aiInvoicePanel { padding: 6px; gap: 6px; border-radius: 6px; } .aiCompactGroupBody #divRoutstrDepositInvoiceQr, .aiCompactGroupBody #divRoutstrTopupInvoiceQr, .aiCompactGroupBody #divRoutstrInvoiceQr { min-height: 90px; }