/* styles.css — layout and components. References theme.css custom properties
   only; no raw hex/font values here so a re-skin never touches this file. */

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

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-family: var(--font-body);
  font-size: 1.0625rem;
  line-height: 1.6;
}

h1, h2, h3 {
  font-family: var(--font-heading);
  color: var(--color-charcoal);
  line-height: 1.25;
  margin: 0;
}

p { margin: 0 0 var(--space-sm); }

.container {
  max-width: var(--max-width);
  margin: 0 auto;
  padding: 0 var(--space-md);
}

.eyebrow {
  display: inline-block;
  font-family: var(--font-body);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.8rem;
  color: var(--color-accent-dark);
  margin-bottom: var(--space-xs);
}

.is-hidden { display: none !important; }

/* --- header --- */

.site-header {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  padding: var(--space-sm) 0;
}

.header-row { display: flex; align-items: center; justify-content: center; }

.brand-mark { text-align: center; }

.brand-mark h1 {
  font-size: clamp(1.5rem, 4vw, 2.1rem);
  color: var(--color-navy);
}

/* --- lede --- */

.lede {
  margin-top: var(--space-md);
}

.lede-hook {
  font-family: var(--font-heading);
  font-size: clamp(1.5rem, 4vw, 2.1rem);
  font-weight: 900;
  line-height: 1.15;
  color: var(--color-charcoal);
  margin-bottom: var(--space-sm);
}

.lede-lead {
  font-family: var(--font-heading);
  font-size: clamp(1.1rem, 2.3vw, 1.35rem);
  font-weight: 700;
  color: var(--color-charcoal);
  opacity: 0.9;
}

.lede-sub {
  font-size: 1rem;
  opacity: 0.8;
  margin-bottom: 0;
}

/* --- disclaimer --- */

.explainer {
  padding: var(--space-md) 0;
}

.disclaimer {
  font-size: 0.9rem;
  color: var(--color-charcoal);
  background: var(--color-accent-light);
  border-radius: var(--radius);
  padding: var(--space-sm);
  opacity: 0.9;
}

/* --- controls --- */

.controls {
  display: grid;
  gap: var(--space-md);
  background: var(--color-surface);
  border-radius: var(--radius);
  padding: var(--space-md);
}

.control-block + .control-block { margin-top: var(--space-sm); }

.control-label-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-sm);
  margin-bottom: 0.35rem;
}

.control-label-row label,
.control-label-text {
  font-weight: 700;
}

.control-block > .control-label-text {
  display: block;
  margin-bottom: var(--space-xs);
}

.control-value {
  font-variant-numeric: tabular-nums;
  color: var(--color-accent-dark);
  font-weight: 700;
  white-space: nowrap;
}

.control-hint {
  font-size: 0.85rem;
  opacity: 0.75;
  margin-top: 0.35rem;
  margin-bottom: 0;
}

.control-hint a {
  color: var(--color-accent-dark);
}

.polling-freshness {
  font-style: italic;
}

.polling-freshness a {
  color: inherit;
}

input[type="range"] {
  width: 100%;
  accent-color: var(--color-accent-dark);
  height: 1.5rem;
}

input[type="range"].slider-separation { accent-color: var(--color-separation); }
input[type="range"].slider-remain { accent-color: var(--color-remain); }

.control-value-separation { color: var(--color-separation); }
.control-value-remain { color: var(--color-remain); }

input[type="range"] + .control-label-row {
  margin-top: var(--space-sm);
}

/* --- result --- */

.result {
  text-align: center;
  padding: var(--space-md) 0;
}

.result-lead {
  font-size: clamp(1rem, 2.4vw, 1.2rem);
  margin: 0 0 var(--space-md);
  padding: var(--space-sm) var(--space-md);
  background: var(--color-accent-light);
  border-radius: var(--radius);
  color: var(--color-charcoal);
}

.result-lead strong { color: var(--color-navy); }

