.forecast-configurator {
  --fc-aqua: #8ce8cf;
  --fc-aqua-soft: rgba(140, 232, 207, .14);
  --fc-lime: #c8ff75;
  --fc-lime-soft: rgba(200, 255, 117, .13);
  --fc-violet: #a990ff;
  --fc-violet-soft: rgba(169, 144, 255, .14);
  --fc-ink: #f3f8f5;
  --fc-muted: #8aa099;
  --fc-line: rgba(220, 244, 235, .14);
  min-width: 0;
  color: var(--fc-ink);
}

.site-observation-body:has(.forecast-configurator) {
  grid-template-columns: minmax(0, 1fr);
}

.fc-configurator-stage {
  min-width: 0;
}

.fc-configurator-stage.is-configuring {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(320px, 29vw, 390px);
  gap: clamp(18px, 2.2vw, 30px);
  align-items: start;
}

.fc-sr-live {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.fc-chart {
  min-width: 0;
  margin: 0;
}

.fc-chart-toolbar {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 12px;
}

.fc-activate,
.fc-button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  border: 1px solid rgba(200, 255, 117, .35);
  border-radius: 3px;
  background: var(--fc-lime-soft);
  color: var(--fc-lime);
  cursor: pointer;
  font: 720 10.5px/1 var(--font-sans);
  letter-spacing: .055em;
  text-transform: uppercase;
}

.fc-activate { flex: 0 0 auto; }
.fc-activate:hover,
.fc-button.is-primary:hover { background: rgba(200, 255, 117, .2); }
.forecast-configurator button:focus-visible,
.forecast-configurator input:focus-visible,
.forecast-configurator a:focus-visible {
  outline: 3px solid var(--fc-violet);
  outline-offset: 3px;
}

.fc-chart-stage {
  min-width: 0;
  position: relative;
  overflow: hidden;
  border: 1px solid var(--fc-line);
  background:
    radial-gradient(circle at 68% 12%, rgba(140, 232, 207, .055), transparent 28%),
    linear-gradient(180deg, rgba(1, 7, 9, .78), rgba(5, 14, 16, .38));
}

.fc-chart-stage svg {
  width: 100%;
  height: auto;
  display: block;
}

.fc-grid,
.fc-time-grid,
.fc-baseline,
.fc-source-line,
.fc-selected-source-line,
.fc-stat-line {
  vector-effect: non-scaling-stroke;
}

.fc-grid { stroke: rgba(220, 244, 235, .10); stroke-width: .7; }
.fc-time-grid { stroke: rgba(220, 244, 235, .09); stroke-width: .7; }
.fc-time-grid.is-year-boundary {
  stroke: rgba(220, 244, 235, .22);
  stroke-width: 1;
}
.fc-baseline { stroke: rgba(220, 244, 235, .32); stroke-width: .8; }
.fc-axis {
  fill: rgba(236, 248, 243, .52);
  font: 610 16px var(--font-sans);
}
.fc-axis.is-year-boundary { fill: rgba(236, 248, 243, .78); font-weight: 720; }
.fc-axis-label {
  fill: rgba(236, 248, 243, .72);
  font: 630 18px var(--font-sans);
}
.fc-mobile-axis-label {
  display: none;
  fill: rgba(236, 248, 243, .72);
  font: 700 34px var(--font-sans);
}
.fc-configurator-stage.is-configuring .fc-axis { font-size: 28px; }
.fc-configurator-stage.is-configuring .fc-axis-label { font-size: 30px; }
.fc-configurator-stage.is-configuring .fc-period-role { font-size: 20px; }

.fc-chart .site-observation-line {
  fill: none;
  stroke: var(--fc-aqua);
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: opacity .2s ease;
}

