/* shadcn/ui v4 primitives translated from Tailwind utilities to plain CSS.
   Every value is lifted from apps/v4/registry/new-york-v4/ui/*.tsx. */

/* ---------- focus ring (shared) ---------- */
.sc-ring:focus-visible{border-color:var(--ring);box-shadow:0 0 0 var(--ring-width) var(--ring-color);outline:none}
[data-invalid="true"]{border-color:var(--destructive);box-shadow:0 0 0 var(--ring-width) color-mix(in oklab,var(--destructive) 20%,transparent)}

/* ---------- button ---------- */
.sc-btn{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-md);font-family:inherit;font-size:var(--text-sm);line-height:var(--text-sm--line-height);font-weight:var(--font-weight-medium);white-space:nowrap;border:1px solid transparent;background:none;cursor:pointer;transition:all var(--duration-default) var(--ease-default);height:var(--control-h);padding-inline:calc(var(--spacing)*4);color:inherit}
.sc-btn>svg{pointer-events:none;flex-shrink:0;width:1rem;height:1rem}
.sc-btn:disabled{pointer-events:none;opacity:.5}
.sc-btn:focus-visible{border-color:var(--ring);box-shadow:0 0 0 var(--ring-width) var(--ring-color);outline:none}
.sc-btn[data-variant="default"]{background:var(--primary);color:var(--primary-foreground)}
.sc-btn[data-variant="default"]:hover{background:color-mix(in oklab,var(--primary) 90%,transparent)}
.sc-btn[data-variant="destructive"]{background:var(--destructive);color:#fff}
.sc-btn[data-variant="destructive"]:hover{background:color-mix(in oklab,var(--destructive) 90%,transparent)}
.sc-btn[data-variant="outline"]{border-color:var(--border);background:var(--background);box-shadow:var(--shadow-xs)}
.sc-btn[data-variant="outline"]:hover{background:var(--accent);color:var(--accent-foreground)}
.sc-btn[data-variant="secondary"]{background:var(--secondary);color:var(--secondary-foreground)}
.sc-btn[data-variant="secondary"]:hover{background:color-mix(in oklab,var(--secondary) 80%,transparent)}
.sc-btn[data-variant="ghost"]{background:transparent}
.sc-btn[data-variant="ghost"]:hover{background:var(--accent);color:var(--accent-foreground)}
.sc-btn[data-variant="link"]{background:transparent;color:var(--primary);text-underline-offset:4px}
.sc-btn[data-variant="link"]:hover{text-decoration:underline}
.sc-btn[data-size="xs"]{height:var(--control-h-xs);padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);gap:calc(var(--spacing)*1)}
.sc-btn[data-size="xs"]>svg{width:.75rem;height:.75rem}
.sc-btn[data-size="sm"]{height:var(--control-h-sm);padding-inline:calc(var(--spacing)*3);gap:calc(var(--spacing)*1.5)}
.sc-btn[data-size="lg"]{height:var(--control-h-lg);padding-inline:calc(var(--spacing)*6)}
.sc-btn[data-size="icon"]{width:var(--control-h);height:var(--control-h);padding:0}
.sc-btn[data-size="icon-xs"]{width:var(--control-h-xs);height:var(--control-h-xs);padding:0}
.sc-btn[data-size="icon-xs"]>svg{width:.75rem;height:.75rem}
.sc-btn[data-size="icon-sm"]{width:var(--control-h-sm);height:var(--control-h-sm);padding:0}
.sc-btn[data-size="icon-lg"]{width:var(--control-h-lg);height:var(--control-h-lg);padding:0}

/* ---------- button group ---------- */
.sc-btn-group{display:flex;width:fit-content;align-items:stretch}
.sc-btn-group>*:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0}
.sc-btn-group>*:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}
.sc-btn-group[data-orientation="vertical"]{flex-direction:column}
.sc-btn-group[data-orientation="vertical"]>*:not(:first-child){border-radius:0 0 var(--radius-md) var(--radius-md);border-top-width:0;border-left-width:1px}
.sc-btn-group[data-orientation="vertical"]>*:not(:last-child){border-radius:var(--radius-md) var(--radius-md) 0 0}
.sc-btn-group-text{display:flex;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--muted);padding-inline:calc(var(--spacing)*4);font-size:var(--text-sm);font-weight:var(--font-weight-medium);box-shadow:var(--shadow-xs)}

