*{box-sizing:border-box}
body{margin:0;font-family:Arial,sans-serif;background:#f5f7fb;color:#172033}
header{background:#102a43;color:white;padding:18px 24px}
header h1{margin:0}
header p{margin:4px 0 0;color:#cbd5e1}
nav{background:#1f456e;padding:10px 16px;display:flex;gap:8px;flex-wrap:wrap}
nav a{color:white;text-decoration:none;padding:8px 10px;border-radius:8px;background:rgba(255,255,255,.08)}
main{padding:18px}
.card{background:white;border:1px solid #d7e0ea;border-radius:12px;padding:16px;margin-bottom:16px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
.hint{color:#64748b}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;align-items:end}
input,select,button{padding:9px;border:1px solid #cbd5e1;border-radius:8px}
button{background:#2563eb;color:white;border:0;cursor:pointer}
button.danger{background:#b91c1c}
table{width:100%;border-collapse:collapse}
th,td{border-bottom:1px solid #e5e7eb;padding:8px;text-align:left;vertical-align:top}
th{background:#eef4ff}
.warning{background:#fff7ed;border:1px solid #fb923c;padding:10px;border-radius:8px;margin-bottom:12px}
.pill{color:white;padding:3px 8px;border-radius:999px;font-weight:bold}
.small{font-size:12px;color:#475569;margin-top:3px;line-height:1.25}
.planner{overflow:auto;background:white;border:1px solid #d7e0ea;border-radius:12px;padding:8px}
.planner-grid{display:grid;grid-template-columns:280px repeat(54,80px);min-width:4600px}
.head{position:sticky;top:0;z-index:2;background:#e0ecff;font-weight:bold;border:1px solid #cbd5e1;padding:6px;font-size:12px;text-align:center}
.left-head{position:sticky;left:0;z-index:3;text-align:left}
.crew-cell{position:sticky;left:0;background:#fff;z-index:1;min-height:104px;border:1px solid #d7e0ea;padding:8px}
.week-cell{min-height:76px;border:1px solid #e5e7eb;padding:3px;background:#fbfdff}
.bar{color:white;font-size:11px;border-radius:5px;padding:3px;margin-bottom:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.crew-box{border:1px solid #cbd5e1;border-radius:10px;padding:12px;margin:10px 0;background:#f8fafc;cursor:grab}
.crew-box.dragging{opacity:.4}
label{display:inline-block;margin:3px 10px 3px 0}
.button-light,.button-small{display:inline-block;text-decoration:none;border-radius:8px;border:1px solid #cbd5e1;background:#f8fafc;color:#172033;text-align:center}
.button-light{padding:9px}
.button-small{padding:7px 9px;font-size:12px}

.month-grid{display:grid}
.month-head{padding:4px}
.month-title{font-weight:700;margin-bottom:4px;font-size:13px}
.kw-head-row{display:grid;gap:2px}
.kw-head-row span{background:#f8fbff;border:1px solid #cbd5e1;border-radius:5px;padding:2px 0;font-size:10px;white-space:nowrap}
.month-cell{min-height:104px;border:1px solid #e5e7eb;background:#fbfdff;padding:3px}
.compact-cell{min-height:104px}
.month-content-grid{display:grid;grid-auto-rows:minmax(20px,auto);gap:3px;min-height:94px;align-content:start;background:repeating-linear-gradient(to right,#fbfdff 0,#fbfdff 108px,#e5e7eb 108px,#e5e7eb 110px)}
.project-stripe{color:white;font-size:12px;font-weight:700;border-radius:6px;padding:4px 6px;min-height:21px;line-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 1px 2px rgba(0,0,0,.14)}
.event-stripe{font-size:12px;font-weight:700;border-radius:6px;padding:4px 6px;min-height:21px;line-height:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.absence{background:#dc2626!important;color:white!important}
.release{background:#f59e0b!important;color:#111!important}
.equipment-lines{line-height:1.35}
.equipment-assignment-list{margin-top:6px;margin-bottom:8px;display:grid;gap:6px}
.equipment-assignment-row{display:grid;grid-template-columns:minmax(240px,1fr) minmax(190px,280px);gap:10px;align-items:center;background:white;border:1px solid #e5e7eb;border-radius:8px;padding:6px}
.equipment-assignment-row label{margin:0}

/* V1.0.7: Jahreskalender neu – kurze A4-Übersicht + Detailkalender */
.calendar-card h3{margin:0 0 8px 0}
.year-calendar{width:100%;border:1px solid #cbd5e1;background:white}
.year-row{display:grid;grid-template-columns:210px minmax(0,1fr)}
.year-calendar-detail .year-row{grid-template-columns:300px var(--detail-width)}
.year-left-head,.year-left-cell{border-right:2px solid #94a3b8;border-bottom:1px solid #cbd5e1;background:#f8fafc;padding:6px;min-width:0}
.year-left-head{font-weight:700;background:#dbeafe;font-size:12px}
.year-timeline-head{border-bottom:1px solid #cbd5e1;background:#eef4ff;min-width:0}
.month-band,.kw-band{display:grid;gap:0}
.month-band-cell{border-right:1px solid #111827;border-bottom:2px solid #111827;background:#cfcfcf;color:#000;text-align:center;font-weight:700;padding:3px 1px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:clip}
.kw-band-cell{border-right:1px solid #94a3b8;border-bottom:1px solid #94a3b8;background:#f8fafc;color:#000;text-align:center;font-size:10px;line-height:13px;min-width:0;white-space:nowrap;overflow:hidden}
.year-timeline{display:grid;grid-auto-rows:minmax(18px,auto);gap:0;align-content:start;position:relative;min-width:0;border-bottom:1px solid #cbd5e1;background:repeating-linear-gradient(to right,#fbfdff 0,#fbfdff calc(100% / var(--week-count) - 1px),#d7dee8 calc(100% / var(--week-count) - 1px),#d7dee8 calc(100% / var(--week-count)))}
.project-line,.event-line{position:relative;z-index:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:0;margin:0;border:0}
.project-line{color:#fff;font-weight:800;box-shadow:none}
.event-line{font-weight:800;box-shadow:none}
.compact-left{min-height:54px;font-size:12px;line-height:1.1}
.compact-meta{display:block;font-size:10px;color:#475569;margin-top:2px}
.compact-timeline{min-height:54px;padding-top:14px;padding-bottom:2px}
.compact-project{grid-row:1;font-size:10px;line-height:14px;min-height:16px;padding:1px 4px;align-self:start}
.compact-event{font-size:9px;line-height:13px;min-height:15px;padding:1px 3px;margin-top:1px;align-self:start}
.detail-left{min-height:112px;background:#fff;font-size:14px}
.detail-timeline{min-height:112px;padding-top:20px;padding-bottom:6px}
.detail-project{grid-row:1;font-size:14px;line-height:20px;min-height:22px;padding:2px 8px;align-self:start}
.detail-event{font-size:13px;line-height:20px;min-height:22px;padding:2px 8px;margin-top:3px;align-self:start}
.planner-detail{overflow:auto;border:1px solid #d7e0ea;border-radius:10px;background:white}
.year-calendar-detail{width:max-content;min-width:100%;border:0}
.detail-left-head{position:sticky;left:0;z-index:5}
.detail-left{position:sticky;left:0;z-index:3}
.year-calendar-detail .year-left-head,.year-calendar-detail .year-left-cell{width:300px}
.year-calendar-detail .year-timeline-head,.year-calendar-detail .year-timeline{width:var(--detail-width)}
.year-calendar-compact .month-band-cell{font-size:11px;padding:2px 1px}
.year-calendar-compact .kw-band-cell{font-size:9px;line-height:11px}
.print-a4{overflow:hidden}

@media print{
  header,nav,.calendar-card:nth-of-type(3),.card:last-child{display:none!important}
  main{padding:0}
  body{background:white}
  .card{box-shadow:none;border:0;margin:0;padding:0}
  .print-a4{display:block!important;page-break-after:always}
  .year-row{grid-template-columns:38mm minmax(0,1fr)}
  .compact-project{font-size:8pt;line-height:12pt;min-height:12pt}
  .compact-event{font-size:7pt;line-height:10pt;min-height:10pt}
}

/* V1.0.7: Kalender getrennt – Seite 1 kurz A4, Seite 2 lang/detail */
.no-print{}
.page-intro .button-light{margin-right:8px}
.short-page{overflow:hidden}
.detail-page{overflow:hidden}
.year-calendar-compact{width:100%;font-size:11px}
.year-calendar-compact .year-row{grid-template-columns:165px minmax(0,1fr)}
.year-calendar-compact .year-left-head,.year-calendar-compact .year-left-cell{padding:5px}
.year-calendar-compact .month-band-cell{font-size:10px;line-height:13px;padding:1px 0;background:#d7d7d7;color:#000;border-right:1px solid #111;border-bottom:2px solid #111}
.year-calendar-compact .kw-band-cell{font-size:7px;line-height:10px;padding:0;background:#fff;border-right:1px solid #94a3b8;border-bottom:1px solid #94a3b8}
.year-calendar-compact .compact-left{min-height:52px;font-size:11px;line-height:1.12;background:#fff}
.year-calendar-compact .compact-meta{font-size:9px}
.year-calendar-compact .compact-timeline{min-height:52px;padding-top:16px;padding-bottom:3px;background:repeating-linear-gradient(to right,#fbfdff 0,#fbfdff calc(100% / var(--week-count) - 1px),#cfd8e3 calc(100% / var(--week-count) - 1px),#cfd8e3 calc(100% / var(--week-count)))}
.year-calendar-compact .compact-project{grid-row:1;font-size:9px;line-height:12px;min-height:14px;padding:1px 4px;border-radius:0;margin:0;color:#fff;font-weight:800;z-index:3}
.year-calendar-compact .compact-event{font-size:7px;line-height:10px;min-height:12px;padding:1px 3px;border-radius:2px;margin-top:2px;z-index:4}

.planner-detail{overflow:auto;border:1px solid #cbd5e1;border-radius:10px;background:white;max-width:100%}
.year-calendar-detail{width:max-content;min-width:100%;border:0;font-size:14px}
.year-calendar-detail .year-row{grid-template-columns:360px var(--detail-width)}
.year-calendar-detail .year-left-head,.year-calendar-detail .year-left-cell{width:360px;padding:10px}
.year-calendar-detail .detail-left-head{font-size:15px;position:sticky;left:0;z-index:6;background:#dbeafe}
.year-calendar-detail .detail-left{min-height:150px;font-size:15px;position:sticky;left:0;z-index:4;background:#fff}
.year-calendar-detail .small{font-size:13px;line-height:1.35}
.year-calendar-detail .year-timeline-head,.year-calendar-detail .detail-timeline{width:var(--detail-width)}
.year-calendar-detail .month-band-cell{font-size:15px;line-height:20px;padding:2px 0;background:#cfcfcf;color:#000;border-right:2px solid #111;border-bottom:2px solid #111}
.year-calendar-detail .kw-band-cell{font-size:11px;line-height:18px;background:#fff;color:#000;border-right:1px solid #94a3b8;border-bottom:1px solid #94a3b8}
.year-calendar-detail .detail-timeline{min-height:150px;padding-top:34px;padding-bottom:10px;grid-auto-rows:minmax(28px,auto);background:repeating-linear-gradient(to right,#fbfdff 0,#fbfdff calc(100% / var(--week-count) - 1px),#d1d9e6 calc(100% / var(--week-count) - 1px),#d1d9e6 calc(100% / var(--week-count)))}
.year-calendar-detail .detail-project{grid-row:1;font-size:16px;line-height:26px;min-height:28px;padding:1px 10px;border-radius:0;margin:0;color:#fff;font-weight:800;z-index:3}
.year-calendar-detail .detail-event{font-size:15px;line-height:25px;min-height:27px;padding:1px 10px;border-radius:3px;margin-top:4px;z-index:4}

@media print{
  header,nav,.no-print{display:none!important}
  main{padding:0!important}
  body{background:white!important}
  .card{box-shadow:none!important;border:0!important;border-radius:0!important;margin:0!important;padding:0!important}
  .calendar-card h3{margin:0 0 3mm 0!important}
  .short-page .year-calendar-compact{width:100%!important}
  .short-page .year-calendar-compact .year-row{grid-template-columns:36mm minmax(0,1fr)!important}
  .short-page .compact-project{font-size:7pt!important;line-height:9pt!important;min-height:9pt!important}
  .short-page .compact-event{font-size:6pt!important;line-height:8pt!important;min-height:8pt!important}
  .detail-page .planner-detail{overflow:visible!important;border:0!important}
  .detail-page .year-calendar-detail{width:max-content!important}
  .detail-page .detail-left,.detail-page .detail-left-head{position:static!important}
}

/* V1.0.9 Jahreskalender kurz - finale Übersicht */
.short-calendar-page{background:#fff;border:1px solid #d7e0ea;border-radius:14px;padding:28px 32px;margin:16px 0;box-shadow:0 2px 10px rgba(15,23,42,.05);color:#0f1f3a}
.short-calendar-titlebar{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;border-bottom:3px solid #0f3b73;padding-bottom:14px;margin-bottom:26px}
.short-calendar-titlebar h2{font-size:42px;line-height:1;margin:0;color:#061c38;letter-spacing:-.5px}
.short-calendar-titlebar p{font-size:20px;margin:12px 0 0;color:#4b5563;font-weight:600}
.vacation-legend{border:1px solid #cbd5e1;border-radius:10px;padding:14px 18px;background:#fff;min-width:420px;box-shadow:0 1px 4px rgba(15,23,42,.04)}
.vacation-legend b{display:block;font-size:18px;margin-bottom:8px;color:#111827}
.legend-row{display:flex;align-items:center;gap:12px;white-space:nowrap;color:#111827;font-size:15px}
.legend-dot{display:inline-block;border-radius:50%;background:#26a51e;border:1px solid #14820f;box-shadow:0 1px 3px rgba(0,0,0,.18)}
.legend-dot.small{width:12px;height:12px}.legend-dot.medium{width:22px;height:22px}.legend-dot.large{width:36px;height:36px}
.short-calendar-layout{display:grid;grid-template-columns:360px minmax(0,1fr);border:1px solid #b8c6d8;border-radius:10px;overflow:visible;background:#fff}
.short-left-panel{border-right:2px solid #1d4ed8;background:#fff;color:#0b1c39}
.short-left-head{background:linear-gradient(180deg,#0b56b7,#0b3e91);color:#fff;font-size:22px;font-weight:800;padding:20px 24px;border-bottom:1px solid #cbd5e1;display:flex;align-items:center}
.short-timeline-head{border-bottom:1px solid #aebdcc;background:#fff}
.short-month-row,.short-kw-row{display:grid;grid-template-columns:repeat(12,1fr)}
.short-month-cell{background:#0b2f5f;color:white;font-weight:800;text-align:center;padding:12px 2px;border-right:1px solid #9fb2c8;font-size:18px}
.short-kw-cell{text-align:center;padding:9px 2px;border-right:1px solid #9fb2c8;border-bottom:1px solid #9fb2c8;background:#f8fafc;font-size:18px;font-weight:700;color:#172033}
.short-crew-info{min-height:220px;padding:28px 24px;font-size:20px;line-height:1.45;border-bottom:1px solid #d7e0ea}
.short-crew-info .crew-name{display:block;font-size:30px;line-height:1.15;margin-bottom:16px;color:#071b38}
.crew-equipment-list{margin-top:20px}
.short-timeline-body{position:relative;min-height:220px;border-bottom:1px solid #d7e0ea;background:#fff;overflow:visible}
.short-month-grid-lines{position:absolute;inset:0;display:grid;grid-template-columns:repeat(12,1fr);pointer-events:none}
.short-month-grid-lines>div{border-right:1px solid #cbd5e1;background:repeating-linear-gradient(to right,rgba(148,163,184,.22) 0,rgba(148,163,184,.22) 1px,transparent 1px,transparent 25%)}
.short-project-bar{position:absolute;top:92px;height:44px;border-radius:10px;color:#fff;text-align:center;font-weight:900;font-size:22px;line-height:44px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 18px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.18),0 1px 3px rgba(0,0,0,.18);z-index:2;text-shadow:0 1px 1px rgba(0,0,0,.25)}
.vacation-dot{position:absolute;top:114px;transform:translate(-50%,-50%);border-radius:50%;background:#26a51e;border:2px solid #eaffea;box-shadow:0 1px 4px rgba(0,0,0,.25);z-index:6;cursor:pointer;display:block;outline:none}
.vacation-dot.small{width:16px;height:16px}.vacation-dot.medium{width:24px;height:24px}.vacation-dot.large{width:34px;height:34px}
.vacation-dot:hover,.vacation-dot:focus{box-shadow:0 0 0 4px rgba(34,197,94,.25),0 2px 8px rgba(0,0,0,.25)}
.vacation-popover{display:none;position:absolute;top:42px;left:50%;transform:translateX(-50%);min-width:420px;max-width:520px;background:#fff;color:#111827;border:1px solid #d1d5db;border-radius:10px;padding:18px 20px;box-shadow:0 8px 24px rgba(15,23,42,.18);z-index:20;text-align:left;font-size:16px;line-height:1.35;white-space:normal}
.vacation-popover:before{content:"";position:absolute;top:-10px;left:50%;transform:translateX(-50%);border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #d1d5db}
.vacation-popover:after{content:"";position:absolute;top:-8px;left:50%;transform:translateX(-50%);border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid white}
.vacation-dot:hover .vacation-popover,.vacation-dot:focus .vacation-popover{display:block}
.vacation-popover b{display:block;color:#0f8f19;font-size:20px;margin-bottom:8px}
.vacation-popover strong{display:block;margin-bottom:16px;font-size:17px}
.vacation-popover-row{display:grid;grid-template-columns:1.3fr 1fr auto;gap:18px;align-items:center;padding:5px 0}
.vacation-popover-row span:last-child{color:#0f8f19;font-weight:700}
.short-hint-box{border:1px solid #cbd5e1;border-radius:8px;background:#fff;margin-top:28px;padding:18px 28px;font-size:18px;color:#111827}
.short-hint-box p{margin:6px 0}.short-hint-box a{color:#0b56b7;font-weight:700;text-decoration:underline}
.color-readonly{padding:9px;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc;color:#475569;display:flex;align-items:center;gap:8px}.color-preview{display:inline-block;width:28px;height:16px;border-radius:4px;border:1px solid #94a3b8}
@media (max-width:1100px){.short-calendar-titlebar{flex-direction:column}.vacation-legend{min-width:0;width:100%}.short-calendar-layout{grid-template-columns:300px minmax(700px,1fr);overflow:auto}.short-calendar-titlebar h2{font-size:34px}}
@media print{.short-calendar-page{box-shadow:none;border:0;padding:8mm;margin:0}.short-calendar-titlebar h2{font-size:26pt}.short-calendar-titlebar p{font-size:11pt}.short-left-head{font-size:11pt;padding:8px}.short-crew-info{font-size:10pt;min-height:35mm;padding:10px}.short-crew-info .crew-name{font-size:14pt}.short-project-bar{height:24px;line-height:24px;font-size:11pt;top:45px}.short-timeline-body{min-height:35mm}.vacation-dot{top:57px}.vacation-dot.small{width:8px;height:8px}.vacation-dot.medium{width:12px;height:12px}.vacation-dot.large{width:18px;height:18px}.short-hint-box{font-size:10pt;padding:8px}.vacation-legend{font-size:9pt;padding:8px}.legend-dot.small{width:7px;height:7px}.legend-dot.medium{width:11px;height:11px}.legend-dot.large{width:16px;height:16px}}

/* V1.1.0 short calendar refinements */
.short-timeline-head{border-bottom:1px solid #aebdcc;background:#fff;overflow:hidden}
.short-month-row,.short-kw-row{display:grid}
.short-month-cell.span-cell{background:#113a72;color:#fff;font-weight:800;text-align:center;padding:10px 2px;border-right:1px solid #d6dbe4;border-bottom:1px solid #9fb2c8;font-size:18px}
.short-kw-cell{text-align:center;padding:8px 0;border-right:1px solid #d7dee8;border-bottom:1px solid #b9c6d6;background:#f8fafc;font-size:15px;font-weight:700;color:#172033}
.short-week-grid-lines{position:absolute;inset:0;display:grid;pointer-events:none}
.short-week-grid-lines>div{border-right:1px solid #d7dee8;background:transparent}
.short-project-bar{top:88px;height:48px;line-height:48px;border-radius:12px;font-size:20px}
.vacation-dot{top:112px}
.vacation-dot.large{width:34px;height:34px}
@media print{
  .short-month-cell.span-cell{font-size:10pt;padding:4px 0}
  .short-kw-cell{font-size:8pt;padding:3px 0}
  .short-project-bar{top:43px;height:26px;line-height:26px;font-size:10pt}
  .vacation-dot{top:56px}
}


/* V1.1.3 Jahresauswahl */
.year-switcher{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:14px;
  flex-wrap:wrap;
  font-size:15px;
}
.year-switcher label{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0;
  font-weight:700;
  color:#172033;
}
.year-switcher select{
  padding:7px 10px;
  min-width:92px;
}
.year-switcher button,
.year-nav-button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:7px 12px;
  border-radius:8px;
  border:1px solid #cbd5e1;
  text-decoration:none;
  font-weight:700;
}
.year-nav-button{
  background:#f8fafc;
  color:#0b56b7;
}
.year-switcher button{
  background:#2563eb;
  color:#fff;
  border-color:#2563eb;
}


/* V1.1.5: Jahreskalender kurz kompakt für A4 + Bauleiter im Balken */
.short-calendar-page{
  padding:18px 22px;
}
.short-calendar-titlebar{
  margin-bottom:16px;
  padding-bottom:10px;
}
.short-calendar-titlebar h2{
  font-size:32px;
}
.short-calendar-titlebar p{
  font-size:16px;
  margin-top:7px;
}
.vacation-legend{
  padding:9px 12px;
  min-width:360px;
}
.vacation-legend b{
  font-size:15px;
  margin-bottom:5px;
}
.legend-row{
  gap:8px;
  font-size:12px;
}
.legend-dot.small{width:9px;height:9px}
.legend-dot.medium{width:16px;height:16px}
.legend-dot.large{width:26px;height:26px}

.short-calendar-layout{
  grid-template-columns:250px minmax(0,1fr);
}
.short-left-head{
  font-size:15px;
  padding:10px 14px;
}
.short-month-cell.span-cell{
  font-size:13px;
  padding:6px 1px;
}
.short-kw-cell{
  font-size:10px;
  padding:4px 0;
}

.short-crew-info{
  min-height:78px;
  padding:8px 14px;
  font-size:12px;
  line-height:1.24;
}
.short-crew-info .crew-name{
  font-size:18px;
  margin-bottom:6px;
}
.crew-equipment-list{
  margin-top:6px;
}
.short-timeline-body{
  min-height:78px;
}
.short-project-bar{
  top:24px;
  height:32px;
  line-height:1.05;
  border-radius:8px;
  font-size:13px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1px;
  padding:0 8px;
}
.short-project-title{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.short-project-manager{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:10px;
  font-weight:700;
  opacity:.95;
}
.vacation-dot{
  top:40px;
}
.vacation-dot.small{width:11px;height:11px}
.vacation-dot.medium{width:18px;height:18px}
.vacation-dot.large{width:26px;height:26px}
.short-hint-box{
  margin-top:14px;
  padding:10px 14px;
  font-size:13px;
}

@media print{
  .short-calendar-page{padding:5mm!important}
  .short-calendar-titlebar h2{font-size:21pt!important}
  .short-calendar-titlebar p{font-size:9pt!important}
  .short-calendar-layout{grid-template-columns:45mm minmax(0,1fr)!important}
  .short-left-head{font-size:8pt!important;padding:2mm!important}
  .short-month-cell.span-cell{font-size:7pt!important;padding:1.2mm 0!important}
  .short-kw-cell{font-size:5.8pt!important;padding:.8mm 0!important}
  .short-crew-info{min-height:15mm!important;font-size:6.8pt!important;padding:1.5mm 2mm!important;line-height:1.12!important}
  .short-crew-info .crew-name{font-size:9pt!important;margin-bottom:1mm!important}
  .crew-equipment-list{margin-top:1mm!important}
  .short-timeline-body{min-height:15mm!important}
  .short-project-bar{top:4.8mm!important;height:6.5mm!important;line-height:1.0!important;font-size:6.8pt!important;border-radius:1.6mm!important;padding:0 1.5mm!important}
  .short-project-manager{font-size:5.4pt!important}
  .vacation-dot{top:8.1mm!important}
  .vacation-dot.small{width:2.3mm!important;height:2.3mm!important}
  .vacation-dot.medium{width:3.4mm!important;height:3.4mm!important}
  .vacation-dot.large{width:4.8mm!important;height:4.8mm!important}
  .short-hint-box{font-size:7pt!important;padding:2mm!important;margin-top:3mm!important}
  .vacation-legend{padding:2mm!important}
  .legend-row{font-size:6pt!important}
  .legend-dot.small{width:2mm!important;height:2mm!important}
  .legend-dot.medium{width:3mm!important;height:3mm!important}
  .legend-dot.large{width:4.5mm!important;height:4.5mm!important}
}


/* V1.1.6: Jahreskalender kurz - Zeilen weiter verdichten */
.short-calendar-page{padding:14px 18px}
.short-calendar-titlebar{margin-bottom:12px}
.short-calendar-layout{grid-template-columns:220px minmax(0,1fr)}
.short-left-head{font-size:13px;line-height:1.15;padding:7px 10px}
.short-month-cell.span-cell{font-size:11px;padding:4px 1px}
.short-kw-cell{font-size:8px;padding:2px 0}
.short-crew-info{min-height:52px;padding:5px 10px;font-size:9px;line-height:1.14}
.short-crew-info .crew-name{font-size:14px;margin-bottom:3px}
.crew-equipment-list{margin-top:3px}
.short-timeline-body{min-height:52px}
.short-project-bar{top:14px;height:24px;line-height:1.0;border-radius:6px;font-size:10px;padding:0 6px}
.short-project-manager{font-size:7px}
.vacation-dot{top:26px}
.vacation-dot.small{width:8px;height:8px}
.vacation-dot.medium{width:13px;height:13px}
.vacation-dot.large{width:19px;height:19px}
.vacation-popover{top:30px}
.short-hint-box{margin-top:10px;padding:8px 12px;font-size:11px}

@media print{
  .short-calendar-page{padding:4mm!important}
  .short-calendar-layout{grid-template-columns:38mm minmax(0,1fr)!important}
  .short-left-head{font-size:7pt!important;padding:1.5mm!important}
  .short-month-cell.span-cell{font-size:6pt!important;padding:.8mm 0!important}
  .short-kw-cell{font-size:4.8pt!important;padding:.4mm 0!important}
  .short-crew-info{min-height:10mm!important;font-size:5.2pt!important;padding:1mm 1.4mm!important;line-height:1.08!important}
  .short-crew-info .crew-name{font-size:7pt!important;margin-bottom:.4mm!important}
  .crew-equipment-list{margin-top:.4mm!important}
  .short-timeline-body{min-height:10mm!important}
  .short-project-bar{top:2.6mm!important;height:4.8mm!important;font-size:5.6pt!important;border-radius:1mm!important;padding:0 1mm!important}
  .short-project-manager{font-size:4.4pt!important}
  .vacation-dot{top:5mm!important}
  .vacation-dot.small{width:1.8mm!important;height:1.8mm!important}
  .vacation-dot.medium{width:2.6mm!important;height:2.6mm!important}
  .vacation-dot.large{width:3.8mm!important;height:3.8mm!important}
}


/* V1.1.8: kurze Ansicht nach Skizze - Labels raus, Inhalt bleibt */
.short-calendar-page{
  padding:12px 16px;
}
.short-calendar-layout{
  grid-template-columns:165px minmax(0, 1fr);
}
.short-left-head{
  font-size:13px;
  line-height:1.1;
  padding:6px 8px;
}
.short-crew-info{
  min-height:56px;
  padding:6px 8px;
  font-size:9px;
  line-height:1.12;
}
.short-crew-info .crew-name{
  font-size:14px;
  margin-bottom:4px;
}
.crew-member-line{
  font-size:8px;
  margin-bottom:2px;
  color:#0f172a;
}
.crew-equipment-list{
  margin-top:0;
  font-size:8px;
  color:#0f172a;
}
.short-timeline-body{
  min-height:56px;
}
.short-project-bar{
  top:14px;
  height:30px;
  line-height:1.0;
  border-radius:7px;
  font-size:12px;
  padding:0 8px;
}
.short-project-title{
  font-size:12px;
}
.short-project-manager{
  font-size:7.5px;
  display:block;
}
.vacation-dot{
  top:28px;
}
.vacation-dot.small{width:8px;height:8px}
.vacation-dot.medium{width:14px;height:14px}
.vacation-dot.large{width:20px;height:20px}

@media print{
  .short-calendar-page{padding:3.5mm!important}
  .short-calendar-layout{grid-template-columns:28mm minmax(0,1fr)!important}
  .short-left-head{font-size:7pt!important;padding:1mm!important}
  .short-month-cell.span-cell{font-size:6pt!important}
  .short-kw-cell{font-size:4.8pt!important}
  .short-crew-info{
    min-height:11mm!important;
    padding:0.8mm 1mm!important;
    font-size:5pt!important;
    line-height:1.06!important;
  }
  .short-crew-info .crew-name{font-size:7pt!important;margin-bottom:.4mm!important}
  .crew-member-line{font-size:4.5pt!important;margin-bottom:.2mm!important}
  .crew-equipment-list{font-size:4.5pt!important}
  .short-timeline-body{min-height:11mm!important}
  .short-project-bar{
    top:2.5mm!important;
    height:5.6mm!important;
    font-size:6.1pt!important;
    padding:0 .9mm!important;
  }
  .short-project-title{font-size:6.1pt!important}
  .short-project-manager{font-size:4.3pt!important}
  .vacation-dot{top:5.1mm!important}
  .vacation-dot.small{width:1.8mm!important;height:1.8mm!important}
  .vacation-dot.medium{width:2.6mm!important;height:2.6mm!important}
  .vacation-dot.large{width:3.7mm!important;height:3.7mm!important}
}


/* V1.1.9: Schrift wieder größer, weil unten noch Platz vorhanden ist */
.short-calendar-page{
  padding: 14px 18px;
}
.short-calendar-titlebar h2{
  font-size: 24px;
}
.short-calendar-titlebar p{
  font-size: 14px;
}
.short-calendar-layout{
  grid-template-columns: 165px minmax(0, 1fr);
}
.short-left-head{
  font-size: 14px;
  padding: 7px 8px;
}
.short-month-cell.span-cell{
  font-size: 12px;
  padding: 4px 1px;
}
.short-kw-cell{
  font-size: 8.5px;
  padding: 2px 0;
}
.short-crew-info{
  min-height: 66px;
  padding: 7px 8px;
  font-size: 10px;
  line-height: 1.14;
}
.short-crew-info .crew-name{
  font-size: 15px;
  margin-bottom: 5px;
}
.crew-member-line{
  font-size: 8.8px;
  margin-bottom: 3px;
}
.crew-equipment-list{
  font-size: 8.8px;
}
.short-timeline-body{
  min-height: 66px;
}
.short-project-bar{
  top: 17px;
  height: 34px;
  border-radius: 7px;
  font-size: 13px;
  padding: 0 8px;
}
.short-project-title{
  font-size: 13px;
}
.short-project-manager{
  font-size: 8px;
}
.vacation-dot{
  top: 33px;
}
.vacation-dot.small{width: 9px; height: 9px;}
.vacation-dot.medium{width: 15px; height: 15px;}
.vacation-dot.large{width: 21px; height: 21px;}
.short-hint-box{
  font-size: 12px;
  padding: 8px 12px;
}

@media print{
  .short-calendar-page{padding: 3.5mm !important;}
  .short-calendar-layout{grid-template-columns: 28mm minmax(0,1fr) !important;}
  .short-left-head{font-size: 7.8pt !important; padding: 1.1mm !important;}
  .short-month-cell.span-cell{font-size: 6.5pt !important; padding: 0.9mm 0 !important;}
  .short-kw-cell{font-size: 5.0pt !important; padding: 0.45mm 0 !important;}
  .short-crew-info{
    min-height: 12.5mm !important;
    padding: 0.9mm 1.0mm !important;
    font-size: 5.5pt !important;
    line-height: 1.08 !important;
  }
  .short-crew-info .crew-name{font-size: 7.5pt !important; margin-bottom: 0.45mm !important;}
  .crew-member-line{font-size: 4.9pt !important; margin-bottom: 0.25mm !important;}
  .crew-equipment-list{font-size: 4.9pt !important;}
  .short-timeline-body{min-height: 12.5mm !important;}
  .short-project-bar{
    top: 3.0mm !important;
    height: 6.2mm !important;
    font-size: 6.5pt !important;
    padding: 0 1.0mm !important;
  }
  .short-project-title{font-size: 6.5pt !important;}
  .short-project-manager{font-size: 4.5pt !important;}
  .vacation-dot{top: 5.9mm !important;}
  .vacation-dot.small{width: 1.9mm !important; height: 1.9mm !important;}
  .vacation-dot.medium{width: 2.7mm !important; height: 2.7mm !important;}
  .vacation-dot.large{width: 3.9mm !important; height: 3.9mm !important;}
  .short-hint-box{font-size: 6.3pt !important;}
}


/* V1.2.0: höherer Baustellenbalken, größere BL-Zeile, Poliername etwas kleiner */
.short-crew-info .crew-name{
  font-size: 14px;
  margin-bottom: 4px;
}
.crew-member-line{
  font-size: 9.4px;
  margin-bottom: 3px;
}
.crew-equipment-list{
  font-size: 9.4px;
}

.short-crew-info{
  min-height: 70px;
  padding: 8px 8px;
}
.short-timeline-body{
  min-height: 70px;
}

.short-project-bar{
  top: 14px;
  height: 40px;
  border-radius: 8px;
  padding: 0 8px;
}
.short-project-title{
  font-size: 14px;
  line-height: 20px;
  margin-top: 2px;
}
.short-project-manager{
  display: block;
  font-size: 9.4px;
  line-height: 12px;
  margin-top: -1px;
}
.vacation-dot{
  top: 31px;
}

@media print{
  .short-crew-info .crew-name{
    font-size: 7.0pt !important;
    margin-bottom: 0.35mm !important;
  }
  .crew-member-line{
    font-size: 5.2pt !important;
    margin-bottom: 0.22mm !important;
  }
  .crew-equipment-list{
    font-size: 5.2pt !important;
  }
  .short-crew-info{
    min-height: 13mm !important;
    padding: 0.9mm 1.0mm !important;
  }
  .short-timeline-body{
    min-height: 13mm !important;
  }
  .short-project-bar{
    top: 2.6mm !important;
    height: 7.0mm !important;
    padding: 0 1.0mm !important;
  }
  .short-project-title{
    font-size: 6.8pt !important;
    line-height: 3.4mm !important;
    margin-top: 0.4mm !important;
  }
  .short-project-manager{
    font-size: 5.2pt !important;
    line-height: 2.3mm !important;
    margin-top: -0.1mm !important;
  }
  .vacation-dot{
    top: 5.8mm !important;
  }
}


/* V1.2.1: KW-Zellen deutlich schmäler */
.short-calendar-layout{
  justify-content: start;
}
.short-timeline-head,
.short-timeline-body{
  --kw-col-width: 16px;
  width: calc(var(--week-count) * var(--kw-col-width));
  max-width: calc(var(--week-count) * var(--kw-col-width));
}
.short-month-row,
.short-kw-row,
.short-week-grid-lines{
  width: 100%;
}
.short-kw-cell{
  padding-left: 0;
  padding-right: 0;
}
.short-month-cell.span-cell{
  padding-left: 0;
  padding-right: 0;
}

@media print{
  .short-timeline-head,
  .short-timeline-body{
    --kw-col-width: 4.15mm;
    width: calc(var(--week-count) * var(--kw-col-width)) !important;
    max-width: calc(var(--week-count) * var(--kw-col-width)) !important;
  }
}


/* V1.2.2: KW-Zellen wieder größer (+60% gegenüber V1.2.1) */
.short-timeline-head,
.short-timeline-body{
  --kw-col-width: 25.6px;
  width: calc(var(--week-count) * var(--kw-col-width));
  max-width: calc(var(--week-count) * var(--kw-col-width));
}

@media print{
  .short-timeline-head,
  .short-timeline-body{
    --kw-col-width: 6.64mm !important;
    width: calc(var(--week-count) * var(--kw-col-width)) !important;
    max-width: calc(var(--week-count) * var(--kw-col-width)) !important;
  }
}


/* V1.2.3: KW-Zellen nochmals um 30% vergrößert */
.short-timeline-head,
.short-timeline-body{
  --kw-col-width: 33.28px;
  width: calc(var(--week-count) * var(--kw-col-width));
  max-width: calc(var(--week-count) * var(--kw-col-width));
}

@media print{
  .short-timeline-head,
  .short-timeline-body{
    --kw-col-width: 8.632mm !important;
    width: calc(var(--week-count) * var(--kw-col-width)) !important;
    max-width: calc(var(--week-count) * var(--kw-col-width)) !important;
  }
}


/* V1.2.4: Baustellen-Detailseite + klickbarer Balken */
a.short-project-bar{
  text-decoration:none;
  color:#fff;
}
a.short-project-bar:hover{
  filter:brightness(1.08);
  box-shadow:inset 0 -2px 0 rgba(0,0,0,.18),0 0 0 2px rgba(15,23,42,.18),0 2px 8px rgba(0,0,0,.20);
}
.project-detail-title{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.project-detail-title h2{
  margin:0;
  font-size:28px;
}
.project-color-chip{
  width:88px;
  height:28px;
  border-radius:8px;
  border:1px solid #94a3b8;
  display:inline-block;
}
.project-detail-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:12px;
  margin-top:14px;
}
.project-detail-grid>div{
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:10px 12px;
}
.project-detail-grid.compact{
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
}
.project-note{
  margin-top:14px;
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:12px;
}
.project-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:14px 0 0;
}
.detail-crew-card{
  border:1px solid #d7e0ea;
  border-radius:12px;
  background:#fff;
  padding:12px;
  margin:10px 0;
}
.detail-crew-card h4{
  margin:0 0 8px;
  font-size:18px;
}
.future-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:10px;
}
.future-grid div{
  background:#f8fafc;
  border:1px dashed #94a3b8;
  border-radius:10px;
  padding:12px;
  font-weight:700;
  color:#475569;
}


/* V1.2.5: Warnung beim Verschieben von Mitarbeitern/Geräten */
.warning .small{margin-top:6px}
.crew-box .warning{margin:8px 0}


/* V1.2.6: Verschieben direkt in Warnbox */
.move-warning-box{
  margin-bottom:14px;
}
.move-confirm-form{
  display:flex;
  gap:8px;
  align-items:center;
  margin-top:10px;
}
.move-confirm-form .button-light{
  padding:9px 12px;
}


/* V1.2.8: PDF/Drucken auf jeder Seite */
.print-toolbar{
  display:flex;
  justify-content:flex-end;
  margin:0 0 12px 0;
}
.print-toolbar button{
  background:#0b56b7;
  color:white;
  border:0;
  border-radius:8px;
  padding:9px 14px;
  font-weight:700;
  cursor:pointer;
}
.print-toolbar button:hover{
  filter:brightness(1.08);
}

@media print{
  .no-print,
  header,
  nav,
  .print-toolbar,
  button,
  .button-light,
  .button-small,
  form{
    display:none!important;
  }

  body{
    background:white!important;
    color:#000!important;
    -webkit-print-color-adjust:exact;
    print-color-adjust:exact;
  }

  main{
    padding:0!important;
  }

  .card,
  .short-calendar-page{
    box-shadow:none!important;
    border:1px solid #cbd5e1!important;
    page-break-inside:avoid;
  }

  table{
    page-break-inside:auto;
  }

  tr{
    page-break-inside:avoid;
    page-break-after:auto;
  }

  a{
    color:#000!important;
    text-decoration:none!important;
  }
}


/* V1.2.9: Druck auf allen Seiten repariert */
@media print{
  /* Frühere Regeln haben teilweise die letzte Karte oder ganze Formulare ausgeblendet.
     Das wird hier am Ende bewusst überschrieben. */
  .card,
  section.card,
  .card:last-child,
  table,
  tbody,
  thead,
  tr,
  td,
  th{
    display: revert !important;
    visibility: visible !important;
  }

  form{
    display: block !important;
    visibility: visible !important;
  }

  /* Nur Eingabe-/Bedienelemente ausblenden, nicht den Inhalt der Formulare. */
  input,
  select,
  textarea,
  button,
  .button-light,
  .button-small,
  .print-toolbar,
  .no-print,
  header,
  nav{
    display: none !important;
  }

  main{
    padding: 0 !important;
  }

  .card{
    box-shadow: none !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 0 !important;
    margin: 0 0 6mm 0 !important;
    padding: 4mm !important;
    page-break-inside: auto !important;
  }

  table{
    width: 100% !important;
    border-collapse: collapse !important;
    page-break-inside: auto !important;
  }

  th,td{
    border: 1px solid #d1d5db !important;
    padding: 3px 5px !important;
    font-size: 9pt !important;
  }

  th{
    background: #eef4ff !important;
    font-weight: 700 !important;
  }

  h2,h3{
    margin-top: 0 !important;
  }
}


/* V1.3.0: Haken/Checkboxen im PDF sichtbar lassen */
@media print{
  input[type="checkbox"]{
    display:inline-block!important;
    visibility:visible!important;
    width:10px!important;
    height:10px!important;
    margin:0 3px 0 0!important;
    vertical-align:middle!important;
    -webkit-print-color-adjust:exact!important;
    print-color-adjust:exact!important;
  }

  input[type="checkbox"]:checked{
    accent-color:#2563eb!important;
  }

  label{
    display:inline-block!important;
    margin:0 8px 3px 0!important;
    white-space:nowrap!important;
  }
}


/* V1.3.1: Adresse/Koordinaten und Google-Maps-Karte */
.project-map-box{
  margin-top:14px;
  max-width:420px;
}
.project-map-box h3{
  margin:0 0 8px 0;
}
.project-map-box a{
  display:block;
  color:#0b56b7;
  font-weight:700;
  text-decoration:none;
}
.project-map-box iframe{
  width:100%;
  height:180px;
  border:1px solid #cbd5e1;
  border-radius:12px;
  display:block;
  margin-bottom:6px;
}
@media print{
  .project-map-box iframe{
    height:120px!important;
  }
}


/* V1.3.3: Adresse/Koordinaten direkt unter der Baustellenkarte */
.map-address{
  margin-top:8px;
  padding:8px 10px;
  background:#f8fafc;
  border:1px solid #d7e0ea;
  border-radius:8px;
  font-size:14px;
  line-height:1.35;
}
.maps-open-link{
  display:inline-block!important;
  margin-top:8px;
  font-weight:700;
  color:#0b56b7!important;
  text-decoration:underline!important;
}
@media print{
  .map-address{
    font-size:9pt!important;
    padding:4px 6px!important;
  }
}


/* V1.3.4: Freie Kolonnen Vorschlag bei Einsatzplanung */
.free-crews-result{
  padding:10px;
  border:1px solid #d7e0ea;
  border-radius:10px;
  background:#f8fafc;
}
.free-crews-list{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.free-crew-pill{
  background:#16a34a;
  color:white;
  border:0;
  border-radius:999px;
  padding:7px 12px;
  font-weight:700;
  cursor:pointer;
}
.free-crew-pill:hover{
  filter:brightness(1.08);
}
.busy-crews-details{
  margin-top:10px;
  color:#475569;
}
.busy-crews-details summary{
  cursor:pointer;
  font-weight:700;
}
@media print{
  #free-crews-card{
    display:none!important;
  }
}


/* V1.3.6: Jahreskalender auf Urlaub/Krank-Seite */
.absence-calendar-titlebar{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  margin-bottom:12px;
}
.absence-calendar-titlebar h2{
  margin:0;
}
.absence-legend{
  display:flex;
  gap:12px;
  align-items:center;
  flex-wrap:wrap;
  margin:10px 0 12px;
  font-weight:700;
}
.absence-legend-item{
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.absence-legend-item i{
  width:18px;
  height:10px;
  display:inline-block;
  border-radius:999px;
  border:1px solid rgba(0,0,0,.15);
}
.absence-year-calendar{
  display:grid;
  grid-template-columns:210px minmax(0,1fr);
  border:1px solid #b8c6d8;
  border-radius:10px;
  overflow:auto;
  background:#fff;
}
.absence-left-head{
  background:#0b3e91;
  color:#fff;
  font-weight:800;
  padding:8px 10px;
  border-right:2px solid #1d4ed8;
  border-bottom:1px solid #9fb2c8;
}
.absence-timeline-head{
  min-width:1200px;
  border-bottom:1px solid #9fb2c8;
}
.absence-month-row,
.absence-kw-row{
  display:grid;
}
.absence-month-cell{
  background:#113a72;
  color:#fff;
  text-align:center;
  font-weight:800;
  font-size:12px;
  padding:5px 0;
  border-right:1px solid #d6dbe4;
}
.absence-kw-cell{
  background:#f8fafc;
  text-align:center;
  font-size:9px;
  font-weight:700;
  padding:3px 0;
  border-right:1px solid #d7dee8;
}
.absence-employee-cell{
  min-height:42px;
  padding:7px 10px;
  border-right:2px solid #1d4ed8;
  border-bottom:1px solid #d7e0ea;
  background:#fff;
  font-size:12px;
}
.absence-employee-cell b{
  font-size:14px;
}
.absence-employee-cell span{
  color:#475569;
}
.absence-timeline-body{
  position:relative;
  min-height:42px;
  min-width:1200px;
  border-bottom:1px solid #d7e0ea;
  background:#fff;
  overflow:visible;
}
.absence-week-grid{
  position:absolute;
  inset:0;
  display:grid;
  pointer-events:none;
}
.absence-week-grid>div{
  border-right:1px solid #d7dee8;
}
.absence-year-bar{
  position:absolute;
  top:10px;
  height:22px;
  line-height:22px;
  border-radius:6px;
  color:#fff;
  font-size:11px;
  font-weight:800;
  text-align:center;
  padding:0 6px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  box-shadow:0 1px 3px rgba(0,0,0,.20);
  z-index:2;
}
.absence-urlaub{background:#16a34a}
.absence-kurzurlaub{background:#65a30d}
.absence-krank{background:#dc2626}
.absence-schule{background:#2563eb}
.absence-frei{background:#f59e0b;color:#111!important}

@media print{
  .absence-year-calendar{
    grid-template-columns:34mm minmax(0,1fr)!important;
    overflow:visible!important;
  }
  .absence-timeline-head,
  .absence-timeline-body{
    min-width:0!important;
  }
  .absence-left-head{
    font-size:7pt!important;
    padding:1.5mm!important;
  }
  .absence-month-cell{
    font-size:6pt!important;
    padding:1mm 0!important;
  }
  .absence-kw-cell{
    font-size:4.8pt!important;
    padding:.4mm 0!important;
  }
  .absence-employee-cell{
    min-height:8mm!important;
    font-size:5.8pt!important;
    padding:1mm!important;
  }
  .absence-employee-cell b{
    font-size:6.6pt!important;
  }
  .absence-timeline-body{
    min-height:8mm!important;
  }
  .absence-year-bar{
    top:1.4mm!important;
    height:4.8mm!important;
    line-height:4.8mm!important;
    font-size:5.5pt!important;
    border-radius:1mm!important;
    padding:0 .8mm!important;
  }
}


/* V1.3.7: Alle Mitarbeiter anzeigen + Tooltip wie Jahreskalender kurz */
.absence-kurzurlaub{background:#16a34a!important;color:#fff!important}
.absence-year-bar{
  overflow:visible!important;
  cursor:default;
}
.absence-popover{
  display:none;
  position:absolute;
  z-index:50;
  left:50%;
  top:30px;
  transform:translateX(-50%);
  min-width:280px;
  max-width:360px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.18);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
}
.absence-popover::before{
  content:"";
  position:absolute;
  left:50%;
  top:-8px;
  transform:translateX(-50%) rotate(45deg);
  width:14px;
  height:14px;
  background:#fff;
  border-left:1px solid #cbd5e1;
  border-top:1px solid #cbd5e1;
}
.absence-year-bar:hover .absence-popover,
.absence-year-bar:focus .absence-popover{
  display:block;
}
.absence-popover b{
  display:block;
  font-size:18px;
  color:#008000;
  margin-bottom:8px;
}
.absence-popover strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}
.absence-popover-row{
  display:grid;
  grid-template-columns: 1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}
.absence-popover-row span:last-child{
  color:#008000;
  font-weight:700;
}
.absence-popover em{
  display:block;
  margin-top:8px;
  color:#475569;
}
@media print{
  .absence-popover{display:none!important}
}


/* V1.3.9: Stabiles Hover-Popup für Urlaub/Krank-Kalender */
.absence-global-popover{
  display:none;
  position:absolute;
  z-index:99999;
  min-width:300px;
  max-width:420px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.22);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
  pointer-events:none;
}
.absence-global-popover b{
  display:block;
  font-size:19px;
  color:#008000;
  margin-bottom:8px;
}
.absence-global-popover strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}
.absence-global-popover .absence-popover-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}
.absence-global-popover .absence-popover-row span:last-child{
  color:#008000;
  font-weight:700;
}
.absence-global-popover em{
  display:block;
  margin-top:8px;
  color:#475569;
}
@media print{
  .absence-global-popover{display:none!important}
}


/* V1.4.0: zuverlässiges Maus-Popup für Urlaub/Krank */
.absence-hover-tooltip{
  display:none;
  position:fixed;
  z-index:2147483647;
  min-width:300px;
  max-width:420px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.25);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
  pointer-events:none;
}
.absence-hover-tooltip b{
  display:block;
  font-size:19px;
  color:#008000;
  margin-bottom:8px;
}
.absence-hover-tooltip strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}
.absence-tooltip-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}
.absence-tooltip-row span:last-child{
  color:#008000;
  font-weight:700;
}
.absence-hover-tooltip em{
  display:block;
  margin-top:8px;
  color:#475569;
}
.absence-year-bar{
  cursor:help!important;
}
@media print{
  .absence-hover-tooltip{display:none!important}
}


/* V1.4.1: Urlaub/Krank-Popup wie Urlaubspunkt im Jahreskalender kurz, ohne JavaScript */
.absence-timeline-body{
  overflow:visible!important;
}
.absence-year-calendar{
  overflow:visible!important;
}
.absence-year-bar{
  overflow:visible!important;
  cursor:help!important;
}
.absence-bar-popover{
  display:none;
  position:absolute;
  z-index:9999;
  left:50%;
  top:30px;
  transform:translateX(-50%);
  min-width:310px;
  max-width:420px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.22);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
}
.absence-bar-popover::before{
  content:"";
  position:absolute;
  left:50%;
  top:-8px;
  transform:translateX(-50%) rotate(45deg);
  width:14px;
  height:14px;
  background:#fff;
  border-left:1px solid #cbd5e1;
  border-top:1px solid #cbd5e1;
}
.absence-year-bar:hover .absence-bar-popover,
.absence-year-bar:focus .absence-bar-popover{
  display:block;
}
.absence-bar-popover b{
  display:block;
  font-size:19px;
  color:#008000;
  margin-bottom:8px;
}
.absence-bar-popover strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}
.absence-bar-popover-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}
.absence-bar-popover-row span:last-child{
  color:#008000;
  font-weight:700;
}
.absence-bar-popover em{
  display:block;
  margin-top:8px;
  color:#475569;
}
@media print{
  .absence-bar-popover{display:none!important}
}


/* V1.4.2: Urlaub/Krank-Kalender endgültig korrigiert */
.absence-calendar-card .hint{
  color:#475569;
}
.absence-kurzurlaub{
  background:#16a34a!important;
  color:#fff!important;
}
.absence-legend-item i.absence-kurzurlaub{
  background:#16a34a!important;
}
.absence-year-calendar,
.absence-timeline-body{
  overflow:visible!important;
}
.absence-year-bar{
  overflow:visible!important;
  position:absolute!important;
  z-index:5!important;
  cursor:help!important;
}
.absence-year-bar:hover,
.absence-year-bar:focus{
  z-index:999!important;
}
.absence-bar-label{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  height:100%;
}
.absence-bar-popover{
  display:none;
  position:absolute;
  z-index:10000;
  left:50%;
  top:30px;
  transform:translateX(-50%);
  min-width:310px;
  max-width:430px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.24);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
  pointer-events:none;
}
.absence-bar-popover::before{
  content:"";
  position:absolute;
  left:50%;
  top:-8px;
  transform:translateX(-50%) rotate(45deg);
  width:14px;
  height:14px;
  background:#fff;
  border-left:1px solid #cbd5e1;
  border-top:1px solid #cbd5e1;
}
.absence-year-bar:hover .absence-bar-popover,
.absence-year-bar:focus .absence-bar-popover{
  display:block!important;
}
.absence-bar-popover b{
  display:block;
  font-size:19px;
  color:#008000;
  margin-bottom:8px;
}
.absence-bar-popover strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}
.absence-bar-popover-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}
.absence-bar-popover-row span:last-child{
  color:#008000;
  font-weight:700;
}
.absence-bar-popover em{
  display:block;
  margin-top:8px;
  color:#475569;
}
@media print{
  .absence-bar-popover{display:none!important}
}


/* V1.4.3: Urlaub/Krank Popup exakt wie Jahreskalender-kurz-Popup */
.absence-kurzurlaub{
  background:#65a30d!important;
  color:#fff!important;
}
.absence-legend-item i.absence-kurzurlaub{
  background:#65a30d!important;
}
.absence-year-calendar,
.absence-timeline-body{
  overflow:visible!important;
}
.absence-year-bar{
  overflow:visible!important;
  position:absolute!important;
  z-index:5!important;
  cursor:help!important;
}
.absence-year-bar:hover,
.absence-year-bar:focus{
  z-index:99999!important;
}
.absence-bar-label{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  height:100%;
}
.absence-year-bar:hover .vacation-popover,
.absence-year-bar:focus .vacation-popover{
  display:block!important;
}
.absence-vacation-popover{
  top:34px!important;
  z-index:999999!important;
  pointer-events:none;
}
.absence-vacation-popover em{
  display:block;
  margin-top:8px;
  color:#475569;
}
@media print{
  .absence-vacation-popover{display:none!important}
}


/* V1.4.4: Urlaub/Krank Tooltip sauber neu, Kurzurlaub = Urlaub */
.absence-urlaub,
.absence-kurzurlaub,
.absence-legend-item i.absence-urlaub,
.absence-legend-item i.absence-kurzurlaub{
  background:#16a34a!important;
  color:#fff!important;
}

.absence-year-bar{
  cursor:help!important;
  overflow:hidden!important;
}

.absence-year-bar:hover{
  filter:brightness(1.06);
}

.absence-bar-popover,
.absence-vacation-popover,
.absence-popover,
.absence-global-popover,
.absence-hover-tooltip{
  display:none!important;
}

.absence-fixed-tooltip{
  display:none;
  position:fixed;
  z-index:2147483647;
  min-width:310px;
  max-width:440px;
  background:#fff;
  color:#0f172a;
  border:1px solid #cbd5e1;
  border-radius:12px;
  box-shadow:0 12px 30px rgba(15,23,42,.28);
  padding:14px 16px;
  text-align:left;
  line-height:1.35;
  white-space:normal;
  font-weight:400;
  pointer-events:none;
}

.absence-fixed-tooltip b{
  display:block;
  font-size:19px;
  color:#008000;
  margin-bottom:8px;
}

.absence-fixed-tooltip strong{
  display:block;
  font-size:15px;
  margin-bottom:12px;
}

.absence-fixed-row{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:12px;
  align-items:center;
  margin:6px 0;
  font-size:15px;
}

.absence-fixed-row span:last-child{
  color:#008000;
  font-weight:700;
}

.absence-fixed-tooltip em{
  display:block;
  margin-top:8px;
  color:#475569;
}

@media print{
  .absence-fixed-tooltip{display:none!important}
}


/* V1.4.5: Monats-Trennlinien und kein schmaler Browser-Tooltip */
.absence-month-separator{
  position:absolute;
  top:0;
  bottom:0;
  width:1px;
  background:#94a3b8;
  opacity:.75;
  z-index:1;
  pointer-events:none;
}
.absence-year-bar{
  z-index:5!important;
}
.absence-year-bar:hover{
  z-index:9999!important;
}
@media print{
  .absence-month-separator{
    background:#64748b!important;
    opacity:.9!important;
  }
}


/* V1.4.6: Mitarbeiter links hervorheben, wenn Infofenster offen ist */
.absence-employee-cell.is-hovered{
  background:#fff7cc!important;
  color:#0f172a!important;
  box-shadow:inset 4px 0 0 #f59e0b;
}
.absence-employee-cell.is-hovered b{
  color:#b45309!important;
}


/* V1.5.0 Share-Modus */
.share-mode .topbar,
.share-mode .navbar,
.share-mode header,
.share-mode nav{
  display:none!important;
}

.share-container{
  padding:18px;
}

.share-mode .btn{
  display:none!important;
}


/* V1.5.1 Teilen-Fenster / reine Baustellen-Infoseite */
.share-button{
  background:#0b56b7!important;
  color:white!important;
  border:0!important;
  border-radius:8px!important;
  padding:7px 12px!important;
  font-weight:700!important;
}
.share-modal{
  position:fixed;
  inset:0;
  z-index:999999;
  background:rgba(15,23,42,.45);
  align-items:center;
  justify-content:center;
}
.share-modal-box{
  width:min(720px, calc(100vw - 30px));
  max-height:80vh;
  overflow:auto;
  background:#fff;
  border-radius:14px;
  border:1px solid #cbd5e1;
  box-shadow:0 20px 50px rgba(15,23,42,.25);
  padding:20px;
}
.share-modal-box h3{
  margin-top:0;
  font-size:22px;
}
.share-all-row{
  display:block;
  padding:10px;
  background:#f8fafc;
  border:1px solid #d7e0ea;
  border-radius:10px;
  font-weight:700;
  margin:12px 0;
}
.share-project-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:8px;
  margin:12px 0;
}
.share-project-list label{
  padding:9px 10px;
  border:1px solid #e2e8f0;
  border-radius:9px;
  background:#fff;
}
.share-modal-actions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  margin-top:16px;
}
.share-mode{
  background:#f3f6fa;
}
.share-container{
  max-width:1400px;
  margin:0 auto;
  padding:18px;
}
.share-mode .project-actions,
.share-mode .print-toolbar,
.share-mode header,
.share-mode nav,
.share-mode .no-print{
  display:none!important;
}
.share-mode .card{
  margin-bottom:16px;
}
@media print{
  .share-modal{display:none!important}
}


/* V1.5.3: Floating Share-Icon mit Share-Menü */
.share-floating{
  position:fixed;
  top:18px;
  right:22px;
  z-index:999999;
}
.share-round-button{
  width:58px;
  height:58px;
  border-radius:50%;
  border:0;
  background:#238bd6;
  color:white;
  box-shadow:0 8px 22px rgba(15,23,42,.28);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform .12s ease, filter .12s ease;
}
.share-round-button:hover{
  transform:translateY(-1px);
  filter:brightness(1.06);
}
.share-round-button svg{
  width:36px;
  height:36px;
}
.share-round-button circle{
  fill:white;
}
.share-round-button path{
  fill:none;
  stroke:white;
  stroke-width:5;
  stroke-linecap:round;
}
.share-panel{
  position:absolute;
  top:68px;
  right:0;
  width:250px;
  background:#fff;
  border:1px solid #cbd5e1;
  border-radius:14px;
  box-shadow:0 16px 36px rgba(15,23,42,.22);
  padding:12px;
}
.share-panel::before{
  content:"";
  position:absolute;
  top:-8px;
  right:22px;
  width:16px;
  height:16px;
  background:#fff;
  border-left:1px solid #cbd5e1;
  border-top:1px solid #cbd5e1;
  transform:rotate(45deg);
}
.share-panel b{
  display:block;
  font-size:17px;
  margin:2px 4px 10px;
}
.share-panel button{
  width:100%;
  text-align:left;
  background:#f8fafc;
  color:#0f172a;
  border:1px solid #e2e8f0;
  border-radius:9px;
  padding:9px 10px;
  margin:4px 0;
  font-weight:700;
  cursor:pointer;
}
.share-panel button:hover{
  background:#eaf2ff;
}
.share-copy-message{
  font-size:12px;
  color:#0f8f19;
  margin:8px 4px 0;
  word-break:break-all;
}
.share-qr-box{
  margin-top:10px;
  text-align:center;
}
.share-qr-box img{
  width:180px;
  height:180px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:6px;
  background:white;
}
@media print{
  .share-floating{display:none!important}
}


/* V1.5.3 Share-Button Fix */
.share-floating{
    position: fixed !important;
    top: 18px !important;
    right: 18px !important;
    z-index: 999999 !important;
}

.share-round-button{
    width: 64px !important;
    height: 64px !important;
    border-radius: 50% !important;
    background: #238bd6 !important;
    border: none !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    cursor:pointer !important;
    box-shadow:0 8px 24px rgba(0,0,0,.25) !important;
    overflow:hidden !important;
}

.share-round-button svg{
    width:38px !important;
    height:38px !important;
    display:block !important;
}

.share-round-button circle{
    fill:#ffffff !important;
}

.share-round-button path{
    stroke:#ffffff !important;
    stroke-width:5 !important;
    fill:none !important;
    stroke-linecap:round !important;
}



/* V1.5.4: Share-Icon direkt in Baustellen-Detailseite */
.project-detail-tools{
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
}
.detail-share-round-button{
  width:58px;
  height:58px;
  border-radius:50%;
  border:0;
  background:#238bd6!important;
  color:white;
  box-shadow:0 8px 22px rgba(15,23,42,.28);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform .12s ease, filter .12s ease;
}
.detail-share-round-button:hover{
  transform:translateY(-1px);
  filter:brightness(1.06);
}
.detail-share-round-button svg{
  width:36px;
  height:36px;
}
.detail-share-round-button circle{
  fill:white;
}
.detail-share-round-button path{
  fill:none;
  stroke:white;
  stroke-width:5;
  stroke-linecap:round;
}
.detail-share-panel{
  position:absolute;
  top:70px;
  right:0;
  width:250px;
  background:#fff;
  border:1px solid #cbd5e1;
  border-radius:14px;
  box-shadow:0 16px 36px rgba(15,23,42,.22);
  padding:12px;
  z-index:999999;
}
.detail-share-panel::before{
  content:"";
  position:absolute;
  top:-8px;
  right:22px;
  width:16px;
  height:16px;
  background:#fff;
  border-left:1px solid #cbd5e1;
  border-top:1px solid #cbd5e1;
  transform:rotate(45deg);
}
.detail-share-panel b{
  display:block;
  font-size:17px;
  margin:2px 4px 10px;
}
.detail-share-panel button{
  width:100%;
  text-align:left;
  background:#f8fafc;
  color:#0f172a;
  border:1px solid #e2e8f0;
  border-radius:9px;
  padding:9px 10px;
  margin:4px 0;
  font-weight:700;
  cursor:pointer;
}
.detail-share-panel button:hover{
  background:#eaf2ff;
}
.detail-share-copy{
  font-size:12px;
  color:#0f8f19;
  margin:8px 4px 0;
  word-break:break-all;
}
.detail-share-qr{
  margin-top:10px;
  text-align:center;
}
.detail-share-qr img{
  width:180px;
  height:180px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:6px;
  background:white;
}
@media print{
  .detail-share-round-button,
  .detail-share-panel{
    display:none!important;
  }
}


/* V1.5.5: Freimeldung Polier direkt auf Share-/Baustellen-Detailseite */
.polier-release-card{
  border-left:5px solid #238bd6!important;
}
.polier-release-form{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:12px;
  align-items:end;
}
.polier-release-form label{
  display:flex;
  flex-direction:column;
  gap:5px;
  font-weight:700;
}
.polier-release-form select,
.polier-release-form input{
  width:100%;
  padding:9px 10px;
  border:1px solid #cbd5e1;
  border-radius:8px;
  background:#fff;
  font:inherit;
  box-sizing:border-box;
}
.polier-release-note{
  grid-column:1 / -1;
}
.polier-release-form button{
  background:#0b56b7;
  color:#fff;
  border:0;
  border-radius:9px;
  padding:11px 14px;
  font-weight:800;
  cursor:pointer;
}
.polier-release-form button:hover{
  filter:brightness(1.08);
}
.success-box{
  background:#ecfdf5;
  color:#166534;
  border:1px solid #86efac;
  border-radius:9px;
  padding:10px 12px;
  font-weight:700;
  margin:10px 0;
}
@media print{
  .polier-release-card{display:none!important}
}


/* V1.5.6: Freimeldung + Bedarfsmeldung als gemeinsames Meldungssystem */
.message-type-pill{
  display:inline-block;
  padding:4px 8px;
  border-radius:999px;
  color:#fff;
  font-weight:800;
  font-size:12px;
}
.free-pill{background:#16a34a}
.need-pill{background:#dc2626}
.free-row{background:#f8fff8}
.need-row{background:#fff7f7}
.need-row td:first-child{
  border-left:4px solid #dc2626;
}
.free-row td:first-child{
  border-left:4px solid #16a34a;
}


/* V1.5.7: Bedarfsmeldung logisch getrennt von Freimeldung */
.message-form,
.polier-release-form{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:12px;
  align-items:end;
}
.message-form label,
.polier-release-form label{
  display:flex;
  flex-direction:column;
  gap:5px;
  font-weight:700;
}
.message-form select,
.message-form input,
.polier-release-form select,
.polier-release-form input{
  width:100%;
  padding:9px 10px;
  border:1px solid #cbd5e1;
  border-radius:8px;
  background:#fff;
  font:inherit;
  box-sizing:border-box;
}
.message-section,
.share-free-section,
.share-need-section{
  grid-column:1 / -1;
  border:1px solid #d7e0ea;
  border-radius:10px;
  padding:12px;
  background:#f8fafc;
}
.need-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:8px;
  margin:8px 0 14px;
}
.need-grid label{
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:9px;
  padding:8px;
}
.message-note,
.polier-release-note{
  grid-column:1 / -1;
}
.status-badge{
  display:inline-block;
  padding:4px 8px;
  border-radius:999px;
  color:#fff;
  font-weight:800;
  font-size:12px;
  text-transform:uppercase;
}
.status-open{background:#dc2626}
.status-partial{background:#f59e0b;color:#111!important}
.status-done{background:#16a34a}
.status-assigned{background:#2563eb}
.message-type-pill{
  display:inline-block;
  padding:4px 8px;
  border-radius:999px;
  color:#fff;
  font-weight:800;
  font-size:12px;
}
.free-pill{background:#16a34a}
.need-pill{background:#dc2626}
.free-row{background:#f8fff8}
.need-row{background:#fff7f7}
.need-row td:first-child{border-left:4px solid #dc2626}
.free-row td:first-child{border-left:4px solid #16a34a}


/* V1.5.8: Zuweisungssystem + Dispo Transport */
.suggestion-group{
  border:1px solid #d7e0ea;
  border-radius:12px;
  padding:12px;
  margin:10px 0;
  background:#f8fafc;
}
.suggestion-row{
  display:flex;
  gap:10px;
  align-items:flex-start;
  border:1px solid #e2e8f0;
  background:#fff;
  border-radius:10px;
  padding:10px;
  margin:8px 0;
}
.suggestion-row input{
  margin-top:4px;
}
.suggestion-row strong{
  font-size:15px;
}


/* V1.5.9: 'Wieder benötigt' nur bei Freimeldung sichtbar */
.free-only-field,
.share-free-only-field{
  display:flex;
}


/* V1.6.0: Polier-App Druck/PDF Button + saubere Projektfilter */
.share-print-floating{
  position:fixed;
  top:88px;
  right:22px;
  z-index:999998;
}
.share-print-button{
  width:58px;
  height:58px;
  border-radius:50%;
  border:0;
  background:#334155!important;
  color:white;
  box-shadow:0 8px 22px rgba(15,23,42,.26);
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform .12s ease, filter .12s ease;
}
.share-print-button:hover{
  transform:translateY(-1px);
  filter:brightness(1.08);
}
.share-print-button svg{
  width:34px;
  height:34px;
}
.share-print-button path,
.share-print-button rect{
  fill:none;
  stroke:white;
  stroke-width:4;
  stroke-linejoin:round;
  stroke-linecap:round;
}
.share-print-button circle{
  fill:white;
}
@media print{
  .share-print-floating{display:none!important}
}


/* V1.6.1: Glocke / Benachrichtigungen */
header{
  position:relative;
}
.notification-widget{
  position:absolute;
  top:18px;
  right:18px;
  z-index:99999;
}
.notification-bell{
  position:relative;
  border:0;
  border-radius:999px;
  background:#0b56b7;
  color:#fff;
  font-size:22px;
  width:54px;
  height:54px;
  box-shadow:0 8px 22px rgba(15,23,42,.24);
  cursor:pointer;
}
.notification-count{
  position:absolute;
  top:-5px;
  right:-5px;
  min-width:22px;
  height:22px;
  padding:0 5px;
  border-radius:999px;
  background:#dc2626;
  color:#fff;
  font-size:12px;
  font-weight:900;
  align-items:center;
  justify-content:center;
  border:2px solid #fff;
}
.notification-panel{
  position:absolute;
  top:64px;
  right:0;
  width:360px;
  max-height:70vh;
  overflow:auto;
  background:#fff;
  border:1px solid #cbd5e1;
  border-radius:14px;
  box-shadow:0 16px 36px rgba(15,23,42,.24);
  padding:12px;
  color:#0f172a;
}
.notification-panel>b{
  display:block;
  font-size:18px;
  margin:2px 4px 10px;
}
.notification-item{
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:10px;
  margin:8px 0;
  background:#f8fafc;
}
.notification-item strong{
  display:block;
  font-size:15px;
}
.notification-item small{
  color:#64748b;
  font-size:12px;
}
.notification-item p{
  margin:6px 0 8px;
}
.notification-actions{
  display:flex;
  gap:8px;
  align-items:center;
}
.notification-actions a,
.notification-actions button{
  border:0;
  border-radius:8px;
  padding:7px 9px;
  font-weight:800;
  font-size:12px;
  cursor:pointer;
  text-decoration:none;
}
.notification-actions a{
  background:#e0ecff;
  color:#0b56b7!important;
}
.notification-actions button{
  background:#16a34a;
  color:#fff;
}
.notification-empty{
  padding:12px;
  color:#64748b;
}
.polier-notification-widget{
  position:fixed!important;
  top:158px;
  right:22px;
}
.polier-bell{
  background:#7c3aed;
}
.polier-panel{
  right:0;
}
@media print{
  .notification-widget,
  .polier-notification-widget{
    display:none!important;
  }
}


/* V1.6.3: Aktuelle Kalenderwoche im Jahreskalender und Urlaub/Krank markieren */
.short-kw-cell.is-current-week,
.absence-kw-cell.is-current-week{
  background:#fde047!important;
  color:#111!important;
  font-weight:900!important;
  box-shadow:inset 0 -2px 0 #eab308;
}
.short-week-grid-lines .is-current-week-line,
.absence-week-grid .is-current-week-line{
  background:rgba(250,204,21,.20)!important;
  border-left:3px solid #eab308!important;
  border-right:3px solid #eab308!important;
  box-sizing:border-box;
}
.short-week-grid-lines .is-current-week-line::after,
.absence-week-grid .is-current-week-line::after{
  content:"";
  display:block;
  height:100%;
  background:rgba(250,204,21,.10);
}


/* V1.6.4: Dispo-Empfehlung bei Zuweisungen */
.suggestion-row.is-recommended{
  border:2px solid #16a34a;
  background:#f0fdf4;
}
.suggestion-row.has-warning{
  border:2px solid #f59e0b;
  background:#fffbeb;
}
.suggestion-row.has-warning.critical{
  border-color:#dc2626;
  background:#fef2f2;
}
.suggestion-badge{
  display:inline-block;
  margin-left:8px;
  padding:3px 7px;
  border-radius:999px;
  font-size:11px;
  font-style:normal;
  font-weight:900;
  color:#fff;
}
.suggestion-badge.recommended{
  background:#16a34a;
}
.suggestion-warning{
  display:block;
  margin-top:6px;
  color:#92400e;
  font-weight:800;
}
.suggestion-row.critical .suggestion-warning{
  color:#991b1b;
}


/* V1.6.5: Zukunftsverfügbarkeit + Rückfrage-Workflow */
.future-row{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  border:1px solid #e2e8f0;
  background:#fff;
  border-radius:10px;
  padding:10px;
  margin:8px 0;
}
.future-row form{
  white-space:nowrap;
}
.future-row button{
  background:#0b56b7;
  color:#fff;
  border:0;
  border-radius:8px;
  padding:8px 10px;
  font-weight:800;
  cursor:pointer;
}
.future-row button.danger,
button.danger{
  background:#dc2626!important;
}


/* Einsatzplan Light V1.0.1 */
.weather-mini{
  display:inline-block;
  margin-left:6px;
  padding:2px 6px;
  border-radius:999px;
  background:rgba(255,255,255,.24);
  color:#fff;
  font-weight:900;
  font-size:12px;
  white-space:nowrap;
}
.project-weather-box{
  margin-top:16px;
  border:1px solid #d7e0ea;
  border-radius:12px;
  padding:14px;
  background:#f8fafc;
}
.project-weather-box h3{margin-top:0}
.weather-detail-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:8px;
}
.weather-detail-row{
  background:#fff;
  border:1px solid #e2e8f0;
  border-radius:10px;
  padding:10px;
}
.absence-status-filter{
  margin:10px 0 14px;
  display:flex;
  gap:10px;
  align-items:center;
}
.absence-status-filter select{
  padding:7px 10px;
  border:1px solid #cbd5e1;
  border-radius:8px;
  background:#fff;
}
.is-filtered-out{display:none!important}

/* Light V1.0.2: Wetterübersicht Jahreskalender kurz */
.short-weather-overview{
  margin: 10px 0 14px 0;
  padding: 12px 14px;
  border: 1px solid #dbe3ef;
  border-radius: 14px;
  background: #f8fafc;
}
.short-weather-overview h3{
  margin: 0 0 8px 0;
  font-size: 15px;
}
.short-weather-list{
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  font-size: 12px;
}
.short-weather-card{
  min-width: 230px;
  max-width: 360px;
  background: #ffffff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 8px 10px;
  box-shadow: 0 1px 2px rgba(15,23,42,.06);
}
.short-weather-card b{display:block;margin-bottom:5px;}
.short-weather-card small{display:block;color:#64748b;margin-top:4px;}
.short-weather-day{display:block;line-height:1.45;}


.weather-project-bar{
position:relative;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
padding-right:56px;
}

.weather-mini-right{
position:absolute;
right:10px;
top:50%;
transform:translateY(-50%);
font-size:11px;
font-weight:700;
white-space:nowrap;
display:flex;
align-items:center;
gap:4px;
}

.short-project-manager{
display:block;
font-size:10px;
margin-top:2px;
}

/* V1.0.8: Urlaubsantrag */
.vacation-request-box{max-width:720px;margin:48px auto;background:#fff;border:1px solid #dbe4ef;border-radius:18px;padding:24px;box-shadow:0 10px 28px rgba(15,23,42,.10)}
.vacation-request-box h2{font-size:30px;margin:0 0 8px;color:#0f172a}
.vacation-form label{font-weight:800;color:#0f172a}
.vacation-form input,.vacation-form select,.vacation-form textarea{width:100%;box-sizing:border-box;margin-top:6px;border:1px solid #cbd5e1;border-radius:10px;padding:10px;font-size:16px;background:#fff}
.vacation-form .full{grid-column:1/-1}
.success-box{background:#dcfce7;border:1px solid #86efac;color:#166534;border-radius:12px;padding:12px;margin:14px 0;font-weight:900}
.notification-actions button.danger, button.danger{background:#dc2626!important;color:white!important}
.muted{color:#52637a}


/* Light V1.0.10 Urlaubsantrag QR/Layout */
.vacation-request-box-wide{max-width:900px;margin:36px auto;padding:28px;}
.vacation-head-row{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:24px;align-items:start;}
.vacation-qr-card{border:1px solid #dbe4ef;border-radius:16px;background:#f8fafc;padding:12px;text-align:center;box-shadow:0 4px 12px rgba(15,23,42,.06)}
.vacation-qr-card b{display:block;margin-bottom:8px;color:#0f172a;}
.vacation-qr-card img{width:150px;height:150px;display:block;margin:0 auto 10px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:6px;}
.vacation-qr-card button{margin:3px;padding:7px 10px;border-radius:8px;border:1px solid #b8c8dc;background:#fff;color:#0f3b66;font-weight:700;cursor:pointer;}
.vacation-form-clean{display:grid;grid-template-columns:1.3fr .9fr .9fr;gap:14px 18px;align-items:start;margin-top:18px;}
.vacation-form-clean label{font-weight:800;color:#0f172a;display:flex;flex-direction:column;gap:7px;}
.vacation-form-clean input,.vacation-form-clean select,.vacation-form-clean textarea{border:1px solid #cbd8e8;border-radius:10px;padding:10px 12px;font-size:16px;background:#fff;box-sizing:border-box;width:100%;}
.vacation-form-clean .note-field{grid-column:1 / 4;max-width:560px;}
.vacation-form-clean .form-actions{grid-column:1 / 4;}
.vacation-form-clean button[type="submit"]{background:#2563eb;color:#fff;border:0;border-radius:9px;padding:11px 16px;font-weight:800;cursor:pointer;}
@media (max-width:760px){.vacation-head-row{grid-template-columns:1fr}.vacation-form-clean{grid-template-columns:1fr}.vacation-form-clean .note-field,.vacation-form-clean .form-actions{grid-column:auto}.vacation-qr-card img{width:180px;height:180px}}


/* Light V1.0.10 - QR-Code sichtbar rechts neben Bis */
.vacation-request-box-wide{max-width:980px;}
.vacation-head-row{display:block;}
.vacation-form-clean{grid-template-columns:1.35fr .9fr .9fr 190px;gap:14px 18px;align-items:start;}
.vacation-qr-inline{grid-column:4;grid-row:1 / span 3;align-self:start;margin-top:0;}
.vacation-qr-card img{width:145px;height:145px;}
.vacation-form-clean .note-field{grid-column:1 / 4;max-width:none;}
.vacation-form-clean .form-actions{grid-column:1 / 4;}
@media (max-width:900px){.vacation-form-clean{grid-template-columns:1fr}.vacation-qr-inline,.vacation-form-clean .note-field,.vacation-form-clean .form-actions{grid-column:auto;grid-row:auto}.vacation-qr-card img{width:180px;height:180px}}


/* Light V1.0.14: Korrektur Jahreskalender + QR sichtbar */
.short-timeline-body{
  min-height:66px!important;
}
.short-project-bar,
a.short-project-bar{
  top:14px!important;
  bottom:auto!important;
  transform:none!important;
  position:absolute!important;
}
.weather-project-bar{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  align-items:center!important;
  padding-right:56px!important;
}
.short-project-title{
  display:block!important;
  line-height:18px!important;
  margin:0!important;
}
.short-project-manager{
  display:block!important;
  line-height:11px!important;
  margin-top:1px!important;
}
.vacation-qr-inline{
  display:block!important;
  visibility:visible!important;
}
.share-mode .vacation-qr-inline{
  display:block!important;
  visibility:visible!important;
}
.vacation-qr-card img{
  display:block!important;
}


/* Light V1.0.16: Baustellenbalken je Kolonnenzeile exakt auf einer Linie */
.short-timeline-body{
  position: relative !important;
  min-height: 64px !important;
  overflow: visible !important;
}
.short-timeline-body > a.short-project-bar,
.short-timeline-body > a.weather-project-bar,
.short-project-bar.weather-project-bar{
  position: absolute !important;
  top: 13px !important;
  bottom: auto !important;
  transform: none !important;
  height: 36px !important;
  min-height: 36px !important;
  line-height: 1.05 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  align-items: center !important;
  padding: 0 52px 0 8px !important;
  box-sizing: border-box !important;
}
.short-timeline-body > a.short-project-bar .short-project-title,
.short-timeline-body > a.weather-project-bar .short-project-title{
  display: block !important;
  line-height: 17px !important;
  height: 17px !important;
  margin: 0 !important;
  padding: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}
.short-timeline-body > a.short-project-bar .short-project-manager,
.short-timeline-body > a.weather-project-bar .short-project-manager{
  display: block !important;
  line-height: 11px !important;
  height: 11px !important;
  margin: 1px 0 0 0 !important;
  padding: 0 !important;
}
.weather-mini-right{
  position: absolute !important;
  right: 9px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  margin: 0 !important;
}


/* V1.0.17 Koordinaten aus Google Maps */
.coord-input-wrap{display:flex;flex-direction:column;gap:6px;min-width:280px}
.coord-label{font-weight:700;color:#1f2937}
.coord-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.coord-actions .button-small{white-space:nowrap}
#project-coordinates{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}


/* Light V1.0.20: Share-Buttons weiterhin sichtbar + klare Fehlermeldungen */
.share-mode .share-floating.no-print,
.share-mode .share-print-floating.no-print{
  display:block!important;
}
.share-copy-message.is-error,
.detail-share-copy.is-error{
  color:#b91c1c!important;
}
@media print{
  .share-mode .share-floating.no-print,
  .share-mode .share-print-floating.no-print{
    display:none!important;
  }
}


/* Light V1.0.20: Urlaubsantrag-Teilen auf PC sichtbar */
.vacation-share-options{
  display:flex;
  justify-content:center;
  gap:4px;
  flex-wrap:wrap;
  margin-top:5px;
}
.vacation-share-options button{
  font-size:12px;
  padding:6px 8px;
}
.vacation-qr-card .share-copy-message{
  font-size:12px;
  line-height:1.25;
  margin-top:6px;
  word-break:normal;
}

/* Light V1.0.22 Krankmeldung-Link */
.backup-actions{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-top:14px}
.backup-upload-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;background:#f8fafc;border:1px solid #d7e0ea;border-radius:10px;padding:10px}
.backup-upload-form label{font-weight:700;color:#172033;display:flex;flex-direction:column;gap:6px;margin:0}
.backup-table-wrap{overflow:auto}
.backup-table code{font-size:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:3px 5px;white-space:nowrap}
.backup-row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.backup-row-actions form{display:inline;margin:0}
.backup-row-actions button{padding:7px 9px;font-size:12px;border-radius:8px}
@media (max-width:760px){.backup-actions,.backup-upload-form{display:grid;grid-template-columns:1fr;width:100%}.backup-actions button,.backup-actions input{width:100%}.backup-row-actions{display:grid;grid-template-columns:1fr}.backup-row-actions a,.backup-row-actions button{width:100%}}


/* Light V1.0.22: komplette Handyoptimierung + Touch + PWA-Vorbereitung */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body{
  min-width:0;
  touch-action:manipulation;
}
.mobile-nav-toggle{
  display:none;
  min-height:44px;
  padding:10px 14px;
  border-radius:12px;
  background:#2563eb;
  color:#fff;
  font-weight:900;
  border:1px solid rgba(255,255,255,.25);
}
input,select,textarea,button,.button-light,.button-small,nav a{
  font-size:16px;
}
button,.button-light,.button-small,nav a,input[type="date"],select{
  min-height:44px;
}
.mobile-table-scroll{
  width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.mobile-table-scroll table{
  min-width:720px;
}
.vacation-dot.is-open .vacation-popover{
  display:block!important;
}

@media (max-width:900px){
  body{
    background:#eef3f8;
  }
  header{
    padding:14px 12px calc(12px + env(safe-area-inset-top));
    display:grid;
    grid-template-columns:1fr auto auto;
    gap:10px;
    align-items:center;
    position:sticky;
    top:0;
    z-index:10000;
  }
  header h1{
    font-size:20px;
    line-height:1.15;
  }
  header p{
    font-size:12px;
    line-height:1.25;
  }
  .mobile-nav-toggle{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    white-space:nowrap;
  }
  .notification-widget{
    position:relative;
  }
  .notification-bell{
    width:48px;
    min-width:48px;
    height:48px;
    padding:0;
    border-radius:14px;
    font-size:21px;
  }
  .notification-panel{
    position:fixed!important;
    top:72px!important;
    left:10px!important;
    right:10px!important;
    width:auto!important;
    max-height:70vh!important;
    overflow:auto!important;
    z-index:100000!important;
  }
  nav{
    display:none;
    position:sticky;
    top:72px;
    z-index:9999;
    padding:10px 10px;
    grid-template-columns:1fr 1fr;
    gap:8px;
    max-height:calc(100vh - 76px);
    overflow:auto;
    -webkit-overflow-scrolling:touch;
  }
  body.mobile-nav-open nav{
    display:grid;
  }
  nav a{
    display:flex;
    align-items:center;
    justify-content:center;
    text-align:center;
    border-radius:12px;
    padding:10px 8px;
    background:rgba(255,255,255,.13);
    font-weight:800;
  }
  main{
    padding:10px;
  }
  .print-toolbar{
    justify-content:stretch;
  }
  .print-toolbar button{
    width:100%;
    min-height:46px;
    border-radius:12px;
  }
  .card{
    border-radius:14px;
    padding:13px;
    margin-bottom:12px;
  }
  .grid,
  .project-detail-grid,
  .future-grid,
  .message-form,
  .polier-release-form{
    grid-template-columns:1fr!important;
  }
  label{
    width:100%;
    margin:4px 0;
  }
  input,select,textarea,button,.button-light,.button-small{
    width:100%;
  }
  .button-small,.button-light{
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .project-detail-title,
  .absence-calendar-titlebar,
  .short-calendar-titlebar{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  .project-detail-tools,
  .project-actions,
  .backup-actions,
  .backup-upload-form,
  .coord-actions,
  .year-switcher,
  .absence-status-filter{
    display:grid!important;
    grid-template-columns:1fr!important;
    width:100%;
  }
  .coord-input-wrap{
    min-width:0;
  }

  /* Urlaubsantrag mobil */
  .share-container.vacation-request-box,
  .vacation-request-box,
  .vacation-request-box-wide{
    width:auto!important;
    max-width:none!important;
    margin:8px!important;
    padding:18px!important;
    border-radius:18px!important;
  }
  .vacation-request-page{
    background:#eef3f8!important;
  }
  .vacation-request-box h2{
    font-size:28px!important;
    line-height:1.1;
  }
  .vacation-head-row{
    display:block!important;
  }
  .vacation-form-clean{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:14px!important;
    margin-top:16px!important;
  }
  .vacation-form-clean .note-field,
  .vacation-form-clean .form-actions,
  .vacation-qr-inline{
    grid-column:auto!important;
    grid-row:auto!important;
  }
  .vacation-form-clean input,
  .vacation-form-clean select,
  .vacation-form-clean textarea{
    min-height:48px!important;
    font-size:17px!important;
    border-radius:12px!important;
  }
  .vacation-form-clean textarea{
    min-height:105px!important;
  }
  .vacation-form-clean button[type="submit"]{
    min-height:52px!important;
    border-radius:13px!important;
    font-size:17px!important;
  }
  .vacation-qr-card{
    order:5;
    margin-top:4px;
    border-radius:16px!important;
  }
  .vacation-qr-card img{
    width:132px!important;
    height:132px!important;
  }
  .vacation-qr-card button,
  .vacation-share-options button{
    min-height:44px!important;
    width:100%!important;
    margin:4px 0!important;
    font-size:15px!important;
    border-radius:12px!important;
  }
  .vacation-share-options{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:6px!important;
  }
  .share-floating{
    top:auto!important;
    right:14px!important;
    bottom:14px!important;
  }
  .share-round-button{
    width:60px!important;
    height:60px!important;
  }
  .share-panel{
    position:fixed!important;
    left:10px!important;
    right:10px!important;
    bottom:84px!important;
    top:auto!important;
    width:auto!important;
    max-height:70vh!important;
    overflow:auto!important;
    border-radius:18px!important;
  }
  .share-panel::before{
    display:none!important;
  }
  .share-panel button{
    min-height:46px!important;
    text-align:center!important;
    font-size:16px!important;
  }

  /* Jahreskalender kurz mobil: horizontales Scrollen mit linker Info-Spalte */
  .short-calendar-page{
    margin:0!important;
    padding:10px!important;
    border-radius:14px!important;
    overflow-x:auto!important;
    overflow-y:visible!important;
    -webkit-overflow-scrolling:touch;
  }
  .short-calendar-titlebar h2{
    font-size:24px!important;
  }
  .short-calendar-titlebar p{
    font-size:13px!important;
  }
  .vacation-legend{
    min-width:0!important;
    width:100%!important;
    padding:10px!important;
  }
  .legend-row{
    flex-wrap:wrap!important;
    white-space:normal!important;
    gap:7px!important;
  }
  .short-calendar-layout{
    display:grid!important;
    grid-template-columns:155px calc(var(--week-count) * 33.28px)!important;
    width:max-content!important;
    min-width:100%!important;
    overflow:visible!important;
  }
  .short-left-panel{
    position:sticky!important;
    left:0!important;
    z-index:40!important;
    box-shadow:3px 0 8px rgba(15,23,42,.10);
  }
  .short-left-head{
    font-size:12px!important;
    padding:8px 7px!important;
    min-height:52px!important;
  }
  .short-crew-info{
    min-height:70px!important;
    padding:7px!important;
    font-size:9px!important;
  }
  .short-crew-info .crew-name{
    font-size:13px!important;
  }
  .crew-member-line,.crew-equipment-list{
    font-size:8px!important;
  }
  .short-timeline-head,
  .short-timeline-body{
    width:calc(var(--week-count) * 33.28px)!important;
    max-width:none!important;
  }
  .short-timeline-body{
    min-height:70px!important;
  }
  .short-month-cell.span-cell{
    font-size:10px!important;
    padding:5px 1px!important;
  }
  .short-kw-cell{
    font-size:8px!important;
    padding:3px 0!important;
  }
  .short-timeline-body > a.short-project-bar,
  .short-timeline-body > a.weather-project-bar,
  .short-project-bar.weather-project-bar{
    top:15px!important;
    height:39px!important;
    min-height:39px!important;
    border-radius:8px!important;
    padding:0 42px 0 7px!important;
  }
  .short-timeline-body > a.short-project-bar .short-project-title,
  .short-timeline-body > a.weather-project-bar .short-project-title{
    font-size:12px!important;
    line-height:17px!important;
    height:17px!important;
  }
  .short-timeline-body > a.short-project-bar .short-project-manager,
  .short-timeline-body > a.weather-project-bar .short-project-manager{
    font-size:8px!important;
    line-height:10px!important;
    height:10px!important;
  }
  .weather-mini-right{
    right:6px!important;
    font-size:10px!important;
  }
  .vacation-dot{
    top:34px!important;
  }
  .vacation-dot.small{width:14px!important;height:14px!important;}
  .vacation-dot.medium{width:20px!important;height:20px!important;}
  .vacation-dot.large{width:28px!important;height:28px!important;}
  .vacation-popover{
    position:fixed!important;
    left:10px!important;
    right:10px!important;
    top:auto!important;
    bottom:20px!important;
    transform:none!important;
    min-width:0!important;
    max-width:none!important;
    max-height:60vh!important;
    overflow:auto!important;
    z-index:2147483647!important;
    font-size:15px!important;
  }
  .vacation-popover::before,
  .vacation-popover::after{
    display:none!important;
  }
  .vacation-popover-row{
    grid-template-columns:1fr!important;
    gap:2px!important;
    border-top:1px solid #e5e7eb;
    padding:8px 0!important;
  }

  /* Detail-/Urlaubskalender mobil */
  .absence-year-calendar,
  .planner-detail{
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch;
  }
  .absence-year-calendar{
    grid-template-columns:150px minmax(1050px,1fr)!important;
  }
  .absence-left-head,
  .absence-employee-cell{
    position:sticky!important;
    left:0!important;
    z-index:30!important;
    box-shadow:3px 0 8px rgba(15,23,42,.08);
  }
}

@media (max-width:480px){
  header{
    grid-template-columns:1fr auto;
  }
  .notification-widget{
    grid-column:2;
    grid-row:1;
  }
  .mobile-nav-toggle{
    grid-column:1 / -1;
    width:100%;
  }
  nav{
    grid-template-columns:1fr;
    top:110px;
  }
  .share-container.vacation-request-box,
  .vacation-request-box,
  .vacation-request-box-wide{
    margin:6px!important;
    padding:14px!important;
  }
  .short-calendar-layout{
    grid-template-columns:145px calc(var(--week-count) * 33.28px)!important;
  }
  .short-left-head,
  .short-crew-info{
    padding-left:6px!important;
    padding-right:6px!important;
  }
}

@media (display-mode:standalone){
  header{
    padding-top:calc(14px + env(safe-area-inset-top));
  }
}

/* Light V1.0.22a: Krankmeldung rot markieren, doppelten Gelesen-Button entfernt */
.notification-item-sick{
  border-color:#ef4444!important;
  background:#fff1f2!important;
  box-shadow:inset 4px 0 0 #dc2626;
}
.notification-item-sick strong{
  color:#991b1b;
}
.notification-item-sick p{
  color:#7f1d1d;
  font-weight:700;
}
.notification-item-sick .notification-actions button{
  background:#dc2626;
  color:#fff;
}

/* V1.0.23 Direkter Geräteeinsatz */
.direct-equipment-bar{
  box-shadow:0 0 0 3px rgba(255,255,255,.95), 0 0 0 5px rgba(30,64,175,.55), 0 2px 5px rgba(0,0,0,.22);
}
.direct-equipment-bar .short-project-manager::before{
  content:"Direkt · ";
  font-weight:900;
}

/* Light V1.0.23a UI-Korrektur */
header h1{line-height:1.15}
nav a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  gap:2px;
  flex-direction:column;
  min-width:92px;
  font-weight:700;
  line-height:1.2;
}
nav a span{display:block;white-space:nowrap}
.coord-input-wrap{
  align-self:end;
}
.coord-actions{
  display:flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  gap:8px;
  align-items:center;
}
.coord-actions .button-small,
.coord-actions button.button-small{
  width:auto!important;
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
}
.coord-input-wrap .small{
  display:block;
  margin-top:4px;
  clear:both;
}
@media (min-width:901px){
  .coord-input-wrap{min-width:300px;}
  .coord-actions .button-small{min-width:max-content;}
}
@media (max-width:900px){
  nav a span{white-space:normal;}
  .coord-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
  }
  .coord-actions .button-small,
  .coord-actions button.button-small{
    width:100%!important;
  }
}

/* V1.0.26: breitere Mitarbeiter-Rollenauswahl */
.role-select,
select[name="role"] {
  min-width: 260px;
  width: 100%;
  max-width: 480px;
}

/* Benutzerverwaltung V1.0.27 */
.card table input[type=password]{max-width:180px;margin:2px;}
.card table select{min-width:150px;}

.warning-inline{display:inline-block;padding:4px 8px;border-radius:8px;background:#fff7ed;color:#9a3412;font-weight:700;}
.success{margin:10px 0;padding:10px 12px;border-radius:10px;background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0;}
.account-card{max-width:980px;}
.account-password-grid{grid-template-columns:1fr 1fr 1fr auto;}
@media (max-width:900px){.account-password-grid{grid-template-columns:1fr;}}


/* Light V1.0.27l: Handy-Optimierung */
@media (min-width:901px){
  .mobile-nav-toggle{display:none!important;}
}

@media (max-width:900px){
  html,body{
    width:100%;
    max-width:100%;
    overflow-x:hidden;
  }
  body{
    background:#eef3f8!important;
  }
  header{
    position:sticky!important;
    top:0!important;
    z-index:10000!important;
    display:grid!important;
    grid-template-columns:1fr auto auto!important;
    gap:8px!important;
    align-items:center!important;
    padding:12px 10px!important;
  }
  header h1{
    font-size:20px!important;
    line-height:1.15!important;
    word-break:break-word!important;
  }
  .mobile-nav-toggle{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:46px!important;
    padding:10px 14px!important;
    border-radius:12px!important;
    width:auto!important;
    font-weight:900!important;
  }
  .notification-widget{
    position:relative!important;
    justify-self:end!important;
  }
  .notification-bell{
    width:46px!important;
    min-width:46px!important;
    height:46px!important;
    padding:0!important;
    border-radius:13px!important;
  }
  .notification-panel{
    position:fixed!important;
    top:70px!important;
    left:8px!important;
    right:8px!important;
    width:auto!important;
    max-height:72vh!important;
    overflow:auto!important;
    z-index:100000!important;
  }
  nav{
    display:none!important;
    position:sticky!important;
    top:70px!important;
    z-index:9999!important;
    padding:10px!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    max-height:calc(100vh - 72px)!important;
    overflow:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  body.mobile-nav-open nav{
    display:grid!important;
  }
  nav a{
    min-width:0!important;
    width:100%!important;
    min-height:48px!important;
    padding:10px 8px!important;
    border-radius:12px!important;
    font-size:15px!important;
    line-height:1.15!important;
    text-align:center!important;
    white-space:normal!important;
  }
  nav a span{
    white-space:normal!important;
  }
  main{
    padding:10px!important;
    max-width:100vw!important;
    overflow-x:hidden!important;
  }
  .print-toolbar{
    margin-bottom:10px!important;
  }
  .print-toolbar button{
    width:100%!important;
    min-height:46px!important;
  }
  .card{
    width:100%!important;
    max-width:100%!important;
    margin:10px 0!important;
    padding:12px!important;
    border-radius:14px!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .card h2{
    font-size:22px!important;
    line-height:1.15!important;
    margin-top:4px!important;
  }
  .card h3{
    font-size:18px!important;
    line-height:1.2!important;
  }
  .hint,.small,.muted{
    line-height:1.35!important;
  }
  .grid,
  .account-password-grid,
  .project-detail-grid,
  .project-detail-grid.compact,
  .future-grid,
  .message-form,
  .polier-release-form,
  .backup-actions,
  .backup-upload-form,
  .year-switcher,
  .absence-status-filter{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    width:100%!important;
  }
  form.grid{
    align-items:stretch!important;
  }
  label{
    width:100%!important;
    margin:4px 0!important;
  }
  input,select,textarea,button,.button-light,.button-small{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    min-height:44px!important;
    font-size:16px!important;
  }
  textarea{
    min-height:88px!important;
  }
  button,.button-light,.button-small{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
    border-radius:10px!important;
    padding:10px 12px!important;
  }
  .button-small{
    font-size:15px!important;
  }
  .table-wrap,
  .backup-table-wrap,
  .mobile-table-scroll,
  .planner,
  .planner-detail,
  .year-calendar,
  .absence-year-calendar,
  .short-calendar-page{
    width:100%!important;
    max-width:100%!important;
    overflow-x:auto!important;
    -webkit-overflow-scrolling:touch!important;
  }
  .card>table,
  .table-wrap table,
  .data-table,
  .backup-table{
    min-width:760px!important;
    width:max-content!important;
  }
  th,td{
    padding:8px 7px!important;
    font-size:14px!important;
  }
  td form{
    margin:4px 0!important;
  }
  td form[style*="display:inline"]{
    display:inline-grid!important;
    grid-template-columns:1fr!important;
    gap:6px!important;
    min-width:130px!important;
  }
  .card table input[type=password],
  .card table select{
    max-width:none!important;
    min-width:170px!important;
    margin:2px 0!important;
  }
  .project-detail-title,
  .absence-calendar-titlebar,
  .short-calendar-titlebar,
  .project-detail-tools,
  .project-actions,
  .share-modal-actions{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    align-items:stretch!important;
    width:100%!important;
  }
  .project-color-chip{
    width:100%!important;
    height:30px!important;
  }
  .project-map-box{
    max-width:100%!important;
  }
  .project-map-box iframe{
    height:220px!important;
  }
  .coord-input-wrap{
    min-width:0!important;
    width:100%!important;
  }
  .coord-actions{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:8px!important;
    width:100%!important;
  }
  .coord-actions .button-small,
  .coord-actions button.button-small{
    width:100%!important;
  }
  .short-calendar-page{
    padding:10px!important;
    border-radius:12px!important;
  }
  .short-calendar-titlebar h2{
    font-size:24px!important;
  }
  .short-calendar-titlebar p{
    font-size:14px!important;
  }
  .vacation-legend{
    min-width:0!important;
    width:100%!important;
  }
  .short-calendar-layout{
    display:grid!important;
    grid-template-columns:165px calc(var(--week-count, 53) * 33.28px)!important;
    width:max-content!important;
    min-width:100%!important;
    overflow:visible!important;
  }
  .short-left-panel{
    position:sticky!important;
    left:0!important;
    z-index:50!important;
    box-shadow:4px 0 12px rgba(15,23,42,.10)!important;
  }
  .short-timeline-head,
  .short-timeline-body{
    flex:0 0 auto!important;
  }
  .vacation-popover{
    min-width:280px!important;
    max-width:calc(100vw - 28px)!important;
    font-size:14px!important;
  }
  .vacation-popover-row{
    grid-template-columns:1fr!important;
    gap:3px!important;
  }
  .absence-year-calendar{
    grid-template-columns:155px minmax(1050px,1fr)!important;
    overflow:auto!important;
  }
  .absence-left-head,
  .absence-employee-cell{
    position:sticky!important;
    left:0!important;
    z-index:40!important;
    box-shadow:4px 0 12px rgba(15,23,42,.10)!important;
  }
  .absence-timeline-head,
  .absence-timeline-body{
    min-width:1050px!important;
  }
  .share-container.vacation-request-box,
  .vacation-request-box,
  .vacation-request-box-wide{
    width:auto!important;
    max-width:none!important;
    margin:8px!important;
    padding:16px!important;
    border-radius:18px!important;
  }
  .vacation-request-box h2{
    font-size:26px!important;
  }
  .vacation-form-clean{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:12px!important;
  }
  .vacation-qr-card{
    width:100%!important;
    max-width:100%!important;
  }
  .vacation-qr-card img,
  .share-qr-box img,
  .detail-share-qr img{
    width:180px!important;
    height:180px!important;
    max-width:100%!important;
  }
  .share-modal-box,
  .detail-share-panel,
  .share-panel{
    width:calc(100vw - 24px)!important;
    max-width:calc(100vw - 24px)!important;
    max-height:78vh!important;
    overflow:auto!important;
  }
  .detail-share-panel,
  .share-panel{
    right:0!important;
  }
}

@media (max-width:520px){
  header{
    grid-template-columns:1fr auto!important;
  }
  header h1{
    font-size:18px!important;
  }
  .mobile-nav-toggle{
    grid-column:1 / -1!important;
    width:100%!important;
  }
  .notification-widget{
    grid-column:2!important;
    grid-row:1!important;
  }
  nav{
    grid-template-columns:1fr!important;
    top:106px!important;
    max-height:calc(100vh - 108px)!important;
  }
  .notification-panel{
    top:106px!important;
  }
  main{
    padding:8px!important;
  }
  .card{
    padding:10px!important;
  }
  .card h2{
    font-size:20px!important;
  }
  .coord-actions{
    grid-template-columns:1fr!important;
  }
  .short-calendar-layout{
    grid-template-columns:145px calc(var(--week-count, 53) * 33.28px)!important;
  }
  .short-left-head,
  .short-crew-info{
    padding-left:6px!important;
    padding-right:6px!important;
  }
  .absence-year-calendar{
    grid-template-columns:135px minmax(1050px,1fr)!important;
  }
  th,td{
    font-size:13px!important;
  }
}
