Menu
AkurAI-Build
publicLatest change 0cf28150faedd8c150474a4f16be4c9922c04f56 - feat: add Ponytail UI design system by Olafur Bui
/*
* Ponytail UI
* A clean-room, CSS-first design layer for Bunfork native pages.
* It borrows principles, not source code, from public design systems.
* It is not a Tailwind fork or a compatibility layer.
*/
/* Foundations */
:root,
[data-mode="auto"] {
color-scheme: light dark;
--pt-color-canvas: light-dark(#f6faf7, #090c0a);
--pt-color-canvas-subtle: light-dark(#edf4ef, #0b0f0c);
--pt-color-surface: light-dark(#ffffff, #111713);
--pt-color-surface-2: light-dark(#edf4ef, #18201b);
--pt-color-surface-3: light-dark(#e1ece4, #202a23);
--pt-color-ink: light-dark(#142119, #f4f7f4);
--pt-color-ink-muted: light-dark(#3f5446, #b1bcb4);
--pt-color-ink-quiet: light-dark(#52675a, #93a096);
--pt-color-border: light-dark(#c9d8cd, #303c33);
--pt-color-border-strong: light-dark(#718878, #5a6b5d);
--pt-color-code: light-dark(#183f28, #dce9df);
--pt-color-code-bg: light-dark(#eef4f0, #050806);
--pt-color-success: light-dark(#176c3a, #82efad);
--pt-color-on-success: light-dark(#ffffff, #07120b);
--pt-color-warning: light-dark(#8a4a12, #f1aa6d);
--pt-color-on-warning: light-dark(#ffffff, #211004);
--pt-color-warning-surface: light-dark(#fff5e9, #19130e);
--pt-color-danger: light-dark(#a9362a, #ff9d86);
--pt-color-on-danger: light-dark(#ffffff, #240906);
--pt-color-danger-surface: light-dark(#fff0ed, #21100d);
--pt-color-info: light-dark(#215f92, #8bc9ff);
--pt-color-on-info: light-dark(#ffffff, #07131f);
--pt-color-info-surface: light-dark(#edf6ff, #0c1821);
--pt-color-control: light-dark(#ffffff, #111713);
--pt-color-control-hover: light-dark(#edf4ef, #202a23);
--pt-color-control-disabled: light-dark(#e1e8e3, #28302a);
--pt-color-scrim: rgb(0 0 0 / 52%);
--pt-font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--pt-font-mono: ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, monospace;
--pt-text-xs: .75rem;
--pt-text-sm: .875rem;
--pt-text-md: 1rem;
--pt-text-lg: 1.125rem;
--pt-text-xl: clamp(1.35rem, 2vw, 1.6rem);
--pt-text-2xl: clamp(1.8rem, 3.5vw, 2.6rem);
--pt-text-display: clamp(2.75rem, 7vw, 5.5rem);
--pt-space-1: .25rem;
--pt-space-2: .5rem;
--pt-space-3: .75rem;
--pt-space-4: 1rem;
--pt-space-5: 1.5rem;
--pt-space-6: 2rem;
--pt-space-7: 3rem;
--pt-space-8: 4rem;
--pt-space-9: 6rem;
--pt-radius-xs: 3px;
--pt-radius-sm: 6px;
--pt-radius-md: 8px;
--pt-radius-lg: 12px;
--pt-radius-pill: 999px;
--pt-duration-fast: 120ms;
--pt-duration-medium: 200ms;
--pt-ease-out: cubic-bezier(.16, 1, .3, 1);
--pt-shadow-1: 0 1px 2px rgb(0 0 0 / 12%);
--pt-shadow-2: 0 4px 8px rgb(0 0 0 / 16%);
--pt-z-base: 0;
--pt-z-sticky: 20;
--pt-z-popover: 40;
--pt-z-modal: 60;
--pt-z-toast: 80;
--pt-z-tooltip: 100;
--pt-measure: 70ch;
--pt-shell: 76rem;
--pt-control-height: 2.75rem;
--pt-control-border: 1px;
--pt-control-icon: 1.25rem;
--pt-color-accent: light-dark(#176c3a, #82efad);
--pt-color-accent-strong: light-dark(#0f572e, #5cda8d);
--pt-color-on-accent: light-dark(#ffffff, #07120b);
--pt-color-accent-surface: light-dark(#e6f5eb, #0d1b12);
--pt-color-accent-border: light-dark(#55966d, #2d6542);
}
[data-mode="light"] {
color-scheme: light;
}
[data-mode="dark"] {
color-scheme: dark;
}
:root,
[data-palette="fork"] {
--pt-color-accent: light-dark(#176c3a, #82efad);
--pt-color-accent-strong: light-dark(#0f572e, #5cda8d);
--pt-color-on-accent: light-dark(#ffffff, #07120b);
--pt-color-accent-surface: light-dark(#e6f5eb, #0d1b12);
--pt-color-accent-border: light-dark(#55966d, #2d6542);
}
[data-palette="tide"] {
--pt-color-accent: light-dark(#145d9c, #8bc9ff);
--pt-color-accent-strong: light-dark(#0d4a7e, #65b5f4);
--pt-color-on-accent: light-dark(#ffffff, #07131f);
--pt-color-accent-surface: light-dark(#e8f3ff, #0c1821);
--pt-color-accent-border: light-dark(#5b8fbb, #376d98);
}
[data-palette="ember"] {
--pt-color-accent: light-dark(#974115, #ffb185);
--pt-color-accent-strong: light-dark(#77300e, #f4925e);
--pt-color-on-accent: light-dark(#ffffff, #1d0b03);
--pt-color-accent-surface: light-dark(#fff0e8, #21110a);
--pt-color-accent-border: light-dark(#bd7955, #9d5834);
}
[data-palette="berry"] {
--pt-color-accent: light-dark(#804171, #f2a9df);
--pt-color-accent-strong: light-dark(#67325b, #d987c4);
--pt-color-on-accent: light-dark(#ffffff, #1a0716);
--pt-color-accent-surface: light-dark(#faedf7, #20101d);
--pt-color-accent-border: light-dark(#a8789d, #8f567f);
}
body.pt-catalog:has(#catalog-mode-auto:checked) { color-scheme: light dark; }
body.pt-catalog:has(#catalog-mode-light:checked) { color-scheme: light; }
body.pt-catalog:has(#catalog-mode-dark:checked) { color-scheme: dark; }
body.pt-catalog:has(#catalog-palette-fork:checked) {
--pt-color-accent: light-dark(#176c3a, #82efad);
--pt-color-accent-strong: light-dark(#0f572e, #5cda8d);
--pt-color-on-accent: light-dark(#ffffff, #07120b);
--pt-color-accent-surface: light-dark(#e6f5eb, #0d1b12);
--pt-color-accent-border: light-dark(#55966d, #2d6542);
}
body.pt-catalog:has(#catalog-palette-tide:checked) {
--pt-color-accent: light-dark(#145d9c, #8bc9ff);
--pt-color-accent-strong: light-dark(#0d4a7e, #65b5f4);
--pt-color-on-accent: light-dark(#ffffff, #07131f);
--pt-color-accent-surface: light-dark(#e8f3ff, #0c1821);
--pt-color-accent-border: light-dark(#5b8fbb, #376d98);
}
body.pt-catalog:has(#catalog-palette-ember:checked) {
--pt-color-accent: light-dark(#974115, #ffb185);
--pt-color-accent-strong: light-dark(#77300e, #f4925e);
--pt-color-on-accent: light-dark(#ffffff, #1d0b03);
--pt-color-accent-surface: light-dark(#fff0e8, #21110a);
--pt-color-accent-border: light-dark(#bd7955, #9d5834);
}
body.pt-catalog:has(#catalog-palette-berry:checked) {
--pt-color-accent: light-dark(#804171, #f2a9df);
--pt-color-accent-strong: light-dark(#67325b, #d987c4);
--pt-color-on-accent: light-dark(#ffffff, #1a0716);
--pt-color-accent-surface: light-dark(#faedf7, #20101d);
--pt-color-accent-border: light-dark(#a8789d, #8f567f);
}
/* Existing Bunfork aliases keep the original pages on the same token contract. */
:root,
[data-mode],
[data-palette] {
--bg: var(--pt-color-canvas);
--surface: var(--pt-color-surface);
--surface-2: var(--pt-color-surface-2);
--surface-3: var(--pt-color-surface-3);
--text: var(--pt-color-ink);
--muted: var(--pt-color-ink-muted);
--quiet: var(--pt-color-ink-quiet);
--line: var(--pt-color-border);
--line-strong: var(--pt-color-border-strong);
--accent: var(--pt-color-accent);
--accent-strong: var(--pt-color-accent-strong);
--accent-ink: var(--pt-color-on-accent);
--warm: var(--pt-color-warning);
--danger: var(--pt-color-danger);
--code-bg: var(--pt-color-code-bg);
}
:root {
accent-color: var(--pt-color-accent);
scrollbar-color: var(--pt-color-border-strong) var(--pt-color-canvas);
scrollbar-width: thin;
}
::selection {
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
}
::-webkit-scrollbar {
width: .75rem;
height: .75rem;
}
::-webkit-scrollbar-track {
background: var(--pt-color-canvas);
}
::-webkit-scrollbar-thumb {
border: 3px solid var(--pt-color-canvas);
border-radius: var(--pt-radius-pill);
background: var(--pt-color-border-strong);
}
::-webkit-scrollbar-thumb:hover {
background: var(--pt-color-accent);
}
/* Layout primitives */
.pt-container {
width: min(var(--pt-shell), calc(100% - 2.5rem));
margin-inline: auto;
}
.pt-measure {
max-width: var(--pt-measure);
}
.pt-stack {
display: flex;
flex-direction: column;
gap: var(--pt-stack-space, var(--pt-space-4));
}
.pt-cluster {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--pt-cluster-space, var(--pt-space-3));
}
.pt-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr));
gap: var(--pt-grid-space, var(--pt-space-5));
}
.pt-split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(16rem, .75fr);
align-items: start;
gap: clamp(var(--pt-space-6), 6vw, var(--pt-space-9));
}
.pt-flow > * {
margin-block: 0;
}
.pt-flow > * + * {
margin-block-start: var(--pt-flow-space, var(--pt-space-4));
}
:where(.pt-stack, .pt-cluster, .pt-grid, .pt-flow)[data-gap="1"] {
--pt-stack-space: var(--pt-space-1);
--pt-cluster-space: var(--pt-space-1);
--pt-grid-space: var(--pt-space-1);
--pt-flow-space: var(--pt-space-1);
}
:where(.pt-stack, .pt-cluster, .pt-grid, .pt-flow)[data-gap="2"] {
--pt-stack-space: var(--pt-space-2);
--pt-cluster-space: var(--pt-space-2);
--pt-grid-space: var(--pt-space-2);
--pt-flow-space: var(--pt-space-2);
}
:where(.pt-stack, .pt-cluster, .pt-grid, .pt-flow)[data-gap="4"] {
--pt-stack-space: var(--pt-space-4);
--pt-cluster-space: var(--pt-space-4);
--pt-grid-space: var(--pt-space-4);
--pt-flow-space: var(--pt-space-4);
}
:where(.pt-stack, .pt-cluster, .pt-grid, .pt-flow)[data-gap="6"] {
--pt-stack-space: var(--pt-space-6);
--pt-cluster-space: var(--pt-space-6);
--pt-grid-space: var(--pt-space-6);
--pt-flow-space: var(--pt-space-6);
}
:where(.pt-stack, .pt-cluster, .pt-grid, .pt-flow)[data-gap="8"] {
--pt-stack-space: var(--pt-space-8);
--pt-cluster-space: var(--pt-space-8);
--pt-grid-space: var(--pt-space-8);
--pt-flow-space: var(--pt-space-8);
}
.pt-scroll-x {
max-width: 100%;
overflow-x: auto;
overscroll-behavior-inline: contain;
}
.pt-visually-hidden {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
white-space: nowrap !important;
border: 0 !important;
}
.pt-wrap {
overflow-wrap: anywhere;
}
/* Type and surfaces */
.pt-display {
max-width: 20ch;
margin: 0;
font-size: var(--pt-text-display);
line-height: 1.02;
letter-spacing: -.04em;
text-wrap: balance;
}
.pt-heading {
margin: 0;
font-size: var(--pt-text-2xl);
line-height: 1.08;
letter-spacing: -.03em;
text-wrap: balance;
}
.pt-lede {
max-width: 62ch;
margin: 0;
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-lg);
line-height: 1.65;
text-wrap: pretty;
}
.pt-meta {
color: var(--pt-color-ink-quiet);
font-size: var(--pt-text-sm);
}
.pt-mono,
.pt-kbd {
font-family: var(--pt-font-mono);
}
.pt-kbd {
display: inline-flex;
min-width: 1.75rem;
min-height: 1.75rem;
align-items: center;
justify-content: center;
padding-inline: .45rem;
border: 1px solid var(--pt-color-border-strong);
border-radius: var(--pt-radius-sm);
background: var(--pt-color-surface-2);
box-shadow: inset 0 -1px 0 var(--pt-color-border);
color: var(--pt-color-ink);
font-size: var(--pt-text-xs);
font-weight: 700;
}
.pt-panel {
padding: clamp(var(--pt-space-4), 3vw, var(--pt-space-6));
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-lg);
background: var(--pt-color-surface);
color: var(--pt-color-ink);
}
.pt-panel[data-tone="accent"] {
border-color: var(--pt-color-accent-border);
background: var(--pt-color-accent-surface);
}
.pt-rule {
height: 1px;
border: 0;
background: var(--pt-color-border);
}
/* Actions */
.pt-button,
.pt-button:where(a, button) {
display: inline-flex;
min-height: var(--pt-control-height);
align-items: center;
justify-content: center;
gap: var(--pt-space-2);
padding: .7rem 1rem;
border: 1px solid var(--pt-color-accent);
border-radius: var(--pt-radius-md);
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
font: inherit;
font-weight: 760;
line-height: 1.2;
text-align: center;
text-decoration: none;
touch-action: manipulation;
cursor: pointer;
transition:
background-color var(--pt-duration-fast) var(--pt-ease-out),
border-color var(--pt-duration-fast) var(--pt-ease-out),
color var(--pt-duration-fast) var(--pt-ease-out),
transform var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-button:hover {
border-color: var(--pt-color-accent-strong);
background: var(--pt-color-accent-strong);
color: var(--pt-color-on-accent);
text-decoration: none;
}
.pt-button:active {
transform: translateY(1px);
}
.pt-button[data-variant="secondary"] {
border-color: var(--pt-color-border-strong);
background: var(--pt-color-surface);
color: var(--pt-color-ink);
}
.pt-button[data-variant="secondary"]:hover {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent-surface);
color: var(--pt-color-accent);
}
.pt-button[data-variant="quiet"] {
border-color: transparent;
background: transparent;
color: var(--pt-color-accent);
}
.pt-button[data-variant="quiet"]:hover {
border-color: var(--pt-color-border);
background: var(--pt-color-surface-2);
}
.pt-button[data-variant="danger"] {
border-color: var(--pt-color-danger);
background: var(--pt-color-danger);
color: var(--pt-color-on-danger);
}
.pt-button:disabled,
.pt-button[aria-disabled="true"] {
opacity: .5;
cursor: not-allowed;
transform: none;
}
.pt-toolbar,
.pt-segmented {
display: flex;
flex-wrap: wrap;
gap: var(--pt-space-2);
align-items: center;
}
.pt-segmented {
width: fit-content;
padding: var(--pt-space-1);
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-md);
background: var(--pt-color-surface-2);
}
.pt-segmented a,
.pt-segmented button {
display: inline-flex;
min-height: var(--pt-control-height);
align-items: center;
padding-inline: .8rem;
border: 0;
border-radius: var(--pt-radius-sm);
background: transparent;
color: var(--pt-color-ink-muted);
font: inherit;
font-size: var(--pt-text-sm);
font-weight: 700;
text-decoration: none;
cursor: pointer;
}
.pt-segmented [aria-current="page"],
.pt-segmented [aria-selected="true"] {
background: var(--pt-color-surface);
color: var(--pt-color-ink);
box-shadow: var(--pt-shadow-1);
}
/* Forms */
.pt-field {
display: grid;
gap: var(--pt-space-2);
}
.pt-field > label,
.pt-legend {
color: var(--pt-color-ink);
font-weight: 720;
}
.pt-hint,
.pt-error {
margin: 0;
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-sm);
}
.pt-error {
color: var(--pt-color-danger);
font-weight: 700;
}
.pt-input,
.pt-select,
.pt-textarea {
width: 100%;
min-height: var(--pt-control-height);
padding: .7rem .8rem;
border: var(--pt-control-border) solid var(--pt-color-border-strong);
border-radius: var(--pt-radius-md);
appearance: none;
background-color: var(--pt-color-control);
color: var(--pt-color-ink);
font: inherit;
line-height: 1.35;
caret-color: var(--pt-color-accent);
transition:
background-color var(--pt-duration-fast) var(--pt-ease-out),
border-color var(--pt-duration-fast) var(--pt-ease-out),
box-shadow var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-input:hover,
.pt-select:hover,
.pt-textarea:hover {
border-color: var(--pt-color-accent-border);
background-color: var(--pt-color-control-hover);
}
.pt-select {
padding-inline-end: 2.75rem;
background-image:
linear-gradient(45deg, transparent 50%, var(--pt-color-ink-muted) 50%),
linear-gradient(135deg, var(--pt-color-ink-muted) 50%, transparent 50%);
background-position:
calc(100% - 1.1rem) calc(50% - .1rem),
calc(100% - .8rem) calc(50% - .1rem);
background-repeat: no-repeat;
background-size: .35rem .35rem;
cursor: pointer;
}
.pt-select[multiple] {
padding-inline-end: .8rem;
background-image: none;
}
.pt-select option {
background: var(--pt-color-surface);
color: var(--pt-color-ink);
}
.pt-textarea {
min-height: 7rem;
resize: vertical;
field-sizing: content;
}
.pt-textarea::-webkit-resizer {
border: 3px solid transparent;
border-inline-end-color: var(--pt-color-accent);
border-bottom-color: var(--pt-color-accent);
background: transparent;
}
.pt-input::placeholder,
.pt-textarea::placeholder {
color: var(--pt-color-ink-quiet);
opacity: 1;
}
.pt-input::-webkit-search-cancel-button,
.pt-input::-webkit-inner-spin-button,
.pt-input::-webkit-outer-spin-button {
appearance: none;
margin: 0;
}
.pt-input[type="number"] {
appearance: textfield;
font-variant-numeric: tabular-nums;
}
.pt-input[type="date"],
.pt-input[type="time"],
.pt-input[type="datetime-local"] {
font-variant-numeric: tabular-nums;
}
.pt-date-control {
position: relative;
display: block;
}
.pt-date-control .pt-input {
padding-inline-end: 3rem;
}
.pt-date-control::after {
position: absolute;
inset-inline-end: .9rem;
bottom: .85rem;
width: 1rem;
height: .9rem;
border: 2px solid var(--pt-color-accent);
border-radius: var(--pt-radius-xs);
background:
linear-gradient(var(--pt-color-accent), var(--pt-color-accent)) 0 .2rem / 100% 2px no-repeat,
radial-gradient(circle, var(--pt-color-accent) 1px, transparent 1.5px) .05rem .42rem / .35rem .3rem;
content: "";
pointer-events: none;
}
.pt-date-control .pt-input::-webkit-calendar-picker-indicator {
position: absolute;
inset-inline-end: .4rem;
width: 2rem;
height: 2rem;
padding: 0;
cursor: pointer;
opacity: 0;
}
[dir="rtl"] .pt-select {
background-position:
1.1rem calc(50% - .1rem),
.8rem calc(50% - .1rem);
}
.pt-input[type="file"] {
padding: .35rem;
cursor: pointer;
}
.pt-input::file-selector-button {
min-height: 2rem;
margin-inline-end: var(--pt-space-3);
padding-inline: var(--pt-space-3);
border: 1px solid var(--pt-color-accent-border);
border-radius: var(--pt-radius-sm);
background: var(--pt-color-accent-surface);
color: var(--pt-color-accent);
font: inherit;
font-weight: 720;
cursor: pointer;
}
.pt-input::file-selector-button:hover {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
}
.pt-color-input {
width: 4rem;
min-width: 4rem;
padding: .3rem;
cursor: pointer;
}
.pt-color-input::-webkit-color-swatch-wrapper {
padding: 0;
}
.pt-color-input::-webkit-color-swatch {
border: 0;
border-radius: var(--pt-radius-sm);
}
.pt-color-input::-moz-color-swatch {
border: 0;
border-radius: var(--pt-radius-sm);
}
.pt-input[readonly],
.pt-textarea[readonly] {
border-style: dashed;
background: var(--pt-color-surface-2);
}
.pt-input:disabled,
.pt-select:disabled,
.pt-textarea:disabled {
border-color: var(--pt-color-border);
background: var(--pt-color-control-disabled);
color: var(--pt-color-ink-quiet);
cursor: not-allowed;
}
.pt-input:-webkit-autofill,
.pt-input:-webkit-autofill:hover,
.pt-input:-webkit-autofill:focus {
-webkit-text-fill-color: var(--pt-color-ink);
box-shadow: inset 0 0 0 1000px var(--pt-color-control);
}
.pt-input[aria-invalid="true"],
.pt-select[aria-invalid="true"],
.pt-textarea[aria-invalid="true"] {
border-color: var(--pt-color-danger);
box-shadow: 0 0 0 1px var(--pt-color-danger);
}
.pt-check-list {
display: grid;
gap: var(--pt-space-3);
margin: 0;
padding: 0;
border: 0;
}
.pt-check {
display: flex;
min-height: var(--pt-control-height);
align-items: center;
gap: var(--pt-space-3);
color: var(--pt-color-ink);
cursor: pointer;
}
.pt-check:has(input:disabled) {
color: var(--pt-color-ink-quiet);
cursor: not-allowed;
}
.pt-check input {
display: grid;
width: 1.35rem;
height: 1.35rem;
flex: 0 0 auto;
place-content: center;
margin: 0;
border: 1px solid var(--pt-color-border-strong);
appearance: none;
background: var(--pt-color-control);
color: var(--pt-color-on-accent);
cursor: pointer;
transition:
background-color var(--pt-duration-fast) var(--pt-ease-out),
border-color var(--pt-duration-fast) var(--pt-ease-out),
transform var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-check input[type="checkbox"] {
border-radius: var(--pt-radius-sm);
}
.pt-check input[type="radio"] {
border-radius: 50%;
}
.pt-check input[type="checkbox"]::before {
width: .78rem;
height: .78rem;
background: currentColor;
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0, 43% 62%);
content: "";
transform: scale(0);
transform-origin: center;
transition: transform var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-check input[type="radio"]::before {
width: .65rem;
height: .65rem;
border-radius: 50%;
background: currentColor;
content: "";
transform: scale(0);
transition: transform var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-check input:checked,
.pt-check input:indeterminate {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent);
}
.pt-check input:checked::before,
.pt-check input:indeterminate::before {
transform: scale(1);
}
.pt-check input[type="checkbox"]:indeterminate::before {
height: .15rem;
border-radius: var(--pt-radius-pill);
clip-path: none;
}
.pt-check input[role="switch"] {
display: flex;
width: 2.75rem;
height: 1.5rem;
align-items: center;
justify-content: flex-start;
padding: .18rem;
border-radius: var(--pt-radius-pill);
}
.pt-check input[role="switch"]::before {
width: 1rem;
height: 1rem;
border-radius: 50%;
background: var(--pt-color-ink-quiet);
clip-path: none;
content: "";
transform: translateX(0);
transition:
background-color var(--pt-duration-fast) var(--pt-ease-out),
transform var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-check input[role="switch"]:checked::before {
background: var(--pt-color-on-accent);
transform: translateX(1.2rem);
}
[dir="rtl"] .pt-check input[role="switch"]:checked::before {
transform: translateX(-1.2rem);
}
.pt-check input:disabled {
border-color: var(--pt-color-border);
background: var(--pt-color-control-disabled);
cursor: not-allowed;
}
.pt-range {
width: 100%;
height: var(--pt-control-height);
margin: 0;
appearance: none;
background: transparent;
cursor: pointer;
}
.pt-range::-webkit-slider-runnable-track {
height: .45rem;
border-radius: var(--pt-radius-pill);
background: var(--pt-color-surface-3);
}
.pt-range::-moz-range-track {
height: .45rem;
border-radius: var(--pt-radius-pill);
background: var(--pt-color-surface-3);
}
.pt-range::-moz-range-progress {
height: .45rem;
border-radius: var(--pt-radius-pill);
background: var(--pt-color-accent);
}
.pt-range::-webkit-slider-thumb {
width: 1.25rem;
height: 1.25rem;
margin-top: -.4rem;
border: 3px solid var(--pt-color-surface);
border-radius: 50%;
appearance: none;
background: var(--pt-color-accent);
box-shadow: 0 0 0 1px var(--pt-color-accent);
}
.pt-range::-moz-range-thumb {
width: 1rem;
height: 1rem;
border: 3px solid var(--pt-color-surface);
border-radius: 50%;
background: var(--pt-color-accent);
box-shadow: 0 0 0 1px var(--pt-color-accent);
}
.pt-range:disabled {
opacity: .55;
cursor: not-allowed;
}
.pt-output {
display: inline-flex;
min-width: 3rem;
min-height: 2rem;
align-items: center;
justify-content: center;
padding-inline: var(--pt-space-2);
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-sm);
background: var(--pt-color-surface);
color: var(--pt-color-ink);
font-family: var(--pt-font-mono);
font-variant-numeric: tabular-nums;
}
.pt-search {
display: flex;
flex-wrap: wrap;
gap: var(--pt-space-2);
}
.pt-search .pt-input {
flex: 1 1 15rem;
}
/* Navigation */
.pt-breadcrumbs ol,
.pt-pagination,
.pt-tabs {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--pt-space-2);
margin: 0;
padding: 0;
list-style: none;
}
.pt-breadcrumbs li {
color: var(--pt-color-ink-quiet);
font-size: var(--pt-text-sm);
}
.pt-breadcrumbs li + li::before {
margin-inline-end: var(--pt-space-2);
color: var(--pt-color-border-strong);
content: "/";
}
.pt-breadcrumbs a {
display: inline-flex;
min-height: var(--pt-control-height);
align-items: center;
}
.pt-tabs {
border-bottom: 1px solid var(--pt-color-border);
}
.pt-tabs a {
display: inline-flex;
min-height: var(--pt-control-height);
align-items: center;
padding-inline: var(--pt-space-3);
border-bottom: 2px solid transparent;
color: var(--pt-color-ink-muted);
font-weight: 700;
text-decoration: none;
}
.pt-tabs a:hover,
.pt-tabs a[aria-current="page"] {
border-color: var(--pt-color-accent);
color: var(--pt-color-ink);
}
.pt-pagination {
justify-content: space-between;
}
.pt-pagination a,
.pt-pagination span {
display: inline-flex;
min-width: var(--pt-control-height);
min-height: var(--pt-control-height);
align-items: center;
justify-content: center;
padding-inline: var(--pt-space-3);
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-md);
text-decoration: none;
}
.pt-pagination [aria-current="page"] {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
}
/* Disclosure and top-layer content */
.pt-disclosure {
border-block: 1px solid var(--pt-color-border);
}
.pt-disclosure + .pt-disclosure {
border-top: 0;
}
.pt-disclosure summary {
display: flex;
min-height: var(--pt-control-height);
align-items: center;
gap: var(--pt-space-3);
padding-block: .85rem;
color: var(--pt-color-ink);
font-weight: 750;
list-style: none;
cursor: pointer;
}
.pt-disclosure summary::-webkit-details-marker {
display: none;
}
.pt-disclosure summary::before {
display: grid;
width: 1.5rem;
height: 1.5rem;
flex: 0 0 auto;
place-items: center;
border: 1px solid var(--pt-color-border-strong);
border-radius: var(--pt-radius-sm);
background: var(--pt-color-surface);
color: var(--pt-color-accent);
content: "+";
font-size: 1rem;
line-height: 1;
}
.pt-disclosure[open] summary {
color: var(--pt-color-accent);
}
.pt-disclosure[open] summary::before {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
content: "−";
}
.pt-disclosure > :not(summary) {
max-width: var(--pt-measure);
margin-block: 0 var(--pt-space-4);
color: var(--pt-color-ink-muted);
}
.pt-popover,
dialog.pt-dialog {
width: min(22rem, calc(100vw - 2rem));
padding: var(--pt-space-4);
border: 1px solid var(--pt-color-border-strong);
border-radius: var(--pt-radius-lg);
background: var(--pt-color-surface);
box-shadow: var(--pt-shadow-2);
color: var(--pt-color-ink);
}
.pt-popover-trigger {
anchor-name: --pt-popover-trigger;
}
.pt-popover:popover-open {
position: fixed;
position-anchor: --pt-popover-trigger;
position-area: bottom span-right;
inset: auto;
display: grid;
gap: var(--pt-space-3);
max-height: min(32rem, calc(100dvh - 2rem));
margin: var(--pt-space-2) 0 0;
overflow: auto;
}
@supports not (position-area: bottom) {
.pt-popover:popover-open {
inset-inline-end: var(--pt-space-4);
bottom: var(--pt-space-4);
margin: 0;
}
}
dialog.pt-dialog {
inset: 0;
max-height: min(40rem, calc(100dvh - 2rem));
margin: auto;
overflow: auto;
}
dialog.pt-dialog::backdrop {
background: var(--pt-color-scrim);
}
.pt-menu {
display: grid;
gap: var(--pt-space-1);
margin: 0;
padding: 0;
list-style: none;
}
.pt-menu a,
.pt-menu button {
display: flex;
width: 100%;
min-height: var(--pt-control-height);
align-items: center;
padding: .65rem .75rem;
border: 0;
border-radius: var(--pt-radius-sm);
background: transparent;
color: var(--pt-color-ink);
font: inherit;
text-align: start;
text-decoration: none;
cursor: pointer;
}
.pt-menu a:hover,
.pt-menu button:hover {
background: var(--pt-color-surface-2);
}
/* Feedback and status */
.pt-alert {
display: grid;
gap: var(--pt-space-2);
padding: var(--pt-space-4);
border: 1px solid var(--pt-color-accent-border);
border-radius: var(--pt-radius-md);
background: var(--pt-color-accent-surface);
color: var(--pt-color-ink);
}
.pt-alert[data-tone="warning"] {
border-color: var(--pt-color-warning);
background: var(--pt-color-warning-surface);
}
.pt-alert[data-tone="danger"] {
border-color: var(--pt-color-danger);
background: var(--pt-color-danger-surface);
}
.pt-alert[data-tone="info"] {
border-color: var(--pt-color-info);
background: var(--pt-color-info-surface);
}
.pt-alert > * {
margin: 0;
}
.pt-alert :where(ul, ol) {
padding-inline-start: 1.25rem;
}
.pt-alert li::marker {
color: currentColor;
font-weight: 800;
}
.pt-badge {
display: inline-flex;
min-height: 1.75rem;
align-items: center;
gap: var(--pt-space-1);
padding-inline: .55rem;
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-pill);
background: var(--pt-color-surface-2);
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-xs);
font-weight: 760;
line-height: 1;
}
.pt-badge[data-tone="success"] {
border-color: var(--pt-color-accent-border);
background: var(--pt-color-accent-surface);
color: var(--pt-color-accent);
}
.pt-badge[data-tone="danger"] {
border-color: var(--pt-color-danger);
background: var(--pt-color-danger-surface);
color: var(--pt-color-danger);
}
.pt-toast {
display: flex;
max-width: 28rem;
align-items: start;
justify-content: space-between;
gap: var(--pt-space-4);
padding: var(--pt-space-4);
border: 1px solid var(--pt-color-accent-border);
border-radius: var(--pt-radius-md);
background: var(--pt-color-surface-3);
box-shadow: var(--pt-shadow-2);
color: var(--pt-color-ink);
}
.pt-toast > * {
margin: 0;
}
.pt-toast .pt-button[data-variant="quiet"] {
color: var(--pt-color-accent);
}
.pt-toast .pt-button[data-variant="quiet"]:hover {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent-surface);
color: var(--pt-color-accent);
}
.pt-skeleton {
min-height: .9rem;
border-radius: var(--pt-radius-sm);
background: var(--pt-color-surface-3);
}
.pt-skeleton[data-width="25"] { width: 25%; }
.pt-skeleton[data-width="48"] { width: 48%; }
.pt-skeleton[data-width="50"] { width: 50%; }
.pt-skeleton[data-width="75"] { width: 75%; }
.pt-skeleton[data-width="100"] { width: 100%; }
@media (prefers-reduced-motion: no-preference) {
.pt-skeleton {
animation: pt-pulse 1.4s ease-in-out infinite alternate;
}
}
@keyframes pt-pulse {
to {
opacity: .5;
}
}
/* Content and data */
.pt-card {
display: grid;
gap: var(--pt-space-4);
min-width: 0;
padding: var(--pt-space-5);
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-lg);
background: var(--pt-color-surface);
}
.pt-card > * {
margin-block: 0;
}
.pt-card p {
color: var(--pt-color-ink-muted);
}
.pt-card[data-interactive="true"] {
transition: border-color var(--pt-duration-fast) var(--pt-ease-out);
}
.pt-card[data-interactive="true"]:hover {
border-color: var(--pt-color-accent);
}
.pt-avatar {
display: inline-grid;
width: 2.5rem;
height: 2.5rem;
flex: 0 0 auto;
place-items: center;
overflow: hidden;
border: 1px solid var(--pt-color-border-strong);
border-radius: 50%;
background: var(--pt-color-accent-surface);
color: var(--pt-color-accent);
font-weight: 800;
}
.pt-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.pt-avatar-group {
display: flex;
align-items: center;
}
.pt-avatar-group .pt-avatar + .pt-avatar {
margin-inline-start: -.65rem;
}
.pt-media-row,
.pt-person-row,
.pt-activity-row {
display: flex;
min-width: 0;
align-items: center;
gap: var(--pt-space-3);
}
.pt-activity-row {
align-items: start;
padding-block: var(--pt-space-3);
border-bottom: 1px solid var(--pt-color-border);
}
.pt-activity-row:last-child {
border-bottom: 0;
}
.pt-media-row > :last-child,
.pt-person-row > :last-child,
.pt-activity-row > :last-child {
min-width: 0;
}
.pt-table {
width: 100%;
border-collapse: collapse;
font-size: var(--pt-text-sm);
}
.pt-table caption {
padding: 0 0 var(--pt-space-3);
color: var(--pt-color-ink-muted);
font-weight: 700;
text-align: start;
}
.pt-table th,
.pt-table td {
padding: .8rem;
border-bottom: 1px solid var(--pt-color-border);
text-align: start;
vertical-align: top;
}
.pt-table th {
color: var(--pt-color-ink);
font-weight: 760;
}
.pt-table td {
color: var(--pt-color-ink-muted);
}
.pt-number {
font-family: var(--pt-font-mono);
font-variant-numeric: tabular-nums;
}
.pt-stat-list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
gap: var(--pt-space-5);
margin: 0;
}
.pt-stat-list div {
min-width: 0;
}
.pt-stat-list dt {
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-sm);
}
.pt-stat-list dd {
margin: var(--pt-space-1) 0 0;
color: var(--pt-color-ink);
font-size: var(--pt-text-xl);
font-weight: 800;
font-variant-numeric: tabular-nums;
}
.pt-progress {
width: 100%;
height: .65rem;
overflow: hidden;
border: 0;
border-radius: var(--pt-radius-pill);
appearance: none;
background: var(--pt-color-surface-3);
accent-color: var(--pt-color-accent);
}
.pt-progress::-webkit-progress-bar {
background: var(--pt-color-surface-3);
}
.pt-progress::-webkit-progress-value {
background: var(--pt-color-accent);
}
.pt-progress::-moz-progress-bar {
background: var(--pt-color-accent);
}
.pt-meter {
width: 100%;
height: .75rem;
border: 0;
border-radius: var(--pt-radius-pill);
appearance: none;
background: var(--pt-color-surface-3);
}
.pt-meter::-webkit-meter-bar {
border: 0;
border-radius: var(--pt-radius-pill);
background: var(--pt-color-surface-3);
}
.pt-meter::-webkit-meter-optimum-value {
border-radius: var(--pt-radius-pill);
background: var(--pt-color-success);
}
.pt-meter::-webkit-meter-suboptimum-value {
border-radius: var(--pt-radius-pill);
background: var(--pt-color-warning);
}
.pt-meter::-webkit-meter-even-less-good-value {
border-radius: var(--pt-radius-pill);
background: var(--pt-color-danger);
}
.pt-meter::-moz-meter-bar {
border-radius: var(--pt-radius-pill);
background: var(--pt-color-success);
}
.pt-meter:-moz-meter-sub-optimum::-moz-meter-bar {
background: var(--pt-color-warning);
}
.pt-meter:-moz-meter-sub-sub-optimum::-moz-meter-bar {
background: var(--pt-color-danger);
}
.pt-step-list {
display: flex;
flex-wrap: wrap;
gap: var(--pt-space-3);
margin: 0;
padding: 0;
list-style: none;
counter-reset: pt-step;
}
.pt-step-list li {
display: flex;
min-height: var(--pt-control-height);
align-items: center;
gap: var(--pt-space-2);
color: var(--pt-color-ink-muted);
counter-increment: pt-step;
}
.pt-step-list li::before {
display: grid;
width: 1.75rem;
height: 1.75rem;
place-items: center;
border: 1px solid var(--pt-color-border-strong);
border-radius: 50%;
content: counter(pt-step);
font-size: var(--pt-text-xs);
font-weight: 800;
}
.pt-step-list [aria-current="step"] {
color: var(--pt-color-ink);
font-weight: 760;
}
.pt-step-list [aria-current="step"]::before {
border-color: var(--pt-color-accent);
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
}
.pt-price {
display: flex;
align-items: baseline;
gap: var(--pt-space-2);
}
.pt-price data {
color: var(--pt-color-ink);
font-size: var(--pt-text-2xl);
font-weight: 820;
letter-spacing: -.03em;
}
.pt-price span {
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-sm);
}
.pt-empty {
display: grid;
max-width: 34rem;
justify-items: start;
gap: var(--pt-space-3);
padding-block: var(--pt-space-5);
}
.pt-empty > * {
margin: 0;
}
.pt-calendar {
display: grid;
grid-template-columns: repeat(7, minmax(2.25rem, 1fr));
gap: var(--pt-space-1);
max-width: 26rem;
}
.pt-calendar span,
.pt-calendar time {
display: grid;
min-height: 2.5rem;
place-items: center;
border-radius: var(--pt-radius-sm);
color: var(--pt-color-ink-muted);
font-size: var(--pt-text-sm);
text-decoration: none;
}
.pt-calendar span {
min-height: 1.75rem;
color: var(--pt-color-ink-quiet);
font-size: var(--pt-text-xs);
font-weight: 760;
}
.pt-calendar time[aria-current="date"] {
background: var(--pt-color-accent);
color: var(--pt-color-on-accent);
font-weight: 800;
}
/* Catalog and guide */
.pt-catalog,
.pt-guide {
--bg: var(--pt-color-canvas);
--surface: var(--pt-color-surface);
--surface-2: var(--pt-color-surface-2);
--surface-3: var(--pt-color-surface-3);
--text: var(--pt-color-ink);
--muted: var(--pt-color-ink-muted);
--quiet: var(--pt-color-ink-quiet);
--line: var(--pt-color-border);
--line-strong: var(--pt-color-border-strong);
--accent: var(--pt-color-accent);
--accent-strong: var(--pt-color-accent-strong);
--accent-ink: var(--pt-color-on-accent);
--code-bg: var(--pt-color-code-bg);
background: var(--pt-color-canvas);
color: var(--pt-color-ink);
}
.pt-catalog-hero {
display: grid;
min-height: min(34rem, calc(100svh - 4.4rem));
align-content: center;
gap: var(--pt-space-5);
padding-block: clamp(var(--pt-space-8), 10vw, var(--pt-space-9));
}
.pt-catalog-hero .pt-cluster {
margin-top: var(--pt-space-2);
}
.pt-theme-band {
border-block: 1px solid var(--pt-color-border);
background: var(--pt-color-surface);
}
.pt-theme-controls {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: var(--pt-space-5);
padding-block: var(--pt-space-5);
}
.pt-theme-options {
display: flex;
flex-wrap: wrap;
gap: var(--pt-space-2) var(--pt-space-4);
margin: 0;
padding: 0;
border: 0;
}
.pt-theme-options legend {
width: 100%;
margin-bottom: var(--pt-space-1);
color: var(--pt-color-ink);
font-weight: 760;
}
.pt-theme-options .pt-check {
min-height: var(--pt-control-height);
}
.pt-theme-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
border-top: 1px solid var(--pt-color-border);
}
.pt-theme-swatch {
min-width: 0;
padding: var(--pt-space-5);
background: var(--pt-color-canvas);
color: var(--pt-color-ink);
}
.pt-theme-swatch + .pt-theme-swatch {
border-inline-start: 1px solid var(--pt-color-border);
}
.pt-theme-swatch:nth-child(4n + 1) {
border-inline-start: 0;
}
.pt-theme-swatch:nth-child(n + 5) {
border-top: 1px solid var(--pt-color-border);
}
.pt-theme-swatch strong,
.pt-theme-swatch small {
display: block;
}
.pt-theme-swatch small {
margin-top: var(--pt-space-1);
color: var(--pt-color-ink-muted);
}
.pt-theme-swatch i {
display: block;
width: 100%;
height: .5rem;
margin-top: var(--pt-space-3);
border-radius: var(--pt-radius-pill);
background: var(--pt-color-accent);
}
.pt-catalog-list {
padding-block: clamp(var(--pt-space-7), 8vw, var(--pt-space-9));
}
.pt-specimen {
display: grid;
grid-template-columns: minmax(12rem, .48fr) minmax(0, 1.52fr);
gap: clamp(var(--pt-space-5), 5vw, var(--pt-space-8));
padding-block: clamp(var(--pt-space-6), 5vw, var(--pt-space-8));
border-top: 1px solid var(--pt-color-border);
}
.pt-specimen:last-child {
border-bottom: 1px solid var(--pt-color-border);
}
.pt-specimen-copy > * {
margin-block: 0;
}
.pt-specimen-copy > * + * {
margin-block-start: var(--pt-space-3);
}
.pt-specimen-copy h2 {
font-size: var(--pt-text-xl);
}
.pt-specimen-copy p {
color: var(--pt-color-ink-muted);
}
.pt-source {
font-size: var(--pt-text-xs);
}
.pt-source a {
color: var(--pt-color-accent);
}
.pt-demo {
min-width: 0;
align-self: start;
padding: clamp(var(--pt-space-4), 3vw, var(--pt-space-6));
border-radius: var(--pt-radius-lg);
background: var(--pt-color-surface-2);
}
.pt-token-table code {
color: var(--pt-color-accent);
}
.pt-contrast-pair {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
overflow: hidden;
border: 1px solid var(--pt-color-border);
border-radius: var(--pt-radius-lg);
}
.pt-contrast-pair > div {
min-height: 8rem;
padding: var(--pt-space-5);
background: var(--pt-color-canvas);
color: var(--pt-color-ink);
}
/* Existing site compatibility */
.site-header {
background: color-mix(in srgb, var(--pt-color-canvas) 96%, transparent);
}
.brand-avatar,
.signal-band {
border-color: var(--pt-color-accent-border);
}
.home-page {
background:
radial-gradient(circle at 78% 12%, color-mix(in srgb, var(--pt-color-accent) 8%, transparent), transparent 24rem),
var(--pt-color-canvas);
}
.command-window,
.route-trace {
box-shadow: var(--pt-shadow-2);
}
.boundary-section {
background: var(--pt-color-warning-surface);
}
.boundary-section p,
.doc-callout.warning p {
color: var(--pt-color-ink-muted);
}
.boundary-section .button:hover {
color: var(--pt-color-on-warning);
}
.docs-page,
.not-found-page {
background: var(--pt-color-canvas-subtle);
}
.docs-content pre {
color: var(--pt-color-code);
}
.doc-callout,
.route-trace-status,
.slug-chips a:hover,
.slug-chips a[aria-current="page"] {
background: var(--pt-color-accent-surface);
}
.doc-callout.warning {
background: var(--pt-color-warning-surface);
}
.route-trace-status {
border-color: var(--pt-color-accent-border);
}
.top-nav a,
.docs-nav a,
.breadcrumbs a,
.footer-grid nav a {
display: inline-flex;
min-height: 2.75rem;
align-items: center;
}
.nav-more {
display: none;
position: relative;
}
.nav-more summary {
display: inline-flex;
min-height: var(--pt-control-height);
align-items: center;
padding-inline: .25rem;
color: var(--pt-color-ink-muted);
font-size: .88rem;
font-weight: 700;
list-style: none;
cursor: pointer;
}
.nav-more summary::-webkit-details-marker {
display: none;
}
.nav-more summary::after {
margin-inline-start: .35rem;
color: var(--pt-color-accent);
content: "+";
}
.nav-more[open] summary::after {
content: "−";
}
.nav-more-menu {
position: absolute;
top: calc(100% + .35rem);
inset-inline-end: 0;
z-index: var(--pt-z-popover);
display: grid;
min-width: 10rem;
padding: var(--pt-space-2);
border: 1px solid var(--pt-color-border-strong);
border-radius: var(--pt-radius-md);
background: var(--pt-color-surface);
box-shadow: var(--pt-shadow-2);
}
.top-nav .nav-more-menu a {
display: flex;
width: 100%;
padding-inline: var(--pt-space-3);
border-radius: var(--pt-radius-sm);
}
.nav-more-menu a:hover {
background: var(--pt-color-surface-2);
}
.docs-nav ul {
display: grid;
gap: .2rem;
margin: 0;
padding: 0;
list-style: none;
}
.docs-nav-group h2 {
margin: 0 0 .35rem;
color: var(--pt-color-ink-quiet);
font-size: var(--pt-text-xs);
font-weight: 720;
letter-spacing: 0;
line-height: 1.35;
}
/* Interaction and accessibility */
:where(
.pt-button,
.pt-input,
.pt-select,
.pt-textarea,
.pt-check input,
.pt-range,
.pt-segmented a,
.pt-segmented button,
.pt-tabs a,
.pt-pagination a,
.pt-menu a,
.pt-menu button
):focus-visible {
outline: 3px solid var(--pt-color-accent);
outline-offset: 3px;
}
@media (max-width: 58rem) {
.pt-theme-controls,
.pt-theme-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.pt-theme-swatch:nth-child(odd) {
border-inline-start: 0;
}
.pt-theme-swatch:nth-child(n + 3) {
border-top: 1px solid var(--pt-color-border);
}
.pt-specimen,
.pt-split {
grid-template-columns: 1fr;
}
.pt-specimen {
gap: var(--pt-space-5);
}
}
@media (max-width: 44rem) {
.pt-container {
width: min(100% - 1.5rem, var(--pt-shell));
}
.pt-theme-controls,
.pt-theme-grid,
.pt-contrast-pair {
grid-template-columns: 1fr;
}
.pt-theme-swatch + .pt-theme-swatch {
border-inline-start: 0;
border-top: 1px solid var(--pt-color-border);
}
.pt-catalog-hero {
min-height: auto;
padding-block: var(--pt-space-8);
}
.pt-display {
font-size: clamp(2.75rem, 14vw, 4rem);
}
.pt-search,
.pt-toolbar {
align-items: stretch;
flex-direction: column;
}
.pt-search .pt-button,
.pt-toolbar .pt-button {
width: 100%;
}
.pt-step-list {
flex-direction: column;
}
.top-nav > .nav-health,
.top-nav > .nav-route-demo {
display: none;
}
.nav-more {
display: block;
}
}
@media (prefers-reduced-motion: reduce) {
.pt-skeleton {
animation: none;
}
.pt-button,
.pt-card {
transition-duration: .01ms;
}
}
@media (prefers-contrast: more) {
.pt-button,
.pt-panel,
.pt-card,
.pt-alert,
.pt-input,
.pt-select,
.pt-textarea,
.pt-popover,
dialog.pt-dialog {
border-width: 2px;
}
.pt-meta,
.pt-source,
.pt-hint {
color: var(--pt-color-ink-muted);
}
}
@media (forced-colors: active) {
.pt-button,
.pt-badge,
.pt-alert,
.pt-panel,
.pt-card,
.pt-input,
.pt-select,
.pt-textarea,
.pt-check input,
.pt-popover,
dialog.pt-dialog,
.pt-tabs a,
.pt-pagination a,
.pt-pagination span {
border-color: CanvasText;
}
.pt-select {
padding-inline-end: .8rem;
appearance: auto;
background-image: none;
}
.pt-progress,
.pt-meter {
appearance: auto;
}
.pt-check input:checked,
.pt-check input:indeterminate {
border-color: Highlight;
background: Highlight;
color: HighlightText;
forced-color-adjust: none;
}
.pt-range::-webkit-slider-runnable-track,
.pt-progress::-webkit-progress-bar,
.pt-meter::-webkit-meter-bar {
border: 1px solid CanvasText;
}
.pt-date-control::after {
border-color: ButtonText;
background: none;
}
.pt-button:focus-visible,
.pt-input:focus-visible,
.pt-select:focus-visible,
.pt-textarea:focus-visible,
.pt-check input:focus-visible,
.pt-range:focus-visible {
outline-color: Highlight;
}
}
@media print {
.pt-button,
.pt-panel,
.pt-card,
.pt-alert,
.pt-demo {
box-shadow: none;
}
.pt-theme-swatch,
.pt-panel,
.pt-card,
.pt-alert,
.pt-demo {
border: 1px solid currentColor;
}
}