/* ---------- badge ---------- */
.sc-badge{display:inline-flex;width:fit-content;flex-shrink:0;align-items:center;justify-content:center;gap:calc(var(--spacing)*1);overflow:hidden;border-radius:var(--radius-full);border:1px solid transparent;padding:calc(var(--spacing)*0.5) calc(var(--spacing)*2);font-size:var(--text-xs);line-height:var(--text-xs--line-height);font-weight:var(--font-weight-medium);white-space:nowrap;transition:var(--transition-colors)}
.sc-badge>svg{width:.75rem;height:.75rem;pointer-events:none}
.sc-badge[data-variant="default"]{background:var(--primary);color:var(--primary-foreground)}
.sc-badge[data-variant="secondary"]{background:var(--secondary);color:var(--secondary-foreground)}
.sc-badge[data-variant="destructive"]{background:var(--destructive);color:#fff}
.sc-badge[data-variant="outline"]{border-color:var(--border);color:var(--foreground)}
.sc-badge[data-variant="ghost"]{color:var(--foreground)}

/* ---------- card ---------- */
.sc-card{display:flex;flex-direction:column;gap:calc(var(--spacing)*6);border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--card);color:var(--card-foreground);padding-block:calc(var(--spacing)*6);box-shadow:var(--shadow-sm)}
.sc-card-header{display:grid;grid-auto-rows:min-content;align-items:start;gap:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*6)}
.sc-card-header[data-action="true"]{grid-template-columns:1fr auto}
.sc-card-title{line-height:1;font-weight:var(--font-weight-semibold)}
.sc-card-description{font-size:var(--text-sm);line-height:var(--text-sm--line-height);color:var(--muted-foreground)}
.sc-card-action{grid-column-start:2;grid-row:1/span 2;align-self:start;justify-self:end}
.sc-card-content{padding-inline:calc(var(--spacing)*6)}
.sc-card-footer{display:flex;align-items:center;padding-inline:calc(var(--spacing)*6)}

/* ---------- input / textarea / native select ---------- */
.sc-input{display:flex;height:var(--control-h);width:100%;min-width:0;border-radius:var(--radius-md);border:1px solid var(--input);background:transparent;padding:calc(var(--spacing)*1) calc(var(--spacing)*3);font-family:inherit;font-size:var(--text-sm);color:var(--foreground);box-shadow:var(--shadow-xs);transition:color var(--duration-default) var(--ease-default),box-shadow var(--duration-default) var(--ease-default);outline:none}
.sc-input::placeholder{color:var(--muted-foreground)}
.sc-input:focus-visible{border-color:var(--ring);box-shadow:0 0 0 var(--ring-width) var(--ring-color)}
.sc-input:disabled{pointer-events:none;cursor:not-allowed;opacity:.5}
.sc-textarea{min-height:calc(var(--spacing)*16);padding:calc(var(--spacing)*2) calc(var(--spacing)*3);resize:vertical;height:auto}
.sc-native-select-wrap{position:relative;width:fit-content}
.sc-native-select{appearance:none;padding-right:calc(var(--spacing)*9)}
.sc-native-select-icon{pointer-events:none;position:absolute;top:50%;right:calc(var(--spacing)*3.5);transform:translateY(-50%);width:1rem;height:1rem;color:var(--muted-foreground);opacity:.5}

