/* ============================================================================
   COUNTRYSIDE CANNABIS CO. — Expense Application
   Style-guide furniture · styleguide.css

   Page scaffolding for THIS document only — swatch grids, type specimens,
   the audit table, the device proof frames. Product screens do not import
   this file; they import tokens.css + components.css.
   ========================================================================= */

/* --- page rhythm -------------------------------------------------------- */
.sg-hero { padding-block: var(--space-16) var(--space-12); }
.sg-hero__meta {
  display: flex;
  gap: var(--space-6);
  flex-wrap: wrap;
  margin-block-start: var(--space-8);
  padding-block-start: var(--space-4);
  border-block-start: 1px solid var(--border);
  font-size: var(--fs-sm);
  color: var(--fg-secondary);
}
.sg-hero__meta b { color: var(--fg); font-weight: var(--weight-semibold); }

.sg-section { padding-block: var(--space-16); border-block-start: 1px solid var(--border); }
.sg-section__head { max-inline-size: 64ch; margin-block-end: var(--space-8); }
.sg-section__head .h2 { margin-block: var(--space-3) var(--space-4); }
.sg-sub {
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  margin-block: var(--space-12) var(--space-4);
}
.sg-sub:first-child { margin-block-start: 0; }
.sg-note {
  font-size: var(--fs-sm);
  color: var(--fg-secondary);
  max-inline-size: 72ch;
  margin-block: var(--space-2) 0;
}

/* --- table of contents -------------------------------------------------- */
.sg-toc {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-block-start: var(--space-6);
}
.sg-toc a {
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-input);
  font-size: var(--fs-sm);
  color: var(--fg-secondary);
  text-decoration: none;
  background: var(--surface);
}
.sg-toc a:hover { color: var(--fg); border-color: var(--border-strong); }

/* --- colour swatches ---------------------------------------------------- */
.swatch-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: var(--space-4);
}
.swatch {
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  overflow: hidden;
  background: var(--surface);
}
.swatch__chip { block-size: 84px; border-block-end: 1px solid var(--border); }
.swatch__meta { padding: var(--space-3); }
.swatch__name { font-size: var(--fs-sm); font-weight: var(--weight-semibold); }
.swatch__hex {
  font-size: var(--fs-caption);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--fg-secondary);
}
.swatch__role { font-size: var(--fs-caption); color: var(--fg-muted); margin-block-start: var(--space-1); }

/* --- token pair panels (light beside dark) ------------------------------ */
.token-panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6); }
@media (max-width: 900px) { .token-panels { grid-template-columns: minmax(0, 1fr); } }
.token-panel {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-6);
  color: var(--fg);
}
.token-panel__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  margin-block-end: var(--space-4);
  padding-block-end: var(--space-3);
  border-block-end: 1px solid var(--border);
}
.token-panel__title { font-family: var(--font-display); font-size: var(--fs-h4); }
.token-row {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  align-items: center;
  gap: var(--space-3);
  padding-block: var(--space-2);
  border-block-end: 1px solid var(--border);
  font-size: var(--fs-sm);
}
.token-row:last-child { border-block-end: 0; }
.token-row__dot {
  inline-size: 22px; block-size: 22px;
  border-radius: var(--radius-input);
  border: 1px solid var(--border-control);
}
.token-row__name { font-variant-numeric: tabular-nums; }
.token-row__value {
  font-size: var(--fs-caption);
  color: var(--fg-secondary);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* --- logo stages -------------------------------------------------------- */
.logo-stages { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-6); }
@media (max-width: 760px) { .logo-stages { grid-template-columns: minmax(0, 1fr); } }
.logo-stage {
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  padding: var(--space-8);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  color: var(--fg);
}
.logo-stage__label {
  font-size: var(--fs-caption);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-secondary);
}
.logo-stage img { block-size: 64px; inline-size: auto; }
.logo-stage--print { background: var(--surface); }

/* Clear zone = the height of the icon glyph, drawn so it can be checked. */
.clear-zone {
  --zone: 44px;
  display: inline-block;
  padding: var(--zone);
  outline: 1px dashed var(--border-control);
  outline-offset: -1px;
  position: relative;
}
.clear-zone img { block-size: 44px; inline-size: auto; }
.clear-zone__tag {
  position: absolute;
  inset-block-start: var(--space-1);
  inset-inline-start: var(--space-2);
  font-size: var(--fs-caption);
  color: var(--fg-muted);
  letter-spacing: 0.04em;
}
.asset-list { display: grid; gap: var(--space-2); font-size: var(--fs-sm); }
.asset-list div { display: flex; gap: var(--space-3); flex-wrap: wrap; align-items: baseline; }
.asset-list code {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-weight: var(--weight-medium);
  color: var(--fg);
}
.asset-list span { color: var(--fg-secondary); }

.misuse { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); font-size: var(--fs-sm); }
.misuse li { display: flex; gap: var(--space-3); align-items: flex-start; color: var(--fg-secondary); }
.misuse li::before {
  content: '';
  flex: none;
  inline-size: 14px; block-size: 2px;
  background: var(--status-block-mark);
  margin-block-start: 10px;
}

