/* =================================================== help.com — shadcn/ui Design System (v4 OKLCH tokens) =================================================== */ @import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,300;0,14..32,400;0,14..32,500;0,14..32,600;0,14..32,700;0,14..32,800;1,14..32,400&display=swap'); @import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css'); /* ── Reset ───────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* ── shadcn/ui Design Tokens ─────────────────────── */ :root { /* Core palette */ --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); --card-foreground: oklch(0.145 0 0); --popover: oklch(1 0 0); --popover-foreground: oklch(0.145 0 0); /* Primary — blue brand */ --primary: oklch(0.546 0.245 262.881); --primary-foreground: oklch(0.985 0 0); --primary-hover: oklch(0.476 0.245 262.881); /* Secondary — muted blue tint */ --secondary: oklch(0.961 0.013 264.531); --secondary-foreground: oklch(0.379 0.146 265.522); /* Muted */ --muted: oklch(0.967 0.003 264.542); --muted-foreground: oklch(0.553 0.013 264.364); /* Accent */ --accent: oklch(0.961 0.013 264.531); --accent-foreground: oklch(0.379 0.146 265.522); /* Utility */ --border: oklch(0.928 0.006 264.531); --input: oklch(0.928 0.006 264.531); --ring: oklch(0.546 0.245 262.881); --destructive: oklch(0.577 0.245 27.325); --destructive-foreground: oklch(0.985 0 0); /* Status */ --success: oklch(0.643 0.145 158.743); --warning: oklch(0.769 0.175 78.671); /* Border radius scale — derived from base --radius */ --radius: 0.625rem; --radius-sm: calc(var(--radius) - 0.25rem); --radius-md: calc(var(--radius) - 0.125rem); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 0.25rem); --radius-2xl:calc(var(--radius) + 0.5rem); --radius-full: 9999px; /* Shadow scale — shadcn/ui minimal elevation */ --shadow-xs: 0 1px 2px 0 oklch(0 0 0 / 0.05); --shadow-sm: 0 1px 3px 0 oklch(0 0 0 / 0.07), 0 1px 2px -1px oklch(0 0 0 / 0.05); --shadow-md: 0 4px 6px -1px oklch(0 0 0 / 0.07), 0 2px 4px -2px oklch(0 0 0 / 0.05); --shadow-lg: 0 10px 15px -3px oklch(0 0 0 / 0.07), 0 4px 6px -4px oklch(0 0 0 / 0.04); --shadow-ring: 0 0 0 3px oklch(0.546 0.245 262.881 / 0.18); /* Typography */ --font: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; /* Motion */ --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --transition: 0.15s ease; --transition-slow: 0.25s var(--ease-out); } /* ── Base ────────────────────────────────────────── */ html { font-size: 16px; scroll-behavior: smooth; } body { font-family: var(--font); background-color: hsl(0 0% 100%); color: oklch(var(--foreground, 0.145 0 0)); color: oklch(0.145 0 0); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { color: inherit; text-decoration: none; } img { display: block; max-width: 100%; } ul { list-style: none; } button { font-family: var(--font); cursor: pointer; border: none; background: none; } input, textarea, select { font-family: var(--font); } .container { max-width: 1180px; margin: 0 auto; padding: 0 20px; } /* ── shadcn/ui Component: Button ─────────────────── */ /* Variants: .btn-primary → default (filled primary) .btn-secondary → secondary (muted fill) .btn-outline → outline border .btn-ghost → ghost (hover only bg) .btn-link → link style */ .btn-primary, .btn-secondary, .btn-outline, .btn-ghost { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; white-space: nowrap; font-size: 0.875rem; font-weight: 500; line-height: 1; border-radius: var(--radius-md); padding: 0.5rem 1rem; height: 2.25rem; border: 1px solid transparent; transition: background var(--transition), color var(--transition), border-color var(--transition), box-shadow var(--transition); cursor: pointer; text-decoration: none; font-family: var(--font); letter-spacing: -0.006em; } .btn-primary:focus-visible, .btn-secondary:focus-visible, .btn-outline:focus-visible, .btn-ghost:focus-visible { outline: 2px solid transparent; box-shadow: var(--shadow-ring); } /* Default / Primary */ .btn-primary { background-color: oklch(0.546 0.245 262.881); color: oklch(0.985 0 0); border-color: oklch(0.546 0.245 262.881); } .btn-primary:hover { background-color: oklch(0.476 0.245 262.881); border-color: oklch(0.476 0.245 262.881); } /* Secondary */ .btn-secondary { background-color: oklch(0.961 0.013 264.531); color: oklch(0.32 0 0); } .btn-secondary:hover { background-color: oklch(0.94 0.013 264.531); } /* Outline */ .btn-outline { background-color: transparent; border-color: oklch(0.928 0.006 264.531); color: oklch(0.145 0 0); } .btn-outline:hover { background-color: oklch(0.961 0.013 264.531); color: oklch(0.32 0 0); } /* Ghost */ .btn-ghost { background-color: transparent; color: oklch(0.145 0 0); } .btn-ghost:hover { background-color: oklch(0.961 0.013 264.531); } /* ── Sticky Nav ──────────────────────────────────── */ .site-nav { position: sticky; top: 0; z-index: 100; background-color: oklch(1 0 0 / 0.95); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid oklch(0.928 0.006 264.531); } .nav-inner { display: flex; align-items: center; justify-content: space-between; height: 3.5rem; gap: 1.5rem; } /* shadcn logo */ .nav-logo { flex-shrink: 0; display: inline-flex; align-items: center; } .nav-logo span { color: oklch(0.546 0.245 262.881); } .site-logo-img { height: 44px; width: auto; display: block; } /* Nav links — ghost button pattern */ .nav-links { display: flex; align-items: center; gap: 0.125rem; } .nav-links a { display: inline-flex; align-items: center; height: 2.25rem; padding: 0 0.75rem; font-size: 0.875rem; font-weight: 500; color: oklch(0.553 0.013 264.364); border-radius: var(--radius-md); transition: background var(--transition), color var(--transition); letter-spacing: -0.006em; } .nav-links a:hover { background-color: oklch(0.961 0.013 264.531); color: oklch(0.145 0 0); } .nav-links a.active { background-color: oklch(0.961 0.013 264.531); color: oklch(0.546 0.245 262.881); font-weight: 600; } .nav-right { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; } /* ── Nav Search Box (article pages) ─────────────── */ .nav-search-form { flex: 1; max-width: 360px; } .nav-search-wrap { display: flex; align-items: center; gap: 0.5rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); padding: 0.375rem 0.375rem 0.375rem 0.875rem; box-shadow: var(--shadow-sm); transition: border-color var(--transition), box-shadow var(--transition); } .nav-search-wrap:focus-within { border-color: oklch(0.546 0.245 262.881); box-shadow: var(--shadow-sm), var(--shadow-ring); } .nav-search-icon { color: oklch(0.553 0.013 264.364); font-size: 0.9rem; flex-shrink: 0; pointer-events: none; } .nav-search-input { flex: 1; border: none; outline: none; background: transparent; color: var(--foreground); font-size: 0.95rem; font-family: inherit; min-width: 0; line-height: 1.5; } .nav-search-input::placeholder { color: oklch(0.65 0.006 264.531); } html[data-theme="dark"] .nav-search-wrap { background-color: oklch(0.2 0.01 264); border-color: oklch(0.3 0.01 264); } html[data-theme="dark"] .nav-search-input { color: oklch(0.92 0 0); } .btn-dark-mode { width: 2.25rem; height: 2.25rem; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: oklch(0.45 0.01 264); transition: background var(--transition), color var(--transition); border: none; background: transparent; cursor: pointer; } .btn-dark-mode:hover { background-color: oklch(0.961 0.013 264.531); color: oklch(0.145 0 0); } /* ── Dark Mode ───────────────────────────────────── */ html[data-theme="dark"] { --color-bg: oklch(0.13 0.01 264); --color-surface: oklch(0.18 0.01 264); --color-border: oklch(0.28 0.01 264); --color-text: oklch(0.92 0 0); --color-text-muted: oklch(0.65 0 0); } html[data-theme="dark"] body { background: var(--color-bg); color: var(--color-text); } html[data-theme="dark"] .site-header { background: oklch(0.16 0.01 264); border-bottom-color: oklch(0.25 0.01 264); } html[data-theme="dark"] .hero { background: oklch(0.14 0.01 264); } html[data-theme="dark"] .search-box, html[data-theme="dark"] .ai-followup-wrap { background-color: oklch(0.2 0.01 264); border-color: oklch(0.3 0.01 264); } html[data-theme="dark"] .search-box input, html[data-theme="dark"] .ai-followup-input { color: oklch(0.92 0 0); } html[data-theme="dark"] .search-suggestions { background: oklch(0.2 0.01 264); border-color: oklch(0.3 0.01 264); } html[data-theme="dark"] .suggestions-list li { color: oklch(0.88 0 0); } html[data-theme="dark"] .suggestions-list li:hover { background: oklch(0.25 0.01 264); } html[data-theme="dark"] .section-alt { background: oklch(0.16 0.01 264); } html[data-theme="dark"] .article-card, html[data-theme="dark"] .product-card, html[data-theme="dark"] .category-card { background: oklch(0.2 0.01 264); border-color: oklch(0.28 0.01 264); } html[data-theme="dark"] .article-card:hover, html[data-theme="dark"] .product-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,0.4); } html[data-theme="dark"] .section-title, html[data-theme="dark"] .article-title, html[data-theme="dark"] .product-name { color: oklch(0.92 0 0); } html[data-theme="dark"] .article-meta, html[data-theme="dark"] .product-brand, html[data-theme="dark"] .product-desc { color: oklch(0.62 0 0); } html[data-theme="dark"] .site-footer { background: oklch(0.11 0.01 264); border-top-color: oklch(0.22 0.01 264); } html[data-theme="dark"] .footer-desc, html[data-theme="dark"] .footer-links a { color: oklch(0.6 0 0); } html[data-theme="dark"] .ai-drawer { background: oklch(0.18 0.01 264); } html[data-theme="dark"] .ai-drawer-header { border-bottom-color: oklch(0.28 0.01 264); } html[data-theme="dark"] .ai-section-title, html[data-theme="dark"] .ai-article-row-title, html[data-theme="dark"] .ai-pick-name, html[data-theme="dark"] .ai-product-name { color: oklch(0.92 0 0); } html[data-theme="dark"] .ai-answer-block { background: oklch(0.22 0.015 264); } html[data-theme="dark"] .ai-answer-text { color: oklch(0.88 0 0); } html[data-theme="dark"] .ai-articles-list, html[data-theme="dark"] .ai-article-row, html[data-theme="dark"] .ai-product-card { border-color: oklch(0.28 0.01 264); background: oklch(0.2 0.01 264); } html[data-theme="dark"] .ai-article-row:hover { background: oklch(0.25 0.01 264); } html[data-theme="dark"] .ai-drawer-footer { background: oklch(0.18 0.01 264); border-top-color: oklch(0.28 0.01 264); } html[data-theme="dark"] .ai-pick-card { border-bottom-color: oklch(0.28 0.01 264); } html[data-theme="dark"] .btn-dark-mode { color: oklch(0.75 0 0); } html[data-theme="dark"] .btn-dark-mode:hover { background: oklch(0.25 0.01 264); color: oklch(0.92 0 0); } html[data-theme="dark"] .chip { background: oklch(0.22 0.01 264); border-color: oklch(0.32 0.01 264); color: oklch(0.78 0 0); } html[data-theme="dark"] .chip:hover { background: oklch(0.28 0.01 264); } /* ── Hero ────────────────────────────────────────── */ .hero { background-color: oklch(1 0 0); padding: 4rem 1.25rem 2rem; text-align: center; } .hero-eyebrow { display: inline-flex; align-items: center; gap: 0.375rem; background-color: oklch(0.961 0.013 264.531); color: oklch(0.546 0.245 262.881); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.02em; padding: 0.25rem 0.75rem; border-radius: var(--radius-full); margin-bottom: 1.25rem; border: 1px solid oklch(0.928 0.006 264.531); } .hero h1 { font-size: clamp(1.875rem, 4vw, 2.75rem); font-weight: 800; color: oklch(0.145 0 0); letter-spacing: -0.035em; line-height: 1.15; margin-bottom: 0.875rem; } .hero-sub { font-size: 1rem; color: oklch(0.553 0.013 264.364); max-width: 480px; margin: 0 auto 2rem; font-weight: 400; line-height: 1.6; } /* ── shadcn/ui Input — Search Box ────────────────── */ .search-wrap { max-width: 640px; margin: 0 auto; } .search-box-wrap { position: relative; } .search-box { display: flex; align-items: center; gap: 0.5rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); padding: 0.375rem 0.375rem 0.375rem 0.875rem; box-shadow: var(--shadow-sm); transition: border-color var(--transition), box-shadow var(--transition); } .search-box:focus-within { border-color: oklch(0.546 0.245 262.881); box-shadow: var(--shadow-sm), var(--shadow-ring); } .search-box svg.search-icon { color: oklch(0.553 0.013 264.364); flex-shrink: 0; width: 1rem; height: 1rem; } .search-sparkle { color: oklch(0.546 0.245 262.881) !important; width: 1.125rem !important; height: 1.125rem !important; } /* ── Search Suggestions Dropdown ─────────────────── */ .search-suggestions { position: absolute; top: calc(100% + 6px); left: 0; right: 0; background: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); z-index: 200; overflow: hidden; opacity: 0; transform: translateY(-4px); pointer-events: none; transition: opacity 0.15s ease, transform 0.15s ease; } .search-suggestions.visible { opacity: 1; transform: translateY(0); pointer-events: auto; } .suggestions-label { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase; color: oklch(0.65 0.006 264.531); padding: 0.875rem 1rem 0.5rem; text-align: left; } .suggestions-list { list-style: none; margin: 0; padding: 0 0 0.5rem; } .suggestions-list li { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 1rem; font-size: 0.9375rem; font-weight: 500; color: oklch(0.145 0 0); cursor: pointer; transition: background var(--transition); } .suggestions-list li:hover { background-color: oklch(0.97 0.006 264.531); } .suggestions-list li svg { flex-shrink: 0; color: oklch(0.75 0.006 264.531); width: 1rem; height: 1rem; } .search-box input { flex: 1; border: none; outline: none; font-size: 0.9375rem; font-weight: 400; color: oklch(0.145 0 0); background: transparent; min-width: 0; line-height: 1.5; } .search-box input::placeholder { color: oklch(0.65 0.006 264.531); } .btn-voice { width: 2rem; height: 2rem; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; color: oklch(0.553 0.013 264.364); transition: background var(--transition), color var(--transition); } .btn-voice:hover { background-color: oklch(0.961 0.013 264.531); color: oklch(0.145 0 0); } .btn-search-submit { background-color: oklch(0.546 0.245 262.881); color: oklch(0.985 0 0); width: 2.25rem; height: 2.25rem; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; transition: background var(--transition); flex-shrink: 0; font-size: 0.875rem; } .btn-search-submit:hover { background-color: oklch(0.476 0.245 262.881); } /* ── shadcn/ui Badge — Suggestion Chips ──────────── */ .suggestion-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; margin-top: 1.125rem; } .chip { display: inline-flex; align-items: center; gap: 0.375rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); color: oklch(0.553 0.013 264.364); font-size: 0.8125rem; font-weight: 500; padding: 0.3125rem 0.75rem; border-radius: var(--radius-full); cursor: pointer; transition: background var(--transition), color var(--transition), border-color var(--transition), box-shadow var(--transition); animation: chipFadeIn 0.3s ease both; letter-spacing: -0.003em; } .chip:hover { background-color: oklch(0.961 0.013 264.531); border-color: oklch(0.546 0.245 262.881 / 0.35); color: oklch(0.546 0.245 262.881); } .chip svg { width: 0.875rem; height: 0.875rem; } @keyframes chipFadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } .chip:nth-child(1) { animation-delay: 0.05s; } .chip:nth-child(2) { animation-delay: 0.10s; } .chip:nth-child(3) { animation-delay: 0.15s; } .chip:nth-child(4) { animation-delay: 0.20s; } .chip:nth-child(5) { animation-delay: 0.25s; } .chip:nth-child(6) { animation-delay: 0.30s; } /* ── Section Headers ─────────────────────────────── */ .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.25rem; } .section-title { font-size: 1.125rem; font-weight: 700; color: oklch(0.145 0 0); letter-spacing: -0.025em; } .section-link { font-size: 0.8125rem; font-weight: 500; color: oklch(0.546 0.245 262.881); display: inline-flex; align-items: center; gap: 0.25rem; transition: gap var(--transition); border-radius: var(--radius-sm); padding: 0.25rem 0.5rem; } .section-link:hover { background-color: oklch(0.961 0.013 264.531); gap: 0.5rem; } /* ── shadcn/ui Card — Top Articles ───────────────── */ #top-articles { padding: 2.5rem 0 60px; } .articles-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; } /* shadcn Card */ .article-card { display: flex; flex-direction: column; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); overflow: hidden; transition: box-shadow var(--transition), border-color var(--transition); cursor: pointer; } .article-card:hover { box-shadow: var(--shadow-md); border-color: oklch(0.546 0.245 262.881 / 0.3); } .article-card-img { width: 100%; aspect-ratio: 16 / 7; flex-shrink: 0; overflow: hidden; background-color: oklch(0.967 0.003 264.542); } .article-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-slow); } .article-card:hover .article-card-img img { transform: scale(1.03); } .article-card-body { padding: 0.875rem 1rem; display: flex; flex-direction: column; gap: 0.375rem; flex: 1; min-width: 0; } /* shadcn Badge style for category label */ .article-category { display: inline-flex; align-items: center; border-radius: var(--radius-full); border: 1px solid transparent; background-color: oklch(0.961 0.013 264.531); color: oklch(0.32 0 0); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.02em; padding: 0.125rem 0.5rem; width: fit-content; text-transform: uppercase; } .article-title { font-size: 0.9375rem; font-weight: 600; color: oklch(0.145 0 0); line-height: 1.35; letter-spacing: -0.015em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .article-excerpt { font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.55; } .article-card-footer { margin-top: auto; display: flex; align-items: center; gap: 0.5rem; } .author-avatar { width: 1.375rem; height: 1.375rem; border-radius: 50%; object-fit: cover; border: 1px solid oklch(0.928 0.006 264.531); } .author-name { font-size: 0.75rem; font-weight: 500; color: oklch(0.553 0.013 264.364); } .read-time, .article-meta { font-size: 0.6875rem; font-weight: 400; color: oklch(0.65 0.006 264.531); } /* ── Trending Products Carousel ──────────────────── */ #trending-products { padding: 0 0 60px; } .products-carousel { display: flex; gap: 0.75rem; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 0.75rem; scrollbar-width: thin; scrollbar-color: oklch(0.928 0.006 264.531) transparent; } .products-carousel::-webkit-scrollbar { height: 3px; } .products-carousel::-webkit-scrollbar-track { background: transparent; } .products-carousel::-webkit-scrollbar-thumb { background: oklch(0.928 0.006 264.531); border-radius: 2px; } /* shadcn Card */ a.product-card { text-decoration: none; color: inherit; display: block; } .product-card { flex-shrink: 0; width: 11.5rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); overflow: hidden; scroll-snap-align: start; transition: box-shadow var(--transition), border-color var(--transition); position: relative; } .product-card:hover { box-shadow: var(--shadow-md); border-color: oklch(0.546 0.245 262.881 / 0.25); } .product-img-wrap { position: relative; aspect-ratio: 1; background-color: oklch(0.967 0.003 264.542); overflow: hidden; } .product-img-wrap img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--transition-slow); } .product-card:hover .product-img-wrap img { transform: scale(1.05); } /* shadcn Badge — NEW */ .product-badge { position: absolute; top: 0.5rem; left: 0.5rem; background-color: oklch(0.643 0.145 158.743); color: oklch(0.985 0 0); font-size: 0.625rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 0.1875rem 0.5rem; border-radius: var(--radius-full); } .product-heart { position: absolute; top: 0.5rem; right: 0.5rem; width: 1.75rem; height: 1.75rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: oklch(0.65 0.006 264.531); transition: color var(--transition), border-color var(--transition), background var(--transition); box-shadow: var(--shadow-xs); font-size: 0.8125rem; cursor: pointer; } .product-heart:hover { color: oklch(0.577 0.245 27.325); border-color: oklch(0.577 0.245 27.325 / 0.4); } .product-body { padding: 0.75rem; } .product-brand { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: oklch(0.65 0.006 264.531); margin-bottom: 0.25rem; } .product-name { font-size: 0.8125rem; font-weight: 600; color: oklch(0.145 0 0); line-height: 1.35; letter-spacing: -0.01em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 0.375rem; } .product-rating { display: flex; align-items: center; gap: 0.25rem; font-size: 0.6875rem; color: oklch(0.553 0.013 264.364); margin-bottom: 0.5rem; } .stars { color: oklch(0.769 0.175 78.671); font-size: 0.75rem; } .product-price { font-size: 1rem; font-weight: 700; color: oklch(0.145 0 0); letter-spacing: -0.02em; } .product-desc { font-size: 0.6875rem; color: oklch(0.65 0.006 264.531); margin-top: 0.25rem; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.4; } /* ── Demo Answer Area ────────────────────────────── */ .demo-area { padding: 0 0 4rem; } .demo-layout { display: grid; grid-template-columns: 15rem 1fr; gap: 1.25rem; min-height: 31rem; } /* shadcn Card */ .demo-sidebar { background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-xl); overflow: hidden; } .demo-sidebar-header { background-color: oklch(0.546 0.245 262.881); padding: 1rem; display: flex; align-items: center; gap: 0.625rem; } .assistant-avatar { width: 2.25rem; height: 2.25rem; border-radius: 50%; background: oklch(1 0 0 / 0.15); border: 1px solid oklch(1 0 0 / 0.2); display: flex; align-items: center; justify-content: center; color: oklch(0.985 0 0); font-size: 1rem; } .assistant-info { flex: 1; } .assistant-name { font-size: 0.875rem; font-weight: 600; color: oklch(0.985 0 0); letter-spacing: -0.01em; } .assistant-status { display: flex; align-items: center; gap: 0.25rem; font-size: 0.6875rem; color: oklch(0.985 0 0 / 0.75); } .status-dot { width: 6px; height: 6px; border-radius: 50%; background-color: oklch(0.643 0.145 158.743); animation: pulse 2s ease infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } } .demo-messages { padding: 1rem; display: flex; flex-direction: column; gap: 0.75rem; max-height: 24rem; overflow-y: auto; } .msg { display: flex; flex-direction: column; gap: 0.25rem; } .msg-bubble { padding: 0.5625rem 0.75rem; border-radius: var(--radius-lg); font-size: 0.8125rem; line-height: 1.5; max-width: 100%; letter-spacing: -0.005em; } .msg-user .msg-bubble { background-color: oklch(0.546 0.245 262.881); color: oklch(0.985 0 0); align-self: flex-end; border-bottom-right-radius: var(--radius-sm); } .msg-ai .msg-bubble { background-color: oklch(0.967 0.003 264.542); color: oklch(0.32 0 0); align-self: flex-start; border-bottom-left-radius: var(--radius-sm); border: 1px solid oklch(0.928 0.006 264.531); } .typing-indicator { display: flex; align-items: center; gap: 0.25rem; padding: 0.625rem 0.875rem; } .typing-dot { width: 6px; height: 6px; background-color: oklch(0.65 0.006 264.531); border-radius: 50%; animation: typing 1.2s ease infinite; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typing { 0%, 60%, 100% { transform: translateY(0); opacity: 0.35; } 30% { transform: translateY(-4px); opacity: 1; } } .demo-main { display: flex; flex-direction: column; gap: 1rem; } /* shadcn Card */ .demo-panel { background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-xl); padding: 1.25rem; opacity: 0; transform: translateY(8px); transition: opacity 0.35s ease, transform 0.35s var(--ease-out); } .demo-panel.visible { opacity: 1; transform: translateY(0); } .demo-panel-title { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: oklch(0.65 0.006 264.531); margin-bottom: 0.875rem; } /* Demo articles */ .demo-articles { display: flex; flex-direction: column; gap: 0.5rem; } .demo-article-row { display: flex; align-items: center; gap: 0.75rem; padding: 0.625rem 0.75rem; border-radius: var(--radius-md); border: 1px solid oklch(0.928 0.006 264.531); transition: background var(--transition), border-color var(--transition); cursor: pointer; } .demo-article-row:hover { background-color: oklch(0.961 0.013 264.531); border-color: oklch(0.546 0.245 262.881 / 0.25); } .demo-article-row img { width: 3rem; height: 3rem; border-radius: var(--radius-sm); object-fit: cover; flex-shrink: 0; border: 1px solid oklch(0.928 0.006 264.531); } .demo-article-row-body { flex: 1; min-width: 0; } .demo-article-row-cat { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: oklch(0.546 0.245 262.881); } .demo-article-row-title { font-size: 0.8125rem; font-weight: 500; color: oklch(0.145 0 0); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.35; letter-spacing: -0.008em; } /* Demo products mini */ .demo-products { display: flex; gap: 0.625rem; overflow-x: auto; padding-bottom: 0.25rem; } .demo-product-mini { flex-shrink: 0; width: 7rem; border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-md); overflow: hidden; transition: box-shadow var(--transition), border-color var(--transition); cursor: pointer; } .demo-product-mini:hover { box-shadow: var(--shadow-sm); border-color: oklch(0.546 0.245 262.881 / 0.3); } .demo-product-mini img { width: 100%; aspect-ratio: 1; object-fit: cover; } .demo-product-mini-body { padding: 0.5rem; } .demo-product-mini-name { font-size: 0.6875rem; font-weight: 600; color: oklch(0.145 0 0); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.3; margin-bottom: 0.25rem; letter-spacing: -0.005em; } .demo-product-mini-price { font-size: 0.8125rem; font-weight: 700; color: oklch(0.546 0.245 262.881); letter-spacing: -0.015em; } /* Top picks */ .top-picks { display: flex; flex-direction: column; gap: 0.375rem; } .top-pick-row { display: flex; align-items: center; gap: 0.625rem; padding: 0.625rem 0.75rem; background-color: oklch(0.967 0.003 264.542); border-radius: var(--radius-md); border: 1px solid oklch(0.928 0.006 264.531); cursor: pointer; transition: background var(--transition), border-color var(--transition); } .top-pick-row:hover { background-color: oklch(0.961 0.013 264.531); border-color: oklch(0.546 0.245 262.881 / 0.25); } .pick-rank { width: 1.375rem; height: 1.375rem; border-radius: 50%; background-color: oklch(0.546 0.245 262.881); color: oklch(0.985 0 0); font-size: 0.625rem; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .pick-body { flex: 1; min-width: 0; } .pick-title { font-size: 0.8125rem; font-weight: 500; color: oklch(0.145 0 0); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: -0.008em; } .pick-meta { font-size: 0.6875rem; color: oklch(0.65 0.006 264.531); } .pick-arrow { color: oklch(0.65 0.006 264.531); font-size: 0.875rem; } /* ── Categories ──────────────────────────────────── */ #categories { padding: 0 0 60px; } .categories-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(6.5rem, 1fr)); gap: 0.75rem; } /* shadcn Card */ .category-card { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1.125rem 0.75rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); text-align: center; transition: background var(--transition), border-color var(--transition), box-shadow var(--transition); cursor: pointer; } .category-card:hover { background-color: oklch(0.961 0.013 264.531); border-color: oklch(0.546 0.245 262.881 / 0.3); box-shadow: var(--shadow-sm); } .category-icon { width: 2.75rem; height: 2.75rem; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; background-color: oklch(0.961 0.013 264.531); color: #2874ff; } .category-icon i { line-height: 1; } .category-name { font-size: 0.8125rem; font-weight: 600; color: oklch(0.266 0.079 265.522); letter-spacing: -0.01em; } .category-card:hover .category-name { color: oklch(0.546 0.245 262.881); } .category-count { font-size: 0.6875rem; color: oklch(0.65 0.006 264.531); } /* ── Footer ──────────────────────────────────────── */ .site-footer { background-color: oklch(0.145 0 0); color: oklch(0.65 0.006 264.531); padding: 3rem 0 1.5rem; border-top: 1px solid oklch(0.2 0 0); } .footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 2rem; margin-bottom: 2.5rem; align-items: start; } .footer-col { vertical-align: top; } .footer-brand .nav-logo { opacity: 0.9; } .footer-brand .nav-logo span { color: oklch(0.546 0.245 262.881); } .footer-brand .site-logo-img { height: 40px; } .footer-desc { font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); margin: 0.75rem 0 0; line-height: 1.65; } .footer-heading, .footer-col-title { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: oklch(0.8 0 0); margin-bottom: 0.875rem; } .footer-links { display: flex; flex-direction: column; gap: 0.5rem; } .footer-links a { font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); transition: color var(--transition); } .footer-links a:hover { color: oklch(0.985 0 0); } .footer-bottom { border-top: 1px solid oklch(0.2 0 0); padding-top: 1.25rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; } .footer-copy { font-size: 0.8125rem; color: oklch(0.45 0 0); } .footer-legal { display: flex; gap: 1rem; } .footer-legal a { font-size: 0.8125rem; color: oklch(0.45 0 0); transition: color var(--transition); } .footer-legal a:hover { color: oklch(0.7 0 0); } /* ── Page Hero Search Bar ───────────────────────── */ .page-hero-search, .page-hero-search .search-box { width: 100%; max-width: 100%; box-sizing: border-box; } .page-hero-search { margin: 0 0 1.25rem; } /* ── Page Hero (category / article / static pages) ── */ .page-hero { background-color: oklch(0.984 0.003 264.542); border-bottom: 1px solid oklch(0.928 0.006 264.531); padding: 3rem 1.25rem 2.5rem; } .page-hero .breadcrumb { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); margin-bottom: 1rem; } .breadcrumb a { color: oklch(0.546 0.245 262.881); font-weight: 500; } .breadcrumb a:hover { text-decoration: underline; text-underline-offset: 3px; } .breadcrumb-sep { color: oklch(0.75 0.006 264.531); } /* shadcn Badge — tag pill */ .tag-pill { display: inline-flex; align-items: center; background-color: oklch(0.961 0.013 264.531); color: oklch(0.32 0 0); border: 1px solid oklch(0.928 0.006 264.531); font-size: 0.75rem; font-weight: 600; padding: 0.1875rem 0.625rem; border-radius: var(--radius-full); letter-spacing: 0.01em; margin-bottom: 0.75rem; } .page-hero .hero-sub { margin: 0 0 1.25rem; max-width: 640px; } .page-hero h1 { font-size: clamp(1.5rem, 3vw, 2.125rem); font-weight: 800; color: oklch(0.145 0 0); letter-spacing: -0.03em; line-height: 1.2; margin-bottom: 0.5rem; } .page-hero-meta { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); } /* ── Article Layout ──────────────────────────────── */ .article-layout { padding: 2.5rem 0 4rem; } .article-grid { display: grid; grid-template-columns: 1fr 18rem; gap: 3rem; align-items: start; } .image-credit { font-size: 0.75rem; color: oklch(0.6 0.01 264); margin: 0.25rem 0 1.5rem; text-align: right; } .article-hero-img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: var(--radius-lg); border: 1px solid oklch(0.928 0.006 264.531); margin-bottom: 1.75rem; } .article-body { font-size: 1rem; color: oklch(0.32 0 0); line-height: 1.8; letter-spacing: -0.005em; } .article-body h2 { font-size: 1.3125rem; font-weight: 700; color: oklch(0.145 0 0); letter-spacing: -0.025em; margin: 2rem 0 0.75rem; line-height: 1.3; } .article-body h3 { font-size: 1.0625rem; font-weight: 600; color: oklch(0.266 0.079 265.522); margin: 1.5rem 0 0.625rem; letter-spacing: -0.018em; } .article-body p { margin-bottom: 1rem; } .article-body ul { list-style: disc; padding-left: 1.25rem; margin-bottom: 1rem; } .article-body ul li { margin-bottom: 0.375rem; } .article-body strong { color: oklch(0.145 0 0); font-weight: 600; } /* shadcn Separator */ .article-body hr { border: none; border-top: 1px solid oklch(0.928 0.006 264.531); margin: 2rem 0; } /* Article Sidebar */ .article-sidebar { position: sticky; top: 4.5rem; } .sidebar-widget { background-color: oklch(0.984 0.003 264.542); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); padding: 1.125rem; margin-bottom: 1rem; } .sidebar-widget-title { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: oklch(0.65 0.006 264.531); margin-bottom: 0.875rem; } .sidebar-article-link { display: flex; align-items: center; gap: 0.625rem; padding: 0.5rem 0; border-bottom: 1px solid oklch(0.928 0.006 264.531); transition: color var(--transition); } .sidebar-article-link:last-child { border-bottom: none; padding-bottom: 0; } .sidebar-article-link:hover { color: oklch(0.546 0.245 262.881); } .sidebar-article-link img { width: 2.75rem; height: 2.75rem; border-radius: var(--radius-sm); object-fit: cover; flex-shrink: 0; border: 1px solid oklch(0.928 0.006 264.531); } .sidebar-article-link-title { font-size: 0.8125rem; font-weight: 500; color: oklch(0.266 0.079 265.522); line-height: 1.35; letter-spacing: -0.008em; } .sidebar-article-link:hover .sidebar-article-link-title { color: oklch(0.546 0.245 262.881); } /* Related articles */ .related-articles { padding: 0 0 4rem; } .related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; } .related-card { border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); overflow: hidden; background-color: oklch(1 0 0); transition: box-shadow var(--transition), border-color var(--transition); } .related-card:hover { box-shadow: var(--shadow-md); border-color: oklch(0.546 0.245 262.881 / 0.25); } .related-card img { width: 100%; aspect-ratio: 16/9; object-fit: cover; } .related-card-body { padding: 0.875rem; } .related-card-cat { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: oklch(0.546 0.245 262.881); margin-bottom: 0.25rem; } .related-card-title { font-size: 0.9rem; font-weight: 600; color: oklch(0.145 0 0); letter-spacing: -0.015em; line-height: 1.35; } /* Category page grid */ .category-layout { padding: 2.5rem 0 4rem; } .category-articles-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.25rem; } .category-article-card { background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); overflow: hidden; transition: box-shadow var(--transition), border-color var(--transition); display: block; } .category-article-card:hover { box-shadow: var(--shadow-md); border-color: oklch(0.546 0.245 262.881 / 0.25); } .category-article-card img { width: 100%; aspect-ratio: 16/7; object-fit: cover; } .category-article-card-body { padding: 1.125rem; } .category-article-card-title { font-size: 1.0625rem; font-weight: 700; color: oklch(0.145 0 0); letter-spacing: -0.02em; margin-bottom: 0.5rem; line-height: 1.3; } .category-article-card-excerpt { font-size: 0.8125rem; color: oklch(0.553 0.013 264.364); margin-bottom: 0.875rem; line-height: 1.6; } .category-article-card-meta { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: oklch(0.65 0.006 264.531); } .category-article-card-meta img { width: 1.375rem; height: 1.375rem; border-radius: 50%; object-fit: cover; aspect-ratio: 1; border: 1px solid oklch(0.928 0.006 264.531); } /* ── Static Pages ────────────────────────────────── */ .static-layout { padding: 3rem 0 5rem; } .static-layout .prose { max-width: 45rem; margin: 0 auto; } /* ── Static Content Pages ────────────────────────── */ .static-content { max-width: 48rem; line-height: 1.8; color: oklch(0.3 0 0); } .static-content h2 { font-size: 1.25rem; font-weight: 700; color: oklch(0.145 0 0); margin: 2rem 0 0.625rem; } .static-content p { margin-bottom: 1rem; } .static-content ul { list-style: disc; padding-left: 1.5rem; margin-bottom: 1rem; } .static-content ul li { margin-bottom: 0.375rem; } .static-content a { color: oklch(0.546 0.245 262.881); text-decoration: underline; } .prose h2 { font-size: 1.25rem; font-weight: 700; color: oklch(0.145 0 0); letter-spacing: -0.025em; margin: 2rem 0 0.75rem; padding-top: 2rem; border-top: 1px solid oklch(0.928 0.006 264.531); } .prose h2:first-of-type { border-top: none; padding-top: 0; } .prose h3 { font-size: 1.0625rem; font-weight: 600; color: oklch(0.266 0.079 265.522); margin: 1.5rem 0 0.5rem; letter-spacing: -0.015em; } .prose p { font-size: 0.9375rem; color: oklch(0.32 0 0); line-height: 1.8; margin-bottom: 1rem; letter-spacing: -0.005em; } .prose ul { list-style: disc; padding-left: 1.25rem; margin-bottom: 1rem; } .prose ul li { font-size: 0.9375rem; color: oklch(0.32 0 0); margin-bottom: 0.375rem; } .prose a { color: oklch(0.546 0.245 262.881); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: oklch(0.546 0.245 262.881 / 0.4); } .prose a:hover { text-decoration-color: oklch(0.546 0.245 262.881); } /* shadcn/ui Input — Contact form */ .contact-form { max-width: 35rem; margin: 0 auto; } .form-group { margin-bottom: 1.125rem; } .form-label { display: block; font-size: 0.875rem; font-weight: 500; color: oklch(0.266 0.079 265.522); margin-bottom: 0.375rem; letter-spacing: -0.008em; } .form-input, .form-textarea { width: 100%; padding: 0.5rem 0.75rem; border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-md); font-size: 0.9375rem; color: oklch(0.145 0 0); background-color: oklch(1 0 0); transition: border-color var(--transition), box-shadow var(--transition); outline: none; line-height: 1.5; min-height: 2.25rem; } .form-input::placeholder, .form-textarea::placeholder { color: oklch(0.65 0.006 264.531); } .form-input:focus, .form-textarea:focus { border-color: oklch(0.546 0.245 262.881); box-shadow: var(--shadow-ring); } .form-textarea { resize: vertical; min-height: 8rem; padding-top: 0.625rem; } .btn-form-submit { display: inline-flex; align-items: center; justify-content: center; height: 2.5rem; padding: 0 1.25rem; background-color: oklch(0.546 0.245 262.881); color: oklch(0.985 0 0); font-size: 0.875rem; font-weight: 500; border-radius: var(--radius-md); transition: background var(--transition), box-shadow var(--transition); letter-spacing: -0.006em; font-family: var(--font); cursor: pointer; border: none; } .btn-form-submit:hover { background-color: oklch(0.476 0.245 262.881); } .btn-form-submit:focus-visible { box-shadow: var(--shadow-ring); } /* ── Skeleton / Loading ──────────────────────────── */ .skeleton { background: linear-gradient( 90deg, oklch(0.967 0.003 264.542) 25%, oklch(0.94 0.005 264.531) 50%, oklch(0.967 0.003 264.542) 75% ); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: var(--radius-sm); } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ── Utility ─────────────────────────────────────── */ .divider { border: none; border-top: 1px solid oklch(0.928 0.006 264.531); margin: 2rem 0; } .text-primary { color: oklch(0.546 0.245 262.881); } /* ── Hosting Promo Link ──────────────────────────── */ .nav-hosting-link { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.8125rem; font-weight: 500; color: oklch(0.546 0.245 262.881); text-decoration: none; white-space: nowrap; padding: 0.375rem 0.75rem; border: 1px solid oklch(0.546 0.245 262.881 / 0.35); border-radius: var(--radius-sm); transition: background var(--transition), border-color var(--transition); } .nav-hosting-link:hover { background-color: oklch(0.546 0.245 262.881 / 0.08); border-color: oklch(0.546 0.245 262.881 / 0.6); } /* ── Mobile Nav ──────────────────────────────────── */ .hamburger { display: none; flex-direction: column; gap: 5px; padding: 0.375rem; cursor: pointer; border-radius: var(--radius-sm); transition: background var(--transition); } .hamburger:hover { background-color: oklch(0.961 0.013 264.531); } .hamburger span { width: 1.25rem; height: 1.5px; background-color: oklch(0.553 0.013 264.364); border-radius: 1px; display: block; transition: var(--transition); } /* ── Responsive ──────────────────────────────────── */ @media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } .article-grid { grid-template-columns: 1fr; } .article-sidebar { position: static; } .demo-layout { grid-template-columns: 1fr; } } @media (max-width: 768px) { .nav-links { display: none; } .nav-links.open { display: flex; flex-direction: column; position: absolute; top: 3.5rem; left: 0; right: 0; background-color: oklch(1 0 0); padding: 1rem 1.25rem; border-bottom: 1px solid oklch(0.928 0.006 264.531); box-shadow: var(--shadow-md); z-index: 99; gap: 0.125rem; } .nav-links.open a { width: 100%; } .hamburger { display: flex; } .nav-hosting-link { display: none; } .articles-grid { grid-template-columns: 1fr; } .category-articles-grid { grid-template-columns: 1fr; } .related-grid { grid-template-columns: 1fr 1fr; } .categories-grid { grid-template-columns: repeat(3, 1fr); } .footer-grid { grid-template-columns: 1fr; } .article-card-img { width: 100%; } .footer-bottom { flex-direction: column; align-items: flex-start; } .demo-sidebar { display: none; } } @media (max-width: 480px) { .hero { padding: 2.5rem 1rem 2.25rem; } .hero h1 { font-size: 1.625rem; } .related-grid { grid-template-columns: 1fr; } .categories-grid { grid-template-columns: repeat(2, 1fr); } .suggestion-chips { gap: 0.375rem; } .chip { font-size: 0.75rem; padding: 0.3125rem 0.625rem; } } /* ── AI Drawer ──────────────────────────────────── */ .ai-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.35); z-index: 1000; backdrop-filter: blur(2px); } .ai-overlay.open { display: block; } .ai-drawer { position: fixed; top: 0; left: 0; width: min(760px, 100vw); max-width: 100vw; height: 100vh; background: #fff; z-index: 1001; display: flex; flex-direction: column; box-shadow: none; transform: translateX(-100%); transition: transform 0.35s cubic-bezier(0.4,0,0.2,1), box-shadow 0.35s; } .ai-drawer.open { transform: translateX(0); box-shadow: 4px 0 40px rgba(0,0,0,0.15); } .ai-drawer-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid oklch(0.93 0 0); flex-shrink: 0; } .ai-drawer-logo { height: 28px; width: auto; } .ai-drawer-close { width: 32px; height: 32px; border-radius: 50%; border: 1px solid oklch(0.9 0 0); background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; color: oklch(0.5 0 0); transition: background 0.15s; } .ai-drawer-close:hover { background: oklch(0.96 0 0); } .ai-drawer-body { flex: 1; overflow-y: auto; padding: 1.25rem 1.5rem 1rem; } .ai-query-row { display: flex; justify-content: flex-end; margin-bottom: 1.25rem; } .ai-query-tag { background: oklch(0.45 0.2 264); color: #fff; font-size: 0.8125rem; font-weight: 500; padding: 0.375rem 0.875rem; border-radius: 999px; } .ai-answer-block { display: flex; gap: 0.75rem; margin-bottom: 1.75rem; padding: 1rem 1.125rem; border-left: 3px solid oklch(0.55 0.2 264); background: oklch(0.97 0.005 264); border-radius: 0 8px 8px 0; } .ai-answer-icon { flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; background: oklch(0.45 0.2 264); display: flex; align-items: center; justify-content: center; margin-top: 2px; } .ai-answer-text { font-size: 0.9rem; line-height: 1.65; color: oklch(0.25 0 0); } .ai-typing { display: flex; gap: 4px; align-items: center; padding: 4px 0; } /* AI Sections */ .ai-section { margin-bottom: 2rem; } .ai-section-header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 1rem; } .ai-section-title { font-size: 1.0625rem; font-weight: 700; color: oklch(0.15 0 0); margin: 0 0 0.2rem; } .ai-section-sub { font-size: 0.8rem; color: oklch(0.55 0 0); margin: 0; } .ai-section-link { font-size: 0.875rem; color: oklch(0.45 0.2 264); font-weight: 500; white-space: nowrap; margin-left: 1rem; margin-top: 2px; text-decoration: none; } .ai-section-link:hover { text-decoration: underline; } /* Articles list */ .ai-articles-list { border: 1px solid oklch(0.92 0 0); border-radius: 10px; overflow: hidden; } .ai-article-row { display: flex; align-items: center; gap: 0.875rem; padding: 0.875rem 1rem; text-decoration: none; color: inherit; border-bottom: 1px solid oklch(0.93 0 0); transition: background 0.12s; } .ai-article-row:last-child { border-bottom: none; } .ai-article-row:hover { background: oklch(0.97 0.005 264); } .ai-article-row img { width: 60px; height: 60px; object-fit: cover; border-radius: 6px; flex-shrink: 0; } .ai-article-row-body { flex: 1; min-width: 0; } .ai-article-row-cat { font-size: 0.7rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: oklch(0.55 0 0); margin-bottom: 0.25rem; } .ai-article-row-title { font-size: 0.9rem; font-weight: 600; color: oklch(0.15 0 0); line-height: 1.35; } .ai-article-chevron { color: oklch(0.7 0 0); font-size: 0.875rem; flex-shrink: 0; } /* Products grid */ .ai-products-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 0.75rem; } .ai-product-card { border: 1px solid oklch(0.92 0 0); border-radius: 10px; overflow: hidden; display: flex; flex-direction: column; text-decoration: none; color: inherit; background: #fff; transition: box-shadow 0.15s; } .ai-product-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.1); } .ai-product-cat-label { font-size: 0.65rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: oklch(0.5 0 0); padding: 0.5rem 0.625rem 0.25rem; } .ai-product-img-wrap { width: 100%; aspect-ratio: 1; overflow: hidden; background: oklch(0.96 0 0); } .ai-product-img-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; } .ai-product-body { padding: 0.625rem; flex: 1; display: flex; flex-direction: column; } .ai-product-name { font-size: 0.8125rem; font-weight: 700; color: oklch(0.15 0 0); margin-bottom: 0.375rem; line-height: 1.3; } .ai-product-price-row { display: flex; align-items: center; gap: 0.4rem; margin-bottom: 0.5rem; } .ai-product-price { font-size: 0.8125rem; font-weight: 700; color: oklch(0.15 0 0); } .ai-product-stars { color: #f59e0b; font-size: 0.65rem; display: flex; gap: 1px; } .ai-product-btn { display: flex; align-items: center; justify-content: center; gap: 0.3rem; background: oklch(0.15 0 0); color: #fff; font-size: 0.75rem; font-weight: 600; padding: 0.5rem 0.625rem; border-radius: 6px; margin-top: auto; text-align: center; } /* Top Picks */ .ai-picks-list { display: flex; flex-direction: column; gap: 0; } .ai-pick-card { display: flex; align-items: flex-start; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid oklch(0.93 0 0); text-decoration: none; color: inherit; cursor: pointer; } .ai-pick-card:last-child { border-bottom: none; } .ai-pick-card:hover { background: oklch(0.98 0.003 264); } .ai-pick-thumb { width: 80px; height: 80px; border-radius: 8px; object-fit: cover; flex-shrink: 0; background: oklch(0.94 0 0); } .ai-pick-body { flex: 1; min-width: 0; } .ai-pick-brand { font-size: 0.7rem; font-weight: 700; letter-spacing: 0.07em; text-transform: uppercase; color: oklch(0.45 0.2 264); margin-bottom: 0.2rem; } .ai-pick-name { font-size: 0.9375rem; font-weight: 700; color: oklch(0.15 0 0); margin-bottom: 0.3rem; } .ai-pick-price-row { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.5rem; } .ai-pick-price { font-size: 0.875rem; font-weight: 700; color: oklch(0.15 0 0); } .ai-pick-rating { display: flex; align-items: center; gap: 0.25rem; font-size: 0.75rem; color: oklch(0.55 0 0); } .ai-pick-rating .stars-sm { color: #f59e0b; font-size: 0.7rem; } .ai-pick-bullets { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.2rem; } .ai-pick-bullets li { font-size: 0.8125rem; color: oklch(0.4 0 0); padding-left: 1rem; position: relative; } .ai-pick-bullets li::before { content: '\2022'; position: absolute; left: 0; color: oklch(0.65 0 0); } .ai-pick-wish { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; border: 1px solid oklch(0.9 0 0); display: flex; align-items: center; justify-content: center; background: #fff; color: oklch(0.6 0 0); cursor: pointer; font-size: 0.8rem; } /* Drawer footer */ .ai-drawer-footer { border-top: 1px solid oklch(0.92 0 0); padding: 0.875rem 1.25rem; flex-shrink: 0; background: #fff; } .ai-followup-wrap { display: flex; align-items: center; gap: 0.5rem; background-color: oklch(1 0 0); border: 1px solid oklch(0.928 0.006 264.531); border-radius: var(--radius-lg); padding: 0.375rem 0.375rem 0.375rem 0.875rem; box-shadow: var(--shadow-sm); transition: border-color var(--transition), box-shadow var(--transition); } .ai-followup-wrap:focus-within { border-color: oklch(0.546 0.245 262.881); box-shadow: var(--shadow-sm), var(--shadow-ring); } .ai-followup-plus { color: oklch(0.546 0.245 262.881); font-size: 1.1rem; font-weight: 300; flex-shrink: 0; line-height: 1; } .ai-followup-input { flex: 1; border: none; background: transparent; font-size: 0.9375rem; font-weight: 400; color: oklch(0.145 0 0); outline: none; min-width: 0; line-height: 1.5; } .ai-followup-input::placeholder { color: oklch(0.65 0.006 264.531); } /* Fade-in animation for sections */ .ai-section.fade-in { animation: aiFadeIn 0.35s ease forwards; } @keyframes aiFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* ── AI Drawer responsive overrides ───────────────── */ @media (max-width: 480px) { .ai-drawer-body { padding: 1rem 1rem 0.75rem; } .ai-drawer-header { padding: 0.875rem 1rem; } .ai-drawer-footer { padding: 0.75rem 1rem; } .ai-answer-block { padding: 0.875rem 0.875rem; } .ai-article-row img { width: 48px; height: 48px; } .ai-pick-thumb { width: 64px; height: 64px; } .ai-section-title { font-size: 0.9375rem; } }