.result-headline {
  font-family: var(--font-heading);
  font-weight: 900;
  font-size: clamp(1.75rem, 5vw, 2.75rem);
  margin-bottom: 0.25rem;
}

.result-label {
  display: block;
  font-family: var(--font-body);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: 0.8rem;
  color: var(--color-accent-dark);
  margin-bottom: 0.15rem;
}

.result-score {
  font-size: clamp(1.5rem, 4vw, 2.1rem);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--color-charcoal);
  opacity: 0.8;
  margin-bottom: var(--space-sm);
}

.meter {
  display: flex;
  width: 100%;
  height: 2.5rem;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--color-border);
}

.meter-fill { transition: width 0.35s ease; }
.meter-remain { background: var(--color-remain); }
.meter-separation { background: var(--color-separation); }

.meter-legend {
  display: flex;
  justify-content: center;
  gap: var(--space-md);
  margin-top: var(--space-xs);
  font-size: 0.9rem;
}

.legend-item { display: inline-flex; align-items: center; gap: 0.4rem; }

.swatch {
  width: 0.85rem;
  height: 0.85rem;
  border-radius: 3px;
  display: inline-block;
}

.swatch-remain { background: var(--color-remain); }
.swatch-separation { background: var(--color-separation); }

.result-subline {
  margin-top: var(--space-sm);
  font-size: 0.95rem;
}

/* --- collapsible panels --- */

.panel { padding: var(--space-xs) 0; }

.panel details {
  background: var(--color-surface);
  border-radius: var(--radius);
  padding: var(--space-sm) var(--space-md);
}

.panel summary {
  font-family: var(--font-heading);
  font-weight: 700;
  cursor: pointer;
  font-size: 1.05rem;
}

.panel-body { padding-top: var(--space-sm); }

.formula {
  font-family: var(--font-mono);
  font-size: 0.85rem;
  white-space: pre-wrap;
  background: var(--color-bg);
  border-radius: var(--radius);
  padding: var(--space-sm);
}

.formula-plugged { color: var(--color-accent-dark); font-weight: 700; }

.panel-footnote {
  font-size: 0.8rem;
  opacity: 0.7;
  margin-top: var(--space-sm);
  margin-bottom: 0;
}

.panel-footnote a { color: var(--color-accent-dark); }

/* --- share --- */

.share { padding: var(--space-lg) 0 var(--space-xl); text-align: center; }

.share-hint { max-width: 34rem; margin-left: auto; margin-right: auto; opacity: 0.85; }

/* icon-only share buttons — matches the simplified page's .share-row */
.share-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  margin-top: var(--space-sm);
}

.s-share {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: var(--color-accent-light);
  color: var(--color-accent-dark);
  border: none;
  cursor: pointer;
  text-decoration: none;
  transition: background 0.15s ease, color 0.15s ease;
}
.s-share:hover,
.s-share:focus-visible {
  background: var(--color-accent-dark);
  color: var(--color-offwhite);
}
.s-share svg {
  width: 1.15rem;
  height: 1.15rem;
  fill: currentColor;
}

.s-tip {
  position: absolute;
  bottom: calc(100% + 0.4rem);
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-charcoal);
  color: var(--color-offwhite);
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.2rem 0.45rem;
  border-radius: 0.25rem;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
}
.s-share:hover .s-tip,
.s-share:focus-visible .s-tip,
.s-share.copied .s-tip {
  opacity: 1;
}

/* --- footer --- */

.site-footer {
  background: var(--color-charcoal);
  padding: var(--space-md) 0;
}

.footer-row { display: flex; justify-content: center; }

.footer-credit {
  display: inline-flex;
  align-items: center;
  gap: var(--space-xs);
  color: var(--color-offwhite);
  text-decoration: none;
  font-size: 0.85rem;
  opacity: 0.85;
}

.footer-credit:hover { opacity: 1; }

.footer-logo { height: 1.75rem; width: auto; }

@media (max-width: 40rem) {
  .controls { padding: var(--space-sm); }
}
