
@font-face{font-family:Inter;src:url(/static/fonts/inter.woff2) format('woff2');font-weight:100 900;font-display:swap}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:14px/1.5 var(--font-ui);color:var(--ink);min-height:100vh;background:var(--bg);background-attachment:fixed}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.shell{max-width:1360px;margin:28px auto;padding:0 20px}
.app{display:grid;grid-template-columns:230px 1fr;min-height:calc(100vh - 56px);background:linear-gradient(135deg,rgba(255,255,255,.62),rgba(240,244,252,.5));
 backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);border:1px solid rgba(255,255,255,.75);border-radius:36px;box-shadow:0 30px 80px -30px rgba(40,60,110,.35),inset 0 1px 0 rgba(255,255,255,.8)}
.app.has-right{grid-template-columns:230px 1fr 300px}
.side{padding:30px 18px;display:flex;flex-direction:column;border-right:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:19px;letter-spacing:-.02em;color:var(--ink);padding:0 10px 30px}.brand:hover{text-decoration:none}
.nav a{display:flex;align-items:center;gap:12px;padding:10px 14px;margin:2px 0;border-radius:14px;color:var(--ink);font-weight:500}
.nav a:hover{background:rgba(255,255,255,.45);text-decoration:none}.nav a.on{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 6px 18px -8px rgba(40,60,110,.35)}
.nav .sep{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:18px 14px 6px}
.me{margin-top:auto;padding:16px 10px 0;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px}
.me small{display:block;color:var(--muted);font-size:12px}.me form{margin-left:auto}
.iconbtn{background:none!important;border:0!important;color:var(--muted)!important;padding:6px!important;box-shadow:none!important}
.main{padding:30px 34px;min-width:0}.right{padding:30px 26px;border-left:1px solid var(--line);min-width:0}
.top{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:26px}
.top h1{font-family:var(--font-head);font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0}.top .sub{color:var(--muted);font-size:13px}
.stat{display:flex;gap:10px;align-items:center;padding-left:20px;border-left:1px solid var(--line)}.stat b{display:block;font-size:15px}.stat span{color:var(--muted);font-size:12px}
.stat i{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#fff;color:var(--ink)}
h1{font-family:var(--font-head);font-size:26px;font-weight:600;letter-spacing:-.02em;margin:0 0 20px}h2{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:0 0 14px}
.sec-h{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px}.sec-h h2{margin:0}.sec-h a{font-size:13px;color:var(--ink);font-weight:500}
.card{background:var(--glass);border:1px solid rgba(255,255,255,.8);border-radius:var(--r);padding:20px;margin-bottom:18px;box-shadow:0 10px 30px -18px rgba(40,60,110,.3)}
.tile{background:var(--glass2);border:1px solid rgba(255,255,255,.9);border-radius:18px;padding:14px 16px}
table{width:100%;border-collapse:separate;border-spacing:0;background:var(--glass2);border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,.9)}
th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}
th{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:rgba(255,255,255,.4)}
input,select,textarea{font:inherit;padding:10px 12px;border:1px solid rgba(var(--ink-rgb),.1);border-radius:12px;width:100%;background:rgba(255,255,255,.85);color:var(--ink);outline:none;transition:.15s}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-ring)}
label{display:block;margin:12px 0 6px;font-size:12.5px;font-weight:500;color:var(--muted)}
.btn,button{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:600;background:var(--ink);color:#fff;border:0;border-radius:12px;padding:10px 16px;cursor:pointer;text-decoration:none!important;transition:.15s}
.btn:hover,button:hover{transform:translateY(-1px);box-shadow:0 8px 20px -10px rgba(var(--ink-rgb),.6)}
.btn.acc,button.acc{background:var(--accent)}.btn.sec,button.sec{background:rgba(255,255,255,.85);color:var(--ink);border:1px solid rgba(var(--ink-rgb),.1)}
button.bad,.btn.bad{background:var(--bad)}button:disabled{opacity:.4;cursor:not-allowed;transform:none}
.big{font-size:18px;padding:18px 30px;border-radius:18px}.row{display:flex;gap:14px;flex-wrap:wrap}.row>*{flex:1;min-width:170px}
.muted{color:var(--muted)}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}
.badge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:12px;font-weight:500;background:#fff;border:1px solid var(--line)}
.flash{padding:12px 16px;border-radius:14px;background:rgba(220,247,234,.85);border:1px solid #bfe8d3;margin-bottom:18px}.flash.err{background:rgba(253,232,235,.9);border-color:#f6c6ce}
.seatbar{height:10px;background:rgba(var(--ink-rgb),.08);border-radius:99px;overflow:hidden}.seatbar>div{height:100%;background:var(--accent);border-radius:99px}
.grid{table-layout:fixed}.grid td{font-size:12.5px;height:110px}.grid td>b{font-weight:600}
.shift{background:var(--accent-soft);color:var(--accent);border-radius:10px;padding:4px 8px;margin:4px 0;display:block;font-weight:500}
.inline{display:inline}form.inline button{padding:6px 10px;font-size:12.5px}
.av{display:inline-grid;place-items:center;border-radius:50%;font-weight:600;color:var(--ink);flex:none;box-shadow:0 0 0 3px rgba(255,255,255,.9)}
.dash{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;align-items:start}
.bars{display:flex;align-items:flex-end;gap:12px;height:170px;padding-top:6px}
.bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%;justify-content:flex-end}
.bar div{width:100%;max-width:46px;border-radius:14px;background:rgba(255,255,255,.85);min-height:10px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.9)}
.bar.on div{background:linear-gradient(180deg,var(--accent-2),var(--accent));box-shadow:0 10px 24px -8px var(--accent-glow)}
.bar span{font-size:12px;color:var(--muted)}.bar.on span{color:var(--ink);font-weight:600}.bar em{font-style:normal;font-size:11px;color:var(--muted)}
.shiftcard{background:var(--glass2);border:1px solid rgba(255,255,255,.9);border-radius:18px;padding:14px;margin-bottom:12px}
.pill{display:inline-block;padding:3px 10px;border-radius:99px;background:#fff;font-size:12px;font-weight:600}.pill.acc{background:var(--accent);color:#fff}
.team{display:flex;gap:22px;flex-wrap:wrap}.team a{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--ink);font-size:13px;font-weight:500;text-decoration:none;width:84px;text-align:center}
.hero{border-radius:22px;padding:20px;color:#fff;background:var(--hero);box-shadow:0 18px 40px -18px var(--accent-glow);margin-bottom:18px;position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;right:-30px;top:-30px;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.12)}
.hero h3{margin:0 0 12px;font-size:16px;font-weight:600}.hero .btn{background:var(--sonne);color:var(--lila)}
.ringcard{display:flex;align-items:center;gap:14px}.ring{--p:0;width:64px;height:64px;border-radius:50%;flex:none;display:grid;place-items:center;
 background:conic-gradient(var(--accent) calc(var(--p)*1%),var(--accent-track) 0)}.ring b{width:50px;height:50px;border-radius:50%;background:var(--papier);display:grid;place-items:center;font-size:13px}
.list a.li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}.list a.li:last-child{border:0}
.li .ic{width:38px;height:38px;border-radius:12px;background:#fff;display:grid;place-items:center;flex:none;color:var(--accent)}.li small{display:block;color:var(--muted);font-size:12px}
.search{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:22px;color:var(--muted)}.search input{border:0;background:none;padding:4px;box-shadow:none!important}
.clock{text-align:center;padding:34px 20px}.clock .time{font-size:52px;font-weight:600;letter-spacing:-.03em}
.pub{max-width:760px;margin:40px auto;padding:0 18px}.pub .app{display:block;padding:34px;min-height:0}
.mtab{display:none}
@media print{.side,.right,.noprint,.mtab{display:none!important}body{background:#fff}.app{display:block;border:0;box-shadow:none;background:#fff}.card,table{box-shadow:none}}
@media(max-width:1180px){.app.has-right{grid-template-columns:230px 1fr}.right{grid-column:2;border-left:0;border-top:1px solid var(--line)}}
@media(max-width:860px){.shell{margin:0;padding:0}.app,.app.has-right{display:block;border-radius:0;min-height:100vh;border:0;padding-bottom:78px}.side{display:none}.right{border:0}
 .main,.right{padding:20px 16px}.dash{grid-template-columns:1fr}.top{gap:14px}.stat{padding-left:0;border:0}
 .mtab{display:flex;position:fixed;left:10px;right:10px;bottom:10px;z-index:9;justify-content:space-around;padding:8px;background:rgba(255,255,255,.8);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid #fff;border-radius:22px;box-shadow:0 10px 30px -10px rgba(40,60,110,.4)}
 .mtab a{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--muted);padding:6px 10px;border-radius:14px}.mtab a.on{color:var(--accent);background:var(--accent-soft)}
 table{font-size:13px;display:block;overflow-x:auto}.grid td{min-width:120px}.clock .time{font-size:44px}.big{width:100%;justify-content:center;margin:6px 0}.pub{margin:0}.pub .app{padding:22px 16px}}
/* ---- UX-Komponenten ---- */
.toasts{position:fixed;right:20px;bottom:20px;z-index:60;display:flex;flex-direction:column;gap:10px;max-width:calc(100vw - 40px)}
.toast{display:flex;align-items:center;gap:12px;background:var(--ink);color:#fff;padding:12px 14px 12px 18px;border-radius:16px;box-shadow:0 18px 40px -16px rgba(var(--ink-rgb),.7);transform:translateY(16px);opacity:0;transition:.22s}
.toast.in{transform:none;opacity:1}.toast.err{background:var(--bad)}.toast .undo{background:var(--sonne);color:var(--lila);padding:6px 12px;border-radius:10px}.toast .x{background:none;padding:4px 6px;font-size:18px;opacity:.7}
.layer{position:fixed;inset:0;z-index:50}.layer .scrim{position:absolute;inset:0;background:rgba(var(--ink-rgb),.28);backdrop-filter:blur(3px);opacity:0;transition:.2s}.layer.in .scrim{opacity:1}
.layer .sheet{position:absolute;background:rgba(248,250,248,.92);backdrop-filter:blur(30px) saturate(150%);-webkit-backdrop-filter:blur(30px) saturate(150%);border:1px solid #fff;box-shadow:0 30px 80px -20px rgba(var(--ink-rgb),.5);display:flex;flex-direction:column;transition:.22s}
.layer.panel .sheet{top:12px;right:12px;bottom:12px;width:min(520px,calc(100vw - 24px));border-radius:28px;transform:translateX(30px);opacity:0}
.layer.modal .sheet{left:50%;top:14vh;width:min(520px,calc(100vw - 24px));border-radius:24px;transform:translate(-50%,10px);opacity:0;max-height:76vh}
.layer.in .sheet{opacity:1;transform:none}.layer.modal.in .sheet{transform:translate(-50%,0)}
.sheet-h{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 4px;font-family:var(--font-head);font-size:19px}.sheet-h .close{font-size:24px}
.sheet-b{padding:8px 22px 22px;overflow:auto}.sheet-b .card{background:transparent;border:0;box-shadow:none;padding:0}
.kbar .sheet-h{display:none}.kq{font-size:17px;padding:14px 16px}.kres{margin-top:10px;max-height:50vh;overflow:auto}
.kr{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;color:var(--ink);text-decoration:none!important}.kr small{margin-left:auto;color:var(--muted)}.kr.on,.kr:hover{background:var(--accent-soft)}
.kbar-btn{width:100%;justify-content:flex-start;background:rgba(255,255,255,.6)!important;color:var(--muted)!important;border:1px solid var(--line)!important;font-weight:500;margin:-10px 0 18px;box-shadow:none!important;transform:none!important}
.kbar-btn kbd,kbd{margin-left:auto;font:11px var(--font-ui);background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px 6px;color:var(--muted)}
.keys td{border:0;padding:6px 8px}.keys{background:none;border:0}
input.touched:invalid,select.touched:invalid,textarea.touched:invalid{border-color:var(--bad);box-shadow:0 0 0 4px rgba(184,67,90,.12)}.vmsg{display:block;color:var(--bad);font-size:12px;margin-top:4px}
.sr{position:absolute!important;opacity:0;pointer-events:none;width:1px!important;height:1px}
.combo{position:relative}.combo-btn{width:100%;background:rgba(255,255,255,.85)!important;color:var(--ink)!important;border:1px solid rgba(var(--ink-rgb),.1)!important;font-weight:500;justify-content:flex-start;padding:6px 12px;box-shadow:none!important;transform:none!important}
.combo-btn i{margin-left:auto;font-style:normal;color:var(--muted)}.combo-pop{display:none;position:absolute;z-index:20;left:0;right:0;top:calc(100% + 6px);background:#fff;border-radius:16px;padding:8px;box-shadow:0 20px 50px -16px rgba(var(--ink-rgb),.45)}
.combo.open .combo-pop{display:block}.combo-list{max-height:240px;overflow:auto;margin-top:6px}.combo-list button{width:100%;background:none;color:var(--ink);justify-content:flex-start;font-weight:500;padding:7px 8px;box-shadow:none;transform:none}
.combo-list button:hover,.combo-list button.on{background:var(--accent-soft)}
[data-inline]{border-radius:6px;padding:1px 4px;margin:-1px -4px;cursor:text;outline:none}[data-inline]:hover{background:rgba(67,63,129,.07)}[data-inline][contenteditable=true]{background:#fff;box-shadow:0 0 0 2px var(--accent)}
.empty{text-align:center;padding:34px 20px;color:var(--muted);background:var(--glass);border:1px dashed rgba(67,63,129,.25);border-radius:var(--r)}.empty svg{width:34px;height:34px;color:var(--accent);opacity:.7}.empty b{display:block;color:var(--ink);font-size:15px;margin:8px 0 4px}.empty p{margin:0 0 14px}
.grid td[data-date]{cursor:copy;transition:background .15s}.grid td.drop{background:rgba(228,231,167,.55)!important;box-shadow:inset 0 0 0 2px var(--lila)}
.grid td[data-date]:hover .addhint{opacity:1}.addhint{opacity:0;color:var(--muted);font-size:11.5px;transition:.15s}
.shift[draggable=true]{cursor:grab}.shift.dragging{opacity:.4}.shift.mine{background:var(--lila);color:#fff}
.emps{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.emp-chip{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 5px;border-radius:99px;background:rgba(255,255,255,.8);border:1px solid #fff;cursor:grab;font-weight:500;font-size:13px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.toolbar .sp{flex:1}.seg{display:inline-flex;background:rgba(255,255,255,.6);border-radius:12px;padding:3px}.seg a{padding:6px 12px;border-radius:9px;color:var(--ink);font-weight:500}.seg a.on{background:#fff;box-shadow:0 2px 8px -4px rgba(var(--ink-rgb),.4)}
button.on{background:var(--sonne)!important;color:var(--lila)!important}
.oh-row{display:grid;grid-template-columns:110px 70px 1fr;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.oh-row.closed .oh-ranges{opacity:.35;pointer-events:none}
.oh-ranges{display:flex;gap:14px;flex-wrap:wrap;align-items:center}.oh-range{display:flex;gap:6px;align-items:center}.oh-range input{width:120px}
.switch{position:relative;width:46px;height:26px;display:inline-block}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;background:var(--stein);border-radius:99px;transition:.2s;cursor:pointer}
.switch span:before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 2px 6px rgba(0,0,0,.2)}.switch input:checked+span{background:var(--ems)}.switch input:checked+span:before{transform:translateX(20px)}
.pub.wide{max-width:980px}.prog a.ev{display:grid;grid-template-columns:76px 1fr 200px;gap:18px;align-items:center;padding:16px;border-radius:20px;background:var(--glass2);border:1px solid #fff;margin-bottom:12px;color:var(--ink);text-decoration:none}
.prog a.ev:hover{transform:translateY(-1px);box-shadow:0 14px 30px -18px rgba(var(--ink-rgb),.5)}.datebox{text-align:center;background:var(--sonne);color:var(--lila);border-radius:16px;padding:8px 0;font-weight:700}.datebox b{display:block;font-size:26px;line-height:1;font-family:var(--font-head)}.datebox small{font-size:12px;text-transform:uppercase}
.st-ok{color:var(--ems)}.st-few{color:var(--warn)}.st-full{color:var(--bad)}
@media(max-width:860px){button,.btn,input,select{min-height:46px}.nav a,.kr,.combo-list button{min-height:46px}form.inline button{min-height:40px;padding:8px 12px}
 .toasts{left:12px;right:12px;bottom:90px}.layer.panel .sheet{top:auto;left:0;right:0;bottom:0;width:100%;max-height:88vh;border-radius:26px 26px 0 0;transform:translateY(40px)}
 .oh-row{grid-template-columns:1fr auto}.oh-ranges{grid-column:1/-1}.prog a.ev{grid-template-columns:64px 1fr}.prog .evseats{grid-column:1/-1}}
/* ---- Gantt ---- */
.gantt{display:flex;flex-direction:column;gap:18px}.gday{background:var(--glass);border:1px solid #fff;border-radius:var(--r);padding:14px 16px;overflow-x:auto}
.gday.closed{padding:12px 16px;opacity:.7}.gday-h{display:flex;gap:12px;align-items:baseline;margin-bottom:8px}.gday-h b{font-family:var(--font-head);font-size:16px}
.grow{display:grid;grid-template-columns:120px 1fr;align-items:center;min-width:640px}.grow+.grow{border-top:1px solid var(--line)}
.gname{display:flex;align-items:center;gap:8px;font-weight:500;font-size:13px;padding:6px 0}
.axis .gaxis{position:relative;height:18px}.gaxis span{position:absolute;transform:translateX(-50%);font-size:11px;color:var(--muted)}.gaxis span:first-child{transform:none}.gaxis span:last-child{transform:translateX(-100%)}
.lane{position:relative;height:46px;background:repeating-linear-gradient(90deg,transparent 0 calc(100%/var(--hrs,10) - 1px),rgba(67,63,129,.06) 0 calc(100%/var(--hrs,10)));touch-action:pan-x pan-y}
.editable .lane{cursor:crosshair}
.gap{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(135deg,rgba(202,204,190,.55) 0 6px,rgba(202,204,190,.25) 6px 12px);pointer-events:none;border-radius:6px}
.blk{position:absolute;top:6px;bottom:6px;background:var(--flieder);color:var(--lila);border-radius:10px;padding:4px 12px;font-size:12px;line-height:1.25;overflow:hidden;white-space:nowrap;box-shadow:0 4px 12px -6px rgba(var(--ink-rgb),.4);touch-action:none;user-select:none;-webkit-user-select:none}
.editable .blk{cursor:grab}.blk.active{cursor:grabbing;box-shadow:0 10px 24px -8px rgba(var(--ink-rgb),.55);z-index:3}.blk.ghost{opacity:.7;outline:2px dashed var(--lila)}
.blk.mine{background:var(--lila);color:#fff}.blk .bt{font-weight:600;display:block}.blk .bn{opacity:.8}
.blk .h{position:absolute;top:0;bottom:0;width:10px;cursor:ew-resize}.blk .h.l{left:0}.blk .h.r{right:0}.blk .h:after{content:"";position:absolute;top:30%;bottom:30%;left:4px;width:2px;border-radius:2px;background:currentColor;opacity:.35}
.blk.clash{background:#f6d3da;color:var(--bad);box-shadow:0 0 0 2px var(--bad)}.blk.outside{outline:2px dashed var(--warn)}
.clash-dot{display:inline-block;width:10px;height:10px;border-radius:3px;background:#f6d3da;box-shadow:0 0 0 2px var(--bad);vertical-align:-1px;margin-right:2px}
@media(max-width:860px){.lane{height:54px}.blk{top:5px;bottom:5px}.blk .h{width:18px}.grow{grid-template-columns:84px 1fr}}
[hidden]{display:none!important}.sec-h a.btn.acc,.sec-h a.btn.acc:hover{color:#fff}.sec-h a.btn.sec{color:var(--ink)}
.absence{position:absolute;inset:4px 0;display:grid;place-items:center;font-style:normal;font-weight:600;font-size:12px;color:var(--muted);background:repeating-linear-gradient(45deg,rgba(202,204,190,.45) 0 8px,rgba(255,255,255,.3) 8px 16px);border-radius:8px;pointer-events:none}
.avail{position:absolute;bottom:0;height:5px;border-radius:3px;pointer-events:auto}.avail.nicht{background:var(--bad);opacity:.6}.avail.wunsch{background:var(--ems);opacity:.7}.avail.verfuegbar{background:var(--sonne)}
.gday-h .badge{margin-left:auto;font-size:11.5px}