.fc-chart.is-configuring .site-observation-line { opacity: .27; }
.fc-chart.is-configuring .fc-grid,
.fc-chart.is-configuring .fc-time-grid,
.fc-chart.is-configuring .fc-baseline { opacity: .62; }
.fc-chart.is-configuring .fc-axis,
.fc-chart.is-configuring .fc-axis-label { opacity: .72; }
.fc-selected-period {
  fill: rgba(140, 232, 207, .075);
  stroke: rgba(140, 232, 207, .25);
  stroke-width: .8;
  vector-effect: non-scaling-stroke;
}
.fc-selected-period.is-forecast {
  fill: rgba(200, 255, 117, .065);
  stroke: rgba(200, 255, 117, .26);
}
.fc-period-role {
  fill: #dff8f0;
  font: 740 10px var(--font-sans);
  letter-spacing: .06em;
}
.fc-selected-source-line {
  fill: none;
  stroke: var(--fc-aqua);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-linejoin: round;
  filter:
    drop-shadow(0 0 2px rgba(140, 232, 207, .95))
    drop-shadow(0 0 7px rgba(140, 232, 207, .62));
}
.fc-selected-source-line.is-forecast {
  stroke: var(--fc-lime);
  filter:
    drop-shadow(0 0 2px rgba(200, 255, 117, .98))
    drop-shadow(0 0 8px rgba(200, 255, 117, .65));
}
.fc-stat-line {
  fill: none;
  stroke-width: 2.2;
  stroke-linecap: round;
}
.fc-stat-line.is-primary { stroke: var(--fc-lime); stroke-width: 3; }
.fc-stat-line.is-context { stroke: var(--fc-violet); opacity: .75; }
.fc-stat-line.is-provisional { stroke-dasharray: 7 6; }
.fc-stat-line.is-median.is-context { stroke: #f4c77c; }
.fc-stat-line.is-minimum.is-context { stroke: #7db6ff; }
.fc-stat-line.is-maximum.is-context { stroke: #f08cae; }

.fc-large-sign circle {
  fill: #11151a;
  stroke: var(--fc-violet);
  stroke-width: 1.7;
  vector-effect: non-scaling-stroke;
  filter: drop-shadow(0 0 11px rgba(169, 144, 255, .55));
}
.fc-large-sign text {
  fill: #fff;
  font: 560 38px var(--font-sans);
}

.fc-equation {
  position: absolute;
  right: 16px;
  bottom: 14px;
  display: grid;
  grid-template-columns: 1fr 46px 1fr;
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border: 1px solid rgba(169, 144, 255, .34);
  background: rgba(3, 8, 12, .86);
  color: #c7d2ce;
  font-size: 8px;
  font-weight: 720;
  letter-spacing: .04em;
  text-align: center;
  text-transform: uppercase;
}
.fc-equation strong { color: var(--fc-lime); font-size: 24px; font-weight: 520; }

.fc-chart-key {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 15px;
  margin-top: 9px;
  color: var(--fc-muted);
  font-size: 10.5px;
}
.fc-chart-key span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.fc-chart-key i { width: 21px; border-top: 2px solid var(--fc-aqua); }
.fc-chart-key .is-reference i {
  border-color: var(--fc-aqua);
  box-shadow: 0 0 5px rgba(140, 232, 207, .75);
}
.fc-chart-key .is-forecast i {
  border-color: var(--fc-lime);
  box-shadow: 0 0 5px rgba(200, 255, 117, .72);
}
.fc-chart-key .is-provisional i { border-color: var(--fc-lime); border-top-style: dashed; }
.fc-chart-key .is-empty i { border-color: rgba(220, 244, 235, .28); }
.fc-chart figcaption {
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px solid var(--fc-line);
  color: var(--fc-muted);
  font-size: 10.5px;
  line-height: 1.55;
}

.fc-control-rail {
  min-width: 0;
  align-self: start;
}

.fc-controls {
  display: grid;
  gap: 12px;
}
.fc-question-preview {
  padding: 16px;
  border: 1px solid rgba(140, 232, 207, .24);
  background:
    radial-gradient(circle at 88% 0, rgba(140, 232, 207, .1), transparent 35%),
    rgba(3, 9, 11, .5);
}
.fc-question-preview > span,
.fc-stage-index span,
.fc-authority-badge {
  color: var(--fc-aqua);
  font-size: 10px;
  font-weight: 760;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.fc-question-preview h2 {
  margin: 8px 0 0;
  color: var(--fc-ink);
  font-size: 17px;
  font-weight: 620;
  line-height: 1.28;
  letter-spacing: -.02em;
}
.fc-question-preview p {
  margin: 8px 0 0;
  color: var(--fc-muted);
  font-size: 10.5px;
  line-height: 1.45;
}
.fc-control-block,
.fc-stage-panel {
  min-width: 0;
  padding: 15px;
  border: 1px solid var(--fc-line);
  background: rgba(3, 9, 11, .42);
}
.fc-control-columns {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 12px;
}
.fc-provider-boundary { display: grid; gap: 6px; min-height: 84px; padding: 14px; border: 1px solid rgba(143,199,178,.18); border-radius: 8px; background: rgba(143,199,178,.045); }
.fc-provider-boundary strong { color: #c6ddd2; font-size: 11px; }
.fc-provider-boundary span { color: rgba(245,247,244,.62); font-size: 9px; line-height: 1.55; }
.fc-control-heading {
  display: block;
}
.fc-control-heading strong,
.fc-control-heading small { display: block; }
.fc-control-heading strong { color: var(--fc-ink); font-size: 13.5px; }
.fc-control-heading small {
  margin-top: 4px;
  color: var(--fc-muted);
  font-size: 11px;
  line-height: 1.45;
}
.fc-segmented,
.fc-periods,
.fc-statistics,
.fc-overlays,
.fc-operators {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 12px;
}
.fc-segmented button,
.fc-periods button,
.fc-statistics button,
.fc-operators button,
.fc-overlays label {
  min-height: 31px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
  border: 1px solid var(--fc-line);
  border-radius: 2px;
  background: rgba(255, 255, 255, .025);
  color: #a7b6b1;
  cursor: pointer;
  font: 680 11px var(--font-sans);
  letter-spacing: .035em;
  text-transform: uppercase;
}
.fc-segmented button[aria-pressed="true"],
.fc-periods button[aria-pressed="true"],
.fc-statistics button[aria-checked="true"],
.fc-operators button[aria-checked="true"] {
  border-color: rgba(200, 255, 117, .55);
  background: var(--fc-lime-soft);
  color: var(--fc-lime);
}
.fc-periods { overflow: visible; }
.fc-year-periods button { flex: 1 0 calc(33.333% - 6px); }
.fc-periods button[aria-pressed="true"]:first-of-type {
  border-color: rgba(140, 232, 207, .58);
  background: var(--fc-aqua-soft);
  color: var(--fc-aqua);
}
.fc-overlays label { gap: 7px; }
.fc-overlays input {
  width: 13px;
  height: 13px;
  margin: 0;
  accent-color: var(--fc-violet);
}
.fc-overlays label:has(input:disabled) {
  border-color: rgba(200, 255, 117, .4);
  color: var(--fc-lime);
  cursor: not-allowed;
}
.fc-month-picker { margin-top: 12px; }
.fc-month-slots {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 7px;
}
.fc-month-slots button {
  min-width: 0;
  display: grid;
  gap: 4px;
  padding: 10px;
  border: 1px solid var(--fc-line);
  border-radius: 3px;
  background: rgba(255, 255, 255, .025);
  color: #9dafaa;
  cursor: pointer;
  text-align: left;
}
.fc-month-slots button[aria-selected="true"] {
  border-color: rgba(140, 232, 207, .52);
  background: var(--fc-aqua-soft);
  color: var(--fc-aqua);
}
.fc-month-slots span {
  font-size: 10px;
  font-weight: 740;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.fc-month-slots strong {
  overflow: hidden;
  color: var(--fc-ink);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.fc-month-year {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
  color: var(--fc-muted);
  font-size: 10.5px;
}
.fc-month-year select {
  min-height: 34px;
  padding: 0 30px 0 10px;
  border: 1px solid var(--fc-line);
  border-radius: 3px;
  background: #0b1415;
  color: var(--fc-ink);
  font: 680 11px var(--font-sans);
}
.fc-month-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  margin-top: 10px;
}
.fc-month-grid button {
  min-height: 32px;
  border: 1px solid var(--fc-line);
  border-radius: 2px;
  background: rgba(255, 255, 255, .025);
  color: #a7b6b1;
  cursor: pointer;
  font: 680 11px var(--font-sans);
}
.fc-month-grid button[aria-pressed="true"] {
  border-color: rgba(200, 255, 117, .55);
  background: var(--fc-lime-soft);
  color: var(--fc-lime);
}
.fc-month-grid button:disabled {
  opacity: .3;
  cursor: not-allowed;
}
.fc-operators { justify-content: center; }
.fc-operators button {
  flex: 1;
  width: auto;
  min-height: 52px;
  font-size: 26px;
  font-weight: 520;
  text-transform: none;
}

.fc-messages { display: grid; gap: 7px; }
.fc-message {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 5px;
  padding: 10px 12px;
  border-left: 3px solid #f19578;
  background: rgba(241, 149, 120, .085);
}
.fc-message.is-warning {
  border-color: #f4c77c;
  background: rgba(244, 199, 124, .075);
}
.fc-message strong {
  color: #f5b19a;
  font-size: 10px;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.fc-message.is-warning strong { color: #f4c77c; }
.fc-message span {
  color: #bdc9c5;
  font-size: 10.5px;
  line-height: 1.45;
}

.fc-actions {
  display: grid;
  grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr);
  gap: 9px;
  margin-top: 4px;
}
.fc-button.is-quiet {
  border-color: var(--fc-line);
  background: rgba(255, 255, 255, .025);
  color: #aebdb8;
}
.fc-button:disabled {
  border-color: var(--fc-line);
  background: rgba(255, 255, 255, .02);
  color: #5e6b67;
  cursor: not-allowed;
}

.fc-stage-panel {
  min-height: 500px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(24px, 5vw, 62px);
  background:
    radial-gradient(circle at 82% 12%, rgba(169, 144, 255, .11), transparent 26%),
    linear-gradient(145deg, rgba(3, 10, 13, .72), rgba(8, 17, 18, .56));
}
.fc-stage-index {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
}
.fc-authority-badge {
  width: fit-content;
  margin-top: 28px;
  padding: 5px 7px;
  border: 1px solid rgba(140, 232, 207, .25);
  background: var(--fc-aqua-soft);
}
.fc-stage-panel h2 {
  max-width: 900px;
  margin: 12px 0 0;
  color: var(--fc-ink);
  font-size: clamp(28px, 4.5vw, 54px);
  font-weight: 550;
  line-height: 1.02;
  letter-spacing: -.05em;
}
.fc-stage-panel > p {
  max-width: 760px;
  margin: 13px 0 0;
  color: var(--fc-muted);
  font-size: 10px;
  line-height: 1.6;
}
.fc-preview-status { color: var(--fc-aqua) !important; }
.fc-review-grid,
.fc-freeze-proof {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  margin: 24px 0 0;
  border: 1px solid var(--fc-line);
  background: var(--fc-line);
}
.fc-review-grid > div,
.fc-freeze-proof > div {
  min-width: 0;
  padding: 11px 12px;
  background: #0b1415;
}
.fc-review-grid dt,
.fc-freeze-proof dt {
  color: #71847d;
  font-size: 6px;
  font-weight: 740;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.fc-review-grid dd,
.fc-freeze-proof dd {
  margin: 5px 0 0;
  overflow-wrap: anywhere;
  color: #dbe6e2;
  font-size: 8px;
  line-height: 1.4;
}
.fc-review > .fc-message,
.fc-forecast > .fc-message { margin-top: 15px; }
.fc-suggestion {
  margin-top: 18px;
  padding: 16px;
  border: 1px solid rgba(169, 144, 255, .32);
  background: var(--fc-violet-soft);
}
.fc-suggestion > span {
  color: var(--fc-violet);
  font-size: 7px;
  font-weight: 740;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.fc-suggestion h3 {
  margin: 7px 0 0;
  color: #f3efff;
  font-size: 18px;
  font-weight: 590;
}
.fc-suggestion a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  margin-top: 11px;
  padding: 11px 12px;
  border: 1px solid rgba(169, 144, 255, .28);
  background: rgba(2, 6, 10, .34);
}
.fc-suggestion a strong { font-size: 9px; line-height: 1.4; }
.fc-suggestion a span { color: var(--fc-violet); font-size: 7px; }
.fc-suggestion p {
  margin: 9px 0 0;
  color: #a49bbd;
  font-size: 7.5px;
}
.fc-stage-panel .fc-actions { margin-top: 24px; }

.fc-probability {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px 20px;
  margin-top: 30px;
  padding: 20px;
  border: 1px solid rgba(200, 255, 117, .28);
  background: var(--fc-lime-soft);
}
.fc-probability label {
  align-self: center;
  color: #cfe1d9;
  font-size: 9px;
  font-weight: 720;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.fc-probability output {
  color: var(--fc-lime);
  font-size: 36px;
  font-weight: 560;
  letter-spacing: -.04em;
}
.fc-probability input {
  grid-column: 1 / -1;
  width: 100%;
  accent-color: var(--fc-lime);
}
.fc-probability > div {
  grid-column: 1 / -1;
  display: flex;
  justify-content: space-between;
  color: #7e9189;
  font-size: 7px;
}
.fc-freeze-proof { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.fc-success { text-align: center; }
.fc-success .fc-stage-index,
.fc-success .fc-actions { text-align: left; }
.fc-success .fc-authority-badge { align-self: center; }
.fc-success h2,
.fc-success > p { align-self: center; }
.fc-success-mark {
  width: 72px;
  height: 72px;
  display: grid;
  place-items: center;
  align-self: center;
  margin-top: 22px;
  border: 1px solid var(--fc-lime);
  border-radius: 50%;
  background: var(--fc-lime-soft);
  color: var(--fc-lime);
  font-size: 34px;
  box-shadow: 0 0 32px rgba(200, 255, 117, .18);
}
.fc-success-links {
  display: flex;
  flex-wrap: wrap;
  align-self: center;
  justify-content: center;
  gap: 8px;
  margin-top: 24px;
}

@media (max-width: 1050px) {
  .fc-configurator-stage.is-configuring {
    grid-template-columns: minmax(0, 1fr);
  }
  .fc-control-rail {
    position: static;
  }
}

@media (max-width: 720px) {
  .fc-activate { width: 100%; }
  .fc-chart-stage { overflow: visible; }
  .fc-chart-stage svg { min-height: 255px; }
  .fc-time-grid.is-intermediate,
  .fc-x-axis:not(.is-year-boundary) { display: none; }
  .fc-axis { font-size: 36px; }
  .fc-axis-label { display: none; }
  .fc-mobile-axis-label { display: block; }
  .fc-period-role { font-size: 28px; }
  .fc-configurator-stage.is-configuring .fc-axis { font-size: 38px; }
  .fc-configurator-stage.is-configuring .fc-axis-label { font-size: 40px; }
  .fc-configurator-stage.is-configuring .fc-period-role { font-size: 28px; }
  .fc-large-sign circle { r: 25px; }
  .fc-large-sign text { font-size: 32px; }
  .fc-equation {
    position: static;
    grid-template-columns: 1fr 40px 1fr;
    border-width: 1px 0 0;
  }
  .fc-control-columns { grid-template-columns: 1fr; }
  .fc-control-block { padding: 13px 11px; }
  .fc-periods button { flex: 1 0 calc(25% - 6px); }
  .fc-statistics button,
  .fc-overlays label { flex: 1 0 calc(50% - 6px); }
  .fc-message { grid-template-columns: 1fr; gap: 4px; }
  .fc-actions { display: grid; grid-template-columns: 1fr; }
  .fc-button { width: 100%; }
  .fc-stage-panel { min-height: 0; padding: 24px 14px; }
  .fc-stage-panel h2 { font-size: 31px; }
  .fc-review-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fc-suggestion a { grid-template-columns: 1fr; }
  .fc-probability { padding: 15px 12px; }
  .fc-freeze-proof { grid-template-columns: 1fr; }
  .fc-success-links { width: 100%; }
  .fc-success-links .fc-button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .fc-chart .site-observation-line,
  .forecast-configurator button,
  .forecast-configurator a { transition: none !important; }
  .fc-large-sign circle,
  .fc-selected-source-line { filter: none; }
}

@media (forced-colors: active) {
  .forecast-configurator,
  .fc-chart-stage,
  .fc-control-block,
  .fc-stage-panel,
  .fc-review-grid > div,
  .fc-freeze-proof > div {
    border-color: CanvasText !important;
    background: Canvas !important;
    color: CanvasText !important;
  }
  .fc-source-line,
  .fc-selected-source-line,
  .fc-stat-line,
  .fc-grid,
  .fc-time-grid,
  .fc-baseline { stroke: CanvasText !important; }
  .fc-selected-period { fill: Highlight !important; }
}
