.version-roadmap-page{--ink:#263238;--blue:#2f5d7c;--orange:#d7792b;--red:#b44a3c;--paper:#f5f7f8;--line:#b8c7d0;--green:#32815f;display:block;min-height:100vh;padding:20px 22px 28px;background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei","Noto Sans SC",sans-serif}.version-roadmap-page *{box-sizing:border-box}.version-roadmap-page button,.version-roadmap-page input,.version-roadmap-page select,.version-roadmap-page textarea{font:inherit}.version-roadmap-page button{cursor:pointer}.roadmap-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:15px}.roadmap-header h1{margin:0 0 6px;font-size:28px;color:#122e44}.roadmap-header p{margin:0;color:#71828c;font-size:14px}.roadmap-head-actions{display:flex;gap:9px}.roadmap-btn{min-height:38px;padding:0 14px;border:1px solid #aebec7;border-radius:4px;color:var(--blue);background:#fff;font-size:14px;font-weight:700}.roadmap-btn:hover{border-color:var(--orange);color:var(--orange)}.roadmap-btn.primary{border-color:var(--blue);color:#fff;background:var(--blue)}.roadmap-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:13px 15px;margin-bottom:12px;border:1px solid #ccd9df;background:#fff}.roadmap-toolbar label{display:flex;align-items:center;gap:7px;color:#425761;font-size: 14px;font-weight:700}.roadmap-toolbar select,.roadmap-toolbar input{height:36px;min-width:130px;padding:0 9px;border:1px solid #aebec7;border-radius:3px;color:var(--ink);background:#fff;font-size: 14px}.roadmap-toolbar .toolbar-search{margin-left:auto}.toolbar-search input{width:225px}.roadmap-workspace{display:grid;grid-template-columns:minmax(760px,1fr) 340px;gap:12px;align-items:start}.roadmap-main{min-width:0;border:1px solid #c4d1d8;background:#fff}.roadmap-ruler{display:grid;grid-template-columns:137px 1fr;min-height:66px;border-bottom:1px solid var(--line);background:#eef3f6}.ruler-label{display:flex;align-items:center;padding-left:22px;border-right:1px solid var(--line);color:#536976;font-size:14px;font-weight:700;line-height:1.35}.ruler-ticks{position:relative;margin:0 20px;border-bottom:2px solid #8fa2ad}.ruler-ticks:before{content:"";position:absolute;left:0;right:0;bottom:-2px;height:10px;background:repeating-linear-gradient(90deg,transparent 0 9px,#9caeb7 9px 10px)}.ruler-ticks .tick{position:absolute;bottom:3px;color:#536976;font-size: 14px;text-align:center;transform:translateX(-50%)}.ruler-ticks .tick b{display:block;margin-bottom:8px;font-size: 14px;color:#263238}.roadmap-rows{padding:0 16px}.version-row{display:grid;grid-template-columns:137px minmax(0,1fr);min-height:208px;border-bottom:1px solid #d6e0e5}.version-row.selected{background:#fbfdfe}.version-meta{position:relative;padding:22px 14px 15px 11px;border-right:1px solid #d6e0e5}.version-meta:before{content:"";position:absolute;left:0;top:35px;bottom:28px;width:3px;background:#b7c8d1}.version-row.selected .version-meta:before{background:var(--blue)}.version-meta>b{display:block;color:#176ca3;font-size:19px}.version-code{display:inline-block;margin:5px 0 8px;padding:2px 6px;border:1px solid #8bb6d1;color:var(--blue);background:#f0f8fc;font-size: 14px}.version-state{display:block;width:max-content;padding:3px 7px;border-radius:3px;font-size: 14px;font-style:normal;font-weight:700}.state-开发中,.state-联调中{color:#bd6a20;background:#fff3e4}.state-验证中{color:#2f739d;background:#edf6fb}.state-规划中{color:#6b7c84;background:#edf1f3}.state-待发布{color:#b44a3c;background:#fff0ed}.state-已发布{color:var(--green);background:#eaf7ef}.version-meta small{display:block;margin-top:12px;color:#70818b;font-size: 14px;line-height:1.6}.roadmap-link{margin-top:10px;padding:0;border:0;color:#2f7ba7;background:transparent;font-size: 14px;font-weight:700}.version-lane{position:relative;padding:25px 8px 10px;overflow:hidden}.lane-label{position:absolute;left:-75px;top:35px;width:64px;text-align:right;color:#4d6470;font-size: 14px;font-weight:700}.sample-label{top:98px}.node-label{top:159px}.lane-box{position:absolute;min-height:45px;padding:7px 12px;border:1px solid #a7c7d8;background:#edf7fc;line-height:1.4}.lane-box b{display:block;font-size: 14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lane-box small{display:block;color:#6c808b;font-size: 14px;white-space:nowrap}.lane-box em{position:absolute;right:-91px;top:8px;padding:5px 9px;border:1px solid #e7ad72;color:var(--orange);background:#fff8ee;font-size: 14px;font-style:normal}.sample-box{top:87px;border-color:#b7d2c5;background:#f0f8f2}.scope-box{top:20px}.node-line{position:absolute;left:0;right:0;top:164px;height:2px;background:#2f7db1}.node-line:after{content:"";position:absolute;right:0;top:-5px;border:6px solid transparent;border-left-color:#2f7db1}.node-dot{position:absolute;top:-8px;width:18px;height:18px;padding:0;border:2px solid var(--blue);border-radius:50%;color:#fff;background:#fff;transform:translateX(-50%)}.node-dot span{display:grid;place-items:center;width:14px;height:14px;margin:-1px;color:#fff;border-radius:50%;background:var(--blue);font-size: 14px}.node-dot small{position:absolute;top:23px;left:50%;width:83px;color:#556b76;font-size: 14px;line-height:1.45;text-align:center;transform:translateX(-50%)}.node-dot.node-进行中{border-color:var(--orange)}.node-dot.node-进行中 span{background:var(--orange)}.node-dot.node-待开始 span{background:#fff;color:#536976}.node-dot.node-已完成{border-color:var(--green)}.node-dot.node-已完成 span{background:var(--green)}.empty-roadmap,.empty-detail{display:grid;place-items:center;min-height:170px;color:#7c8e97;font-size: 14px}.branch-panel{display:grid;grid-template-columns:155px 1fr;min-height:180px;border-top:1px solid var(--line);background:#f8fafb}.branch-legend{display:grid;align-content:center;gap:12px;padding:16px 15px;border-right:1px solid var(--line);color:#50646e;font-size: 14px}.branch-legend b{font-size: 14px}.branch-legend span{display:flex;align-items:center;gap:7px}.legend-line{width:22px;height:2px;background:var(--blue)}.branch-line{border-top:2px dashed var(--orange);background:transparent}.legend-dot{width:10px;height:10px;border:2px solid var(--blue);border-radius:50%}.merge-dot{background:#fff}.release-dot{border-color:var(--orange);background:#fff}.branch-canvas{position:relative;overflow:hidden}.branch-main-line{position:absolute;left:35px;right:22px;top:91px;height:3px;background:var(--blue)}.branch-main-line:after{content:"";position:absolute;right:-1px;top:-5px;border:6px solid transparent;border-left-color:var(--blue)}.branch-box{position:absolute;min-width:140px;padding:8px 10px;border:1px solid #8eb8d4;background:#eef8fd;font-size: 14px;line-height:1.45}.branch-box b,.branch-box strong,.branch-box small{display:block}.branch-box strong{font-size: 14px}.branch-box small{color:#71848d}.baseline-box{left:24px;top:50px}.branch-exp{left:235px;top:9px;border-color:#e3aa70;background:#fff6eb}.branch-edge{left:235px;top:112px}.branch-exp:after,.branch-edge:after{content:"";position:absolute;right:-65px;top:50%;width:64px;border-top:2px dashed var(--orange)}.branch-edge:after{border-color:#8eb8d4}.release-box{left:61%;top:49px}.release-two{left:83%;top:49px}.branch-marker{position:absolute;left:194px;top:82px;z-index:2;width:19px;height:19px;padding:0;border:2px solid var(--blue);border-radius:50%;color:var(--blue);background:#fff;line-height:13px}.roadmap-detail{position:relative;min-height:720px;border:1px solid #c4d1d8;background:#fff}.detail-title{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 18px 14px;border-bottom:1px solid #d8e1e5}.detail-title h2{margin:7px 0 5px;font-size:18px;line-height:1.35}.detail-title p{margin:0;color:#6f818b;font-size: 14px;line-height:1.5}.detail-tabs{display:flex;border-bottom:1px solid #d8e1e5}.detail-tabs button{flex:1;height:42px;padding:0;border:0;border-bottom:2px solid transparent;color:#71828b;background:#fff;font-size: 14px;font-weight:700}.detail-tabs button.active{border-bottom-color:var(--blue);color:var(--blue)}.detail-content{padding:16px 18px}.detail-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:17px}.detail-summary div{padding:10px 7px;text-align:center;background:#f4f7f8}.detail-summary span{display:block;color:#71818b;font-size: 14px}.detail-summary b{display:block;margin-top:5px;font-size:22px}.detail-summary b.orange{color:var(--orange)}.detail-content h3{display:flex;align-items:center;justify-content:space-between;margin:13px 0 10px;font-size:14px}.small-primary{padding:5px 8px;border:1px solid #e1a261;border-radius:3px;color:#fff;background:var(--orange);font-size: 14px;font-weight:700}.change-list{display:grid;gap:9px;max-height:335px;overflow:auto}.change-item{padding:9px 10px;border:1px solid #dce5e8;background:#fff;text-align:left;color:var(--ink)}.change-item:hover{border-color:#7eabc3}.change-item div{display:flex;justify-content:space-between}.change-item b{color:#39789b;font-size: 14px}.change-item i{padding:2px 5px;border-radius:3px;font-size: 14px;font-style:normal}.risk-高{color:#fff;background:var(--red)}.risk-中{color:#b66921;background:#fff2df}.risk-低{color:var(--green);background:#e7f5ed}.change-item strong{display:block;margin:7px 0 4px;font-size: 14px}.change-item small{color:#7b8c94;font-size: 14px}.detail-actions{display:flex;gap:7px;padding:0 18px 18px}.detail-actions .roadmap-btn{flex:1;padding:0 7px;font-size: 14px}.progress-card{padding:14px;background:#f1f7fa}.progress-card>div:first-child{display:flex;justify-content:space-between;font-size: 14px}.progress-card b{color:var(--blue);font-size:22px}.progress-track{height:8px;margin:10px 0;background:#d6e1e6}.progress-track i{display:block;height:100%;background:var(--blue)}.progress-card p{margin:0;color:#71828b;font-size: 14px}.risk-detail-list{display:grid;gap:8px}.risk-detail-list>div{display:flex;gap:8px;padding:8px;background:#fff6ef}.risk-detail-list i{width:18px;height:18px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--red);font-style:normal;font-size: 14px}.risk-detail-list b{display:block;font-size: 14px}.risk-detail-list small{display:block;margin-top:4px;color:#7d8e96;font-size: 14px}.owner-card{display:flex;align-items:center;gap:9px;padding:12px;background:#f2f7f9}.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--blue);font-weight:700}.owner-card div:nth-child(2){flex:1}.owner-card b,.owner-card small{display:block}.owner-card b{font-size: 14px}.owner-card small{margin-top:4px;color:#71828c;font-size: 14px}.team-copy{padding:12px;border:1px solid #dce5e8;color:#586e79;font-size: 14px;line-height:1.7}.version-info{display:grid;grid-template-columns:70px 1fr;gap:10px;margin-top:15px;font-size: 14px}.version-info dt{color:#778993}.version-info dd{margin:0;font-weight:700}.roadmap-footer{display:flex;justify-content:space-between;padding:10px 3px;color:#71828b;font-size: 14px}.roadmap-modal-layer{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:rgba(35,49,57,.42)}.roadmap-modal{width:min(640px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;border:1px solid var(--line);background:#fff;box-shadow:0 18px 54px rgba(25,43,52,.28)}.roadmap-modal header,.roadmap-modal footer{display:flex;align-items:center;justify-content:space-between;padding:17px 22px;border-bottom:1px solid #d8e1e5}.roadmap-modal header h2{margin:0;font-size:19px}.roadmap-modal header button{width:30px;height:30px;border:0;background:#edf2f4;color:#536976;font-size:21px}.roadmap-modal-body{padding:22px}.roadmap-modal footer{justify-content:flex-end;gap:9px;border-bottom:0}.roadmap-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.roadmap-form label{display:grid;gap:6px;color:#4f6570;font-size: 14px;font-weight:700}.roadmap-form label.full{grid-column:1/-1}.roadmap-form input,.roadmap-form select,.roadmap-form textarea{width:100%;min-height:39px;padding:7px 9px;border:1px solid #c0cfd6;border-radius:3px;color:var(--ink);background:#fff;font-size: 14px}.roadmap-form input:disabled{background:#f1f4f5}.roadmap-form textarea{min-height:80px;resize:vertical}.form-error{grid-column:1/-1;min-height:18px;margin:0;color:var(--red);font-size: 14px;font-weight:700}.modal-detail-copy{color:#4e6570;font-size: 14px;line-height:1.8}.modal-detail{display:grid;grid-template-columns:86px 1fr;gap:0;margin:0}.modal-detail dt,.modal-detail dd{padding:9px 0;border-bottom:1px solid #e2eaed}.modal-detail dt{color:#788b94}.modal-detail dd{margin:0;font-weight:700}.version-roadmap-page.is-expanded{position:fixed;inset:0;z-index:40;overflow:auto;padding:22px;background:var(--paper)}@media(max-width:1450px){.version-roadmap-page{padding:17px}.roadmap-workspace{grid-template-columns:minmax(670px,1fr) 300px}.roadmap-detail{min-height:690px}.version-row{grid-template-columns:120px minmax(0,1fr)}.roadmap-ruler{grid-template-columns:120px 1fr}.lane-label{left:-67px}.branch-panel{grid-template-columns:135px 1fr}.branch-exp{left:190px}.branch-edge{left:190px}}@media(max-width:1180px){.roadmap-toolbar .toolbar-search{margin-left:0}.roadmap-workspace{display:block}.roadmap-detail{margin-top:12px}.roadmap-detail .detail-actions{padding-bottom:15px}.roadmap-main{overflow:auto;min-width:840px}.roadmap-header{display:block}.roadmap-head-actions{margin-top:12px}}

/* Page-only shape and node-label refinements. */
.version-roadmap-page{border-radius:12px}
.version-roadmap-page .roadmap-toolbar,
.version-roadmap-page .roadmap-main,
.version-roadmap-page .roadmap-detail,
.version-roadmap-page .roadmap-modal,
.version-roadmap-page .version-row{border-radius:10px}
.version-roadmap-page .roadmap-main,
.version-roadmap-page .roadmap-detail{overflow:hidden}
.version-roadmap-page .roadmap-btn,
.version-roadmap-page .small-primary{border-radius:8px}
.version-roadmap-page .roadmap-toolbar select,
.version-roadmap-page .roadmap-toolbar input,
.version-roadmap-page .roadmap-form input,
.version-roadmap-page .roadmap-form select,
.version-roadmap-page .roadmap-form textarea{border-radius:7px}
.version-roadmap-page .version-code,
.version-roadmap-page .lane-box,
.version-roadmap-page .lane-box em,
.version-roadmap-page .branch-box,
.version-roadmap-page .detail-summary div,
.version-roadmap-page .change-item,
.version-roadmap-page .progress-card,
.version-roadmap-page .risk-detail-list>div,
.version-roadmap-page .owner-card,
.version-roadmap-page .team-copy{border-radius:8px}
.version-roadmap-page .version-state{border-radius:999px}
.version-roadmap-page .progress-track{border-radius:999px;overflow:hidden}
.version-roadmap-page .roadmap-modal{overflow:hidden}
.version-roadmap-page .roadmap-modal header button{border-radius:8px}
.version-roadmap-page .version-row{min-height:238px;overflow:hidden;border:1px solid #d6e0e5}
.version-roadmap-page .roadmap-rows{padding-bottom:8px}
.version-roadmap-page .node-dot small{z-index:3;width:96px;padding:2px 4px;border:1px solid #dce5e8;border-radius:5px;background:rgba(255,255,255,.97);line-height:1.35}
.version-roadmap-page .node-dot:nth-child(odd) small{top:23px}
.version-roadmap-page .node-dot:nth-child(even) small{top:48px}
.version-roadmap-page .version-lane{overflow:visible}
.version-roadmap-page.is-expanded{border-radius:0}
@media(max-width:1180px){.version-roadmap-page .roadmap-main{overflow:auto}}
