/* Northcode CMS page chrome — reuses the tokens from assets/site.css
   and maps the legacy --nc-* widget palette onto the new design. */

:root {
  --nc-ink: var(--bg);
  --nc-panel: var(--glass);
  --nc-text: var(--ink);
  --nc-muted: var(--mute);
  --nc-line: var(--line);
  --nc-brand: #3aa0ff;
}

html { scroll-padding-top: 88px; }

/* ---------- article ---------- */
.nc-page {
  max-width: 780px;
  margin: 0 auto;
  padding: 132px max(24px, 6vw) 96px;
}
.nc-page--wide { max-width: 1040px; }

.nc-page > h1:first-child,
.nc-page > .nc-heading:first-child {
  font-size: clamp(2.4rem, 6.5vw, 5rem);
  line-height: 1;
  letter-spacing: -.045em;
  font-weight: 700;
  margin-bottom: 1.2rem;
  background: linear-gradient(180deg, var(--ink) 30%, var(--mute));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* Widgets render as plain flow; give every block room to breathe. */
.nc-page .nc-heading,
.nc-page .nc-text,
.nc-page .nc-image,
.nc-page .nc-columns,
.nc-page .nc-slider,
.nc-page .nc-pricing,
.nc-page .nc-accordion-item,
.nc-page .nc-tabs,
.nc-page .nc-icon-box,
.nc-page .nc-feature-card,
.nc-page .nc-list,
.nc-page .nc-html,
.nc-page .nc-cf-form,
.nc-page .nc-divider-wrap,
.nc-page .nc-button-wrap {
  margin-bottom: 1.6em;
}
.nc-page > *:last-child { margin-bottom: 0; }

/* Body copy */
.nc-page .nc-text { font-size: 1.0625rem; line-height: 1.7; color: var(--ink); }
.nc-page .nc-text p { margin: 0 0 1.1em; color: var(--ink); }
.nc-page .nc-text ul,
.nc-page .nc-text ol { margin: 0 0 1.1em; padding-left: 1.4em; }
.nc-page .nc-text li { margin-bottom: .4em; }
.nc-page .nc-text a { color: var(--nc-brand); text-decoration: underline; text-underline-offset: 2px; }
.nc-page .nc-text a:hover { text-decoration: none; }
.nc-page .nc-text h2,
.nc-page .nc-text h3 { letter-spacing: -.02em; color: var(--ink); }
.nc-page .nc-text blockquote {
  margin: 1.6em 0;
  padding-left: 1.2em;
  border-left: 2px solid var(--nc-brand);
  color: var(--mute);
}

.nc-page .nc-heading { color: var(--ink); }
.nc-page .nc-heading--xl { font-size: clamp(2.2rem, 5vw, 3.4rem); }
.nc-page .nc-heading--lg { font-size: clamp(1.8rem, 4vw, 2.6rem); }
.nc-page .nc-heading--md { font-size: 1.6rem; }
.nc-page .nc-heading--sm { font-size: 1.25rem; }

.nc-page .nc-image img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 16px;
  border: 1px solid var(--line);
}

/* Cards pick up the glass surface instead of a flat fill. */
.nc-page .nc-feature-card,
.nc-page .nc-pricing,
.nc-page .nc-accordion-item {
  background: var(--glass);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  border-radius: 18px;
  padding: 1.6em;
}
.nc-page .nc-pricing--featured { box-shadow: 0 24px 60px -24px rgba(0, 0, 0, .45); }

/* Slider arrows need to sit on a light surface too. */
.nc-page .nc-slider { background: var(--glass); border: 1px solid var(--line); }
.nc-page .nc-slider-prev,
.nc-page .nc-slider-next {
  background: color-mix(in srgb, var(--ink) 72%, transparent);
  color: var(--bg);
  border: 1px solid var(--line);
  transition: transform .2s;
}
.nc-page .nc-slider-prev:hover { transform: translateY(-50%) scale(1.08); }
.nc-page .nc-slider-next:hover { transform: translateY(-50%) scale(1.08); }

/* The design's button, reused for CMS buttons. */
.nc-page .nc-button {
  border-radius: 999px;
  padding: 0.85em 1.7em;
  font-size: 0.95rem;
  height: auto;
  transition: transform .2s, background .2s, color .2s;
}
.nc-page .nc-button:hover { transform: scale(1.03); }
.nc-page .nc-button--solid { color: #04110b; }
.nc-page .nc-button--outline:hover { color: #04110b; }
.nc-page .nc-button--ghost:hover { background: var(--line); color: var(--ink); }

/* Form fields inside CMS contact widgets. */
.nc-page .nc-cf-row input,
.nc-page .nc-cf-row textarea,
.nc-page .nc-cf-row select {
  background: var(--glass);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 0.9em 1.1em;
  font-size: 1rem;
  color: var(--ink);
}
.nc-page .nc-cf-row input:focus,
.nc-page .nc-cf-row textarea:focus,
.nc-page .nc-cf-row select:focus {
  outline: 2px solid #3aa0ff;
  outline-offset: 1px;
}
.nc-page .nc-cf-row label { text-transform: none; letter-spacing: 0; font-size: .9rem; color: var(--mute); }
.nc-page .nc-cf-description { color: var(--mute); }

/* Keep prose links/emphasis legible in dark mode. */
.nc-page a:focus-visible,
.nc-page button:focus-visible {
  outline: 2px solid #3aa0ff;
  outline-offset: 3px;
  border-radius: 4px;
}

@media (max-width: 700px) {
  .nc-page { padding: 104px 20px 72px; }
}

/* 404 ---------------------------------------------------------------- */
.nc-404{text-align:center;padding:40px 0}
.nc-404-num{
  font:700 clamp(72px,14vw,150px)/1 var(--f);
  letter-spacing:-.05em;
  color:var(--ink);
  background:linear-gradient(180deg,var(--ink) 30%,var(--mute));
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
}
.nc-404-lead{
  color:var(--mute);
  font-size:1.05rem;
  line-height:1.5;
  margin:16px auto 32px;
  max-width:44ch;
}