/* ---------- input group ---------- */
.sc-input-group{position:relative;display:flex;width:100%;min-width:0;height:var(--control-h);align-items:center;border-radius:var(--radius-md);border:1px solid var(--input);box-shadow:var(--shadow-xs);transition:color var(--duration-default) var(--ease-default),box-shadow var(--duration-default) var(--ease-default)}
.sc-input-group:focus-within{border-color:var(--ring);box-shadow:0 0 0 var(--ring-width) var(--ring-color)}
.sc-input-group>.sc-input{border:0;box-shadow:none;background:transparent;flex:1;border-radius:0}
.sc-input-group>.sc-input:focus-visible{box-shadow:none}
.sc-input-group-addon{display:flex;height:auto;cursor:text;align-items:center;justify-content:center;gap:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);font-size:var(--text-sm);font-weight:var(--font-weight-medium);color:var(--muted-foreground);user-select:none}
.sc-input-group-addon[data-align="inline-start"]{order:-1;padding-left:calc(var(--spacing)*3)}
.sc-input-group-addon[data-align="inline-end"]{order:1;padding-right:calc(var(--spacing)*3)}
.sc-input-group-addon>svg{width:1rem;height:1rem}

/* ---------- label / field ---------- */
.sc-label{display:flex;align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:1;font-weight:var(--font-weight-medium);user-select:none}
.sc-field{display:flex;flex-direction:column;gap:calc(var(--spacing)*2)}
.sc-field[data-orientation="horizontal"]{flex-direction:row;align-items:center;gap:calc(var(--spacing)*3)}
.sc-field-description{font-size:var(--text-sm);line-height:1.6;color:var(--muted-foreground);font-weight:400}
.sc-field-error{font-size:var(--text-sm);color:var(--destructive)}

/* ---------- checkbox / radio / switch ---------- */
.sc-checkbox{position:relative;display:grid;place-content:center;width:1rem;height:1rem;flex-shrink:0;border-radius:4px;border:1px solid var(--input);background:transparent;box-shadow:var(--shadow-xs);transition:var(--transition-shadow);cursor:pointer;padding:0;color:var(--primary-foreground)}
.sc-checkbox[data-state="checked"]{background:var(--primary);border-color:var(--primary)}
.sc-checkbox>svg{width:.875rem;height:.875rem}
.sc-checkbox:disabled{cursor:not-allowed;opacity:.5}
.sc-radio-group{display:grid;gap:calc(var(--spacing)*3)}
.sc-radio{position:relative;display:grid;place-content:center;aspect-ratio:1;width:1rem;height:1rem;flex-shrink:0;border-radius:var(--radius-full);border:1px solid var(--input);background:transparent;color:var(--primary);box-shadow:var(--shadow-xs);cursor:pointer;padding:0}
.sc-radio[data-state="checked"]::after{content:"";width:.5rem;height:.5rem;border-radius:var(--radius-full);background:var(--primary)}
.sc-switch{position:relative;display:inline-flex;flex-shrink:0;align-items:center;width:2rem;height:1.15rem;border-radius:var(--radius-full);border:1px solid transparent;background:var(--input);box-shadow:var(--shadow-xs);transition:all var(--duration-default) var(--ease-default);cursor:pointer;padding:0}
.sc-switch[data-size="sm"]{width:1.5rem;height:.875rem}
.sc-switch[data-state="checked"]{background:var(--primary)}
.sc-switch-thumb{pointer-events:none;display:block;width:1rem;height:1rem;border-radius:var(--radius-full);background:var(--background);transition:transform var(--duration-default) var(--ease-default);transform:translateX(0)}
.sc-switch[data-size="sm"] .sc-switch-thumb{width:.75rem;height:.75rem}
.sc-switch[data-state="checked"] .sc-switch-thumb{transform:translateX(calc(100% - 2px))}

