/* ═══════════════════════════════════════════════════════════════════ Community Landing — Admin Settings Panel Styles v2.5.0 Tab navigation + fallback separators + image upload buttons ═══════════════════════════════════════════════════════════════════ */ /* ── Tab-hidden class (used instead of inline display:none) ── */ .cl-tab-hidden { display: none !important; } /* ── Injected tabs inside native Discourse nav bar ── Native structure:
*/ .d-nav-submenu__tabs li.cl-admin-tab { cursor: pointer; } .d-nav-submenu__tabs li.cl-admin-tab a { cursor: pointer; } /* Active state for our injected tabs */ .d-nav-submenu__tabs li.cl-admin-tab.active a { color: var(--tertiary, #0088cc); } /* Suppress native Settings tab active styling when another CL tab is selected. Discourse keeps aria-current on the native , so we override it. */ .d-nav-submenu__tabs li.cl-tab-inactive a, .d-nav-submenu__tabs li.cl-tab-inactive a[aria-current="true"] { color: var(--primary-medium, #888) !important; border-bottom-color: transparent !important; } /* Dimmed state when Discourse filter/search is active */ .d-nav-submenu__tabs.cl-filter-active > li { opacity: 0.4; } .d-nav-submenu__tabs.cl-filter-active > li.active { opacity: 1; border-bottom-color: transparent; } /* ── Standalone tab bar (fallback for older Discourse without native nav) ── */ .cl-admin-tabs { display: flex; flex-wrap: wrap; gap: 0; margin: 0 0 20px 0; padding: 0; border-bottom: 1px solid var(--primary-low, rgba(0, 0, 0, 0.1)); } .cl-admin-tabs .cl-admin-tab { padding: 10px 14px; border: none; background: none; color: var(--primary-medium, #888); font-size: 13px; font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease; } .cl-admin-tabs .cl-admin-tab:hover { color: var(--primary, #333); } .cl-admin-tabs .cl-admin-tab.active { color: var(--tertiary, #0088cc); border-bottom-color: var(--tertiary, #0088cc); } .cl-admin-tabs.filter-active .cl-admin-tab { opacity: 0.4; } .cl-admin-tabs.filter-active .cl-admin-tab.active { border-bottom-color: transparent; } html.dark-scheme .cl-admin-tabs { border-bottom-color: rgba(255, 255, 255, 0.1); } html.dark-scheme .cl-admin-tabs .cl-admin-tab:hover { color: var(--primary, #ddd); } /* ── Boolean "Enable" label next to checkboxes ── */ .cl-enable-label { margin-left: 6px; font-size: var(--font-0); color: var(--primary-high); vertical-align: middle; cursor: default; } /* ── Disabled-section notice banner ── */ .cl-disabled-notice { display: flex; align-items: center; gap: 10px; padding: 12px 16px; margin: 12px 0 4px; border-radius: 6px; background: var(--highlight-bg, rgba(255, 191, 0, 0.08)); border: 1px solid var(--highlight-medium, rgba(255, 191, 0, 0.25)); color: var(--primary-high, #333); font-size: var(--font-down-1); line-height: 1.4; } .cl-disabled-notice svg { color: var(--highlight-high, #e0a800); } .cl-disabled-notice strong { font-weight: 700; } /* Dim sub-settings when the section is disabled */ .cl-tabs-active .row.setting.cl-disabled-dim { opacity: 0.35; pointer-events: none; user-select: none; } /* ── When tabs are active, remove separator borders ── */ .cl-tabs-active .row.setting[data-setting] { border-top: none !important; margin-top: 0 !important; padding-top: 0 !important; } /* ── Fallback: Separator borders when tabs are NOT active ── (e.g. if JS fails to load or on older Discourse) */ /* All plugin settings spacing */ .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="community_landing_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="section_order"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="custom_css"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="meta_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="og_image_url"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="favicon_url"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="json_ld_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="logo_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="accent_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="dark_bg_color"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="light_bg_color"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="scroll_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="navbar_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="hero_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="stats_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="stat_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="about_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="topics_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="contributors_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="participation_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="groups_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="faq_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="show_app_ctas"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="ios_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="android_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="app_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="social_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="footer_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="google_"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting^="title_font"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="fontawesome_enabled"] { margin-bottom: 20px; } /* Section separator borders (fallback only) */ .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="section_order"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="custom_css"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="meta_description"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="logo_dark_url"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="accent_color"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="scroll_animation"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="google_font_name"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="fontawesome_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="social_twitter_url"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="navbar_signin_label"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="hero_title"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="stats_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="about_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="participation_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="topics_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="groups_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="faq_enabled"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="show_app_ctas"], .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="footer_description"] { border-top: 2px solid rgba(0, 0, 0, 0.12); margin-top: 28px; padding-top: 24px; } /* Dark mode separators (fallback only) */ html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="section_order"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="custom_css"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="meta_description"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="logo_dark_url"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="accent_color"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="scroll_animation"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="google_font_name"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="fontawesome_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="social_twitter_url"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="navbar_signin_label"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="hero_title"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="stats_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="about_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="participation_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="topics_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="groups_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="faq_enabled"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="show_app_ctas"], html.dark-scheme .admin-detail:not(.cl-tabs-active) .row.setting[data-setting="footer_description"] { border-top-color: rgba(255, 255, 255, 0.12); } /* ── Settings row distribution (match Discourse native layout) ── */ .cl-tabs-active .row.setting { padding-bottom: 20px; } /* Clearfix without overflow:hidden (avoids clipping dropdowns/color pickers) */ .cl-tabs-active .row.setting::after { content: ""; display: table; clear: both; } .cl-tabs-active .row.setting .setting-label { float: left; width: 17.6576%; margin-right: 12px; } .cl-tabs-active .row.setting .setting-label h3 { font-size: var(--font-0); font-weight: normal; } .cl-tabs-active .row.setting .setting-label .history-icon { opacity: 0; transition: opacity 0.3s; color: var(--primary-medium); } .cl-tabs-active .row.setting .setting-label:hover .history-icon { opacity: 1; } .cl-tabs-active .row.setting .setting-value { float: left; width: 53%; padding-right: 20px; } .cl-tabs-active .row.setting .setting-value input[type="checkbox"], .cl-tabs-active .row.setting .setting-value input[type="radio"] { flex: 0 0 auto; } .cl-tabs-active .row.setting .setting-value .select-kit { width: 100% !important; } .cl-tabs-active .row.setting .setting-value .category-selector { width: 95%; } .cl-tabs-active .row.setting .setting-value .input-setting-string, .cl-tabs-active .row.setting .setting-value .input-setting-integer, .cl-tabs-active .row.setting .setting-value .input-setting-textarea { width: 100%; } .cl-tabs-active .row.setting .setting-value .input-setting-textarea { height: 150px; } .cl-tabs-active .row.setting .setting-value .input-setting-list { padding: 1px; background-color: var(--secondary); border: 1px solid var(--input-border-color); border-radius: 3px; transition: border linear 0.2s, box-shadow linear 0.2s; } .cl-tabs-active .row.setting .setting-controls { float: left; } .cl-tabs-active .row.setting .desc, .cl-tabs-active .row.setting .cl-desc, .cl-tabs-active .row.setting .validation-error { padding-top: 3px; font-size: var(--font-down-1); line-height: var(--line-height-large); } .cl-tabs-active .row.setting .desc, .cl-tabs-active .row.setting .cl-desc { color: var(--primary-medium); } .cl-tabs-active .row.setting .validation-error { color: var(--danger); } .cl-tabs-active .row.setting .setting-theme-warning { font-size: var(--font-down-1); color: var(--primary-medium); } /* Overridden settings indicator (yellow dot) */ .cl-tabs-active .row.setting.overridden .values input { background-color: var(--highlight-bg); } .cl-tabs-active .row.setting.overridden h3 { position: relative; } .cl-tabs-active .row.setting.overridden h3::before { content: ""; position: absolute; top: 0.5rem; left: -1rem; width: 0.5rem; height: 0.5rem; border-radius: 100%; background-color: var(--highlight-high); } .cl-tabs-active .row.setting.overridden.string input[type="text"], .cl-tabs-active .row.setting.overridden.string input[type="password"], .cl-tabs-active .row.setting.overridden.string textarea { background-color: var(--highlight-bg); } @media (max-width: 767px) { .cl-tabs-active .row.setting .setting-label { float: none; width: 100%; margin-right: 0; margin-left: 0; } .cl-tabs-active .row.setting .setting-label h3 { margin-bottom: 6px; } .cl-tabs-active .row.setting .setting-value { width: 100%; padding-right: 0; } .cl-tabs-active .row.setting .setting-value .input-setting-list { width: 100%; } .cl-tabs-active .row.setting .setting-value .select-kit { width: 100% !important; } } /* ── Image upload buttons & preview ── */ .cl-upload-wrapper { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; } .cl-upload-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: var(--font-down-1); font-weight: 600; color: var(--secondary); background: var(--tertiary); border: none; border-radius: 4px; cursor: pointer; transition: background 0.15s ease, opacity 0.15s ease; } .cl-upload-btn:hover { background: var(--tertiary-hover); } .cl-upload-btn:disabled { opacity: 0.5; cursor: not-allowed; } .cl-upload-preview { max-width: 80px; max-height: 48px; border-radius: 4px; border: 1px solid var(--primary-low); object-fit: contain; background: var(--primary-very-low); } .cl-upload-preview[src=""], .cl-upload-preview:not([src]) { display: none; } .cl-upload-remove { padding: 4px 8px; font-size: var(--font-down-2); color: var(--danger); background: none; border: 1px solid var(--danger-low); border-radius: 4px; cursor: pointer; transition: background 0.15s ease; } .cl-upload-remove:hover { background: var(--danger-low); } .cl-upload-status { font-size: var(--font-down-2); color: var(--primary-medium); font-style: italic; } /* ── Multi-image list (hero_image_urls) ── */ .cl-multi-image-list { display: flex; flex-wrap: wrap; gap: 8px; width: 100%; margin-top: 8px; } .cl-multi-image-item { display: flex; align-items: center; gap: 6px; padding: 4px 8px; background: var(--primary-very-low); border: 1px solid var(--primary-low); border-radius: 6px; cursor: grab; transition: box-shadow 0.15s ease, border-color 0.15s ease; } .cl-multi-image-item:hover { border-color: var(--primary-low-mid); } .cl-multi-image-item.cl-dragging { opacity: 0.4; } .cl-multi-image-item.cl-drag-over { border-color: var(--tertiary); box-shadow: 0 0 0 2px var(--tertiary-low); } .cl-multi-image-thumb { width: 48px; height: 36px; object-fit: cover; border-radius: 4px; border: 1px solid var(--primary-low); background: var(--secondary); } .cl-multi-image-label { font-size: var(--font-down-2); font-weight: 600; color: var(--primary-medium); min-width: 14px; text-align: center; } .cl-multi-image-actions { display: flex; gap: 2px; } .cl-multi-image-move { padding: 2px 5px; font-size: 10px; line-height: 1; background: none; border: 1px solid var(--primary-low); border-radius: 3px; cursor: pointer; color: var(--primary-medium); transition: background 0.1s ease; } .cl-multi-image-move:hover { background: var(--primary-very-low); color: var(--primary); } .cl-multi-image-remove { padding: 2px 6px; font-size: 14px; line-height: 1; background: none; border: 1px solid var(--danger-low); border-radius: 3px; cursor: pointer; color: var(--danger); transition: background 0.1s ease; } .cl-multi-image-remove:hover { background: var(--danger-low); }