/* ========================================================================= @docmd/template-summer — summer.css A complete, self-contained documentation design system inspired by modern docs. Warm, bright, and modern — designed to feel like its own product, not a recolor. This stylesheet is intentionally independent of docmd-main.css. The layout in templates/layout.ejs does NOT load the base stylesheet, so everything below (reset, tokens, layout, components) is defined here. Load order (priority chain): 0 (docmd-main.css is NOT loaded by the summer layout) 5 theme CSS — palette overlay 10 summer.css (this) — distinctive "summer" design system 15 customCss[] — always wins IMPORTANT: Do NOT use !important. User customCss (priority 15) must always win so users can restyle any selector without forking the template. ========================================================================= */ :root { --summer-sidebar-width: 288px; --summer-toc-width: 240px; --summer-content-max: 896px; --summer-page-max: 1728px; --summer-topbar-height: 50px; --summer-subnav-height: 44px; --summer-radius-xs: 4px; --summer-radius-sm: 6px; --summer-radius: 20px; --summer-radius-lg: 12px; --summer-radius-xl: 18px; --summer-font-sans: "Inter", "InterVariable", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; --summer-font-mono: "JetBrains Mono", "SF Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, "Cascadia Code", "Liberation Mono", monospace; --summer-text-xs: 0.6875rem; --summer-text-sm: 0.8125rem; --summer-text-base: 0.9375rem; --summer-text-md: 1.0625rem; --summer-text-lg: 1.25rem; --summer-text-xl: 1.5rem; --summer-text-2xl: 1.875rem; --summer-text-3xl: 2.25rem; --summer-ease: cubic-bezier(0.32, 0.72, 0, 1); --summer-ease-out: cubic-bezier(0.16, 1, 0.3, 1); --summer-fast: 120ms; --summer-med: 220ms; --summer-slow: 360ms; --summer-z-base: 1; --summer-z-raised: 10; --summer-z-sticky: 30; --summer-z-dropdown: 50; --summer-z-overlay: 100; --summer-z-modal: 200; --summer-bg: #ffffff; --summer-bg-subtle: #fafafa; --summer-surface: #ffffff; --summer-surface-2: #fcfcfc; --summer-surface-3: #f1f1ef; --summer-surface-sunken: #f5f5f4; --summer-border: #e5e5e5; --summer-border-soft: #f0f0f0; --summer-border-strong: #cdcdcd; --summer-fg: #1d1d1d; --summer-fg-soft: #4a4a4a; --summer-fg-muted: #6e6e6e; --summer-fg-faint: #a3a3a3; --summer-accent: #fe551b; --summer-accent-hover: #e64500; --summer-accent-soft: #fff3ed; --summer-accent-faint: #ffe4d4; --summer-amber: #f59e0b; --summer-amber-soft: #fff7e6; --summer-sun: #fbbf24; --summer-rose: #e11d48; --summer-sky: #0284c7; --summer-sky-soft: #e0f2fe; --summer-green: #16a34a; --summer-green-soft: #dcfce7; --summer-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04); --summer-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04); --summer-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.04); --summer-shadow-lg: 0 12px 32px -8px rgba(0, 0, 0, 0.12), 0 4px 8px -4px rgba(0, 0, 0, 0.06); --summer-shadow-xl: 0 24px 48px -12px rgba(0, 0, 0, 0.18); --summer-ring: 0 0 0 3px rgba(254, 85, 27, 0.20); --summer-ring-soft: 0 0 0 3px rgba(254, 85, 27, 0.10); --summer-header-divider: 0 1px 0 0 rgba(29, 29, 29, 0.08); --summer-grid-template: var(--summer-sidebar-width) 1fr var(--summer-toc-width); --summer-pageheader-height: 50px; --summer-banner-height: 0px; --summer-main-padding-top: 32px; } .summer-template:not(.has-menubar) { --summer-subnav-height: 0px; } .summer-template.no-header { --summer-pageheader-height: 0px; } .summer-template.has-banner { --summer-banner-height: 42px; } .summer-template:not(.has-banner) { --summer-banner-height: 0px; } .summer-template:not(.has-banner) .summer-topbar { top: 0; } html[data-theme="dark"] { --summer-bg: #131110; --summer-bg-subtle: #1a1815; --summer-surface: #1d1b17; --summer-surface-2: #25221c; --summer-surface-3: #2c2820; --summer-surface-sunken: #100e0b; --summer-border: #2e2a23; --summer-border-soft: #25221c; --summer-border-strong: #3d382e; --summer-fg: #f5f0e6; --summer-fg-soft: #c5bfb0; --summer-fg-muted: #8a8473; --summer-fg-faint: #5a5448; --summer-accent: #ff8a5c; --summer-accent-hover: #ffa47d; --summer-accent-soft: #2a1810; --summer-accent-faint: #3a1f10; --summer-amber: #fbbf24; --summer-amber-soft: #2a1f08; --summer-sun: #fde047; --summer-sky: #38bdf8; --summer-sky-soft: #082f3f; --summer-green: #4ade80; --summer-green-soft: #052e1a; --summer-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4); --summer-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.5), 0 1px 2px rgba(0, 0, 0, 0.3); --summer-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.45), 0 2px 4px -2px rgba(0, 0, 0, 0.3); --summer-shadow-lg: 0 12px 32px -8px rgba(0, 0, 0, 0.55), 0 4px 8px -4px rgba(0, 0, 0, 0.4); --summer-shadow-xl: 0 24px 48px -12px rgba(0, 0, 0, 0.6); --summer-ring: 0 0 0 3px rgba(255, 138, 92, 0.25); --summer-ring-soft: 0 0 0 3px rgba(255, 138, 92, 0.12); --summer-header-divider: 0 1px 0 0 rgba(255, 255, 255, 0.08); } *, *::before, *::after { box-sizing: border-box; } * { margin: 0; } html, body { margin: 0; padding: 0; } html { visibility: hidden; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; tab-size: 4; } html.summer-ready, html[data-theme] { visibility: visible; } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } body.summer-template { font-family: var(--summer-font-sans); font-size: var(--summer-text-base); line-height: 1.7; color: var(--summer-fg); background: var(--summer-bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1; text-rendering: optimizeLegibility; min-height: 100vh; overflow-x: hidden; display: flex; flex-direction: column; } img, svg, video, canvas { display: block; max-width: 100%; height: auto; } input, button, textarea, select { font: inherit; color: inherit; } button { background: none; border: none; cursor: pointer; padding: 0; } a { color: inherit; text-decoration: none; transition: color var(--summer-fast) var(--summer-ease); } a:hover { color: var(--summer-fg); } ::selection { background: var(--summer-accent); color: #fff; } :focus { outline: none; } :focus-visible { outline: none; box-shadow: var(--summer-ring); border-radius: var(--summer-radius-sm); } .summer-template *::-webkit-scrollbar { width: 10px; height: 10px; } .summer-template *::-webkit-scrollbar-track { background: transparent; } .summer-template *::-webkit-scrollbar-thumb { background: var(--summer-border); border-radius: 6px; border: 2px solid transparent; background-clip: padding-box; } .summer-template *::-webkit-scrollbar-thumb:hover { background: var(--summer-border-strong); background-clip: padding-box; } .summer-template .skip-link { position: fixed; top: -100px; left: 12px; background: var(--summer-accent); color: #fff; padding: 10px 18px; border-radius: var(--summer-radius); z-index: var(--summer-z-modal); font-weight: 600; text-decoration: none; box-shadow: var(--summer-shadow); transition: top var(--summer-med) var(--summer-ease); } .summer-template .skip-link:focus { top: 12px; } .summer-topbar { position: sticky; top: 0; z-index: var(--summer-z-sticky); background: color-mix(in srgb, var(--summer-bg) 88%, transparent); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(16px); box-shadow: var(--summer-header-divider); } .summer-topbar__inner { max-width: var(--summer-page-max); margin: 0 auto; height: var(--summer-topbar-height); padding: 0 24px; display: grid; grid-template-columns: minmax(180px, auto) 1fr minmax(180px, auto); gap: 24px; align-items: center; } /* Logo */ .summer-logo { display: inline-flex; align-items: center; gap: 8px; color: var(--summer-fg); font-weight: 600; font-size: 0.95rem; letter-spacing: -0.01em; text-decoration: none; white-space: nowrap; transition: opacity var(--summer-fast) var(--summer-ease); height: var(--summer-topbar-height); } .summer-logo:hover { color: var(--summer-accent); } .summer-logo img { max-height: 36px; max-width: 132px; object-fit: contain; } .summer-logo--text { font-family: var(--summer-font-sans); } .summer-logo__icon { width: 24px; height: 24px; border-radius: 6px; background: var(--summer-fg); display: inline-flex; align-items: center; justify-content: center; color: var(--summer-bg); font-weight: 700; font-size: 13px; letter-spacing: -0.02em; } html:not([data-theme="dark"]) .summer-logo__dark { display: none; } html[data-theme="dark"] .summer-logo__light { display: none; } .summer-topbar__center { display: flex; align-items: center; justify-content: center; min-width: 0; } .summer-search { display: flex; align-items: center; gap: 10px; width: 100%; max-width: 480px; height: 36px; padding: 0 10px 0 14px; background: var(--summer-surface); border: 1px solid var(--summer-border); border-radius: 999px; color: var(--summer-fg-muted); font-size: var(--summer-text-sm); font-weight: 400; cursor: pointer; text-align: left; transition: border-color var(--summer-fast) var(--summer-ease), background var(--summer-fast) var(--summer-ease), box-shadow var(--summer-fast) var(--summer-ease); } .summer-search:hover, .summer-search:focus-visible { border-color: var(--summer-border-strong); background: var(--summer-bg); color: var(--summer-fg); box-shadow: var(--summer-shadow-sm); } .summer-search__icon { flex-shrink: 0; color: var(--summer-fg-muted); } .summer-search__placeholder { flex: 1; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .summer-search__kbd { display: inline-flex; gap: 2px; flex-shrink: 0; font-size: 12px; line-height: 1; color: var(--summer-fg-muted); } .summer-search__kbd kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 4px; border: 1px solid var(--summer-border); border-radius: 4px; background: var(--summer-bg); font-family: var(--summer-font-sans); font-size: 11px; font-weight: 500; color: var(--summer-fg-muted); } .summer-topbar__right { display: flex; align-items: center; justify-content: flex-end; gap: 2px; color: var(--summer-fg-muted); position: relative; } .summer-topbar__right>.summer-options-menu__item { position: relative; max-height: 36px; overflow: visible; } .summer-topbar__right .summer-options-menu__item>* { max-height: 36px; overflow: visible; } .summer-iconbtn { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: var(--summer-radius-sm); color: var(--summer-fg-soft); background: transparent; border: 1px solid transparent; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease), border-color var(--summer-fast) var(--summer-ease); position: relative; } .summer-iconbtn:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-iconbtn svg { width: 16px; height: 16px; } .summer-topbar__mobile { display: none; align-items: center; gap: 6px; } .summer-subnav { position: sticky; top: var(--summer-topbar-height); z-index: calc(var(--summer-z-sticky) - 1); background: color-mix(in srgb, var(--summer-bg) 88%, transparent); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); } .summer-template.has-menubar .summer-topbar { box-shadow: none; } .summer-template.has-menubar .summer-subnav { box-shadow: var(--summer-header-divider); } .summer-subnav__inner { max-width: var(--summer-page-max); margin: 0 auto; padding: 0 24px; height: var(--summer-subnav-height); display: flex; align-items: center; gap: 0; overflow-x: auto; scrollbar-width: none; } .summer-subnav__inner::-webkit-scrollbar { display: none; } .summer-subnav__tab { position: relative; display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: 999px; color: var(--summer-fg-muted); text-decoration: none; font-size: 0.875rem; font-weight: 400; white-space: nowrap; flex-shrink: 0; letter-spacing: -0.005em; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-subnav__tab:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-subnav__tab.active, .summer-subnav__tab[aria-current="page"] { color: var(--summer-accent); font-weight: 500; } .summer-subnav__tab svg { width: 15px; height: 15px; flex-shrink: 0; } .summer-subnav__tab-chevron { opacity: 0.6; margin-left: 1px; } .summer-subnav__dropdown { position: relative; } .summer-subnav__menu { position: absolute; top: calc(100% + 8px); left: 0; min-width: 200px; padding: 6px; background: var(--summer-surface); border: 1px solid var(--summer-border); border-radius: var(--summer-radius); box-shadow: var(--summer-shadow-lg); opacity: 0; visibility: hidden; transform: translateY(-4px); transition: opacity var(--summer-fast) var(--summer-ease), transform var(--summer-fast) var(--summer-ease), visibility 0s linear var(--summer-fast); z-index: var(--summer-z-overlay); } .summer-subnav__dropdown[data-open="true"] .summer-subnav__menu { opacity: 1; visibility: visible; transform: translateY(0); transition: opacity var(--summer-fast) var(--summer-ease), transform var(--summer-fast) var(--summer-ease), visibility 0s; } .summer-subnav__menuitem { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--summer-radius-sm); color: var(--summer-fg-soft); text-decoration: none; font-size: var(--summer-text-sm); font-weight: 500; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-subnav__menuitem:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-subnav__menuitem-icon { display: inline-flex; color: var(--summer-fg-muted); } .summer-subnav__menuitem-icon svg { width: 15px; height: 15px; } .summer-subnav__menuitem-desc { display: block; font-size: var(--summer-text-xs); font-weight: 400; color: var(--summer-fg-muted); margin-top: 1px; } .summer-subnav__spacer { flex: 1; min-width: 8px; } .summer-subnav__right { display: inline-flex; align-items: center; gap: 4px; } .summer-pageheader { position: sticky; top: calc(var(--summer-topbar-height) + var(--summer-subnav-height) + var(--summer-banner-height)); z-index: calc(var(--summer-z-sticky) - 2); background: color-mix(in srgb, var(--summer-bg) 88%, transparent); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); margin-left: calc(-1 * var(--summer-gutter, 0px)); margin-right: calc(-1 * var(--summer-gutter, 0px)); padding: 20px 10px 5px; } .summer-pageheader__inner { max-width: var(--summer-content-max); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 25px; } .summer-pageheader__meta { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: flex; flex-direction: column; gap: 2px; } .summer-breadcrumbs { font-size: var(--summer-text-sm); color: var(--summer-fg-muted); min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .summer-breadcrumbs__list { display: inline-flex; align-items: center; gap: 4px; list-style: none; margin: 0; padding: 0; } .summer-breadcrumbs__item { display: inline-flex; align-items: center; gap: 4px; } .summer-breadcrumbs__item+.summer-breadcrumbs__item::before { content: ""; display: inline-block; width: 12px; height: 12px; background: currentColor; -webkit-mask: url("data:image/svg+xml;utf8,") no-repeat center / contain; mask: url("data:image/svg+xml;utf8,") no-repeat center / contain; opacity: 0.5; margin-right: 4px; } .summer-breadcrumbs__link { color: var(--summer-fg-muted); text-decoration: none; padding: 2px 4px; border-radius: 4px; transition: color var(--summer-fast) var(--summer-ease); } .summer-breadcrumbs__link:hover { color: var(--summer-fg); } .summer-breadcrumbs__current { color: var(--summer-fg); font-weight: 500; } .summer-copy-widgets { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; } .summer-copy-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 30px; padding: 0 12px; background: transparent; border: 1px solid var(--summer-border); border-radius: 999px; color: var(--summer-fg-soft); font-size: 0.8rem; font-weight: 500; line-height: 1; cursor: pointer; white-space: nowrap; user-select: none; -webkit-user-select: none; transition: all var(--summer-fast) var(--summer-ease); } .summer-copy-btn:hover { background: var(--summer-surface-2); border-color: var(--summer-border-strong); color: var(--summer-fg); } .summer-copy-btn:active { transform: scale(0.97); } .summer-copy-btn.is-copied { background: var(--summer-green-soft); border-color: var(--summer-green); color: var(--summer-green); } .summer-copy-btn svg { width: 13px; height: 13px; flex-shrink: 0; } .summer-copy-btn--icon-only { padding: 0 8px; } .summer-layout { display: grid; grid-template-columns: var(--summer-grid-template); max-width: var(--summer-page-max); margin: 0 auto; gap: 0; padding: 0; position: relative; flex: 1 0 auto; width: 100%; } .summer-template.no-toc .summer-layout { grid-template-columns: var(--summer-sidebar-width) 1fr; } .summer-template.no-sidebar .summer-layout { grid-template-columns: 1fr var(--summer-toc-width); } .summer-template.no-sidebar.no-toc .summer-layout { grid-template-columns: 1fr; } .summer-sidebar { position: sticky; top: calc(var(--summer-topbar-height) + var(--summer-subnav-height) + var(--summer-banner-height) + var(--summer-pageheader-height)); align-self: start; max-height: calc(100vh - var(--summer-topbar-height) - var(--summer-subnav-height) - var(--summer-banner-height) - var(--summer-pageheader-height)); overflow-y: auto; padding: 0 5px; border-right: none; background: var(--summer-bg); } .summer-sidebar::-webkit-scrollbar { width: 6px; } .summer-sidebar::-webkit-scrollbar-track { background: transparent; } .summer-sidebar::-webkit-scrollbar-thumb { background: transparent; border-radius: 3px; } .summer-sidebar:hover::-webkit-scrollbar-thumb { background: var(--summer-border-soft); } .summer-sidebar nav ul { list-style: none; padding: 0; margin: 0; } .summer-sidebar nav>ul { display: flex; flex-direction: column; gap: 2px; } .summer-sidebar nav>ul>li.nav-group>.nav-label, .summer-sidebar nav>ul>li.nav-group>a { display: flex; align-items: center; gap: 8px; padding: 8px 14px; color: var(--summer-fg-muted); font-size: 0.6875rem; /* 11px */ font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; user-select: none; } .summer-sidebar nav>ul>li.nav-group.collapsible>.nav-label, .summer-sidebar nav>ul>li.nav-group.collapsible>a { cursor: pointer; } .summer-sidebar nav>ul>li.nav-group:first-child>.nav-label, .summer-sidebar nav>ul>li.nav-group:first-child>a { margin-top: 0; } .summer-sidebar nav>ul>li.nav-group>.nav-label svg, .summer-sidebar nav>ul>li.nav-group>a svg:not(.nav-external-icon):not(.collapse-icon) { width: 14px; height: 14px; color: var(--summer-fg-muted); flex-shrink: 0; transition: color var(--summer-fast) var(--summer-ease); } .summer-sidebar nav>ul>li.nav-group.collapsible>.nav-label:hover, .summer-sidebar nav>ul>li.nav-group.collapsible>a:hover, .summer-sidebar nav>ul>li.nav-group>.nav-label:hover { color: var(--summer-fg); background: none; } .summer-sidebar nav>ul>li.nav-group.collapsible>.nav-label:hover svg, .summer-sidebar nav>ul>li.nav-group.collapsible>a:hover svg:not(.nav-external-icon):not(.collapse-icon) { color: var(--summer-accent); } .summer-sidebar nav li>a:not(.nav-group), .summer-sidebar nav li:not(.nav-group)>.nav-label, .summer-sidebar nav .submenu li>a, .summer-sidebar nav .submenu li>.nav-label { display: flex; align-items: center; gap: 8px; padding: 6px 8px; margin: 1px 6px; color: var(--summer-fg-soft); font-size: 0.875rem; font-weight: 450; text-decoration: none; border-radius: var(--summer-radius-sm); line-height: 1.4; position: relative; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-sidebar nav li>a:not(.nav-group) svg:not(.nav-external-icon):not(.collapse-icon), .summer-sidebar nav li:not(.nav-group)>.nav-label svg:not(.nav-external-icon):not(.collapse-icon), .summer-sidebar nav .submenu li>a svg:not(.nav-external-icon):not(.collapse-icon), .summer-sidebar nav .submenu li>.nav-label svg:not(.nav-external-icon):not(.collapse-icon) { width: 14px; height: 14px; flex-shrink: 0; color: var(--summer-fg-faint); transition: color var(--summer-fast) var(--summer-ease); } .summer-sidebar nav li>a:hover, .summer-sidebar nav li>.nav-label:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-sidebar nav li>a:hover svg:not(.nav-external-icon):not(.collapse-icon), .summer-sidebar nav li>.nav-label:hover svg:not(.nav-external-icon):not(.collapse-icon) { color: var(--summer-fg-soft); } .summer-sidebar nav>ul>li>a.active, .summer-sidebar nav>ul>li>.nav-label.active { background: transparent; color: var(--summer-accent); font-weight: 500; border-left: 2px solid var(--summer-accent); border-radius: 0; padding-left: 10px; } .summer-sidebar nav .submenu li>a.active, .summer-sidebar nav .submenu li>.nav-label.active { background: transparent; color: var(--summer-accent); font-weight: 500; border-left: none; } .summer-sidebar nav .submenu li>a.active::before, .summer-sidebar nav .submenu li>.nav-label.active::before { content: ""; position: absolute; left: -13px; top: 0; bottom: 0; width: 2px; background: var(--summer-accent); display: block; } .summer-sidebar nav li>a.active:hover, .summer-sidebar nav li>.nav-label.active:hover { background: var(--summer-surface-2); } .summer-sidebar nav li>a.active svg:not(.nav-external-icon):not(.collapse-icon), .summer-sidebar nav li>.nav-label.active svg:not(.nav-external-icon):not(.collapse-icon) { color: var(--summer-accent); } .summer-sidebar nav .collapse-icon-wrapper { display: inline-flex; align-items: center; justify-content: center; margin-left: auto; color: var(--summer-fg-faint); cursor: pointer; padding: 4px 10px; border-radius: 4px; transition: transform var(--summer-med) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-sidebar nav .collapse-icon-wrapper:hover { color: var(--summer-fg-soft); } .summer-sidebar nav .collapse-icon { width: 10px; height: 10px; transform: rotate(90deg); transition: transform var(--summer-med) var(--summer-ease); } .summer-sidebar nav li[aria-expanded="false"]>a .collapse-icon, .summer-sidebar nav li[aria-expanded="false"]>.nav-label .collapse-icon, .summer-sidebar nav li:not(.expanded)>a .collapse-icon, .summer-sidebar nav li:not(.expanded)>.nav-label .collapse-icon { transform: rotate(0deg); } .summer-sidebar .nav-item-title { flex: 1; } .summer-sidebar .nav-external-icon { width: 11px; height: 11px; margin-left: auto; color: var(--summer-fg-faint); } .summer-sidebar nav .submenu { list-style: none; padding: 0; margin: 0; overflow: hidden; max-height: 2000px; transition: max-height var(--summer-slow) var(--summer-ease); border-left: 1px solid var(--summer-border-soft); margin-left: 20px; padding-left: 4px; } .summer-sidebar nav li[aria-expanded="false"]>.submenu, .summer-sidebar nav li:not(.expanded)>.submenu { max-height: 0; } .summer-sidebar__top, .summer-sidebar__bottom { display: flex; flex-direction: column; gap: 6px; padding: 0 10px; margin-bottom: 14px; } .summer-sidebar__bottom { margin-top: 24px; margin-bottom: 0; } .summer-sidebar-widget { width: 100%; } .summer-sidebar-widget .docmd-version-dropdown, .summer-sidebar-widget .docmd-project-switcher, .summer-sidebar-widget .docmd-language-switcher { width: 100%; position: relative; } .summer-sidebar-widget .version-dropdown-toggle, .summer-sidebar-widget .project-switcher-toggle, .summer-sidebar-widget .language-switcher-toggle { display: flex; width: 100%; align-items: center; gap: 8px; height: 32px; padding: 0 12px; background-color: var(--summer-surface); border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius-lg); color: var(--summer-fg-soft); font-size: 0.8rem; font-weight: 500; cursor: pointer; transition: all var(--summer-fast) var(--summer-ease); box-sizing: border-box; text-align: left; } .summer-sidebar-widget .version-dropdown-toggle:hover, .summer-sidebar-widget .project-switcher-toggle:hover, .summer-sidebar-widget .language-switcher-toggle:hover { background-color: var(--summer-surface-2); color: var(--summer-fg); border-color: var(--summer-border); } .summer-sidebar-widget .version-icon, .summer-sidebar-widget .project-icon, .summer-sidebar-widget .language-icon { width: 14px; height: 14px; color: var(--summer-fg-faint); flex-shrink: 0; } .summer-sidebar-widget .version-chevron, .summer-sidebar-widget .project-chevron, .summer-sidebar-widget .language-chevron { width: 12px; height: 12px; margin-left: auto; color: var(--summer-fg-faint); transition: transform var(--summer-med) var(--summer-ease); } /* Open states */ .summer-sidebar-widget .docmd-version-dropdown.open .version-chevron, .summer-sidebar-widget .docmd-project-switcher.open .project-chevron { transform: rotate(180deg); } /* Dropdown menus positioning */ .summer-sidebar-widget .version-dropdown-menu, .summer-sidebar-widget .project-switcher-menu, .summer-sidebar-widget .language-switcher-menu { display: none; position: absolute; left: 0; right: 0; background: var(--summer-bg); border: 1px solid var(--summer-border); border-radius: var(--summer-radius-md); box-shadow: var(--summer-shadow-lg); padding: 4px; margin: 4px 0 0 0; list-style: none; z-index: var(--summer-z-dropdown); max-height: 240px; overflow-y: auto; } .summer-sidebar-widget .docmd-version-dropdown.open .version-dropdown-menu, .summer-sidebar-widget .docmd-project-switcher.open .project-switcher-menu { display: block; } .summer-sidebar-widget .docmd-language-switcher.open .language-switcher-menu { display: block; opacity: 1; visibility: visible; transform: none; } .summer-sidebar__bottom .version-dropdown-menu, .summer-sidebar__bottom .project-switcher-menu, .summer-sidebar__bottom .language-switcher-menu { top: auto; bottom: calc(100% + 4px); margin: 0 0 4px 0; } /* Dropdown items styling */ .summer-sidebar-widget .version-dropdown-item, .summer-sidebar-widget .project-switcher-item, .summer-sidebar-widget .language-switcher-item { display: flex; align-items: center; gap: 8px; padding: 6px 10px; color: var(--summer-fg-soft); font-size: 0.82rem; text-decoration: none; border-radius: var(--summer-radius-sm); transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); cursor: pointer; } .summer-sidebar-widget .version-dropdown-item:hover, .summer-sidebar-widget .project-switcher-item:hover, .summer-sidebar-widget .language-switcher-item:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-sidebar-widget .version-dropdown-item.active, .summer-sidebar-widget .project-switcher-item.active, .summer-sidebar-widget .language-switcher-item.active { background: var(--summer-accent-soft); color: var(--summer-accent); font-weight: 500; } .summer-sidebar-widget .version-check, .summer-sidebar-widget .project-check, .summer-sidebar-widget .language-check { width: 12px; height: 12px; margin-left: auto; color: var(--summer-accent); } .summer-sidebar-widget .version-latest-badge { font-size: 0.65rem; padding: 1px 4px; background: var(--summer-surface-2); border: 1px solid var(--summer-border-soft); border-radius: 4px; color: var(--summer-fg-muted); font-weight: normal; } .summer-topbar__right .docmd-version-dropdown, .summer-topbar__right .docmd-project-switcher, .summer-topbar__right .docmd-language-switcher { position: relative; display: inline-flex; align-items: center; } .summer-topbar__right .version-dropdown-toggle, .summer-topbar__right .project-switcher-toggle, .summer-topbar__right .language-switcher-toggle { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 9px; background: transparent; border: 1px solid transparent; border-radius: 999px; color: var(--summer-fg-soft); font-size: 0.78rem; font-weight: 500; cursor: pointer; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease), border-color var(--summer-fast) var(--summer-ease); white-space: nowrap; } .summer-topbar__right .version-dropdown-toggle:hover, .summer-topbar__right .project-switcher-toggle:hover, .summer-topbar__right .language-switcher-toggle:hover { background: var(--summer-surface-2); color: var(--summer-fg); border-color: var(--summer-border-soft); } .summer-topbar__right .version-chevron, .summer-topbar__right .project-chevron, .summer-topbar__right .language-chevron { width: 12px; height: 12px; color: var(--summer-fg-faint); transition: transform var(--summer-med) var(--summer-ease); margin-left: 1px; } .summer-topbar__right .docmd-version-dropdown.open .version-chevron, .summer-topbar__right .docmd-project-switcher.open .project-chevron, .summer-topbar__right .docmd-language-switcher.open .language-chevron { transform: rotate(180deg); } .summer-topbar__right .version-dropdown-menu, .summer-topbar__right .project-switcher-menu, .summer-topbar__right .language-switcher-menu { display: none; position: absolute; top: calc(100% + 6px); right: 0; min-width: 180px; background: var(--summer-bg); border: 1px solid var(--summer-border); border-radius: var(--summer-radius-md); box-shadow: var(--summer-shadow-lg); padding: 4px; margin: 0; list-style: none; z-index: var(--summer-z-dropdown); max-height: 280px; overflow-y: auto; } .summer-topbar__right .docmd-version-dropdown.open .version-dropdown-menu, .summer-topbar__right .docmd-project-switcher.open .project-switcher-menu, .summer-topbar__right .docmd-language-switcher.open .language-switcher-menu { display: block; } .summer-topbar__right .version-dropdown-item, .summer-topbar__right .project-switcher-item, .summer-topbar__right .language-switcher-item { display: flex; align-items: center; gap: 8px; padding: 6px 10px; color: var(--summer-fg-soft); font-size: 0.82rem; text-decoration: none; border-radius: var(--summer-radius-sm); transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-topbar__right .version-dropdown-item:hover, .summer-topbar__right .project-switcher-item:hover, .summer-topbar__right .language-switcher-item:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-topbar__right .version-dropdown-item.active, .summer-topbar__right .project-switcher-item.active, .summer-topbar__right .language-switcher-item.active { color: var(--summer-accent); font-weight: 500; } .summer-topbar__right .version-check, .summer-topbar__right .project-check, .summer-topbar__right .language-check { width: 12px; height: 12px; margin-left: auto; color: var(--summer-accent); } .summer-topbar__right .version-latest-badge { font-size: 0.65rem; padding: 1px 4px; background: var(--summer-surface-2); border: 1px solid var(--summer-border-soft); border-radius: 4px; color: var(--summer-fg-muted); font-weight: normal; margin-left: auto; } .summer-topbar__right .version-dropdown-item>a, .summer-topbar__right .version-dropdown-item { color: inherit; } /* Sidebar close (mobile) */ .summer-sidebar-close { display: none; position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; align-items: center; justify-content: center; border-radius: var(--summer-radius-sm); color: var(--summer-fg-soft); background: transparent; } .summer-sidebar-close:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .summer-main { min-width: 0; padding: 1rem 2rem 3rem; --summer-gutter: 48px; display: flex; flex-direction: column; flex: 1; min-height: 0; } .summer-content { max-width: var(--summer-content-max); font-size: var(--summer-text-base); line-height: 1.7; color: var(--summer-fg-soft); display: flex; flex-direction: column; flex: 1; min-height: 0; padding: 1em 0; } .summer-content__title { font-size: 2rem; font-weight: 700; color: var(--summer-fg); letter-spacing: -0.03em; line-height: 1.2; margin: 0 0 24px; } .summer-content>*+* { margin-top: 1.1em; } .summer-content h1, .summer-content h2, .summer-content h3, .summer-content h4, .summer-content h5, .summer-content h6 { font-family: var(--summer-font-sans); color: var(--summer-fg); font-weight: 600; line-height: 1.3; scroll-margin-top: calc(var(--summer-topbar-height) + var(--summer-subnav-height) + var(--summer-banner-height) + var(--summer-pageheader-height) + 24px); } .summer-content h1 { font-size: 1.875rem; margin-top: 0; margin-bottom: 0.5em; letter-spacing: -0.03em; font-weight: 700; line-height: 1.25; } .summer-content h2 { font-size: 1.5rem; margin-bottom: 0.5em; font-weight: 600; letter-spacing: -0.025em; line-height: 1.3; } .summer-content h3 { font-size: 1.25rem; margin-bottom: 0.4em; font-weight: 600; letter-spacing: -0.02em; line-height: 1.35; } .summer-content h4 { font-size: 1.0625rem; margin-top: 1.5em; margin-bottom: 0.35em; font-weight: 600; letter-spacing: -0.01em; } .summer-content h5 { font-size: var(--summer-text-base); margin-top: 1.25em; margin-bottom: 0.3em; font-weight: 600; } .summer-content h6 { font-size: var(--summer-text-sm); margin-top: 1em; margin-bottom: 0.3em; color: var(--summer-fg-muted); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 600; } .summer-content p { line-height: inherit; } .summer-content strong { color: var(--summer-fg); font-weight: 600; } .summer-content em { font-style: italic; } .summer-content a { color: var(--summer-fg); text-decoration: underline; text-decoration-color: var(--summer-border-strong); text-decoration-thickness: 1px; text-underline-offset: 3px; transition: text-decoration-color var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-content a:hover { color: var(--summer-accent); text-decoration-color: var(--summer-accent); } /* Lists */ .summer-content ul, .summer-content ol { padding-left: 1.4em; margin: 0 0 1em; } .summer-content ul li::marker { color: var(--summer-fg-muted); } .summer-content ol li::marker { color: var(--summer-fg-soft); font-weight: 600; } .summer-content ul ul, .summer-content ol ol, .summer-content ul ol, .summer-content ol ul { margin: 0.4em 0; } /* Horizontal rule */ .summer-content hr { border: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--summer-border), transparent); margin: 2.5em 0; } /* Heading anchors (clickable # links) */ .summer-content .docmd-heading, .summer-content h1, .summer-content h2, .summer-content h3, .summer-content h4 { position: relative; } .summer-content .heading-anchor { position: absolute; left: -1em; font-size: 1.5rem; display: inline-flex; align-items: center; justify-content: center; width: 1.15rem; height: -webkit-fill-available; opacity: 0; color: var(--summer-fg-faint); vertical-align: middle; transition: opacity var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-content h1:hover .heading-anchor, .summer-content h2:hover .heading-anchor, .summer-content h3:hover .heading-anchor, .summer-content h4:hover .heading-anchor, .summer-content .heading-anchor:focus { opacity: 1; } .summer-content .heading-anchor:hover { color: var(--summer-accent); } .summer-content .heading-anchor svg { width: 100%; height: 100%; } .summer-toc { position: sticky; top: calc(var(--summer-topbar-height) + var(--summer-subnav-height) + var(--summer-banner-height) + var(--summer-pageheader-height)); align-self: start; max-height: calc(100vh - var(--summer-topbar-height) - var(--summer-subnav-height) - var(--summer-banner-height) - var(--summer-pageheader-height)); overflow-y: auto; padding: 0 1rem 3rem; font-size: 0.8125rem; } .summer-toc::-webkit-scrollbar { width: 6px; } .summer-toc::-webkit-scrollbar-track { background: transparent; } .summer-toc::-webkit-scrollbar-thumb { background: var(--summer-border); border-radius: 3px; } .summer-toc__title { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 14px; padding: 0; font-size: 0.8125rem; font-weight: 500; color: var(--summer-fg-muted); } .summer-toc__title svg { color: var(--summer-fg-muted); flex-shrink: 0; } .summer-toc__list { list-style: none; padding: 0; margin: 0; position: relative; } .summer-toc__item { margin: 0; position: relative; } .summer-toc__track { position: absolute; top: 0; inset-inline-start: 0; pointer-events: none; z-index: 0; } .summer-toc__track-full { position: absolute; top: 0; left: 0; color: var(--summer-border); } .summer-toc__track-full path { stroke: currentColor; stroke-width: 1; fill: none; } .summer-toc__track-active { position: absolute; top: 0; left: 0; color: var(--summer-accent); transition: clip-path 160ms cubic-bezier(0.32, 0.72, 0, 1); } .summer-toc__track-active path { stroke: currentColor; stroke-width: 1.5; fill: none; } .summer-toc__link { display: block; padding: 5px 0 5px 20px; color: var(--summer-fg-muted); text-decoration: none; font-size: 0.8rem; font-weight: 400; line-height: 1.5; transition: color var(--summer-fast) var(--summer-ease); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; position: relative; z-index: 1; } .summer-toc__link:hover { color: var(--summer-fg); } .summer-toc__link.active { color: var(--summer-accent); font-weight: 500; } .summer-toc__item--level-1 .summer-toc__link { padding-left: 20px; } .summer-toc__item--level-2 .summer-toc__link { padding-left: 30px; } .summer-toc__item--level-3 .summer-toc__link { padding-left: 40px; } .summer-toc__item--level-4 .summer-toc__link { padding-left: 50px; } /* TOC scroll-to-top button */ .summer-totop { position: fixed; right: 30px; bottom: 60px; width: 40px; height: 40px; border-radius: 50%; background: var(--summer-accent); color: #fff; display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--summer-shadow-lg); opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity var(--summer-med) var(--summer-ease), transform var(--summer-med) var(--summer-ease); z-index: var(--summer-z-overlay); } .summer-totop.is-visible { opacity: 1; transform: translateY(0); pointer-events: auto; } .summer-totop:hover { background: var(--summer-accent-hover); } .summer-totop svg { width: 18px; height: 18px; } .summer-pagenav { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-top: auto; padding-top: 24px; border-top: 1px solid var(--summer-border-soft); } .summer-pagenav__link { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius); background: var(--summer-surface); color: var(--summer-fg-soft); text-decoration: none; transition: all var(--summer-fast) var(--summer-ease); min-height: 64px; min-width: 75%; overflow: hidden; width: fit-content; max-width: 100%; } .summer-pagenav__link:hover { border-color: var(--summer-accent); background: var(--summer-accent-soft); color: var(--summer-fg); box-shadow: var(--summer-shadow-sm); } .summer-pagenav__link--next { justify-content: flex-end; text-align: right; justify-self: end; } .summer-pagenav__link--prev { justify-self: start; } .summer-pagenav__link--disabled { opacity: 0.4; pointer-events: none; background: transparent; } .summer-pagenav__icon { flex-shrink: 0; width: 18px; height: 18px; color: var(--summer-accent); transition: transform var(--summer-fast) var(--summer-ease); } .summer-pagenav__link--prev:hover .summer-pagenav__icon { transform: translateX(-3px); } .summer-pagenav__link--next:hover .summer-pagenav__icon { transform: translateX(3px); } .summer-pagenav__label { display: flex; flex-direction: column; min-width: 0; } .summer-pagenav__small { font-size: var(--summer-text-xs); color: var(--summer-fg-muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 500; } .summer-pagenav__title { font-size: var(--summer-text-sm); font-weight: 600; color: var(--summer-fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; } .summer-pagefooter { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 32px; padding: 16px 0; border-top: 1px solid var(--summer-border-soft); font-size: var(--summer-text-sm); color: var(--summer-fg-muted); } .summer-pagefooter a { display: inline-flex; align-items: center; gap: 6px; color: var(--summer-fg-soft); text-decoration: none; font-weight: 500; transition: color var(--summer-fast) var(--summer-ease); } .summer-pagefooter a:hover { color: var(--summer-accent); } .summer-pagefooter a svg { width: 14px; height: 14px; } .summer-pagefooter__time { display: inline-flex; align-items: center; gap: 6px; } .summer-pagefooter__time svg { width: 14px; height: 14px; color: var(--summer-fg-faint); } .summer-content :not(pre)>code { display: inline-block; padding: 1px 6px; background: var(--summer-surface-3); border: 1px solid var(--summer-border); border-radius: 5px; font-family: var(--summer-font-mono); font-size: 0.85em; color: var(--summer-fg); font-weight: 500; white-space: nowrap; line-height: 1.4; } html[data-theme="dark"] .summer-content :not(pre)>code { color: #f5c089; background: rgba(255, 138, 92, 0.10); border-color: rgba(255, 138, 92, 0.20); } .code-wrapper, .docmd-code-block-wrapper { position: relative; margin: 1.4em 0; background: var(--summer-surface-2); border: 1px solid var(--summer-border); border-radius: var(--summer-radius); overflow: hidden; box-shadow: var(--summer-shadow-xs); } html[data-theme="dark"] .code-wrapper, html[data-theme="dark"] .docmd-code-block-wrapper { background: #100e0b; } .summer-cb__titlebar, .docmd-code-block-header.summer-cb__titlebar, .docmd-code-block-wrapper>.docmd-code-block-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 36px; padding: 7px 10px 7px 14px; border-bottom: 1px solid var(--summer-border); background: var(--summer-bg-subtle); font-size: var(--summer-text-xs); color: var(--summer-fg-muted); font-family: var(--summer-font-mono); } html[data-theme="dark"] .summer-cb__titlebar, html[data-theme="dark"] .docmd-code-block-header.summer-cb__titlebar, html[data-theme="dark"] .docmd-code-block-wrapper>.docmd-code-block-header { border-bottom-color: rgba(255, 255, 255, 0.06); background: rgba(255, 255, 255, 0.025); color: #c8bfae; } .summer-cb__left { display: inline-flex; align-items: center; gap: 8px; min-width: 0; overflow: hidden; } .summer-cb__left>svg { width: 13px; height: 13px; flex-shrink: 0; color: var(--summer-fg-muted); } .summer-cb__filename { font-weight: 400; font-size: var(--summer-text-xs); color: var(--summer-fg-soft); letter-spacing: -0.005em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .docmd-code-block-title { font-weight: 400; font-size: var(--summer-text-xs); color: var(--summer-fg-soft); letter-spacing: -0.005em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .summer-cb__lang { display: inline-flex; padding: 1px 7px; border-radius: 4px; background: var(--summer-surface-3); color: var(--summer-fg-soft); font-size: 0.66rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; flex-shrink: 0; line-height: 1.5; } .summer-cb__copy, .copy-code-button.summer-cb__copy { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; background: transparent; border: 1px solid transparent; border-radius: var(--summer-radius-sm); color: var(--summer-fg-muted); font-size: var(--summer-text-xs); font-weight: 500; font-family: var(--summer-font-sans); cursor: pointer; opacity: 1; transition: all var(--summer-fast) var(--summer-ease); flex-shrink: 0; } .summer-cb__copy:hover, .copy-code-button.summer-cb__copy:hover { background: var(--summer-surface); border-color: var(--summer-border); color: var(--summer-fg); } html[data-theme="dark"] .summer-cb__copy, html[data-theme="dark"] .copy-code-button.summer-cb__copy { color: #8a8170; } html[data-theme="dark"] .summer-cb__copy:hover, html[data-theme="dark"] .copy-code-button.summer-cb__copy:hover { background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.08); color: #f5efe0; } .summer-cb__copy.copied, .copy-code-button.summer-cb__copy.copied { background: var(--summer-green-soft); border-color: var(--summer-green); color: var(--summer-green); } .code-wrapper>pre, .docmd-code-block-wrapper>pre, .docmd-code-block-wrapper>.code-wrapper>pre { margin: 0; padding: 16px 18px; background: transparent; border: 0; border-radius: 0; font-family: var(--summer-font-mono); font-size: 0.84rem; line-height: 1.65; color: var(--summer-fg); overflow-x: auto; } .docmd-code-block-wrapper>.code-wrapper { background: transparent; border: 0; border-radius: 0; box-shadow: none; margin: 0; padding: 0; overflow: visible; } .code-wrapper>pre code, .docmd-code-block-wrapper>pre code, .docmd-code-block-wrapper>.code-wrapper>pre code { color: inherit; } .summer-content>pre:not([class*="code-"]) { margin: 1.4em 0; padding: 16px 18px; background: var(--summer-surface-2); border: 1px solid var(--summer-border); border-radius: var(--summer-radius); font-family: var(--summer-font-mono); font-size: 0.84rem; line-height: 1.65; color: var(--summer-fg); overflow-x: auto; box-shadow: var(--summer-shadow-sm); } html[data-theme="dark"] .summer-content>pre:not([class*="code-"]) { background: #0f0d0a; color: #e7dfcf; } /* Tables */ .summer-content table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 1.4em 0; font-size: 0.9rem; border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius); overflow: hidden; } .summer-content th, .summer-content td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--summer-border-soft); } .summer-content th { background: var(--summer-surface-2); font-weight: 600; color: var(--summer-fg); font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.04em; } .summer-content tr:last-child td { border-bottom: 0; } .summer-content tr:hover td { background: var(--summer-surface-2); } .summer-content blockquote { margin: 1.4em 0; padding: 14px 18px; background: var(--summer-accent-soft); border-left: 4px solid var(--summer-accent); border-radius: 0 var(--summer-radius) var(--summer-radius) 0; color: var(--summer-fg); font-style: normal; } .summer-content blockquote> :first-child { margin-top: 0; } .summer-content blockquote> :last-child { margin-bottom: 0; } .summer-content blockquote p { margin: 0.5em 0; } .summer-content .callout, .summer-content details[class*="callout"], .summer-content .markdown-alert { margin: 1.6em 0; padding: 16px 20px; border-radius: var(--summer-radius); border: 1px solid var(--summer-border-soft); border-left-width: 4px; } .summer-content .callout-note, .summer-content .markdown-alert-note { background: var(--summer-sky-soft); border-color: color-mix(in srgb, var(--summer-sky) 20%, var(--summer-border-soft)); border-left-color: var(--summer-sky); } .summer-content .callout-tip, .summer-content .markdown-alert-tip { background: var(--summer-green-soft); border-color: color-mix(in srgb, var(--summer-green) 20%, var(--summer-border-soft)); border-left-color: var(--summer-green); } .summer-content .callout-warn, .summer-content .markdown-alert-warning { background: var(--summer-amber-soft); border-color: color-mix(in srgb, var(--summer-amber) 25%, var(--summer-border-soft)); border-left-color: var(--summer-amber); } .summer-content .callout-danger, .summer-content .markdown-alert-caution { background: rgba(244, 63, 94, 0.06); border-color: color-mix(in srgb, var(--summer-rose) 20%, var(--summer-border-soft)); border-left-color: var(--summer-rose); } html[data-theme="dark"] .summer-content .callout-danger, html[data-theme="dark"] .summer-content .markdown-alert-caution { background: #2a0e10; } .summer-content img { max-width: 100%; height: auto; border-radius: var(--summer-radius); margin: 1em 0; box-shadow: var(--summer-shadow-sm); } .summer-content figure { margin: 1.4em 0; } .summer-content figcaption { text-align: center; color: var(--summer-fg-muted); font-size: var(--summer-text-sm); margin-top: 8px; } /* Keyboard keys (kbd) */ .summer-content kbd { display: inline-block; padding: 1px 6px; font: 12px/1.6 var(--summer-font-mono); color: var(--summer-fg-soft); background: var(--summer-surface); border: 1px solid var(--summer-border); border-bottom-width: 2px; border-radius: 4px; box-shadow: 0 1px 0 var(--summer-border-soft); } .summer-content mark { background: var(--summer-amber-soft); color: var(--summer-fg); padding: 0 3px; border-radius: 3px; } .summer-footer { margin-top: auto; padding: 24px 0; border-top: 1px solid var(--summer-border-soft); background: var(--summer-bg-subtle); flex-shrink: 0; } .summer-footer__inner { max-width: var(--summer-page-max); margin: 0 auto; padding: 0 32px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; font-size: var(--summer-text-sm); color: var(--summer-fg-muted); } .summer-footer__user { max-width: 100%; } .summer-footer__branding { display: inline-flex; align-items: center; gap: 5px; color: var(--summer-fg-muted); } .summer-footer__branding a { color: var(--summer-fg-soft); font-weight: 600; text-decoration: none; } .summer-footer__branding a:hover { color: var(--summer-accent); } .summer-footer__branding svg { width: 16px; height: 16px; color: var(--summer-accent); } .summer-footer__sep { margin: 0 4px; opacity: 0.4; } .summer-footer__sponsor { display: inline-flex; align-items: center; gap: 4px; } .summer-footer__sponsor svg { width: 14px; height: 14px; color: var(--summer-accent); } /* Complete footer (multi-column) */ .summer-footer.summer-footer--complete { padding: 56px 0 24px; border-top: 1px solid var(--summer-border-soft); } .summer-footer__top { max-width: var(--summer-page-max); margin: 0 auto; padding: 0 32px 36px; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 40px; align-items: start; } @media (max-width: 900px) { .summer-footer__top { grid-template-columns: 1fr 1fr; gap: 32px; } } @media (max-width: 540px) { .summer-footer__top { grid-template-columns: 1fr; gap: 28px; } } /* Brand column */ .summer-footer__brand { display: flex; flex-direction: column; gap: 14px; max-width: 320px; } .summer-footer__brand-logo { display: flex; align-items: center; gap: 10px; margin-bottom: 2px; } .summer-footer__brand-logo img { max-height: 28px; width: auto; } .summer-footer__desc { color: var(--summer-fg-muted); font-size: var(--summer-text-sm); line-height: 1.6; margin: 0; } /* Link columns */ .summer-footer__col { display: flex; flex-direction: column; gap: 10px; } .summer-footer__col-title { font-size: var(--summer-text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.1em; color: var(--summer-fg); margin: 0 0 4px; } .summer-footer__col ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 7px; } .summer-footer__col li { margin: 0; } .summer-footer__col a { display: inline-flex; align-items: center; gap: 5px; color: var(--summer-fg-muted); font-size: var(--summer-text-sm); text-decoration: none; transition: color var(--summer-fast) var(--summer-ease); } .summer-footer__col a:hover { color: var(--summer-accent); } .summer-footer__col a[target="_blank"]::after { content: "↗"; font-size: 0.75em; opacity: 0; margin-left: -1px; transition: opacity var(--summer-fast) var(--summer-ease), margin-left var(--summer-fast) var(--summer-ease); } .summer-footer__col a[target="_blank"]:hover::after { opacity: 0.7; margin-left: 1px; } .summer-footer.summer-footer--complete .summer-footer__inner { border-top: 1px solid var(--summer-border-soft); padding-top: 18px; margin-top: 0; } .summer-banner { position: relative; z-index: calc(var(--summer-z-sticky) + 1); background: linear-gradient(90deg, var(--summer-accent-soft), var(--summer-amber-soft)); border-bottom: 1px solid var(--summer-border-soft); color: var(--summer-fg); font-size: var(--summer-text-sm); } .summer-banner__inner { max-width: var(--summer-page-max); margin: 0 auto; padding: 10px 28px; display: flex; align-items: center; gap: 12px; justify-content: center; } .summer-banner a { color: var(--summer-accent); font-weight: 600; } .summer-banner__close { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; color: var(--summer-fg-soft); border-radius: 4px; } .summer-banner__close:hover { background: var(--summer-surface); color: var(--summer-fg); } @media (max-width: 1280px) { :root { --summer-sidebar-width: 256px; --summer-toc-width: 220px; } .summer-main { --summer-gutter: 32px; } .summer-topbar__inner { padding: 0 20px; gap: 16px; } .summer-subnav__inner { padding: 0 20px; } .summer-footer__inner, .summer-footer__top, .summer-banner__inner { padding-left: 20px; padding-right: 20px; } } @media (max-width: 1100px) { :root { --summer-grid-template: var(--summer-sidebar-width) 1fr; } .summer-toc { display: none; } } @media (max-width: 900px) { .summer-topbar { position: static; } .summer-topbar__inner { grid-template-columns: 1fr auto; padding: 0 16px; gap: 12px; } .summer-topbar__center { display: none; } .summer-topbar__mobile { display: inline-flex; } .summer-subnav { position: static; } .summer-subnav__inner { padding: 0 16px; } :root { --summer-grid-template: 1fr; } .summer-sidebar { position: fixed; top: 0; left: 0; z-index: var(--summer-z-overlay); width: 84vw; max-width: 320px; height: 100vh; border-right: 1px solid var(--summer-border); background: var(--summer-bg); transform: translateX(-100%); transition: transform var(--summer-med) var(--summer-ease); box-shadow: var(--summer-shadow-xl); padding-top: 48px; display: flex; flex-direction: column; overflow: hidden; } .summer-sidebar>nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; margin: 0 5px; } .summer-sidebar__bottom { margin-top: auto; } body.summer-sidebar-open .summer-sidebar { transform: translateX(0); } body.summer-sidebar-open::after { content: ""; position: fixed; inset: 0; background: rgba(0, 0, 0, 0.5); z-index: calc(var(--summer-z-overlay) - 1); backdrop-filter: blur(2px); } .summer-sidebar-close { display: inline-flex; } .summer-pageheader { position: static; } .summer-main { padding: 0 20px 40px; --summer-gutter: 20px; } .summer-content { font-size: 1rem; } .summer-content h1 { font-size: 1.75rem; } .summer-content h2 { font-size: 1.45rem; } .summer-content h3 { font-size: 1.25rem; } .summer-pagenav { grid-template-columns: minmax(0, 1fr); } .summer-pagenav__link--next { text-align: left; justify-content: flex-start; } .summer-pagenav__link--next .summer-pagenav__icon { order: -1; } .summer-pagenav.no-prev .summer-pagenav__link--next, .summer-pagenav.no-next .summer-pagenav__link--prev { grid-column: auto; justify-self: stretch; max-width: none; } .summer-totop { right: 16px; bottom: 16px; } } @media (max-width: 600px) { .summer-topbar__right .summer-iconbtn[aria-label="GitHub"], .summer-topbar__right .summer-iconbtn[aria-label="Sponsor"], .summer-topbar__right .summer-options-menu__item:not(:last-of-type) { display: none; } } @media (max-width: 480px) { .summer-topbar__inner { padding: 0 12px; } .summer-topbar__logo { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .summer-logo--text span:last-child { display: none; } .summer-logo--text .summer-logo__icon { width: 26px; height: 26px; font-size: 0.9rem; } } .summer-template.no-sidebar .summer-sidebar { display: none; } .summer-template.no-toc .summer-toc { display: none; } .summer-template.no-header .summer-pageheader { display: none; } .summer-pagenav.no-prev .summer-pagenav__link--next { grid-column: 2; justify-self: end; max-width: 380px; } .summer-pagenav.no-next .summer-pagenav__link--prev { grid-column: 1; justify-self: start; max-width: 380px; } .summer-content a.btn, .summer-content .docmd-btn, .summer-content .btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 14px; border-radius: var(--summer-radius-sm); background: var(--summer-surface-2); border: 1px solid var(--summer-border); color: var(--summer-fg); font-size: 0.85rem; font-weight: 500; text-decoration: none; line-height: 1.4; transition: background var(--summer-fast) var(--summer-ease), border-color var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-content a.btn:hover, .summer-content .docmd-btn:hover, .summer-content .btn:hover { background: var(--summer-surface-3); border-color: var(--summer-border-strong); color: var(--summer-fg); } .summer-content a.btn--primary, .summer-content .docmd-btn--primary, .summer-content .btn--primary, .summer-content a.btn.color\:blue, .summer-content a.btn[data-color="blue"] { background: var(--summer-accent); border-color: var(--summer-accent); color: #fff; } .summer-content a.btn--primary:hover, .summer-content .docmd-btn--primary:hover, .summer-content .btn--primary:hover { background: var(--summer-accent-hover); border-color: var(--summer-accent-hover); } .summer-content img { max-width: 100%; height: auto; border-radius: var(--summer-radius-lg); } .summer-content img.with-border { border: 1px solid var(--summer-border); box-shadow: var(--summer-shadow-sm); } .summer-content .docmd-card, .summer-content .docmd-container.card { background: var(--summer-surface); border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius); padding: 20px; margin: 1rem 0; transition: border-color var(--summer-fast) var(--summer-ease), background var(--summer-fast) var(--summer-ease); } .grids .summer-content .docmd-card{ height: stretch; } .summer-content .docmd-card:hover, .summer-content .docmd-container.card:hover { border-color: var(--summer-border); } .summer-content .docmd-card .card-title, .summer-content .docmd-container.card .card-title { font-weight: 600; font-size: 1rem; color: var(--summer-fg); margin-bottom: 6px; display: flex; align-items: center; gap: 8px; } .summer-content ul, .summer-content ol { margin: 0.75em 0; padding-left: 1.4em; } .summer-pagefooter__time { position: relative; cursor: default; outline: none; border-radius: var(--summer-radius-sm); transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .summer-pagefooter__time.has-commits { cursor: pointer; } .summer-pagefooter__time.has-commits:hover, .summer-pagefooter__time.has-commits:focus { color: var(--summer-fg); } .summer-git-popover { position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%) translateY(4px); min-width: 320px; max-width: 380px; background: var(--summer-bg); border: 1px solid var(--summer-border); border-radius: var(--summer-radius-lg); box-shadow: var(--summer-shadow-lg); padding: 10px 12px 8px; z-index: var(--summer-z-dropdown); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity var(--summer-fast) var(--summer-ease), transform var(--summer-fast) var(--summer-ease), visibility 0s linear var(--summer-fast); } .summer-pagefooter__time.has-commits:hover .summer-git-popover, .summer-pagefooter__time.has-commits:focus .summer-git-popover, .summer-pagefooter__time.has-commits.open .summer-git-popover { opacity: 1; visibility: visible; pointer-events: auto; transform: translateX(-50%) translateY(0); transition: opacity var(--summer-fast) var(--summer-ease), transform var(--summer-fast) var(--summer-ease), visibility 0s; } .summer-git-popover__title { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--summer-fg-muted); margin-bottom: 6px; padding-bottom: 6px; border-bottom: 1px solid var(--summer-border-soft); } .summer-git-popover__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; max-height: 240px; overflow-y: auto; } .summer-git-popover__item { display: flex; gap: 8px; align-items: flex-start; font-size: 0.78rem; } .summer-git-popover__avatar { width: 24px; height: 24px; border-radius: 50%; background: var(--summer-surface-2); color: var(--summer-fg-soft); font-size: 0.65rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; overflow: hidden; flex-shrink: 0; } .summer-git-popover__avatar img { width: 100%; height: 100%; object-fit: cover; } .summer-git-popover__details { min-width: 0; flex: 1; } .summer-git-popover__msg { color: var(--summer-fg); line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .summer-git-popover__meta { display: flex; gap: 8px; font-size: 0.7rem; color: var(--summer-fg-muted); margin-top: 1px; } .summer-git-popover__author { font-weight: 500; } /* Print styles */ @media print { .summer-topbar, .summer-subnav, .summer-sidebar, .summer-toc, .summer-pagenav, .summer-pagefooter, .summer-footer, .summer-banner, .summer-copy-widgets, .summer-totop, .summer-cb__copy, .copy-code-button { display: none !important; } .summer-main { padding: 0; max-width: 100%; } .summer-content { color: #000; max-width: 100%; } .summer-content pre, .summer-content table { page-break-inside: avoid; } .summer-content h1, .summer-content h2, .summer-content h3 { page-break-after: avoid; } } .summer-content a.docmd-button, .summer-content .docmd-button { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; margin: 4px; border-radius: var(--summer-radius-sm); background: var(--summer-accent); color: #fff; font-size: 0.85rem; font-weight: 500; text-decoration: none; border: 1px solid var(--summer-accent); cursor: pointer; transition: filter var(--summer-fast) var(--summer-ease), transform var(--summer-fast) var(--summer-ease); vertical-align: middle; line-height: 1.4; width: fit-content; } .summer-content a.docmd-button:hover, .summer-content .docmd-button:hover { filter: brightness(1.08); transform: translateY(-1px); color: #fff; } .summer-content .docmd-button .button-icon { width: 1em; height: 1em; flex-shrink: 0; } .summer-content .docmd-tag { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; font-size: 0.78em; font-weight: 500; line-height: 1.3; border: 1px solid var(--summer-border-soft); background: var(--summer-surface); color: var(--summer-fg-soft); margin: 0 2px; vertical-align: middle; transition: filter var(--summer-fast) var(--summer-ease); } .summer-content a.docmd-tag-link .docmd-tag:hover { filter: brightness(1.08); } .summer-content .docmd-tag .tag-icon { display: inline-block; margin-right: 4px; } .summer-content .docmd-embed { display: block; margin: 1.5rem auto; border-radius: var(--summer-radius-md); max-width: 100%; } .summer-content iframe.docmd-embed { width: 100%; aspect-ratio: 16 / 9; border: none !important; } .summer-content iframe.docmd-embed[data-short="true"] { aspect-ratio: 9 / 16; max-width: 400px; } .summer-content blockquote.docmd-embed { border-left: 3px solid var(--summer-border-strong); padding: 8px 14px; background: var(--summer-surface); } .summer-content .docmd-embed-fallback { margin: 1.5rem 0; display: flex; } .summer-content .docmd-tabs-nav::-webkit-scrollbar { display: none; } .summer-content .docmd-tabs-nav-item:hover { color: var(--summer-fg); } .summer-content .docmd-tab-pane { display: none; } .summer-content .docmd-tab-pane.active { display: block; } .summer-content .docmd-container.grids { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin: 1.5rem 0; } .summer-content .docmd-container.grid-item { display: flex; flex-direction: column; align-items: stretch; width: 100%; transition: border-color var(--summer-fast) var(--summer-ease); } .summer-content .docmd-container.grid-item:hover { border-color: var(--summer-border); } .summer-content .docmd-hero { position: relative; width: 100%; margin: 2rem 0; padding: 2.5rem 0; display: flex; flex-direction: column; border-radius: var(--summer-radius-md); } .summer-content .docmd-hero.hero-glow::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; height: 80%; background: radial-gradient(circle, var(--summer-accent) 0%, transparent 70%); opacity: 0.1; filter: blur(80px); z-index: -1; pointer-events: none; } .summer-content .docmd-hero.hero-banner { text-align: center; align-items: center; } .summer-content .docmd-hero.hero-banner>* { max-width: 760px; } .summer-content .docmd-hero.hero-split { display: flex; flex-direction: row; align-items: center; gap: 2rem; text-align: left; } .summer-content .docmd-hero.hero-split>* { flex: 1 1 0; min-width: 0; } .summer-content .docmd-hero h1 { font-size: 2.25rem; margin: 0 0 0.5rem; } .summer-content .docmd-hero p { margin: 0.3em 0; color: var(--summer-fg-soft); } .summer-content .docmd-container.changelog-timeline { position: relative; padding-left: 1rem; margin: 1.5rem 0; background: transparent; border: none; box-shadow: none; } .summer-content .docmd-container.changelog-timeline::before { content: ""; position: absolute; top: 0.5rem; bottom: 1.5rem; left: 16px; width: 2px; background: linear-gradient(to bottom, transparent 0%, var(--summer-border) 3%, var(--summer-border) 90%, transparent 100%); pointer-events: none; z-index: 0; } .summer-content .changelog-entry { position: relative; padding-left: 22px; margin-bottom: 1.25rem; display: block; } .summer-content .changelog-entry::after { content: ""; position: absolute; left: -4px; top: 0.55rem; width: 10px; height: 10px; background: var(--summer-bg); border: 2px solid var(--summer-border); border-radius: 50%; z-index: 2; transition: transform var(--summer-fast) var(--summer-ease), border-color var(--summer-fast) var(--summer-ease), background var(--summer-fast) var(--summer-ease); } .summer-content .changelog-entry:hover::after { transform: scale(1.3); border-color: var(--summer-accent); background: var(--summer-accent); } .summer-content .changelog-date { display: inline-block; background: var(--summer-accent-soft); color: var(--summer-accent); padding: 2px 10px; border-radius: 6px; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 4px; } .summer-content .changelog-body { padding-bottom: 0.4rem; } .summer-content .changelog-body> :first-child { margin-top: 0; } .summer-content img.align-left { float: left; margin: 0.2rem 1.25rem 0.5rem 0; max-width: 50%; } .summer-content img.align-right { float: right; margin: 0.2rem 0 0.5rem 1.25rem; max-width: 50%; } .summer-content img.align-center { display: block; margin-left: auto; margin-right: auto; } .summer-content img.size-small { max-width: 300px; } .summer-content img.size-medium { max-width: 500px; } .summer-content img.size-large { max-width: 800px; } .summer-content img.with-shadow { box-shadow: var(--summer-shadow); } .summer-content .docmd-container figure { margin: 1.5rem 0; text-align: center; } .summer-content .docmd-container figcaption { font-size: 0.85rem; color: var(--summer-fg-muted); padding: 6px 10px; margin-top: 4px; background: var(--summer-surface); border-radius: 0 0 var(--summer-radius-sm) var(--summer-radius-sm); display: inline-block; } /* Steps Container */ .steps-list { counter-reset: step-counter; list-style: none; padding-left: 0 !important; margin-left: 0 !important; position: relative; } .step-item { counter-increment: step-counter; position: relative; padding-left: 48px !important; margin-top: 1.5rem; margin-bottom: 2rem; list-style: none !important; min-height: 36px; align-content: center; } .step-item::before { content: counter(step-counter); position: absolute; left: 0; top: 2px; width: 32px; height: 32px; border-radius: 50%; background: var(--summer-surface-2); border: 1.5px solid var(--summer-border); color: var(--summer-fg); font-size: 0.9rem; font-weight: 800; display: flex; align-items: center; justify-content: center; z-index: 1; box-shadow: var(--summer-shadow-xs); transition: all var(--summer-slow) var(--summer-ease); } .step-item:hover::before { border-color: var(--summer-accent); color: var(--summer-accent); } .step-item::after { content: ""; position: absolute; left: 15px; top: 32px; bottom: -36px; width: 2px; background: var(--summer-accent-faint); z-index: 0; } .step-item:last-child::after { display: none; } .docmd-container.steps-reset ol.steps-list>li.step-item .step-permalink { position: absolute; right: 0; width: 1.5rem; height: 1.5rem; display: inline-flex; align-items: center; justify-content: center; color: var(--summer-fg-muted); opacity: 0; text-decoration: none !important; border-radius: 4px; transition: opacity var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease), background-color var(--summer-fast) var(--summer-ease); z-index: 2; } .docmd-container.steps-reset ol.steps-list>li.step-item .step-permalink svg { width: 0.85em; height: 0.85em; } .docmd-container.steps-reset ol.steps-list>li.step-item:hover .step-permalink, .docmd-container.steps-reset ol.steps-list>li.step-item .step-permalink:focus-visible { opacity: 1; } .docmd-container.steps-reset ol.steps-list>li.step-item .step-permalink:hover, .docmd-container.steps-reset ol.steps-list>li.step-item .step-permalink:focus-visible { color: var(--summer-accent); background-color: var(--summer-surface-2); } .docmd-container.steps-reset ol.steps-list>li.step-item { scroll-margin-top: calc(var(--summer-topbar-height) + var(--summer-subnav-height) + var(--summer-banner-height) + var(--summer-pageheader-height) + 24px); } /* Changelog Container */ .changelog-entry { position: relative; margin-bottom: 2.5rem; } .changelog-meta { margin-bottom: 0.5rem; } .changelog-date { font-size: 0.85rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--summer-accent); position: relative; padding-right: 1.75rem; } .changelog-body { font-size: 1rem; color: var(--summer-fg-soft); } .changelog-body> :first-child { margin-top: 0; } /* Tabs Container */ .docmd-tabs { margin: 1.8rem 0; border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius-lg); overflow: hidden; background: var(--summer-bg); box-shadow: var(--summer-shadow-xs); } .docmd-tabs-nav { display: flex; background: var(--summer-surface-subtle, var(--summer-bg-subtle)); border-bottom: 1px solid var(--summer-border-soft); overflow-x: auto; scrollbar-width: none; } .docmd-tabs-nav::-webkit-scrollbar { display: none; } .docmd-tabs-nav-item { display: flex; align-items: center; gap: 8px; padding: 8px 20px; cursor: pointer; font-size: 0.875rem; font-weight: 500; color: var(--summer-fg-soft); border-bottom: 2px solid transparent; transition: all var(--summer-fast) var(--summer-ease); user-select: none; } .docmd-tabs-nav-item:hover { color: var(--summer-fg); background: rgba(0, 0, 0, 0.02); } html[data-theme="dark"] .docmd-tabs-nav-item:hover { background: rgba(255, 255, 255, 0.02); } .docmd-tabs-nav-item.active { color: var(--summer-accent); border-bottom-color: var(--summer-accent); background: var(--summer-bg); font-weight: 600; } .docmd-tabs-content { padding: 20px; } .docmd-tab-pane { display: none; } .docmd-tab-pane.active { display: block; } /* Cards Container */ .docmd-container.card { margin: 1.5rem 0; border: 1px solid var(--summer-border-soft); border-radius: var(--summer-radius-lg); padding: 24px; background: var(--summer-bg); box-shadow: var(--summer-shadow-xs); transition: all var(--summer-med) var(--summer-ease); } .docmd-container.card:hover { transform: translateY(-2px); border-color: var(--summer-accent-hover, var(--summer-accent)); box-shadow: var(--summer-shadow); } .docmd-container.card .card-title { display: flex; align-items: center; gap: 10px; font-size: 1.125rem; font-weight: 600; color: var(--summer-fg); margin-bottom: 12px; } .docmd-container.card .card-title svg { width: 20px; height: 20px; color: var(--summer-accent); flex-shrink: 0; } .docmd-container.card .card-content { font-size: 0.95rem; color: var(--summer-fg-soft); line-height: 1.6; } /* Details / Collapsible Container */ .docmd-container.collapsible { margin: 1.2rem 0; border: 1px solid var(--summer-border); border-radius: var(--summer-radius-lg); background: var(--summer-bg); overflow: hidden; box-shadow: var(--summer-shadow-xs); transition: border-color var(--summer-fast) var(--summer-ease); } .docmd-container.collapsible:hover { border-color: var(--summer-accent); } .collapsible-summary { display: flex; align-items: center; justify-content: space-between; padding: 6px 14px; font-weight: 600; color: var(--summer-fg); cursor: pointer; user-select: none; background: var(--summer-surface-2); list-style: none !important; } .collapsible-summary::-webkit-details-marker { display: none !important; } .collapsible-title { display: flex; align-items: center; gap: 8px; font-size: 0.95rem; } .collapsible-title svg { width: 16px; height: 16px; color: var(--summer-accent); flex-shrink: 0; } .collapsible-arrow { display: inline-flex; color: var(--summer-fg-muted); transition: transform var(--summer-med) var(--summer-ease); } .collapsible-arrow svg { width: 16px; height: 16px; } .docmd-container.collapsible[open] .collapsible-arrow { transform: rotate(180deg); } .collapsible-content { padding: 18px; border-top: 1px solid var(--summer-border-soft); font-size: 0.975rem; color: var(--summer-fg-soft); line-height: 1.6; background: var(--summer-bg); } .docmd-search-modal { position: fixed !important; top: -9999px !important; left: -9999px !important; pointer-events: none !important; visibility: hidden !important; opacity: 0 !important; } /* When legitimately open (fallback), restore */ .docmd-search-modal[style*="flex"] { position: fixed !important; top: 0 !important; left: 0 !important; pointer-events: auto !important; visibility: visible !important; opacity: 1 !important; background: rgba(0, 0, 0, 0.4) !important; backdrop-filter: blur(4px) !important; } .summer-search-container { position: relative; width: 100%; max-width: 380px; } .summer-search-input { width: 100%; padding: 5px 10px 5px 30px; font-size: 0.875rem; font-family: var(--summer-font-sans); color: var(--summer-fg); background: var(--summer-surface-2); border: 1px solid var(--summer-border); border-radius: var(--summer-radius); outline: none; transition: all var(--summer-fast) var(--summer-ease); } .summer-search-input:focus { background: var(--summer-bg); border-color: var(--summer-border-strong); box-shadow: var(--summer-shadow-sm); } .summer-search-container .summer-search__icon { position: absolute; left: 10px; top: 48%; transform: translateY(-50%); color: var(--summer-fg-muted); pointer-events: none; } /* Dropdown panel */ .summer-search-dropdown { position: absolute; top: calc(100% + 6px); left: 50%; transform: translateX(-50%); width: 540px; background: var(--summer-bg); border: 1px solid var(--summer-border); border-radius: var(--summer-radius-lg); box-shadow: var(--summer-shadow-xl); z-index: var(--summer-z-modal); overflow: hidden; max-height: 520px; display: flex; flex-direction: column; } @media (max-width: 768px) { .summer-search-dropdown { width: calc(100vw - 24px); left: 0; transform: none; } } .summer-search-results-wrapper { overflow-y: auto; max-height: 430px; padding: 6px; scrollbar-width: thin; } .summer-search-dropdown-footer { display: flex; justify-content: space-between; align-items: center; padding: 7px 14px; background: var(--summer-surface-sunken); border-top: 1px solid var(--summer-border-soft); font-size: 0.72rem; color: var(--summer-fg-muted); gap: 12px; } .summer-search-dropdown-footer kbd { display: inline-flex; align-items: center; justify-content: center; background: var(--summer-surface-2); border: 1px solid var(--summer-border); border-radius: 4px; padding: 1px 5px; font-size: 0.68rem; font-family: var(--summer-font-sans); color: var(--summer-fg-soft); } .summer-search-results-wrapper .docmd-search-results { padding: 0 !important; margin: 0 !important; background: none !important; } /* Each result item */ .summer-search-results-wrapper .search-result-item, .search-result-item { display: flex !important; flex-direction: column !important; gap: 2px !important; padding: 8px 10px !important; border-radius: var(--summer-radius-sm) !important; border: none !important; border-left: none !important; margin: 1px 0 !important; background: transparent !important; text-decoration: none !important; cursor: pointer !important; transition: background var(--summer-fast) var(--summer-ease) !important; } .summer-search-results-wrapper .search-result-item:hover, .summer-search-results-wrapper .search-result-item.selected, .search-result-item:hover, .search-result-item.selected { background: var(--summer-surface-2) !important; } /* Title row: page icon + title */ .search-result-title { display: flex !important; align-items: center !important; gap: 6px !important; font-size: 0.8125rem !important; font-weight: 500 !important; color: var(--summer-fg) !important; font-family: var(--summer-font-sans) !important; line-height: 1.4 !important; } .search-result-item.selected .search-result-title, .search-result-item:hover .search-result-title { color: var(--summer-accent) !important; } /* Preview / snippet */ .search-result-preview { font-size: 0.78rem !important; color: var(--summer-fg-muted) !important; line-height: 1.45 !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; padding-left: 0 !important; } .search-result-preview mark { background: var(--summer-accent-soft) !important; color: var(--summer-accent) !important; padding: 0 2px !important; border-radius: 2px !important; font-weight: 600 !important; } /* Section/page path badge */ .search-result-section, .search-result-path { font-size: 0.7rem !important; color: var(--summer-fg-faint) !important; font-weight: 400 !important; margin-left: auto !important; white-space: nowrap !important; } .search-result-meta { display: inline-flex !important; align-items: center !important; gap: 6px !important; margin-left: auto !important; flex-shrink: 0 !important; white-space: nowrap !important; } .search-result-version { display: inline-flex !important; align-items: center !important; gap: 3px !important; height: 18px !important; padding: 0 7px !important; border-radius: 999px !important; background: var(--summer-surface-3) !important; color: var(--summer-fg-soft) !important; font-size: 0.68rem !important; font-weight: 500 !important; font-family: var(--summer-font-sans) !important; line-height: 1 !important; border: 1px solid var(--summer-border) !important; letter-spacing: 0.01em !important; transition: background var(--summer-fast) var(--summer-ease), color var(--summer-fast) var(--summer-ease); } .search-result-item:hover .search-result-version, .search-result-item.selected .search-result-version { background: var(--summer-bg) !important; color: var(--summer-fg-muted) !important; } /* Confidence percentage — soft, secondary */ .search-result-confidence { display: inline-flex !important; align-items: center !important; height: 18px !important; padding: 0 2px !important; font-size: 0.68rem !important; font-weight: 600 !important; color: var(--summer-fg-soft); font-family: var(--summer-font-sans) !important; font-variant-numeric: tabular-nums !important; letter-spacing: -0.01em !important; min-width: 32px !important; justify-content: flex-end !important; background-color: var(--summer-accent-faint); border-radius: var(--summer-radius-lg); } /* Filter pills (top of dropdown) */ .docmd-search-filters, .summer-search-filters, #docmd-global-search-filters { display: flex !important; gap: 6px !important; padding: 2px 10px 8px !important; border-bottom: 1px solid var(--summer-border-soft) !important; flex-wrap: wrap !important; } .docmd-search-filter-pill, .search-filter-pill, .search-filter-tag { display: inline-flex !important; align-items: center !important; gap: 4px !important; height: 24px !important; padding: 0 10px !important; border-radius: 999px !important; border: 1px solid var(--summer-border) !important; background: var(--summer-surface-2) !important; /* Override plugin's inline HSL colour styles */ color: var(--summer-fg-soft) !important; font-size: 0.72rem !important; font-weight: 500 !important; cursor: pointer !important; transition: all var(--summer-fast) var(--summer-ease) !important; font-family: var(--summer-font-sans) !important; letter-spacing: 0.01em !important; } .docmd-search-filter-pill svg, .search-filter-pill svg, .search-filter-tag svg { width: 10px !important; height: 10px !important; color: currentColor !important; } .docmd-search-filter-pill:hover, .search-filter-pill:hover, .search-filter-tag:hover { border-color: var(--summer-border-strong) !important; color: var(--summer-fg) !important; background: var(--summer-surface) !important; } .docmd-search-filter-pill.active, .search-filter-pill.active, .search-filter-tag.active { background: var(--summer-accent) !important; border-color: var(--summer-accent) !important; color: #fff !important; } /* "No results" state */ .docmd-search-empty, .search-no-results { padding: 24px 16px !important; text-align: center !important; color: var(--summer-fg-muted) !important; font-size: 0.875rem !important; } /* Loading state */ .summer-search-loading { padding: 16px; color: var(--summer-fg-muted); font-size: 0.8rem; display: flex; align-items: center; gap: 8px; } .summer-pageheader__title { font-size: var(--summer-text-xs); font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--summer-fg-muted); margin-bottom: 4px; display: block; } .docmd-language-switcher { position: relative; display: inline-block; } .language-switcher-toggle { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: var(--summer-radius-sm); background: transparent; border: 1px solid transparent; color: var(--summer-fg-muted); cursor: pointer; transition: all var(--summer-fast) var(--summer-ease); } .language-switcher-toggle:hover { background: var(--summer-surface-2); color: var(--summer-fg); border-color: var(--summer-border-soft); } .language-switcher-menu { position: absolute; top: calc(100% + 6px); right: 0; width: 180px; padding: 6px; margin: 0; list-style: none; background: var(--summer-bg); border: 1px solid var(--summer-border-strong); border-radius: var(--summer-radius); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity var(--summer-med) var(--summer-ease), transform var(--summer-med) var(--summer-ease), visibility var(--summer-med) var(--summer-ease); z-index: var(--summer-z-overlay); } .docmd-language-switcher.open .language-switcher-menu { opacity: 1; visibility: visible; transform: translateY(0); } .language-switcher-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; font-size: 0.8rem; color: var(--summer-fg-soft); text-decoration: none; border-radius: var(--summer-radius-sm); transition: all var(--summer-fast) var(--summer-ease); cursor: pointer; font-weight: 500; } .language-switcher-item:hover { background: var(--summer-surface-2); color: var(--summer-fg); } .language-switcher-item.active { background: var(--summer-accent-soft); color: var(--summer-accent); font-weight: 600; } .language-switcher-item.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .language-check { width: 14px; height: 14px; color: var(--summer-accent); } .language-unavailable-badge { font-size: 0.65rem; background: var(--summer-surface-sunken); color: var(--summer-fg-muted); padding: 2px 6px; border-radius: 4px; } .docmd-lightbox { display: none; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.85); z-index: 10000; justify-content: center; align-items: center; flex-direction: column; } .docmd-lightbox-content { position: relative; max-width: 90%; max-height: 90%; text-align: center; } .docmd-lightbox-content img { max-width: 100%; max-height: 80vh; object-fit: contain; margin: 0 auto; border-radius: var(--summer-radius); box-shadow: var(--summer-shadow-xl); } .docmd-lightbox-caption { color: #fff; padding: 1rem; font-size: 1rem; max-width: 100%; font-family: var(--summer-font-sans); } .docmd-lightbox-close { position: absolute; top: 20px; right: 30px; color: #fff; font-size: 2.5rem; cursor: pointer; z-index: 10001; transition: opacity var(--summer-fast) var(--summer-ease); } .docmd-lightbox-close:hover { opacity: 0.8; } img.lightbox { cursor: zoom-in; } .search-initial { padding: 1.5rem; text-align: center; color: var(--summer-accent); } .changelog-body .heading-anchor { display: none; } .summer-topbar__left { display: flex; align-items: center; gap: 12px; min-width: 0; } .docmd-hero { position: relative; width: 100%; margin: 48px 0; padding: 48px 0; display: flex; flex-direction: column; } .docmd-hero.hero-glow::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 80%; height: 80%; background: radial-gradient(circle, var(--summer-accent) 0%, transparent 70%); opacity: 0.08; filter: blur(100px); z-index: -1; pointer-events: none; } .docmd-hero.hero-banner { text-align: center; align-items: center; } .docmd-hero.hero-banner .hero-content { max-width: 800px; } .docmd-hero.hero-split { display: flex; flex-direction: row; align-items: center; gap: 48px; text-align: left; } .docmd-hero.hero-split .hero-content { flex: 1 1 0; min-width: 0; } .docmd-hero.hero-split .hero-side { flex: 1 1 0; min-width: 0; display: flex; justify-content: center; align-items: center; } .docmd-hero.hero-slider { overflow: hidden; position: relative; } .hero-slider-track { display: flex; scroll-snap-type: x mandatory; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; scroll-behavior: smooth; } .hero-slider-track::-webkit-scrollbar { display: none; } .hero-slide { flex: 0 0 100%; scroll-snap-align: start; padding: 32px 16px; box-sizing: border-box; text-align: center; } .hero-slider-controls { display: flex; justify-content: center; align-items: center; gap: 12px; margin-top: 24px; } .hero-slider-btn { background: var(--summer-surface); border: 1px solid var(--summer-border); color: var(--summer-fg); width: 36px; height: 36px; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s, border-color 0.2s; flex-shrink: 0; } .hero-slider-btn:hover { background: var(--summer-accent); border-color: var(--summer-accent); color: #fff; } .hero-slider-dots { display: flex; gap: 8px; align-items: center; } .hero-slider-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--summer-border); cursor: pointer; transition: background 0.2s, transform 0.2s; border: none; padding: 0; } .hero-slider-dot.active { background: var(--summer-accent); transform: scale(1.3); } .hero-content h1 { font-size: clamp(2.5rem, 8vw, 4.5rem); font-weight: 900; line-height: .95; letter-spacing: -0.05em; margin-bottom: 16px; color: var(--summer-fg); } .hero-content p { font-size: clamp(1.1rem, 2.5vw, 1.4rem); color: var(--summer-fg-muted); line-height: 1.4; margin-bottom: 24px; } .hero-side img, .hero-side video, .hero-side .docmd-embed { width: 100%; border-radius: var(--summer-radius-xl, 16px); box-shadow: var(--summer-shadow-lg); } @media (max-width: 960px) { .docmd-hero.hero-split { flex-direction: column; text-align: center; gap: 32px; } .hero-content h1 { font-size: 3rem; } } .changelog-permalink { position: absolute; right: 0rem; top: .85em; transform: translateY(-50%); width: 1rem; height: 1rem; display: inline-flex; align-items: center; justify-content: center; color: currentColor; opacity: 0; text-decoration: none !important; border-radius: var(--summer-radius-sm, 4px); transition: opacity 0.15s ease, color 0.15s ease, background-color 0.15s ease; } .changelog-permalink svg { width: 0.85em; height: 0.85em; } .changelog-entry:hover .changelog-permalink, .changelog-permalink:focus-visible { opacity: 1; } .changelog-permalink:hover { color: var(--summer-fg); background: var(--summer-surface-2); }