:root{--color-primary: #2563eb;--color-primary-dark: #1d4ed8;--color-primary-light: #dbeafe;--color-frei: #16a34a;--color-frei-bg: #dcfce7;--color-belegt: #dc2626;--color-belegt-bg: #fee2e2;--color-gesperrt: #7c3aed;--color-gesperrt-bg: #ede9fe;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-muted: #64748b;--radius: 8px;--radius-lg: 12px;--shadow: 0 1px 3px rgba(0,0,0,.1);--shadow-md: 0 4px 6px rgba(0,0,0,.07);--shadow-lg: 0 10px 15px rgba(0,0,0,.1);--font: system-ui, -apple-system, sans-serif;--transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);line-height:1.5;min-height:100vh}a{color:var(--color-primary);text-decoration:none}button{cursor:pointer;font-family:inherit;touch-action:manipulation}button,a,[role=button]{min-height:44px}.status-badge{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.8rem;font-weight:600}.status-frei{background:var(--color-frei-bg);color:var(--color-frei)}.status-belegt{background:var(--color-belegt-bg);color:var(--color-belegt)}.status-gesperrt{background:var(--color-gesperrt-bg);color:var(--color-gesperrt)}.spinner-wrap{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:1rem}.spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.spinner-text{color:var(--color-text-muted);font-size:.9rem}.dashboard{max-width:1200px;margin:0 auto;padding:1.5rem 1rem}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.dashboard-title{font-size:1.6rem;font-weight:700;color:var(--color-text)}.dashboard-datum{color:var(--color-text-muted);font-size:.95rem;margin-top:.2rem}.dashboard-slot{color:var(--color-primary);font-size:.9rem;margin-top:.25rem}.dashboard-stats{display:flex;gap:1rem}.stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.75rem 1.25rem;text-align:center;box-shadow:var(--shadow)}.stat-zahl{display:block;font-size:1.8rem;font-weight:700;color:var(--color-primary);line-height:1}.stat-label{font-size:.8rem;color:var(--color-text-muted)}.dashboard-filter{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1.25rem}.filter-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.35rem .9rem;font-size:.875rem;color:var(--color-text-muted);min-height:36px;transition:all var(--transition)}.filter-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.filter-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.raum-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.raum-kachel{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.25rem;border:2px solid var(--color-border);cursor:pointer;transition:all var(--transition);box-shadow:var(--shadow)}.raum-kachel:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.raum-frei{border-color:var(--color-frei-bg)}.raum-belegt{border-color:var(--color-belegt-bg)}.raum-gesperrt{border-color:var(--color-gesperrt-bg)}.kachel-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem;gap:.5rem}.kachel-name{font-size:1rem;font-weight:700;color:var(--color-text)}.kachel-typ{font-size:.8rem;color:var(--color-text-muted);margin-top:.1rem}.kachel-beschreibung{font-size:.82rem;color:var(--color-text-muted);margin-bottom:.75rem}.kachel-stunden{display:flex;gap:3px;flex-wrap:wrap;margin-top:.75rem}.stunden-slot{width:14px;height:14px;border-radius:3px;flex-shrink:0}.slot-frei{background:var(--color-frei-bg);border:1px solid var(--color-frei);opacity:.6}.slot-belegt{background:var(--color-belegt-bg);border:1px solid var(--color-belegt)}.slot-gesperrt{background:var(--color-gesperrt-bg);border:1px solid var(--color-gesperrt)}.slot-aktuell{outline:2px solid var(--color-text);outline-offset:1px}.kachel-info-text{font-size:.82rem;color:var(--color-belegt);margin-top:.5rem;font-weight:600}.dashboard-error{padding:2rem;text-align:center;color:var(--color-belegt)}.dashboard-leer{padding:3rem;text-align:center;color:var(--color-text-muted)}@media(max-width:640px){.raum-grid{grid-template-columns:1fr}.dashboard-header{flex-direction:column}.dashboard-stats{flex-wrap:wrap;gap:.5rem;width:100%}.stat{flex:1 1 auto;min-width:5.5rem;padding:.6rem .75rem}.stat-zahl{font-size:1.4rem}.dashboard-title{font-size:1.3rem}}.rb-confirm-backdrop{position:fixed;inset:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:10000;padding:1rem}.rb-confirm-card{background:var(--color-surface, #ffffff);border-radius:var(--radius-lg, 12px);box-shadow:var(--shadow-lg, 0 10px 25px rgba(0, 0, 0, .18));padding:1.5rem 1.5rem 1.25rem;max-width:420px;width:100%;border:1px solid var(--color-border, #e2e8f0)}.rb-confirm-text{margin:0 0 1.25rem;font-size:1rem;line-height:1.5;color:var(--color-text, #1e293b)}.rb-confirm-actions{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.rb-confirm-actions button{min-height:44px;padding:.5rem 1rem;border:1px solid var(--color-border, #e2e8f0);background:var(--color-surface, #ffffff);color:var(--color-text, #1e293b);border-radius:var(--radius, 8px);font-size:.95rem;cursor:pointer;transition:var(--transition, .15s ease)}.rb-confirm-actions button:hover{background:var(--color-bg, #f8fafc)}.rb-confirm-actions button.rb-confirm-danger{background:var(--color-belegt, #dc2626);color:#fff;border-color:var(--color-belegt, #dc2626)}.rb-confirm-actions button.rb-confirm-danger:hover{background:#b91c1c}.kz-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:300;padding:1rem}.kz-box{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.75rem 2rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.kz-titel{margin:0 0 .75rem;font-size:1.25rem;color:var(--color-text)}.kz-text,.kz-hinweis{color:var(--color-text-muted);font-size:.95rem;line-height:1.5;margin:0 0 .75rem}.kz-form{display:flex;flex-direction:column;gap:.6rem}.kz-label{font-size:.9rem;font-weight:600;color:var(--color-text)}.kz-input{padding:.6rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:1.1rem;font-weight:700;letter-spacing:.05em;max-width:8rem;min-height:40px}.kz-input:focus{outline:none;border-color:var(--color-primary)}.kz-vorschau{margin:0;font-size:.9rem;color:var(--color-text)}.kz-vorschau-leer{color:var(--color-text-muted)}.kz-details{font-size:.9rem;color:var(--color-text-muted);line-height:1.5;background:var(--color-bg);border-radius:var(--radius);padding:.5rem .75rem}.kz-details summary{cursor:pointer;font-weight:600;color:var(--color-text)}.kz-details p{margin:.5rem 0 0}.kz-box code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--color-primary-light);padding:.05rem .35rem;border-radius:4px;font-size:.9em}.kz-erfolg{color:var(--color-frei);font-size:.95rem;line-height:1.5;margin:0 0 .5rem}.kz-fehler{color:var(--color-belegt);font-size:.9rem;margin:0}.kz-buttons{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}.kz-btn-primary{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);padding:.7rem 1.2rem;font-size:1rem;font-weight:600;cursor:pointer}.kz-btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.kz-btn-primary:disabled{opacity:.6;cursor:not-allowed}.kz-btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.7rem 1.2rem;font-size:.95rem;color:var(--color-text-muted);cursor:pointer}.raum-detail{max-width:1200px;margin:0 auto;padding:1.5rem 1rem}.raum-back{display:flex;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.back-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem 1rem;font-size:.9rem;color:var(--color-text-muted);white-space:nowrap}.back-btn:hover{background:var(--color-bg)}.raum-titel{font-size:1.5rem;font-weight:700;color:var(--color-text)}.raum-meta{font-size:.875rem;color:var(--color-text-muted);margin-top:.15rem}.status-banner{border-radius:var(--radius-lg);padding:1.5rem;margin-bottom:1.25rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;box-shadow:var(--shadow-md);color:#fff}.banner-frei{background:linear-gradient(135deg,#16a34a,#166534)}.banner-belegt{background:linear-gradient(135deg,#dc2626,#7f1d1d)}.banner-gesperrt{background:linear-gradient(135deg,#7c3aed,#4c1d95)}.banner-kein-unterricht{background:linear-gradient(135deg,#374151,#1f2937)}.banner-main{display:flex;align-items:center;gap:1rem}.banner-icon{font-size:2.5rem;line-height:1}.banner-label{font-size:.8rem;font-weight:600;opacity:.8;text-transform:uppercase;letter-spacing:.06em}.banner-text{font-size:1.5rem;font-weight:900;line-height:1.1}.banner-sub{font-size:.875rem;opacity:.85;margin-top:.25rem}.banner-schnell-btn{background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.5);border-radius:999px;padding:.6rem 1.25rem;font-weight:700;font-size:.9rem;white-space:nowrap}.banner-schnell-btn:hover{background:#ffffff59}.raum-erfolg{background:var(--color-frei-bg);color:var(--color-frei);padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center;font-weight:600}.raum-erfolg button{background:none;border:none;font-size:1.1rem;color:inherit;min-height:auto;padding:0}.raum-fehler{display:flex;justify-content:space-between;align-items:center;gap:.75rem;background:var(--color-belegt-bg);color:var(--color-belegt);border:1px solid var(--color-belegt);border-radius:var(--radius);padding:.6rem .9rem;margin-bottom:1rem;font-size:.9rem}.raum-fehler button{background:none;border:none;font-size:1.1rem;color:inherit;min-height:auto;padding:0}.wochen-nav{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;flex-wrap:wrap;gap:.75rem}.kw-label{font-weight:700;font-size:1rem;color:var(--color-text)}.nav-btns{display:flex;gap:.5rem}.nav-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.4rem .85rem;font-size:.85rem;color:var(--color-text-muted);min-height:36px}.nav-btn:hover{background:var(--color-bg)}.nav-btn-heute{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.nav-btn-heute:hover{background:var(--color-primary-dark)}.wochen-tabelle-wrap{overflow-x:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow)}.wochen-tabelle{width:100%;border-collapse:collapse;background:var(--color-surface)}.wochen-tabelle th,.wochen-tabelle td{border:1px solid var(--color-border);padding:.6rem .5rem;text-align:center}.zeit-th{background:var(--color-bg);font-weight:700;width:120px}.tag-th{background:var(--color-primary);color:#fff;font-size:.9rem}.tag-heute{background:#f59e0b;color:#1f2937}.zeit-td{background:var(--color-bg);font-size:.85rem;text-align:left;padding-left:.75rem;white-space:nowrap}.slot-td{font-size:.82rem;cursor:pointer;transition:background var(--transition);min-width:90px;vertical-align:middle}.slot-frei .slot-td,.slot-td.slot-frei{background:#dcfce7}.slot-td.slot-frei:hover{background:#16a34a;color:#fff}.slot-td.slot-belegt{background:var(--color-belegt-bg);cursor:default}.slot-td.slot-gesperrt{background:var(--color-gesperrt-bg);cursor:not-allowed}.slot-td.slot-past{background:#f1f5f9;cursor:default;color:#94a3b8}.slot-td.slot-selected{background:#fef3c7;border:2px solid #f59e0b;font-weight:700}.slot-td.slot-jetzt{outline:2px solid var(--color-text);outline-offset:-2px}.slot-info{display:flex;flex-direction:column;gap:2px}.slot-kuerzel{font-weight:700;font-size:.8rem}.slot-gesperrt-text{color:var(--color-gesperrt)}.slot-desc{font-size:.75rem;color:var(--color-text-muted)}.slot-loesch-btn{align-self:center;margin-top:2px;padding:.15rem .6rem;font-size:.9rem;line-height:1.3;border:1px solid var(--color-belegt);border-radius:var(--radius);background:var(--color-surface);color:var(--color-belegt);cursor:pointer}.slot-loesch-btn:hover{background:var(--color-belegt-bg)}.slot-bedarf-btn{align-self:center;margin-top:3px;padding:.15rem .55rem;font-size:.72rem;font-weight:600;line-height:1.3;min-height:26px;border:1px solid var(--color-border);border-radius:999px;background:#ffffffbf;color:var(--color-text-muted);cursor:pointer;white-space:nowrap}.slot-bedarf-btn:hover:not(:disabled){background:#fff;color:var(--color-belegt);border-color:var(--color-belegt)}.slot-bedarf-btn.gemeldet{background:none;border-color:transparent;color:var(--color-frei);cursor:default}.slot-frei-text{color:var(--color-frei);font-size:1rem;font-weight:700}.slot-past-text{color:#cbd5e1}.float-buchen-btn{position:fixed;bottom:1.5rem;right:1.5rem;background:var(--color-primary);color:#fff;border:none;border-radius:999px;padding:1rem 1.75rem;font-size:1rem;font-weight:700;box-shadow:0 4px 16px #2563eb66;z-index:50;min-height:auto}.float-buchen-btn:hover{background:var(--color-primary-dark)}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.modal-box{background:#fff;border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal-titel{font-size:1.25rem;font-weight:700;margin-bottom:1rem}.modal-raum{font-size:.9rem;color:var(--color-text-muted);margin-bottom:.75rem}.modal-slots{display:flex;flex-direction:column;gap:.3rem;margin-bottom:1rem}.modal-slot-tag{background:var(--color-primary-light);color:var(--color-primary);padding:.3rem .6rem;border-radius:var(--radius);font-size:.85rem;font-weight:600}.modal-form{display:flex;flex-direction:column;gap:1rem}.form-group label{font-size:.9rem;font-weight:600;color:var(--color-text)}.form-group input{padding:.6rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.95rem;min-height:40px}.form-group input:focus{outline:none;border-color:var(--color-primary)}.kuerzel-zeile{display:flex;align-items:center;gap:.75rem;min-height:40px}.kuerzel-wert{font-weight:700;font-size:1.05rem;color:var(--color-text)}.kuerzel-fehlt{color:var(--color-belegt);font-weight:600}.btn-link{background:none;border:none;color:var(--color-primary);font-size:.9rem;font-weight:600;cursor:pointer;padding:0;text-decoration:underline}.modal-fehler{color:var(--color-belegt);font-size:.875rem}.modal-buttons{display:flex;flex-direction:column;gap:.5rem}.btn-primary{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);padding:.75rem;font-size:1rem;font-weight:600}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem;font-size:.95rem;color:var(--color-text-muted)}.raum-error{padding:2rem;text-align:center;color:var(--color-belegt)}.tag-ferien{background:#fef9c3!important;color:#92400e}.ferien-label{display:block;font-size:.65rem;font-weight:600;color:#b45309;margin-top:2px;white-space:nowrap}.slot-ferien{background:#fef9c3!important;cursor:default}.slot-ferien:hover{background:#fef9c3!important}.ansicht-schalter{display:flex;border:1px solid var(--color-border);border-radius:999px;overflow:hidden;background:var(--color-surface)}.schalter-btn{background:none;border:none;padding:.4rem .9rem;font-size:.85rem;color:var(--color-text-muted);min-height:36px;white-space:nowrap}.schalter-btn.aktiv{background:var(--color-primary);color:#fff;font-weight:600}.ist-versteckt{display:none}.tag-ansicht{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;margin-bottom:1rem}.tag-kopf{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-primary);color:#fff}.tag-nav-btn{background:#ffffff26;border:1px solid rgba(255,255,255,.35);color:#fff;border-radius:var(--radius);font-size:1.2rem;line-height:1;width:48px;min-height:44px;flex-shrink:0}.tag-nav-btn:hover{background:#ffffff4d}.tag-titel-block{flex:1;text-align:center;display:flex;flex-direction:column;gap:.1rem}.tag-titel{font-weight:700;font-size:1.05rem}.tag-datum{font-size:.85rem;opacity:.9;display:flex;align-items:center;justify-content:center;gap:.4rem}.tag-heute-marke{background:#f59e0b;color:#1f2937;border-radius:999px;padding:0 .5rem;font-size:.7rem;font-weight:700}.tag-ferien-marke{background:#fef9c3;color:#92400e;border-radius:999px;padding:0 .5rem;font-size:.7rem;font-weight:600;align-self:center}.tag-slots{list-style:none;margin:0;padding:0}.tag-slot{display:flex;align-items:stretch;border-bottom:1px solid var(--color-border)}.tag-slot:last-child{border-bottom:none}.tag-slot-flaeche{flex:1;display:flex;align-items:center;gap:.75rem;padding:.6rem .9rem;min-height:56px;background:none;border:none;text-align:left;font:inherit;color:inherit;width:100%}.tag-slot-flaeche:disabled{cursor:default}.tag-slot-zeit{display:flex;flex-direction:column;min-width:5.5rem;flex-shrink:0}.tag-slot-zeit strong{font-size:.9rem}.tag-slot-zeit small{font-size:.75rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.tag-slot-mitte{flex:1;display:flex;flex-direction:column;gap:.1rem;min-width:0}.tag-slot-status-text{font-size:.9rem;font-weight:600}.tag-slot-status-text.tag-frei{color:var(--color-frei)}.tag-slot-detail{font-size:.78rem;color:var(--color-text-muted);overflow-wrap:anywhere}.tag-slot-plus{font-size:1.3rem;font-weight:700;color:var(--color-frei);flex-shrink:0}.tag-slot-frei{background:#f0fdf4}.tag-slot-belegt{background:var(--color-belegt-bg)}.tag-slot-gesperrt{background:var(--color-gesperrt-bg)}.tag-slot-past{background:#f8fafc}.tag-slot-past .tag-slot-zeit strong,.tag-slot-past .tag-slot-detail{color:#94a3b8}.tag-slot-ferien{background:#fef9c3}.tag-slot-gewaehlt{background:#fef3c7;box-shadow:inset 3px 0 #f59e0b}.tag-slot-jetzt{box-shadow:inset 3px 0 0 var(--color-text)}.tag-slot-gewaehlt.tag-slot-jetzt{box-shadow:inset 3px 0 #f59e0b}.tag-slot-loeschen{background:none;border:none;font-size:1.1rem;padding:0 .9rem;flex-shrink:0}.tag-slot-bedarf{background:#ffffffbf;border:1px solid var(--color-border);border-radius:999px;font-size:.75rem;font-weight:600;color:var(--color-text-muted);padding:.35rem .7rem;margin-right:.6rem;min-height:36px;flex-shrink:0;white-space:nowrap}.tag-slot-bedarf:hover:not(:disabled){background:#fff;color:var(--color-belegt);border-color:var(--color-belegt)}.tag-slot-bedarf.gemeldet{background:none;border-color:transparent;color:var(--color-frei);cursor:default}@media(max-width:768px){.banner-text{font-size:1.2rem}.status-banner{padding:1rem}.float-buchen-btn{left:.75rem;right:.75rem;bottom:.75rem;padding:.9rem 1rem;font-size:.95rem;border-radius:var(--radius-lg)}.raum-detail{padding-bottom:5.5rem}.wochen-nav{gap:.5rem}.nav-btn{padding:.4rem .7rem;font-size:.8rem}.raum-titel{font-size:1.25rem}}@media(max-width:700px){.zeit-th,.zeit-td{position:sticky;left:0;z-index:2;width:74px;min-width:74px;font-size:.75rem;padding-left:.4rem;box-shadow:2px 0 3px #0000000f}.zeit-th{z-index:3}.slot-td{min-width:68px;font-size:.75rem;padding:.4rem .25rem}.wochen-tabelle th,.wochen-tabelle td{height:44px}.tag-th{font-size:.78rem;padding:.4rem .2rem}.slot-desc{display:none}}.auswertung{display:flex;flex-direction:column;gap:1rem}.auswertung-steuerung{display:flex;flex-direction:column;gap:.5rem}.auswertung-filtergruppe{display:flex;gap:.4rem;flex-wrap:wrap}.aw-filter{background:var(--color-surface);border:1px solid var(--color-border);border-radius:999px;padding:.35rem .85rem;font-size:.85rem;color:var(--color-text-muted);min-height:36px}.aw-filter:hover{border-color:var(--color-primary);color:var(--color-primary)}.aw-filter.aktiv{background:var(--color-primary);border-color:var(--color-primary);color:#fff;font-weight:600}.aw-kennzahlen{display:flex;gap:.75rem;flex-wrap:wrap}.aw-kennzahl{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.75rem 1.1rem;flex:1 1 8rem;box-shadow:var(--shadow)}.aw-zahl{display:block;font-size:1.7rem;font-weight:700;color:var(--color-primary);line-height:1.1}.aw-label{font-size:.78rem;color:var(--color-text-muted)}.aw-kennzahl-bedarf{border-color:var(--color-belegt-bg)}.aw-kennzahl-bedarf .aw-zahl{color:var(--color-belegt)}.aw-hinweis{font-size:.78rem;color:var(--color-text-muted);margin:0}.aw-leer{padding:2rem;text-align:center;color:var(--color-text-muted)}.auswertung-fehler{padding:2rem;text-align:center;color:var(--color-belegt)}.aw-karte{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1rem;box-shadow:var(--shadow)}.aw-karte-kopf{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;flex-wrap:wrap;margin-bottom:.9rem}.aw-raum-name{font-weight:700;font-size:1rem;display:block}.aw-raum-typ{font-size:.78rem;color:var(--color-text-muted)}.aw-karte-zahlen{display:flex;gap:.4rem;flex-wrap:wrap}.aw-badge{background:var(--color-bg);border-radius:999px;padding:.25rem .7rem;font-size:.78rem;color:var(--color-text-muted);white-space:nowrap}.aw-badge-auslastung{background:var(--color-primary-light);color:var(--color-primary-dark);font-weight:600}.aw-badge-bedarf{background:var(--color-belegt-bg);color:var(--color-belegt);font-weight:700}.aw-verteilungen{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.aw-verteilung h4{font-size:.8rem;color:var(--color-text-muted);font-weight:600;margin-bottom:.4rem}.aw-balken{display:flex;align-items:flex-end;gap:4px;height:90px}.aw-balken-spalte{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;height:100%}.aw-balken-saeule{flex:1;width:100%;display:flex;flex-direction:column;justify-content:flex-end;background:var(--color-bg);border-radius:3px;overflow:hidden}.aw-balken-wert{background:var(--color-primary);border-radius:0 0 3px 3px}.aw-balken-bedarf{background:var(--color-belegt);border-radius:3px 3px 0 0}.aw-balken-label{font-size:.65rem;color:var(--color-text-muted);white-space:nowrap}@media(max-width:640px){.aw-verteilungen{grid-template-columns:1fr}.aw-kennzahl{flex:1 1 6rem;padding:.6rem .8rem}.aw-zahl{font-size:1.4rem}}.admin-panel{max-width:1100px;margin:0 auto;padding:1.5rem 1rem}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.admin-titel{font-size:1.6rem;font-weight:700;color:var(--color-text)}.admin-sub{font-size:.875rem;color:var(--color-text-muted);margin-top:.2rem}.back-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem 1rem;font-size:.9rem;color:var(--color-text-muted)}.admin-meldung{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-weight:600;font-size:.9rem}.meldung-success{background:var(--color-frei-bg);color:var(--color-frei)}.meldung-error{background:var(--color-belegt-bg);color:var(--color-belegt)}.admin-meldung button{background:none;border:none;font-size:1.1rem;color:inherit;min-height:auto;padding:0;cursor:pointer}.admin-tabs{display:flex;gap:.25rem;margin-bottom:1.5rem;border-bottom:2px solid var(--color-border)}.tab-btn{background:none;border:none;border-bottom:3px solid transparent;padding:.65rem 1.25rem;font-size:.95rem;color:var(--color-text-muted);margin-bottom:-2px;min-height:auto;transition:all var(--transition)}.tab-btn:hover{color:var(--color-primary)}.tab-btn.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:700}.admin-section{display:flex;flex-direction:column;gap:1.5rem}.admin-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow)}.card-titel{font-size:1.05rem;font-weight:700;color:var(--color-text);margin-bottom:1.25rem}.admin-form{display:flex;flex-direction:column;gap:1rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-row .form-group-sm{max-width:140px}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-size:.875rem;font-weight:600;color:var(--color-text)}.form-group input,.form-group select{padding:.55rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;min-height:40px;background:#fff}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-primary)}.form-buttons{display:flex;gap:.75rem;flex-wrap:wrap}.btn-primary{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);padding:.65rem 1.25rem;font-size:.9rem;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.65rem 1.25rem;font-size:.9rem;color:var(--color-text-muted)}.btn-sm{padding:.35rem .75rem;border-radius:var(--radius);font-size:.82rem;border:1px solid var(--color-border);background:var(--color-surface);min-height:32px;cursor:pointer}.btn-outline{color:var(--color-text-muted)}.btn-outline:hover{background:var(--color-bg)}.btn-warn{background:#fef9c3;color:#92400e;border-color:#fcd34d}.btn-warn:hover{background:#fef08a}.btn-ok{background:var(--color-frei-bg);color:var(--color-frei);border-color:var(--color-frei)}.btn-danger{background:var(--color-belegt-bg);color:var(--color-belegt);border-color:var(--color-belegt)}.btn-danger:hover{background:#fecaca}.table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th{background:var(--color-bg);padding:.6rem .75rem;text-align:left;font-weight:700;border-bottom:2px solid var(--color-border);white-space:nowrap}.admin-table td{padding:.6rem .75rem;border-bottom:1px solid var(--color-border);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.row-inaktiv td{opacity:.5}.td-muted{color:var(--color-text-muted)}.typ-badge{background:var(--color-primary-light);color:var(--color-primary);padding:.15rem .5rem;border-radius:999px;font-size:.78rem;font-weight:600;white-space:nowrap}.status-pill{padding:.2rem .6rem;border-radius:999px;font-size:.78rem;font-weight:600}.pill-aktiv{background:var(--color-frei-bg);color:var(--color-frei)}.pill-inaktiv{background:#f1f5f9;color:#94a3b8}.action-btns{display:flex;gap:.4rem;flex-wrap:wrap}.slots-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem;margin-top:.25rem}.slot-check{display:flex;flex-direction:column;gap:2px;padding:.5rem .65rem;border:1.5px solid var(--color-border);border-radius:var(--radius);cursor:pointer;font-size:.85rem;font-weight:600;transition:all var(--transition)}.slot-check input{display:none}.slot-check small{font-size:.75rem;color:var(--color-text-muted);font-weight:400}.slot-check:hover{border-color:var(--color-primary)}.slot-check-active{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary)}.slot-check-active small{color:var(--color-primary)}.serien-liste{display:flex;flex-direction:column;gap:.75rem}.serie-karte{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);gap:1rem;flex-wrap:wrap}.serie-info{flex:1}.serie-titel{font-weight:700;font-size:.9rem;color:var(--color-gesperrt);margin-bottom:.25rem}.serie-meta{font-size:.82rem;color:var(--color-text-muted)}.leer-text{text-align:center;color:var(--color-text-muted);padding:2rem 0}@media(max-width:640px){.form-row{grid-template-columns:1fr}.form-row .form-group-sm{max-width:none}.admin-table{font-size:.8rem}.action-btns{flex-direction:column}}.admin-badge{display:inline-block;padding:.1rem .5rem;background:#dbeafe;color:#1e3a8a;border-radius:4px;font-size:.75rem;font-weight:600;margin-left:.25rem}.card-hinweis{color:#64748b;font-size:.9rem;margin:-.25rem 0 1rem}.invite-result{margin-top:1rem;padding:.75rem 1rem;background:#f0fdf4;border:1px solid #86efac;border-radius:8px;font-size:.9rem;line-height:1.5}.invite-result code{background:#fff;padding:0 .3rem;border-radius:3px;font-size:.85rem}.invite-result-error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}.art-badge{display:inline-block;padding:.05rem .4rem;background:#f1f5f9;color:#475569;border-radius:4px;font-size:.7rem;font-weight:500;margin-left:.25rem}.meldung-warning{background:#fef9c3;color:#92400e}.meldung-info{background:#dbeafe;color:#1e40af}.invite-result-info{background:#eff6ff;border-color:#93c5fd;color:#1e3a8a}.invite-result-warning{background:#fffbeb;border-color:#fcd34d;color:#92400e}.tab-btn-qr{color:var(--color-primary);font-weight:600}.card-header-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.bulk-upload-label{display:inline-flex;align-items:center;gap:.5rem;background:var(--color-primary);color:#fff;border-radius:var(--radius);padding:.65rem 1.25rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:background var(--transition);-webkit-user-select:none;user-select:none}.bulk-upload-label:hover{background:var(--color-primary-dark)}.bulk-upload-label.bulk-upload-disabled{background:#94a3b8;cursor:not-allowed}.bulk-results{margin-top:1.25rem}.bulk-results-kopf{font-size:.9rem;margin-bottom:.75rem;padding:.6rem .75rem;background:var(--color-bg);border-radius:var(--radius);border:1px solid var(--color-border)}.td-fehlt{color:var(--color-belegt);font-weight:600}.btn-kuerzel{background:var(--color-primary-light);color:var(--color-primary-dark);border:1.5px solid var(--color-primary);font-weight:600}.btn-kuerzel:hover:not(:disabled){background:#bfdbfe}.td-aktionen{display:flex;gap:.4rem;flex-wrap:wrap}.card-warnung{color:#92400e;background:#fef3c7;border:1px solid #f59e0b;border-radius:var(--radius);padding:.5rem .75rem;font-size:.9rem;margin:.5rem 0}.qr-status{max-width:480px;margin:0 auto;padding:1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.qr-header{text-align:center;margin:1rem 0 1.5rem}.qr-raum-name{font-size:1.6rem;font-weight:700;margin:0 0 .25rem;color:#0f172a}.qr-raum-typ{color:#64748b;font-size:.95rem;margin:0}.qr-banner{display:flex;align-items:center;gap:1rem;padding:1.25rem 1rem;border-radius:12px;margin-bottom:1.5rem}.qr-banner-frei{background:#d1fae5;border:1px solid #6ee7b7}.qr-banner-belegt{background:#fee2e2;border:1px solid #fca5a5}.qr-banner-icon{font-size:2rem}.qr-banner-label{font-weight:600;font-size:1.1rem;margin:0 0 .25rem;color:#0f172a}.qr-banner-sub{margin:0;color:#475569;font-size:.9rem}.qr-tagesplan-titel{font-size:1.1rem;margin:1.5rem 0 .75rem;color:#0f172a}.qr-slot-liste{list-style:none;padding:0;margin:0 0 1.5rem;border-radius:8px;overflow:hidden;border:1px solid #e2e8f0}.qr-slot{display:grid;grid-template-columns:auto 1fr auto;gap:.75rem;padding:.6rem 1rem;align-items:center;border-bottom:1px solid #e2e8f0;background:#fff}.qr-slot:last-child{border-bottom:none}.qr-slot-frei{background:#fff}.qr-slot-belegt{background:#fef2f2}.qr-slot-jetzt{background:#eff6ff!important;border-left:3px solid #2563eb;font-weight:600}.qr-slot-zeit{font-variant-numeric:tabular-nums;font-size:.85rem;color:#475569}.qr-slot-label{font-size:.95rem;color:#0f172a}.qr-slot-status{font-size:.85rem}.qr-cta{text-align:center;margin:1rem 0}.qr-cta-btn{display:inline-block;padding:.75rem 1.5rem;background:#2563eb;color:#fff;text-decoration:none;border-radius:8px;font-weight:600}.qr-cta-btn:hover{background:#1d4ed8}.qr-hinweis{font-size:.85rem;color:#94a3b8;text-align:center;margin:1.5rem 0 0}.qr-error{max-width:480px;margin:4rem auto;padding:2rem;text-align:center;background:#fee2e2;border-radius:12px}.qr-cta-buchen{background:#16a34a}.qr-cta-buchen:hover:not(:disabled){background:#15803d}.qr-cta-btn:disabled{opacity:.6;cursor:not-allowed}.qr-cta-hinweis{color:#475569;font-size:.95rem;margin:.5rem 0}.qr-buchung-erfolg{color:#166534;background:#dcfce7;border:1px solid #86efac;border-radius:8px;padding:.6rem .9rem;font-size:.95rem;margin:0 0 .75rem;text-align:left}.qr-buchung-fehler{color:#b91c1c;font-size:.9rem;margin:.6rem 0 0}.qr-cta-link{display:block;margin:.75rem auto 0;background:none;border:none;color:#2563eb;font-size:.9rem;text-decoration:underline;cursor:pointer}.qr-login{text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:1rem}.qr-login-titel{margin:0 0 .6rem;font-weight:600;color:#0f172a}.qr-login-felder{display:flex;gap:.5rem;margin-bottom:.6rem}.qr-login-input{padding:.6rem .75rem;border:1.5px solid #cbd5e1;border-radius:8px;font-size:1rem;min-height:44px;flex:1;min-width:0}.qr-login-input:focus{outline:none;border-color:#2563eb}.qr-login-kuerzel{flex:0 0 6rem;font-weight:700;letter-spacing:.05em}.qr-login-btn{display:block;width:100%;border:none;font-size:1rem;cursor:pointer}.qr-login-hinweis{font-size:.85rem;color:#64748b;margin:.6rem 0 0}.qr-login-hinweis a{color:#2563eb}.qrdruck{max-width:1100px;margin:0 auto;padding:1.5rem}.qrdruck-toolbar{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.qrdruck-titel{flex:1;font-size:1.4rem;font-weight:700;margin:0}.qrdruck-print-btn{background:#2563eb;color:#fff;border:none;border-radius:8px;padding:.5rem 1.2rem;font-size:1rem;cursor:pointer;font-weight:600}.qrdruck-hinweis{color:#64748b;font-size:.9rem;margin-bottom:1.5rem}.qrdruck-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.5rem}.qrdruck-karte{border:2px solid #e2e8f0;border-radius:12px;padding:1rem;text-align:center;background:#fff;break-inside:avoid}.qrdruck-qr{width:160px;height:160px;display:block;margin:0 auto .75rem}.qrdruck-name{font-size:1rem;font-weight:700;margin:0 0 .2rem;color:#1e293b}.qrdruck-desc{font-size:.8rem;color:#64748b;margin:0 0 .2rem}.qrdruck-typ{font-size:.75rem;color:#94a3b8;margin:0;text-transform:uppercase;letter-spacing:.05em}.qrdruck-error{padding:2rem;text-align:center;color:#ef4444}@media print{.no-print{display:none!important}.qrdruck{padding:0}.qrdruck-grid{grid-template-columns:repeat(3,1fr);gap:1rem}.qrdruck-karte{border:1.5px solid #cbd5e1;border-radius:8px;padding:.75rem;page-break-inside:avoid}}.nav{background:var(--color-primary);color:#fff;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-md)}.nav-inner{max-width:1200px;margin:0 auto;padding:0 1rem;display:flex;align-items:center;gap:1.5rem;height:56px}.nav-logo{font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none;white-space:nowrap}.nav-links{display:flex;gap:.5rem;flex:1}.nav-link{color:#ffffffd9;text-decoration:none;padding:.4rem .75rem;border-radius:var(--radius);font-size:.95rem;transition:background var(--transition);display:flex;align-items:center}.nav-link:hover{background:#ffffff26;text-decoration:none;color:#fff}.nav-link.active{background:#fff3;color:#fff;font-weight:600}.nav-user{margin-left:auto;display:flex;align-items:center;gap:.75rem}.nav-kuerzel{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:999px;padding:.3rem .8rem;font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap}.nav-kuerzel:hover{background:#ffffff40}.nav-kuerzel-fehlt{background:#fbbf24;color:#1e293b;border-color:#fbbf24}.nav-kuerzel-fehlt:hover{background:#f59e0b}@media(max-width:700px){.nav-inner{gap:.5rem;padding:0 .6rem}.nav-logo{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex-shrink:1}.nav-links{gap:.25rem;flex:0 1 auto}.nav-link{padding:.4rem .5rem;font-size:.85rem}.nav-user{gap:.4rem;flex-shrink:0}.nav-kuerzel{padding:.3rem .6rem;font-size:.8rem}}@media(max-width:420px){.nav-kuerzel-text{display:none}}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding:0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1e40af,#2563eb);padding:1rem}.login-box{background:#fff;border-radius:var(--radius-lg);padding:2rem;width:100%;max-width:420px;box-shadow:var(--shadow-lg);text-align:center}.login-title{font-size:1.75rem;font-weight:700;color:var(--color-text);margin-bottom:.5rem}.login-subtitle{color:var(--color-text-muted);margin-bottom:1.5rem;font-size:.95rem}