/* ---------- slider / progress ---------- */
.sc-slider{position:relative;display:flex;width:100%;align-items:center;touch-action:none;user-select:none}
.sc-slider-track{position:relative;height:.375rem;width:100%;flex-grow:1;overflow:hidden;border-radius:var(--radius-full);background:var(--muted)}
.sc-slider-range{position:absolute;height:100%;background:var(--primary)}
.sc-slider-thumb{position:absolute;top:50%;display:block;width:1rem;height:1rem;transform:translate(-50%,-50%);border-radius:var(--radius-full);border:1px solid var(--primary);background:#fff;box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-default) var(--ease-default)}
.sc-slider:hover .sc-slider-thumb{box-shadow:0 0 0 4px var(--ring-color)}
.sc-progress{position:relative;height:.5rem;width:100%;overflow:hidden;border-radius:var(--radius-full);background:color-mix(in oklab,var(--primary) 20%,transparent)}
.sc-progress-indicator{height:100%;width:100%;background:var(--primary);transition:transform var(--duration-default) var(--ease-default)}

/* ---------- toggle ---------- */
.sc-toggle{display:inline-flex;align-items:center;justify-content:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-md);height:var(--control-h);min-width:var(--control-h);padding-inline:calc(var(--spacing)*2);font-size:var(--text-sm);font-weight:var(--font-weight-medium);white-space:nowrap;border:1px solid transparent;background:transparent;cursor:pointer;transition:var(--transition-colors)}
.sc-toggle>svg{width:1rem;height:1rem}
.sc-toggle:hover{background:var(--muted);color:var(--muted-foreground)}
.sc-toggle[data-variant="outline"]{border-color:var(--input);box-shadow:var(--shadow-xs)}
.sc-toggle[data-variant="outline"]:hover{background:var(--accent);color:var(--accent-foreground)}
.sc-toggle[data-state="on"]{background:var(--accent);color:var(--accent-foreground)}
.sc-toggle[data-size="sm"]{height:var(--control-h-sm);min-width:var(--control-h-sm);padding-inline:calc(var(--spacing)*1.5)}
.sc-toggle[data-size="lg"]{height:var(--control-h-lg);min-width:var(--control-h-lg);padding-inline:calc(var(--spacing)*2.5)}
.sc-toggle-group{display:flex;width:fit-content;align-items:center;border-radius:var(--radius-md)}
.sc-toggle-group[data-spacing="0"] .sc-toggle{border-radius:0;box-shadow:none;padding-inline:calc(var(--spacing)*3)}
.sc-toggle-group[data-spacing="0"] .sc-toggle:first-child{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}
.sc-toggle-group[data-spacing="0"] .sc-toggle:last-child{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}
.sc-toggle-group[data-spacing="0"][data-variant="outline"] .sc-toggle{border-left-width:0}
.sc-toggle-group[data-spacing="0"][data-variant="outline"] .sc-toggle:first-child{border-left-width:1px}

/* ---------- tabs ---------- */
.sc-tabs{display:flex;flex-direction:column;gap:calc(var(--spacing)*2)}
.sc-tabs-list{display:inline-flex;width:fit-content;align-items:center;justify-content:center;height:var(--control-h);border-radius:var(--radius-lg);padding:3px;color:var(--muted-foreground);background:var(--muted)}
.sc-tabs-list[data-variant="line"]{background:transparent;border-radius:0;gap:calc(var(--spacing)*1);padding:0}
.sc-tabs-trigger{position:relative;display:inline-flex;height:calc(100% - 1px);flex:1;align-items:center;justify-content:center;gap:calc(var(--spacing)*1.5);border-radius:var(--radius-md);border:1px solid transparent;padding:calc(var(--spacing)*1) calc(var(--spacing)*2);font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-medium);white-space:nowrap;color:color-mix(in oklab,var(--foreground) 60%,transparent);background:transparent;cursor:pointer;transition:all var(--duration-default) var(--ease-default)}
.sc-tabs-trigger:hover{color:var(--foreground)}
.sc-tabs-trigger[data-state="active"]{background:var(--background);color:var(--foreground);box-shadow:var(--shadow-sm)}
.sc-tabs-list[data-variant="line"] .sc-tabs-trigger[data-state="active"]{background:transparent;box-shadow:none}
.sc-tabs-list[data-variant="line"] .sc-tabs-trigger[data-state="active"]::after{content:"";position:absolute;inset-inline:0;bottom:-5px;height:2px;background:var(--foreground)}
.sc-tabs-content{flex:1;outline:none}

