:root{--bg: #fbfaf8;--card: #ffffff;--ink: #2b2b31;--ink-dim: #82828c;--line: #edece8;--danger: #c0564f;--now: #d9534f;--fruh: #a7c7e7;--fruh-ink: #33608a;--spat: #f6c9a0;--spat-ink: #8f5620;--nacht: #b9b3e0;--nacht-ink: #4c4590;--frei: #d9d6cd;--frei-ink: #6c695f;--urlaub: #a9d8bd;--urlaub-ink: #356f50;--cat-work: #cf8a5b;--cat-work-tint: #f9efe4;--cat-private: #6f9ecf;--cat-private-tint: #eaf1f9;--cat-education: #8f7fc9;--cat-education-tint: #f1eef9;--cat-vacation: #5f9e7d;--cat-vacation-tint: #e9f4ee;--accent: #7fa8d4;--radius: 14px;--hour-h: 54px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);font-family:-apple-system,Inter,Segoe UI,system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--ink)}.app{height:100%;max-width:560px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg)}.topbar{padding:calc(10px + env(safe-area-inset-top)) 20px 10px;display:flex;align-items:center;justify-content:space-between}.topbar .date{font-size:20px;font-weight:700;letter-spacing:-.01em}.topbar .date span{color:var(--ink-dim);font-weight:500}.topbar .month-nav{display:flex;align-items:center;gap:10px}.topbar .month-nav .nav{border:none;background:none;color:var(--ink-dim);font-size:18px;padding:2px 4px;line-height:1}.month-label-btn{border:none;background:none;color:var(--ink);font:inherit;font-weight:700;padding:0}.topbar .today-btn{font-size:11px;font-weight:700;padding:7px 13px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.weekstrip-wrap{padding-top:2px}.kw-label{font-size:10px;font-weight:700;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.06em;padding:0 16px 4px}.weekstrip{display:flex;align-items:center;padding:2px 8px 10px;gap:2px}.weekstrip .nav{width:28px;height:28px;border:none;background:none;color:var(--ink-dim);font-size:16px;flex-shrink:0;padding:0}.daychip{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;border:none;background:none;padding:4px 0}.daychip .dow{font-size:9.5px;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.daychip .num{font-size:14px;font-weight:600;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:var(--ink)}.daychip.active .num{background:var(--ink);color:#fff}.daychip .bar{width:24px;height:6px;border-radius:3px;background:transparent}.filters{display:flex;gap:8px;padding:2px 16px 12px;overflow-x:auto;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.chip{font-size:11px;font-weight:600;padding:7px 14px;border-radius:999px;background:var(--card);color:var(--ink-dim);white-space:nowrap;border:1px solid var(--line)}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.main{flex:1;overflow-y:auto;background:var(--card);margin:0 12px;border-radius:22px 22px 0 0;border:1px solid var(--line);border-bottom:none;position:relative}.daybody{display:flex;min-height:100%}.shiftrail{width:44px;flex-shrink:0;position:relative;border-right:1px solid var(--line);padding:10px 0}.rail-seg{position:absolute;left:9px;width:26px;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;overflow:hidden}.rail-seg .lbl{font-size:9.5px;font-weight:700;letter-spacing:.08em;writing-mode:vertical-rl}.rail-seg.partner{width:8px;left:34px;padding:0;border-radius:4px;opacity:.85}.rail-hit{position:absolute;top:0;right:0;bottom:0;left:0;border:none;background:none}.timeline{flex:1;position:relative;padding:10px 12px 24px 6px}.hourline{height:var(--hour-h);border-top:1px solid var(--line);position:relative}.hourline .hr{font-size:9.5px;color:var(--ink-dim);font-weight:600;position:absolute;top:-6px;left:0}.nowline{position:absolute;left:30px;right:0;height:0;border-top:2px solid var(--now);z-index:5;pointer-events:none}.nowline:before{content:"";position:absolute;left:-5px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--now)}.event{position:absolute;left:34px;right:2px;border-radius:12px;padding:7px 12px 7px 14px;font-size:11px;text-align:left;display:flex;flex-direction:column;gap:1px;border:none;overflow:hidden;min-height:26px}.event .t{font-weight:700;font-size:11.5px}.event .sub{font-size:9.5px;opacity:.8;font-weight:500}.event .tag{position:absolute;left:0;top:7px;bottom:7px;width:3px;border-radius:2px}.event.partner{background:transparent!important;border:1.5px dashed currentColor}.empty-day{padding:40px 20px;text-align:center;color:var(--ink-dim);font-size:13px}.schedule-list{padding:8px 14px 90px;display:flex;flex-direction:column;gap:8px}.schedule-heading{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-dim);font-weight:700;margin:10px 2px 2px}.schedule-heading:first-child{margin-top:2px}.schedule-row{display:flex;align-items:center;gap:14px;background:#faf9f6;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;text-align:left;border-left:3px solid var(--cat-education)}.schedule-date{display:flex;flex-direction:column;align-items:center;flex-shrink:0;width:34px}.schedule-date .d{font-size:17px;font-weight:700;line-height:1.1}.schedule-date .m{font-size:9.5px;color:var(--ink-dim);text-transform:uppercase;font-weight:700}.schedule-date--weekday{font-size:13px;font-weight:700;color:var(--cat-education);text-transform:uppercase;letter-spacing:.03em}.schedule-main{flex:1;min-width:0}.schedule-title{font-size:13.5px;font-weight:600}.schedule-meta{font-size:11.5px;color:var(--ink-dim);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.schedule-topic{font-size:10.5px;font-weight:700;color:var(--cat-education);background:var(--cat-education-tint);padding:2px 8px;border-radius:999px}.monthcard{padding:18px 10px 18px 4px}.monthgrid{display:grid;grid-template-columns:22px repeat(7,1fr);gap:5px;align-items:stretch}.monthgrid .kw-head{color:var(--ink-dim);opacity:.6;font-size:8px}.kw-cell{display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:700;color:var(--ink-dim);opacity:.7;writing-mode:vertical-rl}.monthgrid .dow{font-size:9px;color:var(--ink-dim);text-align:center;padding-bottom:6px;font-weight:700;letter-spacing:.04em}.monthcell{aspect-ratio:1;border-radius:10px;background:#faf9f6;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;font-weight:600;gap:3px;border:none;color:var(--ink);position:relative;padding:0}.monthcell.today{background:var(--ink);color:#fff}.monthcell.dim{color:var(--ink-dim);opacity:.35}.monthcell .bar{width:20px;height:6px;border-radius:3px}.monthcell .dots{display:flex;align-items:center;gap:3px;height:9px}.monthcell .dot{border-radius:50%;flex-shrink:0}.settings{padding:18px 16px 30px;display:flex;flex-direction:column;gap:22px}.section h2{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-dim);margin:0 0 12px;font-weight:700}.rowcard{display:flex;align-items:center;gap:12px;background:#faf9f6;border:1px solid var(--line);border-radius:var(--radius);padding:11px 13px;margin-bottom:8px}.rowcard .grow{flex:1;min-width:0}.rowcard .name{font-size:13px;font-weight:600}.rowcard .meta{font-size:11px;color:var(--ink-dim)}.swatch{width:22px;height:22px;border-radius:7px;flex-shrink:0}.icon-btn{border:none;background:none;color:var(--ink-dim);font-size:12px;font-weight:600;padding:6px}.icon-btn.danger{color:var(--danger)}.btn{border:none;border-radius:12px;padding:11px 16px;font-size:13px;font-weight:700;background:var(--ink);color:#fff}.btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}.btn.danger{background:var(--card);color:var(--danger);border:1px solid var(--line)}.btn:disabled{opacity:.5;cursor:default}.btn.block{width:100%}.switch{position:relative;width:44px;height:26px;flex-shrink:0}.switch input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:pointer;z-index:1}.switch-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--line);border-radius:999px;transition:background .15s}.switch-track:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .15s;box-shadow:0 1px 3px #2b2b3140}.switch input:checked+.switch-track{background:var(--ink)}.switch input:checked+.switch-track:after{transform:translate(18px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--accent);outline-offset:2px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field label{font-size:11px;font-weight:700;color:var(--ink-dim)}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:11px;padding:10px 12px;font-size:14px;background:var(--card);width:100%}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}.field-row{display:flex;gap:10px}.field-row .field{flex:1}.checkline{display:flex;align-items:center;gap:9px;font-size:13px;margin-bottom:12px}.checkline input{width:17px;height:17px;accent-color:var(--ink)}.pattern-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.pattern-day{display:flex;align-items:center;gap:8px}.pattern-day .idx{width:40px;font-size:10px;font-weight:700;color:var(--ink-dim);flex-shrink:0}.pattern-day select{flex:1;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px;background:var(--card)}.pattern-day .icon-btn{flex-shrink:0}.fab{position:fixed;right:max(18px,calc(50% - 262px));bottom:92px;width:54px;height:54px;border-radius:50%;background:var(--ink);color:#fff;border:none;font-size:26px;line-height:1;box-shadow:0 10px 24px -8px #2b2b3180;z-index:20}.tabbar{display:flex;justify-content:space-around;padding:10px 12px calc(14px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}.tabitem{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:9.5px;font-weight:600;color:var(--ink-dim);border:none;background:none;padding:2px 12px}.tabitem .shape{width:18px;height:18px;border-radius:6px;border:1.8px solid currentColor}.tabitem.day .shape{border-radius:50%}.tabitem.shifts .shape{border-radius:3px}.tabitem.active{color:var(--ink)}.tabitem.active .shape{background:var(--ink);border-color:var(--ink)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b2b3159;display:flex;align-items:flex-end;justify-content:center;z-index:50}.modal{width:100%;max-width:560px;max-height:88vh;overflow-y:auto;background:var(--bg);border-radius:22px 22px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));animation:slideup .18s ease-out}@keyframes slideup{0%{transform:translateY(30px);opacity:.6}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.modal{animation:none}}.modal h3{margin:0 0 16px;font-size:16px}.year-row{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:18px}.year-row .nav{border:none;background:none;color:var(--ink-dim);font-size:20px;padding:4px 8px}.year-row .year-label{font-size:19px;font-weight:700;min-width:64px;text-align:center}.month-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.modal-actions{display:flex;gap:10px;margin-top:6px}.modal-actions .btn{flex:1}.login{height:100%;display:flex;flex-direction:column;justify-content:center;padding:32px;max-width:420px;margin:0 auto}.login h1{font-size:24px;margin:0 0 4px;letter-spacing:-.01em}.login p{color:var(--ink-dim);font-size:13px;margin:0 0 26px}.login .logo{display:flex;gap:5px;margin-bottom:18px}.login .logo i{display:block;height:8px;border-radius:4px}.error-banner{background:#f9ecea;color:var(--danger);border:1px solid #efd4d1;border-radius:11px;padding:10px 13px;font-size:12.5px;margin-bottom:12px}.hint{font-size:11.5px;color:var(--ink-dim);margin:4px 0 12px}
