/* MHH-Farbschema: Rot (Akzent), warmes Dunkelgrau (Bedienelemente), Dunkelgrau 20 % (Flächen).
   Weiß auf MHH-Rot hat nur ca. 3,6:1 Kontrast – Rot daher nur für Akzente/Fokus, nicht für Text oder Buttons.
   Fach- und Statusfarben im Raster bleiben bewusst unverändert. */
:root{
  --mhh-red:#f03c14; --mhh-grey:#786e64; --mhh-light:#edeae6;
  --bg:var(--mhh-light); --card:#fff; --ink:#2e2925; --muted:#6b625a; --line:#e4dfd9; --field:#cfc8bf;
  --accent:var(--mhh-grey); --accent-d:#5f564e; --accent-soft:#ebe7e2; --soft:#f7f5f2; --alert:#d4371a;
  --h:56px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}  /* sonst überschreibt z. B. .btn{display:inline-flex} das Ausblenden */
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.4 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
.top{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;padding:16px 20px 14px;background:var(--card);border-bottom:1px solid var(--line);box-shadow:inset 0 4px var(--mhh-red);position:sticky;top:0;z-index:20}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;letter-spacing:-.01em;line-height:1.15}
.brand-icon{flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--mhh-red);color:#fff}
.brand small{display:block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mhh-grey)}
.tag{font-size:12px;font-weight:600;background:var(--accent-soft);color:var(--accent-d);padding:2px 8px;border-radius:99px;vertical-align:middle}
.sem{display:flex;align-items:center;gap:8px;color:var(--muted)}
.sem select{font-weight:600;color:var(--ink)}
.actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
select,input,textarea{border:1px solid var(--field);border-radius:8px;padding:7px 10px;background:#fff;width:100%}
.sem select{width:auto}
:focus-visible{outline:2px solid var(--mhh-red);outline-offset:2px}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;cursor:pointer;text-decoration:none;font-weight:600;color:var(--ink)}
.btn:hover{background:var(--soft);border-color:var(--field)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{background:var(--accent-d);border-color:var(--accent-d)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--accent-soft)}
.btn.danger{color:#b42318}
#badge{background:var(--alert);color:#fff;border-radius:99px;font-size:12px;padding:0 7px}
main{max-width:1180px;margin:0 auto;padding:16px 16px 48px}
/* Feiertage / vorlesungsfreie Tage */
.col.free .body{background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--h) - 1px),var(--line) calc(var(--h) - 1px),var(--line) var(--h)),
  repeating-linear-gradient(135deg,#f3f1ee 0 10px,#e6e1db 10px 12px)}
.col.free .head{color:var(--muted)}
.freelbl{position:absolute;top:6px;left:4px;right:4px;z-index:1;text-align:center;font-size:12px;font-weight:700;color:var(--muted);background:#ffffffd9;border-radius:6px;padding:3px 4px;pointer-events:none}
.daytabs button.free:not(.on){color:var(--muted);background:#f3f1ee}
.addrow{grid-template-columns:1fr 1fr 1fr auto;align-items:end}
#calDlg h3{margin:6px 0 0;font-size:15px}
#calDlg details summary{cursor:pointer}
ul.hol{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px 16px;font-size:13px}
ul.hol span{display:inline-block;width:86px;color:var(--muted)}
@media (max-width:620px){.addrow{grid-template-columns:1fr}}

/* Planungsmodus: deutlich vom echten Plan unterscheidbar */
.tag.plan{background:#fff1d6;color:#9a5b00}
.btn.plan{border-color:#f5c26b;color:#9a5b00;background:#fff8eb}.btn.plan:hover{background:#fff1d6}
body.planning .top{border-bottom:3px solid #f59e0b}
.planbanner{border:1px solid #f5c26b;background:#fff8eb;color:#6b4100;border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:14px}
.banner{width:100%;text-align:left;border:1px solid #f5d38a;background:#fff8e6;color:#7a5200;border-radius:10px;padding:10px 14px;margin-bottom:12px;cursor:pointer;font-weight:600}
.weeknav{display:flex;align-items:center;gap:6px;margin-bottom:10px}
.rangewrap{position:relative;display:flex;justify-content:center}
.range{font-weight:700;min-width:210px;text-align:center;border:1px solid transparent;background:none;border-radius:9px;padding:7px 12px;cursor:pointer;color:var(--ink)}
.range::after{content:"▾";margin-left:6px;font-size:11px;color:var(--muted)}
.range:hover,.range[aria-expanded=true]{background:var(--card);border-color:var(--field)}
/* Monatsübersicht */
.monthpop{position:absolute;top:calc(100% + 6px);left:0;z-index:30;width:min(320px,calc(100vw - 24px));
  background:var(--card);border-radius:14px;border-top:4px solid var(--mhh-red);box-shadow:0 16px 40px rgb(46 41 37 / .22);padding:10px 12px 8px}
.monthpop[hidden]{display:none}
.mp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.mp-head b{font-size:15px}.mp-head .btn{padding:4px 12px;font-size:18px}
.mp-grid{display:grid;grid-template-columns:28px repeat(7,1fr);gap:2px;text-align:center;font-size:13px}
.mp-grid .dow{font-size:11px;font-weight:700;color:var(--muted);padding:4px 0}
.mp-grid .kwn{font-size:10.5px;color:var(--muted);display:grid;place-items:center}
.mp-grid button{border:0;background:none;border-radius:8px;padding:7px 0;cursor:pointer;font-weight:600;color:var(--ink)}
.mp-grid button:hover{background:var(--accent-soft)}
.mp-grid button.we{color:var(--muted);font-weight:500}
.mp-grid button.out{opacity:.4}
.mp-grid button.sel{background:var(--accent-soft)}
.mp-grid button.today{box-shadow:inset 0 0 0 2px var(--mhh-red)}
.mp-foot{display:flex;justify-content:center;border-top:1px solid var(--line);margin-top:6px;padding-top:4px}
.mp-foot .btn{padding:4px 12px;font-size:13px}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;list-style:none;margin:0 0 12px;padding:0;color:var(--muted);font-size:13px}
.legend li{display:flex;align-items:center;gap:6px}
.legend .sep{width:1px;background:var(--line);height:16px}
.sw{width:18px;height:14px;border-radius:4px;display:inline-block}
.sw:not(.kind-seminar):not(.kind-praktikum){background:var(--c)}

/* Farben je Fach */
.st-KFO{--c:#2563eb;--t:#fff} .st-ZPR{--c:#dc2626;--t:#fff} .st-MKG{--c:#16a34a;--t:#fff}
.st-ZKO{--c:#facc15;--t:#2b2300} .st-Andere{--c:#9333ea;--t:#fff}

/* Gitter */
.grid{display:grid;grid-template-columns:48px repeat(5,1fr);background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 1px 2px rgb(46 41 37 / .05),0 8px 24px rgb(120 110 100 / .08)}
.head{height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-bottom:1px solid var(--line);font-weight:700;line-height:1.1;background:var(--soft)}
.head small{font-weight:500;color:var(--muted)}
.col.today .head{background:var(--accent-soft);color:var(--ink);box-shadow:inset 0 -3px var(--mhh-red)}
.col{border-left:1px solid var(--line);min-width:0}
.body{position:relative;height:calc(var(--h) * 13);background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--h) - 1px),var(--line) calc(var(--h) - 1px),var(--line) var(--h))}
.timecol .body{background:none}
.tl{position:absolute;right:6px;font-size:11px;color:var(--muted);transform:translateY(-7px)}
.tl:first-child{transform:none}
.slot{position:absolute;left:0;right:0;height:var(--h);border:0;background:none;cursor:pointer;opacity:0;font-size:20px;color:var(--accent)}
.slot:hover,.slot:focus-visible{opacity:1;background:rgb(120 110 100 / .07)}
@media (hover:none){.slot{opacity:.35}}

/* Veranstaltungen */
.ev{position:absolute;border-radius:8px;padding:4px 6px;overflow:hidden;font-size:12px;line-height:1.25;cursor:pointer;text-align:left;border:0;color:var(--t);box-shadow:0 1px 2px #0002}
.ev b{display:block;font-size:13px}
.ev .meta{opacity:.9}
.kind-vorlesung{background:var(--c)}
.kind-seminar{background:repeating-linear-gradient(45deg,var(--c) 0 6px,color-mix(in srgb,var(--c) 40%,#fff) 6px 12px);color:#111}
.kind-seminar .in{background:#ffffffd9;border-radius:5px;padding:1px 4px;display:block}
.kind-praktikum{background:color-mix(in srgb,var(--c) 17%,#fff);border:1.5px solid color-mix(in srgb,var(--c) 40%,#fff);border-left:4px solid var(--c);color:#1f2937}
.ev .badge{display:inline-block;font-size:10.5px;font-weight:700;background:#111d;color:#fff;border-radius:4px;padding:0 5px;margin-top:2px}
/* Online-Vorlesung: roter Rahmen mit weißem Abstand – auch auf roten (ZPR) Blöcken sichtbar */
.ev.online{box-shadow:0 0 0 2px #fff,0 0 0 5px var(--mhh-red);z-index:1}
.sw.sw-online{background:#fff;box-shadow:0 0 0 2px var(--mhh-red)}
.status-cancelled{opacity:.55;filter:grayscale(.7)}
.status-cancelled b{text-decoration:line-through}
.status-cancelled .badge{background:#b42318}
.status-moved_from{opacity:.3;outline:1.5px dashed #555;outline-offset:-2px;pointer-events:none}
.status-moved{outline:2.5px solid #f59e0b;outline-offset:-1px}
.status-moved .badge{background:#b45309}
.status-note{outline:2.5px solid #0ea5e9;outline-offset:-1px}
.status-note .badge{background:#0369a1}

/* Mobil: ein Tag pro Ansicht (oder umschaltbar auf die ganze Woche) */
.daytabs,.viewtoggle{display:none}
@media (max-width:760px){
  .top{padding:10px 12px}.actions{margin-left:0;width:100%}.actions .btn{flex:1;justify-content:center}
  .grid{grid-template-columns:40px 1fr}
  .col:not(.active){display:none}
  .daytabs{display:flex;gap:6px;margin-bottom:10px}
  .daytabs button{flex:1;border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 0;font-weight:700;cursor:pointer}
  .daytabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
  .daytabs small{display:block;font-weight:500;opacity:.8}
  .rangewrap{flex:1;min-width:0}.range{min-width:0;width:100%}
  .weeknav{position:relative}.rangewrap{position:static}
  .monthpop{left:50%;transform:translateX(-50%)}
  .ev{font-size:13px}
  .viewtoggle{display:flex;gap:0;margin-bottom:10px;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#fff}
  .viewtoggle button{flex:1;border:0;background:none;padding:7px 0;font-weight:700;cursor:pointer;color:var(--muted)}
  .viewtoggle button.on{background:var(--accent);color:#fff}
  /* Wochenansicht auf dem Handy: alle fünf Tage, kompakt */
  .weekmode .daytabs{display:none}
  .weekmode .grid{grid-template-columns:30px repeat(5,minmax(0,1fr))}
  .weekmode .col:not(.active){display:block}
  .weekmode .col.active:not(.today) .head{background:var(--soft);color:inherit}
  .weekmode .head{font-size:13px}.weekmode .head small{font-size:10.5px}
  .weekmode .tl{font-size:9.5px;right:3px}
  .weekmode .ev{font-size:10px;padding:2px 3px;border-radius:5px}
  .weekmode .ev b{font-size:10.5px;overflow-wrap:anywhere;hyphens:auto}
  .weekmode .ev .meta{display:none}
  .weekmode .ev .badge{font-size:9px;padding:0 3px}
  .weekmode .kind-seminar .in{padding:0 2px}
  .weekmode .ev.mine::after{top:1px;right:2px;font-size:10px}
}

/* Dialoge, Listen */
dialog{border:0;border-radius:16px;padding:0;width:min(520px,calc(100vw - 24px));box-shadow:0 20px 60px rgb(46 41 37 / .3);border-top:4px solid var(--mhh-red)}
dialog::backdrop{background:rgb(46 41 37 / .45)}
.dlg{padding:18px 20px;display:grid;gap:12px}
.dlg h2{margin:0;font-size:18px}
.dlg label{display:grid;gap:4px;font-size:13px;color:var(--muted);font-weight:600}
.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.row3{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px}
.row[hidden],.row3[hidden]{display:none}
.foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grow{flex:1}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg label{display:flex;flex-direction:row;align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;padding:7px 12px;color:var(--ink);cursor:pointer}
.seg input{width:auto}
.err{color:#b42318;margin:0;min-height:1em;font-size:13px}
.panel{margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:0 1px 2px rgb(46 41 37 / .04)}
.panel h2{margin:0 0 4px;font-size:17px}.muted{color:var(--muted);margin:0 0 10px;font-size:13px}
.changes{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.changes li{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-left:5px solid var(--c);border-radius:10px;padding:9px 12px}
.changes .txt{flex:1}.changes small{color:var(--muted);display:block}
.info-row{display:flex;gap:8px;color:var(--muted)}.info-row b{color:var(--ink)}

/* Login */
.login{display:grid;place-items:center;min-height:100vh}
.login-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:26px;width:min(360px,92vw);display:grid;gap:14px}
.login-card h1{margin:0;font-size:20px}.login-card label{display:grid;gap:4px;color:var(--muted);font-weight:600}
.login-card a{color:var(--muted);text-align:center;font-size:13px}
.login-card .chosen{margin:0;display:flex;gap:8px;align-items:baseline}
.login-card .muted{margin:0}
.login-card a.btn{color:#fff;justify-content:center}
.smalllinks{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;font-size:13px}
.smalllinks a,.smalllinks summary{color:var(--accent-d);cursor:pointer;text-decoration:underline;text-align:left}
.smalllinks summary{list-style:none}.smalllinks summary::-webkit-details-marker{display:none}
.smalllinks details{text-align:right}
.smalllinks details p{margin:6px 0 0;color:var(--ink)}
.changes li.pending{--c:#f59e0b;background:#fffaf0}
.iconbtn{position:relative;padding:8px 10px}
#nBadge,.nbadge{position:absolute;top:-6px;right:-6px;background:var(--alert);color:#fff;border-radius:99px;font-size:11px;line-height:18px;min-width:18px;text-align:center;padding:0 5px}
#notifBody h3{margin:4px 0 6px;font-size:15px}
#notifBody .changes{margin-bottom:10px}
#notifBody li.plain{--c:var(--accent)}
.msgs li{--c:var(--line)}.msgs li.ok{--c:#16a34a}.msgs li.no{--c:var(--alert)}
.msgs li.unread{background:var(--soft)}.msgs li.unread b::after{content:" · neu";color:var(--alert);font-size:12px}
.claimstate{color:var(--muted);font-size:13px;margin:0}
#dozBadge{background:#f59e0b;color:#fff;border-radius:99px;font-size:12px;padding:0 7px}

/* Startseite und Admin-Anmeldung (body.start) */
body.start{--mhh-ink:var(--ink);background:var(--mhh-light);color:var(--mhh-ink);padding:24px 16px}
body.start::before{content:"";position:fixed;inset:0 0 auto;height:6px;background:var(--mhh-red)}
.start .login-card{width:min(420px,100%);padding:0;gap:0;border:0;border-radius:18px;overflow:hidden;
  box-shadow:0 1px 2px rgb(46 41 37 / .06),0 18px 48px rgb(120 110 100 / .22)}
.start-head{display:flex;align-items:center;gap:14px;padding:26px 28px 22px;border-bottom:1px solid var(--mhh-light)}
.start-icon{flex:none;display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--mhh-red);color:#fff}
.start .login-card h1{margin:0;font-size:21px;line-height:1.2;letter-spacing:-.01em;color:var(--mhh-ink)}
.start-sub{margin:2px 0 0;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--mhh-grey)}
.start-body{display:grid;gap:16px;padding:22px 28px 28px}
.start-body h2{margin:0;font-size:17px;color:var(--mhh-ink)}
.start .login-card label{color:var(--mhh-grey);font-size:13px;gap:6px}
.start select,.start input{padding:11px 12px;border:1px solid var(--field);border-radius:10px;background:#fff;color:var(--mhh-ink);font-size:15px}
.start select:hover,.start input:hover{border-color:var(--mhh-grey)}
.start select:focus,.start input:focus{outline:none;border-color:var(--mhh-grey);box-shadow:0 0 0 3px rgb(240 60 20 / .22)}
.start :focus-visible{outline-color:var(--mhh-red)}
.start .btn.primary{justify-content:center;padding:12px 16px;border-radius:10px;font-size:15px;background:var(--mhh-grey);border-color:var(--mhh-grey);color:#fff}
.start .btn.primary:hover{background:var(--accent-d);border-color:var(--accent-d)}
.start .btn.primary:active{transform:translateY(1px)}
.start .login-card a:not(.btn),.start .smalllinks summary{color:var(--mhh-grey);text-decoration:underline;text-underline-offset:2px}
.start .login-card a:not(.btn):hover,.start .smalllinks summary:hover{color:var(--mhh-ink);text-decoration-color:var(--mhh-red)}
.start .chosen{align-items:center;gap:8px;padding:8px 12px;border-radius:10px;background:var(--mhh-light);font-size:14px}
.start .chosen span{color:var(--mhh-grey);font-size:13px}
.start .chosen a{margin-left:auto}
.start .muted{color:var(--mhh-grey)}
.start .err{padding:8px 12px;border-radius:10px;background:#fdecea;border-left:4px solid var(--mhh-red);color:#9c2510;font-size:14px}
@media (prefers-reduced-motion:no-preference){.start .login-card{animation:start-in .25s ease-out}
  @keyframes start-in{from{opacity:0;transform:translateY(6px)}}}
@media (max-width:420px){.start-head{padding:22px 20px 18px}.start-body{padding:18px 20px 22px}}

/* Dozierende: mehrere Namen je Veranstaltung, eigene Veranstaltungen, Konten */
.dozfield{display:grid;gap:6px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chips:empty{display:none}
.chip{display:inline-flex;align-items:center;gap:4px;background:var(--accent-soft);color:var(--accent-d);border:1px solid var(--field);border-radius:99px;padding:2px 4px 2px 10px;font-size:13px;font-weight:600}
.chip.ext{background:var(--soft);color:var(--muted);border-style:dashed;border-color:var(--field)}
.chip button{border:0;background:none;cursor:pointer;color:inherit;font-size:15px;line-height:1;padding:0 4px;border-radius:99px}
.chip button:hover{background:#0001}
.ev.mine::after{content:"✎";position:absolute;top:3px;right:5px;font-size:12px;opacity:.85}
.changes li.plain{--c:var(--field);align-items:center;flex-wrap:wrap}
dialog.mid{width:min(760px,calc(100vw - 24px))}
.dlg.sub{padding:12px 0 0;border-top:1px solid var(--line)}
.dlg.sub h3{margin:0;font-size:15px}
@media (max-width:620px){.row3{grid-template-columns:1fr}}
@media (prefers-reduced-motion:no-preference){dialog[open]{animation:pop .15s ease-out}@keyframes pop{from{transform:scale(.97);opacity:0}}}

/* Mehrfachauswahl: Wochentage, Kalenderwochen */
.row3b{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:10px}
fieldset.days{border:0;padding:0;margin:0;display:flex;gap:6px;flex-wrap:wrap}
fieldset.days legend{font-size:13px;color:var(--muted);font-weight:600;padding:0 0 4px}
.days label,.kw{display:block;cursor:pointer}
.days input,.kw input{position:absolute;opacity:0;width:1px;height:1px}
.days span,.kw span{display:block;border:1px solid var(--line);border-radius:9px;padding:7px 14px;font-weight:700;color:var(--ink);background:#fff;text-align:center}
.days input:checked+span,.kw input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff}
.days input:focus-visible+span,.kw input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
details#kwBox{border:1px solid var(--line);border-radius:10px;padding:8px 12px}
details#kwBox summary{cursor:pointer;font-weight:600;color:var(--ink)}
.kwtools{display:flex;gap:4px;margin:4px 0 8px}.kwtools .btn{padding:4px 10px;font-size:13px}
.kwgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:5px}
.kw span{padding:5px 0;font-size:13px}
@media (max-width:520px){.row3b{grid-template-columns:1fr 1fr}.row3b label:first-child{grid-column:1/-1}}

/* Drag & Drop, Einzeltermin-Modus */
.ev{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ev[data-drag]{cursor:grab}
.ev.armed{outline:2px solid var(--accent);outline-offset:1px}
.ev.dragging{cursor:grabbing;z-index:60;opacity:.88;box-shadow:0 10px 28px #0005;transition:none}
.seg label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);font-weight:700}
/* Vorlesungsfreie Zeit: KW-Spalten mit Einzeleinträgen */
.ferien-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.ferien-head h2{margin:0}
.ferien-nav{display:flex;align-items:center;gap:4px;font-size:14px}
.ferien-nav .btn{padding:4px 12px;font-size:18px}
.ferien-weeks{display:grid;grid-template-columns:repeat(var(--n,1),minmax(140px,1fr));grid-auto-rows:auto;gap:6px 6px;overflow-x:auto;padding-bottom:4px}
.fw-col{border:1px solid var(--line);border-radius:10px;background:var(--card)}
.fw-head{display:grid;text-align:center;padding:6px 4px;background:var(--soft);border-bottom:1px solid var(--line);border-radius:10px 10px 0 0;margin:1px 1px 0}
.fw-head small{color:var(--muted);font-size:11.5px}
.fw-empty{color:var(--muted);font-size:12px;text-align:center;padding:6px 0;align-self:start}
.fw-add{justify-content:center;font-size:13px;padding:4px 6px;margin:0 6px 6px;color:var(--muted);border:1px dashed var(--field);align-self:end}
.ferien-weeks .fe{position:relative;margin:0 6px;z-index:1;text-align:center}  /* Schrift in den Ferien-Blöcken zentriert */
.frz{position:absolute;top:0;bottom:0;width:9px;cursor:ew-resize;touch-action:none;z-index:2}
.frz-l{left:0}.frz-r{right:0}
.frz::after{content:"";position:absolute;top:50%;width:3px;height:22px;margin-top:-11px;border-radius:2px;background:currentColor;opacity:0;transition:opacity .12s}
.frz-l::after{left:2px}.frz-r::after{right:2px}
.ferien-weeks .fe:hover .frz::after,.ferien-weeks .fe.resizing .frz::after{opacity:.55}
@media (hover:none){.frz{width:16px}.frz::after{opacity:.4}}
.ferien-weeks .fe.resizing{z-index:3;outline:2px solid var(--accent);outline-offset:1px}
.ferien-weeks .fe[data-drag]{cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.ferien-weeks .fe.resizing{cursor:grabbing}
.ferien-weeks .fe.armed{outline:2px solid var(--accent);outline-offset:1px}
.fe.cut-l{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}
.fe.cut-r{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0}
.fe{display:block;border:0;border-radius:8px;padding:6px 8px;text-align:left;font-size:12px;line-height:1.3;cursor:pointer;color:var(--t)}
.fe b{display:block;font-size:12.5px}.fe small{display:block;opacity:.9}
.fe.kind-seminar,.fe.kind-praktikum{color:#1f2937}  /* helle Flächen: dunkle Schrift wie im Raster */
.fe.kind-seminar .in{display:block}
.ferien-weeks .fe.online{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--mhh-red);margin:3px 9px}
/* Live-Benachrichtigungen (Push) */
#popups{position:fixed;top:76px;right:16px;z-index:130;display:grid;gap:8px;width:min(360px,calc(100vw - 32px))}
.popup{position:relative;display:grid;gap:2px;background:var(--card);border:1px solid var(--line);border-left:5px solid var(--mhh-red);
  border-radius:10px;padding:10px 34px 10px 12px;box-shadow:0 12px 32px rgb(46 41 37 / .22);font-size:14px;transition:opacity .5s,transform .5s}
.popup span{color:var(--muted);font-size:13px}
.popup button{position:absolute;top:6px;right:6px;border:0;background:none;font-size:18px;cursor:pointer;color:var(--muted);border-radius:6px;padding:0 6px}
.popup.out{opacity:0;transform:translateX(20px)}
@media (prefers-reduced-motion:no-preference){.popup{animation:pop-in .25s ease-out}@keyframes pop-in{from{opacity:0;transform:translateX(20px)}}}
.perm{margin:8px 0 0}.perm .btn{padding:4px 8px}
/* Ausfallmeldungen in der Admin-Glocke */
#notifBody li.plain.cancelreq{--c:#b42318;align-items:center;flex-wrap:wrap}
.cancelreq .reason{display:grid;gap:3px;margin-top:6px;font-size:12px;color:var(--muted);font-weight:600}
/* Raumauswahl (eigene Vorschlagsliste) */
.picker{position:relative}
.suggest{position:absolute;top:100%;left:0;right:0;z-index:5;margin-top:4px;max-height:260px;overflow:auto;background:var(--card);
  border:1px solid var(--field);border-radius:10px;box-shadow:0 12px 28px rgb(46 41 37 / .18);padding:4px}
.suggest[hidden]{display:none}
.suggest .opt{padding:7px 10px;border-radius:7px;cursor:pointer;color:var(--ink);font-weight:400}
.suggest .opt b{display:block;font-weight:600;font-size:14px}
.suggest .opt small{display:block;color:var(--muted);font-size:12px;line-height:1.3;margin-top:1px}
.suggest .opt:hover,.suggest .opt.on{background:var(--accent-soft)}
/* Rechtsklick-Menü */
.ctxmenu{position:fixed;z-index:120;min-width:190px;max-width:320px;display:grid;padding:5px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgb(46 41 37 / .22)}
.ctxmenu[hidden]{display:none}
.ctxmenu button{border:0;background:none;text-align:left;padding:8px 12px;border-radius:7px;cursor:pointer;font-weight:600;color:var(--ink)}
.ctxmenu button:hover,.ctxmenu button:focus-visible{background:var(--accent-soft);outline:none}
.ctxmenu button.danger{color:#b42318}
/* Ziehkanten zum Verlängern/Kürzen (nur Admin) */
.rz{position:absolute;left:0;right:0;height:8px;cursor:ns-resize;touch-action:none;z-index:2}
.rz-top{top:0}.rz-bot{bottom:0}  /* nicht „.top“: so heißt die Kopfzeile */
.rz::after{content:"";position:absolute;left:50%;width:22px;height:3px;margin-left:-11px;border-radius:2px;background:currentColor;opacity:0;transition:opacity .12s}
.rz-top::after{top:2px}.rz-bot::after{bottom:2px}
.ev:hover .rz::after,.ev.resizing .rz::after{opacity:.55}
@media (hover:none){.rz{height:14px}.rz::after{opacity:.4}}
.ev.resizing{z-index:60;box-shadow:0 6px 18px #0004;outline:2px solid var(--accent);outline-offset:1px}
.rztip{position:absolute;right:4px;bottom:4px;font-size:11px;font-weight:700;background:#111d;color:#fff;border-radius:4px;padding:1px 5px;pointer-events:none}
.dropind{position:absolute;left:2px;right:2px;z-index:40;border:2px dashed var(--accent);background:rgb(120 110 100 / .14);border-radius:8px;pointer-events:none;font-size:12px;font-weight:700;color:var(--accent);padding:2px 6px}
.dlg.one .seriesOnly{display:none!important}
.occOnly{display:none!important}
.dlg.one .occOnly{display:grid!important}
.scopebtns{display:grid;gap:8px}.scopebtns .btn{justify-content:center}
.hint{margin:0 0 8px}
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;z-index:100;font-weight:600;box-shadow:0 8px 24px #0004}
#toast.err{background:#b42318}

/* Excel-Import */
.dlg[hidden]{display:none}
dialog.wide{width:min(1200px,calc(100vw - 24px));max-height:92vh}
.impwrap{overflow:auto;max-height:52vh;border:1px solid var(--line);border-radius:10px}
table.imp{border-collapse:collapse;width:100%;font-size:13px;min-width:980px}
table.imp th{position:sticky;top:0;background:var(--soft);text-align:left;padding:6px 6px;border-bottom:1px solid var(--line);z-index:1}
table.imp td{padding:4px 4px;border-bottom:1px solid var(--line);vertical-align:middle}
table.imp input:not([type=checkbox]),table.imp select{padding:4px 6px;border-radius:6px;font-size:13px;width:100%}
table.imp .c-sem{width:58px}table.imp .c-time{width:92px}table.imp .c-sel{width:110px}
table.imp tr.off{opacity:.5}
table.imp tr.bad td:first-child{box-shadow:inset 3px 0 #b42318}
.mini{display:inline-flex;align-items:center;gap:2px;margin-right:6px;font-size:12px;color:var(--ink);font-weight:600}
.mini input{width:auto!important}
.imp .warn{color:#8a5a00}.imp .bad-t{color:#b42318;font-weight:600}.imp small{display:block;color:var(--muted)}
.dlg .check{display:flex;flex-direction:row;align-items:center;gap:8px;color:var(--ink);font-weight:500}.dlg .check input{width:auto}
.notes{margin:0;padding-left:18px}
table.imp td .mini{display:inline-flex;flex-direction:row;align-items:center;gap:2px;margin:0 4px 0 0;font-size:12px;color:var(--ink);font-weight:600;white-space:nowrap}
table.imp td:nth-child(3){min-width:200px}
table.imp td:nth-child(6){white-space:nowrap}
table.imp td:nth-child(9),table.imp td:nth-child(10){min-width:110px}
table.imp td:nth-child(11){min-width:130px;font-size:12px}
