:root{
  /* brand colors — short aliases the pages already use */
  --teal:#0B3B43;--teal2:#2A9D9A;--mint:#A8E0D5;
  --ink:#1B1B1F;--g700:#4A4A52;--g500:#6B6B72;--g300:#D4D4D8;--g200:#EAEAEC;--g100:#F4F4F6;--g50:#FAFAFA;--white:#fff;
  --ok:#2A9D9A;--warn:#E0A23A;--bad:#C0473E;
  /* soft tints for fills */
  --teal-050:#EAF6F3;--teal-100:#D9EEEA;--warn-050:#FBF3E3;--bad-050:#FBEEEC;
  /* spacing (4px base) */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;
  /* type scale (modular ~1.25) */
  --fs-xs:11px;--fs-sm:13px;--fs-base:15px;--fs-md:18px;--fs-lg:22px;--fs-xl:28px;--fs-2xl:36px;
  --fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-heavy:800;
  /* radius */
  --r-sm:4px;--r-base:8px;--r-md:12px;--r-lg:16px;--r-full:9999px;
  /* elevation (teal-tinted, transparent) */
  --sh-sm:0 1px 2px rgba(11,59,67,.06);
  --sh-md:0 4px 12px rgba(11,59,67,.08);
  --sh-lg:0 12px 32px rgba(11,59,67,.14);
  --sh-xl:0 24px 60px rgba(11,59,67,.22);
  /* motion */
  --ease:cubic-bezier(.2,.7,.3,1);--ease-out:cubic-bezier(.16,1,.3,1);
  --dur-fast:120ms;--dur-base:180ms;--dur-slow:260ms;
  --ring:0 0 0 3px rgba(42,157,154,.32);
  /* fonts */
  --font-sans:Manrope,-apple-system,system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;
}
/* root rendering — crisper text on macOS (the one intentional global change) */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}

/* typography utilities (new names — no collision) */
.tnum{font-variant-numeric:tabular-nums}
.balance{text-wrap:balance}
.pretty{text-wrap:pretty}

/* buttons — namespaced so existing .btn/.primary are untouched until a page migrates */
.t-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);position:relative;
  font:inherit;font-weight:var(--fw-semibold);font-size:var(--fs-sm);line-height:1;white-space:nowrap;
  color:var(--teal);background:#fff;border:1px solid var(--g300);border-radius:var(--r-base);
  padding:9px 14px;min-height:38px;cursor:pointer;
  transition-property:transform,background-color,border-color,box-shadow,color;
  transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}
.t-btn:hover{border-color:var(--teal2);color:var(--teal)}
.t-btn:active{transform:scale(.97)}
.t-btn:focus-visible{outline:none;box-shadow:var(--ring)}
.t-btn:disabled{opacity:.5;cursor:default;transform:none;box-shadow:none}
.t-btn svg{flex:none}
.t-btn-primary{background:var(--teal2);border-color:var(--teal2);color:#fff}
.t-btn-primary:hover{background:var(--teal);border-color:var(--teal);color:#fff}
.t-btn-ghost{background:transparent;border-color:transparent;color:var(--teal2);padding-inline:var(--sp-2)}
.t-btn-ghost:hover{background:var(--teal-050);color:var(--teal)}
.t-btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}
.t-btn-danger:hover{filter:brightness(.94)}
.t-btn-warn{background:#fff;border-color:#EAC475;color:var(--warn)}
.t-btn-warn:hover{background:var(--warn-050)}
.t-btn-sm{min-height:32px;padding:6px 10px;font-size:var(--fs-sm)}
.t-btn-lg{min-height:44px;padding:12px 20px;font-size:var(--fs-base)}
.t-btn-icon{padding:0;width:38px;min-height:38px}
.t-btn-icon::before{content:"";position:absolute;inset:-3px}
.t-btn-block{width:100%}

/* surfaces */
.t-card{background:#fff;border:1px solid var(--g300);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}
.t-card-pad{padding:var(--sp-5)}

/* inputs */
.t-field{font:inherit;font-size:var(--fs-sm);color:var(--ink);background:#fff;
  padding:9px 12px;border:1px solid var(--g300);border-radius:var(--r-base);
  transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.t-field:focus{outline:none;border-color:var(--teal2);box-shadow:var(--ring)}

/* chips / status badges */
.t-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);
  padding:3px 9px;border-radius:var(--r-full);background:var(--g100);color:var(--g500);line-height:1.3}
.t-chip svg{flex:none}
.t-chip-ok{background:var(--teal-050);color:var(--teal)}
.t-chip-warn{background:var(--warn-050);color:#B5722A}
.t-chip-bad{background:var(--bad-050);color:var(--bad)}
.t-chip-info{background:#E6F0F4;color:var(--teal)}

/* table — tabular numerals on numeric cells */
.t-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.t-table th{text-align:left;font-weight:var(--fw-semibold);color:var(--g500);font-size:var(--fs-xs);
  letter-spacing:.04em;text-transform:uppercase;padding:8px 10px}
.t-table td{padding:10px;border-top:1px solid var(--g100)}
.t-table .num{text-align:right;font-variant-numeric:tabular-nums}

/* concentric-care atmosphere — faint rings behind heroes / empty states */
.t-rings{position:relative;isolation:isolate}
.t-rings::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(circle at 50% 38%,transparent 0,transparent 96px,rgba(42,157,154,.10) 97px,transparent 101px),
    radial-gradient(circle at 50% 38%,transparent 0,transparent 156px,rgba(42,157,154,.07) 157px,transparent 162px),
    radial-gradient(circle at 50% 38%,transparent 0,transparent 224px,rgba(11,59,67,.05) 225px,transparent 231px)}

/* empty-state scaffold */
.t-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-3);
  padding:var(--sp-12) var(--sp-6);color:var(--g500)}
.t-empty svg{color:var(--teal2);opacity:.5}
.t-empty h3{margin:0;font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--ink);text-wrap:balance}
.t-empty p{margin:0;font-size:var(--fs-sm);max-width:42ch;text-wrap:pretty}

/* entrance motion — opt-in, compositor-friendly */
@keyframes t-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.t-enter{animation:t-enter var(--dur-slow) var(--ease-out) both}

/* respect reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
