/* ================= Freight calculator ================= */

.calc-field label{margin-bottom:10px;}

.mode-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.mode-tab{
  display:flex;flex-direction:column;align-items:flex-start;gap:10px;
  background:var(--white);border:1px solid var(--line-dark);border-radius:2px;
  padding:16px 14px;text-align:left;transition:all .25s var(--ease);cursor:pointer;
}
.mode-tab svg{width:22px;height:22px;color:var(--accent-dim);}
.mode-tab span{font-family:'Manrope',sans-serif;font-weight:700;font-size:0.8rem;color:var(--ink);line-height:1.3;}
.mode-tab:hover{border-color:var(--accent);}
.mode-tab.active{background:var(--navy);border-color:var(--navy);}
.mode-tab.active svg{color:var(--accent);}
.mode-tab.active span{color:var(--pure-white);}
@media (max-width:575px){.mode-tabs{grid-template-columns:repeat(2,1fr);}}

.swap-btn{
  flex-shrink:0;width:38px;height:38px;margin:0 auto;
  background:var(--white);border:1px solid var(--line-dark);border-radius:2px;
  display:flex;align-items:center;justify-content:center;color:var(--accent-dim);cursor:pointer;
  transition:all .25s var(--ease);
}
.swap-btn:hover{border-color:var(--accent);color:var(--accent);transform:rotate(180deg);}
.swap-btn svg{width:16px;height:16px;}
.origin-dest-row .col-md-2{display:flex;align-items:center;justify-content:center;}
@media (max-width:767px){
  .swap-btn{transform:rotate(90deg);margin:2px auto;}
  .swap-btn:hover{transform:rotate(270deg);}
}

.result-route{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:'Manrope',sans-serif;
  font-weight:700;font-size:0.9rem;color:var(--ink);margin:-8px 0 18px;
}
.result-route svg{width:14px;height:14px;color:var(--accent-dim);flex-shrink:0;}

.mode-panel{margin-top:4px;}
.dims-box{border:1px dashed var(--line-dark);border-radius:2px;padding:16px;margin:0;}
.dims-box legend{
  width:auto;padding:0 8px;font-family:'Manrope',sans-serif;font-weight:700;font-size:0.78rem;
  color:var(--ink-soft);float:none;
}
.dims-box label{font-size:0.74rem;margin-bottom:5px;}

