:root{--row-height:32px;--table-min-width:420px;--focus-ring:2px solid var(--gc-focus);--gc-blue:#2563eb;--gc-green:#16a34a;--gc-orange:#ea580c;--gc-purple:#7c3aed;--gc-teal:#0d9488;--gc-red:#dc2626;--gc-yellow:#a16207;--gc-grey:#52525b;--gc-bg:#fff;--gc-surface:#f3f6fb;--gc-border:#dbe2ee;--gc-text:#17223a;--gc-text-muted:#55627a;--gc-focus:#2563eb;--gc-today:#dc2626;--gc-non-working:#eef2f8;--gc-navy:#0f2747;--gc-navy-light:#1b3d70;--gc-primary:#1d62d0;--gc-primary-dark:#124aa8;--gc-sky:#8fd0ff;--gc-radius:8px;--gc-shadow-sm:0 1px 2px #0f27471a, 0 1px 3px #0f274714;--gc-shadow-md:0 4px 14px #0f274724}*{box-sizing:border-box}html,body{margin:0;padding:0}body{color:var(--gc-text);background:var(--gc-bg);font-family:Trebuchet MS,Segoe UI,sans-serif;font-size:14px;line-height:1.4}code,pre,.mono{font-family:Courier New,Courier,monospace}#root{min-height:100vh}a{color:var(--gc-blue)}:where(button){cursor:pointer;border:1px solid var(--gc-border);border-radius:var(--gc-radius);background:var(--gc-bg);color:var(--gc-text);box-shadow:var(--gc-shadow-sm);justify-content:center;align-items:center;gap:.4rem;padding:.45rem .85rem;font-family:inherit;font-size:.9rem;transition:background-color .15s,border-color .15s,box-shadow .15s,transform .1s;display:inline-flex}:where(button:hover:not(:disabled)){border-color:var(--gc-primary);background:#eef4ff}:where(button:active:not(:disabled)){box-shadow:none;transform:translateY(1px)}:where(button:disabled){opacity:.45;cursor:default;box-shadow:none}:where(select,input[type=text],input:not([type])){border:1px solid var(--gc-border);border-radius:var(--gc-radius);background:var(--gc-bg);color:var(--gc-text);padding:.4rem .6rem;font-family:inherit;font-size:.9rem}.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:1.1em;height:1.1em}.btn--primary{background:linear-gradient(180deg, var(--gc-primary), var(--gc-primary-dark));border-color:var(--gc-primary-dark);color:#fff;font-weight:700}.btn--primary:hover:not(:disabled){background:linear-gradient(180deg, #2a72e6, var(--gc-primary));border-color:var(--gc-primary-dark)}.btn--accent{background:var(--gc-sky);border-color:var(--gc-sky);color:var(--gc-navy);font-weight:700}.btn--accent:hover:not(:disabled){background:#b4e0ff;border-color:#b4e0ff}.btn--ghost{box-shadow:none;background:0 0;border-color:#0000}.btn--ghost:hover:not(:disabled){background:#e4ecfa;border-color:#0000}.btn--danger{color:#b42318}.btn--danger:hover:not(:disabled){background:#fdecea;border-color:#b42318}.btn--on-dark{color:#fff;box-shadow:none;background:#ffffff1a;border-color:#ffffff38}.btn--on-dark:hover:not(:disabled){background:#fff3;border-color:#ffffff80}.btn--icon{padding:.45rem}:focus-visible{outline:var(--focus-ring);outline-offset:2px}.toolbar__top :focus-visible,.cm-float-ad :focus-visible{outline-color:#fff}@media (prefers-reduced-motion:reduce){*{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.home__hero{background:radial-gradient(circle at 85% 20%, #8fd0ff59, transparent 45%), linear-gradient(135deg, var(--gc-navy), var(--gc-navy-light));color:#fff;padding:3rem 2rem 4.5rem}.home__hero-inner{max-width:56rem;margin:0 auto}.home__hero h1{letter-spacing:-.02em;margin:0 0 .5rem;font-size:2.4rem}.home__hero p{color:#d5e4fa;max-width:36rem;margin:0;font-size:1.1rem}.home-page,.not-found-page,.print-page{max-width:56rem;margin:0 auto;padding:2rem}.home-page{margin-top:-2.5rem;padding-top:0;padding-bottom:5rem}.home-page__section{background:var(--gc-bg);border:1px solid var(--gc-border);box-shadow:var(--gc-shadow-md);border-radius:12px;margin-top:1.5rem;padding:1.25rem 1.5rem}.home-page__section h2{margin-top:0}.home-page__error{background:color-mix(in srgb, var(--gc-red) 12%, var(--gc-bg));border:1px solid var(--gc-red);border-radius:var(--gc-radius);margin-top:1.5rem;padding:.6rem .9rem}.home-page__template-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;display:grid}.home-page__template-card{text-align:left;border:1px solid var(--gc-border);border-top:4px solid var(--gc-primary);background:var(--gc-bg);border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:.4rem;padding:1rem;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.home-page__template-card:hover:not(:disabled){box-shadow:var(--gc-shadow-md);background:var(--gc-bg);transform:translateY(-3px)}.home-page__template-card:nth-child(2){border-top-color:var(--gc-teal)}.home-page__template-card:nth-child(3){border-top-color:var(--gc-purple)}.home-page__template-card .home-page__template-icon{width:2.4rem;height:2.4rem;color:var(--gc-primary);background:#e4ecfa;border-radius:10px;justify-content:center;align-items:center;font-size:1.2rem;display:inline-flex}.home-page__template-card span{color:var(--gc-text-muted);font-size:.85rem}.home-page__file-input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.home-page__recent-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.home-page__recent-list li{border:1px solid var(--gc-border);border-radius:var(--gc-radius);justify-content:space-between;align-items:center;padding:.6rem .9rem;transition:background-color .15s;display:flex}.home-page__recent-list li:hover{background:var(--gc-surface)}.home-page__recent-date{color:var(--gc-text-muted);font-size:.8rem}@media print{@page{size:A4 landscape;margin:10mm}body{-webkit-print-color-adjust:exact;print-color-adjust:exact}.no-print{display:none!important}.task-row,.task-table__header{break-inside:avoid}}.print-page__button{margin:.75rem;padding:.5rem 1rem}.not-found-page h1{color:var(--gc-navy)}.editor-page{flex-direction:column;height:100vh;display:flex}.editor-page__status{text-align:center;justify-content:center;align-items:center;height:100vh;padding:2rem;display:flex}.editor-page__body{flex:1;min-height:0;display:flex}.editor-page__table-pane{border-right:1px solid var(--gc-border);flex-shrink:0;min-width:240px;overflow:hidden}.editor-page__splitter{cursor:col-resize;background:var(--gc-surface);border-left:1px solid var(--gc-border);border-right:1px solid var(--gc-border);flex-shrink:0;width:6px}.editor-page__splitter:hover,.editor-page__splitter:focus-visible{background:var(--gc-border)}.editor-page__timeline-pane{flex:1;min-width:0;overflow:hidden}.toolbar{box-shadow:var(--gc-shadow-md);z-index:2;position:relative}.toolbar__top{background:linear-gradient(135deg, var(--gc-navy), var(--gc-navy-light));color:#fff;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.55rem .9rem;display:flex}.toolbar__home{background:var(--gc-sky);width:2.2rem;height:2.2rem;color:var(--gc-navy);border-radius:10px;justify-content:center;align-items:center;font-size:1.15rem;display:inline-flex}.toolbar__title{color:#fff;border-radius:var(--gc-radius);background:0 0;border:1px solid #0000;flex:0 22rem;min-width:10rem;padding:.25rem .5rem;font-family:inherit;font-size:1.15rem;font-weight:700}.toolbar__title:hover,.toolbar__title:focus-visible{background:#ffffff1a;border-color:#ffffff59}.toolbar__save-status{white-space:nowrap;color:#fff;background:#ffffff24;border-radius:999px;padding:.15rem .65rem;font-size:.78rem}.toolbar__save-status--readonly{color:#3b2a00;background:#fcd34d;font-weight:700}.toolbar__tools{background:var(--gc-bg);border-bottom:1px solid var(--gc-border);flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;padding:.5rem .9rem;display:flex}.toolbar__group{flex-wrap:wrap;align-items:center;gap:.3rem;display:flex}.toolbar__tools .toolbar__group+.toolbar__group:not(.toolbar__group--end){border-left:1px solid var(--gc-border);padding-left:1.25rem}.toolbar__group--end{margin-left:auto}.toolbar__zoom,.toolbar__checkbox{white-space:nowrap;align-items:center;gap:.4rem;font-size:.9rem;display:flex}.toolbar__checkbox{cursor:pointer;border-radius:var(--gc-radius);padding:.35rem .6rem}.toolbar__checkbox:hover{background:#e4ecfa}.toolbar__checkbox input{accent-color:var(--gc-primary);width:1rem;height:1rem}.task-table{flex-direction:column;height:100%;display:flex}.task-table__header{background:var(--gc-surface);border-bottom:2px solid var(--gc-border);text-transform:uppercase;letter-spacing:.05em;color:var(--gc-text-muted);z-index:1;align-items:flex-end;height:48px;font-size:.75rem;font-weight:700;display:flex;position:sticky;top:0}.task-table__header-cell{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:70px;padding:.4rem .5rem .5rem;overflow:hidden}.task-table__header-cell--name{flex:2;min-width:140px}.task-table__body{flex:1;overflow:hidden auto}.task-table__empty{color:var(--gc-text-muted);padding:1rem}.task-row{height:var(--row-height);border-bottom:1px solid var(--gc-border);cursor:pointer;align-items:stretch;display:flex}.task-row:hover{background:var(--gc-surface)}.task-row--selected,.task-row--selected:hover{background:color-mix(in srgb, var(--gc-primary) 12%, var(--gc-bg));box-shadow:inset 3px 0 0 var(--gc-primary)}.task-row--group{background:#f8faff;font-weight:700}.task-row__cell{white-space:nowrap;text-overflow:ellipsis;flex:1;align-items:center;min-width:70px;padding:0 .5rem;font-size:.85rem;display:flex;overflow:hidden}.task-row__cell--name{flex:2;gap:2px;min-width:140px}.task-row__disclosure{box-shadow:none;width:18px;height:18px;color:var(--gc-text-muted);background:0 0;border:none;flex-shrink:0;padding:0;font-size:.7rem}.task-row__disclosure--spacer{cursor:default}.task-row__type-marker{cursor:pointer;width:10px;height:10px;box-shadow:none;border:1px solid #00000026;flex-shrink:0;margin-right:4px;padding:0}.task-row__type-marker--task{border-radius:2px}.task-row__type-marker--group{clip-path:polygon(0 0,100% 0,100% 40%,50% 100%,0 40%);border-radius:1px}.task-row__type-marker--milestone{width:8px;height:8px;margin:1px 5px 1px 1px;transform:rotate(45deg)}.task-row__type-marker--blue{background:var(--gc-blue)}.task-row__type-marker--green{background:var(--gc-green)}.task-row__type-marker--orange{background:var(--gc-orange)}.task-row__type-marker--purple{background:var(--gc-purple)}.task-row__type-marker--teal{background:var(--gc-teal)}.task-row__type-marker--red{background:var(--gc-red)}.task-row__type-marker--yellow{background:var(--gc-yellow)}.task-row__type-marker--grey{background:var(--gc-grey)}.task-row__name{text-overflow:ellipsis;overflow:hidden}.task-row__edit-input{border:1px solid var(--gc-focus);border-radius:2px;width:100%;min-width:60px;padding:0 2px;font-family:inherit;font-size:.85rem}.task-row__percent{align-items:center;gap:2px;display:inline-flex}.task-row__cell-button{box-shadow:none;font:inherit;text-align:left;color:inherit;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:none;justify-content:flex-start;width:100%;padding:0;overflow:hidden}.task-row__cell-button:not(:disabled):hover{text-decoration:underline}.task-row__cell-button:disabled{cursor:default}.timeline{background:var(--gc-bg);width:100%;height:100%;position:relative;overflow:auto}.timeline__content{position:relative}.timeline__svg{touch-action:none;display:block}.timeline-header{z-index:1;background:var(--gc-surface);box-shadow:0 2px 0 var(--gc-border);position:sticky;top:0}.timeline-header__tier{height:24px;position:relative}.timeline-header__tier--major{border-bottom:1px solid var(--gc-border);color:var(--gc-navy);font-weight:700}.timeline-header__cell{border-left:1px solid var(--gc-border);white-space:nowrap;box-sizing:border-box;align-items:center;height:100%;padding-left:4px;font-size:.75rem;display:flex;position:absolute;top:0;overflow:hidden}.timeline-header__cell--minor{color:var(--gc-text-muted);justify-content:center;padding-left:0;font-weight:400}.timeline-grid__non-working{fill:var(--gc-non-working)}.timeline-grid__line{stroke:var(--gc-border);stroke-width:1px}.today-line__line{stroke:var(--gc-today);stroke-width:2px;stroke-dasharray:4 3}.task-bar__shape{stroke:none;filter:drop-shadow(0 1px 1px #0f27474d)}.task-bar__shape--blue{fill:var(--gc-blue)}.task-bar__shape--green{fill:var(--gc-green)}.task-bar__shape--orange{fill:var(--gc-orange)}.task-bar__shape--purple{fill:var(--gc-purple)}.task-bar__shape--teal{fill:var(--gc-teal)}.task-bar__shape--red{fill:var(--gc-red)}.task-bar__shape--yellow{fill:var(--gc-yellow)}.task-bar__shape--grey{fill:var(--gc-grey)}.task-bar__progress{fill:#00000047}.task-bar--selected .task-bar__shape{stroke:var(--gc-focus);stroke-width:2px}.task-bar--critical .task-bar__shape{stroke:var(--gc-today);stroke-width:2px}.task-bar__label{fill:var(--gc-text);dominant-baseline:middle;-webkit-user-select:none;user-select:none;font-size:.78rem}.task-bar__handle{fill:#0000;cursor:ew-resize}.task-bar:hover .task-bar__handle,.task-bar--selected .task-bar__handle{fill:#00000026}.task-bar__percent-handle{fill:var(--gc-text);stroke:var(--gc-bg);stroke-width:1px;cursor:ew-resize;opacity:0}.task-bar:hover .task-bar__percent-handle,.task-bar--selected .task-bar__percent-handle{opacity:1}.task-bar__group-shape{fill:none;stroke-width:3px}.task-bar__group-shape--blue{stroke:var(--gc-blue)}.task-bar__group-shape--green{stroke:var(--gc-green)}.task-bar__group-shape--orange{stroke:var(--gc-orange)}.task-bar__group-shape--purple{stroke:var(--gc-purple)}.task-bar__group-shape--teal{stroke:var(--gc-teal)}.task-bar__group-shape--red{stroke:var(--gc-red)}.task-bar__group-shape--yellow{stroke:var(--gc-yellow)}.task-bar__group-shape--grey{stroke:var(--gc-grey)}.task-bar--group.task-bar--selected .task-bar__group-shape{stroke-width:4px}.milestone-marker__shape--blue{fill:var(--gc-blue)}.milestone-marker__shape--green{fill:var(--gc-green)}.milestone-marker__shape--orange{fill:var(--gc-orange)}.milestone-marker__shape--purple{fill:var(--gc-purple)}.milestone-marker__shape--teal{fill:var(--gc-teal)}.milestone-marker__shape--red{fill:var(--gc-red)}.milestone-marker__shape--yellow{fill:var(--gc-yellow)}.milestone-marker__shape--grey{fill:var(--gc-grey)}.milestone-marker--selected .milestone-marker__shape{stroke:var(--gc-focus);stroke-width:2px}.milestone-marker--critical .milestone-marker__shape{stroke:var(--gc-today);stroke-width:2px}.task-bar__connector{fill:var(--gc-bg);stroke:var(--gc-text-muted);stroke-width:1.5px;cursor:crosshair;opacity:0}.task-bar:hover .task-bar__connector,.task-bar--selected .task-bar__connector,.milestone-marker:hover .task-bar__connector,.milestone-marker--selected .task-bar__connector{opacity:1}.dependency-arrow__hit{fill:none;stroke:#0000;stroke-width:10px;cursor:pointer}.dependency-arrow__line{fill:none;stroke:var(--gc-text-muted);stroke-width:1.5px;pointer-events:none}.dependency-arrow__head{fill:var(--gc-text-muted);pointer-events:none}.dependency-arrow:hover .dependency-arrow__line,.dependency-arrow--highlighted .dependency-arrow__line{stroke:var(--gc-focus);stroke-width:2px}.dependency-arrow:hover .dependency-arrow__head,.dependency-arrow--highlighted .dependency-arrow__head{fill:var(--gc-focus)}.dependency-arrow__pending{stroke:var(--gc-focus);stroke-width:2px;stroke-dasharray:4 3;pointer-events:none}.status-bar{border-top:1px solid var(--gc-border);background:var(--gc-surface);color:var(--gc-text-muted);white-space:nowrap;gap:1.5rem;padding:.3rem 8.5rem .3rem 1rem;font-size:.8rem;display:flex;overflow-x:auto}.status-bar__selection{text-overflow:ellipsis;flex:1;overflow:hidden}.dependency-editor{width:16rem}.dependency-editor__close{box-shadow:none;background:0 0;border:none;padding:.25rem;font-size:1.1rem;line-height:1;position:absolute;top:.25rem;right:.25rem}.dependency-editor__summary{margin:0 1.25rem .5rem 0;font-size:.85rem;font-weight:700}.dependency-editor__field{flex-direction:column;gap:.2rem;margin-bottom:.5rem;font-size:.8rem;display:flex}.dependency-editor__field select,.dependency-editor__field input{border:1px solid var(--gc-border);border-radius:4px;padding:.3rem;font-family:inherit;font-size:.85rem}.dependency-editor__delete{border:1px solid var(--gc-red);width:100%;color:var(--gc-red);background:var(--gc-bg);border-radius:var(--gc-radius);padding:.4rem}.toast{background:var(--gc-text);color:var(--gc-bg);z-index:10;border-radius:6px;align-items:center;gap:.75rem;max-width:28rem;padding:.6rem 1rem;display:flex;position:fixed;bottom:3rem;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000040}.toast__dismiss{box-shadow:none;color:inherit;background:0 0;border:none;padding:0;font-size:1.1rem;line-height:1}.dialog{background:var(--gc-bg);color:var(--gc-text);border:none;border-top:5px solid var(--gc-primary);border-radius:14px;width:min(26rem,90vw);max-height:85vh;padding:1.5rem;overflow-y:auto;box-shadow:0 12px 40px #0f274759}.dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f27478c}.dialog h2{color:var(--gc-navy);margin-top:0}.dialog__notice{background:color-mix(in srgb, var(--gc-yellow) 18%, var(--gc-bg));border:1px solid var(--gc-yellow);border-radius:6px;padding:.5rem .75rem;font-size:.9rem}.dialog__field{margin-bottom:.75rem;font-size:.85rem;display:block}fieldset.dialog__field{border:1px solid var(--gc-border);border-radius:6px;padding:.5rem .75rem}fieldset.dialog__field legend{padding:0 .3rem;font-size:.8rem;font-weight:700}fieldset.dialog__field label{padding:.2rem 0;font-weight:400;display:block}.dialog__link-row{gap:.4rem;margin-top:.3rem;display:flex}.dialog__link-row input{border:1px solid var(--gc-border);border-radius:4px;flex:1;padding:.4rem;font-family:Courier New,Courier,monospace;font-size:.8rem}.dialog__actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.dialog__actions--stacked{flex-direction:column;align-items:stretch}.dialog__primary{background:linear-gradient(180deg, var(--gc-primary), var(--gc-primary-dark));color:#fff;border-color:var(--gc-primary-dark);font-weight:700}.dialog__primary:hover:not(:disabled){background:linear-gradient(180deg, #2a72e6, var(--gc-primary));border-color:var(--gc-primary-dark)}.dialog__close{width:100%;margin-top:1rem}.shortcuts-table{border-collapse:collapse;width:100%}.shortcuts-table td{border-bottom:1px solid var(--gc-border);padding:.35rem 0;font-size:.85rem}.shortcuts-table kbd{background:var(--gc-surface);border:1px solid var(--gc-border);border-radius:4px;padding:.1rem .4rem;font-family:Courier New,Courier,monospace;font-size:.8rem}.full-chart{background:var(--gc-bg);display:inline-block}.full-chart__title{margin:0;padding:.5rem .75rem;font-size:1.25rem}.full-chart__body{align-items:flex-start;display:flex}.full-chart__table{border-right:1px solid var(--gc-border);flex-shrink:0;width:420px}.full-chart__table .task-table__header{position:static}.full-chart__timeline{flex:1}.export-offscreen{pointer-events:none;position:fixed;top:0;left:-100000px}.cm-float-ad{background:var(--gc-navy);color:#e7eefb;white-space:nowrap;cursor:pointer;z-index:1000;width:max-content;max-width:107px;height:60px;box-shadow:var(--gc-shadow-md);border:1px solid #0000;border-radius:10px;align-items:center;padding:10px;font-size:x-small;transition:max-width .8s ease-in-out,height .4s ease-in-out;display:flex;position:fixed;bottom:10px;right:20px;overflow:hidden}.cm-float-ad--open{border-color:var(--gc-navy-light);max-width:75%;box-shadow:0 6px 20px #0f274759}.cm-float-ad--mobile{font-size:xx-small;line-height:1.2}.cm-float-ad--mobile.cm-float-ad--open{white-space:normal;align-items:flex-start;max-width:95%;height:auto;min-height:80px}.cm-float-ad__content{align-items:center;gap:5px;width:100%;display:flex}.cm-float-ad--mobile.cm-float-ad--open .cm-float-ad__content{flex-direction:column;align-items:flex-start}.cm-float-ad__logo{flex-shrink:0}.cm-float-ad__stack{flex-direction:column;gap:2px;display:flex}.cm-float-ad a{color:var(--gc-sky);text-decoration:none}.cm-float-ad a:hover{text-decoration:underline}
