
/* ================= V17 NEW STYLES ================= */
:root{
  --v17-primary:#4F6BED; --v17-primary2:#7E90F5; --v17-bg:#FAFAFB;
  --v17-card:#FFFFFF; --v17-line:#E8E8ED; --v17-text:#1A1A2E;
  --v17-text2:#4A4A5C; --v17-text3:#8E8E93; --v17-green:#1E7B37; --v17-yellow:#D9A94E;
  --v17-blue:#4F6BED; --v17-gray:#C3C8DA; --v17-red:#FF3B30;
}
/* online status dot on avatar */
.v17-avatar{position:relative;display:inline-flex;flex-shrink:0;border-radius: 50%;background:#4F6BED;color:#fff;align-items:center;justify-content:center;font-weight: 600;overflow:hidden}
.v17-avatar img{width:100%;height:100%;object-fit:cover;border-radius: 50%}
.v17-avatar .v17-dot{position:absolute;bottom:0;right:0;width:11px;height:11px;border-radius: 50%;border:2px solid #fff;}
.v17-dot.online{background:var(--v17-green)} .v17-dot.away{background:var(--v17-yellow)}
.v17-dot.learning{background:var(--v17-blue)} .v17-dot.offline{background:var(--v17-gray)}
/* generic v17 modal overlay */
.v17-overlay{position:fixed;inset:0;background:rgba(26,26,46,.5);z-index:9998;display:none;align-items:center;justify-content:center;padding: 20px}
.v17-overlay.show{display:flex}
.v17-modal{background:#fff;border-radius: 14px;width:100%;max-width:440px;max-height:86vh;overflow:auto;animation: v17pop 0.16s ease}
@keyframes v17pop{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.v17-modal-hd{display:flex;align-items:center;justify-content:space-between;padding: 16px 20px;border-bottom:1px solid var(--v17-line);position:sticky;top:0;background:#fff;z-index:2;border-radius: 14px 14px 0 0}
.v17-modal-hd h3{margin: 0;font-size: 17px;font-weight: 600;color:var(--v17-text)}
.v17-modal-x{border:none;background:var(--v17-bg);width:28px;height:28px;border-radius: 14px;cursor:pointer;color:var(--v17-text3);font-size: 13px}
.v17-modal-bd{padding: 16px 20px}
.v17-btn{display:inline-flex;align-items:center;justify-content:center;gap: 8px;padding: 8px 16px;border-radius: 14px;border:none;font-size: 13px;font-weight: 600;cursor:pointer;transition: .15s}
.v17-btn-pri{background:#4F6BED;color:#fff}
.v17-btn-pri:hover{background:#3D55D4}
.v17-btn-ghost{background:var(--v17-bg);color:var(--v17-text2);border:1px solid var(--v17-line)}
.v17-btn-sm{padding: 8px 12px;font-size: 12px;border-radius: 14px}
.v17-field{width:100%;box-sizing:border-box;padding: 8px 12px;border:1px solid var(--v17-line);border-radius: 14px;font-size: 13px;color:var(--v17-text);outline:none}
.v17-field:focus{border-color:var(--v17-primary)}
.v17-label{display:block;font-size: 12px;color:var(--v17-text2);margin: 12px 0 8px;font-weight: 600}
/* toast */
.v17-toast{position:fixed;bottom:36px;left:50%;transform:translateX(-50%);background:#1A1A2E;color:#fff;padding: 8px 16px;border-radius: 14px;font-size: 13px;z-index:10000;opacity:0;pointer-events:none;transition: 0.22s;max-width:80vw}
.v17-toast.show{opacity:.95;bottom:46px}
.v17-toast.err{background:#B3261E} .v17-toast.ok{background:#1E7B37}
/* bell dropdown */
.v17-bdrop{position:fixed;top:60px;right:18px;width:340px;max-height:70vh;background:#fff;border-radius: 14px;z-index:9990;display:none;flex-direction:column;overflow:hidden}
.v17-bdrop.show{display:flex}
.v17-bdrop-hd{padding: 12px 16px;border-bottom:1px solid var(--v17-line);display:flex;align-items:center;justify-content:space-between}
.v17-bdrop-hd h4{margin: 0;font-size: 13px}
.v17-bdrop-list{overflow:auto;max-height:50vh}
.v17-bconv{display:flex;align-items:center;gap: 8px;padding: 8px 16px;cursor:pointer;transition: .12s}
.v17-bconv:hover{background:var(--v17-bg)}
.v17-bconv .v17-bc-body{flex:1;min-width:0}
.v17-bconv .v17-bc-name{font-size: 13px;font-weight: 600;color:var(--v17-text);display:flex;align-items:center;justify-content:space-between}
.v17-bconv .v17-bc-sum{font-size: 12px;color:var(--v17-text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top: 4px}
.v17-bbadge{background:var(--v17-red);color:#fff;font-size: 12px;min-width:18px;height:18px;border-radius: 14px;display:inline-flex;align-items:center;justify-content:center;padding: 0 4px}
/* ============ MESSAGE PAGE (Feishu layout) ============ */
#page-message{position:fixed;inset:0;z-index:1200;background:#fff;display:none;flex-direction:column}
#page-message.active{display:flex}
.v17-msg-wrap{flex:1;display:flex;overflow:hidden;max-width:1200px;width:100%;margin: 0 auto}
.v17-msg-side{width:290px;border-right:1px solid var(--v17-line);display:flex;flex-direction:column;background:#FFFFFF}
.v17-msg-side-hd{padding: 16px 16px;border-bottom:1px solid var(--v17-line);display:flex;align-items:center;justify-content:space-between}
.v17-msg-side-hd h3{margin: 0;font-size: 17px}
.v17-msg-search{padding: 8px 12px}
.v17-msg-search input{width:100%;box-sizing:border-box;padding: 8px 12px;border-radius: 14px;border:1px solid var(--v17-line);background:#fff;font-size: 13px;outline:none}
.v17-msg-clist{flex:1;overflow:auto}
.v17-mconv{display:flex;align-items:center;gap: 8px;padding: 12px 16px;cursor:pointer;border-radius: 14px;margin: 4px 8px;transition: .12s}
.v17-mconv:hover{background:var(--v17-bg)}
.v17-mconv.sel{background:#EBEFFF}
.v17-mconv .v17-mc-body{flex:1;min-width:0}
.v17-mconv .v17-mc-name{font-size: 13px;font-weight: 600;color:var(--v17-text);display:flex;justify-content:space-between;align-items:center}
.v17-mconv .v17-mc-sum{font-size: 12px;color:var(--v17-text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top: 4px}
.v17-msg-main{flex:1;display:flex;flex-direction:column;min-width:0}
.v17-msg-main-hd{padding: 12px 20px;border-bottom:1px solid var(--v17-line);display:flex;align-items:center;gap: 8px}
.v17-msg-main-hd .v17-mh-name{font-size: 17px;font-weight: 600}
.v17-msg-main-hd .v17-mh-status{font-size: 12px;color:var(--v17-text3)}
.v17-msg-scroll{flex:1;overflow:auto;padding: 16px 24px;display:flex;flex-direction:column;gap: 12px;background:#FFFFFF}
.v17-msg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--v17-text3);gap: 8px}
.v17-bubble{max-width:66%;padding: 8px 12px;border-radius: 14px;font-size: 13px;line-height:1.5;word-break:break-word;position:relative}
.v17-bubble.me{align-self:flex-end;background:#4F6BED;color:#fff;border-bottom-right-radius:4px}
.v17-bubble.other{align-self:flex-start;background:#fff;border:1px solid var(--v17-line);border-bottom-left-radius:4px}
.v17-bubble-time{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
.v17-bubble.me .v17-bubble-time{color:rgba(255,255,255,.75)}
.v17-msg-input{padding: 12px 20px;border-top:1px solid var(--v17-line);display:flex;gap: 8px;align-items:flex-end;background:#fff}
.v17-msg-input textarea{flex:1;resize:none;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 16px;font-size: 13px;outline:none;max-height:120px;font-family:inherit}
.v17-msg-input textarea:focus{border-color:var(--v17-primary)}
.v17-back-btn{display:none}
/* ============ TEAMMATE cards ============ */
.v17-sec{background:#fff;border-radius: 14px;padding: 16px;margin-bottom: 16px;border:1px solid var(--v17-line);}
.v17-sec-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom: 12px;flex-wrap:wrap;gap: 8px}
.v17-sec-hd h3{margin: 0;font-size: 17px;display:flex;align-items:center;gap: 8px}
.v17-sec-hd .v17-sub{font-size: 12px;color:var(--v17-text3)}
.v17-qtabs{display:flex;gap: 8px;overflow-x:auto;padding-bottom: 8px;-webkit-overflow-scrolling:touch}
.v17-qtab{flex-shrink:0;padding: 8px 16px;border-radius: 999px;background:var(--v17-bg);border:1px solid var(--v17-line);font-size: 13px;color:var(--v17-text2);cursor:pointer;white-space:nowrap;transition: .12s}
.v17-qtab.on{background:#4F6BED;color:#fff;border-color:transparent}
.v17-tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap: 12px}
.v17-tcard{border:1px solid var(--v17-line);border-radius: 14px;padding: 16px;transition: .15s;background:#fff;position:relative}
.v17-tcard:hover{border-color:#C9D4FF}
.v17-tcard-hd{display:flex;align-items:center;gap: 8px;margin-bottom: 8px}
.v17-tcard-name{font-size: 13px;font-weight: 600}
.v17-tcard-meta{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
.v17-match{margin: 8px 0}
.v17-match-bar{height:6px;border-radius: 14px;background:var(--v17-bg);overflow:hidden}
.v17-match-bar i{display:block;height:100%;background:#4F6BED;border-radius: 14px}
.v17-match-row{display:flex;justify-content:space-between;font-size: 12px;color:var(--v17-text3);margin-bottom: 4px}
.v17-reason{font-size: 12px;color:var(--v17-text2);background:#F4F6FF;border-radius: 14px;padding: 8px 8px;line-height:1.5;margin: 8px 0}
.v17-ability-tags{display:flex;flex-wrap:wrap;gap: 4px;margin: 8px 0}
.v17-atag{font-size: 12px;padding: 4px 8px;border-radius: 999px;background:var(--v17-bg);color:var(--v17-text2)}
.v17-tcard-ft{display:flex;gap: 8px;margin-top: 8px}
/* hover card */
.v17-hovercard{position:fixed;z-index:9995;width:300px;background:#fff;border-radius: 14px;padding: 16px;display:none}
.v17-hovercard.show{display:block}
.v17-hc-bio{font-size: 13px;color:var(--v17-text2);line-height:1.6;margin: 8px 0}
/* activity feed */
.v17-feed{position:relative;padding-left: 8px}
.v17-feed-item{display:flex;gap: 12px;padding: 8px 0;border-bottom:1px dashed var(--v17-line)}
.v17-feed-item:last-child{border-bottom:none}
.v17-feed-ic{width:30px;height:30px;border-radius: 50%;background:var(--v17-bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size: 13px}
.v17-feed-txt{flex:1;font-size: 13px;color:var(--v17-text2);line-height:1.5}
.v17-feed-txt b{color:var(--v17-text)}
.v17-feed-time{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
/* notification panel */
.v17-ntab{display:flex;gap: 4px;border-bottom:1px solid var(--v17-line);padding: 0 12px;overflow-x:auto}
.v17-ntab button{flex-shrink:0;border:none;background:none;padding: 8px 8px;font-size: 13px;color:var(--v17-text3);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}
.v17-ntab button.on{color:var(--v17-primary);border-bottom-color:var(--v17-primary);font-weight: 600}
.v17-nitem{display:flex;gap: 8px;padding: 12px 16px;cursor:pointer;border-bottom:1px solid #F4F5F9}
.v17-nitem:hover{background:var(--v17-bg)}
.v17-nitem.unread{background:#F7F9FF}
.v17-nitem.unread .v17-ni-title{font-weight: 600}
.v17-ni-dot{width:8px;height:8px;border-radius: 50%;background:var(--v17-primary);flex-shrink:0;margin-top: 8px}
.v17-nitem.read .v17-ni-dot{background:transparent}
.v17-ni-body{flex:1;min-width:0}
.v17-ni-title{font-size: 13px;color:var(--v17-text)}
.v17-ni-content{font-size: 12px;color:var(--v17-text3);margin-top: 4px;line-height:1.5}
.v17-ni-time{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
/* toggle switch */
.v17-switch{position:relative;width:38px;height:22px;flex-shrink:0}
.v17-switch input{opacity:0;width:0;height:0}
.v17-switch .v17-slider{position:absolute;inset:0;background:#CBD5E1;border-radius: 999px;cursor:pointer;transition: .2s}
.v17-switch .v17-slider:before{content:"";position:absolute;width:18px;height:18px;left:2px;top:2px;background:#fff;border-radius: 50%;transition: .2s}
.v17-switch input:checked+.v17-slider{background:var(--v17-primary)}
.v17-switch input:checked+.v17-slider:before{transform:translateX(16px)}
.v17-setting-row{display:flex;align-items:center;justify-content:space-between;padding: 12px 0;border-bottom:1px solid #F4F5F9;font-size: 13px}
/* report / credit */
.v17-credit{display:inline-flex;align-items:center;gap: 8px;padding: 4px 8px;border-radius: 999px;font-size: 12px;font-weight: 600}
.v17-credit.hi{background:var(--indigo-50);color:var(--indigo-600)}
.v17-credit.lo{background:#FDECEA;color:#FF3B30}
.v17-reason-chip{padding: 8px 12px;border:1px solid var(--v17-line);border-radius: 14px;font-size: 13px;cursor:pointer;margin: 4px 4px 0 0;display:inline-block}
.v17-reason-chip.on{border-color:var(--v17-primary);background:#F4F6FF;color:var(--v17-primary);font-weight: 600}
/* VIP paywall */
.v17-vip-hero{text-align:center;padding: 8px 0 4px}
.v17-vip-hero .v17-vip-badge{display:inline-block;padding: 4px 16px;border-radius: 999px;background:#B8862F;color:#fff;font-size: 12px;font-weight: 600;letter-spacing:1px}
.v17-vip-list{margin: 16px 0;padding: 0;list-style:none}
.v17-vip-list li{padding: 8px 0;font-size: 13px;color:var(--v17-text2);display:flex;gap: 8px;align-items:flex-start}
.v17-vip-list li:before{content:"✓";color:#1E7B37;font-weight: 600}
/* scrollbar */
.v17-msg-clist::-webkit-scrollbar,.v17-msg-scroll::-webkit-scrollbar,.v17-bdrop-list::-webkit-scrollbar{width:6px}
.v17-msg-clist::-webkit-scrollbar-thumb,.v17-msg-scroll::-webkit-scrollbar-thumb,.v17-bdrop-list::-webkit-scrollbar-thumb{background:#D8DEE8;border-radius: 14px}
/* responsive */
@media (max-width:768px){
  .v17-msg-side{position:fixed;left:0;top:0;bottom:0;width:84%;z-index:10;background:#FFFFFF;transform:translateX(-100%);transition: .2s;box-shadow:4px 0 24px rgba(0,0,0,.1)}
  .v17-msg-wrap.list-open .v17-msg-side{transform:none}
  .v17-msg-main-hd .v17-back-btn{display:inline-flex}
  .v17-bdrop{right:8px;left:8px;width:auto}
  .v17-tgrid{grid-template-columns:1fr}
  .v17-bubble{max-width:82%}
}

/* ================= V17 WAVE2: 任务/会议/文档 ================= */
/* --- 小组详情 tab 注入（在 pjModalBox 内） --- */
.v17-gtab{font-family:inherit;font-size: var(--fs-2,13px);font-weight: 600;color:var(--v17-text2);background:none;border:none;padding: 8px 16px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom: -1px;white-space:nowrap}
.v17-gtab.on{color:var(--v17-primary);border-bottom-color:var(--v17-primary)}
.v17-gtab .v17-gtab-badge{display:inline-block;min-width:16px;padding: 0 4px;margin-left: 4px;border-radius: 14px;background:#E6E9F5;color:var(--v17-primary);font-size: 12px;line-height:16px;text-align:center;font-weight: 600}
.v17-gpane{padding: 16px 24px 24px}
.v17-gpane[hidden]{display:none!important}
.v17-pane-head{display:flex;align-items:center;justify-content:space-between;gap: 8px;margin-bottom: 16px;flex-wrap:wrap}
.v17-pane-head h3{font-size: 17px;margin: 0}
.v17-pane-head .v17-sub{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
.v17-actions{display:flex;gap: 8px;flex-wrap:wrap}

/* --- 状态/优先级 标签 --- */
.v17-st{display:inline-flex;align-items:center;gap: 4px;padding: 4px 8px;border-radius: 14px;font-size: 12px;font-weight: 600;line-height:18px}
.v17-st.todo{background:var(--v17-bg);color:var(--v17-text3)}
.v17-st.in_progress{background:#E3ECFF;color:#4F6BED}
.v17-st.review{background:#F2F4FF;color:#4F6BED}
.v17-st.done{background:#DDF5E5;color:#1E7B37}
.v17-st.blocked{background:#FDE2E1;color:#FF3B30}
.v17-pr{display:inline-block;width:4px;height:14px;border-radius: 14px;margin-right: 8px;vertical-align:-2px}
.v17-pr.urgent{background:var(--v17-red)}.v17-pr.high{background:var(--v17-yellow)}
.v17-pr.medium{background:#FBBF24}.v17-pr.low{background:#C4CAD4}

/* --- 任务看板 --- */
.v17-board{display:grid;grid-template-columns:repeat(3,1fr);gap: 12px;align-items:start}
.v17-bcol{background:#F4F5F9;border-radius: 14px;padding: 8px;min-height:200px}
.v17-bcol-hd{display:flex;align-items:center;justify-content:space-between;padding: 4px 8px 8px}
.v17-bcol-hd .t{font-size: 13px;font-weight: 600;display:flex;align-items:center;gap: 8px}
.v17-bcol-hd .cnt{font-size: 12px;color:var(--v17-text3);background:#fff;border-radius: 14px;padding: 1px 8px}
.v17-bcol.dragover{outline:2px dashed var(--v17-primary);outline-offset:-2px}
.v17-tcard{background:#fff;border-radius: 14px;padding: 8px 12px;margin-bottom: 8px;cursor:grab;border-left:3px solid transparent;transition: box-shadow .15s,transform .15s}
.v17-tcard:hover{box-shadow:0 4px 12px rgba(15,17,21,.1)}
.v17-tcard.dragging{opacity:.5;cursor:grabbing}
.v17-tcard .tt{font-size: 13px;font-weight: 600;line-height:1.4;margin-bottom: 8px}
.v17-tcard .tmeta{display:flex;align-items:center;gap: 8px;font-size: 12px;color:var(--v17-text3);flex-wrap:wrap}
.v17-tcard .tmeta .v17-avatar{width:20px;height:20px;font-size: 12px}
.v17-tcard .tsub{height:3px;background:#EEF0F5;border-radius: 14px;margin-top: 8px;overflow:hidden}
.v17-tcard .tsub i{display:block;height:100%;background:var(--v17-primary);border-radius: 14px}
.v17-tcard .tsrc{display:inline-block;font-size: 12px;background:#FFF3E0;color:#8A5300;padding: 1px 8px;border-radius: 14px;margin-top: 8px}
.v17-btags{display:flex;gap: 8px;margin-bottom: 8px;flex-wrap:wrap}
.v17-btag{font-size: 12px;padding: 4px 8px;border-radius: 14px;background:#fff;border:1px solid var(--v17-line);cursor:pointer;color:var(--v17-text2)}
.v17-btag.on{background:var(--v17-primary);color:#fff;border-color:var(--v17-primary)}
.v17-board-move{font-size: 12px;color:var(--v17-primary);cursor:pointer;margin-left: 8px}

/* --- 表单 --- */
.v17-form .v17-field{width:100%;box-sizing:border-box;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 12px;font-size: 13px;font-family:inherit;background:#fff;color:var(--v17-text)}
.v17-form textarea.v17-field{resize:vertical;min-height:70px}
.v17-form .v17-row{display:flex;gap: 8px}
.v17-form .v17-row>*{flex:1}
.v17-subadd{display:flex;align-items:center;gap: 8px;margin-bottom: 8px}
.v17-subadd input{flex:1;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 8px;font-size: 13px}
.v17-xbtn{background:none;border:none;color:var(--v17-text3);cursor:pointer;font-size: 13px;padding: 4px}
.v17-xbtn:hover{color:#FF3B30}

/* --- 任务详情 --- */
.v17-td-hd{display:flex;align-items:flex-start;gap: 8px;margin-bottom: 8px}
.v17-td-hd h3{flex:1;margin: 0;font-size: 17px;line-height:1.4}
.v17-td-grid{display:grid;grid-template-columns:1fr 1fr;gap: 8px 16px;font-size: 13px;margin: 8px 0}
.v17-td-grid .k{color:var(--v17-text3);font-size: 12px}
.v17-td-grid .v{color:var(--v17-text);font-weight: 500;margin-top: 4px}
.v17-stflow{display:flex;gap: 8px;flex-wrap:wrap;margin: 12px 0}
.v17-stbtn{padding: 8px 12px;border-radius: 14px;border:1px solid var(--v17-line);background:#fff;font-size: 13px;cursor:pointer;font-family:inherit}
.v17-stbtn.on{background:var(--v17-primary);color:#fff;border-color:var(--v17-primary)}
.v17-stbtn.danger{border-color:#F5C2C0;color:#FF3B30}
.v17-deps{margin: 8px 0;padding: 8px;background:#FFF7ED;border-radius: 14px;font-size: 13px}
.v17-deps b{color:#8A5300}
.v17-cmt{border-top:1px solid var(--v17-line);padding: 8px 0}
.v17-cmt-hd{display:flex;align-items:center;gap: 8px;margin-bottom: 4px}
.v17-cmt-hd .n{font-weight: 600;font-size: 13px}
.v17-cmt-hd .t{font-size: 12px;color:var(--v17-text3)}
.v17-cmt-bd{font-size: 13px;line-height:1.6;color:var(--v17-text)}
.v17-cmt-input{display:flex;gap: 8px;margin-top: 8px}
.v17-cmt-input textarea{flex:1;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 8px;font-size: 13px;font-family:inherit;resize:vertical;min-height:54px}

/* --- 会议 --- */
.v17-mcard{background:#fff;border:1px solid var(--v17-line);border-radius: 14px;padding: 16px;margin-bottom: 8px;display:flex;gap: 16px;align-items:flex-start}
.v17-mcard.soon{border-color:var(--v17-primary);}
.v17-mic{width:42px;height:42px;border-radius: 14px;background:#F4F6FF;color:var(--v17-primary);display:flex;align-items:center;justify-content:center;font-size: 17px;flex-shrink:0}
.v17-mbody{flex:1;min-width:0}
.v17-mtitle{font-size: 17px;font-weight: 600;margin-bottom: 4px}
.v17-mmeta{font-size: 12px;color:var(--v17-text3);line-height:1.7}
.v17-mcount{font-size: 13px;font-weight: 600;color:var(--v17-primary)}
.v17-mnum{background:#FAFAFB;border:1px dashed var(--v17-line);border-radius: 14px;padding: 12px;text-align:center;margin: 8px 0}
.v17-mnum .n{font-size: 22px;font-weight: 600;letter-spacing:2px;color:var(--v17-primary);font-family:'SF Mono',Menlo,monospace}
.v17-mtype-chips{display:flex;gap: 8px;flex-wrap:wrap;margin: 8px 0}
.v17-mtchip{padding: 4px 12px;border-radius: 14px;border:1px solid var(--v17-line);background:#fff;font-size: 13px;cursor:pointer}
.v17-mtchip.on{background:var(--v17-primary);color:#fff;border-color:var(--v17-primary)}

/* --- Markdown 编辑器 --- */
.v17-md{border:1px solid var(--v17-line);border-radius: 14px;overflow:hidden}
.v17-md-bar{display:flex;gap: 4px;padding: 8px 8px;background:#FAFAFB;border-bottom:1px solid var(--v17-line);flex-wrap:wrap}
.v17-md-bar button{background:none;border:none;padding: 4px 8px;border-radius: 14px;cursor:pointer;font-size: 13px;color:var(--v17-text2)}
.v17-md-bar button:hover{background:#E6E9F5}
.v17-md textarea{width:100%;box-sizing:border-box;border:none;padding: 12px;font-size: 13px;font-family:inherit;line-height:1.7;min-height:180px;resize:vertical;outline:none}
.v17-md-prev{padding: 12px;font-size: 13px;line-height:1.7;min-height:180px;background:#fff}
.v17-md-prev h1{font-size: 17px;margin: 8px 0}.v17-md-prev h2{font-size: 17px;margin: 8px 0}
.v17-md-prev code{background:var(--v17-bg);padding: 1px 4px;border-radius: 14px;font-size: 13px}
.v17-md-prev pre{background:#1A1A2E;color:#C3C8DA;padding: 8px;border-radius: 14px;overflow:auto}
.v17-md-prev ul{padding-left: 20px}
.v17-md-prev a{color:var(--v17-primary)}
.v17-feishu-card{display:flex;align-items:center;gap: 8px;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 12px;background:#FAFAFB}
.v17-feishu-card .ic{font-size: 22px}
.v17-feishu-card .t{flex:1;min-width:0}
.v17-feishu-card .t .n{font-size: 13px;font-weight: 600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v17-feishu-card .t .d{font-size: 12px;color:var(--v17-text3)}

/* --- 文档 --- */
.v17-docs-wrap{display:grid;grid-template-columns:180px 1fr;gap: 16px;align-items:start}
.v17-doc-tree{background:#FAFAFB;border-radius: 14px;padding: 8px}
.v17-doc-tree .g{font-size: 12px;color:var(--v17-text3);text-transform:uppercase;letter-spacing:.5px;padding: 8px 8px 4px;font-weight: 600}
.v17-doc-tree .it{display:flex;align-items:center;gap: 8px;padding: 8px 8px;border-radius: 14px;cursor:pointer;font-size: 13px;color:var(--v17-text2)}
.v17-doc-tree .it.on{background:#fff;color:var(--v17-primary);font-weight: 600;box-shadow:0 1px 2px rgba(15,17,21,.06)}
.v17-ditem{background:#fff;border:1px solid var(--v17-line);border-radius: 14px;padding: 12px 16px;margin-bottom: 8px;cursor:pointer;transition: box-shadow .15s}
.v17-ditem:hover{box-shadow:0 4px 12px rgba(15,17,21,.08)}
.v17-ditem .t{font-size: 13px;font-weight: 600;margin-bottom: 4px;display:flex;align-items:center;gap: 8px}
.v17-ditem .m{font-size: 12px;color:var(--v17-text3)}
.v17-dtype{font-size: 12px;padding: 1px 8px;border-radius: 14px;background:#F4F6FF;color:var(--v17-primary);font-weight: 600}
.v17-ver{display:flex;justify-content:space-between;align-items:center;padding: 8px 0;border-bottom:1px solid var(--v17-line);font-size: 13px}
.v17-ver:last-child{border-bottom:none}
.v17-tag{display:inline-block;font-size: 12px;background:var(--v17-bg);color:var(--v17-text2);padding: 1px 8px;border-radius: 14px;margin-right: 4px}
.v17-search{width:100%;box-sizing:border-box;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px 12px;font-size: 13px;margin-bottom: 8px}

/* --- 庆祝动画 --- */
@keyframes v17confetti{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(420px) rotate(720deg);opacity:0}}
.v17-confetti{position:fixed;top:-10px;width:8px;height:14px;z-index:99998;pointer-events:none;animation: v17confetti 2.4s ease-in forwards}
@keyframes v17pop{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
.v17-pop{animation: v17pop 0.32s ease}

/* --- 空态/加载 --- */
.v17-empty{text-align:center;color:var(--v17-text3);font-size: 13px;padding: 32px 8px}
.v17-empty .ic{font-size: 34px;margin-bottom: 8px}
.v17-loading{text-align:center;color:var(--v17-text3);font-size: 13px;padding: 20px}

/* --- 响应式 --- */
@media (max-width:768px){
  .v17-board{grid-template-columns:1fr}
  .v17-docs-wrap{grid-template-columns:1fr}
  .v17-doc-tree{display:flex;overflow-x:auto;padding: 8px}
  .v17-doc-tree .g{display:none}
  .v17-doc-tree .it{white-space:nowrap}
  .v17-form .v17-row{flex-direction:column;gap: 8px}
  .v17-td-grid{grid-template-columns:1fr}
  .v17-mcard{flex-direction:column}
  .v17-gpane{padding: 12px}
}

/* ================= V17 WAVE3: 资源/频道/成员/成长/引导/性能 ================= */
/* --- Module 7: Resources --- */
.v17-res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap: 12px}
.v17-res-card{background:#fff;border:1px solid var(--v17-line);border-radius: 14px;padding: 16px;transition: .15s;position:relative}
.v17-res-card:hover{border-color:#C9D4FF}
.v17-res-card .t{font-size: 13px;font-weight: 600;color:var(--v17-text);cursor:pointer;margin-bottom: 8px;display:flex;align-items:center;gap: 8px}
.v17-res-card .t:hover{color:var(--v17-primary)}
.v17-res-card .meta{font-size: 12px;color:var(--v17-text3);display:flex;align-items:center;gap: 8px;flex-wrap:wrap}
.v17-res-type{display:inline-block;font-size: 12px;padding: 4px 8px;border-radius: 14px;font-weight: 600}
.v17-res-type.requirement{background:#F5F5F7;color:#6E6E73}
.v17-res-type.solution{background:#CDEBD7;color:#065F46}
.v17-res-type.reference{background:#F2F4FF;color:#2F46B8}
.v17-res-type.output{background:#E9D5FF;color:#6B21A8}
.v17-res-type.meeting{background:#FCE7F3;color:#9D174D}
.v17-res-badge{position:absolute;top:10px;right:12px;font-size: 12px;padding: 4px 8px;border-radius: 14px;font-weight: 600}
.v17-res-badge.essence{background:#FBF4E4;color:#B8862F}
.v17-stars{display:inline-flex;align-items:center;gap: 4px;color:var(--v17-yellow);font-size: 12px}
.v17-star-btn{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;transition: .1s}
.v17-star-btn:hover{transform:scale(1.2)}
.v17-fav-btn{cursor:pointer;font-size: 13px;background:none;border:none;padding: 4px 4px}
.v17-fav-btn.on{color:var(--v17-red)}
.v17-res-desc{font-size: 13px;color:var(--v17-text2);line-height:1.5;margin: 8px 0}

/* --- Module 8: Channels --- */
.v17-ch-wrap{display:flex;gap: 0;height:calc(100vh - 200px);min-height:400px;border:1px solid var(--v17-line);border-radius: 14px;overflow:hidden}
.v17-ch-side{width:180px;border-right:1px solid var(--v17-line);background:#FAFAFB;display:flex;flex-direction:column;flex-shrink:0}
.v17-ch-item{display:flex;align-items:center;gap: 8px;padding: 8px 16px;cursor:pointer;font-size: 13px;color:var(--v17-text2);border-left:3px solid transparent;transition: .12s}
.v17-ch-item:hover{background:#F4F6FF}
.v17-ch-item.on{background:#EBEFFF;color:var(--v17-primary);border-left-color:var(--v17-primary);font-weight: 600}
.v17-ch-dot{width:8px;height:8px;border-radius: 50%;background:var(--v17-red);flex-shrink:0;display:none}
.v17-ch-dot.show{display:block}
.v17-ch-main{flex:1;display:flex;flex-direction:column;min-width:0;background:#fff}
.v17-ch-main-hd{padding: 8px 16px;border-bottom:1px solid var(--v17-line);display:flex;align-items:center;justify-content:space-between;gap: 8px}
.v17-thread-card{padding: 12px 16px;border-bottom:1px solid #F4F5F9;cursor:pointer;transition: .12s}
.v17-thread-card:hover{background:#FAFBFF}
.v17-thread-card .tt{font-size: 13px;font-weight: 600;color:var(--v17-text);display:flex;align-items:center;gap: 8px}
.v17-thread-card .ts{font-size: 13px;color:var(--v17-text3);margin-top: 4px;line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.v17-thread-card .tm{font-size: 12px;color:var(--v17-text3);margin-top: 8px;display:flex;align-items:center;gap: 8px;flex-wrap:wrap}
.v17-pin-icon{color:var(--v17-red);font-size: 12px}
.v17-essence-icon{color:var(--v17-yellow);font-size: 12px}
/* D-06：话题操作收进「···」（小圆点按钮 + 浮层菜单；点外部或 Esc 关闭） */
.v17-more{position:relative;display:inline-block;flex:none}
.v17-more__btn{width:32px;height:32px;line-height:1;border:1px solid var(--v17-line);background:#fff;color:var(--v17-text2);border-radius: 14px;cursor:pointer;font-size: 17px;font-weight: 600;letter-spacing:1px;padding: 0;font-family:inherit;transition: background .15s ease-out,border-color .15s ease-out}
.v17-more__btn:hover{background:#F5F7FF;border-color:#C9D4FF;color:var(--v17-primary)}
.v17-more__btn:focus-visible{outline:2px solid var(--v17-primary);outline-offset:2px}
.v17-more__menu{position:absolute;right:0;top:calc(100% + 6px);min-width:132px;background:#fff;border:1px solid var(--v17-line);border-radius: 14px;padding: 8px;display:none;z-index:30}
.v17-more__menu.show{display:block}
.v17-more__item{display:block;width:100%;text-align:left;border:none;background:none;font-family:inherit;font-size: 13px;color:var(--v17-text);padding: 8px 8px;border-radius: 14px;cursor:pointer;min-height:34px}
.v17-more__item:hover{background:#F5F7FF;color:var(--v17-primary)}
.v17-more__item:focus-visible{outline:2px solid var(--v17-primary);outline-offset:-2px}
.v17-ch-tag{display:inline-block;font-size: 12px;padding: 1px 8px;border-radius: 14px;background:var(--v17-bg);color:var(--v17-text2)}
.v17-ch-tag.announce{background:#FDECEA;color:#FF3B30}
.v17-ch-tag.req{background:#F5F5F7;color:#6E6E73}
.v17-ch-tag.tech{background:#F2F4FF;color:#2F46B8}
.v17-ch-tag.chat{background:#CDEBD7;color:#065F46}
.v17-reply-item{padding: 8px 0;border-bottom:1px solid #F4F5F9}
.v17-reply-item .rh{display:flex;align-items:center;gap: 8px;margin-bottom: 4px}
.v17-reply-item .rq{background:var(--v17-bg);border-left:3px solid var(--v17-primary);padding: 4px 8px;font-size: 12px;color:var(--v17-text3);border-radius: 0 14px 14px 0;margin-bottom: 8px}
.v17-at-mention{color:var(--v17-primary);font-weight: 600}

/* --- Module 9: Members --- */
.v17-mem-group{margin-bottom: 16px}
.v17-mem-group-hd{font-size: 13px;font-weight: 600;color:var(--v17-text2);margin-bottom: 8px;display:flex;align-items:center;gap: 8px}
.v17-mem-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap: 8px}
.v17-mem-card{display:flex;align-items:flex-start;gap: 8px;padding: 12px;border:1px solid var(--v17-line);border-radius: 14px;background:#fff}
.v17-mem-card .info{flex:1;min-width:0}
.v17-mem-card .nm{font-size: 13px;font-weight: 600;display:flex;align-items:center;gap: 8px;flex-wrap:wrap}
.v17-role-tag{display:inline-block;font-size: 12px;padding: 1px 8px;border-radius: 14px;font-weight: 600}
.v17-role-tag.owner{background:#FDECEA;color:#FF3B30}
.v17-role-tag.admin{background:#F5F5F7;color:#6E6E73}
.v17-role-tag.member{background:#F2F4FF;color:#2F46B8}
.v17-role-tag.viewer{background:var(--v17-bg);color:var(--v17-text3)}
.v17-mem-stats{display:flex;gap: 8px;margin-top: 8px;font-size: 12px;color:var(--v17-text3);flex-wrap:wrap}
.v17-flame{color:var(--v17-red)}
.v17-mem-actions{display:flex;gap: 8px;margin-top: 8px;flex-wrap:wrap}
.v17-silent-banner{background:#F5F5F7;border:1px solid #E5E5EA;border-radius: 14px;padding: 8px 16px;margin-bottom: 16px;font-size: 13px;color:#6E6E73;display:flex;align-items:center;gap: 8px}
.v17-thank-pop{text-align:center;padding: 8px}
.v17-thank-pop .big{font-size: 34px;margin-bottom: 8px}
.v17-contrib-board{margin-top: 16px;padding-top: 16px;border-top:1px solid var(--v17-line)}
.v17-contrib-row{display:flex;align-items:center;gap: 8px;padding: 8px 0;font-size: 13px}
.v17-contrib-row .rk{width:22px;height:22px;border-radius: 50%;background:var(--v17-bg);display:flex;align-items:center;justify-content:center;font-size: 12px;font-weight: 600;flex-shrink:0}
.v17-contrib-row .rk.top1{background:#FBF4E4;color:#B8862F}
.v17-contrib-row .rk.top2{background:#C3C8DA;color:#4A4A5C}
.v17-contrib-row .rk.top3{background:#F5D695;color:#9A3412}

/* --- Module 10: Growth page (v39 重做 · 设计标准) --- */
#page-growth{display:none}
#page-growth.active{display:block}
.v17-growth-wrap{max-width:1200px;margin: 0 auto;padding: 16px 24px 48px}
/* 页面标题 */
.growth-page-head{margin-bottom: 16px}
.growth-page-head h2{font-size: 22px;font-weight: 600;letter-spacing:-.02em;margin: 0 0 4px}
.growth-page-head p{font-size: 13px;color:var(--ink-3);margin: 0}
/* 等级卡片 — 浅色卡 + 环形进度 */
.v17-level-card{background:var(--card);border:1px solid var(--line);border-radius: 18px;padding: 32px;margin-bottom: 20px;display:flex;align-items:center;gap: 32px;position:relative;overflow:hidden}
.v17-level-card .lv-left{flex:1;min-width:0}
.v17-level-card .lv-label{font-size: 12px;font-weight: 600;letter-spacing:.08em;color:var(--indigo-500);text-transform:uppercase;margin-bottom: 8px}
.v17-level-card .lv-num{font-size: 56px;font-weight: 600;line-height:1;letter-spacing:-.03em;color:var(--ink)}
.v17-level-card .lv-num span{color:var(--indigo-500)}
.v17-level-card .lv-name{font-size: 17px;font-weight: 600;color:var(--ink-2);margin-top: 8px}
.v17-level-card .lv-rank{display:inline-flex;align-items:center;gap: 8px;font-size: 12px;color:var(--ink-3);margin-top: 8px;background:var(--bg-soft);padding: 4px 8px;border-radius: 999px}
.v17-level-card .lv-ring{flex-shrink:0;width:120px;height:120px;position:relative}
.v17-level-card .lv-ring svg{transform:rotate(-90deg)}
.v17-level-card .lv-ring .ring-bg{fill:none;stroke:var(--indigo-100);stroke-width:8}
.v17-level-card .lv-ring .ring-fg{fill:none;stroke:url(#lvGrad);stroke-width:8;stroke-linecap:round;transition: stroke-dashoffset 1.4s ease}
.v17-level-card .lv-ring .ring-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.v17-level-card .lv-ring .ring-pct{font-size: 22px;font-weight: 600;color:var(--ink)}
.v17-level-card .lv-ring .ring-label{font-size: 12px;color:var(--ink-3);letter-spacing:.04em}
.v17-level-card .lv-meta{display:flex;gap: 12px;margin-top: 16px;flex-wrap:wrap}
.v17-level-card .lv-meta .meta-item{display:flex;align-items:center;gap: 8px;font-size: 13px;color:var(--ink-2);background:var(--indigo-50);padding: 8px 12px;border-radius: 14px;border:1px solid var(--indigo-100)}
.v17-level-card .lv-meta .meta-item b{color:var(--indigo-600);font-weight: 600}
/* 双栏布局 */
.growth-cols{display:grid;grid-template-columns:1fr 1fr;gap: 16px;margin-bottom: 20px}
@media(max-width:900px){.growth-cols{grid-template-columns:1fr}}
/* 区块标题 */
.growth-section{background:var(--card);border:1px solid var(--line);border-radius: 18px;padding: 24px;}
.growth-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom: 16px}
.growth-section-head h3{font-size: 17px;font-weight: 600;margin: 0;display:flex;align-items:center;gap: 8px}
.growth-section-head h3 .sec-ic{width:28px;height:28px;border-radius: 14px;background:var(--indigo-50);display:flex;align-items:center;justify-content:center;color:var(--indigo-500)}
.growth-section-head .sec-count{font-size: 12px;color:var(--ink-3);background:var(--bg-soft);padding: 4px 8px;border-radius: 14px}
/* 成就徽章 — 去emoji，用SVG/字母图标 */
.v17-badge-wall{display:grid;grid-template-columns:repeat(5,1fr);gap: 12px}
.p9-badges-full{margin-bottom: 20px}
.v17-badge-cell{background:var(--bg-soft);border:1px solid var(--line);border-radius: 14px;padding: 16px 12px;text-align:center;transition: all .15s ease;position:relative}
.v17-badge-cell.unlocked{background:var(--card);border-color:var(--indigo-200)}
.v17-badge-cell.unlocked:hover{border-color:var(--indigo-300);transform:translateY(-1px)}
.v17-badge-cell.locked{opacity:.5}
.v17-badge-cell .ic{width:40px;height:40px;border-radius: 14px;margin: 0 auto 8px;display:flex;align-items:center;justify-content:center;font-size: 17px;font-weight: 600}
.v17-badge-cell.unlocked .ic{background:var(--indigo-50);color:var(--indigo-500)}
.v17-badge-cell.locked .ic{background:var(--line-2);color:var(--ink-4)}
.v17-badge-cell .nm{font-size: 13px;font-weight: 600;color:var(--ink);line-height:1.3}
.v17-badge-cell .cond{font-size: 12px;color:var(--ink-3);margin-top: 4px;line-height:1.4}
.v17-badge-cell .when{font-size: 12px;color:var(--success);margin-top: 4px;font-weight: 600}
/* 成长值明细 — 时间线 */
.v17-xp-list{max-height:360px;overflow-y:auto}
.v17-xp-item{display:flex;align-items:center;gap: 12px;padding: 8px 0;border-bottom:1px solid var(--line-2);font-size: 13px}
.v17-xp-item:last-child{border-bottom:none}
.v17-xp-item .amt{font-weight: 600;color:var(--indigo-600);flex-shrink:0;width:52px;text-align:right;font-size: 13px}
.v17-xp-item .rsn{flex:1;color:var(--ink-2);line-height:1.4;min-width:0}
.v17-xp-item .rsn b{color:var(--ink);font-weight: 600}
.v17-xp-item .tm{font-size: 12px;color:var(--ink-4);flex-shrink:0}
/* 排行榜 — 前三名金银铜 */
.v17-rank-tabs{display:inline-flex;background:var(--line-2);border-radius: 14px;padding: 4px;gap: 4px;margin-bottom: 16px}
.v17-rank-tabs .v17-btag{border:none;background:transparent;font-family:var(--font-sans);font-size: 13px;font-weight: 500;color:var(--ink-3);padding: 8px 16px;border-radius: 14px;cursor:pointer;transition: all .15s}
.v17-rank-tabs .v17-btag.on{background:#fff;color:var(--ink);box-shadow:var(--sh-sm);font-weight: 600}
.v17-rank-row{display:flex;align-items:center;gap: 12px;padding: 8px 0;border-bottom:1px solid var(--line-2);font-size: 13px}
.v17-rank-row:last-child{border-bottom:none}
.v17-rank-row .rk{width:28px;height:28px;border-radius: 50%;background:var(--bg-soft);display:flex;align-items:center;justify-content:center;font-size: 12px;font-weight: 600;flex-shrink:0;color:var(--ink-3)}
.v17-rank-row .rk.top1{background:linear-gradient(135deg,#F5D695,#D9A94E);color:#fff;}
.v17-rank-row .rk.top2{background:linear-gradient(135deg,#C3C8DA,#C3C8DA);color:#fff}
.v17-rank-row .rk.top3{background:linear-gradient(135deg,#F5D695,#D4956A);color:#fff}
.v17-rank-row .rk-name{flex:1;font-weight: 500;color:var(--ink)}
.v17-rank-row .rk-val{font-size: 13px;color:var(--indigo-600);font-weight: 600}
/* 升级弹窗 */
.v17-levelup-overlay{position:fixed;inset:0;background:rgba(26,26,46,.5);backdrop-filter:blur(4px);z-index:10001;display:none;align-items:center;justify-content:center;flex-direction:column;gap: 16px;color:var(--ink);text-align:center}
.v17-levelup-overlay.show{display:flex;animation: v17pop 0.32s ease}
.v17-levelup-overlay .lu-card{background:var(--card);border-radius: 14px;padding: 32px 48px;max-width:400px}
.v17-levelup-overlay .lu-ic{width:72px;height:72px;border-radius: 50%;background:linear-gradient(135deg,var(--indigo-400),var(--indigo-600));display:flex;align-items:center;justify-content:center;margin: 0 auto 16px;font-size: 34px}
.v17-levelup-overlay h2{margin: 0 0 8px;font-size: 22px;font-weight: 600}
.v17-levelup-overlay p{margin: 0;color:var(--ink-3);font-size: 13px;line-height:1.6}

/* --- Module 10b: Growth P9 对焦稿增强（全部 #page-growth 作用域） --- */
#page-growth .p9-hero{background:linear-gradient(120deg,#3D55D4 0%,#4F6BED 55%,#6B8AFF 100%);border-radius: 14px;padding: 32px 32px;color:#fff;position:relative;overflow:hidden;margin-bottom: 20px}
#page-growth .p9-hero::after{content:"";position:absolute;right:-60px;top:-80px;width:300px;height:300px;border-radius: 50%;background:radial-gradient(circle,rgba(255,255,255,.18),transparent 70%)}
#page-growth .p9-hero-top{display:flex;align-items:center;gap: 16px;position:relative;z-index:2;flex-wrap:wrap}
#page-growth .p9-lvl-badge{width:64px;height:64px;border-radius: 18px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);display:flex;align-items:center;justify-content:center;flex:none}
#page-growth .p9-cur-dot{width:42px;height:42px;border-radius: 50%;background:#C2A46B;border:2px solid #E9D3A3;display:flex;align-items:center;justify-content:center;font-size: 17px;font-weight: 600;color:#fff;flex:none}
#page-growth .p9-hero-id{min-width:0}
#page-growth .p9-rnode.cur-moved .dot{visibility:hidden}
#page-growth .p9-steps{display:grid;grid-template-columns:repeat(4,1fr);margin-top: 12px;position:relative;z-index:2}
#page-growth .p9-step{display:flex;flex-direction:column;align-items:center;gap: 4px;position:relative}
#page-growth .p9-step .sdot{width:26px;height:26px;border-radius: 50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.15);border:2px solid rgba(255,255,255,.35);font-size: 12px;font-weight: 600;color:#fff;position:relative;z-index:2}
#page-growth .p9-step.done .sdot{background:#fff;color:#3D55D4;border-color:#fff}
#page-growth .p9-step.current .sdot{visibility:hidden;border:none}
#page-growth .p9-step .snm{font-size: 12px;font-weight: 600;opacity:.92}
#page-growth .p9-step.locked .snm{opacity:.6}
#page-growth .p9-step:not(:last-child)::after{content:"";position:absolute;top:13px;left:calc(50% + 15px);width:calc(100% - 30px);height:2px;background:rgba(255,255,255,.3);z-index:1}
#page-growth .p9-step.done:not(:last-child)::after{background:#fff}
#page-growth .p9-hero h1{font-size: 22px;font-weight: 600;letter-spacing:.2px;margin: 0}
#page-growth .p9-hero .sub{font-size: 13px;opacity:.86;margin-top: 4px}
#page-growth .p9-hero .p9-sid{font-size: 12px;opacity:.82;margin-top: 8px;letter-spacing:.3px}
#page-growth .p9-hero-right{margin-left: auto;text-align:right;position:relative;z-index:2}
#page-growth .p9-hero-right .gv{font-size: 34px;font-weight: 600;line-height:1}
#page-growth .p9-hero-right .gv span{font-size: 17px;font-weight: 600;opacity:.8}
#page-growth .p9-hero-right .cap{font-size: 12px;opacity:.85;margin-top: 8px}
#page-growth .p9-hero-bar{height:8px;border-radius: 999px;background:rgba(255,255,255,.22);margin-top: 24px;position:relative;z-index:2;overflow:hidden}
#page-growth .p9-hero-bar i{display:block;height:100%;border-radius: 999px;background:#fff;transition: width 0.32s ease}
#page-growth .p9-hero-foot{display:flex;justify-content:space-between;font-size: 12px;opacity:.9;margin-top: 8px;position:relative;z-index:2}
#page-growth .p9-checkin-bar{display:flex;align-items:center;gap: 16px;margin-top: 16px;padding: 12px 16px;background:rgba(255,255,255,.14);border-radius: 14px;position:relative;z-index:2;backdrop-filter:blur(8px)}
#page-growth .p9-checkin-bar .ci-info{flex:1}
#page-growth .p9-checkin-bar .ci-streak{font-size: 17px;font-weight: 600}
#page-growth .p9-checkin-bar .ci-streak em{font-size: 12px;font-weight: 500;opacity:.85;margin-left: 4px}
#page-growth .p9-checkin-bar .ci-desc{font-size: 12px;opacity:.82;margin-top: 4px}
#page-growth .p9-checkin-bar .ci-btn{padding: 8px 20px;border:none;border-radius: 14px;background:#fff;color:#3D55D4;font-size: 13px;font-weight: 600;cursor:pointer;white-space:nowrap;transition: all .2s}
#page-growth .p9-checkin-bar .ci-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.15)}
#page-growth .p9-checkin-bar .ci-btn.done{background:rgba(255,255,255,.25);color:#fff;cursor:default}
#page-growth .p9-badges{display:flex;flex-wrap:wrap;gap: 8px}
#page-growth .p9-badges .v17-badge-cell{flex:1 1 150px;min-width:130px;max-width:220px}
#page-growth .p9-badge{display:flex;align-items:center;gap: 8px;padding: 8px 16px;background:var(--indigo-50);border:1px solid var(--indigo-100);border-radius: 14px;font-size: 13px}
#page-growth .p9-badge .b-ic{width:28px;height:28px;border-radius: 50%;background:var(--indigo);color:#fff;display:flex;align-items:center;justify-content:center;font-size: 13px;font-weight: 600}
#page-growth .p9-badge.locked{opacity:.4;filter:grayscale(1)}
#page-growth .p9-badge .b-name{font-weight: 600;color:var(--ink)}

#page-growth .p9-road{display:grid;grid-template-columns:repeat(4,1fr);margin-top: 12px;position:relative;z-index:2}
#page-growth .p9-rnode{text-align:center;position:relative}
#page-growth .p9-rnode .dot{width:38px;height:38px;border-radius: 50%;margin: 0 auto;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.15);border:2px solid rgba(255,255,255,.35);font-size: 17px;font-weight: 600;position:relative;z-index:2}
#page-growth .p9-rnode.done .dot{background:#fff;color:#3D55D4;border-color:#fff}
#page-growth .p9-rnode.cur .dot{background:#C2A46B;border-color:#E9D3A3;}
#page-growth .p9-rnode .nm{font-size: 13px;font-weight: 600;margin-top: 8px}
#page-growth .p9-rnode .th{font-size: 12px;opacity:.8;margin-top: 4px}
#page-growth .p9-rnode:not(:last-child)::before{content:"";position:absolute;top:19px;left:calc(50% + 22px);width:calc(100% - 44px);height:2px;background:rgba(255,255,255,.3)}
#page-growth .p9-rnode.done:not(:last-child)::before{background:#fff}
#page-growth .p9-bento{display:grid;grid-template-columns:repeat(4,1fr);gap: 16px;margin-bottom: 20px}
#page-growth .p9-card{background:#fff;border:1px solid #E9EAF0;border-radius: var(--fde-r-lg,14px);padding: 24px;}
#page-growth .p9-card-h{display:flex;align-items:center;gap: 8px;margin-bottom: 16px}
#page-growth .p9-card-h .ic{width:32px;height:32px;border-radius: 14px;background:#F2F4FF;color:#3D55D4;display:flex;align-items:center;justify-content:center;flex:none}
#page-growth .p9-card-h h3{font-size: 17px;font-weight: 600;margin: 0}
#page-growth .p9-card-h .tag{margin-left: auto;font-size: 12px;font-weight: 600;color:#3D55D4;background:#F2F4FF;padding: 4px 8px;border-radius: 999px}
#page-growth .p9-span2{grid-column:span 2}
#page-growth .p9-span-full{grid-column:1/-1}
#page-growth .p9-learn-row{display:flex;gap: 16px;align-items:center}
#page-growth .p9-ring{flex:none;position:relative;width:108px;height:108px}
#page-growth .p9-ring svg{transform:rotate(-90deg)}
#page-growth .p9-ring .ctr{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
#page-growth .p9-ring .ctr b{font-size: 22px;font-weight: 600}
#page-growth .p9-ring .ctr span{font-size: 12px;color:#8E8E93}
#page-growth .p9-learn-stats{flex:1;display:grid;grid-template-columns:1fr 1fr;gap: 12px}
#page-growth .p9-ls{background:#F5F5F7;border-radius: 14px;padding: 12px 16px}
#page-growth .p9-ls span{font-size: 12px;color:#8E8E93;display:block}
#page-growth .p9-ls b{font-size: 17px;font-weight: 600;margin-top: 4px;display:block}
#page-growth .p9-ls b em{font-style:normal;font-size: 12px;font-weight: 600;color:#8E8E93}
#page-growth .p9-contrib-big{font-size: 34px;font-weight: 600;line-height:1}
#page-growth .p9-contrib-big em{font-style:normal;font-size: 13px;color:#8E8E93;font-weight: 600}
#page-growth .p9-today{display:inline-flex;align-items:center;gap: 4px;font-size: 12px;font-weight: 600;color:#A88B52;background:#FAFAFA;padding: 4px 12px;border-radius: 999px;margin: 12px 0 16px}
#page-growth .p9-clist{list-style:none;display:flex;flex-direction:column;gap: 8px;margin: 0;padding: 0}
#page-growth .p9-clist li{display:flex;align-items:center;gap: 8px;font-size: 13px}
#page-growth .p9-clist .d{width:7px;height:7px;border-radius: 50%;background:#6B8AFF;flex:none}
#page-growth .p9-clist .v{margin-left: auto;font-weight: 600;color:#3D55D4}
#page-growth .p9-clist .t{color:#8E8E93;font-size: 12px}
#page-growth .p9-certs{display:flex;gap: 16px}
#page-growth .p9-cert{flex:1;border-radius: 14px;padding: 16px;background:linear-gradient(135deg,#FAFAFA,#F6EFDD);border:1px solid #E3D2A8;position:relative;overflow:hidden;min-height:150px;display:flex;flex-direction:column}
#page-growth .p9-cert .p9-cert-top{display:flex;align-items:center;justify-content:space-between;gap: 8px;margin-bottom: 4px}
#page-growth .p9-cert .cn{font-size: 12px;font-weight: 600;letter-spacing:1px;color:#A88B52}
#page-growth .p9-cert .ct{font-size: 13px;font-weight: 600;margin: 8px 0 4px;line-height:1.4}
#page-growth .p9-cert .cm{font-size: 12px;color:#48484A}
#page-growth .p9-cert .sc{margin-top: auto;display:flex;align-items:baseline;gap: 4px}
#page-growth .p9-cert .sc b{font-size: 17px;font-weight: 600;color:#A88B52}
#page-growth .p9-cert .sc span{font-size: 12px;color:#8E8E93}
#page-growth .p9-cert.lock{align-items:center;justify-content:center;background:#F5F5F7;border:1px dashed #D2D2D7;color:#8E8E93;text-align:center}
#page-growth .p9-cert.lock .lk{width:30px;height:30px;border-radius: 50%;background:#fff;display:flex;align-items:center;justify-content:center;margin-bottom: 8px}
#page-growth .p9-cert.lock p{font-size: 12px;line-height:1.6;margin: 0}
#page-growth .p9-proj{display:flex;flex-direction:column;gap: 12px}
#page-growth .p9-pj{display:flex;align-items:center;gap: 12px;padding: 12px;border-radius: 14px;background:#F5F5F7}
#page-growth .p9-pj .role{width:42px;height:42px;border-radius: 14px;display:flex;align-items:center;justify-content:center;font-size: 12px;font-weight: 600;color:#fff;flex:none}
#page-growth .p9-pj .info{flex:1;min-width:0}
#page-growth .p9-pj .info b{font-size: 13px;font-weight: 600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#page-growth .p9-pj .info span{font-size: 12px;color:#8E8E93}
#page-growth .p9-pj .pp{width:70px;flex:none}
#page-growth .p9-pj .pp .bar{height:6px;border-radius: 999px;background:#D2D2D7;overflow:hidden}
#page-growth .p9-pj .pp .bar i{display:block;height:100%;background:#4F6BED}
#page-growth .p9-pj .pp b{font-size: 12px;font-weight: 600;display:block;text-align:right;margin-top: 4px}
#page-growth .p9-rules-card{margin-bottom: 20px}
#page-growth .p9-rules-card .p9-card-h .sub{margin-left: auto;font-size: 12px;color:#8E8E93;font-weight: 600}
#page-growth .p9-rules-gv{display:grid;grid-template-columns:repeat(4,1fr);gap: 12px}
#page-growth .p9-gv-item{background:#F5F5F7;border-radius: 14px;padding: 12px 16px;display:flex;align-items:center;gap: 12px}
#page-growth .p9-gv-item .gi-ic{width:30px;height:30px;border-radius: 14px;background:#fff;display:flex;align-items:center;justify-content:center;color:#3D55D4;flex:none}
#page-growth .p9-gv-item .gi-t b{font-size: 13px;font-weight: 600;display:block}
#page-growth .p9-gv-item .gi-t span{font-size: 12px;color:#8E8E93}
#page-growth .p9-gv-item .gi-v{margin-left: auto;font-size: 13px;font-weight: 600;color:var(--indigo-500)}
@media(max-width:900px){
  #page-growth .p9-bento{grid-template-columns:1fr 1fr}
  #page-growth .p9-span2{grid-column:span 2}
  #page-growth .p9-rules-gv{grid-template-columns:1fr 1fr}
  #page-growth .p9-hero-right{margin-left: 0;text-align:left}
}
@media(max-width:560px){
  #page-growth .p9-bento{grid-template-columns:1fr}
  #page-growth .p9-span2{grid-column:span 1}
  #page-growth .p9-rules-gv{grid-template-columns:1fr}
  #page-growth .p9-road{grid-template-columns:repeat(2,1fr);gap: 16px 0}
  #page-growth .p9-rnode::before{display:none}
  #page-growth .p9-certs{flex-direction:column}
}

/* --- Module 11: Onboarding --- */
.v17-onboard-mask{position:fixed;inset:0;background:rgba(15,17,21,.6);;z-index:10002;display:none;align-items:center;justify-content:center;padding: 20px}
.v17-onboard-mask.show{display:flex}
.v17-onboard-modal{background:#fff;border-radius: 18px;width:100%;max-width:480px;max-height:90vh;overflow:auto;}
.v17-onboard-hd{padding: 32px 32px 16px;text-align:center}
.v17-onboard-hd .step{font-size: 12px;color:var(--v17-primary);font-weight: 600;letter-spacing:1px}
.v17-onboard-hd h3{margin: 8px 0 4px;font-size: 17px}
.v17-onboard-hd p{margin: 0;font-size: 13px;color:var(--v17-text3)}
.v17-onboard-progress{height:6px;background:var(--v17-bg);border-radius: 14px;margin: 16px 32px 0;overflow:hidden}
.v17-onboard-progress i{display:block;height:100%;background:#4F6BED;transition: width 0.32s}
.v17-onboard-bd{padding: 20px 32px 32px}
.v17-onboard-ft{display:flex;gap: 8px;padding: 0 32px 24px}
.v17-rec-card{border:1px solid var(--v17-line);border-radius: 14px;padding: 12px;margin-bottom: 8px;display:flex;align-items:center;gap: 8px;cursor:pointer;transition: .12s}
.v17-rec-card:hover{border-color:var(--v17-primary);}
.v17-rec-card .info{flex:1;min-width:0}
.v17-rec-card .nm{font-size: 13px;font-weight: 600}
.v17-rec-card .meta{font-size: 12px;color:var(--v17-text3);margin-top: 4px}
.v17-tooltip{position:fixed;z-index:10003;background:#1A1A2E;color:#fff;padding: 8px 16px;border-radius: 14px;font-size: 13px;max-width:260px;display:none}
.v17-tooltip.show{display:block;animation: v17pop .2s ease}
.v17-tooltip:after{content:'';position:absolute;top:-5px;left:20px;width:10px;height:10px;background:#1A1A2E;transform:rotate(45deg)}
.v17-empty-guide{text-align:center;padding: 32px 16px}
.v17-empty-guide .ic{font-size: 40px;margin-bottom: 8px}
.v17-empty-guide h4{margin: 0 0 8px;font-size: 17px}
.v17-empty-guide p{margin: 0 0 16px;font-size: 13px;color:var(--v17-text3);line-height:1.6}

/* --- Module 12: Global search --- */
.v17-gsearch-wrap{position:relative;margin-left: auto}
.v17-gsearch{width:200px;padding: 8px 16px 8px 32px;border:1px solid var(--v17-line);border-radius: 999px;font-size: 13px;background:#F4F5F9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238A8F98' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.5' y2='16.5'/%3E%3C/svg%3E") no-repeat 11px center;outline:none;transition: .15s}
.v17-gsearch:focus{width:260px;background-color:#fff;border-color:var(--v17-primary)}
.v17-gsearch-drop{position:absolute;top:calc(100% + 6px);right:0;width:380px;max-height:60vh;overflow:auto;background:#fff;border-radius: 14px;z-index:9990;display:none}
.v17-gsearch-drop.show{display:block}
.v17-gs-group{padding: 8px 0}
.v17-gs-group-hd{padding: 4px 16px;font-size: 12px;font-weight: 600;color:var(--v17-text3);text-transform:uppercase;letter-spacing:.5px}
.v17-gs-item{padding: 8px 16px;cursor:pointer;display:flex;align-items:center;gap: 8px;font-size: 13px}
.v17-gs-item:hover{background:#F4F5F9}
.v17-gs-item .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v17-gs-item .s{font-size: 12px;color:var(--v17-text3)}
.v17-infinite-sentinel{text-align:center;padding: 16px;color:var(--v17-text3);font-size: 12px}

/* --- Wave3 responsive --- */
@media (max-width:768px){
  .v17-ch-wrap{flex-direction:column;height:auto;min-height:0}
  .v17-ch-side{width:100%;flex-direction:row;border-right:none;border-bottom:1px solid var(--v17-line);overflow-x:auto}
  .v17-ch-item{white-space:nowrap;border-left:none;border-bottom:3px solid transparent}
  .v17-ch-item.on{border-left:none;border-bottom-color:var(--v17-primary)}
  .v17-badge-wall{grid-template-columns:repeat(3,1fr);gap: 8px}
  .v17-badge-cell{padding: 12px 8px}
  .v17-badge-cell .ic{font-size: 22px}
  .v17-mem-grid{grid-template-columns:1fr}
  .v17-res-grid{grid-template-columns:1fr}
  .v17-gsearch{width:120px}
  .v17-gsearch:focus{width:160px}
  .v17-gsearch-drop{width:calc(100vw - 16px);right:0;left:0;margin: 0 8px}
  .v17-onboard-modal{max-width:100%}
  /* group modal fullscreen on mobile */
  .pjMask.show .pjModal, .pjMask.show .modal-mask{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;border-radius: 0!important}
}
/* footer 5-column override */
#page-dashboard .foot-grid-5{grid-template-columns:1.3fr 1fr 1fr 1fr 1fr;gap: 32px}
#page-dashboard .foot-grid-5 p{max-width:none}
@media(max-width:1100px){#page-dashboard .foot-grid-5{grid-template-columns:1.2fr 1fr 1fr 1fr;gap: 32px}}
@media(max-width:960px){#page-dashboard .foot-grid-5{grid-template-columns:1fr 1fr;gap: 32px 24px}}
@media(max-width:640px){#page-dashboard .foot-grid-5{grid-template-columns:1fr;gap: 32px}}