.calc-alert{
  margin-top:16px;padding:14px 16px;border-radius:2px;font-size:0.86rem;line-height:1.55;
  background:rgba(232,172,78,0.12);border:1px solid rgba(232,172,78,0.4);color:#7a5417;
}
.calc-alert-error{background:rgba(220,80,80,0.1);border-color:rgba(220,80,80,0.4);color:#9c3030;}
.calc-alert-info{background:rgba(42,212,196,0.10);border-color:rgba(42,212,196,0.35);color:#0e6b62;}

#calcSubmit svg{width:16px;height:16px;}
#calcSubmit.is-loading{opacity:0.7;pointer-events:none;}

/* ---------- result card ---------- */
.result-card{
  position:sticky;top:110px;background:var(--white);border:1px solid var(--line-dark);border-radius:2px;
  padding:34px;min-height:340px;box-shadow:var(--shadow);
}
.result-empty{
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  gap:16px;min-height:280px;color:var(--ink-soft);
}
.result-empty svg{width:44px;height:44px;color:var(--line-dark);}
.result-empty p{max-width:220px;margin:0;font-size:0.92rem;}

.result-body h3{font-size:1.2rem;margin-bottom:20px;}
.result-row{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:14px 0;border-bottom:1px solid var(--line-dark);
}
.result-row:first-of-type{border-top:1px solid var(--line-dark);}
.result-row span{font-size:0.86rem;color:var(--ink-soft);}
.result-row b{font-family:'Manrope',sans-serif;font-weight:800;color:var(--ink);text-align:right;font-size:1.05rem;}
.result-disclaimer{font-size:0.76rem;color:var(--ink-soft);margin:16px 0 0;line-height:1.6;}

.lead-box{margin-top:26px;padding-top:24px;border-top:1px solid var(--line-dark);}
.lead-box h4{font-size:1rem;margin-bottom:6px;}
.lead-box p{font-size:0.85rem;color:var(--ink-soft);margin-bottom:14px;}
.lead-box input,.lead-box textarea{font-size:0.88rem;padding:10px 12px;}
.lead-box .iti input{font-size:0.88rem;padding:10px 12px;}
.lead-msg{margin-top:12px;font-size:0.84rem;padding:10px 12px;border-radius:2px;}
.lead-msg.ok{background:rgba(42,212,196,0.12);color:var(--accent-dim);border:1px solid rgba(42,212,196,0.35);}
.lead-msg.err{background:rgba(220,80,80,0.1);color:#9c3030;border:1px solid rgba(220,80,80,0.35);}

.full-form-note{margin:20px 0 0;font-size:0.82rem;color:var(--ink-soft);text-align:center;}
.full-form-note a{color:var(--accent-dim);font-weight:700;margin-left:4px;}
.full-form-note a:hover{text-decoration:underline;}

/* ---------- route map ---------- */
.route-map-title{font-size:1.15rem;margin-bottom:16px;}
.route-map-wrap{
  position:relative;width:100%;aspect-ratio:1000/546;border-radius:2px;overflow:hidden;
  background:
    radial-gradient(ellipse 700px 420px at 78% 15%, rgba(42,212,196,0.14), transparent 60%),
    radial-gradient(ellipse 560px 380px at 12% 92%, rgba(232,172,78,0.10), transparent 60%),
    linear-gradient(160deg,var(--navy-deep) 0%,var(--navy) 55%,var(--navy-mid) 100%);
  border:1px solid var(--line-dark);box-shadow:var(--shadow);
}
.route-map-bg{
  position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,0.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.05) 1px,transparent 1px);
  background-size:40px 40px;
  mask-image:radial-gradient(ellipse 85% 85% at 50% 45%, black 0%, transparent 85%);
}
.route-map-svg{position:absolute;inset:0;width:100%;height:100%;}
.route-map-labels{position:absolute;inset:0;pointer-events:none;}

.route-map-empty{
  position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;color:rgba(255,255,255,0.4);text-align:center;padding:0 30px;
}
.route-map-empty svg{width:38px;height:38px;}
.route-map-empty span{font-size:0.9rem;max-width:320px;}

.route-map-svg .rm-landmass path{
  fill:rgba(140,160,220,0.15);stroke:rgba(170,190,235,0.32);stroke-width:1;
  transition:fill .4s var(--ease);
}
.route-map-svg .rm-line{fill:none;stroke:var(--accent);stroke-width:2.2;stroke-dasharray:7 8;opacity:0.85;animation:rmDash 18s linear infinite;}
.route-map-svg .rm-node{fill:var(--accent);}
.route-map-svg .rm-node-outer{fill:none;stroke:var(--accent);stroke-width:1.4;opacity:0.55;animation:rmPulse 2.4s var(--ease) infinite;}
.route-map-svg .rm-node-outer.d2{animation-delay:.6s;}
.route-map-svg .rm-origin{fill:var(--gold);}
@keyframes rmDash{to{stroke-dashoffset:-300;}}
@keyframes rmPulse{0%{r:6;opacity:0.7;}80%{r:16;opacity:0;}100%{r:16;opacity:0;}}

.rm-label{
  position:absolute;transform:translate(-50%,-100%);margin-top:-14px;
  display:flex;align-items:center;gap:6px;white-space:nowrap;
  background:rgba(12,14,44,0.85);border:1px solid rgba(255,255,255,0.16);border-radius:2px;
  padding:5px 10px;font-family:'Manrope',sans-serif;font-weight:700;font-size:0.72rem;color:var(--pure-white);
  backdrop-filter:blur(4px);
}
.rm-label .dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.rm-label.rm-label-origin .dot{background:var(--gold);}
.rm-label.rm-label-dest .dot{background:var(--accent);}

.rm-mode-badge{
  position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;
  background:var(--navy-deep);border:1.5px solid var(--accent);display:flex;align-items:center;justify-content:center;
  color:var(--accent);box-shadow:0 6px 18px rgba(0,0,0,0.35);
}
.rm-mode-badge svg{width:14px;height:14px;}

.route-map-caption{margin:14px 0 0;font-size:0.78rem;color:var(--ink-soft);text-align:center;}

@media (max-width:575px){
  .rm-label{font-size:0.64rem;padding:4px 8px;}
  .rm-mode-badge{width:24px;height:24px;}
  .rm-mode-badge svg{width:11px;height:11px;}
}

@media (max-width:991px){
  .result-card{position:static;margin-top:36px;}
}

.result-body.reveal-in{animation:resultIn .5s var(--ease);}
@keyframes resultIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
