:root{--background-color: #121212;--surface-color: #1e1e1e;--primary-color: #bb86fc;--primary-variant-color: #3700b3;--secondary-color: #03dac6;--on-primary-color: #000000;--on-surface-color: #e1e1e1;--on-surface-muted-color: #8a8a8a;--border-color: #2c2c2c;--error-color: #cf6679;--success-color: #4caf50;--row-highlight-color: #2a2a2a;--selection-highlight-color: #2c223a;--font-family: "Inter", sans-serif;--border-radius: 8px;--shadow: 0 4px 6px rgba(0, 0, 0, .2), 0 1px 3px rgba(0, 0, 0, .15)}body.light-mode{--background-color: #f4f4f9;--surface-color: #ffffff;--primary-color: #6200ee;--primary-variant-color: #eaddff;--secondary-color: #018786;--on-primary-color: #ffffff;--on-surface-color: #121212;--on-surface-muted-color: #5f6368;--border-color: #e0e0e0;--error-color: #b00020;--success-color: #2e7d32;--row-highlight-color: #f5f5f5;--selection-highlight-color: #f2e7fe;--drag-bg: #ffffff;--drag-border: #d1d5db;--drag-hover: #f3f4f6;--shadow: 0 2px 4px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .05)}:root{--background-color: #121212;--surface-color: #1e1e1e;--primary-color: #bb86fc;--primary-variant-color: #3700b3;--secondary-color: #03dac6;--on-primary-color: #000000;--on-surface-color: #e1e1e1;--on-surface-muted-color: #8a8a8a;--border-color: #2c2c2c;--error-color: #cf6679;--success-color: #4caf50;--row-highlight-color: #2a2a2a;--selection-highlight-color: #2c223a;--drag-bg: #2a2a2a;--drag-border: #404040;--drag-hover: #333333;--font-family: "Inter", sans-serif;--border-radius: 8px;--shadow: 0 4px 6px rgba(0, 0, 0, .2), 0 1px 3px rgba(0, 0, 0, .15)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-family);background-color:var(--background-color);color:var(--on-surface-color);line-height:1.6;font-size:16px;transition:background-color .3s ease,color .3s ease}#root{display:flex;flex-direction:column;min-height:100%}header{padding:1.5rem 2rem;background-color:var(--surface-color);border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;transition:background-color .3s ease,border-color .3s ease}header h1{font-size:2rem;font-weight:700;color:var(--primary-color)}.header-actions{display:flex;gap:1rem;align-items:center}.header-actions .button{width:auto}main{flex:1;padding:0 2rem 2rem;display:flex;flex-direction:column;width:100%;max-width:1600px;margin:0 auto}.tabs{display:flex;border-bottom:1px solid var(--border-color);margin-bottom:2rem}.tab-button{padding:1rem 1.5rem;cursor:pointer;background:none;border:none;color:var(--on-surface-muted-color);font-size:1rem;font-weight:500;border-bottom:3px solid transparent;transition:color .2s,border-color .2s}.tab-button:hover{color:var(--on-surface-color)}.tab-button.active{color:var(--primary-color);border-bottom-color:var(--primary-color)}.tab-content{display:grid;grid-template-columns:1fr 1.5fr;gap:2rem;width:100%}.tab-content.single-card{grid-template-columns:1fr}.tab-content.umlauf-tab{grid-template-columns:1fr 1fr}.tab-content.umlauf-tab .column{display:flex;flex-direction:column;gap:2rem}.manual-plan-tab{display:grid;grid-template-columns:300px 1fr;gap:2rem;height:calc(100vh - 200px)}.manual-pool-column{display:flex;flex-direction:column;height:100%}.manual-pool-card{display:flex;flex-direction:column;height:100%;overflow:hidden}.manual-pool-container{flex:1;overflow-y:auto;padding-right:.5rem}.manual-pool-list{display:flex;flex-direction:column;gap:.75rem;min-height:100px}.manual-block-item{display:flex;align-items:center;background-color:var(--drag-bg);border:1px solid var(--drag-border);border-radius:6px;padding:.75rem;cursor:grab;transition:box-shadow .2s,border-color .2s}.manual-block-item.shift{flex-direction:column;align-items:flex-start;padding:.5rem;min-width:120px;background-color:var(--surface-color);border:1px solid var(--border-color);border-left:4px solid var(--primary-color);position:relative}.manual-block-item.shift .drag-handle{position:absolute;top:4px;right:4px;padding:0;opacity:.5}.manual-block-item.shift:hover .drag-handle{opacity:1}.manual-block-item:hover{background-color:var(--drag-hover)}.manual-block-item.overlay{box-shadow:0 10px 25px #0003;cursor:grabbing;opacity:.9}.drag-handle{display:flex;align-items:center;justify-content:center;padding-right:.75rem;color:var(--on-surface-muted-color);cursor:grab}.drag-handle:active{cursor:grabbing}.block-content{display:flex;flex-direction:column;flex:1}.block-title{font-weight:600;font-size:.95rem;margin-bottom:.25rem}.block-time{font-size:.85rem;color:var(--on-surface-muted-color)}.block-ort{font-size:.75rem;color:var(--primary-color);margin-top:.25rem;font-weight:500}.empty-pool-message{text-align:center;padding:2rem;color:var(--on-surface-muted-color);font-style:italic;border:2px dashed var(--border-color);border-radius:8px}.manual-shifts-column{display:flex;flex-direction:column;height:100%;overflow:hidden}.manual-shifts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.manual-actions{display:flex;gap:1rem}.manual-shifts-list{flex:1;overflow-y:auto;padding-right:.5rem}.manual-plan-table{width:100%;border-collapse:collapse}.manual-plan-table th,.manual-plan-table td{padding:.75rem;border-bottom:1px solid var(--border-color);text-align:left;vertical-align:middle}.manual-plan-table th{background-color:var(--surface-color);color:var(--on-surface-muted-color);font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.05em;position:sticky;top:0;z-index:10}.shift-drop-cell{background-color:var(--row-highlight-color);border:2px dashed transparent;transition:all .2s;min-width:300px}.shift-drop-cell.drag-over{border-color:var(--primary-color);background-color:var(--selection-highlight-color)}.shift-blocks-container{display:flex;flex-wrap:wrap;gap:.5rem;min-height:48px;align-items:center}.invalid-row td{background-color:#cf66790d}.shift-errors-inline{margin-top:.5rem;display:flex;flex-wrap:wrap;gap:.5rem}.manual-block-item.selected{border-color:var(--primary-color);box-shadow:0 0 0 2px var(--primary-color);background-color:var(--selection-highlight-color);transform:scale(1.02);z-index:10}.shift-drop-cell.clickable{cursor:pointer;background-color:#0078d70d;border:2px dashed var(--primary-color)}.shift-drop-cell.clickable:hover{background-color:#0078d726}.manual-pool-list.clickable{cursor:pointer;background-color:#0078d70d;border:2px dashed var(--primary-color);border-radius:8px;min-height:100px}.manual-pool-list.clickable:hover{background-color:#0078d71a}.selection-banner{background-color:var(--primary-color);color:#fff;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;font-weight:500;box-shadow:0 4px 6px #0000001a;animation:slideDown .3s ease-out}@keyframes slideDown{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.shift-name-input{background:transparent;border:none;color:var(--on-surface-color);font-size:1.1rem;font-weight:600;width:100%;outline:none}.shift-name-input:focus{border-bottom:1px solid var(--primary-color)}.icon-button{background:none;border:none;cursor:pointer;color:var(--on-surface-muted-color);padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s,color .2s}.icon-button:hover{background-color:var(--row-highlight-color);color:var(--on-surface-color)}.icon-button.danger:hover{color:var(--error-color);background-color:#cf66791a}.manual-shift-stats{display:flex;justify-content:space-between;font-size:.85rem;background-color:var(--row-highlight-color);padding:.5rem;border-radius:6px}.stat-item{display:flex;flex-direction:column;align-items:center}.stat-label{color:var(--on-surface-muted-color);font-size:.75rem}.stat-value{font-weight:600}.error-text{color:var(--error-color)}.shift-errors{background-color:#cf66791a;padding:.5rem;border-radius:6px;border-left:3px solid var(--error-color)}.shift-drop-zone{min-height:150px;display:flex;flex-direction:column;gap:.5rem;padding:.5rem;background-color:var(--background-color);border-radius:6px;border:1px dashed var(--border-color)}.empty-shift-message{margin:auto;color:var(--on-surface-muted-color);font-size:.9rem;font-style:italic}@media(max-width:1200px){.tab-content,.tab-content.umlauf-tab{grid-template-columns:1fr}}.card{background-color:var(--surface-color);border-radius:var(--border-radius);padding:1.5rem;box-shadow:var(--shadow);border:1px solid var(--border-color);display:flex;flex-direction:column;transition:background-color .3s ease,border-color .3s ease}.card h2{font-size:1.5rem;margin-bottom:1.5rem;color:var(--on-surface-color);border-bottom:1px solid var(--border-color);padding-bottom:.75rem;display:flex;justify-content:space-between;align-items:center}.card .description{color:var(--on-surface-muted-color);margin-bottom:1.5rem;font-size:.95rem}.form-group{margin-bottom:1.5rem}.plan-actions{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;align-items:center}.vordefinierte-bloecke-actions{margin-bottom:1rem}.vordefinierte-bloecke-actions .button{margin-top:.5rem;width:auto;padding:.5rem 1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--on-surface-muted-color)}.input,.button{width:100%;padding:.75rem;border-radius:var(--border-radius);border:1px solid var(--border-color);background-color:var(--background-color);color:var(--on-surface-color);font-family:var(--font-family);font-size:1rem;transition:border-color .2s,box-shadow .2s,background-color .3s ease,color .3s ease}.input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #bb86fc33}body.light-mode .input:focus{box-shadow:0 0 0 3px #6200ee33}.button{cursor:pointer;font-weight:600;border:none}.button-primary{background-color:var(--primary-color);color:var(--on-primary-color)}.button-primary:hover{opacity:.9}.button-primary:disabled,.button-secondary:disabled,.button-ai:disabled,.button.disabled{background-color:#555;color:#999;cursor:not-allowed;border-color:#555!important}body.light-mode .button-primary:disabled,body.light-mode .button-secondary:disabled,body.light-mode .button-ai:disabled,body.light-mode .button.disabled{background-color:#e0e0e0;color:#9e9e9e;border-color:#e0e0e0!important}.button-secondary{background-color:transparent;color:var(--primary-color);border:1px solid var(--primary-color)}.button-secondary:hover:not(:disabled){background-color:#bb86fc1a}body.light-mode .button-secondary:hover:not(:disabled){background-color:#6200ee0d}.button-ai{background-color:var(--secondary-color);color:var(--on-primary-color);border:1px solid var(--secondary-color)}.button-ai:hover:not(:disabled){opacity:.9}.button-small{padding:.5rem .75rem;font-size:.9rem;width:auto}.button-danger{background-color:transparent;color:var(--error-color);border:1px solid transparent;padding:.5rem .75rem;width:auto;font-size:.9rem;border-radius:var(--border-radius);line-height:1}.button-danger:hover{background-color:#cf66791a;border-color:var(--error-color)}body.light-mode .button-danger:hover{background-color:#b000200d}.zob-input-group{display:flex;gap:.75rem;align-items:center;margin-bottom:.5rem}.zob-input-group .input{flex:1 1 120px}.zob-input-group .button-danger{padding:.25rem;width:30px;height:30px;font-size:1.2rem;flex-shrink:0}.ablöse-checkbox{display:flex;align-items:center;gap:.5rem;flex:1 1 auto;white-space:nowrap}.ablöse-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary-color);cursor:pointer}.ablöse-checkbox label{margin-bottom:0;font-size:.9rem;color:var(--on-surface-muted-color);cursor:pointer;-webkit-user-select:none;user-select:none}.zob-actions{margin-top:1rem}.list-container{margin-top:1rem;flex-grow:1;overflow-y:auto;padding-right:.5rem;display:flex;flex-direction:column}.tab-content.umlauf-tab .list-container{max-height:40vh}.list-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background-color:var(--background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);margin-bottom:.75rem;transition:background-color .2s;gap:1rem}.list-item:hover{background-color:var(--row-highlight-color)}.list-item-content{display:flex;flex-direction:column;flex-grow:1;overflow:hidden}.list-item-title{font-weight:600;font-size:1.1rem}.list-item-details{font-size:.9rem;color:var(--on-surface-muted-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-item-actions{display:flex;gap:.5rem;flex-shrink:0}.placeholder{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;flex-grow:1;color:var(--on-surface-muted-color);border:2px dashed var(--border-color);border-radius:var(--border-radius);padding:2rem;min-height:300px}.placeholder svg{width:50px;height:50px;margin-bottom:1rem;stroke:var(--on-surface-muted-color)}.spinner{width:40px;height:40px;border:4px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}@keyframes spin{to{transform:rotate(360deg)}}.error-message{background-color:#cf66791a;color:var(--error-color);border:1px solid var(--error-color);border-radius:var(--border-radius);padding:1rem;text-align:center}body.light-mode .error-message{background-color:#b000201a}.modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;padding:1rem}body.light-mode .modal-backdrop{background-color:#00000080}.modal{background-color:var(--surface-color);padding:2rem;border-radius:var(--border-radius);box-shadow:var(--shadow);width:100%;max-width:600px;max-height:90vh;overflow-y:auto;border:1px solid var(--border-color)}.modal h2{font-size:1.5rem;margin-bottom:1.5rem;color:var(--on-surface-color)}.modal-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border-color)}.modal-actions .button{width:auto}.preview-info{background-color:var(--background-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:1rem;margin-bottom:1.5rem}.preview-info p{margin-bottom:.5rem}.preview-info p:last-child{margin-bottom:0}.table-container{width:100%;overflow-x:auto}.dienstplan-table-detailed{width:100%;border-collapse:collapse;font-size:.9rem;min-width:1200px}.dienstplan-table-detailed th,.dienstplan-table-detailed td{padding:.75rem;text-align:center;vertical-align:middle;border:1px solid var(--border-color);white-space:nowrap}.dienstplan-table-detailed thead th{background-color:#2a2a2a;font-weight:600;color:var(--on-surface-muted-color);text-transform:uppercase;font-size:.75rem;letter-spacing:.5px}body.light-mode .dienstplan-table-detailed thead th{background-color:#e0e0e0;color:#424242}.dienstplan-table-detailed tbody tr{transition:background-color .2s}.dienstplan-table-detailed tbody tr:hover{background-color:var(--row-highlight-color)}.dienstplan-table-detailed tbody tr.drag-over{background-color:var(--primary-variant-color)}.dienstplan-table-detailed tbody tr.selected{background-color:var(--selection-highlight-color);outline:1px solid var(--primary-color);outline-offset:-1px}.dienstplan-table-detailed tbody td:first-child,.dienstplan-table-detailed tbody td:last-child{font-weight:700}.dienstplan-table-detailed tbody td:last-child{color:var(--primary-color)}.selection-cell{width:40px}.selection-cell input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary-color)}.fahrt-cell{min-width:150px}.fahrt-cell[draggable=true]{cursor:grab;-webkit-user-select:none;user-select:none}.fahrt-cell[draggable=true]:active{cursor:grabbing}.fahrt-kurs{font-weight:600;margin-bottom:.25rem}.fahrt-zeit{font-size:.85rem;color:var(--on-surface-muted-color)}.fahrt-zeit span{color:var(--secondary-color);font-weight:700;margin-left:.25rem;cursor:help}.fahrt-dauer{font-size:.8rem;color:var(--on-surface-muted-color);margin-top:.2rem}.verkehrstag-selector{display:flex;background-color:var(--background-color);border-radius:var(--border-radius);padding:.25rem;margin-bottom:1.5rem;border:1px solid var(--border-color)}.verkehrstag-selector button{flex:1;padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:var(--on-surface-muted-color);background-color:transparent;border:none;border-radius:6px;cursor:pointer;transition:background-color .2s,color .2s}.verkehrstag-selector button:hover{background-color:var(--row-highlight-color);color:var(--on-surface-color)}.verkehrstag-selector button.active{background-color:var(--primary-color);color:var(--on-primary-color);font-weight:600}.timeline-container{margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.timeline-container h3{margin-bottom:1.5rem;text-align:center;color:var(--primary-color);font-size:1.25rem}.timeline{position:relative;padding-left:2rem;margin-left:5rem;border-left:2px solid var(--border-color)}.timeline-item{position:relative;margin-bottom:1.5rem;padding-left:1rem}.timeline-item:last-child{margin-bottom:0}.timeline-item:before{content:"";position:absolute;left:calc(-2.5rem - 1px);top:4px;width:14px;height:14px;border-radius:50%;background-color:var(--primary-color);border:2px solid var(--surface-color)}.timeline-time{position:absolute;left:-7.5rem;top:0;font-weight:600;color:var(--on-surface-color);width:5rem;text-align:right}.timeline-content{background-color:var(--background-color);padding:.75rem 1rem;border-radius:var(--border-radius);border:1px solid var(--border-color);position:relative}.timeline-content strong{display:block;font-size:1rem;margin-bottom:.25rem}.timeline-duration{font-size:.9rem;color:var(--on-surface-muted-color)}.dau-mode-toggle{display:flex;align-items:center;gap:.75rem;background-color:var(--background-color);padding:1rem;border-radius:var(--border-radius);border:1px solid var(--border-color)}.dau-mode-toggle:hover{background-color:var(--row-highlight-color)}.dau-mode-toggle input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary-color);cursor:pointer}.dau-mode-toggle label{margin:0;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;flex-grow:1}.placeholder-text{text-align:center;color:var(--on-surface-muted-color);background-color:var(--background-color);border:1px dashed var(--border-color);border-radius:var(--border-radius);padding:2rem;margin-top:1rem}.parameter-description{font-size:.9rem;color:var(--on-surface-muted-color);margin-top:.5rem}.selected-shift-row{background-color:var(--selection-highlight-color)!important;border-left:4px solid var(--primary-color)}@media print{body,body.light-mode{background-color:#fff;color:#000;font-size:10pt}header,.tabs,.plan-actions,.modal-backdrop,.verkehrstag-selector{display:none!important}main{padding:0;max-width:100%}.tab-content,.tab-content.single-card{display:block;grid-template-columns:none}.card{box-shadow:none;border:none;padding:0;background-color:#fff!important}.card h2{text-align:center;margin-bottom:1rem;color:#000}.table-container{overflow-x:visible}.dienstplan-table-detailed{min-width:0;font-size:8pt}.dienstplan-table-detailed th,.dienstplan-table-detailed td{border:1px solid #cccccc;padding:4px;color:#000}.dienstplan-table-detailed thead th{background-color:#f0f0f0;color:#000}.fahrt-cell{min-width:auto}.fahrt-zeit,.fahrt-dauer,.fahrt-zeit span,.dienstplan-table-detailed tbody td:last-child{color:#000}.selection-cell,.dienstplan-table-detailed th:first-child,.dienstplan-table-detailed td:first-child{display:none}@page{size:A4 landscape;margin:1cm}}
