:root{--yellow:#ffd02b;--ink:#1b1b1b;--gray:#707276;--line:#ececec;--bg:#f6f6f6;--card:#fff}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer;border:0}button:disabled{opacity:.45;cursor:not-allowed}a{color:inherit}header{background:#161616;color:white;padding:13px 17px;position:sticky;top:0;z-index:15;box-shadow:0 4px 20px #0002}.brand{max-width:730px;margin:auto;display:flex;align-items:center;gap:12px}.brand img{width:64px;height:64px;object-fit:cover;object-position:center top;border-radius:11px;border:1px solid #777;background:white}.brand strong{font-size:22px;letter-spacing:-.7px}.accent,.yellow{color:var(--yellow)}.brand small{display:block;font-size:11px;color:#ccc;margin-top:3px}.session-info{max-width:730px;margin:7px auto 0;text-align:right;font-size:11px;color:#d4d4d4}.main{max-width:730px;margin:auto;padding:19px 14px 125px}.loading{text-align:center;margin:50px auto;color:#777}.login{margin:30px auto;max-width:430px}.login .brand-display{background:#161616;color:#fff;padding:20px;border-radius:20px;margin-bottom:16px}.login .brand-display h1{color:#fff}.login h2{margin:0 0 8px;font-size:23px}.login p{color:var(--gray);line-height:1.6}.kicker{text-transform:uppercase;color:#bc9000;font-size:10px;letter-spacing:1.6px;font-weight:800}.toprow{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.toprow h1{font-size:27px;letter-spacing:-.8px;margin:5px 0 6px}.toprow p{font-size:12px;color:var(--gray);margin:0 0 14px}.avatar{background:var(--yellow);border-radius:13px;padding:10px 11px;font-weight:800;font-size:12px}.hero{background:linear-gradient(118deg,#161616 60%,#30280a);border-radius:20px;color:white;padding:22px 21px;margin:13px 0;min-height:160px;position:relative;overflow:hidden}.hero:after{content:'■';position:absolute;color:#ffd02b15;font-size:180px;right:-20px;top:-45px;pointer-events:none}.hero .eyebrow{color:var(--yellow);font-size:10px;letter-spacing:1.6px;font-weight:800}.hero h2{font-size:25px;line-height:1.15;margin:13px 0}.hero h2 em{color:var(--yellow);font-style:normal}.hero p{font-size:12px;color:#ddd;line-height:1.6;max-width:300px}.btn{background:var(--yellow);padding:12px 15px;border-radius:12px;color:#141414;font-weight:800}.btn.secondary{background:#ededed}.btn.dark{background:#171717;color:#fff}.btn.small{padding:8px 11px;font-size:12px}.btn.ghost{background:#fff;border:1px solid #dedede}.btn.block{width:100%}.btn.link{background:none;padding:7px;color:#835f00}.actionbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:13px 0}.stat{background:white;border:1px solid var(--line);padding:15px 10px;border-radius:14px;text-align:left}.stat b{display:block;font-size:26px;letter-spacing:-1px}.stat span{font-size:11px;color:#666}.stat-link{appearance:none;display:block;width:100%;color:var(--ink);cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;background:#fff;line-height:normal}.stat-link:hover{border-color:#e5bd35;box-shadow:0 5px 16px #0000000d;transform:translateY(-2px)}.stat-link:active{transform:translateY(0)}.stat-link:focus-visible{outline:3px solid #be8d00;outline-offset:3px}.stat-link .stat-arrow{color:#b18a07;font-size:12px;font-weight:800;white-space:nowrap}@media(prefers-reduced-motion:reduce){.stat-link{transition:none}}.section-head{margin:22px 0 10px;display:flex;justify-content:space-between;align-items:center}.section-head h2{font-size:19px;margin:0}.section-head p{font-size:12px;color:var(--gray);margin:4px 0 0}.tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tile{background:#fff;padding:16px 14px;text-align:left;border-radius:15px;border:1px solid #ececec;min-height:106px}.tile i{display:block;font-size:21px;color:#c19203;font-style:normal}.tile strong{display:block;font-size:13px;margin:9px 0 4px}.tile small{color:#888;font-size:10px}.card{background:#fff;border:1px solid #ededed;border-radius:16px;padding:16px;margin:11px 0;box-shadow:0 5px 16px #00000005}.card strong{font-size:14px}.card p{font-size:12px;line-height:1.65;margin:7px 0;color:#666;white-space:pre-line}.row{display:flex;justify-content:space-between;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.muted{color:var(--gray);font-size:12px}.chip{display:inline-flex;align-items:center;white-space:nowrap;border-radius:50px;background:#fff2be;color:#614a00;font-size:10px;font-weight:800;padding:6px 8px}.chip.gray{background:#eee;color:#666}.chip.good{background:#e6f6e8;color:#22602a}.chip.bad{background:#f8e7e7;color:#912525}.notice{background:#fff4c5;border-radius:12px;padding:13px;margin:12px 0;font-size:12px;line-height:1.6}.empty{border:1px dashed #ddd;text-align:center;border-radius:15px;background:white;color:#666;padding:30px;margin:13px 0;font-size:13px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;justify-content:space-around;background:#fff;border-top:1px solid #e7e7e7;padding:8px 4px max(10px,env(safe-area-inset-bottom));box-shadow:0 -5px 20px #00000010}.bottom-nav button{background:transparent;color:#777;min-width:50px;font-size:10px;padding:4px}.bottom-nav button b{display:block;font-size:21px;margin-bottom:2px}.bottom-nav button.active{color:#ae8000;font-weight:800}.form-field{display:block;font-size:12px;font-weight:700;margin:13px 0}.form-field input,.form-field textarea,.form-field select{display:block;width:100%;padding:12px;border:1px solid #d9d9d9;border-radius:10px;background:#fff;margin-top:6px;font-size:16px;color:#202020}.form-field textarea{min-height:90px;resize:vertical}.sheet{position:fixed;inset:0;z-index:30;background:#0009;display:flex;justify-content:center;align-items:flex-end}.sheet.hidden{display:none}.sheet-content{width:100%;max-width:650px;background:#fff;border-radius:20px 20px 0 0;padding:21px 17px max(35px,env(safe-area-inset-bottom));max-height:90vh;overflow:auto}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.sheet-head h2{font-size:20px;margin:0}.icon-btn{background:#eee;border-radius:10px;padding:9px 12px}.toast{position:fixed;z-index:60;bottom:100px;left:50%;transform:translateX(-50%);background:#151515;color:white;border-radius:13px;padding:13px 18px;width:max-content;max-width:88vw;box-shadow:0 8px 40px #0003}.calendar-head{display:flex;align-items:center;justify-content:space-between;margin:17px 0 8px}.calendar-head strong{font-size:15px;text-transform:capitalize}.calendar-head button{background:#fff;border:1px solid #ddd;border-radius:9px;padding:8px 12px}.week,.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}.week{color:#666;font-size:10px;margin:8px 0}.day{min-height:53px;background:white;border:1px solid #e7e7e7;border-radius:9px;padding:7px 1px;font-size:12px;display:flex;flex-direction:column;align-items:center;gap:4px}.day small{font-size:8px;color:#3e7944}.day.busy{background:#eee;color:#888}.day.busy small{color:#888}.day.selected{background:var(--yellow);border-color:#e4b400;color:#111;font-weight:800}.day.blank{background:transparent;border:0}.day.past{opacity:.35}.message{background:#eee;border-radius:11px;padding:10px 12px;margin:8px 30px 8px 0;font-size:12px}.message.self{background:#fff1b8;margin-left:30px;margin-right:0}.message small{display:block;color:#737373;font-size:10px;margin-top:5px}.divider{border-top:1px solid #eee;margin:15px 0}.contact-row{padding:11px 0;border-bottom:1px solid #eee;font-size:13px}.contact-row span{display:block;color:#777;font-size:11px;margin-bottom:3px}.contact-row a{text-decoration:none;font-weight:700}.small{font-size:11px;color:#999}.report-time{font-weight:850;font-size:18px;color:#181818}.error{color:#a91d1d;font-size:12px}.foot{color:#aaa;font-size:11px;text-align:center;margin-top:24px}.loading-dots{font-size:13px;color:#555}.mini-logo{width:90px;height:100px;object-fit:cover;object-position:top;border-radius:12px}.listnum{font-size:10px;color:#777;margin-right:8px}@media(min-width:700px){.main{padding-left:25px;padding-right:25px}.bottom-nav{max-width:730px;left:50%;transform:translateX(-50%)}.sheet{align-items:center}.sheet-content{border-radius:20px;max-height:84vh;padding:22px}}

/* Passwort-Login / Einrichtung */
.auth-links{display:flex;justify-content:center;gap:12px;margin-top:16px;flex-wrap:wrap}.auth-link{background:transparent;color:#856400;font-weight:750;text-decoration:underline;padding:9px 4px;font-size:12px}.password-row{display:flex;position:relative}.password-row input{padding-right:92px}.password-toggle{position:absolute;right:7px;top:12px;background:#f0f0f0;border-radius:8px;padding:8px 10px;color:#333;font-size:12px;font-weight:700}.login .card .muted{color:#6c6c6c}

/* v10.3: Admin-Kalender und Bearbeitungsaktionen */
.card .row>.actionbar{margin:0;justify-content:flex-end}.calendar .day.busy{border-color:#dec67a}.sheet .notice{line-height:1.55}.card .row>div:first-child{min-width:0}.card .row>div:first-child strong{overflow-wrap:anywhere}

/* V10.5: Terminänderungen – sichtbar getrennt von der verbindlichen Buchung */
.change-request{border:1px solid #f0d783;background:#fffaf0;padding:13px;border-radius:14px;margin:14px 0}
.change-request p{line-height:1.55;margin:9px 0}
.change-request .notice{margin:10px 0;padding:10px}
.change-history{border-top:1px solid #eee;margin-top:14px;padding-top:9px}
.change-history summary{cursor:pointer;font-weight:650;color:#806400;font-size:12px;padding:8px}
.change-history .change-request{margin:8px 0}

/* OK clean V10.6 – mobile-friendly same-day extra and editing controls */
.day.own-day{background:#fff0b1;border-color:#efbd28;color:#131313;cursor:pointer}
.day.own-day small{color:#6a5200;font-weight:700}
.day.own-day.selected{background:#ffd02b;border-color:#cd9b00}
.report-total{background:#171717;color:white;padding:15px 18px;border-radius:14px;display:flex;flex-direction:column;gap:5px;margin:14px 0}
.report-total small{color:#e0e0e0;font-size:11px}
.report-total strong{font-size:27px;line-height:1.2;color:#ffd02b;font-variant-numeric:tabular-nums}
@media(max-width:440px){.day.own-day small{font-size:7px}}
/* V10.8: contrast and readable admin approval buttons on mobile */
.btn.small:not(.secondary):not(.ghost){color:#171717}
.btn.small.secondary,.btn.small.ghost{color:#333}
.change-request .actionbar .btn{font-size:12px;line-height:1.3}

/* V10.9 – Kundeneigener Serienkalender und Antragskarten */
.day.own-day{font-weight:750}.day.own-day:focus-visible{outline:3px solid #b38900;outline-offset:1px}
.change-request{overflow-wrap:anywhere}.calendar .day{min-width:0}.card .actionbar{gap:6px}
@media(max-width:440px){.card .actionbar .btn.small{font-size:11px;padding:9px 10px}}


/* V11.0 – dezente Saisonmodi, schwarz/weiß/gelb wie OK clean */
.season-hero{position:relative;isolation:isolate;overflow:hidden;margin:13px 0 16px;min-height:212px;padding:23px 20px 40px;border-radius:20px;background:linear-gradient(125deg,#171717,#242424);color:white;box-shadow:0 6px 18px #0000000b}
.season-content{position:relative;z-index:2;max-width:77%}
.season-overline{font-size:9px;letter-spacing:1.65px;font-weight:800;color:#ffd02b}
.season-hero h2{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:clamp(22px,5.5vw,32px);line-height:1.16;letter-spacing:-.3px;font-weight:500;margin:13px 0 8px;max-width:355px;text-wrap:balance}
.season-dot{color:#ffd02b;font-style:normal}
.season-line{display:block;font-family:Georgia,"Times New Roman",serif;font-size:17px;font-style:italic;color:#f9f7f0;margin:-3px 0 11px}
.season-content p{font-size:11px;max-width:300px;line-height:1.5;color:#dddddd;margin:6px 0 12px}
.season-booking{font-size:11px;padding:9px 12px;position:relative;z-index:5}
.season-artwork{position:absolute;inset:0;pointer-events:none;z-index:1}
.season-art{position:absolute;width:107px;height:107px;right:2%;bottom:-6px;z-index:3}
.season-art img{width:100%;height:100%;object-fit:contain;display:block}
.season-santa{width:103px;height:103px;right:1.5%;bottom:-9px}
.season-bunny{width:102px;height:102px;right:2%;bottom:-8px}
.season-particle{position:absolute;display:block;width:27px;height:27px;opacity:.5}
.season-particle img{display:block;width:100%;height:100%}
.season-particle.p1{right:7%;top:18%}.season-particle.p2{right:26%;top:35%;width:19px;height:19px;opacity:.32}.season-particle.p3{right:14%;top:67%;width:15px;height:15px;opacity:.3}
.season-christmas .season-particle.p1{right:26%;top:22%;width:19px;height:19px;opacity:.27}
.season-winter .season-particle.p1{right:10%;top:23%;width:42px;height:42px;opacity:.64}
.season-winter .season-particle.p2{right:33%;top:14%;width:15px;height:15px;opacity:.38}
.season-winter .season-particle.p3{right:29%;top:66%;width:22px;height:22px;opacity:.4}
.season-newyear .season-particle.p1{right:13%;top:22%;width:43px;height:43px;opacity:.65}
.season-newyear .season-particle.p2{right:32%;top:63%;opacity:.53}
.season-newyear .season-particle.p3{right:5%;top:67%;opacity:.29}
.season-autumn .season-particle.p1{right:10%;top:20%;width:48px;height:48px;opacity:.62}
.season-autumn .season-particle.p2{right:32%;top:65%;width:20px;height:20px;opacity:.43}
.season-easter .season-particle.p2{right:32%;top:20%;width:15px;height:15px;opacity:.35}
.season-wave{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:32px;z-index:1;pointer-events:none}
.season-check{display:flex;gap:10px;align-items:center;min-height:44px;font-size:13px;font-weight:650;margin:8px 0 12px}
.season-check input{width:19px;height:19px;accent-color:#c7990d}
#seasonSettingsForm>.btn{margin-top:16px}
#seasonPreview .season-hero{min-height:202px}
@media(max-width:370px){.season-hero{padding:18px 14px 40px}.season-content{max-width:78%}.season-art{transform:scale(.8);transform-origin:bottom right}.season-hero h2{font-size:21px}}
@media(max-width:340px){.season-content{max-width:90%}.season-art{opacity:.55}.season-hero h2{font-size:20px}}
@media(prefers-reduced-motion:no-preference){.season-animated .season-particle{animation:seasonFloat 7s ease-in-out infinite alternate}.season-animated .season-particle.p2{animation-delay:-3s;animation-duration:9s}.season-animated .season-particle.p3{animation-delay:-5s;animation-duration:6s}}
@keyframes seasonFloat{from{transform:translate3d(0,-3px,0) rotate(-7deg)}to{transform:translate3d(-4px,10px,0) rotate(9deg)}}
@media(prefers-reduced-motion:reduce){.season-animated *, .season-animated *::before, .season-animated *::after{animation:none!important;transition:none!important}}

/* V11.1: editierbare wiederkehrende Saisonzeiträume – schlichte Verwaltung */
.season-period-title{margin:23px 0 5px;font-size:17px;letter-spacing:-.2px}
.season-period-list{display:grid;gap:9px;margin:15px 0 12px}
.season-period-card{border:1px solid #e3e3e3;background:#fff;border-radius:13px;overflow:hidden}
.season-period-card[open]{border-color:#ddbf61;background:#fffdf8}
.season-period-card summary{display:flex;align-items:center;gap:14px;justify-content:space-between;cursor:pointer;padding:14px;list-style:none}
.season-period-card summary::-webkit-details-marker{display:none}
.season-period-card summary strong{font-size:14px;display:block}
.season-period-card summary small{font-size:11px;font-weight:500;color:#777;line-height:1.5;display:block;margin-top:4px}
.season-period-card .season-edit-hint{font-size:11px;font-weight:750;color:#937116;white-space:nowrap}
.season-period-card[open] .season-edit-hint{color:#222}
.season-period-content{border-top:1px solid #e9e5d9;padding:0 14px 14px}
.season-date-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.season-date-grid .form-field{min-width:0;margin:10px 0 5px}
.season-date-grid .form-field input{min-width:0}
.season-validation-notice{background:#fff0d6;color:#8a2727}
.season-validation-notice[hidden],#easterRelative[hidden],#easterAnnual[hidden]{display:none}
.season-no-preview{padding:19px 16px;border:1px dashed #ddd;border-radius:13px;background:#fafafa}
.season-no-preview p{font-size:12px;color:#666;margin-top:5px}
@media(max-width:360px){.season-date-grid{gap:7px}.season-period-card summary{padding:12px}.season-period-card summary small{font-size:10px}}

/* V11.2 – Separates Mitarbeiterportal, lesender Dienstkalender. */
.staff-calendar .day{min-height:63px}.staff-calendar .day.own-day{background:#fff2b7;border-color:#deb947;color:#1b1b1b}.staff-calendar .day.selected{background:#ffd02b;border-color:#ba9000}.staff-calendar .day small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.staff-job{border-left:4px solid #e8b907}.staff-assignment-row{border-top:1px solid #eee;padding:13px 0;overflow-wrap:anywhere}.staff-assignment-row strong{font-size:12px}.staff-assignment-row .actionbar{margin-top:9px}.session-logout{background:transparent;color:#ffd02b;font-size:11px}

/* V11.3 – Einsatzberichte, Fotos und freie Kalendereinträge */
[hidden]{display:none!important}
.staff-visit-result{background:#faf9f5;border:1px solid #eee6cf;padding:12px;border-radius:12px;margin:12px 0;overflow-wrap:anywhere}
.staff-visit-result p{margin:8px 0;font-size:12px;line-height:1.5}
.staff-visit-result .row{gap:10px;align-items:start}
.staff-visit-result small{display:block;font-size:10px;margin-top:8px}
.staff-visit-result .actionbar{gap:6px;margin-top:8px}
.staff-assignment-row .staff-visit-result{margin-top:8px}
#calendarOtherTitle,#calendarCleaningTitle{min-width:0}
.staff-job .actionbar .btn{min-height:39px}

/* V11.4 – persönliche Abwesenheiten im Mitarbeiter- und Admin-Kalender. */
.staff-absence{border-left:4px solid #555;background:#fafafa}
.staff-absence.sick{border-left-color:#777}
.staff-absence.vacation{border-left-color:#d6a819}
.staff-absence.off{border-left-color:#a7a7a7}
.staff-absence .row{gap:12px}
.staff-absence p{font-size:12px;line-height:1.5;margin:8px 0}
.day.absence-day{background:#f3f3f3;border:1px solid #bcbcbc;color:#1f1f1f}
.day.absence-day small{color:#555;font-weight:700}
.day.absence-day.selected{background:#ffd02b;border-color:#bd9507}
.day.absence-conflict{border:2px solid #b98900;box-shadow:inset 0 0 0 1px #fff4c8}
.staff-conflict{border-left:3px solid #c18b00;background:#fff9e6}
@media(max-width:380px){.staff-calendar .day.absence-day small{font-size:7px}}

/* OK clean v11.4.1: klar erkennbare Löschaktion für Abwesenheiten */
.absence-delete-section{margin-top:20px;padding-top:16px;border-top:1px solid #e5e5e5;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.absence-delete-section .muted{margin:0;font-size:13px}
.absence-delete-button{border:1px solid #c9a5a5!important;color:#8e2424!important;background:#fff!important}
.absence-delete-button:focus-visible,.absence-delete-button:hover{border-color:#9d2525!important;background:#fff4f4!important;outline-offset:2px}
