:root{--g-arrow-color: #1f2937;--g-bar-color: #fff;--g-bar-border: #fff;--g-tick-color-thick: #ededed;--g-tick-color: #f3f3f3;--g-actions-background: #f3f3f3;--g-border-color: #ebeff2;--g-text-muted: #7c7c7c;--g-text-light: #fff;--g-text-dark: #171717;--g-progress-color: #dbdbdb;--g-handle-color: #37352f;--g-weekend-label-color: #dcdce4;--g-expected-progress: #c4c4e9;--g-header-background: #fff;--g-row-color: #fdfdfd;--g-row-border-color: #c7c7c7;--g-today-highlight: #37352f;--g-popup-actions: #ebeff2;--g-weekend-highlight-color: #f7f7f7}html[data-theme=dark]{--g-arrow-color: #e5e5e5;--g-bar-color: #2a2a2a;--g-bar-border: #3a3a3a;--g-tick-color-thick: #1a1a1a;--g-tick-color: #0a0a0a;--g-actions-background: #1a1a1a;--g-border-color: #2a2a2a;--g-text-muted: #999999;--g-text-light: #ffffff;--g-text-dark: #f5f5f5;--g-progress-color: #4a4a4a;--g-handle-color: #d0d0d0;--g-weekend-label-color: #3a3a3a;--g-expected-progress: #5a5a5a;--g-header-background: #0a0a0a;--g-row-color: #141414;--g-row-border-color: #2a2a2a;--g-today-highlight: #999999;--g-popup-actions: #1a1a1a;--g-weekend-highlight-color: #0f0f0f}.gantt-container{line-height:14.5px;position:relative;overflow:auto;font-size:12px;height:var(--gv-grid-height);width:100%;border-radius:8px;isolation:isolate}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:var(--g-header-background);box-shadow:0 10px 24px -3px #0003;padding:10px;border-radius:5px;width:max-content;z-index:1000}.gantt-container .popup-wrapper .title{margin-bottom:2px;color:var(--g-text-dark);font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);font-size:.8rem;margin-bottom:5px}.gantt-container .popup-wrapper .details{color:var(--g-text-muted);font-size:.7rem}.gantt-container .popup-wrapper .actions{margin-top:10px;margin-left:3px}.gantt-container .popup-wrapper .action-btn{border:none;padding:5px 8px;background-color:var(--g-popup-actions);border-right:1px solid var(--g-border-color)}.gantt-container .popup-wrapper .action-btn:hover{filter:brightness(97%)}.gantt-container .popup-wrapper .action-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-container .popup-wrapper .action-btn:last-child{border-right:none;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-container .grid-header{height:calc(var(--gv-lower-header-height) + var(--gv-upper-header-height) + 10px);background-color:var(--g-header-background);position:sticky;top:0;left:0;border-bottom:1px solid var(--g-row-border-color);z-index:1000}.gantt-container .lower-text,.gantt-container .upper-text{text-anchor:middle}.gantt-container .upper-header{height:var(--gv-upper-header-height)}.gantt-container .lower-header{height:var(--gv-lower-header-height)}.gantt-container .lower-text{font-size:12px;position:absolute;width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);align-content:center;text-align:center;color:var(--g-text-muted)}.gantt-container .upper-text{position:absolute;width:fit-content;font-weight:500;font-size:14px;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66)}.gantt-container .current-upper{position:sticky;left:0!important;padding-left:17px;background:var(--g-header-background)}.gantt-container .side-header{position:sticky;top:0;right:0;float:right;z-index:1000;line-height:20px;font-weight:400;width:max-content;margin-left:auto;padding-right:10px;padding-top:10px;background:var(--g-header-background);display:flex}.gantt-container .side-header *{transition-property:background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:var(--g-actions-background);border-radius:.5rem;border:none;padding:5px 8px;color:var(--g-text-dark);font-size:14px;letter-spacing:.02em;font-weight:420;box-sizing:content-box;margin-right:5px}.gantt-container .side-header *:last-child{margin-right:0}.gantt-container .side-header *:hover{filter:brightness(97.5%)}.gantt-container .side-header select{width:60px;padding-top:2px;padding-bottom:2px}.gantt-container .side-header select:focus{outline:none}.gantt-container .date-range-highlight{background-color:var(--g-progress-color);border-radius:12px;height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);position:absolute}.gantt-container .current-highlight{position:absolute;background:var(--g-today-highlight);width:1px;z-index:999}.gantt-container .current-ball-highlight{position:absolute;background:var(--g-today-highlight);z-index:1001;border-radius:50%}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{position:absolute;top:0;left:0;opacity:0;z-index:1000;background:var(--g-weekend-label-color);border-radius:5px;padding:2px 5px}.gantt-container .holiday-label.show{opacity:100}.gantt-container .extras{position:sticky;left:0}.gantt-container .extras .adjust{position:absolute;left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:var(--g-actions-background);color:var(--g-text-light);border:none;padding:8px;border-radius:3px}.gantt-container .hide{display:none}.gantt{user-select:none;-webkit-user-select:none;position:absolute}.gantt .grid-background{fill:none}.gantt .grid-row{fill:var(--g-row-color)}.gantt .row-line{stroke:var(--g-border-color)}.gantt .tick{stroke:var(--g-tick-color);stroke-width:.4}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s ease}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:transparent;stroke:var(--g-bar-border);stroke-width:1;stroke-dasharray:5}:is(.gantt .bar-invalid)~.bar-label{fill:var(--g-text-light)}.gantt .bar-label{fill:var(--g-text-dark);dominant-baseline:central;font-family:Helvetica;font-size:13px;font-weight:400}.gantt .bar-label.big{fill:var(--g-text-dark);text-anchor:start}.gantt .handle{fill:var(--g-handle-color);opacity:0;transition:opacity .3s ease}.gantt .handle.active,.gantt .handle.visible{cursor:ew-resize;opacity:1}.gantt .handle.progress{fill:var(--g-text-muted)}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper .bar{outline:1px solid var(--g-row-border-color);border-radius:3px}.gantt .bar-wrapper:hover .bar{transition:transform .3s ease}.gantt .bar-wrapper:hover .date-range-highlight{display:block}.gantt .grid-column{fill:transparent;pointer-events:all}.gantt .grid-column:hover{fill:var(--g-weekend-highlight-color);transition:fill .1s ease}:root{color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{margin:0;min-height:100vh;color:#1a1a1a;background-color:#f7f7f8;background-image:linear-gradient(180deg,#eef3fbed,#f7f7f8f2 320px,#f7f7f8eb),url(/assets/background-DbCfXklx.png);background-position:top,85% top;background-repeat:no-repeat,no-repeat;background-size:auto,130% auto;background-attachment:scroll,fixed}.page{max-width:460px;margin:0 auto;padding:24px 20px 40px}.page.wide{max-width:920px}.topnav{display:flex;align-items:center;gap:20px;padding:12px 20px;background:#fff;border-bottom:1px solid #e5e5e5}.impersonationBanner{display:flex;align-items:center;gap:12px;padding:8px 20px;background:#fdf3e3;color:#7a4a00;border-bottom:1px solid #f0d9a8;font-size:14px}.authShell{min-height:100vh;display:flex;align-items:stretch;background:#153e73}.authArt{flex:1;display:none}.authCard{flex:1;display:flex;align-items:center;justify-content:center;background:#f7f7f8;padding:20px}.authCard .page{width:100%;background:#fff;border-radius:16px;padding:32px 28px;box-shadow:0 10px 30px #153e731f}@media (min-width: 760px){.authArt{display:block;max-width:460px}}.topnav a{color:#1a5fb4;text-decoration:none;font-weight:600}.navLink{color:#666;text-decoration:none;font-weight:600;font-size:14px;padding:6px 0;border-bottom:2px solid transparent}.navLink:hover{color:#1a5fb4}.navLink-active{color:#1a5fb4;border-bottom-color:#1a5fb4}.topnavLinks{display:flex;gap:20px}.bottomnav{display:none}@media (max-width: 700px){.topnavLinks{display:none}.bottomnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;background:#fff;border-top:1px solid #e5e5e5;padding-bottom:env(safe-area-inset-bottom,0px)}.page{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}}.bottomNavLink{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px 6px;color:#888;text-decoration:none;font-size:11px;font-weight:600}.bottomNavLink-active{color:#1a5fb4}.bottomNavIcon{font-size:20px;line-height:1}.iconBtn{position:relative;background:none;border:none;cursor:pointer;font-size:18px;padding:4px 6px;line-height:1}.iconBtnDot{position:absolute;top:2px;right:4px;width:8px;height:8px;border-radius:50%;background:#c0392b;border:1.5px solid #fff}.identityMenu{position:relative}.identityTrigger{display:flex;align-items:center;gap:8px;background:none;border:none;cursor:pointer;padding:4px 6px;border-radius:8px}.identityTrigger:hover{background:#f0f4fa}.avatarBadge{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#1a5fb4;color:#fff;font-size:12px;font-weight:700;flex-shrink:0}.identityName{font-size:14px;font-weight:600;color:#1a1a1a;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chevron{font-size:9px;color:#666}.identityDropdown{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid #e5e5e5;border-radius:8px;box-shadow:0 4px 16px #0000001a;min-width:160px;overflow:hidden;z-index:10}.identityDropdownItem{display:block;width:100%;text-align:left;background:none;border:none;cursor:pointer;padding:10px 14px;font-size:14px;color:#1a1a1a}.identityDropdownItem:hover{background:#f0f4fa}.notifDropdown{min-width:280px;max-width:340px;max-height:380px;overflow-y:auto}.notifEmpty{padding:14px;margin:0}.notifItem{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid #f0f0f0;cursor:pointer;padding:10px 14px}.notifItem:last-child{border-bottom:none}.notifItem:hover{background:#f0f4fa}.notifItem-unread{background:#eef5ff}.notifTitle{font-size:13px;font-weight:700;color:#1a1a1a}.notifBody{font-size:12px;color:#444;margin-top:2px}.notifTime{font-size:11px;color:#888;margin-top:4px}button.link{background:none;border:none;color:#666;cursor:pointer;font-size:14px}button.fileLink{background:none;border:none;padding:0;color:#1a5fb4;cursor:pointer;font-size:inherit;text-align:left}button.fileLink:hover{text-decoration:underline}.switch{position:relative;display:inline-block;width:40px;height:22px;vertical-align:middle}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background-color:#ccc;border-radius:22px;transition:background-color .15s}.switch .slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;bottom:3px;background-color:#fff;border-radius:50%;transition:transform .15s}.switch input:checked+.slider{background-color:#1a5fb4}.switch input:checked+.slider:before{transform:translate(18px)}.field{display:block;margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:#444}.field input,.field textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #ccc;border-radius:8px;font-size:15px}button.primary{padding:10px 18px;background:#1a5fb4;color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer}button.primary:disabled{opacity:.6;cursor:default}button.ghost{padding:8px 14px;background:#fff;color:#1a1a1a;border:1px solid #ccc;border-radius:8px;cursor:pointer}.error{color:#c0392b;font-size:14px;margin:8px 0}.note{color:#666;font-size:13px}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid #eee;font-size:14px}tr.clickable{cursor:pointer}tr.clickable:hover{background:#f0f4fa}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge.qualified{background:#e3f6e5;color:#1e7d32}.badge.not-qualified{background:#fdeaea;color:#b3261e}.badge.pending{background:#eee;color:#555}video{width:100%;max-width:480px;border-radius:12px;background:#000}.jobsMap{width:100%;height:360px;border-radius:12px;border:1px solid #e5e5e5}th.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.statsRow{display:flex;gap:12px;margin:16px 0}.statCard{flex:1;background:#fff;border:1px solid #e5e5e5;border-radius:10px;padding:14px 16px}.statValue{font-size:22px;font-weight:700;color:#1a1a1a}.statLabel{font-size:13px;color:#666;margin-top:2px}.board{display:flex;gap:14px;margin-top:20px;overflow-x:auto;padding-bottom:12px}.boardColumn{flex:0 0 230px;min-width:230px;background:#f7f7f8;border-radius:10px;padding:10px;transition:background-color .1s,box-shadow .1s}.boardColumn-dragover{background:#e8f0fb;box-shadow:inset 0 0 0 2px #1a5fb4}.boardColumnHeader{font-size:13px;font-weight:700;color:#444;text-transform:uppercase;letter-spacing:.02em;padding:4px 6px 10px;display:flex;align-items:center;gap:6px}.boardColumnCount{background:#e5e5e5;color:#555;border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px}.boardColumnCards{display:flex;flex-direction:column;gap:8px}.boardColumnEmpty{padding:8px 6px}.pipelineCard{display:block;background:#fff;border:1px solid #e5e5e5;border-radius:8px;padding:10px 12px;text-decoration:none;color:#1a1a1a;box-shadow:0 1px 2px #00000008;cursor:grab}.pipelineCard:hover{border-color:#1a5fb4}.pipelineCardTop{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.pipelineCardName{font-weight:700;font-size:14px}.pipelineCardDecline{background:none;border:none;color:#999;cursor:pointer;font-size:13px;line-height:1;padding:2px;flex-shrink:0}.pipelineCardDecline:hover{color:#c0392b}.pipelineCardAddress{font-size:12px;color:#666;margin-top:4px}.pipelineCardTag{font-size:12px;color:#1a5fb4;background:#eef3fb;border-radius:6px;padding:2px 6px;margin-top:6px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pipelineCardEstimate{font-size:13px;font-weight:700;margin-top:6px}.pipelineCardFooter{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.stageStepper{margin:14px 0}.stageStepperRow{display:flex;gap:2px;overflow-x:auto}.stageStep{flex:1;min-width:100px;background:#eee;color:#666;border:none;cursor:pointer;padding:8px 10px;font-size:12px;font-weight:600;text-align:center;white-space:nowrap}.stageStep:first-child{border-radius:8px 0 0 8px}.stageStep:last-child{border-radius:0 8px 8px 0}.stageStep-done{background:#dbe8f7;color:#1a5fb4}.stageStep-current{background:#1a5fb4;color:#fff}.stageStepperActions{display:flex;gap:12px;margin-top:6px}.contactActions{display:flex;gap:8px;margin:14px 0}.contactActions a.ghost{text-decoration:none;display:inline-block}.activityTimeline{list-style:none;margin:0;padding:0}.activityTimeline li{display:flex;align-items:baseline;gap:8px;padding:6px 0;border-bottom:1px solid #f0f0f0;font-size:14px}.activityTimelineDot{width:6px;height:6px;border-radius:50%;background:#1a5fb4;flex-shrink:0}.activityTimelineLabel{flex:1}.activityTimelineDate{white-space:nowrap}.tabs{display:flex;gap:4px;margin:20px 0;border-bottom:2px solid #e5e5e5}.tab{background:none;border:none;cursor:pointer;padding:12px 20px;font-size:16px;font-weight:600;color:#666;border-bottom:3px solid transparent;margin-bottom:-2px}.tab:hover{color:#1a5fb4}.tab.active{color:#1a5fb4;border-bottom-color:#1a5fb4}.workerHeader{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#fff;border-bottom:1px solid #eee}.workerCard{background:#fff;border:1px solid #eee;border-radius:10px;padding:16px;margin-bottom:16px}
