@import"https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700&display=swap";html,body,#root{margin:0;min-height:100%;background:var(--sx-bg);color:var(--sx-text);font-family:Manrope,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}:root{--sx-primary: #0071e3;--sx-primary-soft: rgba(0, 113, 227, .12);--sx-sidebar: #f5f5f7;--sx-login: #f5f5f7;--sx-bg: #f5f5f7;--sx-surface: #ffffff;--sx-text: #1d1d1f;--sx-muted: #6e6e73;--sx-line: rgba(0, 0, 0, .08);--sx-shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .06);--sx-radius: 16px;--sx-radius-sm: 12px}.skip-link{position:absolute;left:-999px;top:8px;z-index:1100;padding:8px 14px;background:var(--sx-primary);color:#fff;text-decoration:none;border-radius:999px;font-weight:600}.skip-link:focus{left:16px}.offline-banner{margin:0;border-radius:0;z-index:100}:focus-visible{outline:2px solid var(--sx-primary);outline-offset:2px}.app-shell{min-height:100vh;background:var(--sx-bg)}.app-sider{background:#f5f5f7db!important;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-right:1px solid var(--sx-line)}.brand{color:var(--sx-text);font-weight:700;letter-spacing:-.02em;padding:22px 20px 14px;font-size:17px}.brand-logo{display:block;max-width:148px;max-height:40px;width:auto;height:auto;margin-bottom:10px;object-fit:contain}.app-menu.ant-menu-light{background:transparent!important;border-inline-end:none!important;padding:0 10px 12px}.sider-hints{display:flex;align-items:center;gap:10px;margin:8px 12px 16px;padding:10px 12px;border-radius:10px;background:#0071e30f;border:1px solid rgba(0,113,227,.12)}.sider-hints-icon{color:var(--sx-primary);font-size:16px}.sider-hints-label{flex:1;font-size:13px;font-weight:600}.hint-wrap{display:inline-block;max-width:100%}.hint-wrap--block{display:block;width:100%}.hints-on .hint-label{border-bottom:1px dashed rgba(0,113,227,.35);cursor:help}.hints-on input[title],.hints-on textarea[title],.hints-on .ant-select-selector[title]{cursor:help}.app-menu .ant-menu-item-group-title{padding:16px 12px 6px!important;font-size:11px!important;letter-spacing:.06em;text-transform:uppercase;color:var(--sx-muted)!important;font-weight:600}.app-menu .ant-menu-item{border-radius:10px!important;margin-inline:0!important;width:100%!important;height:40px!important;line-height:40px!important;color:var(--sx-text)!important;font-weight:500}.app-menu .ant-menu-item a{color:inherit}.app-menu .ant-menu-item-selected{background:var(--sx-primary-soft)!important;color:var(--sx-primary)!important;font-weight:600}.app-menu .ant-menu-item:hover{background:#0000000a!important}.topbar{background:#ffffffb8!important;backdrop-filter:saturate(180%) blur(18px);-webkit-backdrop-filter:saturate(180%) blur(18px);display:flex;align-items:center;justify-content:space-between;padding:0 28px!important;height:56px!important;line-height:56px!important;border-bottom:1px solid var(--sx-line)}.topbar-title{font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--sx-text)}.topbar-left{display:flex;align-items:center;gap:4px;min-width:0}.nav-drawer .ant-drawer-header{border-bottom:1px solid var(--sx-line)}.nav-drawer .ant-drawer-title{font-weight:700;letter-spacing:-.02em}.app-empty{padding:28px 12px;color:var(--sx-muted)}.app-empty .ant-empty-description{color:var(--sx-muted);font-weight:500}.ant-tabs-top>.ant-tabs-nav{margin-bottom:16px}.ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn{color:var(--sx-primary)!important;font-weight:700}.ant-tabs .ant-tabs-ink-bar{background:var(--sx-primary)!important;height:2px!important;border-radius:2px}@media(min-width:768px)and (max-width:1024px){.content{padding:22px 20px 40px;max-width:100%}.page-header{flex-wrap:wrap}.ant-table-wrapper{overflow-x:auto}.ant-table-wrapper .ant-table{min-width:640px}.ant-modal{max-width:calc(100vw - 32px)!important}.gantt-label{width:120px;flex:0 0 120px}.touch-target{min-height:44px;min-width:44px}}@media(max-width:767px){.topbar{padding:0 12px!important}.content{padding:16px 14px 36px}.page-title{font-size:28px!important}.page-actions{width:100%}.page-actions .ant-btn{flex:1 1 auto;min-height:44px}.ant-modal{top:8px!important;max-width:calc(100vw - 16px)!important;padding-bottom:0}.ant-modal-body{max-height:calc(100vh - 120px);overflow-y:auto}.filter-drawer-trigger{min-height:44px}.ant-table-wrapper .ant-table{min-width:520px}}.content{padding:28px 32px 48px;max-width:none;min-width:0;overflow-x:auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}.page-header h1,.page-title{margin:0!important;font-size:34px!important;line-height:1.1!important;font-weight:700!important;letter-spacing:-.035em!important;color:var(--sx-text)!important}.page-subtitle{margin:6px 0 0;color:var(--sx-muted);font-size:15px;font-weight:500}.page-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}.page-actions .ant-btn{white-space:nowrap}.surface{background:var(--sx-surface);border-radius:var(--sx-radius);box-shadow:var(--sx-shadow);border:1px solid var(--sx-line)}.surface-pad{padding:20px 22px}.section-title{margin:28px 0 12px!important;font-size:20px!important;font-weight:700!important;letter-spacing:-.02em!important;color:var(--sx-text)!important}.section-title:first-of-type{margin-top:8px!important}.metric-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:0;overflow:hidden}.metric-cell{padding:20px 22px;border-right:1px solid var(--sx-line)}.metric-cell:last-child{border-right:none}.metric-cell.metric-link{cursor:pointer}.metric-cell.metric-link:hover{background:#00000008}.metric-label{font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--sx-muted);margin-bottom:8px}.metric-value{font-size:28px;font-weight:700;letter-spacing:-.03em;color:var(--sx-text);line-height:1}.pulse-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}@media(max-width:960px){.metric-strip{grid-template-columns:1fr 1fr}.metric-cell:nth-child(2){border-right:none}.metric-cell:nth-child(1),.metric-cell:nth-child(2){border-bottom:1px solid var(--sx-line)}.pulse-grid{grid-template-columns:1fr}.content{padding:20px 16px 40px}.page-header{flex-direction:column;align-items:flex-start}}.pulse-hero{padding:24px;min-height:220px;display:flex;flex-direction:column;justify-content:space-between;background:radial-gradient(1200px 280px at 10% -40%,var(--sx-primary-soft),transparent 55%),var(--sx-surface)}.pulse-kicker{font-size:13px;font-weight:600;color:var(--sx-muted)}.pulse-project{margin:8px 0 4px;font-size:26px;font-weight:700;letter-spacing:-.03em}.pulse-meta{color:var(--sx-muted);font-size:13px;margin-bottom:18px}.pulse-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.pulse-stat strong{display:block;font-size:22px;letter-spacing:-.02em;font-weight:700}.pulse-stat span{font-size:12px;color:var(--sx-muted);font-weight:600}.traffic-dot{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.traffic-dot:before{content:"";width:10px;height:10px;border-radius:50%;background:currentColor}.traffic-red{color:#ff3b30}.traffic-yellow{color:#ff9500}.traffic-green{color:#34c759}.quiet-list .ant-list-item{padding:14px 4px!important;border-block-end:1px solid var(--sx-line)!important}.details-block{margin-top:12px}.details-block>summary{cursor:pointer;list-style:none;font-weight:600;color:var(--sx-primary);padding:8px 0;-webkit-user-select:none;user-select:none}.details-block>summary::-webkit-details-marker{display:none}.ant-table-wrapper .ant-table{background:transparent}.ant-table-wrapper{background:var(--sx-surface);border-radius:var(--sx-radius);box-shadow:var(--sx-shadow);border:1px solid var(--sx-line);overflow:auto;max-width:100%}.ant-table-wrapper .ant-table-content,.ant-table-wrapper .ant-table-body{overflow-x:auto!important}.ant-table-wrapper table{width:max-content;min-width:100%}.ant-table-thead>tr>th{background:#fafafa!important;font-weight:600!important;color:var(--sx-muted)!important;font-size:12px!important;letter-spacing:.02em;white-space:nowrap}.ant-table-cell .ant-btn{white-space:nowrap;flex-shrink:0}.ant-table-cell:has(.ant-btn){overflow:visible}.ant-table-cell:has(.ant-btn)>span{display:flex;flex-direction:column;flex-wrap:nowrap;gap:6px;align-items:stretch}.ant-table-cell:has(.ant-btn)>span .ant-btn{width:100%}.ant-btn-primary{box-shadow:none!important;font-weight:600}.ant-card{border-radius:var(--sx-radius-sm)!important;border-color:var(--sx-line)!important;box-shadow:none!important}.ant-modal .ant-modal-content{border-radius:18px!important;overflow:hidden}.ant-tabs .ant-tabs-nav:before{border-bottom-color:var(--sx-line)!important}.ant-tabs .ant-tabs-tab{font-weight:600}.gantt-wrap{overflow:auto;border:1px solid var(--sx-line);background:var(--sx-surface);max-height:420px;border-radius:var(--sx-radius-sm)}.gantt-scale,.gantt-row{display:flex;min-width:min-content;align-items:stretch}.gantt-label{width:160px;flex:0 0 160px;position:sticky;left:0;z-index:1;background:#fff;padding:6px 10px;border-right:1px solid var(--sx-line);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gantt-scale .gantt-label{background:#fafafa;font-weight:600}.gantt-track{position:relative;height:34px;flex:0 0 auto}.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:#ff4d4f;opacity:.85;pointer-events:none;z-index:2}.gantt-tick{position:absolute;top:0;bottom:0;width:0;border-left:1px solid #f0f0f0;box-sizing:border-box;pointer-events:none;overflow:visible}.gantt-tick-label{position:absolute;left:4px;top:8px;font-size:11px;line-height:1;color:var(--sx-muted);white-space:nowrap}.gantt-tick-end .gantt-tick-label{left:auto;right:4px}.gantt-bar{position:absolute;top:8px;height:18px;border-radius:6px;overflow:hidden}.gantt-bar-interactive{cursor:grab;touch-action:none;overflow:visible}.gantt-bar-interactive:active,.gantt-bar-dragging{cursor:grabbing;opacity:.92;z-index:2}.gantt-bar-handle{position:absolute;top:0;right:-3px;width:8px;height:100%;cursor:ew-resize;border-radius:0 6px 6px 0;background:#ffffff59}.gantt-bar-plan{background:#0071e3}.gantt-bar-critical{background:#ff3b30}.gantt-bar-lagging{background:#fa8c16}.gantt-bar-done{background:#389e0d}.gantt-bar-critical-done{box-shadow:inset 5px 0 #ff3b30}.gantt-bar-outdoor{background:#13c2c2}.gantt-bar-pct{height:100%}.gantt-bar-plan .gantt-bar-pct{background:#004db3}.gantt-bar-critical .gantt-bar-pct{background:#c41e16}.gantt-bar-lagging .gantt-bar-pct{background:#d46b08}.gantt-bar-done .gantt-bar-pct{background:#237804}.gantt-bar-outdoor .gantt-bar-pct{background:#08979c}@media print{body *{visibility:hidden}.gantt-print-root,.gantt-print-root *{visibility:visible}.gantt-print-root{position:absolute;left:0;top:0;width:100%}.gantt-print-a3{page:gantt-a3}.gantt-print-a1{page:gantt-a1}}@page gantt-a3{size:A3 landscape;margin:12mm}@page gantt-a1{size:A1 landscape;margin:12mm}.gantt-legend{display:flex;gap:16px;margin:8px 0 12px;font-size:12px;color:var(--sx-muted)}.gantt-swatch{display:inline-block;width:14px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(900px 420px at 15% 0%,rgba(0,113,227,.16),transparent 60%),radial-gradient(700px 380px at 90% 100%,rgba(52,199,89,.1),transparent 55%),linear-gradient(180deg,#fbfbfd,#f5f5f7)}.login-card{width:min(400px,100%);border-radius:22px!important;border:1px solid var(--sx-line)!important;box-shadow:var(--sx-shadow)!important;padding:8px 4px}.login-logo{display:block;max-width:200px;max-height:64px;width:auto;height:auto;margin:0 auto 12px;object-fit:contain}.login-brand{text-align:center;font-size:28px;font-weight:700;letter-spacing:-.03em;margin:0 0 6px}.login-tagline{text-align:center;color:var(--sx-muted);margin:0 0 20px;font-size:14px}
