/** * Docs & Knowledge Base v2 – Apple Liquid-Glass Frontend * * Design inspired by apple.com/iphone-17-pro: * • SF Pro Display font stack with tight tracking * • Frosted-glass / backdrop-filter surfaces * • Full-width alternating light/dark sections * • Generous whitespace, scroll-triggered reveals * • Subtle card hover animations with glassmorphism * • Dark-mode support via data-theme attribute * * @package King_Addons */ /* ═══════════════════════════════════════════ 0. CSS CUSTOM PROPERTIES ═══════════════════════════════════════════ */ :root { /* Brand */ --kng-docs-primary: #0071e3; --kng-docs-primary-hover: #0077ed; --kng-docs-icon-color: #0071e3; --kng-docs-link-color: #0071e3; /* Surface (light) */ --kng-docs-bg: #fbfbfd; --kng-docs-bg-alt: #f5f5f7; --kng-docs-surface: rgba(255, 255, 255, 0.72); --kng-docs-surface-solid: #ffffff; --kng-docs-surface-hover: rgba(255, 255, 255, 0.92); /* Text */ --kng-docs-text: #1d1d1f; --kng-docs-text-secondary: #6e6e73; --kng-docs-text-muted: #86868b; /* Borders / Shadows */ --kng-docs-border: rgba(0, 0, 0, 0.06); --kng-docs-divider: rgba(0, 0, 0, 0.04); --kng-docs-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04); --kng-docs-shadow: 0 4px 24px rgba(0, 0, 0, 0.06); --kng-docs-shadow-lg: 0 12px 48px rgba(0, 0, 0, 0.08); --kng-docs-shadow-glow: 0 0 0 1px rgba(0, 0, 0, 0.04), 0 8px 40px rgba(0, 0, 0, 0.06); /* Radii */ --kng-docs-radius-xl: 24px; --kng-docs-radius: 20px; --kng-docs-radius-md: 16px; --kng-docs-radius-sm: 12px; --kng-docs-radius-xs: 8px; /* Motion */ --kng-docs-ease: cubic-bezier(0.25, 0.46, 0.45, 0.94); --kng-docs-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); --kng-docs-transition: 0.3s var(--kng-docs-ease); --kng-docs-transition-fast: 0.18s var(--kng-docs-ease); /* Typography */ --kng-docs-font: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'Segoe UI', Roboto, system-ui, sans-serif; --kng-docs-font-mono: 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace; } /* ── Dark mode ── */ [data-kng-theme="dark"] { --kng-docs-bg: #000000; --kng-docs-bg-alt: #111111; --kng-docs-surface: rgba(30, 30, 30, 0.72); --kng-docs-surface-solid: #1c1c1e; --kng-docs-surface-hover: rgba(44, 44, 46, 0.88); --kng-docs-text: #f5f5f7; --kng-docs-text-secondary: #a1a1a6; --kng-docs-text-muted: #86868b; --kng-docs-border: rgba(255, 255, 255, 0.08); --kng-docs-divider: rgba(255, 255, 255, 0.05); --kng-docs-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.2); --kng-docs-shadow: 0 4px 24px rgba(0, 0, 0, 0.3); --kng-docs-shadow-lg: 0 12px 48px rgba(0, 0, 0, 0.4); --kng-docs-shadow-glow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 8px 40px rgba(0, 0, 0, 0.3); } /* ═══════════════════════════════════════════ 1. BASE / RESET ═══════════════════════════════════════════ */ .kng-docs-page { font-family: var(--kng-docs-font); background: radial-gradient(ellipse 80% 40% at 50% -5%, rgba(0,113,227,0.10) 0%, transparent 70%), radial-gradient(ellipse 50% 30% at 85% 40%, rgba(90,200,250,0.07) 0%, transparent 60%), radial-gradient(ellipse 40% 25% at 15% 60%, rgba(175,82,222,0.05) 0%, transparent 60%), var(--kng-docs-bg); color: var(--kng-docs-text); min-height: 100vh; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; line-height: 1.47059; letter-spacing: -0.022em; } [data-kng-theme="dark"] .kng-docs-page, [data-kng-theme="dark"].kng-docs-page { background: radial-gradient(ellipse 80% 40% at 50% -5%, rgba(0,113,227,0.18) 0%, transparent 70%), radial-gradient(ellipse 50% 30% at 85% 40%, rgba(90,200,250,0.10) 0%, transparent 60%), radial-gradient(ellipse 40% 25% at 15% 60%, rgba(175,82,222,0.08) 0%, transparent 60%), #000000; } .kng-docs-page *, .kng-docs-page *::before, .kng-docs-page *::after { box-sizing: border-box; } .kng-docs-container { max-width: 1120px; margin: 0 auto; padding: 0 24px; } .kng-docs-wide-container { max-width: 1440px; margin: 0 auto; padding: 0 24px; } /* ═══════════════════════════════════════════ 2. HERO SECTION ═══════════════════════════════════════════ */ .kng-docs-hero { text-align: center; padding: 80px 0 48px; max-width: 680px; margin: 0 auto; } .kng-docs-hero-eyebrow { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase; color: var(--kng-docs-primary); margin-bottom: 16px; } .kng-docs-hero-eyebrow svg { width: 16px; height: 16px; } .kng-docs-hero-title { font-size: clamp(40px, 6vw, 64px); font-weight: 700; letter-spacing: -0.04em; line-height: 1.05; color: var(--kng-docs-text); margin: 0 0 16px; } .kng-docs-hero-subtitle { font-size: clamp(17px, 2vw, 21px); font-weight: 400; color: var(--kng-docs-text-secondary); line-height: 1.52381; letter-spacing: 0.011em; margin: 0 0 40px; } /* ═══════════════════════════════════════════ 3. SEARCH — Frosted Glass Capsule ═══════════════════════════════════════════ */ .kng-docs-search { position: relative; max-width: 640px; margin: 0 auto 64px; z-index: 50; } .kng-docs-search-inner { position: relative; display: flex; align-items: center; } .kng-docs-search-icon { position: absolute; left: 22px; width: 20px; height: 20px; color: var(--kng-docs-text-muted); pointer-events: none; transition: color var(--kng-docs-transition-fast); } .kng-docs-search-input { width: 100%; height: 56px; padding: 0 56px; font-size: 17px; font-family: var(--kng-docs-font); font-weight: 400; letter-spacing: -0.022em; color: var(--kng-docs-text); border: 1px solid var(--kng-docs-border); border-radius: 980px; background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); box-shadow: var(--kng-docs-shadow); transition: all var(--kng-docs-transition); outline: none; } .kng-docs-search-input:focus { border-color: var(--kng-docs-primary); box-shadow: var(--kng-docs-shadow-lg), 0 0 0 4px rgba(0, 113, 227, 0.12); background: var(--kng-docs-surface-hover); } .kng-docs-search-input:focus ~ .kng-docs-search-icon { color: var(--kng-docs-primary); } .kng-docs-search-input::placeholder { color: var(--kng-docs-text-muted); } /* Shortcut hint */ .kng-docs-search-shortcut { position: absolute; right: 18px; display: flex; align-items: center; gap: 4px; pointer-events: none; transition: opacity var(--kng-docs-transition-fast); } .kng-docs-search-shortcut kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 6px; font-family: var(--kng-docs-font); font-size: 12px; font-weight: 500; color: var(--kng-docs-text-muted); background: var(--kng-docs-bg-alt); border: 1px solid var(--kng-docs-border); border-radius: 6px; } .kng-docs-search-input:focus ~ .kng-docs-search-shortcut { opacity: 0; } /* Loader */ .kng-docs-search-loader { position: absolute; right: 20px; display: none; } .kng-docs-search-loader svg { width: 22px; height: 22px; color: var(--kng-docs-primary); animation: kng-spin 0.8s linear infinite; } @keyframes kng-spin { to { transform: rotate(360deg); } } /* Results dropdown */ .kng-docs-search-results { position: absolute; top: calc(100% + 8px); left: 0; right: 0; background: var(--kng-docs-surface); backdrop-filter: blur(40px) saturate(200%); -webkit-backdrop-filter: blur(40px) saturate(200%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius); box-shadow: var(--kng-docs-shadow-lg); max-height: 420px; overflow-y: auto; overscroll-behavior: contain; display: none; } .kng-docs-search-results::-webkit-scrollbar { width: 6px; } .kng-docs-search-results::-webkit-scrollbar-thumb { background: var(--kng-docs-border); border-radius: 3px; } .kng-docs-search-result { display: flex; flex-direction: column; gap: 4px; padding: 14px 20px; text-decoration: none; color: inherit; border-bottom: 1px solid var(--kng-docs-divider); transition: background var(--kng-docs-transition-fast); } .kng-docs-search-result:last-child { border-bottom: none; } .kng-docs-search-result:hover, .kng-docs-search-result:focus { background: var(--kng-docs-surface-hover); outline: none; } .kng-docs-search-result-title { font-weight: 600; font-size: 15px; color: var(--kng-docs-text); } .kng-docs-search-result-title mark { background: rgba(0, 113, 227, 0.12); color: var(--kng-docs-primary); padding: 1px 3px; border-radius: 3px; } .kng-docs-search-result-meta { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--kng-docs-text-muted); } .kng-docs-search-result-meta .kng-docs-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--kng-docs-text-muted); opacity: 0.5; } .kng-docs-search-empty { padding: 40px 24px; text-align: center; color: var(--kng-docs-text-secondary); font-size: 15px; } /* ═══════════════════════════════════════════ 4. CATEGORIES GRID — Glass Cards ═══════════════════════════════════════════ */ .kng-docs-categories { display: grid; grid-template-columns: repeat(var(--kng-docs-columns, 3), 1fr); gap: 20px; padding-bottom: 80px; } @media (max-width: 1024px) { .kng-docs-categories { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 640px) { .kng-docs-categories { grid-template-columns: 1fr; } } /* ── Glass Card Layout ── */ .kng-docs-category--glass-card { position: relative; background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius); padding: 32px 28px; text-decoration: none; color: inherit; display: flex; flex-direction: column; gap: 12px; overflow: hidden; transition: transform var(--kng-docs-transition), box-shadow var(--kng-docs-transition), border-color var(--kng-docs-transition); } .kng-docs-category--glass-card:hover { transform: translateY(-4px) scale(1.01); box-shadow: var(--kng-docs-shadow-lg); border-color: rgba(0, 113, 227, 0.2); } .kng-docs-category--glass-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0, 113, 227, 0.04) 0%, transparent 60%); border-radius: inherit; opacity: 0; transition: opacity var(--kng-docs-transition); pointer-events: none; } .kng-docs-category--glass-card:hover::before { opacity: 1; } /* Icon badge */ .kng-docs-category__icon { width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--kng-docs-icon-color), color-mix(in srgb, var(--kng-docs-icon-color) 70%, #5ac8fa)); border-radius: var(--kng-docs-radius-sm); flex-shrink: 0; box-shadow: 0 4px 12px rgba(0, 113, 227, 0.2); } .kng-docs-category__icon svg { width: 24px; height: 24px; color: #fff; } .kng-docs-category__title { font-size: 20px; font-weight: 600; letter-spacing: -0.02em; color: var(--kng-docs-text); margin: 0; } .kng-docs-category__desc { font-size: 15px; color: var(--kng-docs-text-secondary); line-height: 1.47; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .kng-docs-category__count { font-size: 13px; font-weight: 500; color: var(--kng-docs-text-muted); margin-top: auto; padding-top: 4px; } /* Article preview list inside glass-card */ .kng-docs-category--glass-card .kng-docs-category__articles { list-style: none; padding: 0; margin: 4px 0 0; display: flex; flex-direction: column; gap: 2px; } .kng-docs-category--glass-card .kng-docs-category__articles li { display: flex; align-items: center; gap: 8px; } .kng-docs-category--glass-card .kng-docs-category__article-link { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--kng-docs-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .kng-docs-category--glass-card .kng-docs-category__article-link svg { width: 13px; height: 13px; color: var(--kng-docs-text-muted); flex-shrink: 0; } .kng-docs-category__arrow { position: absolute; right: 20px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; color: var(--kng-docs-text-muted); opacity: 0; transition: opacity var(--kng-docs-transition-fast), transform var(--kng-docs-transition-fast); } .kng-docs-category--glass-card:hover .kng-docs-category__arrow { opacity: 1; transform: translateY(-50%) translateX(4px); } /* ── Glass List Layout ── */ .kng-docs-layout--glass-list .kng-docs-categories { grid-template-columns: 1fr; gap: 12px; } .kng-docs-category--glass-list { position: relative; display: flex; align-items: center; gap: 20px; background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-md); padding: 20px 24px; text-decoration: none; color: inherit; transition: transform var(--kng-docs-transition), box-shadow var(--kng-docs-transition), border-color var(--kng-docs-transition); } .kng-docs-category--glass-list:hover { transform: translateX(4px); box-shadow: var(--kng-docs-shadow); border-color: rgba(0, 113, 227, 0.2); } .kng-docs-category--glass-list .kng-docs-category__content { flex: 1; min-width: 0; } .kng-docs-category--glass-list .kng-docs-category__title { font-size: 17px; } .kng-docs-category--glass-list .kng-docs-category__desc { font-size: 14px; -webkit-line-clamp: 1; } .kng-docs-category--glass-list .kng-docs-category__count { margin-top: 4px; } .kng-docs-category--glass-list .kng-docs-category__arrow-list { width: 20px; height: 20px; color: var(--kng-docs-text-muted); flex-shrink: 0; transition: transform var(--kng-docs-transition-fast); } .kng-docs-category--glass-list:hover .kng-docs-category__arrow-list { color: var(--kng-docs-primary); transform: translateX(3px); } /* ── Glass Grid — two-row card with articles ── */ .kng-docs-category--glass-grid { background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius); padding: 28px; display: flex; flex-direction: column; gap: 16px; transition: box-shadow var(--kng-docs-transition), border-color var(--kng-docs-transition); } .kng-docs-category--glass-grid:hover { box-shadow: var(--kng-docs-shadow); border-color: rgba(0, 113, 227, 0.15); } .kng-docs-category--glass-grid .kng-docs-category__header { display: flex; align-items: center; gap: 14px; } .kng-docs-category--glass-grid .kng-docs-category__header-text { flex: 1; min-width: 0; } .kng-docs-category--glass-grid .kng-docs-category__title { font-size: 18px; } .kng-docs-category--glass-grid .kng-docs-category__count-badge { font-size: 12px; font-weight: 600; color: var(--kng-docs-text-muted); background: var(--kng-docs-bg-alt); padding: 3px 10px; border-radius: 980px; white-space: nowrap; } .kng-docs-category--glass-grid .kng-docs-category__articles { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; } .kng-docs-category--glass-grid .kng-docs-category__article-link { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: var(--kng-docs-radius-xs); text-decoration: none; font-size: 14px; color: var(--kng-docs-text); transition: background var(--kng-docs-transition-fast), color var(--kng-docs-transition-fast); } .kng-docs-category--glass-grid .kng-docs-category__article-link:hover { background: var(--kng-docs-bg-alt); color: var(--kng-docs-primary); } .kng-docs-category--glass-grid .kng-docs-category__article-link svg { width: 14px; height: 14px; color: var(--kng-docs-text-muted); flex-shrink: 0; } .kng-docs-category--glass-grid .kng-docs-category__more { display: inline-flex; align-items: center; gap: 4px; font-size: 14px; font-weight: 500; color: var(--kng-docs-primary); text-decoration: none; padding: 6px 0; transition: gap var(--kng-docs-transition-fast); } .kng-docs-category--glass-grid .kng-docs-category__more:hover { gap: 8px; } .kng-docs-category--glass-grid .kng-docs-category__more svg { width: 16px; height: 16px; } /* ═══════════════════════════════════════════ 5. EMPTY STATE ═══════════════════════════════════════════ */ .kng-docs-empty { text-align: center; padding: 100px 24px; } .kng-docs-empty svg { width: 56px; height: 56px; color: var(--kng-docs-text-muted); margin-bottom: 20px; opacity: 0.5; } .kng-docs-empty h3 { font-size: 22px; font-weight: 600; letter-spacing: -0.02em; margin: 0 0 8px; } .kng-docs-empty p { font-size: 15px; color: var(--kng-docs-text-secondary); margin: 0; } /* ═══════════════════════════════════════════ 6. BREADCRUMBS ═══════════════════════════════════════════ */ .kng-docs-breadcrumbs { display: flex; align-items: center; gap: 8px; padding: 24px 0 20px; font-size: 13px; font-weight: 500; color: var(--kng-docs-text-muted); flex-wrap: wrap; } .kng-docs-breadcrumb-item { display: inline-flex; align-items: center; gap: 5px; text-decoration: none; color: var(--kng-docs-text-muted); transition: color var(--kng-docs-transition-fast); } .kng-docs-breadcrumb-item svg { width: 14px; height: 14px; } .kng-docs-breadcrumb-item:hover { color: var(--kng-docs-primary); } .kng-docs-breadcrumb-sep { color: var(--kng-docs-text-muted); opacity: 0.4; font-size: 12px; } .kng-docs-breadcrumb-current { color: var(--kng-docs-text); font-weight: 600; } /* ═══════════════════════════════════════════ 7. SINGLE DOC LAYOUT ═══════════════════════════════════════════ */ .kng-docs-single-layout { display: grid; grid-template-columns: 1fr; gap: 40px; padding-bottom: 80px; } .kng-docs-single-layout.has-sidebar { grid-template-columns: 260px 1fr; } .kng-docs-single-layout.has-sidebar.has-toc-aside { grid-template-columns: 260px 1fr 220px; } @media (max-width: 1024px) { .kng-docs-single-layout.has-sidebar, .kng-docs-single-layout.has-sidebar.has-toc-aside { grid-template-columns: 1fr; } } /* ── Sidebar ── */ .kng-docs-sidebar { position: relative; } .kng-docs-sidebar.is-sticky .kng-docs-sidebar-inner { position: sticky; top: 100px; max-height: calc(100vh - 120px); overflow-y: auto; } .kng-docs-sidebar-inner { background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-md); padding: 20px; } .kng-docs-sidebar-title { font-size: 13px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; color: var(--kng-docs-text-muted); margin: 0 0 12px; padding-bottom: 12px; border-bottom: 1px solid var(--kng-docs-divider); } .kng-docs-sidebar-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 1px; } .kng-docs-sidebar-list li a { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; font-size: 14px; color: var(--kng-docs-text-secondary); text-decoration: none; border-radius: var(--kng-docs-radius-xs); transition: all var(--kng-docs-transition-fast); font-weight: 400; } .kng-docs-sidebar-list li a:hover { background: var(--kng-docs-bg-alt); color: var(--kng-docs-primary); } .kng-docs-sidebar-list li.is-current a { background: rgba(0, 113, 227, 0.08); color: var(--kng-docs-primary); font-weight: 600; } .kng-docs-sidebar-count { font-size: 12px; font-weight: 600; color: var(--kng-docs-text-muted); background: var(--kng-docs-bg-alt); padding: 2px 8px; border-radius: 980px; } /* ── Article ── */ .kng-docs-article { min-width: 0; } .kng-docs-article-actions { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 16px; } .kng-docs-action-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; font-size: 13px; font-weight: 500; font-family: var(--kng-docs-font); color: var(--kng-docs-text-secondary); background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: 980px; cursor: pointer; transition: all var(--kng-docs-transition-fast); } .kng-docs-action-btn:hover { background: var(--kng-docs-surface-hover); color: var(--kng-docs-text); border-color: rgba(0, 0, 0, 0.12); } .kng-docs-action-btn svg { width: 16px; height: 16px; } .kng-docs-article-header { margin-bottom: 32px; } .kng-docs-article-title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; letter-spacing: -0.04em; line-height: 1.1; margin: 0 0 16px; color: var(--kng-docs-text); } .kng-docs-article-meta { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; font-size: 14px; color: var(--kng-docs-text-muted); } .kng-docs-article-meta > span { display: inline-flex; align-items: center; gap: 6px; } .kng-docs-article-meta svg { width: 15px; height: 15px; opacity: 0.6; } /* Tags */ .kng-docs-article-tags { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 8px; } .kng-docs-tag { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; font-size: 12px; font-weight: 500; color: var(--kng-docs-text-muted); background: var(--kng-docs-bg-alt); border-radius: 980px; text-decoration: none; transition: all var(--kng-docs-transition-fast); } .kng-docs-tag:hover { color: var(--kng-docs-primary); background: rgba(0, 113, 227, 0.08); } /* ═══════════════════════════════════════════ 8. TABLE OF CONTENTS — Frosted Glass ═══════════════════════════════════════════ */ .kng-docs-toc { background: var(--kng-docs-surface); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-md); padding: 20px 24px; margin-bottom: 32px; } .kng-docs-toc-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; color: var(--kng-docs-text-muted); margin: 0 0 12px; } .kng-docs-toc-title svg { width: 16px; height: 16px; } .kng-docs-toc-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 2px; } .kng-docs-toc-item a { display: block; padding: 6px 12px; font-size: 14px; color: var(--kng-docs-text-secondary); text-decoration: none; border-radius: var(--kng-docs-radius-xs); border-left: 2px solid transparent; transition: all var(--kng-docs-transition-fast); } .kng-docs-toc-item a:hover, .kng-docs-toc-item.is-active a { color: var(--kng-docs-primary); background: rgba(0, 113, 227, 0.06); border-left-color: var(--kng-docs-primary); } .kng-docs-toc-h3 a { padding-left: 24px; } .kng-docs-toc-h4 a { padding-left: 36px; } .kng-docs-toc-h5 a { padding-left: 48px; } /* Floating TOC aside */ .kng-docs-toc-floating { position: relative; } .kng-docs-toc-floating.is-sticky .kng-docs-toc-floating-inner { position: sticky; top: 100px; max-height: calc(100vh - 120px); overflow-y: auto; } .kng-docs-toc-floating-inner { padding: 16px; } .kng-docs-toc-floating-inner .kng-docs-toc-title { font-size: 12px; } .kng-docs-toc-floating-inner .kng-docs-toc-item a { font-size: 13px; padding: 5px 10px; } @media (max-width: 1024px) { .kng-docs-toc-floating { display: none; } } /* ═══════════════════════════════════════════ 9. ARTICLE CONTENT ═══════════════════════════════════════════ */ .kng-docs-article-content { font-size: 17px; line-height: 1.64706; letter-spacing: -0.022em; color: var(--kng-docs-text); } .kng-docs-article-content h2 { font-size: 28px; font-weight: 700; letter-spacing: -0.032em; margin: 48px 0 16px; scroll-margin-top: 100px; } .kng-docs-article-content h3 { font-size: 22px; font-weight: 600; letter-spacing: -0.026em; margin: 40px 0 12px; scroll-margin-top: 100px; } .kng-docs-article-content h4 { font-size: 18px; font-weight: 600; margin: 32px 0 10px; scroll-margin-top: 100px; } .kng-docs-article-content p { margin: 0 0 20px; } .kng-docs-article-content a { color: var(--kng-docs-link-color); text-decoration: underline; text-decoration-color: rgba(0, 113, 227, 0.3); text-underline-offset: 2px; transition: text-decoration-color var(--kng-docs-transition-fast); } .kng-docs-article-content a:hover { text-decoration-color: var(--kng-docs-link-color); } .kng-docs-article-content img { max-width: 100%; height: auto; border-radius: var(--kng-docs-radius-sm); margin: 24px 0; } .kng-docs-article-content pre { background: var(--kng-docs-bg-alt); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-sm); padding: 20px 24px; overflow-x: auto; font-family: var(--kng-docs-font-mono); font-size: 14px; line-height: 1.6; margin: 24px 0; } .kng-docs-article-content code { font-family: var(--kng-docs-font-mono); font-size: 0.88em; background: var(--kng-docs-bg-alt); padding: 2px 6px; border-radius: 4px; } .kng-docs-article-content pre code { background: transparent; padding: 0; } .kng-docs-article-content blockquote { border-left: 3px solid var(--kng-docs-primary); margin: 24px 0; padding: 16px 24px; background: rgba(0, 113, 227, 0.04); border-radius: 0 var(--kng-docs-radius-xs) var(--kng-docs-radius-xs) 0; color: var(--kng-docs-text-secondary); } .kng-docs-article-content ul, .kng-docs-article-content ol { padding-left: 24px; margin: 16px 0; } .kng-docs-article-content li { margin-bottom: 8px; } .kng-docs-article-content table { width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-sm); overflow: hidden; margin: 24px 0; } .kng-docs-article-content th, .kng-docs-article-content td { padding: 12px 16px; text-align: left; border-bottom: 1px solid var(--kng-docs-divider); } .kng-docs-article-content th { background: var(--kng-docs-bg-alt); font-weight: 600; font-size: 14px; text-transform: uppercase; letter-spacing: 0.02em; color: var(--kng-docs-text-secondary); } .kng-docs-article-content tr:last-child td { border-bottom: none; } /* ═══════════════════════════════════════════ 10. REACTIONS ═══════════════════════════════════════════ */ .kng-docs-reactions { text-align: center; padding: 40px 0; margin-top: 48px; border-top: 1px solid var(--kng-docs-divider); } .kng-docs-reactions-question { font-size: 17px; font-weight: 600; color: var(--kng-docs-text); margin: 0 0 20px; } .kng-docs-reactions-buttons { display: inline-flex; gap: 12px; } .kng-docs-reaction-btn { display: inline-flex; flex-direction: column; align-items: center; gap: 6px; padding: 16px 24px; font-family: var(--kng-docs-font); font-size: 13px; font-weight: 500; color: var(--kng-docs-text-secondary); background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-md); cursor: pointer; transition: all var(--kng-docs-transition); min-width: 90px; } .kng-docs-reaction-btn:hover { transform: translateY(-2px); box-shadow: var(--kng-docs-shadow); border-color: rgba(0, 0, 0, 0.12); } .kng-docs-reaction-btn .kng-docs-reaction-emoji { font-size: 28px; line-height: 1; transition: transform var(--kng-docs-ease-spring) 0.15s; } .kng-docs-reaction-btn:hover .kng-docs-reaction-emoji { transform: scale(1.2); } .kng-docs-reaction-btn.is-selected { border-color: var(--kng-docs-primary); background: rgba(0, 113, 227, 0.06); color: var(--kng-docs-primary); } .kng-docs-reactions-thanks { display: none; align-items: center; justify-content: center; gap: 8px; font-size: 16px; font-weight: 500; color: var(--kng-docs-primary); padding: 20px; } .kng-docs-reactions-thanks svg { width: 22px; height: 22px; } .kng-docs-reactions-thanks.is-visible { display: inline-flex; } /* ═══════════════════════════════════════════ 11. RELATED ARTICLES ═══════════════════════════════════════════ */ .kng-docs-related { margin-top: 48px; padding-top: 48px; border-top: 1px solid var(--kng-docs-divider); } .kng-docs-related-title { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; margin: 0 0 20px; } .kng-docs-related-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; } .kng-docs-related-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-sm); text-decoration: none; color: var(--kng-docs-text); font-size: 15px; font-weight: 500; transition: all var(--kng-docs-transition); } .kng-docs-related-item:hover { border-color: rgba(0, 113, 227, 0.2); box-shadow: var(--kng-docs-shadow-sm); transform: translateY(-2px); } .kng-docs-related-item svg { width: 16px; height: 16px; color: var(--kng-docs-text-muted); flex-shrink: 0; transition: transform var(--kng-docs-transition-fast); } .kng-docs-related-item:hover svg { transform: translateX(3px); color: var(--kng-docs-primary); } /* ═══════════════════════════════════════════ 12. NAVIGATION (Prev / Next) ═══════════════════════════════════════════ */ .kng-docs-navigation { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 48px; padding-top: 48px; border-top: 1px solid var(--kng-docs-divider); } @media (max-width: 640px) { .kng-docs-navigation { grid-template-columns: 1fr; } } .kng-docs-nav-item { display: flex; align-items: center; gap: 14px; padding: 20px 24px; background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-md); text-decoration: none; color: inherit; transition: all var(--kng-docs-transition); } .kng-docs-nav-item:hover { border-color: rgba(0, 113, 227, 0.2); box-shadow: var(--kng-docs-shadow-sm); transform: translateY(-2px); } .kng-docs-nav-item svg { width: 20px; height: 20px; color: var(--kng-docs-text-muted); flex-shrink: 0; transition: transform var(--kng-docs-transition-fast); } .kng-docs-nav-prev:hover svg { transform: translateX(-3px); } .kng-docs-nav-next:hover svg { transform: translateX(3px); } .kng-docs-nav-next { text-align: right; justify-content: flex-end; } .kng-docs-nav-label { display: block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--kng-docs-text-muted); margin-bottom: 4px; } .kng-docs-nav-title { display: block; font-size: 15px; font-weight: 600; color: var(--kng-docs-text); } /* ═══════════════════════════════════════════ 13. SOCIAL SHARE ═══════════════════════════════════════════ */ .kng-docs-share { display: flex; align-items: center; gap: 8px; margin-top: 32px; } .kng-docs-share-label { font-size: 13px; font-weight: 600; color: var(--kng-docs-text-muted); text-transform: uppercase; letter-spacing: 0.02em; } .kng-docs-share-btn { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: var(--kng-docs-surface); border: 1px solid var(--kng-docs-border); border-radius: 50%; cursor: pointer; color: var(--kng-docs-text-secondary); transition: all var(--kng-docs-transition-fast); } .kng-docs-share-btn:hover { background: var(--kng-docs-surface-hover); color: var(--kng-docs-primary); transform: scale(1.08); } .kng-docs-share-btn svg { width: 16px; height: 16px; } /* ═══════════════════════════════════════════ 14. CATEGORY PAGE ═══════════════════════════════════════════ */ .kng-docs-category-header-section { text-align: center; padding: 48px 0 40px; } .kng-docs-category-icon-large { width: 64px; height: 64px; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--kng-docs-icon-color), color-mix(in srgb, var(--kng-docs-icon-color) 70%, #5ac8fa)); border-radius: var(--kng-docs-radius-md); margin: 0 auto 16px; box-shadow: 0 8px 24px rgba(0, 113, 227, 0.2); } .kng-docs-category-icon-large svg { width: 32px; height: 32px; color: #fff; } .kng-docs-category-page-title { font-size: clamp(28px, 4vw, 40px); font-weight: 700; letter-spacing: -0.04em; margin: 0 0 8px; } .kng-docs-category-page-desc { font-size: 17px; color: var(--kng-docs-text-secondary); margin: 0 0 8px; max-width: 560px; margin-left: auto; margin-right: auto; } .kng-docs-category-page-count { font-size: 14px; font-weight: 500; color: var(--kng-docs-text-muted); } /* Subcategories */ .kng-docs-subcategories { margin-bottom: 40px; } .kng-docs-subcategories-title { font-size: 13px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--kng-docs-text-muted); margin: 0 0 16px; } .kng-docs-subcategories-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; } .kng-docs-subcategory-card { display: flex; align-items: center; gap: 14px; padding: 16px 20px; background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-sm); text-decoration: none; color: inherit; transition: all var(--kng-docs-transition); } .kng-docs-subcategory-card:hover { box-shadow: var(--kng-docs-shadow-sm); border-color: rgba(0, 113, 227, 0.2); transform: translateY(-2px); } .kng-docs-subcategory-icon { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: rgba(0, 113, 227, 0.08); border-radius: var(--kng-docs-radius-xs); flex-shrink: 0; } .kng-docs-subcategory-icon svg { width: 18px; height: 18px; color: var(--kng-docs-primary); } .kng-docs-subcategory-content { flex: 1; min-width: 0; } .kng-docs-subcategory-name { display: block; font-size: 15px; font-weight: 600; color: var(--kng-docs-text); } .kng-docs-subcategory-count { display: block; font-size: 12px; color: var(--kng-docs-text-muted); } .kng-docs-subcategory-arrow { width: 16px; height: 16px; color: var(--kng-docs-text-muted); flex-shrink: 0; transition: transform var(--kng-docs-transition-fast); } .kng-docs-subcategory-card:hover .kng-docs-subcategory-arrow { transform: translateX(3px); color: var(--kng-docs-primary); } /* Articles list */ .kng-docs-articles-title { font-size: 13px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--kng-docs-text-muted); margin: 0 0 16px; } .kng-docs-articles { list-style: none; padding: 0; margin: 0 0 40px; display: flex; flex-direction: column; gap: 4px; } .kng-docs-article-link { display: flex; align-items: center; gap: 14px; padding: 14px 20px; background: var(--kng-docs-surface); backdrop-filter: blur(10px); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-sm); text-decoration: none; color: inherit; transition: all var(--kng-docs-transition); } .kng-docs-article-link:hover { background: var(--kng-docs-surface-hover); border-color: rgba(0, 113, 227, 0.15); box-shadow: var(--kng-docs-shadow-sm); } .kng-docs-article-icon { width: 20px; height: 20px; color: var(--kng-docs-text-muted); flex-shrink: 0; } .kng-docs-article-info { flex: 1; min-width: 0; } .kng-docs-article-item-title { display: block; font-size: 15px; font-weight: 500; color: var(--kng-docs-text); } .kng-docs-article-excerpt { display: block; font-size: 13px; color: var(--kng-docs-text-muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .kng-docs-article-date { font-size: 12px; color: var(--kng-docs-text-muted); white-space: nowrap; flex-shrink: 0; } .kng-docs-article-arrow { width: 16px; height: 16px; color: var(--kng-docs-text-muted); flex-shrink: 0; transition: transform var(--kng-docs-transition-fast); } .kng-docs-article-link:hover .kng-docs-article-arrow { transform: translateX(3px); color: var(--kng-docs-primary); } /* ═══════════════════════════════════════════ 15. PAGINATION ═══════════════════════════════════════════ */ .kng-docs-pagination { display: flex; justify-content: center; margin: 20px 0 60px; } .kng-docs-pagination .page-numbers { list-style: none; display: flex; align-items: center; gap: 4px; padding: 0; margin: 0; } .kng-docs-pagination .page-numbers li { margin: 0; } .kng-docs-pagination .page-numbers a, .kng-docs-pagination .page-numbers span { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 8px; font-size: 14px; font-weight: 500; color: var(--kng-docs-text-secondary); background: var(--kng-docs-surface); border: 1px solid var(--kng-docs-border); border-radius: var(--kng-docs-radius-xs); text-decoration: none; transition: all var(--kng-docs-transition-fast); } .kng-docs-pagination .page-numbers a:hover { background: var(--kng-docs-surface-hover); border-color: rgba(0, 0, 0, 0.1); color: var(--kng-docs-text); } .kng-docs-pagination .page-numbers .current { background: var(--kng-docs-primary); border-color: var(--kng-docs-primary); color: #fff; } .kng-docs-pagination .page-numbers svg { width: 16px; height: 16px; } /* ═══════════════════════════════════════════ 16. SCROLL REVEAL ANIMATION ═══════════════════════════════════════════ */ .kng-docs-reveal { opacity: 0; transform: translateY(20px); transition: opacity 0.6s var(--kng-docs-ease), transform 0.6s var(--kng-docs-ease); } .kng-docs-reveal.is-visible { opacity: 1; transform: translateY(0); } /* Staggered children */ .kng-docs-reveal-stagger > * { opacity: 0; transform: translateY(16px); transition: opacity 0.5s var(--kng-docs-ease), transform 0.5s var(--kng-docs-ease); } .kng-docs-reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 0.06s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 0.12s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 0.18s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 0.24s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 0.3s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(7) { transition-delay: 0.36s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(8) { transition-delay: 0.42s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(9) { transition-delay: 0.48s; opacity: 1; transform: none; } .kng-docs-reveal-stagger.is-visible > *:nth-child(n+10) { transition-delay: 0.54s; opacity: 1; transform: none; } /* ═══════════════════════════════════════════ 17. PRINT ═══════════════════════════════════════════ */ @media print { .kng-docs-search, .kng-docs-sidebar, .kng-docs-toc-floating, .kng-docs-breadcrumbs, .kng-docs-navigation, .kng-docs-reactions, .kng-docs-share, .kng-docs-article-actions, .kng-docs-related { display: none !important; } .kng-docs-page { background: #fff; color: #000; } .kng-docs-single-layout { grid-template-columns: 1fr !important; } } /* ═══════════════════════════════════════════ 18. TOOLTIP ═══════════════════════════════════════════ */ .kng-docs-tooltip { position: fixed; z-index: 9999; padding: 6px 12px; font-size: 12px; font-weight: 600; color: #fff; background: rgba(29, 29, 31, 0.92); backdrop-filter: blur(10px); border-radius: 8px; pointer-events: none; opacity: 0; transform: translateY(4px); transition: opacity 0.2s, transform 0.2s; } .kng-docs-tooltip.is-visible { opacity: 1; transform: translateY(0); }