: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:#999;--g-text-light:#fff;--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:#999;--g-popup-actions:#1a1a1a;--g-weekend-highlight-color:#0f0f0f}.gantt-container{height:var(--gv-grid-height);isolation:isolate;border-radius:8px;width:100%;font-size:12px;line-height:14.5px;position:relative;overflow:auto}.gantt-container .popup-wrapper{background:var(--g-header-background);z-index:1000;border-radius:5px;width:max-content;padding:10px;position:absolute;top:0;left:0;box-shadow:0 10px 24px -3px #0003}.gantt-container .popup-wrapper .title{color:var(--g-text-dark);margin-bottom:2px;font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);margin-bottom:5px;font-size:.8rem}.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{background-color:var(--g-popup-actions);border:none;border-right:1px solid var(--g-border-color);padding:5px 8px}.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);border-bottom:1px solid var(--g-row-border-color);z-index:1000;position:sticky;top:0;left:0}.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{width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);text-align:center;color:var(--g-text-muted);align-content:center;font-size:12px;position:absolute}.gantt-container .upper-text{width:fit-content;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66);font-size:14px;font-weight:500;position:absolute}.gantt-container .current-upper{background:var(--g-header-background);padding-left:17px;position:sticky;left:0!important}.gantt-container .side-header{float:right;z-index:1000;background:var(--g-header-background);width:max-content;margin-left:auto;padding-top:10px;padding-right:10px;font-weight:400;line-height:20px;display:flex;position:sticky;top:0;right:0}.gantt-container .side-header *{background-color:var(--g-actions-background);color:var(--g-text-dark);letter-spacing:.02em;box-sizing:content-box;border:none;border-radius:.5rem;margin-right:5px;padding:5px 8px;font-size:14px;font-weight:420;transition-property:background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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);height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);border-radius:12px;position:absolute}.gantt-container .current-highlight{background:var(--g-today-highlight);z-index:999;width:1px;position:absolute}.gantt-container .current-ball-highlight{background:var(--g-today-highlight);z-index:1001;border-radius:50%;position:absolute}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{opacity:0;z-index:1000;background:var(--g-weekend-label-color);border-radius:5px;padding:2px 5px;position:absolute;top:0;left:0}.gantt-container .holiday-label.show{opacity:100}.gantt-container .extras{position:sticky;left:0}.gantt-container .extras .adjust{left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:var(--g-actions-background);color:var(--g-text-light);border:none;border-radius:3px;padding:8px;position:absolute}.gantt-container .hide{display:none}.gantt{-webkit-user-select:none;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:.4px}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7px}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5px}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:#0000;stroke:var(--g-bar-border);stroke-width:1px;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}.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}.gantt .bar-wrapper:hover .date-range-highlight{display:block}.gantt .grid-column{fill:#0000;pointer-events:all}.gantt .grid-column:hover{fill:var(--g-weekend-highlight-color);transition:fill .1s}:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100vh}*{box-sizing:border-box}body{color:#eee;background:#1a1a2e;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.login-container{background:#1a1a2e;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{text-align:center;background:#16213e;border-radius:12px;padding:48px;box-shadow:0 4px 24px #0000004d}.login-box h1{margin:0 0 8px;font-size:28px}.login-box p{color:#888;margin:0 0 24px}.loading-container{color:#888;background:#1a1a2e;justify-content:center;align-items:center;min-height:100vh;display:flex}.header-right{align-items:center;gap:12px;display:flex}.user-email{color:#888;font-size:13px}.view-only-badge{color:#ccc;background:#4a4a6a;border-radius:4px;padding:4px 8px;font-size:11px}.logout-btn{color:#888;cursor:pointer;background:0 0;border:1px solid #444;border-radius:4px;padding:6px 12px;font-size:12px}.logout-btn:hover{color:#fff;border-color:#666}.app{height:100vh;display:flex}.sidebar{background:#16213e;border-right:1px solid #2a2a4a;flex-direction:column;width:320px;display:flex;overflow:hidden}.sidebar-header{border-bottom:1px solid #2a2a4a;justify-content:space-between;align-items:center;padding:16px;display:flex}.sidebar-header h2{margin:0;font-size:18px}.refresh-btn{color:#fff;cursor:pointer;background:#4361ee;border:none;border-radius:6px;padding:8px 16px;font-size:14px}.refresh-btn:hover{background:#3a56d4}.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.header-buttons{gap:8px;display:flex}.by-id-btn{color:#fff;cursor:pointer;background:#2a3a4a;border:none;border-radius:6px;padding:8px 12px;font-size:14px}.by-id-btn:hover{background:#3a4a5a}.by-id-btn:disabled{opacity:.6;cursor:not-allowed}.by-id-menu{background:#1a1a2e;border-bottom:1px solid #2a2a4a;padding:12px}.by-id-entries{flex-direction:column;gap:8px;display:flex}.by-id-row{align-items:center;gap:8px;display:flex}.prefix-toggle{color:#fff;cursor:pointer;background:#4361ee;border:none;border-radius:4px;width:40px;padding:8px;font-size:12px;font-weight:600}.prefix-toggle:hover{background:#3451de}.id-input{color:#fff;background:#16213e;border:1px solid #2a2a4a;border-radius:4px;flex:1;padding:8px 12px;font-size:14px}.id-input:focus{border-color:#4361ee;outline:none}.remove-entry-btn{color:#666;cursor:pointer;background:0 0;border:1px solid #444;border-radius:4px;width:32px;height:32px;font-size:18px;line-height:1}.remove-entry-btn:hover:not(:disabled){color:#dc3545;border-color:#dc3545}.remove-entry-btn:disabled{opacity:.3;cursor:not-allowed}.by-id-actions{gap:8px;margin-top:12px;display:flex}.add-entry-btn{color:#fff;cursor:pointer;background:#2a3a4a;border:none;border-radius:4px;width:32px;height:32px;font-size:18px;line-height:1}.add-entry-btn:hover{background:#3a4a5a}.fetch-ids-btn{color:#fff;cursor:pointer;background:#4361ee;border:none;border-radius:4px;flex:1;padding:8px 16px;font-size:14px;font-weight:500}.fetch-ids-btn:hover:not(:disabled){background:#3451de}.fetch-ids-btn:disabled{opacity:.6;cursor:not-allowed}.search-input{color:#fff;background:#1a1a2e;border:none;border-bottom:1px solid #2a2a4a;outline:none;width:100%;padding:10px 16px;font-size:14px}.search-input::placeholder{color:#666}.search-input:focus{background:#1e1e36}.toggle-scheduled{color:#aaa;cursor:pointer;border-bottom:1px solid #2a2a4a;align-items:center;gap:8px;padding:12px 16px;font-size:14px;display:flex}.toggle-scheduled input{cursor:pointer}.ticket-list{scrollbar-width:none;-ms-overflow-style:none;flex:1;padding:12px;overflow-y:auto}.ticket-list::-webkit-scrollbar{display:none}.no-tickets{text-align:center;color:#666;padding:20px}.ticket-card{cursor:grab;background:#1e3a5f;border-radius:8px;flex-direction:column;gap:4px;margin-bottom:8px;padding:12px;transition:transform .15s,box-shadow .15s;display:flex}.ticket-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.ticket-card.scheduled{opacity:.6;border:1px dashed #4361ee}.ticket-id{color:#4361ee;font-size:13px;font-weight:600}.ticket-title{color:#ddd;text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.ticket-state{color:#888;font-size:12px}.main-content{flex-direction:column;flex:1;display:flex;overflow:hidden}.main-header{border-bottom:1px solid #2a2a4a;justify-content:space-between;align-items:center;padding:16px 24px;display:flex}.header-left{align-items:center;gap:16px;display:flex}.header-left h1{margin:0;font-size:24px}.tasks-today{color:#888;font-size:14px}.save-indicator{background:0 0;border:2px solid #4a4a6a;border-radius:50%;width:12px;height:12px;transition:background .2s,border-color .2s}.save-indicator.saving{background:#4361ee;border-color:#4361ee}.save-indicator.error{background:#dc3545;border-color:#dc3545}.gantt-outer{background:#0f0f23;flex-direction:column;flex:1;min-height:400px;display:flex;position:relative;overflow:hidden}.gantt-outer.drop-active{outline-offset:-4px;background:#1a2a4a;outline:2px dashed #4361ee}.gantt-toolbar{background:#16213e;border-bottom:1px solid #2a2a4a;padding:8px 20px}.refresh-view-btn{color:#aaa;cursor:pointer;background:#2a3a4a;border:none;border-radius:4px;padding:6px 12px;font-size:13px}.refresh-view-btn:hover{color:#fff;background:#3a4a5a}.gantt-controls{background:#16213e;border-bottom:1px solid #2a2a4a;gap:8px;padding:12px 20px;display:flex}.open-id-btn{color:#fff;cursor:pointer;text-shadow:-1px -1px #000,1px -1px #000,-1px 1px #000,1px 1px #000,0 -1px #000,0 1px #000,-1px 0 #000,1px 0 #000;background:#4361ee;border:none;border-radius:6px;padding:8px 20px;font-size:14px;font-weight:600;transition:background .15s,opacity .15s}.open-id-btn:hover:not(:disabled){filter:brightness(1.1)}.open-id-btn:disabled{color:#666;cursor:not-allowed;text-shadow:none;background:#2a2a4a}.remove-btn{color:#666;cursor:pointer;background:0 0;border:2px solid #444;border-radius:6px;padding:8px 20px;font-size:14px;font-weight:500;transition:all .15s}.remove-btn:hover:not(:disabled){color:#dc3545;background:#dc35451a;border-color:#dc3545}.remove-btn:not(:disabled){color:#dc3545;border-color:#dc3545}.remove-btn:disabled{color:#666;cursor:not-allowed;background:0 0;border-color:#444}.gantt-scroll-container{flex:1;overflow:auto}.gantt-scroll-container,.gantt-container,.gantt-outer,.gantt-wrapper,.gantt-wrapper *{scrollbar-width:none!important;-ms-overflow-style:none!important}.gantt-scroll-container::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.gantt-container::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.gantt-outer::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.gantt-wrapper::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.gantt-wrapper ::-webkit-scrollbar{width:0!important;height:0!important;display:none!important}.gantt-content{min-height:100%;padding:20px}.gantt-wrapper{min-width:100%}.empty-gantt{text-align:center;color:#666;padding:60px 20px;font-size:16px}:root{--g-bar-color:#4361ee;--g-bar-border:#3451de;--g-text-dark:#fff;--g-text-light:#fff;--g-text-muted:#aaa;--g-header-background:#16213e;--g-row-color:#1a1a2e;--g-border-color:#2a2a4a;--g-row-border-color:#2a2a4a;--g-tick-color:#2a2a4a;--g-tick-color-thick:#3a3a5a;--g-today-highlight:#4361ee;--g-handle-color:#fff;--g-progress-color:#2a47c4;--g-actions-background:#1e3a5f;--g-weekend-highlight-color:#1e1e36}.gantt .bar-label{paint-order:stroke fill;stroke:#000;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;font-size:12px;font-weight:600;fill:#fff!important}.gantt .bar-label.big{paint-order:stroke fill;stroke:#000;stroke-width:3px;fill:#fff!important}.gantt-container{background:#0f0f23}.gantt-container .lower-text{color:#aaa}.gantt-container .lower-text .day-letter{color:#666;margin-bottom:2px;font-size:10px;display:block}.gantt-container .upper-text{color:#ddd}.gantt-container .side-header *{color:#fff;background-color:#1e3a5f}.gantt .grid-background,.gantt .grid-row,.gantt .grid-column{pointer-events:none}.gantt .bar-wrapper{cursor:grab;pointer-events:all}.gantt .bar-wrapper:active{cursor:grabbing}.gantt .bar-wrapper .bar{transition:filter .15s}.gantt .bar-wrapper:hover .bar{filter:brightness(1.15)}.gantt .handle{opacity:0;cursor:ew-resize;fill:#fff;pointer-events:all}.gantt .bar-wrapper:hover .handle{opacity:.8}.gantt-container .popup-wrapper{display:none!important}.context-menu{z-index:1000;background:#1e2a3a;border:1px solid #3a4a5a;border-radius:6px;min-width:120px;position:absolute;overflow:hidden;box-shadow:0 4px 12px #0006}.context-menu button{color:#fff;text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:10px 16px;font-size:14px;transition:background .15s;display:block}.context-menu button:hover{background:#2a3a4a}.context-menu button.danger:hover{color:#dc3545;background:#dc354533}.context-menu button:not(:last-child){border-bottom:1px solid #3a4a5a}
