.responsive-table{border-collapse:separate;border-spacing:0;width:100%;border-radius:8px;overflow:hidden;box-shadow:0 4px 6px #0000001a}.responsive-table th,.responsive-table td{border:none;padding:12px;text-align:left}.responsive-table th{background-color:#3498db;color:#fff;font-weight:700;text-transform:uppercase}.responsive-table .disabled{opacity:.6;background-color:#f0f0f0;color:#888}.responsive-table .conflict{background-color:#ffebee}.semester-WiSe2425{background-color:#a8e6cf!important}.semester-SoSe25{background-color:#ffd3b6!important}.semester-WiSe2526{background-color:#ffaaa5!important}.semester-SoSe26{background-color:#a5bbff!important}@media screen and (max-width: 600px){.responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:99%}.responsive-table tr{margin-bottom:20px;border:1px solid #ddd;border-radius:8px;overflow:hidden;background-color:#f9f9f9;position:relative}.responsive-table td{text-align:left;padding:12px 15px 12px 120px;position:relative;border-bottom:1px solid #eee;min-height:44px}.responsive-table td:last-child{border-bottom:none}.responsive-table td:before{content:attr(data-label);position:absolute;left:15px;width:100px;padding-right:10px;white-space:nowrap;font-weight:700;text-transform:uppercase;font-size:.85em;color:#555}.responsive-table td:first-child{background-color:#f0f0f0;padding:15px 50px 15px 15px;text-align:left;min-height:50px;position:relative}.responsive-table td:first-child:before{content:"Auswahl";display:inline-block;position:static;font-weight:700;text-transform:uppercase;font-size:.85em;color:#555;margin-right:10px}.responsive-table input[type=checkbox]{position:absolute;left:100px;width:20px;height:20px}}.praktikum-badge{display:inline-block;background-color:#4caf50;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.seminary-badge{display:inline-block;background-color:#4ca3af;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.project-badge{display:inline-block;background-color:#9b59b6;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.thesis-badge{display:inline-block;background-color:#f39c12;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.progress-bar-container{margin-bottom:20px}.progress-bar{width:100%;background-color:#e0e0e0;border-radius:10px;overflow:hidden}.schedule{width:100%;border-spacing:0;border-radius:8px;overflow:hidden;box-shadow:0 4px 6px #0000001a;margin-bottom:20px;border-collapse:collapse}.schedule th,.schedule td{border:none;padding:12px;text-align:left}.schedule th{background-color:#3498db;color:#fff;font-weight:700;text-transform:uppercase}.schedule td{position:relative;padding:8px;height:25px;vertical-align:top}.schedule-cell{position:relative;min-height:100px}.course-item{border-radius:4px;padding:5px;font-size:.85em;overflow:hidden;box-shadow:0 1px 3px #0000001f;display:flex;flex-direction:column}.course-item.lecture{background-color:#e6f3ff;border-left:4px solid #3498db}.course-item.tutorial{background-color:#fff0e6;border-left:4px solid #e74c3c}.time-soft{font-size:.8em;color:#555}.course-type{display:inline-block;margin-left:10px;vertical-align:middle;position:absolute;top:5px;right:5px}.seminary-badge-schedule{background-color:#9b59b6}.room-info{color:#666}.mobile-schedule-course .room-info{display:inline-block;margin-left:8px;color:#666}.mobile-schedule .course-type{margin-left:10px;position:static}@media (max-width: 768px){.schedule{display:none}.mobile-schedule{display:block}.courses-without-schedule{margin-top:15px}.mobile-schedule-time{font-size:.9em;color:#666;margin-bottom:5px}}.current-time-line{position:"absolute";left:0;right:0;height:"2px";background-color:"red";z-index:1}.courses-without-schedule{margin-top:20px;margin-bottom:20px;padding:15px;background-color:#f8f9fa;border-radius:8px;box-shadow:0 2px 4px #0000000d}.courses-without-schedule .course{color:#333;padding-right:.5em}.schedule-row{border-bottom:.5px dashed #ddd}.warning{margin:20px 0;padding:15px;border-radius:5px;color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb}.warning ul{margin-top:10px;padding-left:20px}.warning li{margin-bottom:5px}.App{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;margin:0 auto;padding:20px;max-width:1200px;background-color:#f9f9f9}h1,h2{color:#2c3e50;margin-bottom:20px}h1{font-size:2em;border-bottom:2px solid #3498db;padding-bottom:10px}.table-container{overflow-x:auto}table,.responsive-table{border-collapse:separate;border-spacing:0;width:100%;border-radius:8px;overflow:hidden;box-shadow:0 4px 6px #0000001a}th,td{border:none;padding:12px;text-align:left}th{background-color:#3498db;color:#fff;font-weight:700;text-transform:uppercase}.progress-bar{width:100%;background-color:#e0e0e0;border-radius:10px;overflow:hidden;margin-bottom:20px}.progress{height:24px;background-color:#3498db;text-align:center;line-height:24px;color:#fff;transition:width .3s ease}.progress span{margin-left:15px}.duplicate{opacity:.6;background-color:#f0f0f0!important;color:#888}.conflict{background-color:#ffebee!important}.warning,.disclaimer{margin:20px 0;padding:15px;border-radius:5px}.warning{color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb}.disclaimer{color:#0c5460;background-color:#d1ecf1;border:1px solid #bee5eb}.attention{background-color:#dabf6c;color:#000;border:1px solid #dabf6c}input[type=checkbox]{transform:scale(1.2);margin-right:5px}.course-name{font-weight:700;max-width:20vw}.instructor{font-style:italic}.domain-badge,.semester-badge{display:inline-block;padding:3px 8px;border-radius:12px;font-size:.8em;font-weight:700}.FM .domain-badge{background-color:#3498db;color:#fff}.PI .domain-badge{background-color:#e74c3c;color:#fff}.semester-badge{background-color:#2ecc71;color:#fff}.semester-WiSe-24-25{background-color:#a8e6cf}.semester-SoSe-25{background-color:#ffd3b6}.semester-WiSe-25-26{background-color:#ffaaa5}.copyright{flex-shrink:0;background-color:#f0f0f0;padding:10px 0;text-align:center;font-size:.9em;color:#777;width:100%;border-top:1px solid #ddd}.schedule .lecture{background-color:#e6f3ff}.schedule .tutorial{background-color:#fff0e6}.schedule td{position:relative;padding:10px}.course-type{display:inline-block;margin-left:10px;vertical-align:middle}.type-badge{display:inline-block;width:20px;height:20px;border-radius:50%;text-align:center;line-height:20px;font-size:12px;font-weight:700;color:#fff;vertical-align:middle}.lecture-badge{background-color:#3498db}.tutorial-badge{background-color:#e74c3c}.bachelor-badge{display:inline-block;background-color:#ff9800;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.conditionMet{color:green;font-weight:700}.conditionNotMet{color:red;font-weight:700}.mobile-schedule{display:none}.mobile-schedule-day-group{margin-bottom:20px;border:1px solid #ddd;border-radius:5px;overflow:hidden}.mobile-schedule-day-group h3{margin:0;padding:10px;background-color:#f0f0f0;border-bottom:1px solid #ddd}.mobile-schedule-item{padding:10px;border-bottom:1px solid #eee}.mobile-schedule-item:last-child{border-bottom:none}.mobile-schedule-time{font-size:.9em;color:#666;margin-bottom:5px}.mobile-schedule-course{display:flex;justify-content:space-between;align-items:center}.mobile-schedule .course-name{flex-grow:1}.mobile-schedule .course-type{margin-left:10px}.align-top{vertical-align:top}.custom-event-form{display:flex;align-items:center;gap:10px;margin-bottom:20px}.custom-event-form label{font-weight:700}.custom-event-form select,.custom-event-form input{padding:5px;border:1px solid #ccc;border-radius:4px}.custom-event-form button{background-color:#3498db;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer}.app-controls{display:flex;gap:10px;margin-bottom:15px}.edit-courses-button,.changelog-button{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;color:#fff}.edit-courses-button{background-color:#4caf50}.edit-courses-button:hover{background-color:#45a049}.changelog-button{background-color:#3498db}.changelog-button:hover{background-color:#2980b9}@media (max-width: 768px){.App{padding:10px}h1{font-size:1.5em}h2{font-size:1.2em}table{font-size:.9em}th,td{padding:8px}.schedule{display:none}.mobile-schedule{display:block}}.spacer{margin-right:10px;text-align:center}@media screen and (max-width: 600px){.responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:99%}.responsive-table tr{margin-bottom:20px;border:1px solid #ddd;border-radius:8px;overflow:hidden;background-color:#f9f9f9;position:relative}.responsive-table td{text-align:left;padding:12px 15px 12px 120px;position:relative;border-bottom:1px solid #eee;min-height:44px}.responsive-table td:last-child{border-bottom:none}.responsive-table td:before{content:attr(data-label);position:absolute;left:15px;width:100px;padding-right:10px;white-space:nowrap;font-weight:700;text-transform:uppercase;font-size:.85em;color:#555}.responsive-table td:first-child{background-color:#f0f0f0;padding:15px 50px 15px 15px;text-align:left;min-height:50px;position:relative}.responsive-table td:first-child:before{content:"Auswahl";display:inline-block;position:static;font-weight:700;text-transform:uppercase;font-size:.85em;color:#555;margin-right:10px}.responsive-table input[type=checkbox]{position:absolute;left:100px;width:20px;height:20px}.responsive-table .course-name{font-size:1.1em;font-weight:700;margin-bottom:5px}.responsive-table .instructor{font-style:italic;color:#666}.responsive-table .domain-badge,.responsive-table .semester-badge{display:inline-block;margin-top:5px}.responsive-table .course-type{display:inline-block;margin-left:10px;vertical-align:middle}.responsive-table .type-badge{display:inline-block;vertical-align:middle;margin-top:-2px}.responsive-table .course-name{display:inline-block;font-size:1.1em;font-weight:700;margin-right:10px;vertical-align:middle}}.badge{font-weight:700;display:inline-block;background-color:#ff9800;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-left:5px;vertical-align:middle}.badge-seminar{color:#fff;background-color:#4ca3af}.badge-proseminar{color:#fff;background-color:#9b59b6}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .2s ease-in-out;z-index:1000}.modal-content{background:#fff;padding:24px;border-radius:12px;width:90%;max-width:min(400px,90vw);box-shadow:0 4px 20px #00000026;animation:slideIn .2s ease-out}.modal-content h2{margin:0 0 20px;font-size:1.5rem;color:#333}.modal-content input{width:93.5%;margin:8px 0 16px;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:border-color .2s}.modal-content input:focus{outline:none;border-color:#007aff;box-shadow:0 0 0 2px #007aff1a}.modal-content select{width:100%;margin:8px 0 16px;padding:12px 40px 12px 12px;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:all .2s;background-color:#fff;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:16px}.modal-content select:focus{outline:none;border-color:#007aff;box-shadow:0 0 0 2px #007aff1a}.modal-content select:hover{border-color:#007aff}.modal-content form{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start}.form-group{display:flex;flex-direction:column;gap:8px}.form-group.full-width{grid-column:1 / -1}.form-group.name-field{grid-column:1 / 2}.form-group.cp-field{grid-column:2 / 3}.form-group.type-field{grid-column:1 / -1}.form-group label{font-size:.9rem;color:#666}.form-group input[type=text]{width:100%;max-width:250px}.form-group input[type=number]{width:80px}.form-group select{width:100%;max-width:250px}.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.modal-actions button{padding:10px 20px;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.modal-actions button:first-child{background:transparent;border:1px solid #ddd}.modal-actions button:last-child{background:#007aff;color:#fff;border:none}.modal-actions button:hover{transform:translateY(-1px)}.modal-actions button:active{transform:translateY(0)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 480px){.modal-content{padding:20px;width:95%}.modal-content form{grid-template-columns:1fr}.form-group.name-field,.form-group.cp-field,.form-group.type-field{grid-column:1}}.custom-event{padding:8px;border-radius:4px;border:1px solid #eee;margin-bottom:4px}.event-type-badge{display:inline-block;color:#fff;font-size:.8em;padding:2px 5px;border-radius:3px;margin-right:8px;vertical-align:middle}.event-type-badge.pi-lecture{background-color:#e74c3c}.event-type-badge.fm-lecture{background-color:#3498db}.event-type-badge.general{background-color:#2ecc71}.custom-events-table table{width:100%;border-collapse:separate;border-spacing:0;margin-bottom:20px;border-radius:8px;overflow:hidden;box-shadow:0 4px 6px #0000001a}.custom-events-table th,.custom-events-table td{padding:12px;text-align:left;border-bottom:1px solid #eee}.custom-events-table th{background-color:#3498db;color:#fff;font-weight:700;text-transform:uppercase}.custom-event-form{display:flex;align-items:center;gap:10px;margin:20px 0;padding:15px;background-color:#f8f9fa;border-radius:8px;box-shadow:0 2px 4px #0000000d}.custom-event-form label{font-weight:700;color:#333}.custom-event-form input,.custom-event-form select{padding:8px;border:1px solid #ddd;border-radius:4px;font-size:14px}.custom-event-form button{background-color:#3498db;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;transition:background-color .2s}.custom-event-form button:hover{background-color:#2980b9}.event-type-badge{display:inline-block;padding:4px 8px;border-radius:12px;font-size:.8em;font-weight:700;color:#fff}.event-type-badge.praktische-informatik{background-color:#e74c3c}.event-type-badge.formale-methoden{background-color:#3498db}.event-type-badge.allgemeine-kompetenzen{background-color:#ff9800}.icon-button{background:none;border:none;cursor:pointer;font-size:16px;padding:4px;margin:0 2px}.icon-button:hover{opacity:.7}.button-primary{padding:10px 20px;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s;background:#007aff;color:#fff;border:none}.button-primary:hover{transform:translateY(-1px)}.button-primary:active{transform:translateY(0)}.sync-container{display:flex;flex-direction:row;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;background:#fff;padding:12px;border-radius:8px;box-shadow:0 2px 8px #0000001a}.sync-button{padding:8px 16px;font-size:14px;border-radius:4px;border:1px solid #ddd;background:#fff;cursor:pointer;transition:all .2s ease;min-width:120px;margin:5px;min-height:40px}.changelog-button{color:gray!important}.sync-button:hover{background:#f5f5f5;transform:translateY(-1px);box-shadow:0 2px 4px #0000000d}.sync-button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.sync-button:active{transform:translateY(1px)}.sync-id{padding:8px 0}.course-editor-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;overflow-y:auto;padding:20px}.course-editor-modal{background-color:#fff;padding:30px;border-radius:8px;width:95%;max-width:1400px;max-height:90vh;overflow-y:auto;position:relative;box-shadow:0 5px 20px #0000004d}.course-editor-modal h2{margin-top:0;color:#2c3e50;border-bottom:2px solid #3498db;padding-bottom:10px;margin-right:40px}.close-button{position:absolute;top:20px;right:20px;font-size:28px;background:none;border:none;color:#7f8c8d;cursor:pointer;transition:color .2s}.close-button:hover{color:#e74c3c}.editor-controls{margin-bottom:20px;display:flex;gap:15px;align-items:center;flex-wrap:wrap}.editor-controls button{padding:10px 16px;font-weight:700;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;color:#fff;display:flex;align-items:center;justify-content:center}.editor-controls button:first-child{background-color:#2ecc71}.editor-controls button:first-child:hover{background-color:#27ae60}.editor-controls button:nth-child(2){background-color:#3498db}.editor-controls button:nth-child(2):hover{background-color:#2980b9}.courses-table-container{overflow-x:auto;margin-top:20px;border-radius:8px;box-shadow:0 2px 10px #0000001a}.courses-table{width:100%;border-collapse:collapse;margin-top:0;background-color:#fff}.courses-table th,.courses-table td{border:1px solid #ddd;padding:12px 10px;text-align:left;vertical-align:middle}.courses-table th{background-color:#3498db;color:#fff;position:sticky;top:0;z-index:10;font-weight:700;text-transform:uppercase;font-size:.9em}.courses-table tr:nth-child(2n){background-color:#f9f9f9}.courses-table tr:hover{background-color:#f1f8ff}.courses-table input,.courses-table select{width:100%;padding:8px;box-sizing:border-box;border:1px solid #ddd;border-radius:4px;transition:border-color .2s}.courses-table input:focus,.courses-table select:focus{border-color:#3498db;outline:none;box-shadow:0 0 0 2px #3498db33}.courses-table input[type=number]{width:80px;text-align:right}.remove-course-button{background-color:#e74c3c;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;transition:background-color .2s;font-weight:700}.remove-course-button:hover{background-color:#c0392b}.success-message{color:#27ae60;margin-left:15px;font-weight:700;background-color:#eafaf1;padding:8px 15px;border-radius:4px;border-left:4px solid #2ecc71;animation:fadeOut 3s forwards;animation-delay:1s}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.removed-ids-section{margin-bottom:25px;background-color:#f8f9fa;padding:15px;border-radius:8px;border:1px solid #e9ecef}.removed-ids-section h3{margin-top:0;color:#2c3e50;margin-bottom:15px;font-size:1.2em}.removed-ids-list{display:flex;flex-wrap:wrap;gap:10px}.removed-id-item{background-color:#e74c3c;color:#fff;padding:8px 12px;border-radius:4px;display:flex;align-items:center;font-weight:700}.no-removed-ids{color:#7f8c8d;font-style:italic}.generated-code-container{margin-top:25px;border:1px solid #ddd;padding:20px;border-radius:8px;position:relative;background-color:#f8f9fa}.generated-code-container h3{margin-top:0;color:#2c3e50;margin-bottom:15px;font-size:1.2em}.close-code-button{position:absolute;top:15px;right:15px;background-color:#7f8c8d;color:#fff;border:none;padding:5px 10px;border-radius:4px;cursor:pointer;transition:background-color .2s}.close-code-button:hover{background-color:#636e72}.generated-code{background-color:#2d3436;color:#dfe6e9;padding:15px;border-radius:6px;overflow-x:auto;max-height:400px;overflow-y:auto;font-family:Consolas,Monaco,Andale Mono,monospace;font-size:14px;line-height:1.5;white-space:pre;word-break:normal;word-spacing:normal;-moz-tab-size:4;tab-size:4}@media (max-width: 768px){.course-editor-modal{padding:15px;width:100%;max-height:95vh}.courses-table th,.courses-table td{padding:8px 6px;font-size:.9em}.courses-table input,.courses-table select{padding:6px}.courses-table input[type=number]{width:60px}.remove-course-button{padding:4px 8px;font-size:.85em}.editor-controls{flex-direction:column;align-items:flex-start}.editor-controls button{width:100%}.success-message{display:block;margin-left:0;margin-top:10px}}.changelog-content{max-width:min(600px,90vw);max-height:80vh;overflow-y:auto}.changelog-section{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #eee}.changelog-section:last-child{border-bottom:none;padding-bottom:0}.changelog-section h3{margin-top:0;margin-bottom:12px;color:#333;font-size:1.2rem}.changelog-section ul{margin:0;padding-left:20px}.changelog-section li{margin-bottom:8px;line-height:1.5}
