/* Stage 20 primitives. New screens use only these semantic contracts. */
*,*::before,*::after{box-sizing:border-box}
.ui-surface{color:var(--foreground);background:var(--background)}
.ui-card{display:grid;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-xl);color:var(--card-foreground);background:var(--card);box-shadow:var(--shadow-sm)}
.ui-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}
.ui-card__title{margin:0;color:var(--card-foreground);font:600 var(--text-base)/1.25 var(--font-sans);letter-spacing:-.015em}
.ui-card__description{margin:4px 0 0;color:var(--muted-foreground);font:400 var(--text-sm)/1.45 var(--font-sans)}
.ui-card__content{min-width:0}.ui-card__footer{display:flex;align-items:center;gap:var(--space-2)}
.ui-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-md);color:var(--primary-foreground);background:var(--primary);box-shadow:var(--shadow-sm);font:500 var(--text-sm)/1 var(--font-sans);white-space:nowrap;transition:background var(--duration),color var(--duration),border-color var(--duration),transform var(--duration-fast)}
.ui-button:active{transform:scale(.98)}.ui-button:disabled{pointer-events:none;opacity:.45}.ui-button--secondary{color:var(--secondary-foreground);background:var(--secondary)}.ui-button--outline{border-color:var(--border);color:var(--foreground);background:transparent}.ui-button--ghost{color:var(--foreground);background:transparent;box-shadow:none}.ui-button--ghost:hover{background:var(--accent)}.ui-button--destructive{color:var(--destructive-foreground);background:var(--destructive)}.ui-button--icon{width:38px;padding:0}
.ui-badge{display:inline-flex;align-items:center;gap:5px;width:max-content;min-height:23px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-full);color:var(--foreground);background:var(--secondary);font:500 var(--text-xs)/1 var(--font-sans)}.ui-badge--outline{background:transparent}.ui-badge--muted{color:var(--muted-foreground)}
.ui-field{display:grid;gap:7px}.ui-label{color:var(--foreground);font:500 var(--text-sm)/1.25 var(--font-sans)}.ui-input,.ui-select,.ui-textarea{width:100%;min-height:38px;padding:0 11px;border:1px solid var(--input);border-radius:var(--radius-md);outline:0;color:var(--foreground);background:#1f1f1f;font:400 var(--text-sm)/1.35 var(--font-sans);transition:border-color var(--duration),box-shadow var(--duration)}.ui-textarea{min-height:90px;padding-block:10px;resize:vertical}.ui-input::placeholder,.ui-textarea::placeholder{color:#737373}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{border-color:var(--ring);box-shadow:0 0 0 3px rgba(163,163,163,.16)}.ui-help{color:var(--muted-foreground);font:400 var(--text-xs)/1.4 var(--font-sans)}
.ui-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--muted)}.ui-tab{min-height:34px;padding:0 10px;border:0;border-radius:var(--radius-md);color:var(--muted-foreground);background:transparent;font:500 var(--text-sm)/1 var(--font-sans)}.ui-tab[aria-selected="true"],.ui-tab.active{color:var(--foreground);background:#353535;box-shadow:var(--shadow-sm)}
.ui-progress{height:7px;overflow:hidden;border-radius:var(--radius-full);background:var(--secondary)}.ui-progress>i{display:block;width:var(--ui-progress,0%);height:100%;border-radius:inherit;background:var(--primary);transition:width var(--duration-slow) var(--ease-out)}
.ui-separator{height:1px;border:0;background:var(--border)}
.ui-dialog{position:fixed;inset:0;z-index:9990;display:grid;place-items:end center;padding:16px;background:rgba(0,0,0,.7);backdrop-filter:blur(8px)}.ui-dialog[hidden]{display:none}.ui-dialog__content{display:grid;gap:var(--space-4);width:min(100%,420px);max-height:min(88svh,720px);overflow:auto;padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-2xl);color:var(--popover-foreground);background:var(--popover);box-shadow:var(--shadow-lg)}
.ui-kpi{display:grid;gap:12px}.ui-kpi__label{color:var(--muted-foreground);font:500 var(--text-sm)/1.2 var(--font-sans)}.ui-kpi__value{color:var(--foreground);font:600 clamp(1.65rem,7vw,2.15rem)/1 var(--font-sans);letter-spacing:-.045em}.ui-kpi__meta{color:var(--muted-foreground);font:400 var(--text-sm)/1.4 var(--font-sans)}
.ui-chart{position:relative;display:grid;min-height:200px;overflow:hidden;border-top:1px solid var(--chart-grid);background:repeating-linear-gradient(to bottom,transparent 0,transparent 49px,var(--chart-grid) 50px)}.ui-chart svg,.ui-chart canvas{display:block;width:100%;height:100%}.ui-chart-grid{stroke:var(--chart-grid)}.ui-chart-line{fill:none;stroke:var(--chart-1);stroke-width:1.5}.ui-chart-area{fill:url(#ui-chart-area)}.ui-chart-tooltip{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--foreground);background:var(--chart-tooltip);box-shadow:var(--shadow-md);font:500 var(--text-xs)/1.35 var(--font-sans)}
.ui-skeleton{overflow:hidden;border-radius:var(--radius-md);background:#242424}.ui-skeleton::after{content:"";display:block;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.055),transparent);animation:uiSkeleton 1.6s infinite}@keyframes uiSkeleton{from{transform:translateX(-120%)}to{transform:translateX(330%)}}
@media(min-width:540px){.ui-dialog{place-items:center}}
@media(prefers-reduced-motion:reduce){.ui-button,.ui-progress>i,.ui-input,.ui-select,.ui-textarea{transition:none}.ui-skeleton::after{animation:none}}