/* ---------- alert ---------- */
.sc-alert{position:relative;display:grid;width:100%;grid-template-columns:0 1fr;align-items:start;row-gap:calc(var(--spacing)*0.5);border-radius:var(--radius-lg);border:1px solid var(--border);padding:calc(var(--spacing)*3) calc(var(--spacing)*4);font-size:var(--text-sm);background:var(--card);color:var(--card-foreground)}
.sc-alert[data-icon="true"]{grid-template-columns:calc(var(--spacing)*4) 1fr;column-gap:calc(var(--spacing)*3)}
.sc-alert>svg{width:1rem;height:1rem;transform:translateY(2px);color:currentColor}
.sc-alert[data-variant="destructive"]{color:var(--destructive)}
.sc-alert-title{grid-column-start:2;min-height:1rem;font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight)}
.sc-alert-description{grid-column-start:2;display:grid;justify-items:start;gap:calc(var(--spacing)*1);font-size:var(--text-sm);color:var(--muted-foreground)}
.sc-alert[data-variant="destructive"] .sc-alert-description{color:color-mix(in oklab,var(--destructive) 90%,transparent)}

/* ---------- avatar ---------- */
.sc-avatar{position:relative;display:flex;width:2rem;height:2rem;flex-shrink:0;overflow:hidden;border-radius:var(--radius-full);user-select:none}
.sc-avatar[data-size="sm"]{width:1.5rem;height:1.5rem}
.sc-avatar[data-size="lg"]{width:2.5rem;height:2.5rem}
.sc-avatar img{aspect-ratio:1;width:100%;height:100%;object-fit:cover}
.sc-avatar-fallback{display:flex;width:100%;height:100%;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--muted);font-size:var(--text-sm);color:var(--muted-foreground)}
.sc-avatar[data-size="sm"] .sc-avatar-fallback{font-size:var(--text-xs)}
.sc-avatar-group{display:flex}
.sc-avatar-group>.sc-avatar{margin-left:-0.5rem;box-shadow:0 0 0 2px var(--background)}
.sc-avatar-group>.sc-avatar:first-child{margin-left:0}
.sc-avatar-group-count{position:relative;display:flex;width:2rem;height:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--muted);font-size:var(--text-sm);color:var(--muted-foreground);box-shadow:0 0 0 2px var(--background);margin-left:-0.5rem}

/* ---------- separator / skeleton / spinner / kbd ---------- */
.sc-separator{flex-shrink:0;background:var(--border)}
.sc-separator[data-orientation="horizontal"]{height:1px;width:100%}
.sc-separator[data-orientation="vertical"]{width:1px;height:100%;align-self:stretch}
.sc-skeleton{border-radius:var(--radius-md);background:var(--accent);animation:sc-pulse 2s cubic-bezier(0.4,0,0.6,1) infinite}
.sc-spinner{width:1rem;height:1rem;animation:sc-spin 1s linear infinite}
.sc-kbd{pointer-events:none;display:inline-flex;height:1.25rem;width:fit-content;min-width:1.25rem;align-items:center;justify-content:center;gap:calc(var(--spacing)*1);border-radius:var(--radius-sm);background:var(--muted);padding-inline:calc(var(--spacing)*1);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:var(--muted-foreground);user-select:none}
.sc-kbd-group{display:inline-flex;align-items:center;gap:calc(var(--spacing)*1)}

/* ---------- table ---------- */
.sc-table-container{position:relative;width:100%;overflow-x:auto}
.sc-table{width:100%;caption-side:bottom;font-size:var(--text-sm);border-collapse:collapse}
.sc-table thead tr{border-bottom:1px solid var(--border)}
.sc-table tbody tr{border-bottom:1px solid var(--border);transition:var(--transition-colors)}
.sc-table tbody tr:last-child{border-bottom:0}
.sc-table tbody tr:hover{background:color-mix(in oklab,var(--muted) 50%,transparent)}
.sc-table tbody tr[data-state="selected"]{background:var(--muted)}
.sc-table th{height:2.5rem;padding-inline:calc(var(--spacing)*2);text-align:left;vertical-align:middle;font-weight:var(--font-weight-medium);white-space:nowrap;color:var(--foreground)}
.sc-table td{padding:calc(var(--spacing)*2);vertical-align:middle;white-space:nowrap}
.sc-table tfoot{border-top:1px solid var(--border);background:color-mix(in oklab,var(--muted) 50%,transparent);font-weight:var(--font-weight-medium)}
.sc-table caption{margin-top:calc(var(--spacing)*4);font-size:var(--text-sm);color:var(--muted-foreground)}

