.roadmap{--col-w: 250px;--series-gap: 34px;margin-top:40px}.series-track{list-style:none;margin:0;padding:6px 2px 20px;display:flex;align-items:flex-start;gap:var(--series-gap);overflow-x:auto;scroll-snap-type:x proximity}.series{list-style:none;flex:0 0 var(--col-w);width:var(--col-w);display:flex;flex-direction:column;scroll-snap-align:start}.milestone{position:relative;height:30px;display:flex;align-items:center;margin-bottom:14px}.dot{position:relative;z-index:2;width:15px;height:15px;flex:none;border-radius:50%;background:var(--color-surface-2);border:2px solid var(--color-line)}.series:not(:first-child) .milestone:before{content:"";position:absolute;z-index:1;top:50%;right:calc(100% - 7.5px);width:calc(var(--col-w) + var(--series-gap));height:2px;transform:translateY(-50%);background:var(--color-line)}.series.reached .milestone:before{background:var(--color-brand)}.milestone[data-status=complete] .dot{background:#83d494;border-color:#83d494}.milestone[data-status=development] .dot{background:var(--color-brand);border-color:var(--color-brand)}.milestone[data-status=open_beta] .dot{background:#eeba70;border-color:#eeba70}.milestone[data-status=stable] .dot{background:#64d1d7;border-color:#64d1d7}.milestone[data-status=development] .dot,.milestone[data-status=open_beta] .dot,.milestone[data-status=stable] .dot{animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{box-shadow:0 0 #96a7e780}55%{box-shadow:0 0 0 7px #96a7e700}}.versions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.node{list-style:none}.series-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:10px;row-gap:6px;border:1px solid var(--color-line);border-radius:14px;background:var(--color-surface-2);padding:13px 16px}.series-head .ver{font-family:var(--font-mono);font-size:18px;font-weight:500;color:var(--color-brand);letter-spacing:-.01em}.head-left{display:flex;flex-direction:column;gap:2px;min-width:0}.series-title{font-size:13px;font-weight:400;color:var(--color-fg);line-height:1.2}.badge{display:inline-flex;align-items:center;min-width:0;max-width:100%;text-align:center;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;border-radius:6px;padding:4px 8px;white-space:nowrap;border:1px solid transparent}.badge[data-status=complete]{color:#93e4a4;background:#193b2259}.badge[data-status=development]{color:var(--color-brand);background:var(--color-accent-soft)}.badge[data-status=open_beta]{color:#f8c379;background:#4a330f59}.badge[data-status=stable]{color:#72dee4;background:#083a3d59}.badge[data-status=planned]{color:var(--color-faint);background:transparent;border-color:var(--color-line)}.children-wrap{margin-top:16px}.children{list-style:none;margin:0 0 0 11px;padding:4px 0 0 26px;position:relative;border-left:2px solid var(--color-line);display:flex;flex-direction:column;gap:16px}.children:before{content:"";position:absolute;left:-2px;top:-16px;height:20px;border-left:2px solid var(--color-line)}.children .node{position:relative}.children .node:before{content:"";position:absolute;left:-26px;top:26px;width:26px;height:2px;background:var(--color-line)}@media(max-width:767px){.series-track{flex-direction:column;gap:30px;overflow-x:visible}.series{width:100%;flex:none}.series:not(:first-child) .milestone:before{display:none}}@media(prefers-reduced-motion:reduce){.dot{animation:none!important}}.box{position:relative;width:100%;border:1px solid var(--color-line);border-radius:14px;background:var(--color-surface);padding:15px 16px 17px;display:flex;flex-direction:column;gap:10px;transition:transform .14s ease,border-color .14s ease}.box:hover{transform:translateY(-2px);border-color:var(--color-faint)}.box:before{content:"";position:absolute;inset:12px auto 12px 0;width:3px;border-radius:3px;background:var(--color-line)}.box.status-complete:before{background:#83d494}.box.status-development:before{background:var(--color-brand)}.box.status-open_beta:before{background:#eeba70}.box.status-stable:before{background:#64d1d7}.box.status-planned{background:transparent;border-style:dashed;border-color:var(--color-line-soft)}.box.status-planned .box-title,.box.status-planned .targets{color:var(--color-faint)}.box-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;column-gap:10px;row-gap:6px;padding-left:8px}.box-head .ver{font-family:var(--font-mono);font-size:14px;font-weight:500;color:var(--color-fg);letter-spacing:-.01em}.targets{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:5px;font-size:12.5px;line-height:1.45;color:var(--color-muted)}.admin-controls{margin-top:2px;padding-top:12px;margin-left:8px;border-top:1px solid var(--color-line-soft);display:flex;flex-direction:column;gap:9px}.ctl{display:flex;flex-direction:column;gap:5px}.ctl-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--color-faint)}.admin-controls select,.admin-controls textarea{font-family:var(--font-sans);font-size:13px;color:var(--color-fg);background:var(--color-base);border:1px solid var(--color-line);border-radius:8px;padding:8px 10px;width:100%}.admin-controls textarea{resize:vertical;min-height:56px}.admin-controls select:focus,.admin-controls textarea:focus{outline:none;border-color:var(--color-brand)}
