/* NTIS cards — Card, Stat. Separation by hairline, not elevation: at rest a
   card is flat in both themes (light: white + hairline; dark: one surface step
   up). Interactive cards rise on hover in light and brighten in dark. */
.ntis-card{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--surface-card);border:var(--border-hairline) solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--card-shadow);color:var(--text-body);overflow:hidden;transition:var(--t-shadow),var(--t-color)}
.ntis-card--flat{box-shadow:none}
.ntis-card--raised{background:var(--surface-raised);box-shadow:var(--elev-2)}
.ntis-card--sunken{background:var(--surface-sunken);border-color:transparent;box-shadow:none}
.ntis-card--interactive{cursor:pointer}
.ntis-card--interactive:hover,.ntis-card--interactive.is-hover{background:var(--surface-card-hover);border-color:var(--border-default);box-shadow:var(--card-shadow-hover)}
.ntis-card--interactive:active,.ntis-card--interactive.is-active{border-color:var(--border-strong);box-shadow:var(--card-shadow)}
.ntis-card--interactive:focus-visible,.ntis-card--interactive.is-focus{outline:none;border-color:var(--border-focus);box-shadow:var(--focus-ring)}
.ntis-card--selected{border-color:var(--border-selected);box-shadow:inset 0 0 0 1px var(--border-selected)}
/* The one decorative flourish: a 3px brand-gradient top rule. One card per view, at most. */
.ntis-card--ruled::before{content:"";position:absolute;inset-block-start:0;inset-inline:0;z-index:1;height:var(--border-heavy);background:var(--gradient-brand)}
.ntis-card__media{margin:0;background:var(--surface-sunken);overflow:hidden}
.ntis-card__media img{width:100%;height:100%;object-fit:cover}
.ntis-card__inner{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--pad-card)}
.ntis-card--tight .ntis-card__inner{padding:var(--pad-card-tight)}
.ntis-card__eyebrow{font:var(--type-eyebrow);letter-spacing:var(--ls-wide);text-transform:uppercase;color:var(--text-muted)}
.ntis-card__eyebrow:dir(rtl){letter-spacing:var(--ls-none);text-transform:none}
.ntis-card__title{margin:0;font:var(--type-h4);color:var(--text-strong)}
.ntis-card__body{margin:0;font:var(--type-body-sm);color:var(--text-muted)}
.ntis-card__footer{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4);margin-block-start:auto;padding:var(--space-4) var(--pad-card);border-block-start:var(--border-hairline) solid var(--border-subtle);background:var(--fill-subtle)}
.ntis-card--tight .ntis-card__footer{padding-inline:var(--pad-card-tight)}

/* Stat — the KPI readout. Tone (good/bad) is separate from trend (direction):
   response time going DOWN is good news and must read green, not wine. */
.ntis-stat{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.ntis-stat__label{display:flex;align-items:center;gap:6px;font:var(--type-caption);color:var(--text-muted)}
.ntis-stat__value{display:flex;align-items:baseline;gap:var(--space-2);font:var(--w-bold) var(--fs-h1)/1.1 var(--font-core);color:var(--text-strong);font-variant-numeric:tabular-nums}
.ntis-stat__unit{font:var(--type-body);color:var(--text-muted)}
.ntis-stat__delta{display:inline-flex;align-items:center;gap:var(--space-1);font:var(--type-caption)}
.ntis-stat__delta--positive,.ntis-stat__delta--up{color:var(--status-success-fg)}
.ntis-stat__delta--negative,.ntis-stat__delta--down{color:var(--status-danger-fg)}
.ntis-stat__delta--neutral,.ntis-stat__delta--flat{color:var(--text-subtle)}
.ntis-stat__spark{margin-block-start:var(--space-3)}
