/* ========================================================================== Kagi Unified Pastel Green Theme ========================================================================== */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap'); /* ========================================================================== Light Mode Variables ========================================================================== */ :root { --bg-gradient: linear-gradient(135deg, #f4fbf7 0%, #eef9f1 100%); --bg-card: #ffffff; --text-main: #24332b; --text-muted: #667568; --pastel-accent: #8ee6b3; --pastel-accent-strong: #55c989; --link-color: #2f8f64; --link-visited: #63a97f; --accent-border: #dcefe4; --search-bar-bg: #ffffff; --favicon-bg: #edf8f1; --shadow-card: 0 4px 10px rgba(32, 78, 52, 0.05); --shadow-card-hover: 0 10px 18px rgba(32, 78, 52, 0.08); --shadow-search: 0 8px 24px rgba(32, 78, 52, 0.06); --font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; } /* ========================================================================== Dark Mode Variables ========================================================================== */ @media (prefers-color-scheme: dark) { :root { --bg-gradient: linear-gradient(135deg, #111815 0%, #152017 100%); --bg-card: #1b261f; --text-main: #effaf2; --text-muted: #a7b8ad; --pastel-accent: #91e6b5; --pastel-accent-strong: #70d99f; --link-color: #9ce6bd; --link-visited: #b5e9c7; --accent-border: #2b4033; --search-bar-bg: #1f2d25; --favicon-bg: #26362c; --shadow-card: 0 4px 10px rgba(0, 0, 0, 0.16); --shadow-card-hover: 0 10px 18px rgba(0, 0, 0, 0.22); --shadow-search: 0 8px 24px rgba(0, 0, 0, 0.22); } } /* ========================================================================== Global & Typography ========================================================================== */ body, html, .kagi-search-body { background: var(--bg-gradient) !important; background-attachment: fixed !important; color: var(--text-main) !important; font-family: var(--font-family) !important; } /* ========================================================================== Result Header & Favicon Alignment ========================================================================== */ .res-title-container, .search-result .res-header, .search-result > div:first-child { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: 12px !important; position: relative !important; float: none !important; width: 100% !important; height: auto !important; } .favicon, .res-favicon-container, .search-result img[class*="favicon"] { position: relative !important; top: auto !important; left: auto !important; margin: 0 !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; flex-shrink: 0 !important; padding: 6px !important; background-color: var(--favicon-bg) !important; border-radius: 8px !important; width: 28px !important; height: 28px !important; box-sizing: border-box !important; transform: translateY(1px) !important; } .search-result h3, .search-result a.__sr-title { display: inline-flex !important; align-items: center !important; margin: 0 !important; padding: 0 !important; height: auto !important; vertical-align: middle !important; } .res-title { display: inline-block !important; margin: 0 !important; padding: 0 !important; line-height: 1.1 !important; vertical-align: middle !important; } .search-result h3, .res-title-container { border-bottom: none !important; } /* ========================================================================== Search Result Cards & Sitelinks ========================================================================== */ .search-result, .sitelinks-container, .sub-results-container { background-color: var(--bg-card) !important; border: 1px solid var(--accent-border) !important; border-left: 4px solid var(--pastel-accent) !important; border-radius: 12px !important; padding: 18px !important; margin-bottom: 18px !important; box-shadow: var(--shadow-card) !important; } .search-result .search-result { border-left: 2px solid var(--accent-border) !important; padding: 10px 0 10px 12px !important; margin-bottom: 8px !important; box-shadow: none !important; background: transparent !important; } @media (max-width: 767px) { .search-result, .sitelinks-container, .sub-results-container { padding: 12px !important; margin-bottom: 12px !important; border-radius: 10px !important; } } @media (min-width: 768px) { .search-result { transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease; } .search-result:hover { transform: translateY(-2px); border-left-color: var(--pastel-accent-strong) !important; box-shadow: var(--shadow-card-hover) !important; } } /* ========================================================================== Colours & Text Styling ========================================================================== */ .search-result a:link, .search-result .res-title, .search-result .res-title * { color: var(--link-color) !important; font-weight: 600 !important; text-decoration: none !important; } .search-result a:visited, .search-result a:visited * { color: var(--link-visited) !important; } .search-result a:hover .res-title { text-decoration: underline !important; } .search-result .res-snippet, .search-result .short-desc, .search-result p { color: var(--text-muted) !important; font-size: 14px !important; line-height: 1.6 !important; margin-top: 8px !important; } .search-result .path, .search-result .res-url-domain, .search-result cite { color: var(--pastel-accent-strong) !important; font-size: 13px !important; opacity: 0.95 !important; } /* ========================================================================== Search Input Elements Mobile fix: reset all nested wrappers, then draw exactly one pill. ========================================================================== */ /* First, remove duplicate borders/backgrounds from every nested search wrapper. */ .search-form, .control-center-search-form, .search-input-container, .search-input-wrapper, .search-form fieldset, .search-form-container fieldset, .control-center-search-form fieldset, .auto-suggestions-container { background: transparent !important; background-color: transparent !important; border: none !important; box-shadow: none !important; outline: none !important; border-radius: 0 !important; box-sizing: border-box !important; } /* Remove pseudo-element outlines that can appear on mobile. */ .search-form::before, .search-form::after, .control-center-search-form::before, .control-center-search-form::after, .search-input-container::before, .search-input-container::after, .search-input-wrapper::before, .search-input-wrapper::after { background: transparent !important; border: none !important; box-shadow: none !important; outline: none !important; } /* Draw the visible search bar only on the outer container. */ .search-form-container { background-color: var(--search-bar-bg) !important; border: 1px solid var(--accent-border) !important; border-radius: 999px !important; box-shadow: var(--shadow-search) !important; box-sizing: border-box !important; overflow: hidden !important; } /* Keep the inner layout aligned without adding visual layers. */ .search-form, .control-center-search-form, .search-input-container, .search-input-wrapper { display: flex !important; align-items: center !important; width: 100% !important; min-width: 0 !important; } /* Text input itself. */ .search-input, #search-input, .search-form-container input[type="text"], .search-form input[type="search"] { background: transparent !important; background-color: transparent !important; color: var(--text-main) !important; border: none !important; box-shadow: none !important; outline: none !important; border-radius: 0 !important; font-family: var(--font-family) !important; width: 100% !important; min-width: 0 !important; padding-left: 14px !important; padding-right: 10px !important; } /* Search, clear, and icon buttons. */ .search-form-container button, .search-form button, .search-input-wrapper button, .search-form-container .search-icons, .search-form .search-icons { background: transparent !important; background-color: transparent !important; border: none !important; box-shadow: none !important; outline: none !important; border-radius: 0 !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; color: var(--text-muted) !important; } /* Desktop search bar sizing. */ @media (min-width: 768px) { .search-form-container { min-height: 48px !important; } .search-input, #search-input, .search-form-container input[type="text"], .search-form input[type="search"] { height: 48px !important; line-height: 48px !important; font-size: 16px !important; } } /* Mobile-specific correction for the duplicated pill outline. */ @media (max-width: 767px) { .search-form-container { min-height: 64px !important; border-radius: 999px !important; padding: 0 10px !important; } .search-form, .control-center-search-form, .search-input-container, .search-input-wrapper { min-height: 62px !important; height: 62px !important; background: transparent !important; border: none !important; box-shadow: none !important; } .search-input, #search-input, .search-form-container input[type="text"], .search-form input[type="search"] { height: 62px !important; line-height: 62px !important; font-size: 18px !important; padding-left: 12px !important; padding-right: 8px !important; } .search-form-container button, .search-form button, .search-input-wrapper button { height: 62px !important; min-width: 44px !important; padding: 0 8px !important; } } /* ========================================================================== Tabs / Navigation Accents ========================================================================== */ .search-tabs a, .search-filters a, .k_ui_tabs a, nav a { color: var(--text-muted) !important; } .search-tabs a:hover, .search-filters a:hover, .k_ui_tabs a:hover, nav a:hover { color: var(--pastel-accent-strong) !important; } .search-tabs .active, .search-filters .active, .k_ui_tabs .active, nav .active { color: var(--link-color) !important; border-color: var(--pastel-accent) !important; } /* ========================================================================== Desktop Search Bubble Restoration Keeps mobile search bar exactly as-is. ========================================================================== */ @media (min-width: 768px) { /* On desktop, let the outer container act as layout only. */ .search-form-container { background: transparent !important; background-color: transparent !important; border: none !important; box-shadow: none !important; border-radius: 0 !important; overflow: visible !important; padding: 0 !important; } /* Recreate the visible desktop search bubble on the inner search container. */ .search-input-container { background-color: var(--search-bar-bg) !important; border: 1px solid var(--accent-border) !important; border-radius: 999px !important; box-shadow: var(--shadow-search) !important; box-sizing: border-box !important; min-height: 48px !important; padding: 0 12px !important; display: flex !important; align-items: center !important; width: 100% !important; overflow: hidden !important; } /* Keep deeper wrappers invisible so only one desktop bubble appears. */ .search-input-wrapper, .search-form, .control-center-search-form, .search-form fieldset, .search-form-container fieldset { background: transparent !important; background-color: transparent !important; border: none !important; box-shadow: none !important; outline: none !important; border-radius: 0 !important; } .search-input, #search-input, .search-form-container input[type="text"], .search-form input[type="search"] { height: 48px !important; line-height: 48px !important; font-size: 16px !important; padding-left: 12px !important; padding-right: 10px !important; } .search-form-container button, .search-form button, .search-input-wrapper button { height: 48px !important; min-width: 42px !important; padding: 0 8px !important; } }