klods-css 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/klods.css CHANGED
@@ -222,6 +222,14 @@
222
222
  border-bottom: 1px solid var(--klods-color-border);
223
223
  }
224
224
  }
225
+ .klods-section {
226
+ scroll-margin-top: var(--klods-space-5);
227
+ }
228
+ .klods-section + .klods-section {
229
+ margin-block-start: var(--klods-space-7);
230
+ padding-block-start: var(--klods-space-6);
231
+ border-block-start: 1px solid var(--klods-color-border);
232
+ }
225
233
  }
226
234
  @layer klods.components {
227
235
  .klods-nav {
@@ -255,6 +263,37 @@
255
263
  background: var(--klods-color-accent);
256
264
  color: var(--klods-color-accent-fg);
257
265
  }
266
+ .klods-toc {
267
+ list-style: none;
268
+ padding: 0;
269
+ margin: 0;
270
+ display: flex;
271
+ flex-direction: column;
272
+ gap: var(--klods-space-1);
273
+ }
274
+ .klods-toc a {
275
+ display: block;
276
+ padding: var(--klods-space-2) var(--klods-space-3);
277
+ border-radius: var(--klods-radius-sm);
278
+ color: inherit;
279
+ text-decoration: none;
280
+ transition: background var(--klods-transition);
281
+ }
282
+ .klods-toc a:hover {
283
+ background: var(--klods-color-surface-2);
284
+ }
285
+ .klods-toc--sub {
286
+ padding-inline-start: var(--klods-space-3);
287
+ margin-top: var(--klods-space-1);
288
+ }
289
+ .klods-toc--sub a {
290
+ font-size: var(--klods-font-size-sm);
291
+ color: var(--klods-color-muted);
292
+ padding: var(--klods-space-1) var(--klods-space-3);
293
+ }
294
+ .klods-toc--sub a:hover {
295
+ color: var(--klods-color-fg);
296
+ }
258
297
  .klods-card {
259
298
  display: flex;
260
299
  flex-direction: column;
@@ -324,6 +363,36 @@
324
363
  .klods-button--ghost:hover {
325
364
  background: var(--klods-color-surface-2);
326
365
  }
366
+ .klods-button-group {
367
+ display: inline-flex;
368
+ border: 1px solid var(--klods-color-border);
369
+ border-radius: var(--klods-radius-pill);
370
+ }
371
+ .klods-button-group > .klods-button {
372
+ border-radius: 0;
373
+ border-color: transparent;
374
+ position: relative;
375
+ }
376
+ .klods-button-group > .klods-button:not(:last-child) {
377
+ border-inline-end: 1px solid var(--klods-color-border);
378
+ }
379
+ .klods-button-group > .klods-button:first-child {
380
+ border-start-start-radius: var(--klods-radius-pill);
381
+ border-end-start-radius: var(--klods-radius-pill);
382
+ }
383
+ .klods-button-group > .klods-button:last-child {
384
+ border-start-end-radius: var(--klods-radius-pill);
385
+ border-end-end-radius: var(--klods-radius-pill);
386
+ }
387
+ .klods-button-group > .klods-button:hover, .klods-button-group > .klods-button:focus-visible {
388
+ z-index: 1;
389
+ }
390
+ .klods-button-group > .klods-button[aria-pressed=true] {
391
+ background: var(--klods-color-accent);
392
+ color: var(--klods-color-accent-fg);
393
+ border-color: var(--klods-color-accent);
394
+ z-index: 1;
395
+ }
327
396
  .klods-badge {
328
397
  display: inline-flex;
329
398
  align-items: center;
@@ -1 +1 @@
1
- @layer klods.reset, klods.tokens, klods.themes, klods.layout, klods.components, klods.utilities;@layer klods.reset{*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100dvh;font-family:var(--klods-font-sans);font-size:var(--klods-font-size-base);line-height:var(--klods-line-height-base);color:var(--klods-color-fg);background:var(--klods-color-bg)}img,picture,svg,video{display:block;max-width:100%}pre,code{font-family:var(--klods-font-mono)}pre{overflow-x:auto;white-space:pre-wrap;overflow-wrap:break-word}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--klods-color-link)}}@layer klods.tokens{:root{--klods-color-bg: #ffffff;--klods-color-fg: #1a1a1a;--klods-color-muted: #6b7280;--klods-color-surface: #f5f5f7;--klods-color-surface-2: #ececef;--klods-color-border: #e5e7eb;--klods-color-accent: #5b5bd6;--klods-color-accent-fg: #ffffff;--klods-color-link: var(--klods-color-accent);--klods-color-danger: #d1335b;--klods-color-success: #2f9e44;--klods-color-warning: #d97706;--klods-color-info: #2563eb;--klods-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--klods-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--klods-font-size-base: 16px;--klods-font-size-sm: 0.875rem;--klods-font-size-lg: 1.125rem;--klods-font-size-xl: 1.5rem;--klods-font-size-2xl: 2rem;--klods-font-size-3xl: 2.5rem;--klods-line-height-base: 1.5;--klods-line-height-tight: 1.2;--klods-space-0: 0;--klods-space-1: 0.25rem;--klods-space-2: 0.5rem;--klods-space-3: 0.75rem;--klods-space-4: 1rem;--klods-space-5: 1.5rem;--klods-space-6: 2rem;--klods-space-7: 3rem;--klods-space-8: 4rem;--klods-radius-sm: 4px;--klods-radius-md: 8px;--klods-radius-lg: 16px;--klods-radius-pill: 999px;--klods-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);--klods-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);--klods-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12);--klods-content-max: 72rem;--klods-sidebar-width: 16rem;--klods-header-height: 4rem;--klods-footer-height: auto;--klods-gutter: var(--klods-space-5);--klods-transition: 150ms ease}}@layer klods.themes{[data-theme=dark]{--klods-color-bg: #0f1115;--klods-color-fg: #ececef;--klods-color-muted: #9aa0aa;--klods-color-surface: #181b22;--klods-color-surface-2: #1f232c;--klods-color-border: #2a2f3a;--klods-color-accent: #8a8aff;--klods-color-accent-fg: #0f1115}[data-theme=playful]{--klods-color-bg: #fff7fb;--klods-color-fg: #2a1a3a;--klods-color-surface: #ffe8f3;--klods-color-surface-2: #ffd6ea;--klods-color-border: #f4bfd9;--klods-color-accent: #e63990;--klods-color-accent-fg: #ffffff;--klods-radius-sm: 8px;--klods-radius-md: 16px;--klods-radius-lg: 28px;--klods-font-sans: "Comic Sans MS", "Comic Sans", ui-rounded, system-ui, sans-serif}[data-theme=brutalist]{--klods-color-bg: #ffffff;--klods-color-fg: #000000;--klods-color-surface: #ffffff;--klods-color-surface-2: #f0f0f0;--klods-color-border: #000000;--klods-color-accent: #ffe600;--klods-color-accent-fg: #000000;--klods-radius-sm: 0;--klods-radius-md: 0;--klods-radius-lg: 0;--klods-radius-pill: 0;--klods-shadow-sm: 4px 4px 0 #000;--klods-shadow-md: 6px 6px 0 #000;--klods-shadow-lg: 10px 10px 0 #000;--klods-font-sans: "Courier New", ui-monospace, monospace}}@layer klods.layout{.klods-page{display:grid;min-height:100dvh;grid-template-columns:1fr;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "content" "footer"}.klods-page--with-sidebar{grid-template-columns:var(--klods-sidebar-width) 1fr;grid-template-areas:"header header" "sidebar content" "footer footer"}.klods-page--with-sidebar.klods-page--sidebar-right{grid-template-columns:1fr var(--klods-sidebar-width);grid-template-areas:"header header" "content sidebar" "footer footer"}.klods-header{grid-area:header;display:flex;align-items:center;gap:var(--klods-space-4);padding:0 var(--klods-gutter);min-height:var(--klods-header-height);background:var(--klods-color-surface);border-bottom:1px solid var(--klods-color-border)}.klods-page--sticky-header .klods-header{position:sticky;top:0;z-index:10}html:has(.klods-page--sticky-header){scroll-padding-top:var(--klods-header-height)}.klods-sidebar{grid-area:sidebar;padding:var(--klods-gutter);background:var(--klods-color-surface);border-right:1px solid var(--klods-color-border)}.klods-sidebar>*{position:sticky;top:var(--klods-gutter);max-height:calc(100dvh - var(--klods-gutter)*2);overflow-y:auto}.klods-page--sticky-header .klods-sidebar>*{top:calc(var(--klods-header-height) + var(--klods-gutter));max-height:calc(100dvh - var(--klods-header-height) - var(--klods-gutter)*2)}.klods-page--sidebar-right .klods-sidebar{border-right:none;border-left:1px solid var(--klods-color-border)}.klods-content{grid-area:content;padding:var(--klods-gutter);min-width:0;max-width:var(--klods-content-max);margin-inline:auto;width:100%}.klods-content--narrow{max-width:var(--klods-content-max);margin-inline:auto;width:100%}.klods-footer{grid-area:footer;padding:var(--klods-gutter);background:var(--klods-color-surface);border-top:1px solid var(--klods-color-border);color:var(--klods-color-muted)}@media(max-width: 48rem){.klods-page--with-sidebar,.klods-page--with-sidebar.klods-page--sidebar-right{grid-template-columns:1fr;grid-template-areas:"header" "sidebar" "content" "footer"}.klods-sidebar{border-right:none;border-left:none;border-bottom:1px solid var(--klods-color-border)}}}@layer klods.components{.klods-nav{display:flex;align-items:center;gap:var(--klods-space-4)}.klods-nav__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--klods-space-3);list-style:none;padding:0;margin:0}.klods-nav__link{display:inline-flex;align-items:center;padding:var(--klods-space-2) var(--klods-space-3);border-radius:var(--klods-radius-sm);color:inherit;text-decoration:none;transition:background var(--klods-transition)}.klods-nav__link:hover,.klods-nav__link:focus-visible{background:var(--klods-color-surface-2)}.klods-nav__link--active{background:var(--klods-color-accent);color:var(--klods-color-accent-fg)}.klods-card{display:flex;flex-direction:column;gap:var(--klods-space-3);padding:var(--klods-space-5);background:var(--klods-color-surface);border:1px solid var(--klods-color-border);border-radius:var(--klods-radius-md)}.klods-card--elevated{border:none;box-shadow:var(--klods-shadow-md)}.klods-card__title{margin:0;font-size:var(--klods-font-size-lg);line-height:var(--klods-line-height-tight)}.klods-card__body{margin:0}.klods-card__footer{display:flex;gap:var(--klods-space-3);padding-top:var(--klods-space-3);border-top:1px solid var(--klods-color-border)}.klods-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--klods-space-2);padding:var(--klods-space-2) var(--klods-space-4);font:inherit;font-weight:600;color:var(--klods-color-fg);background:var(--klods-color-surface-2);border:1px solid var(--klods-color-border);border-radius:var(--klods-radius-sm);cursor:pointer;transition:background var(--klods-transition),transform var(--klods-transition)}.klods-button:hover{background:var(--klods-color-border)}.klods-button:active{transform:translateY(1px)}.klods-button--primary{background:var(--klods-color-accent);color:var(--klods-color-accent-fg);border-color:rgba(0,0,0,0)}.klods-button--primary:hover{filter:brightness(0.95);background:var(--klods-color-accent)}.klods-button--danger{background:var(--klods-color-danger);color:#fff;border-color:rgba(0,0,0,0)}.klods-button--ghost{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.klods-button--ghost:hover{background:var(--klods-color-surface-2)}.klods-badge{display:inline-flex;align-items:center;padding:.125rem var(--klods-space-2);font-size:var(--klods-font-size-sm);font-weight:600;color:var(--klods-color-fg);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-pill)}.klods-badge--accent{background:var(--klods-color-accent);color:var(--klods-color-accent-fg)}.klods-badge--success{background:var(--klods-color-success);color:#fff}.klods-badge--danger{background:var(--klods-color-danger);color:#fff}.klods-alert{padding:var(--klods-space-4);border-radius:var(--klods-radius-md);border:1px solid var(--klods-color-border);background:var(--klods-color-surface)}.klods-alert--info{border-color:var(--klods-color-info)}.klods-alert--success{border-color:var(--klods-color-success)}.klods-alert--warning{border-color:var(--klods-color-warning)}.klods-alert--danger{border-color:var(--klods-color-danger)}.klods-prose{max-width:65ch}.klods-prose>*+*{margin-block-start:var(--klods-space-4)}.klods-prose h1,.klods-prose h2,.klods-prose h3{line-height:var(--klods-line-height-tight)}.klods-prose code{font-family:var(--klods-font-mono);font-size:.95em;padding:.1em .35em;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm)}.klods-prose pre{font-family:var(--klods-font-mono);padding:var(--klods-space-4);overflow-x:auto;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-md)}.klods-prose pre code{padding:0;background:rgba(0,0,0,0)}code{font-size:.9em;padding:.1em .35em;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm)}pre{padding:var(--klods-space-4);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-md)}pre code{padding:0;background:rgba(0,0,0,0);font-size:inherit}.klods-table{width:100%;border-collapse:collapse}.klods-table th,.klods-table td{padding:var(--klods-space-3) var(--klods-space-4);text-align:left;border-bottom:1px solid var(--klods-color-border)}.klods-table th{font-weight:600;background:var(--klods-color-surface)}.klods-table--striped tbody tr:nth-child(even) td{background:var(--klods-color-surface)}.klods-table--dense th,.klods-table--dense td{padding:var(--klods-space-2) var(--klods-space-3)}.klods-box{padding:var(--klods-space-3);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm);text-align:center}.klods-muted{color:var(--klods-color-muted)}.klods-lead{font-size:var(--klods-font-size-lg);color:var(--klods-color-muted)}}@layer klods.utilities{.klods-stack{display:flex;flex-direction:column;gap:var(--klods-space-4)}.klods-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--klods-space-4)}.klods-row{display:flex;flex-direction:row;align-items:center;gap:var(--klods-space-4)}.klods-grid{display:grid;gap:var(--klods-space-4);grid-template-columns:repeat(2, minmax(0, 1fr))}.klods-grid--cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.klods-grid--cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.klods-grid--cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.klods-grid--cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.klods-grid--cols-5{grid-template-columns:repeat(5, minmax(0, 1fr))}.klods-grid--cols-6{grid-template-columns:repeat(6, minmax(0, 1fr))}.klods-grid--fit{--klods-grid-min: 16rem;grid-template-columns:repeat(auto-fit, minmax(var(--klods-grid-min), 1fr))}.klods-center{display:flex;align-items:center;justify-content:center}.klods-spread{display:flex;align-items:center;justify-content:space-between;gap:var(--klods-space-4)}.klods-push{margin-inline-start:auto}.klods-fill{display:flex;align-items:center;gap:var(--klods-space-4);flex:1 1 auto;min-width:0;min-height:0}.klods-stack--gap-0,.klods-cluster--gap-0,.klods-row--gap-0,.klods-grid--gap-0{gap:var(--klods-space-0)}.klods-stack--gap-1,.klods-cluster--gap-1,.klods-row--gap-1,.klods-grid--gap-1{gap:var(--klods-space-1)}.klods-stack--gap-2,.klods-cluster--gap-2,.klods-row--gap-2,.klods-grid--gap-2{gap:var(--klods-space-2)}.klods-stack--gap-3,.klods-cluster--gap-3,.klods-row--gap-3,.klods-grid--gap-3{gap:var(--klods-space-3)}.klods-stack--gap-4,.klods-cluster--gap-4,.klods-row--gap-4,.klods-grid--gap-4{gap:var(--klods-space-4)}.klods-stack--gap-5,.klods-cluster--gap-5,.klods-row--gap-5,.klods-grid--gap-5{gap:var(--klods-space-5)}.klods-stack--gap-6,.klods-cluster--gap-6,.klods-row--gap-6,.klods-grid--gap-6{gap:var(--klods-space-6)}.klods-stack--gap-7,.klods-cluster--gap-7,.klods-row--gap-7,.klods-grid--gap-7{gap:var(--klods-space-7)}.klods-stack--gap-8,.klods-cluster--gap-8,.klods-row--gap-8,.klods-grid--gap-8{gap:var(--klods-space-8)}.klods-pad-0{padding:var(--klods-space-0)}.klods-pad-1{padding:var(--klods-space-1)}.klods-pad-2{padding:var(--klods-space-2)}.klods-pad-3{padding:var(--klods-space-3)}.klods-pad-4{padding:var(--klods-space-4)}.klods-pad-5{padding:var(--klods-space-5)}.klods-pad-6{padding:var(--klods-space-6)}.klods-pad-7{padding:var(--klods-space-7)}.klods-pad-8{padding:var(--klods-space-8)}.klods-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}}
1
+ @layer klods.reset, klods.tokens, klods.themes, klods.layout, klods.components, klods.utilities;@layer klods.reset{*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;min-height:100dvh;font-family:var(--klods-font-sans);font-size:var(--klods-font-size-base);line-height:var(--klods-line-height-base);color:var(--klods-color-fg);background:var(--klods-color-bg)}img,picture,svg,video{display:block;max-width:100%}pre,code{font-family:var(--klods-font-mono)}pre{overflow-x:auto;white-space:pre-wrap;overflow-wrap:break-word}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--klods-color-link)}}@layer klods.tokens{:root{--klods-color-bg: #ffffff;--klods-color-fg: #1a1a1a;--klods-color-muted: #6b7280;--klods-color-surface: #f5f5f7;--klods-color-surface-2: #ececef;--klods-color-border: #e5e7eb;--klods-color-accent: #5b5bd6;--klods-color-accent-fg: #ffffff;--klods-color-link: var(--klods-color-accent);--klods-color-danger: #d1335b;--klods-color-success: #2f9e44;--klods-color-warning: #d97706;--klods-color-info: #2563eb;--klods-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--klods-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--klods-font-size-base: 16px;--klods-font-size-sm: 0.875rem;--klods-font-size-lg: 1.125rem;--klods-font-size-xl: 1.5rem;--klods-font-size-2xl: 2rem;--klods-font-size-3xl: 2.5rem;--klods-line-height-base: 1.5;--klods-line-height-tight: 1.2;--klods-space-0: 0;--klods-space-1: 0.25rem;--klods-space-2: 0.5rem;--klods-space-3: 0.75rem;--klods-space-4: 1rem;--klods-space-5: 1.5rem;--klods-space-6: 2rem;--klods-space-7: 3rem;--klods-space-8: 4rem;--klods-radius-sm: 4px;--klods-radius-md: 8px;--klods-radius-lg: 16px;--klods-radius-pill: 999px;--klods-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);--klods-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);--klods-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12);--klods-content-max: 72rem;--klods-sidebar-width: 16rem;--klods-header-height: 4rem;--klods-footer-height: auto;--klods-gutter: var(--klods-space-5);--klods-transition: 150ms ease}}@layer klods.themes{[data-theme=dark]{--klods-color-bg: #0f1115;--klods-color-fg: #ececef;--klods-color-muted: #9aa0aa;--klods-color-surface: #181b22;--klods-color-surface-2: #1f232c;--klods-color-border: #2a2f3a;--klods-color-accent: #8a8aff;--klods-color-accent-fg: #0f1115}[data-theme=playful]{--klods-color-bg: #fff7fb;--klods-color-fg: #2a1a3a;--klods-color-surface: #ffe8f3;--klods-color-surface-2: #ffd6ea;--klods-color-border: #f4bfd9;--klods-color-accent: #e63990;--klods-color-accent-fg: #ffffff;--klods-radius-sm: 8px;--klods-radius-md: 16px;--klods-radius-lg: 28px;--klods-font-sans: "Comic Sans MS", "Comic Sans", ui-rounded, system-ui, sans-serif}[data-theme=brutalist]{--klods-color-bg: #ffffff;--klods-color-fg: #000000;--klods-color-surface: #ffffff;--klods-color-surface-2: #f0f0f0;--klods-color-border: #000000;--klods-color-accent: #ffe600;--klods-color-accent-fg: #000000;--klods-radius-sm: 0;--klods-radius-md: 0;--klods-radius-lg: 0;--klods-radius-pill: 0;--klods-shadow-sm: 4px 4px 0 #000;--klods-shadow-md: 6px 6px 0 #000;--klods-shadow-lg: 10px 10px 0 #000;--klods-font-sans: "Courier New", ui-monospace, monospace}}@layer klods.layout{.klods-page{display:grid;min-height:100dvh;grid-template-columns:1fr;grid-template-rows:auto 1fr auto;grid-template-areas:"header" "content" "footer"}.klods-page--with-sidebar{grid-template-columns:var(--klods-sidebar-width) 1fr;grid-template-areas:"header header" "sidebar content" "footer footer"}.klods-page--with-sidebar.klods-page--sidebar-right{grid-template-columns:1fr var(--klods-sidebar-width);grid-template-areas:"header header" "content sidebar" "footer footer"}.klods-header{grid-area:header;display:flex;align-items:center;gap:var(--klods-space-4);padding:0 var(--klods-gutter);min-height:var(--klods-header-height);background:var(--klods-color-surface);border-bottom:1px solid var(--klods-color-border)}.klods-page--sticky-header .klods-header{position:sticky;top:0;z-index:10}html:has(.klods-page--sticky-header){scroll-padding-top:var(--klods-header-height)}.klods-sidebar{grid-area:sidebar;padding:var(--klods-gutter);background:var(--klods-color-surface);border-right:1px solid var(--klods-color-border)}.klods-sidebar>*{position:sticky;top:var(--klods-gutter);max-height:calc(100dvh - var(--klods-gutter)*2);overflow-y:auto}.klods-page--sticky-header .klods-sidebar>*{top:calc(var(--klods-header-height) + var(--klods-gutter));max-height:calc(100dvh - var(--klods-header-height) - var(--klods-gutter)*2)}.klods-page--sidebar-right .klods-sidebar{border-right:none;border-left:1px solid var(--klods-color-border)}.klods-content{grid-area:content;padding:var(--klods-gutter);min-width:0;max-width:var(--klods-content-max);margin-inline:auto;width:100%}.klods-content--narrow{max-width:var(--klods-content-max);margin-inline:auto;width:100%}.klods-footer{grid-area:footer;padding:var(--klods-gutter);background:var(--klods-color-surface);border-top:1px solid var(--klods-color-border);color:var(--klods-color-muted)}@media(max-width: 48rem){.klods-page--with-sidebar,.klods-page--with-sidebar.klods-page--sidebar-right{grid-template-columns:1fr;grid-template-areas:"header" "sidebar" "content" "footer"}.klods-sidebar{border-right:none;border-left:none;border-bottom:1px solid var(--klods-color-border)}}.klods-section{scroll-margin-top:var(--klods-space-5)}.klods-section+.klods-section{margin-block-start:var(--klods-space-7);padding-block-start:var(--klods-space-6);border-block-start:1px solid var(--klods-color-border)}}@layer klods.components{.klods-nav{display:flex;align-items:center;gap:var(--klods-space-4)}.klods-nav__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--klods-space-3);list-style:none;padding:0;margin:0}.klods-nav__link{display:inline-flex;align-items:center;padding:var(--klods-space-2) var(--klods-space-3);border-radius:var(--klods-radius-sm);color:inherit;text-decoration:none;transition:background var(--klods-transition)}.klods-nav__link:hover,.klods-nav__link:focus-visible{background:var(--klods-color-surface-2)}.klods-nav__link--active{background:var(--klods-color-accent);color:var(--klods-color-accent-fg)}.klods-toc{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--klods-space-1)}.klods-toc a{display:block;padding:var(--klods-space-2) var(--klods-space-3);border-radius:var(--klods-radius-sm);color:inherit;text-decoration:none;transition:background var(--klods-transition)}.klods-toc a:hover{background:var(--klods-color-surface-2)}.klods-toc--sub{padding-inline-start:var(--klods-space-3);margin-top:var(--klods-space-1)}.klods-toc--sub a{font-size:var(--klods-font-size-sm);color:var(--klods-color-muted);padding:var(--klods-space-1) var(--klods-space-3)}.klods-toc--sub a:hover{color:var(--klods-color-fg)}.klods-card{display:flex;flex-direction:column;gap:var(--klods-space-3);padding:var(--klods-space-5);background:var(--klods-color-surface);border:1px solid var(--klods-color-border);border-radius:var(--klods-radius-md)}.klods-card--elevated{border:none;box-shadow:var(--klods-shadow-md)}.klods-card__title{margin:0;font-size:var(--klods-font-size-lg);line-height:var(--klods-line-height-tight)}.klods-card__body{margin:0}.klods-card__footer{display:flex;gap:var(--klods-space-3);padding-top:var(--klods-space-3);border-top:1px solid var(--klods-color-border)}.klods-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--klods-space-2);padding:var(--klods-space-2) var(--klods-space-4);font:inherit;font-weight:600;color:var(--klods-color-fg);background:var(--klods-color-surface-2);border:1px solid var(--klods-color-border);border-radius:var(--klods-radius-sm);cursor:pointer;transition:background var(--klods-transition),transform var(--klods-transition)}.klods-button:hover{background:var(--klods-color-border)}.klods-button:active{transform:translateY(1px)}.klods-button--primary{background:var(--klods-color-accent);color:var(--klods-color-accent-fg);border-color:rgba(0,0,0,0)}.klods-button--primary:hover{filter:brightness(0.95);background:var(--klods-color-accent)}.klods-button--danger{background:var(--klods-color-danger);color:#fff;border-color:rgba(0,0,0,0)}.klods-button--ghost{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}.klods-button--ghost:hover{background:var(--klods-color-surface-2)}.klods-button-group{display:inline-flex;border:1px solid var(--klods-color-border);border-radius:var(--klods-radius-pill)}.klods-button-group>.klods-button{border-radius:0;border-color:rgba(0,0,0,0);position:relative}.klods-button-group>.klods-button:not(:last-child){border-inline-end:1px solid var(--klods-color-border)}.klods-button-group>.klods-button:first-child{border-start-start-radius:var(--klods-radius-pill);border-end-start-radius:var(--klods-radius-pill)}.klods-button-group>.klods-button:last-child{border-start-end-radius:var(--klods-radius-pill);border-end-end-radius:var(--klods-radius-pill)}.klods-button-group>.klods-button:hover,.klods-button-group>.klods-button:focus-visible{z-index:1}.klods-button-group>.klods-button[aria-pressed=true]{background:var(--klods-color-accent);color:var(--klods-color-accent-fg);border-color:var(--klods-color-accent);z-index:1}.klods-badge{display:inline-flex;align-items:center;padding:.125rem var(--klods-space-2);font-size:var(--klods-font-size-sm);font-weight:600;color:var(--klods-color-fg);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-pill)}.klods-badge--accent{background:var(--klods-color-accent);color:var(--klods-color-accent-fg)}.klods-badge--success{background:var(--klods-color-success);color:#fff}.klods-badge--danger{background:var(--klods-color-danger);color:#fff}.klods-alert{padding:var(--klods-space-4);border-radius:var(--klods-radius-md);border:1px solid var(--klods-color-border);background:var(--klods-color-surface)}.klods-alert--info{border-color:var(--klods-color-info)}.klods-alert--success{border-color:var(--klods-color-success)}.klods-alert--warning{border-color:var(--klods-color-warning)}.klods-alert--danger{border-color:var(--klods-color-danger)}.klods-prose{max-width:65ch}.klods-prose>*+*{margin-block-start:var(--klods-space-4)}.klods-prose h1,.klods-prose h2,.klods-prose h3{line-height:var(--klods-line-height-tight)}.klods-prose code{font-family:var(--klods-font-mono);font-size:.95em;padding:.1em .35em;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm)}.klods-prose pre{font-family:var(--klods-font-mono);padding:var(--klods-space-4);overflow-x:auto;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-md)}.klods-prose pre code{padding:0;background:rgba(0,0,0,0)}code{font-size:.9em;padding:.1em .35em;background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm)}pre{padding:var(--klods-space-4);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-md)}pre code{padding:0;background:rgba(0,0,0,0);font-size:inherit}.klods-table{width:100%;border-collapse:collapse}.klods-table th,.klods-table td{padding:var(--klods-space-3) var(--klods-space-4);text-align:left;border-bottom:1px solid var(--klods-color-border)}.klods-table th{font-weight:600;background:var(--klods-color-surface)}.klods-table--striped tbody tr:nth-child(even) td{background:var(--klods-color-surface)}.klods-table--dense th,.klods-table--dense td{padding:var(--klods-space-2) var(--klods-space-3)}.klods-box{padding:var(--klods-space-3);background:var(--klods-color-surface-2);border-radius:var(--klods-radius-sm);text-align:center}.klods-muted{color:var(--klods-color-muted)}.klods-lead{font-size:var(--klods-font-size-lg);color:var(--klods-color-muted)}}@layer klods.utilities{.klods-stack{display:flex;flex-direction:column;gap:var(--klods-space-4)}.klods-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--klods-space-4)}.klods-row{display:flex;flex-direction:row;align-items:center;gap:var(--klods-space-4)}.klods-grid{display:grid;gap:var(--klods-space-4);grid-template-columns:repeat(2, minmax(0, 1fr))}.klods-grid--cols-1{grid-template-columns:repeat(1, minmax(0, 1fr))}.klods-grid--cols-2{grid-template-columns:repeat(2, minmax(0, 1fr))}.klods-grid--cols-3{grid-template-columns:repeat(3, minmax(0, 1fr))}.klods-grid--cols-4{grid-template-columns:repeat(4, minmax(0, 1fr))}.klods-grid--cols-5{grid-template-columns:repeat(5, minmax(0, 1fr))}.klods-grid--cols-6{grid-template-columns:repeat(6, minmax(0, 1fr))}.klods-grid--fit{--klods-grid-min: 16rem;grid-template-columns:repeat(auto-fit, minmax(var(--klods-grid-min), 1fr))}.klods-center{display:flex;align-items:center;justify-content:center}.klods-spread{display:flex;align-items:center;justify-content:space-between;gap:var(--klods-space-4)}.klods-push{margin-inline-start:auto}.klods-fill{display:flex;align-items:center;gap:var(--klods-space-4);flex:1 1 auto;min-width:0;min-height:0}.klods-stack--gap-0,.klods-cluster--gap-0,.klods-row--gap-0,.klods-grid--gap-0{gap:var(--klods-space-0)}.klods-stack--gap-1,.klods-cluster--gap-1,.klods-row--gap-1,.klods-grid--gap-1{gap:var(--klods-space-1)}.klods-stack--gap-2,.klods-cluster--gap-2,.klods-row--gap-2,.klods-grid--gap-2{gap:var(--klods-space-2)}.klods-stack--gap-3,.klods-cluster--gap-3,.klods-row--gap-3,.klods-grid--gap-3{gap:var(--klods-space-3)}.klods-stack--gap-4,.klods-cluster--gap-4,.klods-row--gap-4,.klods-grid--gap-4{gap:var(--klods-space-4)}.klods-stack--gap-5,.klods-cluster--gap-5,.klods-row--gap-5,.klods-grid--gap-5{gap:var(--klods-space-5)}.klods-stack--gap-6,.klods-cluster--gap-6,.klods-row--gap-6,.klods-grid--gap-6{gap:var(--klods-space-6)}.klods-stack--gap-7,.klods-cluster--gap-7,.klods-row--gap-7,.klods-grid--gap-7{gap:var(--klods-space-7)}.klods-stack--gap-8,.klods-cluster--gap-8,.klods-row--gap-8,.klods-grid--gap-8{gap:var(--klods-space-8)}.klods-pad-0{padding:var(--klods-space-0)}.klods-pad-1{padding:var(--klods-space-1)}.klods-pad-2{padding:var(--klods-space-2)}.klods-pad-3{padding:var(--klods-space-3)}.klods-pad-4{padding:var(--klods-space-4)}.klods-pad-5{padding:var(--klods-space-5)}.klods-pad-6{padding:var(--klods-space-6)}.klods-pad-7{padding:var(--klods-space-7)}.klods-pad-8{padding:var(--klods-space-8)}.klods-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "klods-css",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "klods stylesheet — drop-in CSS for layout, utilities and components.",
5
5
  "license": "MIT",
6
6
  "author": "Drue Wilding",
@@ -39,6 +39,44 @@
39
39
  color: var(--klods-color-accent-fg);
40
40
  }
41
41
 
42
+ // ── Toc ────────────────────────────────────────────────────────────────
43
+ .klods-toc {
44
+ list-style: none;
45
+ padding: 0;
46
+ margin: 0;
47
+ display: flex;
48
+ flex-direction: column;
49
+ gap: var(--klods-space-1);
50
+
51
+ a {
52
+ display: block;
53
+ padding: var(--klods-space-2) var(--klods-space-3);
54
+ border-radius: var(--klods-radius-sm);
55
+ color: inherit;
56
+ text-decoration: none;
57
+ transition: background var(--klods-transition);
58
+
59
+ &:hover {
60
+ background: var(--klods-color-surface-2);
61
+ }
62
+ }
63
+ }
64
+
65
+ .klods-toc--sub {
66
+ padding-inline-start: var(--klods-space-3);
67
+ margin-top: var(--klods-space-1);
68
+
69
+ a {
70
+ font-size: var(--klods-font-size-sm);
71
+ color: var(--klods-color-muted);
72
+ padding: var(--klods-space-1) var(--klods-space-3);
73
+
74
+ &:hover {
75
+ color: var(--klods-color-fg);
76
+ }
77
+ }
78
+ }
79
+
42
80
  // ── Card ───────────────────────────────────────────────────────────────
43
81
  .klods-card {
44
82
  display: flex;
@@ -125,6 +163,45 @@
125
163
  background: var(--klods-color-surface-2);
126
164
  }
127
165
 
166
+ // ── Button group ───────────────────────────────────────────────────────
167
+ .klods-button-group {
168
+ display: inline-flex;
169
+ border: 1px solid var(--klods-color-border);
170
+ border-radius: var(--klods-radius-pill);
171
+
172
+ > .klods-button {
173
+ border-radius: 0;
174
+ border-color: transparent;
175
+ position: relative;
176
+
177
+ &:not(:last-child) {
178
+ border-inline-end: 1px solid var(--klods-color-border);
179
+ }
180
+
181
+ &:first-child {
182
+ border-start-start-radius: var(--klods-radius-pill);
183
+ border-end-start-radius: var(--klods-radius-pill);
184
+ }
185
+
186
+ &:last-child {
187
+ border-start-end-radius: var(--klods-radius-pill);
188
+ border-end-end-radius: var(--klods-radius-pill);
189
+ }
190
+
191
+ &:hover,
192
+ &:focus-visible {
193
+ z-index: 1;
194
+ }
195
+
196
+ &[aria-pressed="true"] {
197
+ background: var(--klods-color-accent);
198
+ color: var(--klods-color-accent-fg);
199
+ border-color: var(--klods-color-accent);
200
+ z-index: 1;
201
+ }
202
+ }
203
+ }
204
+
128
205
  // ── Badge ──────────────────────────────────────────────────────────────
129
206
  .klods-badge {
130
207
  display: inline-flex;
package/src/_layout.scss CHANGED
@@ -122,4 +122,15 @@
122
122
  border-bottom: 1px solid var(--klods-color-border);
123
123
  }
124
124
  }
125
+
126
+ // ── Section ────────────────────────────────────────────────────────────
127
+ .klods-section {
128
+ scroll-margin-top: var(--klods-space-5);
129
+ }
130
+
131
+ .klods-section + .klods-section {
132
+ margin-block-start: var(--klods-space-7);
133
+ padding-block-start: var(--klods-space-6);
134
+ border-block-start: 1px solid var(--klods-color-border);
135
+ }
125
136
  }