/* ============================================================ hoelee-blog — global design system Brand colors sourced from www.hoelee.com (Kadence palette). Priority: reading experience → SEO → brand → everything else. ============================================================ */ :root { /* Brand palette (from hoelee.com Kadence global palette) */ --brand: #295cff; /* primary — cobalt/royal blue */ --brand-strong: #1c0d5a; /* deep indigo — dark bg anchor, headings */ --brand-soft: #0e94ff; /* lighter cyan-blue — hover/links */ --ink: #1a1a1a; /* near-black text (never pure #000) */ --paper: #ffffff; /* near-white bg (never pure #fff for large areas) */ --surface: #f6f8fb; /* cool light gray — cards, code bg */ --surface-2: #eef2f7; /* slightly deeper gray — borders on light */ --border: #e1ebee; /* cool light border (palette7) */ --muted: #57575d; /* secondary text (palette5) */ --faint: #636363; /* tertiary text (palette6) */ /* Semantic (correct/wrong in tutorials) */ --good: #13612e; /* green (palette11) */ --warn: #f5a524; /* amber (palette15) */ --bad: #b82105; /* red (palette13) */ /* Typography */ --font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, Menlo, Monaco, monospace; --fs-base: 17px; --lh-body: 1.7; /* Layout */ --measure: 70rem; /* global container width (nav, footer, all pages) */ --radius: 8px; /* Bento cards — RGB triplet of the surface colour, so the thumbnail scrim fades into the card in BOTH themes (a hardcoded dark blend turned muddy grey on the light theme: measured pill contrast 1.96:1). */ --card-veil: 246, 248, 251; --pill-bg: rgba(15, 20, 28, 0.05); --bento-visual-opacity: 0.3; color-scheme: light dark; } /* Dark theme */ html[data-theme='dark'] { --brand: #6d8dff; --brand-soft: #60a5fa; --brand-strong: #c9c2ff; --ink: #e5e7eb; --paper: #111827; --surface: #1f2937; --surface-2: #263244; --border: #2a3345; --muted: #9ca3af; --faint: #6b7280; --good: #4ade80; --warn: #fbbf24; --bad: #f87171; --card-veil: 31, 41, 55; --pill-bg: rgba(15, 20, 28, 0.5); --bento-visual-opacity: 0.35; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; font-family: var(--font-sans); font-size: var(--fs-base); line-height: var(--lh-body); color: var(--ink); background: var(--paper); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } /* ---------- Layout ---------- */ .wrap { max-width: var(--measure); margin: 0 auto; padding: 2rem 1.5rem 5rem; overflow-wrap: break-word; } .wrap > * { min-width: 0; } /* ---------- Header / nav ---------- */ .site-header { position: sticky; top: 0; z-index: 10; background: color-mix(in srgb, var(--paper) 88%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid var(--border); } .nav { max-width: var(--measure); margin: 0 auto; padding: 0.9rem 1.5rem; display: flex; align-items: center; flex-wrap: wrap; row-gap: 0.4rem; gap: 1rem; } .nav .brand { display: inline-flex; align-items: center; gap: 0.55rem; font-weight: 700; font-size: 1.02rem; color: var(--ink); text-decoration: none; margin-right: auto; letter-spacing: -0.01em; white-space: nowrap; } /* Brand mark: the three-colour Hoelee mark, rasterised from the vector source with a transparent background (public/images/hoelee-mark-96.png = 96 px, so it stays sharp at 26 CSS px on a 3x screen). It is decorative — the name text next to it is the accessible label. */ .nav .brand-mark { width: 26px; height: 26px; display: block; flex: none; } .nav .brand .brand-name { color: var(--ink); } .nav .brand:hover .brand-name { color: var(--brand); } .nav .brand .dot { color: var(--brand); } .nav .nav-link { color: var(--muted); text-decoration: none; font-size: 0.92rem; font-weight: 500; white-space: nowrap; } .nav .nav-link:hover { color: var(--brand); } .nav-links { display: flex; align-items: center; gap: 1rem; margin: 0; padding: 0; list-style: none; } .theme-toggle { background: none; border: 1px solid var(--border); color: var(--muted); border-radius: var(--radius); padding: 0.25rem 0.6rem; font-size: 0.85rem; line-height: 1.35; cursor: pointer; font-family: var(--font-sans); } .theme-toggle:hover { color: var(--brand); border-color: var(--brand); } .search-toggle { background: none; border: 1px solid var(--border); color: var(--muted); border-radius: var(--radius); padding: 0.25rem 0.6rem; font-size: 0.95rem; line-height: 1.35; cursor: pointer; font-family: var(--font-sans); padding-inline: 0.7rem; display: inline-flex; align-items: center; justify-content: center; } .search-toggle:hover { color: var(--brand); border-color: var(--brand); } .search-hint { font-size: 0.85rem; margin-right: 0.35rem; } .search-key { font-family: var(--font-mono); font-size: 0.68rem; color: var(--faint); border: 1px solid var(--border); border-radius: 4px; padding: 0 0.25rem; margin-left: 0.1rem; } .lang-switch { color: var(--muted); text-decoration: none; font-size: 0.85rem; font-weight: 500; line-height: 1.35; border: 1px solid var(--border); border-radius: var(--radius); padding: 0.25rem 0.55rem; } .lang-switch:hover { color: var(--brand); border-color: var(--brand); } /* ---------- Typography ---------- */ h1, h2, h3, h4 { color: var(--ink); line-height: 1.25; letter-spacing: -0.02em; font-weight: 700; scroll-margin-top: 5rem; } h1 { font-size: 2rem; margin: 0 0 1rem; } h2 { font-size: 1.4rem; margin: 2.25rem 0 0.75rem; } h3 { font-size: 1.15rem; margin: 1.75rem 0 0.5rem; } p { margin: 0 0 1rem; } a { color: var(--brand); text-decoration: none; } a:hover { color: var(--brand-soft); } article a { text-decoration: underline; text-underline-offset: 2px; } /* Raw HTML in a post body keeps its source width — a 1920px CDN