/* --- rule list (accessibility) ----------------------------------------- */
.rule-list { display: grid; gap: var(--space-3); counter-reset: rule; }
.rule-item {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: var(--space-4);
  padding: var(--space-4);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
}
.rule-item__num {
  counter-increment: rule;
  font-family: var(--font-display);
  font-size: var(--fs-h4);
  color: var(--fg-secondary);
  line-height: 1;
}
.rule-item__num::before { content: counter(rule); }
.rule-item__body { font-size: var(--fs-sm); }
.rule-item__body b { font-weight: var(--weight-semibold); }
.rule-item__body p { margin: var(--space-1) 0 0; color: var(--fg-secondary); }

/* --- type specimens ---------------------------------------------------- */
.specimen {
  padding-block: var(--space-4);
  border-block-end: 1px solid var(--border);
}
.specimen:last-child { border-block-end: 0; }
.specimen__label {
  font-size: var(--fs-caption);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-muted);
  margin-block-end: var(--space-2);
  font-variant-numeric: tabular-nums;
}
.specimen__line { margin: 0; }

/* --- spacing + radius scales ------------------------------------------- */
.space-scale { display: grid; gap: var(--space-2); }
.space-row {
  display: grid;
  grid-template-columns: 64px 1fr;
  align-items: center;
  gap: var(--space-4);
  font-size: var(--fs-sm);
  font-variant-numeric: tabular-nums;
}
.space-row__bar { block-size: 14px; background: var(--fg-secondary); border-radius: 2px; }
.radius-row { display: flex; gap: var(--space-6); flex-wrap: wrap; }
.radius-demo { text-align: center; font-size: var(--fs-caption); color: var(--fg-secondary); }
.radius-demo__box {
  inline-size: 84px; block-size: 60px;
  background: var(--surface-sunk);
  border: 1px solid var(--border-control);
  margin-block-end: var(--space-2);
}
.elevation-row { display: flex; gap: var(--space-6); flex-wrap: wrap; }
.elevation-demo {
  inline-size: 160px;
  padding: var(--space-4);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  font-size: var(--fs-caption);
  color: var(--fg-secondary);
}

/* --- component gallery ------------------------------------------------- */
.comp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: var(--space-6);
  align-items: start;
}
.comp {
  border: 1px solid var(--border);
  border-radius: var(--radius-card);
  background: var(--surface);
  overflow: hidden;
}
.comp--wide { grid-column: 1 / -1; }
.comp__label {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3) var(--space-4);
  background: var(--surface-sunk);
  border-block-end: 1px solid var(--border);
  font-size: var(--fs-caption);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--fg-secondary);
}
.comp__label em {
  font-style: normal;
  font-weight: var(--weight-regular);
  letter-spacing: 0;
  text-transform: none;
  font-size: var(--fs-caption);
  color: var(--fg-muted);
}
.comp__stage { padding: var(--space-6); display: grid; gap: var(--space-4); }
/* A stage scoped to the opposite theme must re-resolve its own text colour,
   or plain text inside it inherits the outer theme's computed value. */
.comp__stage[data-theme] { color: var(--fg); }
.comp__stage--tight { gap: var(--space-3); }

/* --- audit table ------------------------------------------------------- */
.audit-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  flex-wrap: wrap;
  margin-block: var(--space-8) var(--space-3);
}
.audit-head__title { font-family: var(--font-display); font-size: var(--fs-h4); }
.audit-summary { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
.audit__pair { display: block; font-weight: var(--weight-medium); }
.audit__note { display: block; font-size: var(--fs-caption); color: var(--fg-secondary); max-inline-size: 46ch; }
.audit__hex {
  font-size: var(--fs-caption);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  color: var(--fg-secondary);
  white-space: nowrap;
}
.audit__swatch {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-inline-size: 76px;
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-input);
  border: 1px solid var(--border);
  font-size: var(--fs-sm);
  font-weight: var(--weight-semibold);
  font-variant-numeric: tabular-nums;
}
.audit__bar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 76px;
  block-size: 28px;
  border-radius: var(--radius-input);
  border: 1px solid var(--border);
}
.audit__bar i { display: block; inline-size: 46px; block-size: 3px; border-radius: 2px; }

/* --- responsive proof frames ------------------------------------------- */
.proof { display: flex; gap: var(--space-6); overflow-x: auto; padding-block-end: var(--space-2); }
.proof__frame {
  flex: none;
  inline-size: 375px;
  border: 1px solid var(--border);
  border-radius: var(--radius-modal);
  overflow: hidden;
  background: var(--bg);
  color: var(--fg);
}
.proof__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-2) var(--space-3);
  border-block-end: 1px solid var(--border);
  font-size: var(--fs-caption);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--fg-secondary);
  background: var(--surface);
}
.proof__body { padding: var(--space-4); display: grid; gap: var(--space-3); }

/* --- footer ------------------------------------------------------------ */
.sg-foot {
  padding-block: var(--space-12);
  border-block-start: 1px solid var(--border);
  font-size: var(--fs-sm);
  color: var(--fg-secondary);
}
.sg-foot__inner { display: flex; justify-content: space-between; gap: var(--space-4); flex-wrap: wrap; }

/* --- print (report / PDF header uses the wordmark) --------------------- */
@media print {
  .app-header, .sg-toc, .theme-toggle, .proof { display: none !important; }
  .sg-section { break-inside: avoid; border-color: var(--border-strong); }
  body { background: var(--surface); }
}
