/* Growth Strategy · 07 field route — horizontal route line, week ruler, stops with photo + artefact tags */
.cgs-route{background:var(--paper);overflow:hidden}
.cgs-route__hint{display:none}
.cgs-rt{position:relative;padding-inline:max(var(--gutter),calc((100vw - var(--wrap)) / 2))}
.cgs-rt__track{position:relative;min-width:1080px;max-width:var(--wrap);margin-inline:auto}

.cgs-rt__ruler{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-bottom:1px solid var(--ink)}
.cgs-rt__wk{position:relative;padding:0 0 10px 10px;border-left:1px solid var(--line-3)}
.cgs-rt__wk b{font-family:var(--f);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.cgs-rt__wk:nth-child(odd){background-image:repeating-linear-gradient(90deg,transparent 0 calc(25% - 1px),var(--line) calc(25% - 1px) 25%);background-size:100% 6px;background-repeat:no-repeat;background-position:0 100%}

.cgs-rt__line{position:relative;height:40px}
.cgs-rt__line::before{content:"";position:absolute;left:0;right:0;top:19px;border-top:2px dashed var(--line-3)}
.cgs-rt__line i{position:absolute;left:0;right:0;top:19px;height:2px;background:var(--blue);transition:clip-path 1.6s var(--e-io)}
.cgs-route.cgs-js .cgs-rt__line i{clip-path:inset(0 100% 0 0)}
.cgs-route.cgs-js.is-in .cgs-rt__line i{clip-path:inset(0 0 0 0)}

.cgs-rt__stops{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) repeat(2,minmax(0,1fr)) repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;position:relative}
.cgs-rt__stop{grid-column:span 2;position:relative;min-width:0;padding:22px clamp(18px,2vw,32px) 0 0;transition:opacity .7s var(--e) calc(var(--i) * 380ms + 300ms),transform .7s var(--e) calc(var(--i) * 380ms + 300ms)}
.cgs-route.cgs-js .cgs-rt__stop{opacity:0;transform:translateY(14px)}
.cgs-route.cgs-js.is-in .cgs-rt__stop{opacity:1;transform:none}
.cgs-rt__pin{position:absolute;left:0;top:-29px;width:18px;height:18px;border-radius:50%;background:var(--paper);border:2px solid var(--ink);display:grid;place-items:center}
.cgs-rt__pin i{width:6px;height:6px;border-radius:50%;background:var(--blue)}
.cgs-rt__pin::after{content:"";position:absolute;left:8px;top:18px;width:1px;height:22px;background:var(--ink)}
.cgs-rt__at{display:flex;gap:12px;align-items:center;margin:0;font-family:var(--f);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-d);line-height:1.2}
.cgs-rt__at span+span{color:var(--muted)}
.cgs-rt__at span+span::before{content:"";display:inline-block;width:16px;height:1px;background:var(--line-3);vertical-align:middle;margin-right:12px}
.cgs-rt__h{margin:12px 0 18px;font-family:var(--f-h);font-weight:500;font-size:clamp(1.6rem,2.4vw,2.1rem);letter-spacing:-.028em;line-height:1.05;color:var(--ink)}
.cgs-rt__ph{aspect-ratio:3/2}
.cgs-rt__ph img{position:absolute;inset:0}
.cgs-rt__p{margin:18px 0 0;font-size:var(--t-body);line-height:1.65;color:var(--txt);max-width:40ch}
.cgs-rt__who{margin:18px 0 0;border-top:1px solid var(--line)}
.cgs-rt__who div{display:grid;grid-template-columns:62px minmax(0,1fr);gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.cgs-rt__who dt{font-family:var(--f);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-d);line-height:1.6}
.cgs-rt__who div+div dt{color:var(--ink)}
.cgs-rt__who dd{margin:0;font-size:var(--t-sm);line-height:1.55;color:var(--muted)}
.cgs-rt__k{margin:18px 0 8px;font-family:var(--f);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
.cgs-rt__tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.cgs-rt__tags li{padding:6px 9px;border:1px solid var(--line-3);border-radius:var(--r-xs);font-family:var(--f);font-size:10.5px;letter-spacing:.02em;color:var(--ink);background:var(--paper-2);line-height:1.3}
.cgs-rt__end{position:absolute;right:0;top:-40px;display:flex;align-items:center;gap:8px;transform:translateY(-100%)}
.cgs-rt__end{top:-58px;transform:none;padding:4px 8px;background:var(--paper)}
.cgs-rt__flag{width:10px;height:10px;background:var(--blue);clip-path:polygon(0 0,100% 30%,0 60%)}

@media (max-width:1140px){
  .cgs-route__hint{display:block}
  .cgs-rt__track{min-width:1020px}
}
@media (max-width:600px){
  .cgs-rt__track{min-width:900px}
  .cgs-rt__h{font-size:1.5rem}
}
@media (prefers-reduced-motion:reduce){
  .cgs-rt__stop{opacity:1;transform:none;transition:none}
  .cgs-rt__line i{clip-path:none;transition:none}
}