/* ---------- item / empty ---------- */
.sc-item{display:flex;flex-wrap:wrap;align-items:center;border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--text-sm);gap:calc(var(--spacing)*4);padding:calc(var(--spacing)*4);transition:background-color var(--duration-fast) var(--ease-default)}
.sc-item[data-variant="outline"]{border-color:var(--border)}
.sc-item[data-variant="muted"]{background:color-mix(in oklab,var(--muted) 50%,transparent)}
.sc-item[data-size="sm"]{gap:calc(var(--spacing)*2.5);padding:calc(var(--spacing)*3) calc(var(--spacing)*4)}
.sc-item-group{display:flex;flex-direction:column}
.sc-item-media{display:flex;flex-shrink:0;align-items:center;justify-content:center;gap:calc(var(--spacing)*2)}
.sc-item-media[data-variant="icon"]{width:2rem;height:2rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--muted)}
.sc-item-media[data-variant="icon"]>svg{width:1rem;height:1rem}
.sc-item-media[data-variant="image"]{width:2.5rem;height:2.5rem;overflow:hidden;border-radius:var(--radius-sm)}
.sc-item-media[data-variant="image"] img{width:100%;height:100%;object-fit:cover}
.sc-item-content{display:flex;flex:1;flex-direction:column;gap:calc(var(--spacing)*1);min-width:0}
.sc-item-title{display:flex;width:fit-content;align-items:center;gap:calc(var(--spacing)*2);font-size:var(--text-sm);line-height:1.375;font-weight:var(--font-weight-medium)}
.sc-item-description{font-size:var(--text-sm);line-height:1.5;color:var(--muted-foreground);margin:0}
.sc-item-actions{display:flex;align-items:center;gap:calc(var(--spacing)*2)}
.sc-empty{display:flex;min-width:0;flex:1;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--spacing)*6);border-radius:var(--radius-lg);border:1px dashed var(--border);padding:calc(var(--spacing)*12) calc(var(--spacing)*6);text-align:center}
.sc-empty-header{display:flex;max-width:24rem;flex-direction:column;align-items:center;gap:calc(var(--spacing)*2)}
.sc-empty-media{margin-bottom:calc(var(--spacing)*2);display:flex;flex-shrink:0;align-items:center;justify-content:center}
.sc-empty-media[data-variant="icon"]{width:2.5rem;height:2.5rem;border-radius:var(--radius-lg);background:var(--muted);color:var(--foreground)}
.sc-empty-media[data-variant="icon"]>svg{width:1.5rem;height:1.5rem}
.sc-empty-title{font-size:var(--text-lg);font-weight:var(--font-weight-medium);letter-spacing:var(--tracking-tight)}
.sc-empty-description{font-size:var(--text-sm);line-height:1.6;color:var(--muted-foreground)}
.sc-empty-content{display:flex;width:100%;max-width:24rem;flex-direction:column;align-items:center;gap:calc(var(--spacing)*4);font-size:var(--text-sm)}

/* ---------- accordion ---------- */
.sc-accordion-item{border-bottom:1px solid var(--border)}
.sc-accordion-item:last-child{border-bottom:0}
.sc-accordion-trigger{display:flex;flex:1;width:100%;align-items:flex-start;justify-content:space-between;gap:calc(var(--spacing)*4);border:0;background:none;border-radius:var(--radius-md);padding-block:calc(var(--spacing)*4);text-align:left;font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-weight-medium);cursor:pointer;color:inherit}
.sc-accordion-trigger:hover{text-decoration:underline}
.sc-accordion-trigger>svg{pointer-events:none;flex-shrink:0;width:1rem;height:1rem;transform:translateY(2px);color:var(--muted-foreground);transition:transform var(--duration-slow) var(--ease-default)}
.sc-accordion-trigger[data-state="open"]>svg{transform:translateY(2px) rotate(180deg)}
.sc-accordion-content{overflow:hidden;font-size:var(--text-sm);padding-bottom:calc(var(--spacing)*4);color:var(--muted-foreground)}

