/* Load builder: map, quarry list, material, loads, estimate. Uses the page's --sc-* tokens. */
.bar__link { font: 700 0.9rem var(--sc-font-text); text-decoration: none; padding: 0.5rem 0.25rem; border-bottom: 2px solid transparent; transition: border-color var(--sc-d-fast); }
.bar__link:hover { border-color: var(--sc-accent); }

.builder { position: relative; z-index: 2; padding-inline: var(--sc-gutter); }
.builder__head { max-width: var(--sc-maxw); margin: 0 auto var(--sc-7); }
.builder__head p { max-width: 58ch; color: var(--sc-ink-soft); font-size: var(--sc-t-lg); }
.builder__grid {
  max-width: var(--sc-maxw); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  border-radius: var(--sc-r-lg); overflow: hidden; background: var(--sc-surface);
  box-shadow: var(--sc-e3), inset 0 0 0 1px var(--sc-hairline);
}
.builder__fine { max-width: var(--sc-maxw); margin: var(--sc-4) auto 0; font-size: var(--sc-t-xs); color: var(--sc-ink-soft); }

/* map */
.builder__map { position: relative; min-height: 680px; background: #0b0f16; }
#map { position: absolute; inset: 0; }
.map__hint {
  position: absolute; left: 16px; bottom: 16px; right: 16px; z-index: 500; margin: 0; max-width: 26rem;
  background: rgb(13 16 22 / 0.88); border: 1px solid var(--sc-hairline); border-radius: 10px;
  padding: 0.7rem 0.95rem; font-size: var(--sc-t-sm); pointer-events: none;
}
.leaflet-container { font-family: var(--sc-font-text); background: #0b0f16; }
/* light OSM tiles turned into a dark map that matches the page */
.leaflet-tile-pane { filter: invert(1) hue-rotate(185deg) brightness(0.92) contrast(0.88) saturate(0.55); }
.leaflet-control-attribution { background: rgb(13 16 22 / 0.75) !important; color: var(--sc-ink-soft) !important; font-size: 10px; }
.leaflet-control-attribution a { color: var(--sc-ink-soft) !important; }
.leaflet-bar a { background: var(--sc-surface); color: var(--sc-ink); border-color: var(--sc-hairline) !important; }
.leaflet-bar a:hover { background: #222a38; }
.leaflet-tooltip { background: #0d1016; color: var(--sc-ink); border: 1px solid var(--sc-hairline-strong); border-radius: 6px; font: 600 0.8rem var(--sc-font-text); box-shadow: var(--sc-e2); }
.leaflet-tooltip-top::before { border-top-color: #0d1016; }

.qpin { display: block; width: 14px; height: 14px; background: var(--sc-accent); border: 2px solid #0d1016; transform: rotate(45deg); border-radius: 2px; box-shadow: 0 2px 6px rgb(0 0 0 / 0.5); transition: transform var(--sc-d-base) var(--sc-ease-out); }
.qpin.is-sel { transform: rotate(45deg) scale(1.45); animation: qpulse 1.8s var(--sc-ease-out) infinite; }
@keyframes qpulse { 0% { box-shadow: 0 0 0 0 rgb(240 160 32 / 0.55); } 100% { box-shadow: 0 0 0 16px rgb(240 160 32 / 0); } }
.spin { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--sc-ink); border: 3px solid #162a66; box-shadow: 0 4px 10px rgb(0 0 0 / 0.5); }
.spin::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #162a66; }
.route { stroke-dasharray: 2 12; stroke-linecap: round; animation: haul 0.9s linear infinite; }
@keyframes haul { to { stroke-dashoffset: -14; } }

/* panel */
.builder__panel { padding: clamp(1.25rem, 2.6vw, 2rem); display: grid; gap: var(--sc-5); align-content: start; }
.step { display: grid; gap: 0.65rem; margin: 0; }
.step__label { display: flex; align-items: center; gap: 0.6rem; font: 700 0.72rem/1 var(--sc-font-mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--sc-ink-soft); }
.step__label > span { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--sc-accent); color: var(--sc-accent-ink); display: grid; place-items: center; font: 800 0.75rem var(--sc-font-display); letter-spacing: 0; }

.addr { display: flex; gap: 0.5rem; }
.addr input {
  flex: 1; min-width: 0; min-height: 48px; padding: 0 0.95rem; border-radius: var(--sc-r-sm);
  border: 1.5px solid var(--sc-hairline-strong); background: #0d1016; color: var(--sc-ink); font: 500 1rem var(--sc-font-text);
  transition: border-color var(--sc-d-fast);
}
.addr input { -webkit-appearance: none; appearance: none; }   /* keep our field, not iOS's search style */
.addr input::placeholder { color: #7d786d; }
.addr input:focus { outline: none; border-color: var(--sc-accent); }
.linkbtn { justify-self: start; background: none; border: 0; padding: 0.3rem 0; cursor: pointer; color: var(--sc-accent); font: 600 0.88rem var(--sc-font-text); text-decoration: underline; text-underline-offset: 3px; }
.addr__msg { margin: 0; min-height: 1.2em; font-size: var(--sc-t-sm); color: var(--sc-ink-soft); }
.addr__msg.is-warn { color: #ffb43a; }

.quarries { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.4rem; }
.quarries__empty { padding: 0.8rem 0.95rem; border-radius: 8px; border: 1.5px dashed var(--sc-hairline-strong); color: var(--sc-ink-soft); font-size: var(--sc-t-sm); }
.quarries button {
  width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 1rem; text-align: left; cursor: pointer;
  padding: 0.7rem 0.95rem; border-radius: 8px; border: 1.5px solid transparent; background: rgb(255 255 255 / 0.04); color: var(--sc-ink);
  font: 600 0.95rem/1.25 var(--sc-font-text); transition: border-color var(--sc-d-fast), background-color var(--sc-d-fast);
}
.quarries button:hover { background: rgb(255 255 255 / 0.07); }
.quarries button[aria-pressed="true"] { border-color: var(--sc-accent); background: rgb(240 160 32 / 0.1); }
.quarries em { display: block; font-style: normal; font-weight: 500; font-size: var(--sc-t-xs); color: var(--sc-ink-soft); }
.quarries small { flex: none; font: 700 0.82rem var(--sc-font-mono); color: var(--sc-accent); }

.bseg { display: flex; gap: 0.45rem; }
.bseg label { flex: 1; position: relative; }
.bseg input { position: absolute; opacity: 0; pointer-events: none; }
.bseg span {
  display: flex; align-items: center; justify-content: center; min-height: 44px; border-radius: 8px; cursor: pointer;
  border: 1.5px solid var(--sc-hairline-strong); font: 800 0.86rem var(--sc-font-display); font-stretch: 85%; letter-spacing: 0.06em; text-transform: uppercase;
  transition: background-color var(--sc-d-fast), color var(--sc-d-fast), border-color var(--sc-d-fast);
}
.bseg input:checked + span { background: var(--sc-accent); color: var(--sc-accent-ink); border-color: var(--sc-accent); }
.bseg input:focus-visible + span { outline: 2px solid var(--sc-accent); outline-offset: 3px; }

.chips { display: flex; flex-wrap: wrap; gap: 0.45rem; }
.chip {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0 0.9rem; border-radius: var(--sc-r-pill); cursor: pointer;
  border: 1.5px solid var(--sc-hairline-strong); background: none; color: var(--sc-ink); font: 600 0.88rem var(--sc-font-text);
  transition: border-color var(--sc-d-fast), background-color var(--sc-d-fast), opacity var(--sc-d-fast);
}
.chip:hover { border-color: var(--sc-ink-soft); }
.chip[aria-pressed="true"] { border-color: var(--sc-accent); background: rgb(240 160 32 / 0.12); }
.chips.is-off .chip { opacity: 0.35; pointer-events: none; }

.loads { display: flex; align-items: center; gap: 0.9rem; flex-wrap: wrap; }
.loads__btn {
  width: 48px; height: 48px; border-radius: 50%; cursor: pointer; border: 1.5px solid var(--sc-hairline-strong);
  background: none; color: var(--sc-ink); font: 700 1.5rem/1 var(--sc-font-display);
  transition: border-color var(--sc-d-fast), color var(--sc-d-fast), transform var(--sc-d-fast);
}
.loads__btn:hover { border-color: var(--sc-accent); color: var(--sc-accent); }
.loads__btn:active { transform: scale(0.92); }
.loads__btn:disabled { opacity: 0.3; pointer-events: none; }
#loadsOut { min-width: 2ch; text-align: center; font: 900 2.8rem/1 var(--sc-font-display); font-stretch: 70%; font-variant-numeric: tabular-nums; }
.loads__yd { color: var(--sc-ink-soft); font-size: var(--sc-t-sm); }
.trucks { display: flex; flex-wrap: wrap; gap: 6px; min-height: 18px; }
.trucks svg { width: 34px; height: 16px; animation: truckIn 360ms var(--sc-ease-out) both; }
@keyframes truckIn { from { opacity: 0; transform: translateX(-12px); } }

.perload { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 6px; align-items: end; height: 132px; padding-top: 24px; }
.perload button {
  position: relative; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: stretch; gap: 4px;
  background: none; border: 0; padding: 0; cursor: pointer; color: var(--sc-ink-soft); font: 700 0.62rem/1 var(--sc-font-mono); text-align: center;
}
.perload i { display: block; height: var(--h); border-radius: 4px 4px 2px 2px; background: #22305a; transition: height 420ms var(--sc-ease-out), background-color var(--sc-d-fast); }
.perload button:hover i { background: #2f4078; }
.perload button[aria-pressed="true"] i { background: var(--sc-accent); }
.perload button[aria-pressed="true"] { color: var(--sc-ink); }
.perload b { font-weight: 700; }
.perload .is-best::before {
  content: "Best value"; position: absolute; top: -22px; left: 50%; transform: translateX(-50%); white-space: nowrap;
  font: 800 0.6rem/1 var(--sc-font-display); letter-spacing: 0.06em; text-transform: uppercase; color: #0b1636; background: var(--sc-accent); padding: 3px 5px; border-radius: 3px;
}

.perload__cap { margin: 0.4rem 0 -0.4rem; font: 700 0.68rem var(--sc-font-mono); letter-spacing: 0.08em; text-transform: uppercase; color: var(--sc-ink-soft); }
.est__deliv { margin: 0; font: 700 0.9rem var(--sc-font-text); color: var(--sc-accent); }
.estimate { display: grid; gap: 0.55rem; padding-top: var(--sc-5); border-top: 1px dashed var(--sc-hairline-strong); }
.est__total { font: 900 clamp(2.8rem, 2rem + 2.6vw, 4rem)/1 var(--sc-font-display); font-stretch: 70%; font-variant-numeric: tabular-nums; }
.est__per { margin: 0; color: var(--sc-ink-soft); }
.est__per b { color: var(--sc-ink); }
.est__save { justify-self: start; margin: 0; padding: 0.4rem 0.7rem; border-radius: 6px; background: rgb(240 160 32 / 0.13); color: var(--sc-accent); font: 700 0.88rem var(--sc-font-text); }
.est__rows { display: grid; grid-template-columns: 1fr auto; gap: 0.25rem 1rem; margin: 0.25rem 0 0; font-size: var(--sc-t-sm); color: var(--sc-ink-soft); }
.est__rows dd { margin: 0; text-align: right; color: var(--sc-ink); font-variant-numeric: tabular-nums; }
.est__note { margin: 0; font-size: var(--sc-t-xs); color: var(--sc-ink-soft); }
.est__cta { justify-self: start; margin-top: var(--sc-2); }

@media (max-width: 960px) {
  .builder__grid { grid-template-columns: 1fr; }
  .builder__map { min-height: 340px; }
  .map__hint.is-done { display: none; }   /* on a small map it would cover the pin */
}
@media (max-width: 480px) {
  .perload { gap: 4px; }
  .perload button { font-size: 0.55rem; }
  .est__cta { justify-self: stretch; }
}
@media (prefers-reduced-motion: reduce) {
  .route, .qpin.is-sel, .trucks svg { animation: none; }
}
