/* * impeccable.style — light mode overrides * * Most of the site reads var(--ks-*) tokens (swapped in kinpaku-tokens.css * under html.light). This file catches hardcoded dark-lacquer values in * page stylesheets and kinpaku-chrome chrome that don't flow through tokens. * * Imported globally from Base.astro after kinpaku-kit.css. */ /* ============================================================ Theme toggle — sits left of the GitHub star pill ============================================================ */ .theme-toggle { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; min-height: 36px; padding: 0; border-radius: 999px; border: 1px solid var(--ks-rule); background: transparent; color: var(--ks-text-muted); cursor: pointer; flex-shrink: 0; transition: color 180ms var(--ks-ease), border-color 180ms var(--ks-ease), background-color 180ms var(--ks-ease); } .theme-toggle:hover { color: var(--ks-kinpaku); border-color: var(--ks-kinpaku-deep); background: oklch(77% 0.13 82 / 0.08); } .theme-toggle svg { width: 18px; height: 18px; display: block; } /* Three-way switcher: show the icon for the active preference (auto / light / dark), not the resolved theme. Keyed on data-theme-pref so the icon reflects that "auto" is its own state rather than collapsing into whatever the OS picked. */ .theme-toggle .theme-toggle-icon--auto, .theme-toggle .theme-toggle-icon--light, .theme-toggle .theme-toggle-icon--dark { display: none; } html[data-theme-pref='auto'] .theme-toggle .theme-toggle-icon--auto, html[data-theme-pref='light'] .theme-toggle .theme-toggle-icon--light, html[data-theme-pref='dark'] .theme-toggle .theme-toggle-icon--dark { display: block; } .kinpaku-chrome .theme-toggle { border-color: oklch(78% 0.12 82 / 0.28); color: var(--ks-champagne); } /* Light mode: the toggle and the GitHub pill both read as refined hairline chips — neutral --ks-rule border, no fill. The contextual seam scrim (below) carries them over the bright hero corner, so neither needs a solid backing. */ html.light .kinpaku-chrome .theme-toggle { border-color: var(--ks-rule); color: var(--ks-text-muted); } html.light .kinpaku-chrome .theme-toggle:hover { color: var(--ks-kinpaku); border-color: var(--ks-kinpaku-deep); background: oklch(77% 0.13 82 / 0.10); } /* ============================================================ Kinpaku chrome — header + footer hardcoded gradients ============================================================ */ html.light .kinpaku-chrome .site-header { background: linear-gradient(180deg, oklch(99% 0.008 95 / 0.96), oklch(97% 0.012 95 / 0.88)); border-bottom-color: var(--ks-rule); } /* Light-only seam treatment. The hero's bright kintsugi seam sits in the top-right corner, under the nav cluster (Live + the hairline toggle/GitHub chips, which carry no fill of their own). In light mode the dark text fights the gold, so a strong radial scrim lifts it off — opaque at the top-right corner, feathering to nothing by 70% so there's no hard edge. It's contextual, not a blanket bar: localized to the corner and faded via --hp the instant the header glasses in on scroll. Above the mobile drawer breakpoint only; dark mode needs none (cream text reads over the seam). */ @media (min-width: 761px) { html.light .home-kinpaku .site-header::after { content: ""; position: absolute; top: 0; right: 0; bottom: -24px; width: min(720px, 50%); z-index: -1; pointer-events: none; background: radial-gradient( 150% 170% at 100% 0%, oklch(99% 0.01 95 / calc(0.95 * (1 - var(--hp)))) 0%, oklch(99% 0.01 95 / calc(0.6 * (1 - var(--hp)))) 45%, transparent 70% ); } } html.light .kinpaku-chrome .site-header-menu { border-color: var(--ks-rule); color: var(--ks-text); } html.light .kinpaku-chrome .site-header-menu:hover { border-color: var(--ks-kinpaku-deep); background: oklch(77% 0.13 82 / 0.08); } html.light .kinpaku-chrome .site-header-menu-line { background: var(--ks-text); } html.light .kinpaku-chrome .site-header-github { border-color: var(--ks-rule); background: transparent; color: var(--ks-text); height: 36px; min-height: 36px; padding: 0 12px 0 10px; box-sizing: border-box; } html.light .kinpaku-chrome .site-header-github:hover { color: var(--ks-patina-deep); border-color: var(--ks-patina); background: oklch(49% 0.08 188 / 0.08); } @media (max-width: 760px) { html.light .kinpaku-chrome [data-site-header] .site-header-right { background: var(--ks-lacquer-raised); border-top-color: var(--ks-rule); } html.light .kinpaku-chrome [data-site-header] .site-header-nav a[aria-current="page"] { border-bottom: 0; } } html.light .kinpaku-chrome .site-footer { background: var(--ks-lacquer-deep); } html.light .kinpaku-surface { --color-paper: var(--ks-lacquer); --color-cream: var(--ks-lacquer-raised); --color-bg: var(--ks-lacquer-raised); --color-mist: var(--ks-rule); --color-charcoal: var(--ks-text); --color-ash: var(--ks-text-muted); --color-ink: var(--ks-champagne); --color-text: var(--ks-text); --color-accent-dim: oklch(77% 0.13 82 / 0.14); --color-accent-soft: oklch(77% 0.13 82 / 0.24); background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep)); color: var(--ks-text); } /* Bento rail — light gutter between tiles */ html.light .ks-bento { background: oklch(88% 0.014 95); border-top-color: oklch(88% 0.014 95); border-bottom-color: oklch(88% 0.014 95); } /* Primary buttons — dark ink on brand gold (lacquer-deep is paper-white in light) */ html.light .ks-button.ks-button-primary, html.light .ks-button.ks-button-primary:hover, html.light .ks-button.ks-button-primary:active { color: oklch(14% 0.018 95); } html.light .ks-button.ks-button-secondary { color: var(--ks-kinpaku-ink); border-color: var(--ks-kinpaku-deep); } html.light .ks-button.ks-button-secondary:hover, html.light .ks-button.ks-button-secondary:active { color: var(--ks-kinpaku-rich); border-color: var(--ks-kinpaku); } html.light .ks-button.ks-button-secondary:hover { background: oklch(77% 0.13 82 / 0.10); } html.light .ks-button.ks-button-secondary:active { background: oklch(77% 0.13 82 / 0.16); } /* Small labels / eyebrows on paper use the light-mode compatibility accent, now patina rather than the old low-contrast gold alias. */ html.light :is( .ks-section-eyebrow, .ks-subsection-label, .home-kinpaku .section-eyebrow, .home-kinpaku .section-number, .home-kinpaku .spread-category-label, .home-kinpaku .install-alts-label, .home-kinpaku .changelog-highlights-label, .home-kinpaku .ks-bento-num, .home-kinpaku .fisheye-item.is-active, .home-kinpaku .spread-command-name, .cf-eyebrow ) { color: var(--ks-kinpaku-ink); } /* Docs on paper: real kinpaku works for large display and fills, but small links and labels should use patina instead of gold tuned for paper. */ html.light body.docs-kinpaku :is( .docs-index-eyebrow, .docs-start-eyebrow, .docs-chooser-eyebrow, .docs-start-num, .docs-flow-verb, .docs-flow-arrow, .skills-sidebar-category, .docs-live-target-sub, .docs-live-bar-accept ) { color: var(--docs-accent); } /* Command palette (magazine spread). The kicker, skill name (big title + active list item) all read in the section accent (--spread-accent) — gold for create/refine/simplify, verdigris for evaluate/harden, neutral for system — matching the divider. On the near-white card these read fine. This keeps the palette colors distinct from the shared light-mode small-text accent; scoped under .magazine-container so its specificity ties/beats that rule (and only touches the palette). Dark mode gets the same accent colors via home-kinpaku.css. */ html.light .home-kinpaku .magazine-container .spread-command-name, html.light .home-kinpaku .magazine-container .spread-category-label, html.light .home-kinpaku .magazine-container .fisheye-item.is-active { color: var(--spread-accent); } /* ============================================================ Homepage — hero, scroll glass header, section shells ============================================================ */ html.light .home-kinpaku { --color-accent-dim: oklch(77% 0.13 82 / 0.14); --color-accent-soft: oklch(77% 0.13 82 / 0.22); --cat-create-bg: linear-gradient(155deg, oklch(77% 0.13 82 / 0.12), transparent 56%), oklch(96% 0.012 95); --cat-create-border: oklch(61% 0.085 78 / 0.55); --cat-create-text: var(--ks-kinpaku-ink); --cat-evaluate-bg: linear-gradient(155deg, oklch(70% 0.12 188 / 0.12), transparent 58%), oklch(96% 0.012 95); --cat-evaluate-border: oklch(49% 0.08 188 / 0.55); --cat-evaluate-text: var(--ks-patina-deep); --cat-refine-bg: linear-gradient(155deg, oklch(86% 0.07 84 / 0.10), transparent 58%), oklch(96% 0.012 95); --cat-refine-border: oklch(77% 0.13 82 / 0.45); --cat-refine-text: var(--ks-kinpaku-ink); --cat-simplify-bg: linear-gradient(155deg, oklch(61% 0.085 78 / 0.10), transparent 58%), oklch(96% 0.012 95); --cat-simplify-border: oklch(61% 0.085 78 / 0.50); --cat-simplify-text: var(--ks-kinpaku-ink); --cat-harden-bg: linear-gradient(155deg, oklch(49% 0.08 188 / 0.10), transparent 58%), oklch(96% 0.012 95); --cat-harden-border: oklch(49% 0.08 188 / 0.48); --cat-harden-text: var(--ks-patina-deep); --cat-system-bg: linear-gradient(155deg, oklch(61% 0.085 78 / 0.08), transparent 58%), oklch(96% 0.012 95); --cat-system-border: oklch(61% 0.085 78 / 0.35); --cat-system-text: oklch(45% 0.02 82); background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep)); } html.light .home-kinpaku ::selection { color: var(--ks-lacquer-raised); background: var(--ks-patina); } html.light .home-kinpaku .grain-overlay { opacity: 0.035; mix-blend-mode: multiply; } html.light .home-kinpaku .site-header { background: oklch(99% 0.008 95 / calc(0.88 * var(--hp, 0))); border-bottom-color: oklch(25% 0.02 95 / calc(0.10 * var(--hp, 0))); } html.light .hero-rebuild { border-bottom-color: var(--ks-rule); } html.light .hero-rebuild-art { background-image: url("/assets/neo-kinpaku/candidates/finalists/m-01-v2-01-light.png"); background-position: left center; filter: saturate(1.12) contrast(1.04); } html.light .hero-rebuild-demo-shell { background: oklch(99% 0.008 95 / 0.92); border-color: var(--ks-rule); } html.light .hero-rebuild-demo-shell:hover { border-color: var(--ks-kinpaku-deep); } /* Harness logos — mirror dark-mode per-logo exceptions for paper backgrounds. Default: native assets, slightly dimmed; hover restores full color/weight. */ html.light .home-kinpaku .hero-rebuild-logo { opacity: 0.86; } html.light .home-kinpaku .hero-rebuild-logo img { opacity: 0.84; filter: none; } /* White-on-transparent / white-on-black sources — invert to ink on paper. */ html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="Pi"] img { filter: grayscale(1) saturate(0) invert(1) brightness(0.2) contrast(1.1); } html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="OpenCode"] img { filter: grayscale(1) saturate(0) invert(1) brightness(0.92) contrast(1.05); } html.light .home-kinpaku .hero-rebuild-logo:hover, html.light .home-kinpaku .hero-rebuild-logo:focus-visible { opacity: 1; } html.light .home-kinpaku .hero-rebuild-logo:hover img, html.light .home-kinpaku .hero-rebuild-logo:focus-visible img { opacity: 1; filter: none; } /* Pi stays inverted on hover — the source SVG is white-on-transparent. */ html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="Pi"]:hover img, html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="Pi"]:focus-visible img { filter: grayscale(1) saturate(0) invert(1) brightness(0.18) contrast(1.1); } /* OpenCode hover keeps the inverted plate readable (same rationale as dark mode). */ html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="OpenCode"]:hover img, html.light .home-kinpaku .hero-rebuild-logo[data-tooltip="OpenCode"]:focus-visible img { filter: grayscale(1) saturate(0) invert(1) brightness(0.92) contrast(1.05); } html.light .slop-teaser { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .slop-teaser-scanline { background: repeating-linear-gradient( 135deg, transparent 0 22px, oklch(52% 0.14 35 / 0.04) 22px 23px ), linear-gradient(180deg, transparent 60%, oklch(94% 0.014 95 / 0.55)); } html.light .slop-teaser-badge { color: var(--ks-vermilion); border-color: var(--ks-vermilion); } html.light .slop-teaser-terminal { background: oklch(96% 0.012 95 / 0.95); } html.light .home-kinpaku .why-bento { background: var(--ks-lacquer-raised); border-top-color: var(--ks-lacquer-raised); border-bottom-color: var(--ks-lacquer-raised); } html.light .home-kinpaku .why-bento-tile { background: var(--ks-lacquer); border-color: var(--ks-rule); } html.light .home-kinpaku .section-nav { background: oklch(99% 0.008 95 / 0.92); border-color: var(--ks-rule); } html.light .home-kinpaku .section-nav a { color: var(--ks-text-muted); } html.light .home-kinpaku .section-nav a.is-active, html.light .home-kinpaku .section-nav a:hover { color: var(--ks-nav-active); } html.light .kinpaku-chrome .site-header-nav a:hover, html.light .kinpaku-chrome .site-header-nav a[aria-current="page"] { color: var(--ks-nav-active); } html.light .kinpaku-chrome .site-header-nav a[aria-current="page"]::after { background: var(--ks-nav-active); } html.light .kinpaku-system-page .ks-nav a:hover, html.light .kinpaku-system-page .ks-nav a[aria-current="page"] { color: var(--ks-nav-active); } html.light .kinpaku-system-page .ks-nav a[aria-current="page"]::after { background: var(--ks-nav-active); } html.light .home-kinpaku .why-panel-body a { color: var(--ks-champagne); text-decoration-color: var(--ks-link-on-paper-line); } html.light .home-kinpaku .why-panel-body a:hover { color: var(--ks-link-on-paper-hover); text-decoration-color: var(--ks-link-on-paper-hover); } html.light .home-kinpaku .why-dm-filename, html.light .home-kinpaku .why-dm-type-specimen { color: var(--ks-champagne); } html.light .home-kinpaku .why-dm-comp-chip { color: var(--ks-text); border-color: var(--ks-rule); } html.light .home-kinpaku .why-dm-comp-chip--primary { color: oklch(14% 0.018 95); border-color: var(--ks-kinpaku-deep); background: linear-gradient(90deg, oklch(77% 0.13 82 / 0.22), oklch(84% 0.19 80 / 0.55)), url("/assets/neo-kinpaku/kinpaku-gold-leaf.png") center / 160% auto; } html.light .home-kinpaku .why-dm-comp-input { background: oklch(88% 0.014 95); color: var(--ks-text-muted); border-color: var(--ks-rule); } html.light .home-kinpaku .why-dm-color-hero { border-color: var(--ks-rule); } html.light .home-kinpaku .why-dm-color-ramp span { border-color: var(--ks-rule); } html.light .home-kinpaku .why-dm-foot { color: var(--ks-text-muted); } html.light .home-kinpaku .why-visual--ci { background: linear-gradient(90deg, oklch(77% 0.13 82 / 0.04) 1px, transparent 1px), linear-gradient(180deg, oklch(77% 0.13 82 / 0.03) 1px, transparent 1px), radial-gradient(circle at 92% 12%, oklch(49% 0.08 188 / 0.08), transparent 18rem), var(--ks-lacquer-raised); background-size: 34px 34px, 34px 34px, auto, auto; } /* Live demo chrome on homepage */ html.light .live-demo-gbar { background: oklch(96% 0.012 95 / 0.88); border-color: var(--ks-rule); } html.light .live-demo-gbar-input { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); color: var(--ks-text); } html.light .live-demo-gbar-chip { background: var(--ks-graphite); border-color: var(--ks-rule); } html.light .live-demo-panel { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); box-shadow: 0 8px 22px oklch(25% 0.02 95 / 0.08); } html.light .live-demo-variant-card { background: var(--ks-lacquer); border-color: var(--ks-rule); } html.light .live-demo-variant-card.is-selected { border-color: var(--ks-kinpaku-deep); box-shadow: 0 0 0 4px oklch(77% 0.13 82 / 0.12); } html.light .live-demo-toolbar { background: var(--ks-graphite); border-color: var(--ks-rule); } html.light .live-demo-canvas { background: var(--ks-lacquer-deep); } html.light .live-demo-inspector { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } /* ============================================================ Docs, designing, slop, live-mode, changelog pages ============================================================ */ html.light .docs-kinpaku, html.light .designing-kinpaku, html.light .slop-kinpaku, html.light .live-mode-kinpaku { background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep)); } html.light .docs-kinpaku .skills-sidebar { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .docs-kinpaku .skills-sidebar-list a[aria-current="page"] { background: transparent; } html.light .docs-kinpaku .docs-tile, html.light .docs-kinpaku .docs-category-card, html.light .docs-kinpaku .docs-related-card, html.light .docs-kinpaku .docs-chain, html.light .docs-kinpaku .docs-ref-card, html.light .docs-kinpaku .docs-live-frame { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .docs-kinpaku .docs-chain, html.light .docs-kinpaku .docs-flow-link { background: var(--docs-panel-bg); } html.light .docs-kinpaku .docs-tile:hover, html.light .docs-kinpaku .docs-category-card:hover, html.light .docs-kinpaku .docs-related-card:hover, html.light .docs-kinpaku .docs-ref-card:hover { border-color: var(--ks-kinpaku-deep); } html.light .docs-visual-terminal { background: var(--ks-lacquer-deep); border-color: var(--ks-rule); box-shadow: 0 12px 32px oklch(25% 0.02 95 / 0.08); } html.light .docs-visual-browser { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .designing-kinpaku .designing-loop-node { background: transparent; border: 0; } html.light .designing-kinpaku .designing-loop-node:hover .designing-loop-name { color: var(--ks-nav-active); } html.light .designing-kinpaku .designing-start-step, html.light .designing-kinpaku .designing-phase-card { background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); border-radius: 4px; padding: clamp(24px, 3vw, 36px); } /* Sticky phase nav — paper strip, not dark lacquer inset */ html.light .designing-kinpaku .designing-phasenav { background: var(--ks-lacquer-raised); border-top-color: var(--ks-rule); border-bottom-color: var(--ks-rule); box-shadow: 0 1px 0 oklch(25% 0.02 95 / 0.04); } html.light .designing-kinpaku .designing-phasenav-link { color: var(--ks-text-muted); } html.light .designing-kinpaku .designing-phasenav-link:hover { color: var(--ks-champagne); } html.light .designing-kinpaku .designing-phasenav-link.is-active { color: var(--ks-nav-active); } html.light .designing-kinpaku .designing-phasenav-link.is-active::after { background: var(--ks-nav-active); } html.light .designing-kinpaku .site-header-nav a:hover, html.light .designing-kinpaku .site-header-nav a[aria-current="page"] { color: var(--ks-nav-active); } html.light .designing-kinpaku .designing-phase-cmd { background: var(--ks-graphite); border-color: var(--ks-rule); color: var(--ks-champagne); } html.light .designing-kinpaku .designing-phase-cmd:hover { border-color: var(--ks-link-on-paper); background: oklch(49% 0.08 188 / 0.08); color: var(--ks-link-on-paper); } html.light .designing-kinpaku .docs-viz-file-header { background: var(--ks-graphite); } html.light .designing-kinpaku .designing-iterate-terminal { background: var(--ks-lacquer-deep); border-color: var(--ks-rule); color: var(--ks-champagne); box-shadow: inset 0 1px 0 oklch(99% 0 0 / 0.6), 0 12px 32px oklch(25% 0.02 95 / 0.08); } html.light .designing-kinpaku .designing-iterate-terminal-prompt { color: var(--ks-kinpaku-ink); } html.light .designing-kinpaku .docs-viz-live-frame { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .designing-kinpaku .docs-viz-live-chrome { background: var(--ks-graphite); } html.light .designing-kinpaku .docs-viz-live-dot { background: oklch(72% 0.02 95); } html.light .designing-kinpaku .docs-viz-live-stage { background: linear-gradient(90deg, oklch(61% 0.085 78 / 0.06) 1px, transparent 1px), linear-gradient(180deg, oklch(61% 0.085 78 / 0.05) 1px, transparent 1px), var(--ks-lacquer); background-size: 28px 28px; } html.light .designing-kinpaku .docs-viz-live-target { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .designing-kinpaku .docs-viz-live-kicker { color: var(--ks-kinpaku-ink); } html.light .designing-kinpaku .docs-viz-live-btn { color: var(--ks-lacquer-deep); } html.light .designing-kinpaku .docs-viz-live-ctx, html.light .designing-kinpaku .docs-viz-live-gbar { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); box-shadow: 0 10px 28px -6px oklch(25% 0.02 95 / 0.14); } html.light .designing-kinpaku .docs-viz-live-gbar-mark { color: var(--ks-kinpaku-ink); } html.light .designing-kinpaku .docs-viz-live-gbar-btn.is-active { background: var(--ks-kinpaku); color: oklch(14% 0.018 95); } html.light .designing-kinpaku .docs-viz-live-gbar-btn.is-active svg { color: inherit; } html.light .designing-kinpaku .docs-viz-live-ctx-accept { color: var(--ks-lacquer-deep); } html.light .designing-kinpaku .designing-surface-cmd, html.light .designing-kinpaku .designing-extract-btn { background: var(--ks-graphite); color: var(--ks-champagne); } html.light .designing-kinpaku .designing-extract-after { color: oklch(14% 0.018 95); } html.light .designing-kinpaku .designing-lane-link { color: var(--ks-link-on-paper); text-decoration-color: var(--ks-link-on-paper-line); } html.light .designing-kinpaku .designing-lane-link:hover { color: var(--ks-link-on-paper-hover); text-decoration-color: var(--ks-link-on-paper-hover); } html.light .designing-kinpaku .designing-cta-card:hover { border-color: var(--ks-kinpaku-deep); } /* Bento rail — white gutters between tiles (match homepage why-bento) */ html.light .designing-kinpaku .ks-bento { background: var(--ks-lacquer-raised); border-top-color: var(--ks-lacquer-raised); border-bottom-color: var(--ks-lacquer-raised); } html.light .designing-kinpaku .ks-bento-tile { background: var(--ks-lacquer); } html.light .designing-kinpaku .designing-lanes .ks-bento-tile { background: transparent; } html.light .designing-kinpaku .designing-lane-mock { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .designing-kinpaku .designing-lane-mock-accent { color: var(--ks-kinpaku-deep); } html.light .designing-kinpaku .ks-bento.designing-lanes { background: transparent; border: 0; } html.light .slop-kinpaku .slop-card, html.light .slop-kinpaku .slop-layer { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .slop-kinpaku .gallery-card:hover, html.light .slop-kinpaku .rule-card:hover { background: var(--ks-lacquer-raised); border-color: oklch(49% 0.08 188 / 0.34); } html.light .slop-kinpaku .gallery-card:hover .gallery-card-title, html.light .slop-kinpaku .rule-card:hover .rule-card-name { color: var(--ks-champagne); } html.light .live-mode-kinpaku .live-mode-hero-panel, html.light .live-mode-kinpaku .live-mode-step { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .live-mode-kinpaku .live-mode-pathway { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .live-mode-kinpaku .live-mode-pathway:hover { border-color: var(--ks-kinpaku-deep); background: oklch(77% 0.13 82 / 0.08); } html.light .live-mode-kinpaku .live-mode-pathway-kind, html.light .live-mode-kinpaku .live-mode-pathway-cta { color: var(--ks-kinpaku-ink); } html.light .live-mode-kinpaku .live-mode-terminal { background: var(--ks-lacquer-deep); border-color: var(--ks-rule); box-shadow: inset 0 1px 0 oklch(99% 0 0 / 0.6), 0 20px 48px -14px oklch(25% 0.02 95 / 0.12); } /* Changelog + FAQ cards (cf-*). These pages paint their card / panel / pill backgrounds with literal dark oklch values that don't flip with the theme, so in light mode the cards stayed near-black on the light page. The earlier override here was dead twice over: it targeted a .changelog-faq-kinpaku wrapper that is never on the body, and the wrong (.faq-item / .changelog-entry) element names — the real classes are cf-prefixed. Flip the actual surfaces to the shared light card treatment, and drop the bright-kinpaku accents to the light-mode small-text accent so they stay legible on paper. */ html.light .cf-entry, html.light .cf-stats, html.light .cf-faq-item { background: linear-gradient(135deg, oklch(77% 0.13 82 / 0.06), transparent 44%), var(--ks-lacquer-raised); box-shadow: inset 0 0 0 1px oklch(77% 0.13 82 / 0.05); } html.light .cf-entry--current { background: linear-gradient(135deg, oklch(77% 0.13 82 / 0.12), transparent 52%), var(--ks-lacquer-raised); } html.light .cf-ba-shot { background: var(--ks-lacquer-raised); } html.light .cf-ba-tag--before { background: oklch(99% 0.008 95 / 0.7); } html.light .cf-version, html.light .cf-stat-num, html.light .cf-current-badge, html.light .cf-ba-tag--after, html.light .cf-faq-question { color: var(--ks-kinpaku-ink); } /* ============================================================ Design system page ============================================================ */ html.light .kinpaku-system-page { background: var(--ks-lacquer); } html.light .kinpaku-system-page .ks-hero-art { background: linear-gradient(90deg, var(--ks-lacquer) 0%, oklch(97% 0.012 95 / 0.65) 26%, transparent 48%, transparent 88%, var(--ks-lacquer) 100%), linear-gradient(180deg, oklch(97% 0.012 95 / 0.35) 0%, transparent 35%, var(--ks-lacquer) 100%), url("/assets/neo-kinpaku/candidates/finalists/m-01-v2-01-light.png") center / cover no-repeat; filter: saturate(1.05) contrast(1.02); } /* Logo lockup on paper — ink mark + wordmark (matches logo tile "On light") */ html.light .kinpaku-system-page a.ks-brand, html.light .kinpaku-system-page a.ks-brand .ks-mark, html.light .kinpaku-system-page a.ks-brand .ks-wordmark, html.light .kinpaku-chrome .site-header-brand, html.light .kinpaku-chrome .site-header-brand-logo, html.light .kinpaku-chrome .site-header-brand-name, html.light .kinpaku-chrome .footer-logo, html.light .detector-home-link, html.light .detector-home-link .ks-mark, html.light .detector-home-link .ks-wordmark { color: var(--ks-champagne); } html.light .kinpaku-system-page .ks-section-tile, html.light .kinpaku-system-page .ks-specimen, html.light .kinpaku-system-page .ks-proof-card { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .detector-lab-page { background: var(--ks-lacquer); color: var(--ks-text); } html.light .detector-lab-page .detector-lab-panel, html.light .detector-lab-page .detector-lab-sidebar { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .detector-lab-page .detector-lab-preview { background: var(--ks-lacquer-deep); border-color: var(--ks-rule); } /* ============================================================ Testimonials, footer, shared sub-page prose ============================================================ */ html.light .testimonials-section { background: var(--ks-lacquer-deep); } html.light .testimonial-card { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .site-footer { background: var(--ks-lacquer-deep); } html.light .sub-page-hero { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .prose pre { background: var(--ks-code-block-bg); border-color: var(--ks-code-block-border); } html.light .prose blockquote { border-left-color: var(--ks-kinpaku-deep); color: var(--ks-text-muted); } /* ============================================================ Homepage — panels, magazine, installs, why visuals ============================================================ */ html.light .home-kinpaku .foundation-card, html.light .home-kinpaku .magazine-container, html.light .home-kinpaku .gallery-stack-card, html.light .home-kinpaku .language-view-toggle, html.light .home-kinpaku .demo-toggle-switch, html.light .home-kinpaku .glass-terminal, html.light .home-kinpaku .terminal-window, html.light .home-kinpaku .install-terminal-cmd, html.light .home-kinpaku .install-cmd-line, html.light .home-kinpaku .terminal-header { background: var(--ks-lacquer-raised); } html.light .home-kinpaku .language-view-tab.is-active { color: oklch(14% 0.018 95); } /* Periodic-table view (#framework-viz-container). The dark styles hardcode a black stage and near-black tiles with !important, so in light mode the tiles stayed black while the symbol/name text flipped to dark ink — black on black. Mirror the dark "crisp neutral card" idea for light: a soft light stage with raised near-white tiles and neutral hairline borders. Symbol (champagne) and name (text-muted) already flip to dark, and category stays cued by the group labels (the --cat-*-text tokens are re-themed for light above). !important is required to override the dark rules' !important. */ html.light .home-kinpaku .language-view--periodic .solution-visual-interactive { background: var(--ks-lacquer-deep) !important; } html.light .home-kinpaku #framework-viz-container .ptable-element { background: var(--ks-lacquer-raised) !important; border-color: var(--ks-rule) !important; box-shadow: 0 1px 3px oklch(25% 0.02 95 / 0.06) !important; } html.light .home-kinpaku #framework-viz-container .ptable-element:is(:hover, :focus-visible) { border-color: oklch(25% 0.02 95 / 0.32) !important; box-shadow: 0 4px 14px oklch(25% 0.02 95 / 0.10) !important; } html.light .home-kinpaku .install-primary-main, html.light .home-kinpaku .install-primary-howto, html.light .home-kinpaku .install-step, html.light .home-kinpaku .install-cmd-block, html.light .home-kinpaku .install-tool-preview, html.light .home-kinpaku .install-updated-x, html.light .home-kinpaku .changelog-highlights, html.light .home-kinpaku .changelog-entry, html.light .home-kinpaku .faq-item, html.light .home-kinpaku .consulting-content, html.light .home-kinpaku .load-error { background: linear-gradient(135deg, oklch(77% 0.13 82 / 0.06), transparent 44%), var(--ks-lacquer-raised); box-shadow: inset 0 0 0 1px oklch(77% 0.13 82 / 0.05); } html.light .home-kinpaku .install-primary-howto { background: linear-gradient(135deg, oklch(49% 0.08 188 / 0.06), transparent 44%), var(--ks-lacquer-raised); } html.light .home-kinpaku .foundation-plinth { background: repeating-linear-gradient(45deg, oklch(25% 0.02 95 / 0.06), oklch(25% 0.02 95 / 0.06) 1px, transparent 1px, transparent 9px), oklch(91% 0.012 95 / 0.55); } html.light .home-kinpaku .foundation-column:hover .foundation-card { box-shadow: inset 0 0 0 1px oklch(49% 0.08 188 / 0.10), 0 24px 58px oklch(25% 0.02 95 / 0.08); } html.light .home-kinpaku :is(.spread-demo-area, .terminal-preview, .mobile-demo-area) .demo-split-comparison { --demo-panel: oklch(96% 0.012 95); --demo-panel-raised: oklch(94% 0.014 95); --demo-panel-soft: oklch(91% 0.012 95); --demo-border: oklch(25% 0.02 95 / 0.14); --demo-text: oklch(28% 0.018 95); --demo-muted: oklch(45% 0.015 95); --demo-dim: oklch(58% 0.012 95); --demo-warning-panel: oklch(89% 0.055 84); --demo-danger-panel: oklch(58% 0.15 35 / 0.1); --demo-info-panel: oklch(70% 0.12 188 / 0.1); --demo-purple: var(--ks-kinpaku-rich); --demo-purple-soft: oklch(89% 0.055 84); } html.light .home-kinpaku .spread-demo-area .demo-split-comparison .split-after, html.light .home-kinpaku .terminal-preview .demo-split-comparison .split-after { background: oklch(94% 0.014 95); } html.light .home-kinpaku .hero-rebuild-right .split-label-item { background: oklch(99% 0.008 95 / 0.88); border-color: var(--ks-rule); color: var(--ks-champagne); } html.light .home-kinpaku .split-badge { background: oklch(99% 0.008 95 / 0.92); } html.light .home-kinpaku .slop-callout { background: var(--ks-lacquer-raised); } html.light .home-kinpaku .why-visual--writes, html.light .home-kinpaku .why-visual--extension { background: radial-gradient(circle at 92% 12%, oklch(49% 0.08 188 / 0.08), transparent 18rem), var(--ks-lacquer-raised); } html.light .home-kinpaku .why-ci-window, html.light .home-kinpaku .why-writes-card, html.light .home-kinpaku .why-visual--extension .why-browser { background: var(--ks-lacquer-raised); box-shadow: 0 24px 70px oklch(25% 0.02 95 / 0.08); } html.light .home-kinpaku .why-ci-header, html.light .home-kinpaku .why-writes-head, html.light .home-kinpaku .why-visual--extension .why-browser-chrome { background: oklch(88% 0.014 95); } html.light .home-kinpaku .why-writes-line--del { color: oklch(52% 0.16 35); background: oklch(58% 0.15 35 / 0.10); } html.light .home-kinpaku .why-writes-line--add { color: oklch(40% 0.10 145); background: oklch(58% 0.12 145 / 0.14); } html.light .home-kinpaku .why-writes-check { color: oklch(14% 0.018 95); } html.light .home-kinpaku .why-visual--v2 .v2-canvas-mock, html.light .home-kinpaku .why-visual--v2 .v2-new-browser, html.light .home-kinpaku .why-visual--v2 .v2-new-line { background: var(--ks-lacquer-raised); box-shadow: 0 18px 48px oklch(25% 0.02 95 / 0.08); } html.light .home-kinpaku .why-visual--v2 .v2-canvas-mock::before, html.light .home-kinpaku .why-visual--v2 .v2-new-browser-dots { background: var(--ks-graphite); } html.light .home-kinpaku .why-visual--v2 .v2-new-browser-frame { background: linear-gradient(90deg, oklch(77% 0.13 82 / 0.05) 1px, transparent 1px), linear-gradient(180deg, oklch(77% 0.13 82 / 0.04) 1px, transparent 1px), radial-gradient(circle at 72% 58%, oklch(49% 0.08 188 / 0.06), transparent 7rem), var(--ks-lacquer); } html.light .home-rebuild .slop-teaser-panel, html.light .home-rebuild .slop-teaser-terminal { background: var(--ks-lacquer-raised); } html.light .home-rebuild .slop-teaser-terminal-header { background: var(--ks-graphite); } /* Live demo picker chrome — light reskin */ html.light .home-kinpaku .live-demo-dot, html.light .live-mode-kinpaku .live-demo-dot { background: oklch(72% 0 0); } html.light .home-kinpaku .live-demo-url, html.light .live-mode-kinpaku .live-demo-url { border-color: var(--ks-rule); } html.light .home-kinpaku .live-demo-gbar, html.light .live-mode-kinpaku .live-demo-gbar, html.light .home-kinpaku .live-demo-ctx, html.light .live-mode-kinpaku .live-demo-ctx { box-shadow: 0 16px 36px -12px oklch(25% 0.02 95 / 0.12); border-color: var(--ks-rule); } html.light .home-kinpaku .live-demo-frame, html.light .live-mode-kinpaku .live-demo-frame { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .hero-live-demo .live-demo-pin-note { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); box-shadow: 0 8px 22px oklch(25% 0.02 95 / 0.10); /* The base note text is near-white for the dark bar; on the pale bubble it has to flip to ink or the comment is invisible. */ color: var(--ks-text); } html.light .hero-live-demo .live-demo-pin-caret { background: var(--ks-kinpaku-ink); } html.light .hero-live-demo .live-demo-annot-clear { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } /* ============================================================ Docs / sub-pages shared shells ============================================================ */ html.light .docs-kinpaku, html.light .designing-kinpaku, html.light .slop-kinpaku, html.light .live-mode-kinpaku, html.light .changelog-faq-kinpaku { background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep)); } html.light body.docs-kinpaku { background: oklch(100% 0 0); } html.light body.docs-kinpaku .site-header { background: oklch(100% 0 0 / 0.96); } html.light .skills-layout-page .skills-sidebar, html.light .skills-layout-page .skills-content { background: transparent; } html.light [data-site-header] .site-header-nav a { border-bottom-color: var(--ks-rule); } html.light .docs-kinpaku .docs-live-chrome, html.light .docs-kinpaku .docs-live-bar { background: var(--ks-graphite); } html.light .docs-kinpaku .docs-live-stage, html.light .docs-kinpaku .docs-live-target { background: var(--ks-lacquer); } html.light .docs-kinpaku .docs-flow-link { background: var(--docs-panel-bg); } html.light .docs-kinpaku .docs-flow-link:hover { background: var(--docs-panel-hover-bg); border-color: var(--docs-accent-line); } /* Docs inline viz — small text on paper uses patina; kinpaku stays for large brand marks and fill surfaces. */ html.light .docs-kinpaku .prose .docs-viz-flow-step--accent .docs-viz-flow-name, html.light .docs-kinpaku .prose .docs-viz-variant.is-active .docs-viz-variant-kicker, html.light .docs-kinpaku .prose .docs-viz-designmd-chip, html.light .docs-kinpaku .prose .docs-viz-file-status, html.light .docs-kinpaku .prose .docs-viz-live-kicker, html.light .docs-kinpaku .prose .docs-viz-live-title em, html.light .docs-kinpaku .prose th { color: var(--docs-accent); } html.light .docs-kinpaku .prose th { border-bottom-color: var(--docs-accent-line); } html.light .docs-kinpaku .prose .docs-viz-flow-step + .docs-viz-flow-step::before { color: var(--docs-accent); } html.light .live-mode-kinpaku .live-mode-stage-viz .docs-viz-variant.is-active .docs-viz-variant-kicker { color: var(--ks-kinpaku-ink); } /* Docs command demos — light surfaces (divider fix lives in docs-kinpaku.css) */ html.light .docs-kinpaku .docs-command-demo .split-container { background: linear-gradient(90deg, oklch(77% 0.13 82 / 0.04) 1px, transparent 1px), linear-gradient(180deg, oklch(77% 0.13 82 / 0.03) 1px, transparent 1px), var(--ks-lacquer-raised); background-size: 24px 24px; border-bottom-color: var(--ks-rule); } html.light .docs-kinpaku .docs-command-demo .split-before { background: linear-gradient(135deg, oklch(77% 0.13 82 / 0.05), transparent 48%), var(--ks-lacquer); } html.light .docs-kinpaku .docs-command-demo .split-after { background: var(--ks-lacquer-raised); } html.light .docs-kinpaku .docs-command-demo .demo-caption { background: var(--ks-graphite); color: var(--ks-text-muted); } html.light .designing-kinpaku .designing-loop-track { background: transparent; border: 0; } html.light .slop-kinpaku .slop-hero-panel, html.light .slop-kinpaku .slop-gallery-item { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } .kinpaku-system-page .ks-topbar .theme-toggle { margin-left: auto; margin-right: 12px; } html.light .site-header-github-star { color: var(--ks-kinpaku); } html.light .slop-kinpaku .skills-sidebar { background: transparent; border-color: var(--ks-rule); } html.light .designing-kinpaku { background: linear-gradient(180deg, var(--ks-lacquer), var(--ks-lacquer-deep)); } html.light .kinpaku-system-page .ks-category-rail { background: linear-gradient(180deg, transparent, oklch(97% 0.012 95 / 0.92)); } html.light .kinpaku-system-page .ks-logo-tile.is-dark { background: var(--ks-lacquer-deep); } html.light .kinpaku-system-page .ks-logo-tile figcaption { background: var(--ks-lacquer-raised); } /* ============================================================ Header utilities — match toggle + star pill height ============================================================ */ html.light .site-header-github { height: 36px; min-height: 36px; padding: 0 12px 0 10px; box-sizing: border-box; } /* ============================================================ Hero picker demo — readable controls on light surfaces (graphite tokens are pale in light mode; use dark chips here) ============================================================ */ html.light .home-kinpaku .live-demo-gbar, html.light .live-mode-kinpaku .live-demo-gbar, html.light .home-kinpaku .live-demo-ctx, html.light .live-mode-kinpaku .live-demo-ctx { color: var(--ks-text); background: var(--ks-lacquer-raised); border-color: var(--ks-rule); box-shadow: 0 16px 36px -12px oklch(25% 0.02 95 / 0.14); } /* Standalone brand mark (no wordmark) reads as the header logo does in light mode — crisp near-black ink, not the small-text accent used elsewhere. */ html.light .home-kinpaku .live-demo-gbar-brand, html.light .live-mode-kinpaku .live-demo-gbar-brand { color: var(--ks-champagne); } /* Active tool: a solid kinpaku chip with dark ink, matching the gold Go button. The dark-mode active is a graphite chip + gold text; on a pale bar that chip reads as a heavy black smudge, so the light analog flips to gold fill. */ html.light .home-kinpaku .live-demo-gbar-btn.is-active, html.light .live-mode-kinpaku .live-demo-gbar-btn.is-active { background: var(--ks-kinpaku); color: oklch(14% 0.018 95); } html.light .home-kinpaku .live-demo-gbar-btn.is-active svg, html.light .home-kinpaku .live-demo-gbar-btn.is-active .live-demo-gbar-btn-label, html.light .live-mode-kinpaku .live-demo-gbar-btn.is-active svg, html.light .live-mode-kinpaku .live-demo-gbar-btn.is-active .live-demo-gbar-btn-label { color: inherit; } html.light .home-kinpaku .live-demo-gbar-chat, html.light .live-mode-kinpaku .live-demo-gbar-chat { background: oklch(97.5% 0.004 95); border-color: oklch(25% 0.02 95 / 0.14); } html.light .home-kinpaku .live-demo-gbar-chat.is-expanded, html.light .live-mode-kinpaku .live-demo-gbar-chat.is-expanded { border-color: var(--ks-kinpaku-deep); } html.light .home-kinpaku .live-demo-gbar-chat-input, html.light .live-mode-kinpaku .live-demo-gbar-chat-input { color: var(--ks-text); } /* Control chips (adapt pill, refine input, ×3 count). The old 88%/0.014 fill was an 11%-darker olive-cast block that read as heavy and unrefined on the white bar. A barely-there warm off-white recess with a crisp hairline reads as polished product chrome — the border does the separating, not a gray slab. */ /* The configure-phase bar mirrors the real overlay chrome, which keeps a dark surface in both themes. The pale light-mode bar from the rule above would swallow the near-white prompt text below, so the configuring phase opts back into the overlay's dark surface. */ html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"], html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] { background: oklch(15% 0.008 95); border-color: oklch(92% 0 0 / 0.14); } html.light .home-kinpaku .why-live-frame > .why-live-ctx.live-demo-ctx[data-phase="configuring"] { background: oklch(15% 0.008 95); border-color: oklch(92% 0 0 / 0.14); } html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-input, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-input { background: transparent; border-color: transparent; color: oklch(94% 0.02 82); } html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-caret, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-caret { background: oklch(94% 0.02 82); } html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-selection, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-selection { background: transparent; border: 1px solid oklch(70% 0.12 188); color: oklch(70% 0.12 188); } html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-action, html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-count, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-action, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-count { background: transparent; border: 0; /* Light muted tone from the base sheet: these sit on the dark configure surface, where the light-theme text-muted token would vanish. */ color: oklch(72% 0 0); } html.light .home-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-voice, html.light .live-mode-kinpaku .live-demo-ctx[data-phase="configuring"] .live-demo-ctx-voice { color: oklch(72% 0 0); } html.light .home-kinpaku .live-demo-ctx-go, html.light .home-kinpaku .live-demo-ctx-accept, html.light .live-mode-kinpaku .live-demo-ctx-go, html.light .live-mode-kinpaku .live-demo-ctx-accept { color: oklch(14% 0.018 95); } /* Palette switcher — light surface, kinpaku-tinted highlight (the dark graphite chip would be a black smudge on the pale menu). */ html.light .home-kinpaku .live-demo-ctx-palette, html.light .live-mode-kinpaku .live-demo-ctx-palette { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); box-shadow: 0 18px 40px -14px oklch(25% 0.02 95 / 0.18); } html.light .home-kinpaku .live-demo-ctx-palette-chip.is-highlight, html.light .live-mode-kinpaku .live-demo-ctx-palette-chip.is-highlight { background: oklch(78% 0.12 82 / 0.16); color: var(--ks-kinpaku-ink); } html.light .home-kinpaku .live-demo-ctx-caret, html.light .live-mode-kinpaku .live-demo-ctx-caret { background: var(--ks-kinpaku-rich); } html.light .home-kinpaku .live-demo-ctx-row--accepted, html.light .live-mode-kinpaku .live-demo-ctx-row--accepted { color: var(--ks-kinpaku-ink); } html.light .home-kinpaku .live-demo-ctx-nav:hover, html.light .live-mode-kinpaku .live-demo-ctx-nav:hover { color: var(--ks-kinpaku-ink); } html.light .home-kinpaku .live-demo-outline, html.light .home-kinpaku .live-demo-annotations, html.light .live-mode-kinpaku .live-demo-outline, html.light .live-mode-kinpaku .live-demo-annotations { color: var(--ks-kinpaku-ink); border-color: var(--ks-kinpaku-rich); } /* ============================================================ Why bento — Live Mode mock (tile 07) ============================================================ */ html.light .home-kinpaku .why-visual--live { background: linear-gradient(90deg, oklch(77% 0.13 82 / 0.04) 1px, transparent 1px), linear-gradient(180deg, oklch(77% 0.13 82 / 0.03) 1px, transparent 1px), radial-gradient(circle at 18% 100%, oklch(77% 0.13 82 / 0.06), transparent 16rem), var(--ks-lacquer-raised); background-size: 34px 34px, 34px 34px, auto, auto; } html.light .home-kinpaku .why-live-frame { background: var(--ks-lacquer); border-color: var(--ks-rule); box-shadow: 0 18px 48px oklch(25% 0.02 95 / 0.10); } html.light .home-kinpaku .why-live-chrome { background: oklch(88% 0.014 95); border-color: var(--ks-rule); } html.light .home-kinpaku .why-live-url { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); color: var(--ks-text-muted); } html.light .home-kinpaku .why-live-stage { background: repeating-linear-gradient(0deg, transparent 0 9px, oklch(25% 0.02 95 / 0.025) 9px 10px), var(--ks-lacquer-raised); } html.light .home-kinpaku .why-live-pick { background: linear-gradient(135deg, oklch(77% 0.13 82 / 0.08), transparent 60%), var(--ks-lacquer); border-color: var(--ks-kinpaku-rich); box-shadow: 0 0 0 1px oklch(77% 0.13 82 / 0.15), 0 0 24px oklch(77% 0.13 82 / 0.10); } html.light .home-kinpaku .why-live-pick-tag { color: var(--ks-kinpaku-deep); } html.light .home-kinpaku .why-live-pick-note { background: var(--ks-kinpaku); color: oklch(14% 0.018 95); box-shadow: 0 4px 14px oklch(77% 0.13 82 / 0.18); } html.light .home-kinpaku .why-live-pick-caret { background: oklch(14% 0.018 95); } html.light .home-kinpaku .why-live-frame > .why-live-ctx.live-demo-ctx { background: var(--ks-lacquer); border-color: var(--ks-rule); box-shadow: none; } /* ============================================================ Patina text links on paper — nav CTAs, inline links, prose ============================================================ */ html.light .home-kinpaku :is( .cheatsheet-link, .why-panel-meta a, .install-howto-link, .gallery-stack-link, .install-cmd-note a, .faq-answer a, .consulting-desc a, .downloads-rebuild-secondary a, .downloads-rebuild-more a, .downloads-rebuild-extras a:not(.downloads-rebuild-link-secondary), .slop-teaser-cta-primary ) { color: var(--ks-link-on-paper); border-bottom-color: var(--ks-link-on-paper-line); } html.light .home-kinpaku :is( .cheatsheet-link, .why-panel-meta a, .install-howto-link, .gallery-stack-link, .install-cmd-note a, .faq-answer a, .consulting-desc a, .downloads-rebuild-secondary a, .downloads-rebuild-more a, .downloads-rebuild-extras a:not(.downloads-rebuild-link-secondary), .slop-teaser-cta-primary ):hover { color: var(--ks-link-on-paper-hover); border-bottom-color: var(--ks-link-on-paper-hover); } html.light :is(.docs-kinpaku, .designing-kinpaku, .slop-kinpaku, .live-mode-kinpaku) .prose a { color: var(--ks-link-on-paper); text-decoration-color: var(--ks-link-on-paper-line); } html.light :is(.docs-kinpaku, .designing-kinpaku, .slop-kinpaku, .live-mode-kinpaku) .prose a:hover { color: var(--ks-link-on-paper-hover); text-decoration-color: var(--ks-link-on-paper-hover); } html.light .docs-kinpaku .docs-flow-alt a { color: var(--ks-link-on-paper); border-bottom-color: var(--ks-link-on-paper-line); } html.light .docs-kinpaku .docs-flow-alt a:hover { border-bottom-color: var(--ks-link-on-paper-hover); } html.light .designing-kinpaku :is( .designing-visualize-plate-note a, .designing-iterate-table td a, .designing-polish-band-cmds a, .designing-maintain-label a ) { color: var(--ks-link-on-paper); text-decoration-color: var(--ks-link-on-paper-line); } html.light .designing-kinpaku :is( .designing-visualize-plate-note a, .designing-iterate-table td a, .designing-polish-band-cmds a, .designing-maintain-label a ):hover { color: var(--ks-link-on-paper-hover); text-decoration-color: var(--ks-link-on-paper-hover); } html.light .slop-kinpaku .slop-catalog-lede a { color: var(--ks-link-on-paper); border-bottom-color: var(--ks-link-on-paper-line); } html.light .slop-kinpaku .slop-catalog-lede a:hover { color: var(--ks-link-on-paper-hover); border-bottom-color: var(--ks-link-on-paper-hover); } html.light .slop-kinpaku :is( .sub-page-lede, .anti-patterns-legend-body, .visual-mode-method-name, .visual-mode-method-desc ) code { background: oklch(25% 0.02 95 / 0.08); } html.light .cf-items a, html.light .cf-faq-answer a { color: var(--ks-link-on-paper); } html.light .cf-items a:hover, html.light .cf-faq-answer a:hover { color: var(--ks-link-on-paper-hover); } html.light :is(.docs-kinpaku, .slop-kinpaku) .skills-sidebar-list a:hover, html.light :is(.docs-kinpaku, .slop-kinpaku) .skills-sidebar-list a[aria-current="page"], html.light :is(.docs-kinpaku, .slop-kinpaku) .skills-sidebar-list a[aria-current="true"], html.light .docs-kinpaku .skills-breadcrumb a { color: var(--ks-link-on-paper); } html.light :is(.docs-kinpaku, .slop-kinpaku) .skills-sidebar-list a[aria-current="page"], html.light :is(.docs-kinpaku, .slop-kinpaku) .skills-sidebar-list a[aria-current="true"] { border-left-color: var(--ks-link-on-paper); } html.light .docs-kinpaku .skills-breadcrumb a:hover { color: var(--ks-link-on-paper-hover); } html.light .slop-kinpaku :is( .sub-page-lede a, .anti-patterns-legend-body a, .visual-mode-method-name a, .visual-mode-method-desc a ) { color: var(--ks-link-on-paper); text-decoration-color: var(--ks-link-on-paper-line); } html.light .slop-kinpaku :is( .sub-page-lede a, .anti-patterns-legend-body a, .visual-mode-method-name a, .visual-mode-method-desc a ):hover { color: var(--ks-link-on-paper-hover); text-decoration-color: var(--ks-link-on-paper-hover); } /* ============================================================ Why bento — tile 03 (DESIGN.md) inner tiles ============================================================ */ html.light .home-kinpaku .why-dm-tile { background: var(--ks-lacquer); border-color: var(--ks-rule); box-shadow: none; } html.light .home-kinpaku .why-dm-tile-meta span:first-child { color: var(--ks-kinpaku-ink); } html.light .home-kinpaku .why-terminal, html.light .home-kinpaku .why-productmd-file, html.light .home-kinpaku .why-ci-window { background: var(--ks-lacquer-raised); border-color: var(--ks-rule); } html.light .home-kinpaku .why-terminal-header, html.light .home-kinpaku .why-productmd-header { background: oklch(88% 0.014 95); border-color: var(--ks-rule); } html.light .home-kinpaku :is( .why-terminal-dot, .why-live-dot, .why-visual--extension .why-browser-dot, .why-visual--v2 .v2-new-browser-dot ) { opacity: 0.62; } html.light .home-kinpaku .why-ci-header::before { opacity: 0.62; } html.light .home-kinpaku .why-ci-status, html.light .home-kinpaku .why-ci-status--fail { border-color: oklch(52% 0.16 35 / 0.32); color: oklch(46% 0.13 35); background: oklch(58% 0.15 35 / 0.10); } html.light .home-kinpaku .why-ci-line { color: var(--ks-champagne); } html.light .home-kinpaku .why-ci-cmd { color: var(--ks-kinpaku-deep); } html.light .home-kinpaku .why-ci-issue code { color: var(--ks-text); background: var(--ks-graphite); border-color: var(--ks-rule); padding: var(--ks-code-pad); } html.light .home-kinpaku .why-ci-x { color: var(--ks-vermilion); } html.light .home-kinpaku .why-visual--terminal, html.light .home-kinpaku .why-visual--productmd, html.light .home-kinpaku .why-visual--registers, html.light .home-kinpaku .why-visual--vizfirst { background: var(--ks-lacquer); } html.light .home-kinpaku .why-register-label { color: var(--ks-text-muted); } html.light .home-kinpaku .why-brand-hero-title em { color: var(--ks-kinpaku-deep); } html.light .home-kinpaku .why-register-mock--brand { background: var(--ks-lacquer); } html.light .home-kinpaku .why-register-mock--product { background: var(--ks-lacquer-raised); } html.light .home-kinpaku .why-vz-plate-kind { color: var(--ks-kinpaku-ink); } /* ============================================================ Get started section ============================================================ */ html.light .downloads-rebuild-card { --card-fg: var(--ks-text); --card-fg-strong: var(--ks-champagne); --card-fg-muted: var(--ks-text-muted); --card-accent: var(--ks-link-on-paper); --card-cmd-bg: oklch(92% 0.014 95); --card-cmd-fg: var(--ks-text); --card-copy-border: var(--ks-rule); --card-copy-fg: var(--ks-link-on-paper); --card-copy-hover-bg: oklch(70% 0.12 188 / 0.08); --card-link-color: var(--ks-link-on-paper); --card-link-underline: var(--ks-link-on-paper-line); --card-link-secondary: var(--ks-text-muted); /* Command-frame accents on paper. Install keeps bright kinpaku; the prompt glyph uses the light-mode small-text accent so it carries on near-white. */ --card-cmd-border: var(--ks-kinpaku); --card-prompt: var(--ks-kinpaku-ink); --card-cmd-border-update: oklch(49% 0.08 188 / 0.6); --card-prompt-update: var(--ks-patina-deep); background: var(--ks-lacquer-raised); border: 1px solid var(--ks-rule); box-shadow: 0 24px 60px oklch(25% 0.02 95 / 0.06); } html.light .downloads-rebuild-card::before { opacity: 0.72; mix-blend-mode: multiply; } html.light .home-kinpaku .downloads-rebuild { background: transparent; } html.light .home-kinpaku .downloads-rebuild-copy { border-color: var(--ks-rule); color: var(--ks-link-on-paper); } html.light .downloads-rebuild-alt-label { color: var(--ks-text-muted); } html.light .downloads-rebuild-note { color: var(--ks-text-muted); } html.light .home-kinpaku .downloads-rebuild-extras strong { color: var(--ks-champagne); } html.light .downloads-rebuild-eyebrow { color: var(--ks-kinpaku-ink); } html.light .home-kinpaku .downloads-rebuild-cmd { background: var(--ks-graphite); border: 1px solid var(--card-cmd-border); } html.light .home-kinpaku .downloads-rebuild-cmd--update { border-color: var(--card-cmd-border-update); } html.light .home-kinpaku .downloads-rebuild-cmd--alt { background: var(--ks-lacquer); } html.light .downloads-rebuild-alt-note code { background: var(--ks-graphite); color: var(--card-accent); padding: var(--ks-code-pad); border-radius: var(--ks-code-radius); } html.light .home-kinpaku .downloads-rebuild-copy:hover { border-color: var(--ks-patina); background: oklch(70% 0.12 188 / 0.08); color: var(--ks-link-on-paper-hover); } html.light .downloads-rebuild-alts-summary { color: var(--ks-link-on-paper); } html.light .downloads-rebuild-alts-summary:hover { color: var(--ks-link-on-paper-hover); } html.dark { color-scheme: dark; }