@font-face{font-family:Inter;src:local("Inter");font-display:swap}:root{--green: #0a8a4c;--green-dark: #06733f;--bg: #f2f3f2;--panel: #ffffff;--text: #1b1b1b;--muted: #8a8f8a;--planner-label-width: 180px;--planner-row-height: 64px;--planner-header-height: 64px}@media (max-width: 1600px){:root{--planner-row-height: 56px;--planner-header-height: 56px}}@media (max-width: 1200px){:root{--planner-row-height: 48px;--planner-header-height: 48px}}@media (max-width: 900px){:root{--planner-row-height: 40px;--planner-header-height: 40px}}@media (max-width: 600px){:root{--planner-row-height: 36px;--planner-header-height: 36px}}@media (max-height: 900px){:root{--planner-row-height: clamp(40px, calc((100vh - 240px) / 6), 56px);--planner-header-height: clamp(40px, calc((100vh - 240px) / 6), 56px)}}@media (max-height: 720px){:root{--planner-row-height: clamp(36px, calc((100vh - 200px) / 6), 48px);--planner-header-height: clamp(36px, calc((100vh - 200px) / 6), 48px)}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif}body.planner-dragging,body.planner-dragging *{-webkit-user-select:none!important;user-select:none!important}.layout{display:flex;flex-direction:column;min-height:100vh}.topbar{background:var(--green);color:#fff;box-shadow:0 2px 8px #00000026}.content{flex:1;padding:16px;width:100%}.header{display:flex;align-items:center;justify-content:space-between;padding:14px 28px;background:var(--green);color:#fff;border-bottom:1px solid rgba(255,255,255,.2);min-height:90px}.brand{display:flex;align-items:center;gap:12px}.servicepilot-title{font-size:24px;font-weight:700;color:#fff;margin-left:8px;letter-spacing:.5px;display:flex;align-items:center;gap:4px}.servicepilot-title .pilot-highlight{color:#c6ffd6;font-style:italic;text-shadow:0 1px 3px rgba(0,0,0,.4)}.tabs{display:flex;gap:16px;margin-left:auto;margin-right:24px}.tab{background:transparent;border:none;color:#eaf6ee;font-weight:600;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .2s ease}.tab:hover{background:#ffffff26}.tab.active{background:#ffffff40;color:#fff}.auth{display:flex;align-items:center}.btn.small{padding:6px 14px;font-size:14px;border-radius:20px;border:1px solid white;background:transparent;color:#fff;transition:all .2s}.btn.small:hover{background:#ffffff26}.card{background:var(--panel);border-radius:14px;box-shadow:0 2px 10px #0000000f;padding:16px;margin-bottom:16px}.btn{background:var(--green);color:#fff;border:none;border-radius:10px;padding:8px 12px;cursor:pointer}.btn.ghost{background:transparent;color:var(--green);border:1px solid var(--green)}.row2{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:12px;margin-top:12px}.row2>div{display:flex;flex-direction:column;gap:6px}.datetime-group{display:flex;flex-direction:column;gap:6px}.datetime-editor{display:flex;flex-direction:column;gap:10px}.datetime-label{font-weight:600;display:flex;gap:6px;align-items:baseline}.datetime-editor .input{width:100%}.datetime-sublabel{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.quick-entry-row{display:flex;gap:8px;align-items:center}.quick-entry-row .input{flex:1}.quick-entry-hint{font-size:12px;color:var(--muted);white-space:nowrap}.quick-date-buttons{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.quick-date-button{flex:1 1 0;min-width:0;padding:6px 10px;border-radius:6px;border:1px solid #d9d9d9;background:#f5f6f5;font-size:13px;font-weight:600;color:#1f2a37;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.quick-date-button:hover,.quick-date-button:focus-visible{background:#e9f3ee;border-color:var(--green);color:var(--green);outline:none}.quick-date-button.active{background:var(--green);border-color:var(--green);color:#fff}.icon-button{width:38px;height:38px;border-radius:50%;border:1px solid #d9d9d9;background:#f5f6f5;color:var(--green);font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,color .2s ease,border-color .2s ease}.icon-button:hover{background:#e9f3ee;border-color:var(--green)}.datetime-picker-inline{display:flex;gap:8px;flex-wrap:wrap}.datetime-picker-inline .input{flex:1;min-width:140px}.info-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:24px;z-index:20}.info-dialog{background:#fff;border-radius:16px;padding:24px;max-width:420px;width:min(100%,420px);box-shadow:0 18px 48px #00000038;display:flex;flex-direction:column;gap:12px}.info-dialog h3{margin:0;font-size:20px}.info-dialog p{margin:0;color:var(--muted)}.info-dialog ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;color:#3c3c3c}.info-dialog code{background:#f3f6f3;border-radius:6px;padding:2px 6px;font-size:13px}.info-dialog .btn{align-self:flex-end}.input,.select,.textarea{width:100%;padding:9px 10px;border:1px solid #d9d9d9;border-radius:10px;background:#fff}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#e8f6ee;color:var(--green);font-size:12px}.muted{color:var(--muted)}.toolbar{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:12px}.btn:disabled{opacity:.6;cursor:not-allowed}.sync-control{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.sync-control .btn{display:inline-flex;align-items:center;gap:6px}.sync-spinner{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.6);border-top-color:#fff;animation:sync-spin .8s linear infinite}@keyframes sync-spin{to{transform:rotate(360deg)}}.sync-status{font-size:13px;color:var(--muted)}.sync-message{font-size:14px}.sync-message.success{color:var(--green)}.sync-message.error{color:#c53333}.sync-tooltip{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;font-size:12px;color:var(--muted);cursor:help}.sync-status-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}.sync-status-actions .sync-status-button{flex:1 1 140px}.sync-status-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;padding:8px 12px;font-weight:600;text-align:center;transition:background-color .2s ease,color .2s ease}.sync-status-button.primary{background:var(--green);color:#fff}.sync-status-button.primary:hover,.sync-status-button.primary:focus{color:#fff}.sync-status-button.primary:disabled{opacity:.65}.sync-status-button.primary .sync-spinner{border-color:#fff9;border-top-color:#fff}.sync-status-button:not(.primary){background:#1b1b1b0f;color:#1b1b1b}.sync-status-button:not(.primary):hover,.sync-status-button:not(.primary):focus{background:#0a8a4c1f;color:var(--green)}.sync-status-button:disabled{opacity:.6;cursor:not-allowed}.sync-resource-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.sync-resource-list li{display:flex;flex-direction:column;gap:2px}.sync-resource-name{font-weight:600;color:#1b1b1b}.sync-resource-values{color:var(--muted);font-size:12px}.sync-log-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a101899;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1400}.sync-log-modal__content{background:#fff;border-radius:16px;width:min(760px,90%);max-height:80vh;display:flex;flex-direction:column;box-shadow:0 22px 48px #0f172a40}.sync-log-modal__header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid #e5e8ee}.sync-log-modal__header h3{margin:0;font-size:1.1rem}.sync-log-modal__close{background:none;border:none;font-size:22px;line-height:1;cursor:pointer;color:#1e2a36}.sync-log-modal__body{padding:18px 24px 24px;overflow:auto}.sync-log-modal__body pre{margin:0;font-family:Fira Code,Source Code Pro,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.day-select{min-width:88px;padding:6px 10px;border-radius:20px;border:1px solid #cdd5df;background:#fff;font-size:13px;color:#1e2a36}.planner{position:relative;height:680px;overflow:auto;border-radius:14px;background:var(--panel);cursor:grab}.planner.is-panning{cursor:grabbing}.planner-card{width:100%;position:relative}.planner-container{min-height:0;height:calc(100vh - 80px);display:flex;flex-direction:column}.calendar-grid{flex:1;display:flex;flex-direction:column;overflow-y:auto}.planner-layout{flex:1;display:flex;gap:16px}.planner-scroll{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.planner-backlog{flex:0 0 310px;display:flex;flex-direction:column;max-height:100%;overflow:hidden}.planner-backlog.drop-target .card{outline:3px solid rgba(10,138,76,.4);outline-offset:-4px;box-shadow:0 0 0 4px #0a8a4c1f;background:linear-gradient(135deg,#0a8a4c14,#0c9b560d)}.backlog-container{height:100%;display:flex;flex-direction:column;gap:8px}.backlog-header{display:flex;justify-content:space-between;align-items:center;gap:10px}.backlog-header h3{margin:0;font-size:1.05rem;font-weight:700;color:#062e1b}.backlog-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:6px}.backlog-entry{background:linear-gradient(135deg,#0c9b5612,#0c9b5605);border:1px solid rgba(12,155,86,.16);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-height:70px;transition:box-shadow .2s ease,transform .2s ease}.backlog-entry:hover{box-shadow:0 6px 16px #0c9b5629;transform:translateY(-1px)}.planner-backlog .card{margin-bottom:0;flex:1;display:flex;flex-direction:column;padding:12px}.backlog-entry__header{display:flex;align-items:center;justify-content:space-between;gap:10px}.backlog-entry__primary{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:.92rem;font-weight:600;color:#062e1b;line-height:1.2}.backlog-entry__customer,.backlog-entry__machine{max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backlog-entry__divider{color:#062e1b59}.backlog-entry__task{display:flex;flex-direction:column;gap:2px}.backlog-entry__task-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:#081e1594}.backlog-entry__task-text{font-size:.95rem;font-weight:600;line-height:1.32;color:#062e1b;word-break:break-word}.backlog-entry__footer{display:flex;align-items:center;gap:8px}.backlog-entry__header .btn.ghost{padding:4px 12px;font-size:.8rem}.backlog-status{background:#0c9b5626;color:#045731;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.backlog-empty{padding:24px 12px;text-align:center;color:#4a5c55;font-size:.95rem;font-style:italic}.planner-grid{display:grid;grid-template-columns:var(--planner-label-width) 1fr;position:relative;min-width:max-content;width:100%}.planner-left-column{display:flex;flex-direction:column;background:#f9f9f9;position:sticky;left:0;z-index:50;border-right:1px solid #ccc;border-top:1px solid #ccc;box-shadow:2px 0 4px #0000000d}.planner-right-grid{position:relative;display:flex;flex-direction:column;background:#fff;overflow:hidden;border-top:1px solid #ccc}.planner-row{display:flex;align-items:center;min-height:var(--planner-row-height);height:var(--planner-row-height);padding:0 12px;border-bottom:1px solid #ccc;box-sizing:border-box;gap:8px}.planner-left-column .planner-row{background:#f9f9f9}.planner-left-column .planner-row.resource-name-cell.odd-row{background:#f9fbf8}.planner-left-column .planner-row.resource-name-cell.even-row{background:#f1f6f3}.ressource-column,.resource-column{position:sticky;left:0;background-color:#f9f9f9;z-index:30;box-shadow:2px 0 4px #0000000d;flex-shrink:0}.planung-container{overflow-x:auto;display:block}.resource-header{position:sticky;top:0;left:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px;font-weight:600;background:#f9f9f9;min-height:var(--planner-header-height);height:var(--planner-header-height);line-height:var(--planner-header-height);border-bottom:1px solid #ccc;border-right:1px solid #ccc;box-shadow:2px 0 4px #0000000d;z-index:40}.resource-cell{display:flex;align-items:center;padding:0;font-weight:600}.resource-name-cell{padding:0 12px;text-align:left;font-size:.95rem;font-weight:600;display:flex;align-items:center;height:var(--planner-row-height);line-height:var(--planner-row-height);border-right:1px solid #ccc}.planner-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.planner-heading{margin:0;font-size:1.5rem;font-weight:700}.planner-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.toolbar-btn{color:#333;background:none;border:none;cursor:pointer;font-size:.95rem;padding:6px 8px;transition:color .2s ease}.toolbar-btn.active{color:var(--green)}.planner-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.advanced-options{position:relative}.advanced-info-block{margin-top:6px;padding:8px 12px;background:#ffffffd9;border-radius:10px;border:1px solid rgba(0,0,0,.08);display:flex;flex-direction:column;gap:4px;max-width:340px;font-size:.85rem}.advanced-menu .advanced-info-block{margin-top:0;max-width:none;background:#f7f9f7f2}.advanced-info-row{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.advanced-info-label{font-weight:600;color:var(--text)}.advanced-info-value{color:var(--green)}.advanced-info-subtext{font-size:.8rem;line-height:1.4;color:var(--text)}.advanced-info-highlight{font-size:.9rem;line-height:1.5;font-weight:600;color:var(--text)}.advanced-info-error{font-size:.8rem;line-height:1.4;color:#c03737;font-weight:600}.advanced-info-success{font-size:.8rem;line-height:1.4;color:#1c7c3d;font-weight:600}.menu-btn{background-color:#e9ecef;border:1px solid #ccc;border-radius:4px;padding:4px 10px;font-size:.9rem;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;color:#1b1b1b;transition:background-color .2s ease}.menu-btn:hover,.menu-btn:focus{background-color:#dfe3e6;color:#1b1b1b}.advanced-menu{position:absolute;top:50px;right:20px;background:#fff;border:1px solid #ddd;border-radius:6px;padding:12px 14px;box-shadow:0 6px 18px #0000001f;display:flex;flex-direction:column;gap:10px;min-width:260px;max-width:360px;z-index:10}.advanced-menu-divider{height:1px;background:#00000014;margin:6px 0}.sync-status-card{background:#f7f9f7f2;border:1px solid rgba(0,0,0,.05);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.sync-status-card.holiday-sync-card{background:#eef3fff5}.sync-status-card.holiday-sync-card .sync-status-meta{color:#0a6aa3;font-weight:600}.sync-status-card.holiday-sync-card .sync-status-subtext{color:#4b5563;font-size:.82rem}.sync-status-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sync-status-title{font-weight:600;font-size:.92rem;color:var(--text);display:inline-flex;align-items:center;gap:6px}.sync-status-meta{font-size:.85rem;color:var(--green);font-weight:600;text-align:right}.sync-status-subtext{font-size:.78rem;line-height:1.35;color:var(--text)}.sync-status-subtext.muted{color:#223b57a3}.sync-status-error{font-size:.78rem;line-height:1.35;color:#c03737;font-weight:600}.sync-status-success{font-size:.78rem;line-height:1.35;color:#1c7c3d;font-weight:600}.sync-status-highlight{font-size:.82rem;font-weight:600;color:var(--text)}.sync-status-log-preview{margin-top:4px;border-left:3px solid rgba(27,27,27,.12);padding-left:8px;display:flex;flex-direction:column;gap:4px}.sync-status-log-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#1b1b1b99;font-weight:600}.sync-status-log-preview ul{list-style:disc;margin:0 0 0 16px;padding:0;display:flex;flex-direction:column;gap:4px}.sync-status-log-preview li{font-size:.75rem;line-height:1.3;color:#1b1b1bbf}.advanced-menu-actions{display:flex;flex-direction:column;gap:4px}@media (max-width: 768px){.advanced-menu{right:0;left:auto;min-width:200px}}.advanced-action{background:transparent;border:none;padding:6px 8px;font-size:.9rem;font-weight:500;color:#1b1b1b;text-align:left;width:100%;cursor:pointer;border-radius:6px;transition:color .2s ease,background-color .2s ease}.advanced-action:hover,.advanced-action:focus{color:var(--green);background:#0a8a4c14}.advanced-action.active{color:var(--green);font-weight:600;background:#0a8a4c1f}.resource-cell .technician-name{width:100%;height:100%;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:8px;padding:10px 14px;border-left:3px solid transparent;background:transparent;color:#1f2d36;position:relative;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}.resource-cell .technician-name.has-duty:not(.on-duty){border-left-color:#1f2d363d;background:#1d313f0d}.resource-cell .technician-name.on-duty{background-color:#0a8a4c1f;border-left-color:#0a8a4c;box-shadow:inset 0 0 0 1px #0a8a4c2e}.technician-name__top{display:flex;align-items:flex-start;justify-content:flex-start;width:100%;gap:4px}.technician-name__label{font-weight:600;letter-spacing:.01em}.technician-duty-footer{margin-top:auto;width:100%;display:flex;justify-content:flex-end}.technician-duty-footer__text{font-size:.72rem;color:#223b57ad;font-weight:500;text-align:right;white-space:nowrap}.technician-duty-footer.is-today .technician-duty-footer__text{color:#0a6aa3;font-weight:600}.resource-header .current-day{display:none!important}.day-cell{transition:background-color .2s ease}.day-cell.past{background-color:#f2f2f2!important}.day-cell.today{background-color:#fffbe6!important}.day-cell.future{background-color:#fff!important}.planung-container.view-full .day-cell.active-window{background-color:#0a8a4c14!important}.planung-container.view-full .day-cell.active-window .hourlabel,.planung-container.view-full .day-cell.active-window .daylabel{color:#0a8a4c;font-weight:600}.timeline-column{position:relative;min-width:max-content;flex:1;background:#fff;display:flex;flex-direction:column}.timeline-column .holiday-overlay{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;padding:0 12px;background:linear-gradient(180deg,#eaeaeaf2,#d4d4d4e6);border-radius:6px;box-shadow:inset 0 0 0 1px #b4b4b459;pointer-events:none;z-index:0;overflow:hidden}.timeline-column .holiday-overlay:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#ffffff2e,#ffffff2e 45%,#c8c8c82e 45%,#c8c8c82e 55%,#ffffff2e 55%,#ffffff2e);opacity:.7;pointer-events:none}.holiday-label{position:relative;z-index:1;padding:6px 14px;border-radius:999px;background:#fffffff5;color:#2f2f2f;font-weight:600;font-size:.95rem;line-height:1.2;box-shadow:0 1px 3px #00000014;max-width:calc(100% - 24px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.planner-right-grid [data-day].is-holiday{background:linear-gradient(180deg,#eaeaead9,#d4d4d4d9)!important}.absence-block{position:absolute;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 16px;font-weight:700;font-size:1rem;letter-spacing:.02em;color:#fffffff5;pointer-events:none;z-index:2;text-align:center;box-shadow:inset 0 0 0 1px #fff3}.absence-block span{pointer-events:none}.absence-block.vacation{background:linear-gradient(135deg,#0a8a4cd9,#2eb478bf)}.absence-block.training{background:linear-gradient(135deg,#286edcd9,#5aa0ffb3)}.planner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:80;padding:16px}.planner-dialog{background:#fff;border-radius:14px;padding:20px 24px;box-shadow:0 12px 32px #00000047;max-width:440px;width:100%}.planner-dialog h3{margin:0 0 8px}.planner-dialog p{margin:0;color:#2f3130}.planner-dialog .dialog-actions{margin-top:20px;display:flex;flex-direction:column;gap:10px}.conflict-list{margin:12px 0 16px;padding-left:20px;color:#a33;font-weight:600}.conflict-list li{margin-bottom:4px}.conflict-list li:last-child{margin-bottom:0}.planner-dialog .dialog-actions .btn{display:inline-flex;align-items:center;justify-content:center;white-space:normal;line-height:1.3}.planner-dialog .dialog-actions .btn.ghost{border-color:var(--green);color:var(--green)}@media (min-width: 520px){.planner-dialog .dialog-actions{flex-direction:row;justify-content:flex-end}.planner-dialog .dialog-actions .btn{min-width:160px}}.planner-notice{position:sticky;top:12px;left:24px;background:#06733f1f;color:var(--green);padding:6px 12px;border-radius:8px;font-size:13px;display:inline-flex;align-items:center;gap:6px;z-index:4;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 12px #06733f1f}.planner .headerRow{position:sticky;top:0;display:grid;border-bottom:1px solid #ccc;z-index:8;background:#fff}.headerRow.header-timeline{border-bottom:1px solid #ccc}.planner-right-grid .planner-time-header{position:sticky;top:0;z-index:8;background:#fff}.planner .headerRow .cell{background:#fff;border-bottom:1px solid #ccc;border-left:1px solid #e5e5e5;min-height:var(--planner-header-height);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding-top:4px}.planner .headerRow .cell:first-child{border-left:none}.planner .headerRow .daylabel{font-weight:600;text-align:center}.planner .headerRow .hourlabel{font-size:12px;text-align:center}.planner .row{display:grid;min-height:100%;height:100%;position:relative;background:transparent;padding:0}.planner-row.timeline-row{display:grid;padding:0;gap:0;align-items:stretch;position:relative;--future-tone-offset: 0px;--future-tone-color: rgba(10,138,76,.06);--task-offset-top: 24px;--task-height: 48px}.planner-row.timeline-row:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;pointer-events:none;transition:background-color .2s ease;z-index:0}.planner-row.timeline-row.odd-row{--future-tone-color: rgba(10,138,76,.04)}.planner-row.timeline-row.even-row{--future-tone-color: rgba(10,138,76,.08)}.planner-row.timeline-row.future-tone:before{background:linear-gradient(to right,transparent 0,transparent calc(var(--future-tone-offset, 0px)),var(--future-tone-color) calc(var(--future-tone-offset, 0px)),var(--future-tone-color) 100%)}.planner-row.timeline-row .cell{position:relative;z-index:1;min-height:100%;height:100%}.duty-indicator{position:absolute;bottom:6px;height:4px;border-radius:999px;background:#bcd;opacity:.85;z-index:2;pointer-events:none;transition:background-color .2s ease,opacity .2s ease,box-shadow .2s ease}.duty-indicator--active{background:linear-gradient(90deg,#7aa8c7,#5d8fb3);opacity:1;box-shadow:0 2px 8px #5d8fb359}body.planner-dragging,body.planner-dragging *{cursor:move!important}.backlog-draggable{cursor:grab;touch-action:pan-y;-webkit-user-select:none;user-select:none}body.planner-dragging .backlog-draggable{cursor:move!important}.planner-row.timeline-row.hover:before{background:#0a8a4c29}.planner .row.hover{background:transparent}.planner .headerRow.header-timeline{min-height:var(--planner-header-height)}.planner .headerRow.header-timeline .cell{min-height:var(--planner-header-height);height:100%}.job-action-menu{position:fixed;transform:translate(-50%,-110%);background:#fff;border-radius:12px;box-shadow:0 14px 36px #0000002e;padding:8px;display:flex;flex-direction:column;gap:6px;z-index:2500;min-width:180px}.job-action-menu button{border:none;border-radius:8px;padding:8px 14px;font-size:.85rem;font-weight:600;color:#fff;background:var(--green, #0a8a4c);cursor:pointer;transition:transform .15s ease,opacity .15s ease}.job-action-menu button:last-child{background:#1f6a85}.job-action-menu button:hover{opacity:.92;transform:translateY(-1px)}.planner .cell{min-height:100%;height:100%;border-left:1px solid #e5e5e5;position:relative}.planner .cell:first-child{border-left:none}.row .hourcell .halfline{position:absolute;left:50%;top:0;bottom:0;border-left:1px dashed #d9d9d9;pointer-events:none}.headerRow .hourcell .halfline{display:none}.task{position:absolute;background:linear-gradient(135deg,#0c9b56,#08713f);color:#fff;border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.35;cursor:grab;transition:opacity .15s ease,box-shadow .15s ease;display:flex;flex-direction:column;gap:4px;overflow:hidden;border:1px solid transparent;z-index:10;align-items:stretch;touch-action:none}.task:not(.other-event){background:transparent;padding:0;border-radius:6px;border-color:transparent;color:inherit}.task:not(.other-event) .task-content{padding:0}.task.other-event{background:#e2e6e4;color:#1f2d36;border-color:#1f2d362e}.background-event{position:absolute;display:flex;align-items:center;border-radius:12px;background:#e6f0f8d9;color:#1f2d36;border:1px solid rgba(31,45,54,.18);padding:0 12px;box-shadow:inset 0 0 0 1px #fff6;z-index:1;overflow:hidden;transition:transform .15s ease}.background-event.is-editable{cursor:pointer}.background-event-inner{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;pointer-events:none;position:relative;z-index:1}.background-event-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:999px;font-size:12px;font-weight:700;background:#ffffffa6;color:inherit;padding:0 10px;box-shadow:inset 0 0 0 1px #1f2d362e}.background-event-label{pointer-events:none;white-space:nowrap}.background-s{background:#508ce62e;border-color:#508ce652}.background-g{background:#ffd66e33;border-color:#ffd66e57}.background-x{background:#ffb78638;border-color:#ffb7865c}.background-b{background:transparent;border:none;box-shadow:none}.background-b:before{content:"";position:absolute;left:12px;right:12px;top:50%;height:2px;background:#2f684880;transform:translateY(-50%);border-radius:2px}.background-b .background-event-inner{background:#ffffffd9;color:#245f42;padding:4px 12px;border-radius:999px;box-shadow:0 0 0 1px #245f4247}.background-b .background-event-badge{background:#245f4214;color:#245f42;box-shadow:inset 0 0 0 1px #245f4247}.planner-row.timeline-row.odd-row .task.other-event{background:#e3ebe6}.planner-row.timeline-row.even-row .task.other-event{background:#dce5df}.task.other-event .task-line{justify-content:center;text-align:center}.task.other-event .task-chip,.task-preview.other-event .task-chip{color:inherit;justify-content:center}.task.other-event .task-line.time-range,.task-preview.other-event .task-line.time-range{background:transparent;padding:2px 0;border-radius:0}.task.other-event .time-value{background:transparent;color:inherit;padding:0}.task.other-event .time-separator{color:inherit}.task-preview{position:absolute;opacity:.8;background:linear-gradient(135deg,#0c9b56,#08713f);border:2px solid #fff;border-radius:10px;padding:12px 14px;color:#fff;pointer-events:none;display:flex;flex-direction:column;gap:4px;transition:left .05s ease,top .05s ease;z-index:7;box-shadow:0 12px 24px #00000040;align-items:stretch}.task-preview:not(.other-event){background:transparent;padding:0;border-radius:6px;border:2px solid rgba(255,255,255,.85);color:inherit}.task-preview:not(.other-event) .task-content{padding:0}.task-preview.other-event{background:#e6ecef;color:#1f2d36;border-color:#ffffffd9}.task-preview.other-event .task-line{justify-content:center;text-align:center}.task-preview.other-event .time-value{background:transparent;color:inherit}.task.dragging{opacity:.9;border:2px solid rgba(255,255,255,.9);box-shadow:0 12px 28px #00000038}.task.drop-fade{animation:taskDropFadeIn .5s ease-out}@keyframes taskDropFadeIn{0%{opacity:0}to{opacity:1}}.task.resizing{opacity:.5;box-shadow:0 0 0 2px #ffffff59 inset}.task.overtime{box-shadow:0 0 0 2px #ff5252cc inset}.task,.task-preview{font-family:Inter,Segoe UI,sans-serif;font-size:13px;line-height:1.35;letter-spacing:.01em}.task-content{display:flex;flex-direction:column;gap:4px;justify-content:center;align-items:stretch;text-align:left;width:100%;height:100%}.task.job-stacked .task-content,.task-preview.job-stacked .task-content{justify-content:flex-start}.task-bar{height:100%;padding:2px 4px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;gap:2px;overflow:hidden;background-color:#1d8149;border-radius:6px;color:#fff;font-size:clamp(.7rem,.68rem + .12vw,.85rem);line-height:1.2;min-width:0;position:relative;box-shadow:0 4px 10px #00000026}.task-bar:hover{overflow:visible;z-index:2}.task-bar__line{display:flex;align-items:center;min-width:0;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-bar__line--summary{font-weight:500;opacity:.9}.task-bar__line--task{font-weight:600}.task-bar__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-bar__separator{flex:0 0 auto;opacity:.85}.task-bar--stacked{justify-content:flex-start}.task-bar--tiny{font-size:clamp(.66rem,.64rem + .1vw,.78rem)}.task-bar--ultra{font-size:clamp(.62rem,.6rem + .1vw,.74rem)}.task-line{display:flex;align-items:stretch;justify-content:flex-start;width:100%;padding:1px 0;position:relative;overflow:hidden}.task-line-inner{display:inline-flex;align-items:center;gap:6px;width:max-content;position:relative;font-weight:600;transform:translate(var(--task-scroll-offset, 0px));will-change:transform}.task-chip{display:inline-flex;align-items:center;justify-content:flex-start;color:inherit;padding:0;border-radius:0;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%}.task-line.primary-line .task-chip,.task-preview .task-line.primary-line .task-chip{font-size:14px;letter-spacing:.01em}.task-line.meta-line .task-chip,.task-line.time-range .task-chip,.task-preview .task-line.meta-line .task-chip,.task-preview .task-line.time-range .task-chip{font-size:13px}.label-chip{pointer-events:none;cursor:default}.sticky-chip{position:relative;min-width:0}.task .other-event-title,.task-preview .other-event-title{font-weight:700;color:#1b2830;width:100%;justify-content:center}.task .other-event-time,.task-preview .other-event-time{justify-content:center;gap:8px;font-weight:500;color:#24313a}.task-line.time-range{font-variant-numeric:tabular-nums}.time-value{background:transparent;padding:0;border-radius:0;font-weight:700;display:inline-flex;align-items:center;min-width:0}.time-separator{font-weight:700;opacity:.9}.notes-line{align-items:flex-start;text-align:left;justify-content:flex-start}.notes-line .task-line-inner{align-items:flex-start;gap:4px}.note-label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;opacity:.9;flex-shrink:0}.note-value{font-weight:400;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;flex:1 1 auto}.task.overtime .task-field-value,.task.overtime .task-date,.task.overtime .task-time-part,.task.overtime .task-notes{color:#ffefef;text-shadow:0 1px 0 rgba(0,0,0,.2)}.current-time-marker{position:absolute;top:0;bottom:0;width:2px;background:#000;box-shadow:0 0 6px #00000040;pointer-events:none;z-index:6}.backlog-draggable{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:pan-y}.backlog-draggable:active{cursor:grabbing}.resize{position:absolute;top:0;width:16px;height:100%;background:#fff0;touch-action:none;cursor:ew-resize;display:flex;align-items:center;justify-content:center;transition:background .2s ease}.resize:before{content:"";width:4px;height:28px;border-radius:4px;background:#ffffff73}.resize.left{left:-8px;border-top-left-radius:10px;border-bottom-left-radius:10px}.resize.right{right:-8px;border-top-right-radius:10px;border-bottom-right-radius:10px}.resize.active{background:#0a8a4c33}.resize.active:after{content:"";position:absolute;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent}.resize.left.active:after{border-right:8px solid rgba(10,138,76,.9);left:2px}.resize.right.active:after{border-left:8px solid rgba(10,138,76,.9);right:2px}.snap-guide{position:absolute;top:-10px;bottom:-10px;width:2px;background:#ffffffd9;box-shadow:0 0 0 2px #0a8a4c40;border-radius:2px;pointer-events:none}.snap-guide.start{left:-1px}.snap-guide.end{right:-1px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:50}.modal .panel{width:600px;background:#fff;border-radius:14px;padding:16px;box-shadow:0 8px 32px #00000040;position:relative}.modal-close-button{position:absolute;top:12px;right:12px;width:36px;height:36px;border-radius:10px;border:none;background:#f6b2b2;color:#7a0404;font-size:18px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s ease,transform .2s ease}.modal-close-button:hover,.modal-close-button:focus{background:#f28c8c;color:#5a0202}.modal-close-button:focus-visible{outline:2px solid #c03737;outline-offset:2px}.modal-close-button:active{transform:scale(.96)}.form-field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.time-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.time-row .date-input-group{display:flex;align-items:center;gap:6px;flex:1 1 200px;min-width:160px;position:relative}.date-input-group .input{flex:1 1 auto}.date-input-group .calendar-button{flex:0 0 38px;border-radius:8px}.hidden-date-input{position:absolute;opacity:0;pointer-events:none;width:0;height:0}.time-select-group{display:flex;gap:6px}.time-select-group .input{width:88px;min-width:72px}.form-field label{font-size:13px;font-weight:600;color:#2d2d2d}.form-error{background:#ffe4e6;color:#a1252f;border:1px solid #f5b1b9;padding:8px 12px;border-radius:8px;margin-bottom:12px}.modal-actions{display:flex;align-items:center;gap:8px;margin-top:16px}.btn.danger{background:#d54343;color:#fff}.btn.danger:hover{background:#b93232}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;padding:16px;z-index:200}.dialog-card{background:#fff;border-radius:16px;padding:20px 24px;max-width:min(420px,95vw);width:min(420px,95vw);box-shadow:0 18px 42px #00000047;text-align:center}.dialog-card h3{margin:0 0 8px}.dialog-subtext{color:var(--muted);font-size:.9rem;margin:4px 0 0}.dialog-actions{margin-top:18px;display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.dialog-actions .btn{min-width:120px}.draggable-chip{display:inline-block;padding:4px 8px;border-radius:8px;background:#eef6ff;border:1px solid #c9defa;cursor:grab;-webkit-user-select:none;user-select:none}.ghost-task{position:absolute;pointer-events:none;opacity:.5;background-color:#4a90e2;border:1px dashed #2a6fbf;border-radius:4px;box-shadow:0 8px 18px #2a6fbf2e;z-index:9;transition:none}.droprow{transition:background-color .12s ease}.droprow--over{background:#f3fbf5}.droprow.hover{outline:2px solid rgba(74,144,226,.45);outline-offset:-2px;background:#4a90e214}.resource-section{margin-bottom:32px}.resource-section h3{margin-bottom:8px}.resource-list{display:grid;gap:6px;margin-bottom:12px}.resource-actions{margin-top:12px}@media (max-width:1280px){.planner{height:560px}}@media (max-width:1024px){.planner{height:480px}}@media (max-width:768px){.header{flex-direction:column;align-items:flex-start}.planner{height:420px}}.brand{display:flex;align-items:center;gap:16px}.service-logo{height:48px;object-fit:contain}.brand{display:flex;align-items:center;gap:20px}.brand-logo{height:52px;border-radius:12px;background:#fff;padding:4px}.service-logo{height:48px;object-fit:contain;background:transparent}