/* ---------- breadcrumb / pagination ---------- */
.sc-breadcrumb-list{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing)*2.5);font-size:var(--text-sm);color:var(--muted-foreground);list-style:none;margin:0;padding:0}
.sc-breadcrumb-item{display:inline-flex;align-items:center;gap:calc(var(--spacing)*1.5)}
.sc-breadcrumb-link{transition:var(--transition-colors)}
.sc-breadcrumb-link:hover{color:var(--foreground)}
.sc-breadcrumb-page{font-weight:400;color:var(--foreground)}
.sc-breadcrumb-separator>svg{width:.875rem;height:.875rem}
.sc-pagination{margin-inline:auto;display:flex;width:100%;justify-content:center}
.sc-pagination-content{display:flex;flex-direction:row;align-items:center;gap:calc(var(--spacing)*1);list-style:none;margin:0;padding:0}
.sc-pagination-ellipsis{display:flex;width:var(--control-h);height:var(--control-h);align-items:center;justify-content:center}

/* ---------- dropdown menu / popover / tooltip ---------- */
.sc-menu{position:absolute;z-index:50;min-width:8rem;overflow:hidden auto;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--popover);padding:calc(var(--spacing)*1);color:var(--popover-foreground);box-shadow:var(--shadow-md);animation:sc-slide-in-top var(--duration-default) var(--ease-default)}
.sc-menu-item{position:relative;display:flex;width:100%;cursor:default;align-items:center;gap:calc(var(--spacing)*2);border-radius:var(--radius-sm);padding:calc(var(--spacing)*1.5) calc(var(--spacing)*2);font-size:var(--text-sm);user-select:none;border:0;background:none;color:inherit;text-align:left;font-family:inherit}
.sc-menu-item:hover,.sc-menu-item:focus{background:var(--accent);color:var(--accent-foreground);outline:none}
.sc-menu-item[data-inset="true"]{padding-left:calc(var(--spacing)*8)}
.sc-menu-item[data-variant="destructive"]{color:var(--destructive)}
.sc-menu-item[data-variant="destructive"]:hover{background:color-mix(in oklab,var(--destructive) 10%,transparent)}
.sc-menu-item>svg{width:1rem;height:1rem;flex-shrink:0;color:var(--muted-foreground)}
.sc-menu-label{padding:calc(var(--spacing)*1.5) calc(var(--spacing)*2);font-size:var(--text-sm);font-weight:var(--font-weight-medium)}
.sc-menu-separator{margin:calc(var(--spacing)*1) calc(var(--spacing)*-1);height:1px;background:var(--border)}
.sc-menu-shortcut{margin-left:auto;font-size:var(--text-xs);letter-spacing:var(--tracking-widest);color:var(--muted-foreground)}
.sc-popover{position:absolute;z-index:50;width:18rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--popover);padding:calc(var(--spacing)*4);color:var(--popover-foreground);box-shadow:var(--shadow-md);animation:sc-slide-in-top var(--duration-default) var(--ease-default)}
.sc-tooltip{position:absolute;z-index:50;width:fit-content;border-radius:var(--radius-md);background:var(--foreground);padding:calc(var(--spacing)*1.5) calc(var(--spacing)*3);font-size:var(--text-xs);color:var(--background);white-space:nowrap;animation:sc-fade-in var(--duration-default) var(--ease-default)}

