/* ============================================================
   PreventiveCore Base Layer
   Reset, document defaults, typography scale, focus, scrollbars.
   Requires pc-tokens.css.
   ============================================================ */

*,*::before,*::after{ box-sizing:border-box; }

html{ -webkit-text-size-adjust:100%; }

body{
  margin:0;
  min-height:100vh;
  font-family:var(--pc-font);
  font-size:var(--pc-fs-body);
  line-height:var(--pc-lh-body);
  color:var(--pc-text);
  background:var(--pc-bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}

/* ── Typography scale ───────────────────────────────────── */
.pc-t-page{
  margin:0;
  font-size:var(--pc-fs-page);
  line-height:var(--pc-lh-page);
  font-weight:var(--pc-fw-page);
  letter-spacing:-.01em;
  color:var(--pc-text);
}
.pc-t-section{
  margin:0;
  font-size:var(--pc-fs-section);
  line-height:var(--pc-lh-section);
  font-weight:var(--pc-fw-section);
  color:var(--pc-text);
}
.pc-t-sub{
  margin:0;
  font-size:var(--pc-fs-sub);
  line-height:var(--pc-lh-sub);
  font-weight:var(--pc-fw-sub);
  color:var(--pc-text);
}
.pc-t-body{ font-size:var(--pc-fs-body); line-height:var(--pc-lh-body); }
.pc-t-support{
  font-size:var(--pc-fs-support);
  line-height:var(--pc-lh-support);
  color:var(--pc-text-secondary);
}
.pc-t-label{
  font-size:var(--pc-fs-label);
  line-height:var(--pc-lh-label);
  font-weight:600;
  letter-spacing:var(--pc-tracking-label);
  text-transform:uppercase;
  color:var(--pc-text-tertiary);
}
.pc-t-kpi{
  font-size:var(--pc-fs-kpi);
  line-height:var(--pc-lh-kpi);
  font-weight:650;
  letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
  color:var(--pc-text);
}
.pc-mono{ font-family:var(--pc-font-mono); font-variant-numeric:tabular-nums; }

.pc-muted{ color:var(--pc-text-secondary); }
.pc-subtle{ color:var(--pc-text-tertiary); }

/* Semantic text helpers — always paired with a word, never colour alone */
.pc-text-success{ color:var(--pc-success-text); }
.pc-text-warning{ color:var(--pc-warning-text); }
.pc-text-danger{ color:var(--pc-danger-text); }
.pc-text-info{ color:var(--pc-info-text); }
.pc-text-neutral{ color:var(--pc-neutral-text); }

/* ── Links ──────────────────────────────────────────────── */
a{ color:var(--pc-brand-text); text-decoration:none; }
a:hover{ color:var(--pc-brand-hover); text-decoration:underline; }

/* ── Focus ──────────────────────────────────────────────── */
:focus-visible{
  outline:none;
  box-shadow:var(--pc-focus-ring);
  border-radius:var(--pc-r-sm);
}

/* ── Layout shell ───────────────────────────────────────── */
.pc-shell{
  display:grid;
  grid-template-columns:var(--pc-sidebar-w) 1fr;
  min-height:100vh;
}
.pc-main{
  min-width:0;
  padding:var(--pc-6) var(--pc-8) var(--pc-12);
}
@media (max-width:1024px){
  .pc-shell{ grid-template-columns:1fr; }
  .pc-main{ padding:var(--pc-4) var(--pc-4) var(--pc-10); }
}

/* ── Page header ────────────────────────────────────────── */
.pc-page-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:var(--pc-4);
  flex-wrap:wrap;
  padding-bottom:var(--pc-5);
  margin-bottom:var(--pc-6);
  border-bottom:1px solid var(--pc-border);
}
.pc-page-header__left{ display:flex; flex-direction:column; gap:var(--pc-1); min-width:0; }
.pc-page-header__right{ display:flex; align-items:center; gap:var(--pc-2); flex-wrap:wrap; }
.pc-kicker{
  font-size:var(--pc-fs-label);
  font-weight:600;
  letter-spacing:var(--pc-tracking-label);
  text-transform:uppercase;
  color:var(--pc-text-tertiary);
}

/* ── Section head (inside a page, above a group) ────────── */
.pc-section-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--pc-3);
  margin:var(--pc-8) 0 var(--pc-4);
  padding-bottom:var(--pc-2);
  border-bottom:1px solid var(--pc-border);
}
.pc-section-head:first-child{ margin-top:0; }

/* ── Grid helpers ───────────────────────────────────────── */
.pc-grid{ display:grid; gap:var(--pc-4); }
.pc-grid--kpi{ grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr)); }
.pc-grid--2{ grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr)); }
.pc-grid--3{ grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr)); }

/* ── Icons ──────────────────────────────────────────────── */
.pc-icon{
  width:18px; height:18px;
  flex:0 0 auto;
  stroke:currentColor;
  fill:none;
  stroke-width:1.5;
  stroke-linecap:round;
  stroke-linejoin:round;
  vertical-align:middle;
}
.pc-icon--sm{ width:14px; height:14px; }
.pc-icon--lg{ width:24px; height:24px; }

/* ── Scrollbars ─────────────────────────────────────────── */
*::-webkit-scrollbar{ width:10px; height:10px; }
*::-webkit-scrollbar-track{ background:transparent; }
*::-webkit-scrollbar-thumb{
  background:var(--pc-border-strong);
  border-radius:var(--pc-r-pill);
  border:2px solid transparent;
  background-clip:content-box;
}
*::-webkit-scrollbar-thumb:hover{ background:var(--pc-text-tertiary); background-clip:content-box; }

/* ── Utility ────────────────────────────────────────────── */
.pc-sr-only{
  position:absolute; width:1px; height:1px;
  padding:0; margin:-1px; overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.pc-divider{ height:1px; background:var(--pc-border); border:0; margin:var(--pc-4) 0; }
