@leftium/nimble.css 0.5.0 → 0.7.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.
@@ -1 +1 @@
1
- @layer nimble.reset{:where(:not(progress)),:where(),:where(){box-sizing:border-box;background-repeat:no-repeat}:where(html){-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5}:where(body){margin:0}:where(h1){margin-block:.67em;font-size:2em}:where(hr){height:0;color:inherit}:where(nav) :where(ol,ul){padding:0;list-style-type:none}:where(pre){font-family:monospace;font-size:1em}:where(abbr[title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,samp){font-family:monospace;font-size:1em}:where(small){font-size:80%}:where(sub,sup){vertical-align:baseline;font-size:75%;line-height:0;position:relative}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(iframe){border-style:none}:where(table){border-collapse:collapse;text-indent:0;border-color:currentColor}:where(button,input,select,textarea){font:inherit;letter-spacing:inherit}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button}:where(fieldset){border:1px solid #a0a0a0}:where(progress){vertical-align:baseline}:where(textarea){resize:vertical;overflow:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(){-webkit-appearance:none}:where(),:where(){height:auto}:where(){-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(a,area,button,input,label,select,summary,textarea,[tabindex]){touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where([aria-busy=true]){cursor:progress}:where([aria-disabled=true],[disabled]){cursor:not-allowed}@media (prefers-reduced-motion:reduce){:where(*),:where(),:where(){scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer nimble.base{:root{color-scheme:light dark;--nc-surface-hue:250;--nc-surface-1:light-dark(oklch(.985 .002 var(--nc-surface-hue)),oklch(.17 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-2:light-dark(oklch(.955 .002 var(--nc-surface-hue)),oklch(.2 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-3:light-dark(oklch(.925 .002 var(--nc-surface-hue)),oklch(.23 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-4:light-dark(oklch(.885 .002 var(--nc-surface-hue)),oklch(.27 .005 calc(var(--nc-surface-hue) + 10)));--nc-text:light-dark(oklch(.28 .005 var(--nc-surface-hue)),oklch(.86 .005 var(--nc-surface-hue)));--nc-border:light-dark(oklch(.83 .005 var(--nc-surface-hue)),oklch(.28 .005 calc(var(--nc-surface-hue) + 10)));--nc-primary:light-dark(oklch(50% .2 250),oklch(60% .2 250));--nc-primary-hover:light-dark(oklch(from var(--nc-primary) calc(l - .1) c h),oklch(from var(--nc-primary) calc(l + .1) c h));--nc-primary-focus:oklch(from var(--nc-primary) l c h / .4);--nc-primary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-secondary:light-dark(oklch(45% .05 250),oklch(60% .05 250));--nc-secondary-hover:light-dark(oklch(from var(--nc-secondary) calc(l - .1) c h),oklch(from var(--nc-secondary) calc(l + .1) c h));--nc-secondary-focus:oklch(from var(--nc-secondary) l c h / .3);--nc-secondary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-valid:light-dark(oklch(52% .17 145),oklch(65% .2 145));--nc-invalid:light-dark(oklch(55% .22 25),oklch(65% .22 25));--nc-font-sans:system-ui, sans-serif;--nc-font-mono:ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;--nc-spacing:1rem;--nc-radius:.25rem;--nc-content-width:60ch}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}html{font-family:var(--nc-font-sans);color:var(--nc-text);background-color:var(--nc-surface-1);font-size:100%;line-height:1.5}body{grid-template-columns:1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;min-height:100dvh;display:grid}body>*,body>[style*="display: contents"]>*{grid-column:2;min-width:0}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text)}h1{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:2rem;font-weight:700;line-height:1.1}h2{margin-top:2rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1rem;font-weight:700;line-height:1.5}@media (width<=720px){h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.3rem}}p,ul,ol,dl,blockquote,pre,table,figure,form,fieldset{margin-top:0;margin-bottom:var(--nc-spacing)}ul,ol{padding-inline-start:1.5em}li{margin-bottom:.25em}:where(li)>:where(ul,ol){margin-bottom:0}dt{font-weight:600}dd{margin-inline-start:1.5em;margin-bottom:.5em}blockquote{margin-block:var(--nc-spacing);padding:.25em var(--nc-spacing);border-inline-start:.25rem solid var(--nc-border);margin-inline:0;font-style:italic}:where(blockquote) footer,:where(blockquote) cite{color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.9em;font-style:normal}hr{background-color:color-mix(in oklch, var(--nc-border), transparent 40%);height:1px;margin:calc(var(--nc-spacing) * 2) 0;border:none}mark{color:light-dark(inherit,oklch(95% .01 85));background-color:light-dark(#fde68a,oklch(55% .12 85));border-radius:2px;padding:.1em .25em}address{font-style:normal}:where(a:not([role=button])){color:var(--nc-primary);text-underline-offset:.15em;text-decoration:underline;-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);transition:color .2s,text-decoration-color .2s}:where(a:not([role=button])):visited{color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310));-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%);text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%)}:where(a:not([role=button])):hover{color:var(--nc-primary-hover);-webkit-text-decoration-color:var(--nc-primary-hover);text-decoration-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]){--_btn-padding-v:.5em;--_btn-padding-h:1em;padding:var(--_btn-padding-v) var(--_btn-padding-h);background-color:var(--nc-primary);color:var(--nc-primary-contrast);border:1px solid var(--nc-primary);border-radius:var(--nc-radius);font:inherit;cursor:pointer;text-align:center;margin:0 .25em .25em 0;font-size:1rem;line-height:1.5;text-decoration:none;transition:background-color .2s,border-color .2s;display:inline-block}:where(button,[type=submit],[type=reset],[type=button],[role=button]):hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]):focus-visible{box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where([type=reset]){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}:where([type=reset]):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}:where([type=reset]):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}:where(button,[type=submit],[type=reset],[type=button],[role=button]).inline{--_btn-padding-v:.05em;--_btn-padding-h:.4em;vertical-align:baseline;margin:.1em .15em;font-size:.875em}:where(button,[type=submit],[type=reset],[type=button],[role=button]):disabled{opacity:.5;cursor:not-allowed;pointer-events:none}:where([role=group]){margin-bottom:var(--nc-spacing);display:inline-flex}[role=group]>*{border-radius:0;margin:0;position:relative}[role=group]>*+*{--_divider:""}[role=group]>*+:before{content:var(--_divider);inset-inline-start:0;pointer-events:none;background:#ffffff4d;width:1px;position:absolute;top:20%;bottom:20%}[role=group]>:not(.secondary):not(.outline)+.secondary,[role=group]>.secondary+:not(.secondary):not(.outline),[role=group]>:not(.secondary):not(.outline)+.outline,[role=group]>.outline+:not(.secondary):not(.outline),[role=group]>.secondary+.outline,[role=group]>.outline+.secondary,[role=group]>input+*,[role=group]>select+*{--_divider:none}[role=group]>:first-child{border-start-start-radius:var(--nc-radius);border-end-start-radius:var(--nc-radius)}[role=group]>:last-child{border-start-end-radius:var(--nc-radius);border-end-end-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline))){border:1px solid var(--nc-primary);border-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline)))>.outline{border:none}[role=group]>.outline+.outline:before{background:var(--nc-primary)}[role=search] [role=group]>:first-child{border-start-start-radius:5rem;border-end-start-radius:5rem;padding-inline-start:1.25em}[role=search] [role=group]>:last-child{border-start-end-radius:5rem;border-end-end-radius:5rem;padding-inline-end:1.25em}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset]),select,textarea){--_input-bg:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);background-color:var(--_input-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius);min-height:calc(2.5em + 2px);color:var(--nc-text);font:inherit;padding:.5em .75em;font-size:1rem;transition:border-color .2s,box-shadow .2s}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset],[type=date],[type=month],[type=week],[type=time],[type=datetime-local]),select,textarea){width:100%;margin-bottom:var(--nc-spacing)}:where(input,select,textarea):focus-visible{border-color:var(--nc-primary);box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)+:where(small){margin-top:calc(var(--nc-spacing) * -.75);margin-bottom:var(--nc-spacing);color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.875em;display:block}:where(input,select,textarea)[aria-invalid=false]{border-color:var(--nc-valid)}:where(input,select,textarea)[aria-invalid=true]{border-color:var(--nc-invalid)}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=false]+:where(small){color:var(--nc-valid)}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=true]+:where(small){color:var(--nc-invalid)}:where(label){margin-bottom:.25em;display:block}:where(label:has(+input,+select,+textarea)){font-weight:600}:where(label:has(+[type=file],+[type=range])){margin-bottom:.5em}:where(fieldset){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);min-width:0;max-width:100%}:where(legend){padding-inline:.25em;font-weight:600}:where([type=checkbox],[type=radio]){accent-color:var(--nc-primary);width:1.125em;height:1.125em;margin:0}:where(label:has([type=checkbox],[type=radio])){align-items:center;gap:.35em;margin-bottom:.5em;display:flex}:where(label:has([type=checkbox],[type=radio]):last-child){margin-bottom:0}:where([type=search]){border-radius:5rem;padding-inline:1.25em}:where([type=range]){accent-color:var(--nc-primary);width:100%;margin-bottom:var(--nc-spacing)}:where(input[list]){width:auto}:where([type=file]){color:var(--nc-text);font:inherit;cursor:pointer;max-width:100%;margin-bottom:var(--nc-spacing)}:where([type=file])::file-selector-button{margin-right:.75em;background-color:var(--nc-primary);color:var(--nc-primary-contrast);border:1px solid var(--nc-primary);border-radius:var(--nc-radius);font:inherit;cursor:pointer;margin-inline-end:.75em;padding:.5em 1em;transition:background-color .2s,border-color .2s}:where([type=file])::file-selector-button:hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where([type=date],[type=month],[type=week],[type=time],[type=datetime-local]){min-width:10em;margin-bottom:var(--nc-spacing)}:where([type=color]){--_color-size:calc(1em * 1.5 + 1em + 2px);margin-bottom:var(--nc-spacing);--_color-pad:.25em;height:var(--_color-size);width:calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));padding:var(--_color-pad);background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);border:1px solid var(--nc-border);border-radius:var(--nc-radius);cursor:pointer}:where([type=color])::-webkit-color-swatch-wrapper{padding:0}:where([type=color])::-webkit-color-swatch{border-radius:calc(var(--nc-radius) * .5);border:none}:where(label:has([type=checkbox][role=switch])){align-items:center;gap:.5em;display:flex}:where([type=checkbox][role=switch]){appearance:none;background-color:var(--nc-border);cursor:pointer;border-radius:1em;flex-shrink:0;width:2.5em;height:1.25em;margin:0;transition:background-color .2s;position:relative}:where([type=checkbox][role=switch]):before{content:"";background-color:#fff;border-radius:50%;width:calc(1.25em - 4px);height:calc(1.25em - 4px);transition:transform .2s;position:absolute;top:2px;left:2px}:where([type=checkbox][role=switch]):checked{background-color:var(--nc-primary)}:where([type=checkbox][role=switch]):checked:before{transform:translate(1.25em)}:where(table){border-collapse:collapse;width:100%}:where(th,td){border-bottom:1px solid color-mix(in oklch, var(--nc-border), transparent 40%);text-align:start;padding:.5em .75em}:where(thead th,thead td){background-color:var(--nc-surface-2);text-wrap:balance;border-bottom-width:2px;font-weight:600}:where(figure:has(table)){overflow-x:auto}:where(code,kbd,samp){font-family:var(--nc-font-mono);background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:.15em .35em;font-size:.875em}:where(pre){background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:var(--nc-spacing);overflow-x:auto}:where(pre code){font-size:inherit;background:0 0;padding:0}:where(kbd){border:1px solid var(--nc-border);border-bottom-width:2px}:where(img,video,canvas,svg){max-width:100%;height:auto}:where(figure){margin:0}:where(figcaption){color:color-mix(in oklch, var(--nc-text), transparent 40%);margin-top:.5em;font-size:.9em}:where(article){background-color:var(--nc-surface-1);border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);margin-bottom:var(--nc-spacing)}:where(article>header),:where(article>footer){background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);padding:var(--nc-spacing)}:where(article>header){margin:calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);border-bottom:1px solid var(--nc-border);border-radius:var(--nc-radius) var(--nc-radius) 0 0}:where(article>footer){margin:var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);border-top:1px solid var(--nc-border);border-radius:0 0 var(--nc-radius) var(--nc-radius)}:where(article)>:last-child:not(footer),:where(article>header,article>footer)>:last-child{margin-bottom:0}:where(article>header,article>footer)>h1,:where(article>header,article>footer)>h2,:where(article>header,article>footer)>h3,:where(article>header,article>footer)>h4,:where(article>header,article>footer)>h5,:where(article>header,article>footer)>h6{margin-top:0;margin-bottom:0}:where(details){border:1px solid var(--nc-border);border-radius:var(--nc-radius);margin-bottom:.5em;padding:0 1em}:where(summary){cursor:pointer;margin:0 -1em;padding:.75em 1em;font-weight:600;list-style-type:"▶ "}:where(details[open]>summary){list-style-type:"▼ "}:where(summary[role=button]){width:auto;margin:0 -1em;list-style:none;display:block}:where(summary[role=button]):before{content:"▶ ";vertical-align:middle;font-size:.75em;transition:transform .2s;display:inline-block}:where(details[open]>summary[role=button]):before{transform:rotate(90deg)}:where(details[open]){padding-bottom:.75em}details :last-child{margin-bottom:0}:where(dialog){background-color:var(--nc-surface-4);border:1px solid var(--nc-border);border-radius:var(--nc-radius);max-width:min(90vw,40rem);padding:var(--nc-spacing)}dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;animation:.2s nc-backdrop-in}@keyframes nc-backdrop-in{0%{opacity:0}}:where(progress){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);width:100%;height:.5rem;color:var(--nc-primary);border:0;position:relative;overflow:hidden}:where(progress)::-webkit-progress-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3)}:where(progress)::-webkit-progress-value{background-color:var(--nc-primary);border-radius:var(--nc-radius);transition:inline-size .3s}:where(progress)::-moz-progress-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(progress):not([value]){--nc-progress-track:linear-gradient(to right, var(--nc-surface-3) 0%, var(--nc-primary) 25%, var(--nc-primary) 25%, var(--nc-surface-3) 50%, var(--nc-surface-3) 50%, var(--nc-primary) 75%, var(--nc-primary) 75%, var(--nc-surface-3) 100%);--nc-progress-track-size:200% 100%}@media (prefers-reduced-motion:no-preference){@supports selector(progress::after){:where(progress):not([value]):after{content:"";background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate;position:absolute;inset:0}}:where(progress):not([value])::-webkit-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}:where(progress):not([value])::-moz-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}}@keyframes nc-progress-indeterminate{0%{background-position:0 0}to{background-position:-200% 0}}:where(meter){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;width:100%;height:.5rem;overflow:hidden}:where(meter)::-webkit-meter-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;height:.5rem}:where(meter)::-webkit-meter-optimum-value{background-color:var(--nc-valid);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-suboptimum-value{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-even-less-good-value{background-color:var(--nc-invalid);border-radius:var(--nc-radius)}:where(meter)::-moz-meter-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter):-moz-meter-optimum::-moz-meter-bar{background-color:var(--nc-valid)}:where(meter):-moz-meter-sub-optimum::-moz-meter-bar{background-color:var(--nc-primary)}:where(meter):-moz-meter-sub-sub-optimum::-moz-meter-bar{background-color:var(--nc-invalid)}@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){position-area:block-end;position-try-order:normal;position-try-fallbacks:flip-block;border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}@layer nimble.utilities{.secondary:not(a:not([role=button])){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}.secondary:not(a:not([role=button])):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}.secondary:not(a:not([role=button])):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}a:not([role=button]).secondary{color:var(--nc-secondary);-webkit-text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%)}a:not([role=button]).secondary:hover{color:var(--nc-secondary-hover);-webkit-text-decoration-color:var(--nc-secondary-hover);text-decoration-color:var(--nc-secondary-hover)}.outline:not(a:not([role=button])){color:var(--nc-primary);background-color:#0000}.outline:not(a:not([role=button])):hover{background-color:var(--nc-primary-focus);color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}.container{max-width:var(--nc-content-width);padding-inline:var(--nc-spacing);margin-inline:auto}.fluid{max-width:none;padding-inline:var(--nc-spacing);display:block}.full-bleed{grid-column:1/-1}.wide{width:100%;max-width:1200px;padding-inline:var(--nc-spacing);grid-column:1/-1;margin-inline:auto}.striped :where(tbody tr:nth-child(2n)){background-color:var(--nc-surface-2)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.overflow-auto{overflow:auto}}[type=date],[type=month],[type=week],[type=time],[type=datetime-local]{appearance:none}@supports selector(details::details-content){details::details-content{transition:opacity .3s ease, content-visibility .3s ease allow-discrete;opacity:0}details[open]::details-content{opacity:1}@supports (interpolate-size:allow-keywords){details{interpolate-size:allow-keywords}details::details-content{transition:height .3s ease, opacity .3s ease, content-visibility .3s ease allow-discrete;height:0;overflow:clip}details[open]::details-content{height:auto}}}@media print{body{color:#000;background:#fff}a[href]:after{content:" (" attr(href) ")";color:#555;font-size:.85em}a[href^=\#]:after,a[href^=javascript\:]:after{content:none}pre,blockquote{page-break-inside:avoid}h2,h3,h4{page-break-after:avoid}img{max-width:100%!important}@page{margin:2cm}}
1
+ @layer nimble.reset{:where(:not(progress)),:where(),:where(){box-sizing:border-box;background-repeat:no-repeat}:where(html){-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5}:where(body){margin:0}:where(h1){margin-block:.67em;font-size:2em}:where(hr){height:0;color:inherit}:where(nav) :where(ol,ul){padding:0;list-style-type:none}:where(pre){font-family:monospace;font-size:1em}:where(abbr[title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}:where(b,strong){font-weight:bolder}:where(code,kbd,samp){font-family:monospace;font-size:1em}:where(small){font-size:80%}:where(sub,sup){vertical-align:baseline;font-size:75%;line-height:0;position:relative}:where(sub){bottom:-.25em}:where(sup){top:-.5em}:where(iframe){border-style:none}:where(table){border-collapse:collapse;text-indent:0;border-color:currentColor}:where(button,input,select,textarea){font:inherit;letter-spacing:inherit}:where(button,[type=button],[type=reset],[type=submit]){-webkit-appearance:button}:where(fieldset){border:1px solid #a0a0a0}:where(progress){vertical-align:baseline}:where(textarea){resize:vertical;overflow:auto}:where([type=search]){-webkit-appearance:textfield;outline-offset:-2px}:where(){-webkit-appearance:none}:where(),:where(){height:auto}:where(){-webkit-appearance:button;font:inherit}:where(summary){display:list-item}:where(a,area,button,input,label,select,summary,textarea,[tabindex]){touch-action:manipulation;-webkit-tap-highlight-color:transparent}:where([aria-busy=true]){cursor:progress}:where([aria-disabled=true],[disabled]){cursor:not-allowed}@media (prefers-reduced-motion:reduce){:where(*),:where(),:where(){scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}}@layer nimble.base{:root{color-scheme:light dark;--nc-surface-hue:250;--nc-surface-1:light-dark(oklch(.985 .002 var(--nc-surface-hue)),oklch(.17 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-2:light-dark(oklch(.955 .002 var(--nc-surface-hue)),oklch(.2 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-3:light-dark(oklch(.925 .002 var(--nc-surface-hue)),oklch(.23 .005 calc(var(--nc-surface-hue) + 10)));--nc-surface-4:light-dark(oklch(.885 .002 var(--nc-surface-hue)),oklch(.27 .005 calc(var(--nc-surface-hue) + 10)));--nc-text:light-dark(oklch(.28 .005 var(--nc-surface-hue)),oklch(.86 .005 var(--nc-surface-hue)));--nc-border:light-dark(oklch(.83 .005 var(--nc-surface-hue)),oklch(.28 .005 calc(var(--nc-surface-hue) + 10)));--nc-primary:light-dark(oklch(50% .2 250),oklch(60% .2 250));--nc-primary-hover:light-dark(oklch(from var(--nc-primary) calc(l - .1) c h),oklch(from var(--nc-primary) calc(l + .1) c h));--nc-primary-focus:oklch(from var(--nc-primary) l c h / .4);--nc-primary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-secondary:light-dark(oklch(45% .05 250),oklch(60% .05 250));--nc-secondary-hover:light-dark(oklch(from var(--nc-secondary) calc(l - .1) c h),oklch(from var(--nc-secondary) calc(l + .1) c h));--nc-secondary-focus:oklch(from var(--nc-secondary) l c h / .3);--nc-secondary-contrast:light-dark(#fff,oklch(15% .005 250));--nc-valid:light-dark(oklch(52% .17 145),oklch(65% .2 145));--nc-invalid:light-dark(oklch(55% .22 25),oklch(65% .22 25));--nc-font-sans:system-ui, sans-serif;--nc-font-mono:ui-monospace, Cascadia Code, Source Code Pro, Menlo, Consolas, DejaVu Sans Mono, monospace;--nc-spacing:1rem;--nc-radius:.25rem;--nc-content-width:60ch}[data-theme=dark]{color-scheme:dark}[data-theme=light]{color-scheme:light}html{font-family:var(--nc-font-sans);color:var(--nc-text);background-color:var(--nc-surface-1);font-size:100%;line-height:1.5}body{grid-template-columns:1fr min(var(--nc-content-width), calc(100% - 2 * var(--nc-spacing))) 1fr;min-height:100dvh;display:grid}::selection{background-color:var(--nc-primary-focus);color:var(--nc-text)}body>*,body>[style*="display: contents"]>*{grid-column:2;min-width:0}}@layer nimble.utilities{.container{max-width:var(--nc-content-width);padding-inline:var(--nc-spacing);margin-inline:auto}.fluid{max-width:none;padding-inline:var(--nc-spacing);display:block}.full-bleed{grid-column:1/-1}.wide{width:100%;max-width:1200px;padding-inline:var(--nc-spacing);grid-column:1/-1;margin-inline:auto}}@media print{body{color:#000;background:#fff}a[href]:after{content:" (" attr(href) ")";color:#555;font-size:.85em}a[href^=\#]:after,a[href^=javascript\:]:after{content:none}pre,blockquote{page-break-inside:avoid}h2,h3,h4{page-break-after:avoid}img{max-width:100%!important}@page{margin:2cm}}@scope(:root) to (.no-nimble){@layer nimble.base{h1{margin-top:0;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:2rem;font-weight:700;line-height:1.1}h2{margin-top:2rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.75rem;font-weight:700;line-height:1.15}h3{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.5rem;font-weight:700;line-height:1.2}h4{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.25rem;font-weight:700;line-height:1.3}h5{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1.125rem;font-weight:700;line-height:1.4}h6{margin-top:1.5rem;margin-bottom:var(--nc-spacing);text-wrap:balance;font-size:1rem;font-weight:700;line-height:1.5}@media (width<=720px){h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.3rem}}p,ul,ol,dl,blockquote,pre,table,figure,form,fieldset{margin-top:0;margin-bottom:var(--nc-spacing)}ul,ol{padding-inline-start:1.5em}:where(li){margin-bottom:.25em}:where(li)>:where(ul,ol){margin-bottom:0}dt{font-weight:600}dd{margin-inline-start:1.5em;margin-bottom:.5em}blockquote{margin-block:var(--nc-spacing);padding:.25em var(--nc-spacing);border-inline-start:.25rem solid var(--nc-border);margin-inline:0;font-style:italic}:where(blockquote) footer,:where(blockquote) cite{color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.9em;font-style:normal}hr{background-color:color-mix(in oklch, var(--nc-border), transparent 40%);height:1px;margin:var(--nc-spacing) 0;border:none}mark{color:light-dark(inherit,oklch(95% .01 85));background-color:light-dark(#fde68a,oklch(55% .12 85));border-radius:2px;padding:.1em .25em}address{font-style:normal}:where(a:not([role=button])){color:var(--nc-primary);text-underline-offset:.15em;text-decoration:underline;-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-primary), transparent 50%);transition:color .2s,text-decoration-color .2s}:where(a:not([role=button])):visited{color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310));-webkit-text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%);text-decoration-color:color-mix(in oklch, var(--nc-primary) 40%, oklch(38% .15 310) 30%)}:where(a:not([role=button])):hover{color:var(--nc-primary-hover);-webkit-text-decoration-color:var(--nc-primary-hover);text-decoration-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]){--_btn-padding-v:.5em;--_btn-padding-h:1em;padding:var(--_btn-padding-v) var(--_btn-padding-h);background-color:var(--nc-primary);color:var(--nc-primary-contrast);border:1px solid var(--nc-primary);border-radius:var(--nc-radius);font:inherit;cursor:pointer;text-align:center;margin:0;font-size:1rem;line-height:1.5;text-decoration:none;transition:background-color .2s,border-color .2s;display:inline-block}:where(button,[type=submit],[type=reset],[type=button],[role=button]):hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where(button,[type=submit],[type=reset],[type=button],[role=button]):focus-visible{box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where([type=reset]){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}:where([type=reset]):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}:where([type=reset]):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}:where(button,[type=submit],[type=reset],[type=button],[role=button]).inline{--_btn-padding-v:.05em;--_btn-padding-h:.4em;vertical-align:baseline;margin:.1em .15em;font-size:.875em}:where(button,[type=submit],[type=reset],[type=button],[role=button]):disabled{opacity:.5;cursor:not-allowed;pointer-events:none}:where([role=group]){margin-bottom:var(--nc-spacing);display:inline-flex}[role=group]>*{border-radius:0;margin:0;position:relative}[role=group]>*+*{--_divider:""}[role=group]>*+:before{content:var(--_divider);inset-inline-start:0;pointer-events:none;background:#ffffff4d;width:1px;position:absolute;top:20%;bottom:20%}[role=group]>:not(.secondary):not(.outline)+.secondary,[role=group]>.secondary+:not(.secondary):not(.outline),[role=group]>:not(.secondary):not(.outline)+.outline,[role=group]>.outline+:not(.secondary):not(.outline),[role=group]>.secondary+.outline,[role=group]>.outline+.secondary,[role=group]>input+*,[role=group]>select+*{--_divider:none}[role=group]>:first-child{border-start-start-radius:var(--nc-radius);border-end-start-radius:var(--nc-radius)}[role=group]>:last-child{border-start-end-radius:var(--nc-radius);border-end-end-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline))){border:1px solid var(--nc-primary);border-radius:var(--nc-radius)}[role=group]:has(.outline):not(:has(>:not(.outline)))>.outline{border:none}[role=group]>.outline+.outline:before{background:var(--nc-primary)}[role=search] [role=group]>:first-child{border-start-start-radius:5rem;border-end-start-radius:5rem;padding-inline-start:1.25em}[role=search] [role=group]>:last-child{border-start-end-radius:5rem;border-end-end-radius:5rem;padding-inline-end:1.25em}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset]),select,textarea){--_input-bg:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);background-color:var(--_input-bg);border:1px solid var(--nc-border);border-radius:var(--nc-radius);min-height:calc(2.5em + 2px);color:var(--nc-text);font:inherit;padding:.5em .75em;font-size:1rem;transition:border-color .2s,box-shadow .2s}:where(input:not([type=checkbox],[type=radio],[type=range],[type=file],[type=color],[type=submit],[type=button],[type=reset],[type=date],[type=month],[type=week],[type=time],[type=datetime-local]),select,textarea){width:100%;margin-bottom:var(--nc-spacing)}:where(input,select,textarea):focus-visible{border-color:var(--nc-primary);box-shadow:0 0 0 2px var(--nc-primary-focus);outline:none}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)+:where(small){margin-top:calc(var(--nc-spacing) * -.75);margin-bottom:var(--nc-spacing);color:color-mix(in oklch, var(--nc-text), transparent 40%);font-size:.875em;display:block}:where(input,select,textarea)[aria-invalid=false]{border-color:var(--nc-valid)}:where(input,select,textarea)[aria-invalid=true]{border-color:var(--nc-invalid)}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=false]+:where(small){color:var(--nc-valid)}:where(input:not([type=submit],[type=button],[type=reset]),select,textarea)[aria-invalid=true]+:where(small){color:var(--nc-invalid)}:where(label){margin-bottom:.25em;display:block}:where(label:has(+input,+select,+textarea)){font-weight:600}:where(label:has(+[type=file],+[type=range])){margin-bottom:.5em}:where(fieldset){border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);min-width:0;max-width:100%}:where(legend){padding-inline:.25em;font-weight:600}:where([type=checkbox],[type=radio]){accent-color:var(--nc-primary);width:1.125em;height:1.125em;margin:0}:where(label:has([type=checkbox],[type=radio])){align-items:center;gap:.35em;margin-bottom:.5em;display:flex}:where(label:has([type=checkbox],[type=radio]):last-child){margin-bottom:0}:where([type=search]){border-radius:5rem;padding-inline:1.25em}:where([type=range]){accent-color:var(--nc-primary);width:100%;margin-bottom:var(--nc-spacing)}:where(input[list]){width:auto}:where([type=file]){color:var(--nc-text);font:inherit;cursor:pointer;max-width:100%;margin-bottom:var(--nc-spacing)}:where([type=file])::file-selector-button{margin-right:.75em;background-color:var(--nc-primary);color:var(--nc-primary-contrast);border:1px solid var(--nc-primary);border-radius:var(--nc-radius);font:inherit;cursor:pointer;margin-inline-end:.75em;padding:.5em 1em;transition:background-color .2s,border-color .2s}:where([type=file])::file-selector-button:hover{background-color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}:where([type=date],[type=month],[type=week],[type=time],[type=datetime-local]){min-width:10em;margin-bottom:var(--nc-spacing)}:where([type=color]){--_color-size:calc(1em * 1.5 + 1em + 2px);margin-bottom:var(--nc-spacing);--_color-pad:.25em;height:var(--_color-size);width:calc((var(--_color-size) - 2 * var(--_color-pad)) * 1.618 + 2 * var(--_color-pad));padding:var(--_color-pad);background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);border:1px solid var(--nc-border);border-radius:var(--nc-radius);cursor:pointer}:where([type=color])::-webkit-color-swatch-wrapper{padding:0}:where([type=color])::-webkit-color-swatch{border-radius:calc(var(--nc-radius) * .5);border:none}:where(label:has([type=checkbox][role=switch])){align-items:center;gap:.5em;display:flex}:where([type=checkbox][role=switch]){appearance:none;background-color:var(--nc-border);cursor:pointer;border-radius:1em;flex-shrink:0;width:2.5em;height:1.25em;margin:0;transition:background-color .2s;position:relative}:where([type=checkbox][role=switch]):before{content:"";background-color:#fff;border-radius:50%;width:calc(1.25em - 4px);height:calc(1.25em - 4px);transition:transform .2s;position:absolute;top:2px;left:2px}:where([type=checkbox][role=switch]):checked{background-color:var(--nc-primary)}:where([type=checkbox][role=switch]):checked:before{transform:translate(1.25em)}:where(table){border-collapse:collapse;width:100%}:where(th,td){border-bottom:1px solid color-mix(in oklch, var(--nc-border), transparent 40%);text-align:start;padding:.5em .75em}:where(thead th,thead td){background-color:var(--nc-surface-2);text-wrap:balance;border-bottom-width:2px;font-weight:600}:where(figure:has(table)){overflow-x:auto}:where(code,kbd,samp){font-family:var(--nc-font-mono);background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:.15em .35em;font-size:.875em}:where(pre){background-color:var(--nc-surface-2);border-radius:var(--nc-radius);padding:var(--nc-spacing);overflow-x:auto}:where(pre code){font-size:inherit;background:0 0;padding:0}:where(kbd){border:1px solid var(--nc-border);border-bottom-width:2px}:where(img,video,canvas,svg){max-width:100%;height:auto}:where(figure){margin:0}:where(figcaption){color:color-mix(in oklch, var(--nc-text), transparent 40%);margin-top:.5em;font-size:.9em}:where(article){background-color:var(--nc-surface-1);border:1px solid var(--nc-border);border-radius:var(--nc-radius);padding:var(--nc-spacing);margin-bottom:var(--nc-spacing)}:where(article>header),:where(article>footer){background-color:color-mix(in oklch, var(--nc-surface-1), var(--nc-surface-2) 20%);padding:var(--nc-spacing)}:where(article>header){margin:calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1) var(--nc-spacing);border-bottom:1px solid var(--nc-border);border-radius:var(--nc-radius) var(--nc-radius) 0 0}:where(article>footer){margin:var(--nc-spacing) calc(var(--nc-spacing) * -1) calc(var(--nc-spacing) * -1);border-top:1px solid var(--nc-border);border-radius:0 0 var(--nc-radius) var(--nc-radius)}:where(article)>:last-child:not(footer),:where(article>header,article>footer)>:last-child{margin-bottom:0}:where(article>header,article>footer)>h1,:where(article>header,article>footer)>h2,:where(article>header,article>footer)>h3,:where(article>header,article>footer)>h4,:where(article>header,article>footer)>h5,:where(article>header,article>footer)>h6{margin-top:0;margin-bottom:0}:where(details){border:1px solid var(--nc-border);border-radius:var(--nc-radius);margin-bottom:.5em;padding:0 1em}:where(summary){cursor:pointer;margin:0 -1em;padding:.5em 1em;font-weight:600;list-style-type:"▶ "}:where(details[open]>summary){list-style-type:"▼ "}:where(summary[role=button]){width:auto;margin:0 -1em;list-style:none;display:block}:where(summary[role=button]):before{content:"▶ ";vertical-align:middle;font-size:.75em;transition:transform .2s;display:inline-block}:where(details[open]>summary[role=button]):before{transform:rotate(90deg)}:where(details[open]){padding-bottom:.5em}details :last-child{margin-bottom:0}:where(dialog){background-color:var(--nc-surface-4);border:1px solid var(--nc-border);border-radius:var(--nc-radius);max-width:min(90vw,40rem);padding:var(--nc-spacing)}dialog::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;animation:.2s nc-backdrop-in}@keyframes nc-backdrop-in{0%{opacity:0}}:where(progress){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);width:100%;height:.5rem;color:var(--nc-primary);border:0;position:relative;overflow:hidden}:where(progress)::-webkit-progress-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3)}:where(progress)::-webkit-progress-value{background-color:var(--nc-primary);border-radius:var(--nc-radius);transition:inline-size .3s}:where(progress)::-moz-progress-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(progress):not([value]){--nc-progress-track:linear-gradient(to right, var(--nc-surface-3) 0%, var(--nc-primary) 25%, var(--nc-primary) 25%, var(--nc-surface-3) 50%, var(--nc-surface-3) 50%, var(--nc-primary) 75%, var(--nc-primary) 75%, var(--nc-surface-3) 100%);--nc-progress-track-size:200% 100%}@media (prefers-reduced-motion:no-preference){@supports selector(progress::after){:where(progress):not([value]):after{content:"";background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate;position:absolute;inset:0}}:where(progress):not([value])::-webkit-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}:where(progress):not([value])::-moz-progress-bar{background:var(--nc-progress-track);background-size:var(--nc-progress-track-size);animation:12s linear infinite nc-progress-indeterminate}}@keyframes nc-progress-indeterminate{0%{background-position:0 0}to{background-position:-200% 0}}:where(meter){appearance:none;border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;width:100%;height:.5rem;overflow:hidden}:where(meter)::-webkit-meter-bar{border-radius:var(--nc-radius);background-color:var(--nc-surface-3);border:0;height:.5rem}:where(meter)::-webkit-meter-optimum-value{background-color:var(--nc-valid);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-suboptimum-value{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter)::-webkit-meter-even-less-good-value{background-color:var(--nc-invalid);border-radius:var(--nc-radius)}:where(meter)::-moz-meter-bar{background-color:var(--nc-primary);border-radius:var(--nc-radius)}:where(meter):-moz-meter-optimum::-moz-meter-bar{background-color:var(--nc-valid)}:where(meter):-moz-meter-sub-optimum::-moz-meter-bar{background-color:var(--nc-primary)}:where(meter):-moz-meter-sub-sub-optimum::-moz-meter-bar{background-color:var(--nc-invalid)}@supports (appearance:base-select){:where(select){appearance:base-select}:where(select)::picker(select){appearance:base-select}:where(select)::picker-icon{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='10' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 2l6 6 6-6'/%3E%3C/svg%3E");transition:rotate .4s}:where(select):open::picker-icon{rotate:180deg}:where(select)::picker(select){position-area:block-end;position-try-order:normal;position-try-fallbacks:flip-block;border:1px solid var(--nc-border);border-radius:var(--nc-radius);background-color:var(--nc-surface-1);opacity:0;transition:opacity .2s, overlay .2s allow-discrete, display .2s allow-discrete;padding:.25em}:where(select):open::picker(select){opacity:1}@starting-style{:where(select):open::picker(select){opacity:0}}:where(select) option{border-radius:var(--nc-radius);padding:.5em .75em;transition:background-color .15s}:where(select) option:hover{background-color:var(--nc-surface-2)}:where(select) option:checked{font-weight:600}}}@layer nimble.utilities{.secondary:not(a:not([role=button])){background-color:var(--nc-secondary);border-color:var(--nc-secondary);color:var(--nc-secondary-contrast)}.secondary:not(a:not([role=button])):hover{background-color:var(--nc-secondary-hover);border-color:var(--nc-secondary-hover)}.secondary:not(a:not([role=button])):focus-visible{box-shadow:0 0 0 2px var(--nc-secondary-focus)}a:not([role=button]).secondary{color:var(--nc-secondary);-webkit-text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%);text-decoration-color:color-mix(in oklch, var(--nc-secondary), transparent 50%)}a:not([role=button]).secondary:hover{color:var(--nc-secondary-hover);-webkit-text-decoration-color:var(--nc-secondary-hover);text-decoration-color:var(--nc-secondary-hover)}.outline:not(a:not([role=button])){color:var(--nc-primary);background-color:#0000}.outline:not(a:not([role=button])):hover{background-color:var(--nc-primary-focus);color:var(--nc-primary-hover);border-color:var(--nc-primary-hover)}.striped :where(tbody tr:nth-child(2n)){background-color:var(--nc-surface-2)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.overflow-auto{overflow:auto}}[type=date],[type=month],[type=week],[type=time],[type=datetime-local]{appearance:none}@supports selector(details::details-content){details::details-content{transition:opacity .3s ease, content-visibility .3s ease allow-discrete;opacity:0}details[open]::details-content{opacity:1}@supports (interpolate-size:allow-keywords){details{interpolate-size:allow-keywords}details::details-content{transition:height .3s ease, opacity .3s ease, content-visibility .3s ease allow-discrete;height:0;overflow:clip}details[open]::details-content{height:auto}}}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leftium/nimble.css",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "A minimal class/classless CSS library combining Open Props design tokens with PicoCSS aesthetics",
5
5
  "type": "module",
6
6
  "main": "dist/nimble.min.css",
package/src/_buttons.scss CHANGED
@@ -26,7 +26,7 @@
26
26
  text-decoration: none;
27
27
  display: inline-block;
28
28
  text-align: center;
29
- margin: 0 0.25em 0.25em 0;
29
+ margin: 0;
30
30
  transition: background-color 0.2s, border-color 0.2s;
31
31
  }
32
32
 
package/src/_config.scss CHANGED
@@ -13,6 +13,13 @@ $enable-dialog: true !default;
13
13
  $enable-switch: true !default;
14
14
  $enable-details: true !default;
15
15
 
16
+ // --- Scoping ---
17
+ // Component-level styles are wrapped in @scope (:root) to ($exclude-selector)
18
+ // so they don't apply inside elements matching this selector.
19
+ // Document-level styles (reset, colors, body grid) remain global.
20
+ // Set to null to disable scoping (all styles apply globally).
21
+ $exclude-selector: '.no-nimble' !default;
22
+
16
23
  // --- Colors (oklch parameters) ---
17
24
 
18
25
  // Primary (main accent: links, primary buttons, focus rings, checkboxes)
package/src/_details.scss CHANGED
@@ -27,8 +27,10 @@
27
27
  // Stretch summary across the horizontal padding area, then
28
28
  // re-apply vertical + horizontal padding on itself. When
29
29
  // collapsed the text is vertically centered with equal padding.
30
+ // Vertical padding matches button padding (0.5em) so collapsed
31
+ // details height equals button height (2px border + 2.5em).
30
32
  margin: 0 -1em;
31
- padding: 0.75em 1em;
33
+ padding: 0.5em 1em;
32
34
  // Custom markers fix iOS Safari's tiny native disclosure triangle.
33
35
  // Full-size Unicode triangles inherit font metrics and sit on the
34
36
  // baseline like native markers.
@@ -49,7 +51,7 @@
49
51
  :where(summary[role="button"]) {
50
52
  display: block;
51
53
  width: auto;
52
- margin: 0 -1em; // restore stretch (button sets 0 0.25em 0.25em 0)
54
+ margin: 0 -1em; // restore stretch (button sets margin: 0)
53
55
  list-style: none; // remove ▶/▼ marker — replaced by ::before
54
56
  }
55
57
 
@@ -67,7 +69,7 @@
67
69
 
68
70
  // When open, restore vertical padding for content spacing.
69
71
  :where(details[open]) {
70
- padding-bottom: 0.75em;
72
+ padding-bottom: 0.5em;
71
73
  }
72
74
 
73
75
  // Kill last-child bottom margin so it doesn't stack with
@@ -16,9 +16,9 @@
16
16
  background-color: var(#{$prefix}surface-1);
17
17
  }
18
18
 
19
- // Grid centering: content sits in the middle column,
20
- // full-bleed elements can span 1 / -1.
21
- // See spec §7.1
19
+ // Grid centering: define the 3-column grid on body.
20
+ // Column assignment (grid-column: 2) is in _grid-columns.scss
21
+ // so it can be scoped — allowing .no-nimble elements to escape.
22
22
  body {
23
23
  display: grid;
24
24
  grid-template-columns:
@@ -28,21 +28,6 @@
28
28
  min-height: 100dvh;
29
29
  }
30
30
 
31
- body > * {
32
- grid-column: 2;
33
- min-width: 0; // Allow grid children to shrink below intrinsic content width
34
- }
35
-
36
- // Fix for frameworks (SvelteKit, etc.) that insert a
37
- // <div style="display: contents"> wrapper between <body> and content.
38
- // display: contents removes the element from the box tree for layout,
39
- // but NOT for CSS selector matching — so body > * misses the actual
40
- // content elements. This rule mirrors the body > * rule above.
41
- body > [style*='display: contents'] > * {
42
- grid-column: 2;
43
- min-width: 0;
44
- }
45
-
46
31
  // Selection styling using primary accent
47
32
  ::selection {
48
33
  background-color: var(#{$prefix}primary-focus);
@@ -0,0 +1,26 @@
1
+ // ==========================================================================
2
+ // nimble.css — Grid Column Assignment
3
+ // Assigns body's direct children to the centered column (column 2).
4
+ // Global (not scoped) so the body grid layout always applies.
5
+ // ==========================================================================
6
+
7
+ @use 'config' as *;
8
+
9
+ @layer nimble.base {
10
+
11
+ body > * {
12
+ grid-column: 2;
13
+ min-width: 0; // Allow grid children to shrink below intrinsic content width
14
+ }
15
+
16
+ // Fix for frameworks (SvelteKit, etc.) that insert a
17
+ // <div style="display: contents"> wrapper between <body> and content.
18
+ // display: contents removes the element from the box tree for layout,
19
+ // but NOT for CSS selector matching — so body > * misses the actual
20
+ // content elements. This rule mirrors the body > * rule above.
21
+ body > [style*='display: contents'] > * {
22
+ grid-column: 2;
23
+ min-width: 0;
24
+ }
25
+
26
+ }
@@ -0,0 +1,43 @@
1
+ // ==========================================================================
2
+ // nimble.css — Layout Utilities
3
+ // Global layout classes that interact with the body grid.
4
+ // Always available, including on .no-nimble elements.
5
+ // ==========================================================================
6
+
7
+ @use 'config' as *;
8
+
9
+ @if $enable-utilities {
10
+
11
+ @layer nimble.utilities {
12
+
13
+ // Centered content container (useful inside fluid layout)
14
+ .container {
15
+ max-width: var(#{$prefix}content-width);
16
+ margin-inline: auto;
17
+ padding-inline: var(#{$prefix}spacing);
18
+ }
19
+
20
+ // Full viewport width with padding (opt-in on body or wrapper)
21
+ .fluid {
22
+ display: block;
23
+ max-width: none;
24
+ padding-inline: var(#{$prefix}spacing);
25
+ }
26
+
27
+ // Break out of centered container to full width
28
+ .full-bleed {
29
+ grid-column: 1 / -1;
30
+ }
31
+
32
+ // Break out to wide max-width
33
+ .wide {
34
+ grid-column: 1 / -1;
35
+ width: 100%;
36
+ max-width: #{$wide-width};
37
+ margin-inline: auto;
38
+ padding-inline: var(#{$prefix}spacing);
39
+ }
40
+
41
+ }
42
+
43
+ }
@@ -0,0 +1,28 @@
1
+ // ==========================================================================
2
+ // nimble.css — Scopeable Modules
3
+ // Component-level styles that can be wrapped in @scope for opt-out scoping.
4
+ // Uses meta.load-css() so these can be loaded inside @scope blocks.
5
+ // ==========================================================================
6
+
7
+ @use 'sass:meta';
8
+
9
+ @mixin load {
10
+ @include meta.load-css('typography');
11
+ @include meta.load-css('links');
12
+ @include meta.load-css('buttons');
13
+ @include meta.load-css('forms');
14
+ @include meta.load-css('tables');
15
+ @include meta.load-css('code');
16
+ @include meta.load-css('media');
17
+ @include meta.load-css('article');
18
+ @include meta.load-css('details');
19
+ @include meta.load-css('dialog');
20
+ @include meta.load-css('utilities');
21
+ }
22
+
23
+ @mixin load-with-extras {
24
+ @include load;
25
+ @include meta.load-css('progress');
26
+ @include meta.load-css('meter');
27
+ @include meta.load-css('select');
28
+ }
@@ -70,7 +70,7 @@ $_heading-phone: (
70
70
  padding-inline-start: 1.5em;
71
71
  }
72
72
 
73
- li {
73
+ :where(li) {
74
74
  margin-bottom: 0.25em;
75
75
  }
76
76
 
@@ -113,7 +113,7 @@ $_heading-phone: (
113
113
  border: none;
114
114
  height: 1px;
115
115
  background-color: color-mix(in oklch, var(#{$prefix}border), transparent 40%);
116
- margin: calc(var(#{$prefix}spacing) * 2) 0;
116
+ margin: var(#{$prefix}spacing) 0;
117
117
  }
118
118
 
119
119
  // ----- Mark -----
@@ -1,46 +1,15 @@
1
1
  // ==========================================================================
2
- // nimble.css — Utilities
3
- // Spec §10: .container, .fluid, .full-bleed, .wide, .striped,
4
- // .visually-hidden, .overflow-auto
2
+ // nimble.css — Utilities (Scopeable)
3
+ // Non-layout utilities: striped tables, visibility, overflow.
4
+ // Layout utilities are in _layout-utilities.scss (global).
5
5
  // ==========================================================================
6
6
 
7
- @use 'sass:string';
8
7
  @use 'config' as *;
9
8
 
10
9
  @if $enable-utilities {
11
10
 
12
11
  @layer nimble.utilities {
13
12
 
14
- // ----- Layout -----
15
-
16
- // Centered content container (useful inside fluid layout)
17
- .container {
18
- max-width: var(#{$prefix}content-width);
19
- margin-inline: auto;
20
- padding-inline: var(#{$prefix}spacing);
21
- }
22
-
23
- // Full viewport width with padding (opt-in on body or wrapper)
24
- .fluid {
25
- display: block;
26
- max-width: none;
27
- padding-inline: var(#{$prefix}spacing);
28
- }
29
-
30
- // Break out of centered container to full width
31
- .full-bleed {
32
- grid-column: 1 / -1;
33
- }
34
-
35
- // Break out to wide max-width
36
- .wide {
37
- grid-column: 1 / -1;
38
- width: 100%;
39
- max-width: #{$wide-width};
40
- margin-inline: auto;
41
- padding-inline: var(#{$prefix}spacing);
42
- }
43
-
44
13
  // ----- Tables -----
45
14
 
46
15
  // Striped table rows
@@ -4,28 +4,25 @@
4
4
  // ==========================================================================
5
5
 
6
6
  @use 'config' as *;
7
+ @use 'scopeable';
7
8
 
8
9
  // Layer order declaration — emitted first in CSS output.
9
10
  // Lower layers lose to higher layers in cascade.
10
11
  @use 'layers';
11
12
 
12
- // Phase 2: Core
13
+ // Global styles — always apply regardless of scoping
13
14
  @use 'reset';
14
15
  @use 'colors';
15
16
  @use 'document';
16
- @use 'typography';
17
-
18
- // Phase 3: Elements
19
- @use 'links';
20
- @use 'buttons';
21
- @use 'forms';
22
- @use 'tables';
23
- @use 'code';
24
- @use 'media';
25
- @use 'article';
26
- @use 'details';
27
- @use 'dialog';
17
+ @use 'grid-columns';
18
+ @use 'layout-utilities';
28
19
  @use 'print';
29
20
 
30
- // Phase 4: Utilities
31
- @use 'utilities';
21
+ // Component-level styles — optionally scoped
22
+ @if $exclude-selector {
23
+ @scope (:root) to (#{$exclude-selector}) {
24
+ @include scopeable.load;
25
+ }
26
+ } @else {
27
+ @include scopeable.load;
28
+ }
package/src/nimble.scss CHANGED
@@ -3,34 +3,27 @@
3
3
  // Everything: core + progress, meter, and select
4
4
  // ==========================================================================
5
5
 
6
+ @forward 'config';
6
7
  @use 'config' as *;
8
+ @use 'scopeable';
7
9
 
8
10
  // Layer order declaration — emitted first in CSS output.
9
11
  // Lower layers lose to higher layers in cascade.
10
12
  @use 'layers';
11
13
 
12
- // Phase 2: Core
14
+ // Global styles — always apply regardless of scoping
13
15
  @use 'reset';
14
16
  @use 'colors';
15
17
  @use 'document';
16
- @use 'typography';
17
-
18
- // Phase 3: Elements
19
- @use 'links';
20
- @use 'buttons';
21
- @use 'forms';
22
- @use 'tables';
23
- @use 'code';
24
- @use 'media';
25
- @use 'article';
26
- @use 'details';
27
- @use 'dialog';
18
+ @use 'grid-columns';
19
+ @use 'layout-utilities';
28
20
  @use 'print';
29
21
 
30
- // Phase 3: Optional extras
31
- @use 'progress';
32
- @use 'meter';
33
- @use 'select';
34
-
35
- // Phase 4: Utilities
36
- @use 'utilities';
22
+ // Component-level styles optionally scoped
23
+ @if $exclude-selector {
24
+ @scope (:root) to (#{$exclude-selector}) {
25
+ @include scopeable.load-with-extras;
26
+ }
27
+ } @else {
28
+ @include scopeable.load-with-extras;
29
+ }