/* ---------- dialog / sheet ---------- */
.sc-overlay{position:fixed;inset:0;z-index:50;background:var(--overlay);animation:sc-fade-in var(--duration-slow) var(--ease-default)}
.sc-dialog{position:fixed;top:50%;left:50%;z-index:50;display:grid;width:100%;max-width:32rem;transform:translate(-50%,-50%);gap:calc(var(--spacing)*4);border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--background);padding:calc(var(--spacing)*6);box-shadow:var(--shadow-lg);animation:sc-zoom-in var(--duration-slow) var(--ease-default)}
.sc-dialog-header{display:flex;flex-direction:column;gap:calc(var(--spacing)*2)}
.sc-dialog-title{font-size:var(--text-lg);line-height:1;font-weight:var(--font-weight-semibold)}
.sc-dialog-description{font-size:var(--text-sm);color:var(--muted-foreground)}
.sc-dialog-footer{display:flex;flex-direction:row;justify-content:flex-end;gap:calc(var(--spacing)*2)}
.sc-dialog-close{position:absolute;top:calc(var(--spacing)*4);right:calc(var(--spacing)*4);border:0;background:none;border-radius:2px;opacity:.7;cursor:pointer;color:inherit;padding:0;display:flex}
.sc-dialog-close:hover{opacity:1}
.sc-dialog-close>svg{width:1rem;height:1rem}
.sc-sheet{position:fixed;z-index:50;display:flex;flex-direction:column;gap:calc(var(--spacing)*4);background:var(--background);box-shadow:var(--shadow-lg);transition:transform var(--duration-sheet) var(--ease-in-out)}
.sc-sheet[data-side="right"]{inset-block:0;right:0;height:100%;width:75%;max-width:24rem;border-left:1px solid var(--border);animation:sc-slide-in-right var(--duration-sheet) var(--ease-default)}
.sc-sheet[data-side="left"]{inset-block:0;left:0;height:100%;width:75%;max-width:24rem;border-right:1px solid var(--border)}
.sc-sheet-header{display:flex;flex-direction:column;gap:calc(var(--spacing)*1.5);padding:calc(var(--spacing)*4)}
.sc-sheet-title{font-weight:var(--font-weight-semibold);color:var(--foreground)}
.sc-sheet-description{font-size:var(--text-sm);color:var(--muted-foreground)}
.sc-sheet-footer{margin-top:auto;display:flex;flex-direction:column;gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*4)}

/* ---------- sidebar (app shell) ---------- */
.sc-sidebar{display:flex;flex-direction:column;width:16rem;height:100%;background:var(--sidebar);color:var(--sidebar-foreground);border-right:1px solid var(--sidebar-border)}
.sc-sidebar-header,.sc-sidebar-footer{display:flex;flex-direction:column;gap:calc(var(--spacing)*2);padding:calc(var(--spacing)*2)}
.sc-sidebar-content{display:flex;min-height:0;flex:1;flex-direction:column;gap:calc(var(--spacing)*2);overflow:auto;padding-block:calc(var(--spacing)*2)}
.sc-sidebar-group{display:flex;flex-direction:column;padding-inline:calc(var(--spacing)*2)}
.sc-sidebar-group-label{display:flex;height:2rem;flex-shrink:0;align-items:center;padding-inline:calc(var(--spacing)*2);font-size:var(--text-xs);font-weight:var(--font-weight-medium);color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}
.sc-sidebar-menu{display:flex;width:100%;min-width:0;flex-direction:column;gap:calc(var(--spacing)*1);list-style:none;margin:0;padding:0}
.sc-sidebar-menu-button{display:flex;width:100%;align-items:center;gap:calc(var(--spacing)*2);overflow:hidden;border-radius:var(--radius-md);border:0;background:transparent;padding:calc(var(--spacing)*2);text-align:left;font-family:inherit;font-size:var(--text-sm);color:inherit;cursor:pointer;transition:var(--transition-colors);height:2rem}
.sc-sidebar-menu-button:hover{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}
.sc-sidebar-menu-button[data-active="true"]{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground);font-weight:var(--font-weight-medium)}
.sc-sidebar-menu-button>svg{width:1rem;height:1rem;flex-shrink:0}

/* ---------- Architecture Diagram & Hero Intro Utilities ---------- */
.product-diagram-wrap {
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  text-align: center !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.product-diagram-img {
  display: block !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

.hero-intro-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: linear-gradient(135deg, rgba(56, 189, 248, 0.25) 0%, rgba(2, 132, 199, 0.4) 100%);
  color: #38bdf8;
  border: 1px solid rgba(56, 189, 248, 0.55);
  padding: 3px 12px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 0.92em;
  letter-spacing: -0.01em;
  box-shadow: 0 0 20px rgba(56, 189, 248, 0.35);
  margin-right: 6px;
  vertical-align: middle;
}
