@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/53e45098eac42afb-s.p.1uklb5el4zgvl.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/85ea1b3aadcead52-s.05i4gb4p0piv4.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(../media/3c285486269019b7-s.p.2g-0we2o5_ngd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/625a092f804baad3-s.p.1zvg0ggiaivzo.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6afabefbb32d7517-s.0jaqhc1tb-5xm.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a4f4f75ad654963f-s.p.1hvvd1t-trplq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a3bcb02a0e9e5d11-s.p.25pbmqxk8u2s7.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b35fd19aef91b293-s.0n_ln9vqskgts.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(../media/8f46d218c8f79e34-s.p.2wu4yy186g04j.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8ffc259da9d23054-s.p.10uaeld2xxvpt.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9e486ba39c38fb8a-s.2bbpeapf-lbjw.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6f42e0a3b0519c4d-s.p.13y-iz2lazqtb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/fcf129058e6e31f2-s.p.1ubek13yfcpkr.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/7b74840ea7c05e95-s.0t1_atrj_pkiu.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:800;font-display:swap;src:url(../media/3eca85881bcfa204-s.p.0unco9n87mni8.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro Fallback;src:local(Arial);ascent-override:90.61%;descent-override:24.01%;line-gap-override:0.0%;size-adjust:110.36%}.be_vietnam_pro_f1242ac7-module__Q1Q_MW__className{font-family:Be Vietnam Pro,Be Vietnam Pro Fallback;font-style:normal}.be_vietnam_pro_f1242ac7-module__Q1Q_MW__variable{--font-vf:"Be Vietnam Pro", "Be Vietnam Pro Fallback"}
:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-vf:"Be Vietnam Pro", sans-serif;--vf-ink:#15233c;--vf-muted:#5b6675;--vf-canvas:#f4f6f9;--vf-surface:#fff;--vf-sidebar:#f8fafc;--vf-line:#e3e8ef;--vf-accent:#1677ff;--vf-danger:#cf1322;--vf-warning:#d46b08;--vf-success:#389e0d}html,body{max-width:100vw}body{min-height:100%;color:var(--vf-ink);background:var(--vf-canvas);font-family:var(--font-vf);margin:0}*{box-sizing:border-box}::selection{color:#fff;background:var(--vf-ink)}a{color:var(--vf-accent);text-underline-offset:3px}a:hover{color:#0958d9}:where(button,a,[role=button]):focus-visible{outline:2px solid var(--vf-accent);outline-offset:3px}.vf-app-shell{background:var(--vf-canvas)}.vf-app-sider{border-right:1px solid var(--vf-line);background:var(--vf-sidebar)!important}.vf-app-sider .ant-layout-sider-children{flex-direction:column;display:flex}.vf-brand-lockup{border-bottom:1px solid var(--vf-line);align-items:center;gap:14px;min-height:88px;margin-bottom:6px;padding:22px 24px;display:flex}.vf-brand-mark{color:#fff;background:linear-gradient(135deg, #1d3557 0%, var(--vf-ink) 100%);letter-spacing:-.03em;border-radius:12px;flex:none;place-items:center;width:42px;height:42px;font-size:20px;font-weight:800;display:grid;box-shadow:0 4px 12px #15233c29}.vf-brand-lockup>div{flex-direction:column;gap:2px;min-width:0;display:flex}.vf-brand-name{letter-spacing:-.02em;font-size:17px;font-weight:700;line-height:1.2;color:var(--vf-ink)!important}.vf-brand-caption{letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:600;color:var(--vf-muted)!important}.vf-app-sider .ant-menu{background:0 0;border-inline-end:0;padding:8px 14px}.vf-app-sider .ant-menu-item{border-radius:10px;width:100%;height:48px;margin:4px 0;font-size:15px;font-weight:500;line-height:48px;transition:all .18s ease-in-out;padding:0 16px!important}.vf-app-sider .ant-menu-item:not(.ant-menu-item-selected){color:#4b5563}.vf-app-sider .ant-menu-item .ant-menu-title-content{font-size:15px}.vf-app-sider .ant-menu-item .ant-menu-item-icon{color:#64748b;transition:color .18s ease-in-out,transform .18s ease-in-out;margin-inline-end:14px!important;font-size:19px!important}.vf-app-sider .ant-menu-item:hover{color:var(--vf-ink)!important;background:#edf2f7!important}.vf-app-sider .ant-menu-item:hover .ant-menu-item-icon{color:var(--vf-ink);transform:translate(2px)}.vf-header-content{justify-content:space-between;align-items:center;width:100%;display:flex}.vf-mobile-menu,.vf-mobile-backdrop{display:none}.vf-app-sider .ant-menu-item-selected,.vf-app-sider .ant-menu.ant-menu-inline .ant-menu-item.ant-menu-item-selected{color:var(--vf-accent)!important;background:#e6f0ff!important;font-weight:600!important}.vf-app-sider .ant-menu-item-selected .ant-menu-item-icon{color:var(--vf-accent)!important;font-size:20px!important}.vf-app-header{justify-content:stretch;align-items:center;height:72px;display:flex;padding:0 32px!important}.vf-header-user{align-items:center;gap:10px;display:flex}.vf-user-avatar{color:var(--vf-ink);background:#dbeafe;font-weight:700}.vf-user-meta{flex-direction:column;gap:1px;min-width:0;line-height:1.2;display:flex}.vf-user-meta .ant-typography:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.vf-user-meta .ant-typography:last-child{font-size:12px}.vf-header-actions{border-left:1px solid var(--vf-line);margin-left:8px;padding-left:16px}.vf-header-actions .ant-btn{color:var(--vf-muted)}.vf-header-actions .ant-btn:hover{color:var(--vf-ink)!important;background:#f1f4f8!important}.vf-app-content{min-width:0;padding:32px}.vf-dashboard{width:100%;max-width:none;margin:0}.vf-page-header{margin-bottom:4px!important}.vf-page-header .ant-typography-title{color:var(--vf-ink);letter-spacing:-.02em;font-size:20px!important;line-height:1.35!important}.vf-page-header-sub{max-width:100%;color:var(--vf-muted);line-height:1.5;font-size:13px!important;display:block!important}.vf-dashboard-header .ant-typography-title{margin-bottom:2px!important}.vf-dashboard-header .ant-typography-secondary{color:var(--vf-muted);font-size:13px}.vf-stat-grid{margin-bottom:24px}.vf-stat-card{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;min-height:132px;transition:border-color .18s,box-shadow .18s,transform .18s;overflow:hidden;box-shadow:0 6px 18px #15233c0d}.vf-stat-card:hover{border-color:#c5d5e8;transform:translateY(-2px);box-shadow:0 10px 24px #15233c17}.vf-stat-card .ant-card-body{flex-direction:column;justify-content:space-between;min-height:130px;padding:18px 20px;display:flex}.vf-stat-heading{color:var(--vf-muted);align-items:center;gap:9px;font-size:13px;font-weight:600;line-height:1.35;display:flex}.vf-stat-icon{width:28px;height:28px;color:var(--vf-accent);background:#eaf3ff;border-radius:8px;place-items:center;font-size:15px;display:grid}.vf-stat-card .ant-statistic-content{color:var(--vf-ink);letter-spacing:-.04em;font-size:clamp(20px,2vw,28px);font-weight:700;line-height:1.15}.vf-stat-card.is-danger .vf-stat-icon{color:var(--vf-danger);background:#fff1f0}.vf-stat-card.is-danger .ant-statistic-content{color:var(--vf-danger)}.vf-stat-card.is-warning .vf-stat-icon{color:var(--vf-warning);background:#fff7e6}.vf-stat-card.is-warning .ant-statistic-content{color:var(--vf-warning)}.vf-stat-card.is-neutral .vf-stat-icon{color:var(--vf-success);background:#f0f9eb}.vf-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-bottom:24px;display:grid}.vf-dashboard-card{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;box-shadow:0 6px 18px #15233c0d}.vf-dashboard-card .ant-card-head{border-bottom-color:#edf0f4;min-height:58px;padding:0 20px}.vf-dashboard-card .ant-card-head-title{color:var(--vf-ink);font-size:15px;font-weight:700}.vf-dashboard-card .ant-card-body{padding:4px 20px 12px}.vf-dashboard-list .ant-list-item{border-block-end-color:#edf0f4;padding:15px 0}.vf-dashboard-list .ant-list-item:last-child{border-block-end:0}.vf-list-row{width:100%}.vf-list-row>.ant-flex:first-child{gap:4px}.vf-list-row .ant-typography-secondary{font-size:12px;line-height:1.55}.vf-list-row .ant-tag{border-radius:999px;flex:none;margin-inline-end:0;font-size:11px;font-weight:600}.vf-project-section{flex-direction:column;gap:14px;margin-top:24px;display:flex}.vf-project-section .ant-typography-title{color:var(--vf-ink);letter-spacing:-.025em}.vf-project-table{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px #15233c0d}.vf-project-table .ant-table{background:var(--vf-surface)}.vf-project-table .ant-table-thead>tr>th{color:var(--vf-muted);letter-spacing:.01em;text-transform:uppercase;background:#f8fafc;font-size:12px;font-weight:700}.vf-project-table .ant-table-tbody>tr>td{color:var(--vf-ink)}.vf-project-table .ant-table-tbody>tr:hover>td{background:#f8fbff!important}.vf-screen{flex-direction:column;gap:24px;display:flex}.vf-screen>.vf-page-header{margin-bottom:0!important}.vf-toolbar{-webkit-backdrop-filter:blur(12px)saturate(160%);background:#ffffffb8;border:1px solid #e3e8efbf;border-radius:14px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:0;padding:12px 16px;display:flex;box-shadow:0 8px 24px #15233c0a,inset 0 1px #ffffffe6}.vf-toolbar .ant-input-search{max-width:520px}.vf-toolbar .ant-space{margin:0!important}.vf-screen .vf-toolbar+.vf-table-shell{margin-top:0}.vf-task-table{flex-direction:column;gap:16px;min-width:0;display:flex}.vf-table-shell{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;min-width:0;overflow:hidden;box-shadow:0 6px 18px #15233c0d}.vf-table-shell .ant-table{background:var(--vf-surface)}.vf-table-shell .ant-table-container{overflow-x:auto}.vf-table-shell .ant-table-thead>tr>th{color:var(--vf-muted);letter-spacing:.01em;text-transform:uppercase;white-space:nowrap;background:#f8fafc;font-size:12px;font-weight:700}.vf-table-shell .ant-table-tbody>tr>td{color:var(--vf-ink);white-space:nowrap}.vf-table-shell .ant-table-tbody>tr:hover>td{background:#f8fbff!important}.vf-table-shell .ant-pagination{padding-inline:16px}.vf-surface-card{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;box-shadow:0 6px 18px #15233c0d}.vf-surface-card .ant-card-head{border-bottom-color:#edf0f4}.vf-detail-stats .vf-finance-stat-card{height:100%}.vf-finance-stat-card{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;height:100%;box-shadow:0 6px 18px #15233c0d}.vf-finance-stat-card .ant-card-body{min-height:122px;padding:18px 20px}.vf-finance-stat-card .ant-statistic-title{color:var(--vf-muted);font-size:13px;font-weight:600}.vf-finance-stat-card .ant-statistic-content{color:var(--vf-ink);letter-spacing:-.04em;font-size:24px;font-weight:700}.vf-finance-stat-card.is-danger .ant-statistic-content{color:var(--vf-danger)}.vf-finance-stat-card.is-warning .ant-statistic-content{color:var(--vf-warning)}.vf-overview-card{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:14px;box-shadow:0 6px 18px #15233c0d}.vf-overview-card .ant-card-body{padding:24px}.vf-overview-header{border-bottom:1px solid var(--vf-line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:18px;display:flex}.vf-overview-header-left{align-items:center;gap:12px;display:flex}.vf-overview-header-icon{width:42px;height:42px;color:var(--vf-accent);background:#1677ff14;border-radius:10px;place-items:center;font-size:20px;display:grid}.vf-overview-header-title{color:var(--vf-ink);letter-spacing:-.02em;font-size:18px;font-weight:700;line-height:1.3;margin:0!important}.vf-overview-header-desc{color:var(--vf-muted);margin:3px 0 0;font-size:14px}.vf-overview-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px;display:grid}.vf-overview-tile{border:1px solid var(--vf-line);background:#fbfcfd;border-radius:12px;flex-direction:column;justify-content:space-between;min-height:108px;padding:16px 18px;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex}.vf-overview-tile:hover{background:var(--vf-surface);border-color:#cbd5e1;box-shadow:0 4px 12px #15233c0a}.vf-overview-tile-header{align-items:center;gap:8px;margin-bottom:10px;display:flex}.vf-overview-tile-icon{border-radius:7px;place-items:center;width:26px;height:26px;font-size:14px;display:grid}.vf-overview-tile-icon.is-customer{color:var(--vf-accent);background:#1677ff1a}.vf-overview-tile-icon.is-status{color:var(--vf-success);background:#389e0d1a}.vf-overview-tile-icon.is-calendar{color:#722ed1;background:#722ed11a}.vf-overview-tile-icon.is-clock{color:var(--vf-warning);background:#d46b081a}.vf-overview-tile-label{color:var(--vf-muted);letter-spacing:.05em;text-transform:uppercase;font-size:12px;font-weight:600}.vf-overview-tile-body{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.vf-overview-tile-value{color:var(--vf-ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:16px;font-weight:600}.vf-overview-tile .ant-tag{border-radius:6px;padding:2px 10px;font-size:13px;line-height:22px}.vf-customer-link{color:var(--vf-ink);align-items:center;gap:8px;font-weight:600;text-decoration:none;transition:color .15s;display:inline-flex}.vf-customer-link:hover{color:var(--vf-accent)}.vf-customer-avatar{color:#0958d9;letter-spacing:-.02em;background:linear-gradient(135deg,#e6f4ff 0%,#bae0ff 100%);border-radius:8px;flex-shrink:0;place-items:center;width:32px;height:32px;font-size:12px;font-weight:700;display:grid}.vf-customer-name{text-overflow:ellipsis;white-space:nowrap;max-width:170px;font-size:16px;font-weight:600;overflow:hidden}.vf-timeline-badge{letter-spacing:-.01em;border-radius:6px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.vf-timeline-badge.is-normal{color:#1d39c4;background:#f0f5ff}.vf-timeline-badge.is-urgent{color:#d46b08;background:#fff7e6}.vf-timeline-badge.is-overdue{color:#cf1322;background:#fff1f0}.vf-timeline-badge.is-done{color:#389e0d;background:#f6ffed}.vf-overview-timeline-bar{border:1px solid var(--vf-line);background:#f8fafc;border-radius:10px;margin-bottom:16px;padding:14px 18px}.vf-overview-timeline-meta{color:var(--vf-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;font-size:13.5px;display:flex}.vf-timeline-dates{font-variant-numeric:tabular-nums;color:var(--vf-muted)}.vf-timeline-status{font-size:13.5px;font-weight:600}.vf-timeline-status.is-normal{color:var(--vf-accent)}.vf-timeline-status.is-urgent{color:var(--vf-warning)}.vf-timeline-status.is-overdue{color:var(--vf-danger)}.vf-timeline-status.is-done{color:var(--vf-success)}.vf-overview-desc-section{border:1px solid var(--vf-line);background:#fafbfc;border-radius:12px;padding:18px 20px}.vf-overview-desc-title{color:var(--vf-muted);letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:10px;font-size:12.5px;font-weight:600;display:flex}.vf-overview-desc-content{color:var(--vf-ink);white-space:pre-wrap;word-break:break-word;margin:0;font-size:15px;line-height:1.7}.vf-overview-desc-empty{color:var(--vf-muted);margin:0;font-size:14px;font-style:italic}.vf-overview-footer-meta{color:var(--vf-muted);font-variant-numeric:tabular-nums;justify-content:flex-end;align-items:center;gap:8px;margin-top:16px;font-size:13px;display:flex}.vf-overview-footer-meta .vf-meta-sep{color:var(--vf-line)}.vf-project-hero{flex-direction:column;gap:10px;padding:4px 0 2px;display:flex}.vf-hero-breadcrumb{color:var(--vf-muted);align-items:center;gap:8px;font-size:13px;display:flex}.vf-hero-breadcrumb-link{color:var(--vf-muted);font-weight:500;text-decoration:none;transition:color .15s}.vf-hero-breadcrumb-link:hover{color:var(--vf-accent)}.vf-hero-breadcrumb-sep{color:#cbd5e1;font-size:12px}.vf-hero-breadcrumb-current{color:var(--vf-ink);font-weight:600}.vf-project-hero-main{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.vf-project-hero-left{align-items:center;gap:16px;min-width:0;display:flex}.vf-project-hero-icon{width:48px;height:48px;color:var(--vf-accent);background:linear-gradient(135deg,#1677ff1f 0%,#1677ff0a 100%);border:1px solid #1677ff2e;border-radius:12px;flex-shrink:0;place-items:center;font-size:22px;display:grid}.vf-project-hero-title-group{flex-direction:column;gap:6px;min-width:0;display:flex}.vf-project-hero-title-row{flex-wrap:wrap;align-items:center;gap:12px;min-width:0;max-width:100%;display:flex}.vf-project-hero-title{color:var(--vf-ink);letter-spacing:-.03em;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:24px;font-weight:800;line-height:1.2;overflow:hidden;margin:0!important}.vf-project-hero-title-row .ant-tag{flex-shrink:0}.vf-project-hero-meta{color:var(--vf-muted);flex-wrap:wrap;align-items:center;gap:14px;font-size:13.5px;display:flex}.vf-hero-meta-item{align-items:center;gap:6px;display:inline-flex}.vf-hero-meta-item strong{color:var(--vf-ink);font-weight:600}.vf-hero-meta-icon{color:var(--vf-muted);font-size:14px}.vf-project-tabs-container{background:var(--vf-surface);border:1px solid var(--vf-line);border-radius:12px;padding:4px 14px;box-shadow:0 2px 8px #15233c0a}.vf-project-tabs-container .ant-tabs{margin-bottom:0}.vf-project-tabs-container .ant-tabs-nav{margin-bottom:0!important}.vf-project-tabs-container .ant-tabs-nav:before{border-bottom:none!important}.vf-project-tabs-container .ant-tabs-tab{border-radius:8px;font-weight:500;transition:color .18s,background .18s;margin:0 4px!important;padding:10px 16px!important;font-size:14px!important}.vf-project-tabs-container .ant-tabs-tab:hover{color:var(--vf-accent)}.vf-project-tabs-container .ant-tabs-tab-active{font-weight:600}.vf-project-tabs-container .ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--vf-accent)!important}.vf-tab-label{align-items:center;gap:8px;display:inline-flex}.vf-tab-label .anticon{font-size:15px}.vf-form-grid{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.vf-form-grid>.ant-form-item-full{grid-column:1/-1}.vf-data-section{flex-direction:column;gap:14px;display:flex}.vf-finance-stat-card.is-success .ant-statistic-content{color:var(--vf-success)}.vf-screen>.ant-alert{margin:0}.vf-password-screen{max-width:680px;margin:0 auto}@media (max-width:991px){.vf-app-sider.ant-layout-sider{z-index:20;height:100dvh;position:fixed;box-shadow:10px 0 28px #15233c1f}.vf-mobile-backdrop{z-index:19;cursor:default;background:#15233c52;border:0;display:block;position:fixed;inset:0}.vf-app-sider.ant-layout-sider-collapsed .ant-layout-sider-children{display:none}.vf-app-sider.ant-layout-sider-zero-width{flex:0 0 0!important;width:0!important;min-width:0!important;max-width:0!important}.vf-mobile-menu{display:inline-flex}.vf-app-header{height:64px;padding:0 20px!important}.vf-app-content{padding:24px 20px}.vf-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:767px){.vf-app-header{padding:0 16px!important}.vf-form-grid{grid-template-columns:minmax(0,1fr)}.vf-form-grid>.ant-form-item-full{grid-column:1}.vf-user-meta{display:none}.vf-header-actions{margin-left:2px;padding-left:10px}.vf-app-content{padding:20px 16px 28px}.vf-dashboard-header{margin-bottom:4px!important}.vf-dashboard-header .ant-typography-title{font-size:20px}.vf-dashboard-grid{grid-template-columns:minmax(0,1fr);gap:16px;margin-bottom:16px}.vf-stat-grid{margin-bottom:16px;margin-inline:-6px!important}.vf-stat-grid>.ant-col{padding-inline:6px!important}.vf-stat-card .ant-card-body{padding:15px}.vf-stat-card .ant-statistic-content{letter-spacing:-.05em;white-space:nowrap;font-size:18px!important}.vf-dashboard-card .ant-card-head{padding:0 16px}.vf-dashboard-card .ant-card-body{padding:4px 16px 10px}.vf-list-row{gap:10px}.vf-list-row .ant-tag{white-space:normal;text-align:center;max-width:42%}.vf-project-section{gap:12px;margin-top:16px}.vf-project-table{border-radius:12px}.vf-project-table .ant-table{min-width:690px}.vf-overview-grid{grid-template-columns:minmax(0,1fr)}.vf-overview-card .ant-card-body{padding:16px}.vf-customer-name{max-width:100%}.vf-project-hero-title{font-size:20px}.vf-project-hero-icon{width:40px;height:40px;font-size:18px}.vf-project-tabs-container{padding:2px 8px}.vf-project-tabs-container .ant-tabs-tab{padding:8px 12px!important;font-size:13.5px!important}}.vf-settings-screen{flex-direction:column;gap:16px;display:flex}.vf-settings-tabs-wrapper{width:100%}.vf-settings-tabs .ant-tabs-nav{margin-bottom:20px!important}.vf-settings-tabs .ant-tabs-tab{padding:10px 16px!important;font-size:14.5px!important}.vf-settings-tabs .ant-tabs-tab-active .ant-tabs-tab-btn{font-weight:600;color:var(--vf-accent)!important}.vf-docs-container{flex-direction:column;gap:24px;display:flex}.vf-docs-hero{border:1px solid var(--vf-line);background:linear-gradient(#fff 0%,#f8fafc 100%);border-radius:12px;padding:24px 24px 20px;box-shadow:0 1px 3px #00000005}.vf-docs-hero-header{margin-bottom:20px}.vf-docs-hero-badge{gap:8px;margin-bottom:10px;display:flex}.vf-docs-hero-title{color:var(--vf-ink)!important;margin:0 0 8px!important;font-size:22px!important;font-weight:700!important}.vf-docs-hero-desc{max-width:820px;color:#4b5563!important;margin:0!important;font-size:13.5px!important;line-height:1.6!important}.vf-docs-specs-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.vf-docs-spec-card{background:var(--vf-surface);border:1px solid #edf0f4;border-radius:8px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.vf-docs-spec-label{text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:11px;font-weight:600}.vf-docs-spec-value-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.vf-docs-code-pill{color:#0958d9;word-break:break-all;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;padding:2px 8px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.vf-docs-card{background:var(--vf-surface);border:1px solid var(--vf-line);border-radius:12px;margin-bottom:20px;overflow:hidden;box-shadow:0 1px 3px #00000005}.vf-docs-card .ant-card-head{border-bottom:1px solid #edf0f4;min-height:auto!important;padding:20px 24px!important}.vf-docs-card .ant-card-body{padding:24px!important}.vf-docs-card .ant-card-head-title{padding:0!important}.vf-card-title-lockup{align-items:center;gap:12px;display:flex}.vf-card-title-icon{color:var(--vf-accent);background:#e6f0ff;border-radius:8px;justify-content:center;align-items:center;padding:8px;font-size:18px;display:flex}.vf-client-selector-row{margin-bottom:16px;overflow-x:auto}.vf-client-badge{color:#0958d9;background:#e6f4ff;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:600}.vf-client-path-box{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;align-items:flex-start;gap:12px;margin-bottom:16px;padding:12px 14px;display:flex}.vf-code-container{background:#0f172a;border:1px solid #1e293b;border-radius:10px;margin-bottom:16px;overflow:hidden}.vf-code-header{background:#1e293b;border-bottom:1px solid #334155;justify-content:space-between;align-items:center;padding:8px 14px;display:flex}.vf-code-meta{align-items:center;gap:6px;display:flex}.vf-code-dot{border-radius:50%;width:9px;height:9px}.vf-code-dot.is-red{background:#ef4444}.vf-code-dot.is-yellow{background:#f59e0b}.vf-code-dot.is-green{background:#10b981}.vf-code-title{color:#94a3b8;margin-left:6px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px}.vf-code-content{color:#e2e8f0;margin:0;padding:16px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:13px;line-height:1.6;overflow-x:auto}.vf-client-notes{border-left:3px solid var(--vf-accent);background:#f8fafc;border-radius:0 6px 6px 0;padding:10px 14px}.vf-architecture-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.vf-arch-step-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:18px 16px;transition:transform .2s,box-shadow .2s;position:relative}.vf-arch-step-number{color:#cbd5e1;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:18px;font-weight:800;position:absolute;top:12px;right:14px}.vf-arch-step-icon{width:36px;height:36px;color:var(--vf-accent);background:#e6f0ff;border-radius:8px;justify-content:center;align-items:center;margin-bottom:12px;font-size:18px;display:flex}.vf-arch-step-title{color:var(--vf-ink);margin-bottom:6px;font-size:14px;display:block}.vf-arch-step-desc{color:#64748b!important;margin:0!important;font-size:12.5px!important;line-height:1.5!important}.vf-catalog-toolbar{margin-bottom:20px}.vf-search-input{border-radius:8px}.vf-category-chips{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.vf-category-chip{background:var(--vf-surface);color:#475569;cursor:pointer;border:1px solid #e2e8f0;border-radius:20px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.vf-category-chip:hover{color:var(--vf-accent);background:#f8fbff;border-color:#93c5fd}.vf-category-chip.is-active{background:var(--vf-accent);color:#fff;border-color:var(--vf-accent)}.vf-category-chip-count{color:#64748b;background:#f1f5f9;border-radius:10px;padding:1px 6px;font-size:11px}.vf-category-chip.is-active .vf-category-chip-count{color:#fff;background:#ffffff40}.vf-tools-grid{flex-direction:column;gap:12px;display:flex}.vf-tool-item-card{background:var(--vf-surface);border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px;transition:all .15s}.vf-tool-item-card:hover{border-color:#93c5fd;box-shadow:0 2px 8px #1677ff0f}.vf-tool-item-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;display:flex}.vf-tool-item-title-group{flex-direction:column;gap:4px;display:flex}.vf-tool-item-name-row{align-items:center;gap:6px;display:flex}.vf-tool-name-code{color:#0958d9;background:#e6f4ff;border-radius:6px;padding:3px 8px;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:13.5px;font-weight:700}.vf-tool-title-text{color:var(--vf-ink);font-size:13.5px}.vf-tool-badges{align-items:center;gap:6px;display:flex}.vf-tool-desc{color:#475569!important;margin-bottom:8px!important;font-size:13px!important;line-height:1.55!important}.vf-tool-collapse .ant-collapse-header{padding:4px 0!important}.vf-docs-security-section{margin-top:8px;margin-bottom:20px}.vf-security-card{background:var(--vf-surface);border:1px solid #e2e8f0;border-radius:10px;height:100%;padding:18px 16px}.vf-security-card-icon{border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:12px;font-size:16px;display:flex}.vf-security-card-icon.is-blue{color:var(--vf-accent);background:#e6f0ff}.vf-security-card-icon.is-amber{color:var(--vf-warning);background:#fff7e6}.vf-security-card-icon.is-green{color:var(--vf-success);background:#f6ffed}.vf-security-card-title{color:var(--vf-ink);margin-bottom:6px;font-size:14px;display:block}.vf-security-card-desc{color:#64748b!important;margin:0!important;font-size:12.5px!important;line-height:1.55!important}.vf-stat-token-card{background:var(--vf-surface);border:1px solid #e2e8f0;border-radius:8px;padding:14px 16px}.vf-stat-token-label{color:#64748b;margin-bottom:4px;font-size:12px;display:block}.vf-stat-token-value{color:var(--vf-ink);align-items:center;font-size:22px;font-weight:700;display:flex}.vf-token-created-alert{background:#f6ffed;border:1px solid #b7eb8f;border-radius:8px}.vf-token-tip-box{background:#f0f7ff;border-radius:6px;align-items:flex-start;gap:10px;margin-top:16px;padding:10px 12px;display:flex}@media (max-width:767px){.vf-docs-hero{padding:16px}.vf-docs-hero-title{font-size:18px!important}.vf-docs-card .ant-card-head{padding:12px 14px}.vf-docs-card .ant-card-body{padding:14px}.vf-tool-item-header{flex-direction:column;align-items:flex-start}.vf-tool-badges{justify-content:flex-start;width:100%}}@media (prefers-reduced-motion:reduce){.vf-stat-card{transition:none}.vf-stat-card:hover{transform:none}.vf-overview-tile{transition:none}.vf-overview-tile:hover{transform:none}}.vf-bug-report-card .ant-card-head{padding:0 20px}.vf-bug-section-container{flex-direction:column;gap:16px;display:flex}.vf-bug-box{border:1px solid var(--vf-line);background:var(--vf-surface);border-radius:10px;transition:all .2s ease-in-out;overflow:hidden;box-shadow:0 2px 8px #15233c0a}.vf-bug-box:hover{box-shadow:0 4px 14px #15233c12}.vf-bug-box-header{justify-content:space-between;align-items:center;padding:9px 14px;font-size:13px;display:flex}.vf-bug-box-title{letter-spacing:.02em;align-items:center;gap:8px;font-size:12.5px;font-weight:700;display:flex}.vf-bug-box-body{color:var(--vf-ink);padding:13px 15px;font-size:14px;line-height:1.68}.vf-bug-box.is-steps{background:#f8fafc;border-color:#cbd5e1 #cbd5e1 #cbd5e1 #1677ff;border-left-style:solid;border-left-width:4px}.vf-bug-box.is-steps .vf-bug-box-header{background:#edf2f7;border-bottom:1px solid #e2e8f0}.vf-bug-box.is-steps .vf-bug-box-title{color:#1e293b}.vf-bug-box.is-actual{background:#fff8f8;border-color:#ffccc7 #ffccc7 #ffccc7 #cf1322;border-left-style:solid;border-left-width:4px}.vf-bug-box.is-actual .vf-bug-box-header{background:#fff1f0;border-bottom:1px solid #ffa39e}.vf-bug-box.is-actual .vf-bug-box-title{color:#a8071a}.vf-bug-box.is-actual .vf-bug-box-body{color:#43040e}.vf-bug-box.is-expected{background:#fbfefb;border-color:#d9f7be #d9f7be #d9f7be #389e0d;border-left-style:solid;border-left-width:4px}.vf-bug-box.is-expected .vf-bug-box-header{background:#f6ffed;border-bottom:1px solid #b7eb8f}.vf-bug-box.is-expected .vf-bug-box-title{color:#237804}.vf-bug-box.is-expected .vf-bug-box-body{color:#0b3400}.vf-bug-box.is-feedback{background:#fbfdff;border-color:#adc6ff #adc6ff #adc6ff #1677ff;border-left-style:solid;border-left-width:4px}.vf-bug-box.is-feedback .vf-bug-box-header{background:#f0f5ff;border-bottom:1px solid #adc6ff}.vf-bug-box.is-feedback .vf-bug-box-title{color:#0958d9}.vf-bug-box.is-note{background:#fffdf5;border-color:#ffe58f #ffe58f #ffe58f #faad14;border-left-style:solid;border-left-width:4px}.vf-bug-box.is-note .vf-bug-box-header{background:#fffbe6;border-bottom:1px solid #ffe58f}.vf-bug-box.is-note .vf-bug-box-title{color:#ad6800}.vf-bug-steps-list{flex-direction:column;gap:9px;display:flex}.vf-bug-step-item{align-items:flex-start;gap:11px;display:flex}.vf-bug-step-number{color:#1d4ed8;background:#dbeafe;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;margin-top:1px;font-size:11px;font-weight:700;display:flex}.vf-bug-step-text{word-break:break-word;flex:1;min-width:0}.vf-btn-status.ant-btn{font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1)}.vf-btn-status.vf-btn-closed.ant-btn{color:#237804;background:#f6ffed;border-color:#b7eb8f}.vf-btn-status.vf-btn-closed.ant-btn:hover{box-shadow:0 2px 8px #389e0d59;color:#fff!important;background:#389e0d!important;border-color:#389e0d!important}.vf-btn-status.vf-btn-rejected.ant-btn{color:#cf1322;background:#fff1f0;border-color:#ffa39e}.vf-btn-status.vf-btn-rejected.ant-btn:hover{box-shadow:0 2px 8px #cf132259;color:#fff!important;background:#cf1322!important;border-color:#cf1322!important}.vf-btn-status.vf-btn-reopened.ant-btn{color:#d46b08;background:#fff7e6;border-color:#ffd591}.vf-btn-status.vf-btn-reopened.ant-btn:hover{box-shadow:0 2px 8px #d46b0859;color:#fff!important;background:#d46b08!important;border-color:#d46b08!important}.vf-btn-status.vf-btn-fixed.ant-btn{color:#08979c;background:#e6fffb;border-color:#87e8de}.vf-btn-status.vf-btn-fixed.ant-btn:hover{box-shadow:0 2px 8px #08979c59;color:#fff!important;background:#08979c!important;border-color:#08979c!important}.vf-btn-status.vf-btn-retest.ant-btn{color:#531dab;background:#f9f0ff;border-color:#d3adf7}.vf-btn-status.vf-btn-retest.ant-btn:hover{box-shadow:0 2px 8px #531dab59;color:#fff!important;background:#531dab!important;border-color:#531dab!important}.vf-btn-status.vf-btn-in-progress.ant-btn{color:#0958d9;background:#e6f4ff;border-color:#91caff}.vf-btn-status.vf-btn-in-progress.ant-btn:hover{box-shadow:0 2px 8px #1677ff59;color:#fff!important;background:#1677ff!important;border-color:#1677ff!important}.vf-timeline-scroll-container{scrollbar-width:thin;scrollbar-color:transparent transparent;max-height:480px;padding-top:4px;padding-right:6px;transition:scrollbar-color .2s;overflow:hidden auto}.vf-timeline-scroll-container:hover{scrollbar-color:#00000029 transparent}.vf-timeline-scroll-container::-webkit-scrollbar{width:4px}.vf-timeline-scroll-container::-webkit-scrollbar-track{background:0 0}.vf-timeline-scroll-container::-webkit-scrollbar-thumb{background:0 0;border-radius:4px;transition:background .2s}.vf-timeline-scroll-container:hover::-webkit-scrollbar-thumb{background:#00000029}.vf-timeline-scroll-container::-webkit-scrollbar-thumb:hover{background:#00000052}
