/* G8 2.5.12: 2 consecutive stylesheets, source order preserved. */

/* BEGIN schichtkalender/css/flow-calendar-g3.css */
/* SETO 2.5.2 G3 – visual layer only. Domain, entries, notes and payroll untouched.
   Loaded after legacy app.css, shared design tokens supply light/dark semantics. */
:root{--flow-g3-soft-shadow:0 8px 24px rgba(15,76,92,.055)}
html body[data-seto-v2-area="kalender"],html body:has(.flow-calendar-layout),html body:has(.flow-year-tabs){background:var(--flow-bg);color:var(--flow-ink)}
body:has(.flow-calendar-layout) .cal-wrap,
body:has(.flow-year-tabs)>main.container{max-width:1220px;width:calc(100% - 32px);margin:0 auto;padding:18px 0 40px}
body:has(.flow-calendar-layout) .calendar-section-nav,
body:has(.flow-year-tabs) .calendar-section-nav,
.flow-print-hub .calendar-section-nav{display:flex;gap:5px;justify-content:center;align-items:center;flex-wrap:wrap;border:0;background:transparent;padding:0 0 18px;margin:0 auto 4px;max-width:100%;}
body:has(.flow-calendar-layout) .calendar-section-link,
body:has(.flow-year-tabs) .calendar-section-link,
.flow-print-hub .calendar-section-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border:0;border-radius:12px;color:var(--flow-ink-2);font-size:.92rem;font-weight:700;background:transparent;text-decoration:none}
body:has(.flow-calendar-layout) .calendar-section-link.active,
body:has(.flow-year-tabs) .calendar-section-link.active,
.flow-print-hub .calendar-section-link.active{background:var(--flow-petrol);color:var(--flow-on-petrol);box-shadow:none}
body:has(.flow-calendar-layout) .cal-top.flow-cal-period{display:grid;grid-template-columns:auto minmax(170px,1fr) auto;align-items:center;gap:14px;background:transparent;border:0;box-shadow:none;margin:0 0 15px;padding:8px 0}
.flow-cal-period .cal-nav{display:flex;gap:8px;align-items:center}
.flow-cal-period .cal-nav .btn{background:var(--flow-surface);border:1px solid var(--flow-line-strong);border-radius:10px;color:var(--flow-ink);font-weight:700;min-height:44px;box-shadow:none}
.flow-cal-period .cal-nav .btn.icon{width:44px;font-size:24px}
.flow-cal-period .cal-top-label{font-size:clamp(1.2rem,2vw,1.7rem);font-weight:780;color:var(--flow-ink);text-align:left;order:unset}
.flow-cal-view{display:flex;gap:4px;justify-self:end;background:var(--flow-surface-2);padding:4px;border-radius:11px;border:1px solid var(--flow-line)}
.flow-cal-view-button{min-height:44px;border:0;border-radius:8px;background:transparent;color:var(--flow-ink-2);padding:9px 13px;font:inherit;font-weight:700;cursor:pointer}
.flow-cal-view-button.active{background:var(--flow-petrol);color:var(--flow-on-petrol)}
.flow-calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 332px;align-items:start;gap:22px}
.flow-calendar-primary{min-width:0}
.flow-calendar-single #multiCalendar{display:grid;grid-template-columns:minmax(0,1fr);overflow:visible;gap:0;scroll-snap-type:none}
.flow-calendar-triple .flow-calendar-layout{grid-template-columns:minmax(0,1fr)}
.flow-calendar-triple #multiCalendar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;overflow:visible;scroll-snap-type:none}
.flow-calendar-triple .flow-calendar-sidebar{display:grid;grid-template-columns:1fr;gap:12px;max-width:none}
.flow-calendar-triple #flowCalendarSidebarMonth{display:none}
.flow-calendar-primary .month-block{width:100%;min-width:0;max-width:none;background:var(--flow-surface);border:1px solid var(--flow-line);border-radius:14px;box-shadow:var(--flow-g3-soft-shadow);overflow:hidden}
.flow-calendar-single #multiCalendar .month-title{display:none}
.flow-calendar-triple #multiCalendar .month-title{background:transparent;border-bottom:1px solid var(--flow-line);padding:12px;color:var(--flow-ink);font-size:1.04rem}
.flow-calendar-primary .weekday-header{background:transparent;border:0;gap:4px;padding:9px 10px 7px}
.flow-calendar-primary .weekday-header>div{font-size:.81rem;font-weight:600;color:var(--flow-ink-2);padding:3px 0}
.flow-calendar-primary .calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;padding:0 10px 12px}
.flow-calendar-primary .day{width:100%;min-width:0;aspect-ratio:auto;min-height:78px;align-items:flex-start;text-align:left;gap:3px;padding:9px 7px;border:1px solid var(--flow-line);border-radius:10px;background:var(--flow-surface);color:var(--flow-ink);overflow:hidden;box-shadow:none}
.flow-calendar-primary .day:hover{background:var(--flow-surface-2);border-color:var(--flow-line-strong)}
.flow-calendar-primary .day.other-month{background:var(--flow-surface-2);opacity:.32;border-style:dashed}
.flow-calendar-primary .day.selected{border:2px solid var(--flow-magenta)!important;outline:none!important;background:var(--flow-surface)!important;padding:8px 6px;box-shadow:0 0 0 1px var(--flow-magenta)}
.flow-calendar-primary .day.today:not(.selected){border-color:var(--flow-petrol);box-shadow:inset 0 0 0 1px var(--flow-petrol);background:var(--flow-surface)}
.flow-calendar-primary .day-num{font-size:.98rem;font-weight:750;color:var(--flow-ink);line-height:1.25;margin:0}
.flow-calendar-primary .day.today .day-num{background:var(--flow-petrol);color:var(--flow-on-petrol);border-radius:999px;display:inline-grid;place-items:center;width:24px;height:24px;padding:0}
.flow-calendar-primary .day.holiday .day-num,.flow-calendar-primary .day.sunday .day-num{color:var(--flow-ink)}
.flow-calendar-primary .holiday-badge{position:static;font-size:.57rem;border:0;background:transparent;color:var(--flow-ink-2);padding:0;text-overflow:ellipsis;max-width:100%}
.flow-calendar-primary .shift-info,.flow-calendar-primary .entry-badge,.flow-calendar-primary .entry-st{display:inline-flex;min-height:21px;align-items:center;justify-content:center;border-radius:5px;padding:3px 6px;margin:0;line-height:1.15;font-size:.68rem;font-weight:760;width:auto;max-width:100%;color:var(--flow-ink-2);background:transparent;white-space:nowrap}
.flow-calendar-primary .day.shift-TS .shift-info{color:var(--flow-cal-ts-fg);background:var(--flow-cal-ts-bg)}
.flow-calendar-primary .day.shift-NS .shift-info{color:var(--flow-cal-ns-fg);background:var(--flow-cal-ns-bg)}
.flow-calendar-primary .day .entry-badge,.flow-calendar-primary .day .entry-st{background:var(--flow-surface-2);color:var(--flow-ink)}
.flow-calendar-primary .day .entry-badge:not(:empty),.flow-calendar-primary .day .entry-st:not(:empty){font-size:.7rem}
.flow-calendar-primary .day:has(.entry-badge) .entry-badge,.flow-calendar-primary .day:has(.entry-st) .entry-st{box-shadow:none}
.flow-calendar-primary .day:has(.entry-badge) .entry-badge,.flow-calendar-primary .day:has(.entry-st) .entry-st{border:0}
.flow-calendar-primary .day:has(.entry-badge) .entry-badge,.flow-calendar-primary .day:has(.entry-st) .entry-st{color:var(--flow-ink)}
.flow-calendar-primary .day:has(.entry-badge) .entry-badge,.flow-calendar-primary .day:has(.entry-st) .entry-st{align-self:flex-start}
/* Attr selectors don't depend on JS-generated class names and preserve badge text. */
.flow-calendar-primary .day:has(.entry-badge) .entry-badge,.flow-calendar-primary .day:has(.entry-st) .entry-st{--flow-entry-bg:var(--flow-surface-2);--flow-entry-fg:var(--flow-ink)}
.flow-calendar-primary .day .entry-badge,.flow-calendar-primary .day .entry-st{background:var(--flow-entry-bg);color:var(--flow-entry-fg)}
.flow-calendar-primary .day .entry-badge:not(.unused),.flow-calendar-primary .day .entry-st{border-radius:5px}
.flow-calendar-primary .day .vacation-bar{height:3px;left:4px;right:4px;top:0;bottom:auto;border-radius:3px}
.flow-calendar-primary .day.block{background:color-mix(in srgb,var(--flow-surface-2) 65%,var(--flow-surface));border-top-style:dashed;border-top-color:var(--flow-teal)}
.flow-calendar-primary .day.block .day-num,.flow-calendar-primary .day.block .shift-info{color:var(--flow-ink)}
.flow-calendar-primary .day.block.shift-TS .shift-info{color:var(--flow-cal-ts-fg)}
.flow-calendar-primary .day.block.shift-NS .shift-info{color:var(--flow-cal-ns-fg)}
.flow-calendar-primary .day.block-half-after-ns{background:var(--flow-surface-2)}
.flow-calendar-primary .day.contractual-off .shift-info{white-space:normal;font-size:.56rem}
.flow-calendar-primary .month-footer{padding:15px;border-top:1px solid var(--flow-line);background:var(--flow-surface)}
.flow-calendar-triple .flow-calendar-primary .day{min-height:54px;padding:5px 3px;gap:2px;border-radius:7px}
.flow-calendar-triple .flow-calendar-primary .calendar-grid{gap:3px;padding:0 6px 8px}
.flow-calendar-triple .flow-calendar-primary .shift-info,.flow-calendar-triple .flow-calendar-primary .entry-badge,.flow-calendar-triple .flow-calendar-primary .entry-st{font-size:.58rem;padding:2px 3px;min-height:17px}
.flow-calendar-triple .flow-calendar-primary .month-footer{padding:10px 12px}
.flow-cal-below{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 1px}
.flow-calendar-legend{display:flex;gap:9px 12px;align-items:center;flex-wrap:wrap;max-width:100%}
.flow-calendar-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:.77rem;color:var(--flow-ink-2);white-space:nowrap}
.flow-calendar-legend .flow-status-chip{min-height:21px;padding:2px 5px;font-size:.66rem}
.flow-ferientop{width:16px;border-top:3px solid #D7AB15}
.flow-cal-below .cal-options{display:flex;gap:13px;justify-content:flex-end;align-items:center;flex-wrap:wrap;min-width:0}
.flow-cal-below .cal-toggle{font-size:.8rem;color:var(--flow-ink-2);background:transparent;border:0;padding:0 2px;min-height:44px;gap:8px}
.flow-cal-below .cal-toggle small{display:none}
.flow-calendar-sidebar{min-width:0;display:grid;gap:14px}
.flow-calendar-sidebar>#flowCalendarSidebarMonth,.flow-calendar-sidebar>#calendarAnnotationsMonth{min-width:0}
.flow-calendar-sidebar .flow-aside-heading{font-size:1.05rem;line-height:1.25;margin:0 0 9px;font-weight:750;color:var(--flow-ink)}
.flow-calendar-sidebar .flow-aside-month-footer{padding:0;border:0;background:transparent}
.flow-calendar-sidebar #flowCalendarSidebarMonth{background:var(--flow-surface);border:1px solid var(--flow-line);border-radius:14px;box-shadow:var(--flow-g3-soft-shadow);padding:18px 16px}
.flow-calendar-sidebar .konto-details{gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 12px}
.flow-calendar-sidebar .k-box{text-align:left;min-width:0}
.flow-calendar-sidebar .k-box .lbl{font-size:.77rem;text-transform:none;font-weight:500;color:var(--flow-ink-2);letter-spacing:0}
.flow-calendar-sidebar .k-box .val{font-size:1.3rem;color:var(--flow-ink);font-weight:770;white-space:nowrap}
.flow-calendar-sidebar .fsq-wrap{height:7px;background:var(--flow-surface-2);border:1px solid var(--flow-line);border-radius:99px;overflow:hidden}
.flow-calendar-sidebar .fsq-bar{height:100%;background:var(--flow-teal)}
.flow-calendar-sidebar .fsq-label{font-size:.78rem;text-align:left;line-height:1.5;color:var(--flow-ink-2)}
.flow-calendar-sidebar .month-note-wrap{margin:16px 0 0;padding:16px 0 0;border-top:1px solid var(--flow-line)}
.flow-calendar-sidebar .month-note-label{text-transform:none;letter-spacing:0;font-size:1rem;font-weight:750;margin:0 0 9px;color:var(--flow-ink)}
.flow-calendar-sidebar .month-note-row{display:grid;gap:9px}
.flow-calendar-sidebar .month-note-input{font-size:.9rem;min-height:76px;max-height:180px;border:1px solid var(--flow-line-strong);border-radius:9px;padding:9px;color:var(--flow-ink);background:var(--flow-surface)}
.flow-calendar-sidebar .month-note-save{justify-self:end;min-width:90px;background:var(--flow-petrol);color:var(--flow-on-petrol);border-color:var(--flow-petrol)}
.flow-calendar-sidebar .calendar-annotations-card{margin:0;border:1px solid var(--flow-line);box-shadow:var(--flow-g3-soft-shadow);background:var(--flow-surface);border-radius:14px}
.flow-calendar-sidebar .calendar-annotations-card .calendar-annotation-list{grid-template-columns:1fr}
.flow-calendar-sidebar .calendar-annotation-item{grid-template-columns:minmax(0,1fr) auto;gap:6px}
.flow-calendar-sidebar .calendar-annotation-text{grid-column:1/-1}
.flow-calendar-sidebar .calendar-annotation-fields{grid-template-columns:1fr}
body.flow-calendar-single #editor:not(.hidden){position:static;display:grid;gap:10px;border:1px solid var(--flow-magenta);border-radius:14px;padding:16px;background:var(--flow-surface);color:var(--flow-ink);box-shadow:var(--flow-g3-soft-shadow);width:100%;max-width:100%;margin:0}
body.flow-calendar-single #editor .entry-buttons{display:grid;gap:8px}
body.flow-calendar-single #editor .entry-button-row-primary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
body.flow-calendar-single #editor .entry-button-row-secondary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
body #flowOtherCodes[hidden]{display:none!important}
body.flow-calendar-single #editor .btn-type{display:block;width:100%;max-width:none;min-width:0;height:auto;min-height:44px;border-radius:9px;font-weight:700;background:var(--flow-surface);color:var(--flow-ink);border:1px solid var(--flow-line-strong)}
body.flow-calendar-single #editor .btn-type:disabled{opacity:.5;cursor:not-allowed}
body.flow-calendar-single #editor .btn-type[data-type="U"]{background:var(--flow-cal-u-bg);color:var(--flow-cal-u-fg)}
body.flow-calendar-single #editor .btn-type[data-type="FS"]{background:var(--flow-cal-fs-bg);color:var(--flow-cal-fs-fg)}
body.flow-calendar-single #editor .btn-type[data-type="KR"]{background:var(--flow-cal-kr-bg);color:var(--flow-cal-kr-fg)}
body.flow-calendar-single #editor .btn-type[data-type="ST"]{background:var(--flow-cal-st-bg);color:var(--flow-cal-st-fg)}
body #editor .flow-more-codes{width:100%;background:var(--flow-surface-2);border:1px solid var(--flow-line);color:var(--flow-ink);border-radius:9px;min-height:44px}
body #editor .flow-calendar-editor-hint{font-size:.73rem;color:var(--flow-ink-2);line-height:1.4;margin:0}
body.flow-calendar-single #editor .editor-info{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}
body.flow-calendar-single #editor .sel-label{font-size:1rem;font-weight:760;color:var(--flow-ink)}
body.flow-calendar-single #editor .sel-sub{font-size:.78rem;color:var(--flow-ink-2);line-height:1.45;margin-top:5px}
body.flow-calendar-single #editor #btnClear{margin-left:auto;color:var(--flow-petrol);border:0;background:transparent;min-height:38px}
body.flow-calendar-single .cal-wrap:has(#editor:not(.hidden)){padding-bottom:40px}
body.flow-calendar-triple #editor:not(.hidden){position:fixed;z-index:80;left:50%;right:auto;bottom:12px;transform:translateX(-50%);width:min(650px,calc(100vw - 24px));background:var(--flow-surface);color:var(--flow-ink);border:1px solid var(--flow-magenta);border-radius:14px;box-shadow:var(--flow-shadow-float);padding:14px}
body.flow-calendar-triple #editor .entry-button-row .btn-type{min-height:44px}
/* Grouped annual values – replaces rigid fifteen-tile slab, without changing amounts. */
body:has(.flow-year-tabs) #kpiRow.flow-year-kpi-groups{display:grid;grid-template-columns:1fr;gap:14px;padding:12px 0 0}
.flow-year-kpi-group{padding:14px;border:1px solid var(--flow-line);border-radius:12px;background:var(--flow-surface)}
.flow-year-kpi-group h2,.flow-year-note-group h2{font-size:1.05rem;margin:0 0 10px;color:var(--flow-ink);font-weight:760}
.flow-year-kpi-items{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.flow-year-kpi-group .kpi{min-width:0;padding:7px 8px;border:0;border-left:1px solid var(--flow-line);border-radius:0;background:transparent;box-shadow:none}
.flow-year-kpi-group .k-lbl{text-transform:none;letter-spacing:0;font-size:.82rem;font-weight:550;color:var(--flow-ink-2)}
.flow-year-kpi-group .k-val{font-size:clamp(1.05rem,2vw,1.55rem);font-weight:770;color:var(--flow-ink)}
.flow-year-kpi-group .k-sub{font-size:.7rem;line-height:1.35;color:var(--flow-ink-2)}
.flow-year-note-group{border:1px solid var(--flow-line);border-radius:12px;background:var(--flow-surface-2);padding:12px 14px}
.flow-year-note-group .kpi{padding:8px;border:0;background:transparent}
.flow-year-note-group .k-val{font-size:1.1rem}
.flow-year-tabs{display:flex;flex-wrap:wrap;gap:3px;align-items:center;margin:18px 0 10px;padding:0 0 5px;border-bottom:1px solid var(--flow-line)}
.flow-year-tabs .year-detail-tab{border:0;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;padding:11px 13px;min-height:44px;background:transparent;color:var(--flow-ink-2);font-weight:710}
.flow-year-tabs .year-detail-tab.active{color:var(--flow-petrol);background:var(--flow-surface);border-color:var(--flow-petrol)}
.flow-year-basis{display:flex;justify-content:flex-end;margin:0 0 10px}
.flow-year-basis .btn{color:var(--flow-ink-2);border:1px solid var(--flow-line);background:var(--flow-surface)}
body:has(.flow-year-tabs) .year-plan-quick-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;align-items:center;max-width:560px;margin:10px 0 16px;padding:5px;border:1px solid var(--flow-line);border-radius:12px;background:var(--flow-surface)}
body:has(.flow-year-tabs) .year-plan-quick-link{border:0;border-radius:9px;min-height:40px;background:transparent;color:var(--flow-ink-2);font-weight:710}
body:has(.flow-year-tabs) .year-plan-quick-link.active{background:var(--flow-petrol);color:var(--flow-on-petrol)}
body:has(.flow-year-tabs) .year-plan-quarter{padding:10px 0 18px;border-bottom:1px solid var(--flow-line)}
body:has(.flow-year-tabs) .year-plan-quarter-notes{background:var(--flow-surface);border-color:var(--flow-line)}
body:has(.flow-year-tabs) .year-plan-month{border:1px solid var(--flow-line);box-shadow:none}
body:has(.flow-year-tabs) .year-plan-month-title{background:var(--flow-surface);color:var(--flow-ink);font-size:.84rem}
body:has(.flow-year-tabs) .year-plan-day.selected{outline:2px solid var(--flow-magenta)!important;outline-offset:-2px}
body:has(.flow-year-tabs) .year-table{min-width:0}
.flow-print-hub{color:var(--flow-ink);background:var(--flow-bg);min-height:100vh;font-family:var(--flow-font)}
.flow-print-hub-main{max-width:980px;width:calc(100% - 32px);margin:30px auto;padding-bottom:60px}
.flow-print-hub h1{font-size:clamp(1.5rem,3vw,2.2rem);margin:0 0 9px}
.flow-print-hub p{color:var(--flow-ink-2);line-height:1.5}
.flow-print-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:28px 0}
.flow-print-card{display:flex;flex-direction:column;gap:12px;min-width:0;padding:22px;border:1px solid var(--flow-line);border-radius:17px;background:var(--flow-surface);box-shadow:var(--flow-g3-soft-shadow)}
.flow-print-card h2{font-size:1.14rem;margin:0}
.flow-print-card p{font-size:.87rem;flex:1}
.flow-print-card a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;background:var(--flow-petrol);border-radius:9px;color:var(--flow-on-petrol);font-weight:740;text-decoration:none;padding:11px}
.flow-print-card.current{border:2px solid var(--flow-magenta)}
@media(max-width:1100px){.flow-calendar-layout{grid-template-columns:minmax(0,1fr) 290px;gap:13px}.flow-calendar-triple #multiCalendar{grid-template-columns:repeat(2,minmax(0,1fr))}.flow-year-kpi-items{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:850px){
 body:has(.flow-calendar-layout) .cal-top.flow-cal-period{grid-template-columns:auto 1fr;gap:9px}
 .flow-cal-period .cal-top-label{grid-column:1/-1;grid-row:1;order:0}
 .flow-cal-period .cal-nav{grid-column:1;grid-row:2}
 .flow-cal-period .flow-cal-view{grid-column:2;grid-row:2;justify-self:end}
 .flow-calendar-layout{grid-template-columns:minmax(0,1fr)}
 .flow-calendar-single #multiCalendar{display:grid;grid-template-columns:minmax(0,1fr)}
 .flow-calendar-sidebar{grid-template-columns:1fr}
 .flow-calendar-triple #multiCalendar{grid-template-columns:repeat(2,minmax(0,1fr))}
 .flow-year-kpi-items{grid-template-columns:repeat(3,minmax(0,1fr))}
 .flow-print-options{grid-template-columns:1fr}
}
@media(max-width:600px){
 body:has(.flow-calendar-layout) .cal-wrap,body:has(.flow-year-tabs)>main.container{width:calc(100% - 18px);padding-top:8px}
 body:has(.flow-calendar-layout) .calendar-section-nav,body:has(.flow-year-tabs) .calendar-section-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2px}
 body:has(.flow-calendar-layout) .calendar-section-link,body:has(.flow-year-tabs) .calendar-section-link{min-width:0;padding:9px 2px;font-size:.68rem;white-space:normal;text-align:center;line-height:1.2}
 body:has(.flow-calendar-layout) .cal-top.flow-cal-period{grid-template-columns:1fr auto;gap:9px}
 .flow-cal-period .cal-top-label{font-size:1.35rem;grid-column:1/-1}
 .flow-cal-period .cal-nav{gap:5px}
 .flow-cal-period .cal-nav .btn.icon{width:44px}
 .flow-cal-view-button{min-height:44px;padding:6px 8px;font-size:.77rem}
 .flow-calendar-triple #multiCalendar{grid-template-columns:minmax(0,1fr)}
 .flow-calendar-primary .weekday-header{gap:2px;padding:5px 4px}
 .flow-calendar-primary .calendar-grid{gap:3px;padding:0 4px 7px}
 .flow-calendar-primary .day{min-height:57px;padding:5px 3px;gap:2px;border-radius:7px;align-items:flex-start}
 .flow-calendar-primary .day.selected{padding:4px 2px}
 .flow-calendar-primary .day-num{font-size:.85rem}
 .flow-calendar-primary .day.today .day-num{width:20px;height:20px}
 .flow-calendar-primary .shift-info,.flow-calendar-primary .entry-badge,.flow-calendar-primary .entry-st{font-size:.58rem;min-height:16px;padding:2px 3px}
 .flow-calendar-primary .day .holiday-badge{font-size:.5rem}
 .flow-calendar-primary .day.contractual-off .shift-info{font-size:.43rem}
 .flow-cal-below{display:grid;gap:5px;padding:11px 2px}
 .flow-cal-below .cal-options{justify-content:flex-start}
 /* Bottom sheet sits above SETO bottom navigation; focusable controls remain 44px. */
 body.flow-calendar-single #editor:not(.hidden),body.flow-calendar-triple #editor:not(.hidden){position:fixed;top:auto;bottom:var(--seto-calendar-nav-total-h,var(--nav-h,64px));left:0;right:0;transform:none;max-height:70dvh;overflow-y:auto;width:100%;margin:0;border-radius:19px 19px 0 0;border:1px solid var(--flow-magenta);padding:15px 12px 12px;box-shadow:0 -12px 34px rgba(15,46,58,.17);z-index:75}
 body.flow-calendar-single .cal-wrap:has(#editor:not(.hidden)),body.flow-calendar-triple .cal-wrap:has(#editor:not(.hidden)){padding-bottom:225px}
 body.flow-calendar-single #editor .entry-button-row-primary,body.flow-calendar-single #editor .entry-button-row-secondary{grid-template-columns:repeat(2,minmax(0,1fr))}
 .flow-year-kpi-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
 .flow-year-kpi-group{padding:12px 8px}
 .flow-year-tabs{overflow-x:auto;flex-wrap:nowrap;scroll-snap-type:x proximity}
 .flow-year-tabs .year-detail-tab{white-space:nowrap;scroll-snap-align:start}
 body:has(.flow-year-tabs) .year-plan-quick-nav{position:sticky;top:calc(var(--header-h,56px) + 4px);z-index:20;max-width:none}
 body:has(.flow-year-tabs) .year-plan-quarter-months{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.flow-calendar-primary .day{transition:none}}

/* Shared chip palette for both monthly and annual plan: text is never color-only. */
.flow-calendar-primary .day [data-code="TS"],body:has(.flow-year-tabs) .year-plan-day [data-code="TS"]{background:var(--flow-cal-ts-bg);color:var(--flow-cal-ts-fg)}
.flow-calendar-primary .day [data-code="NS"],body:has(.flow-year-tabs) .year-plan-day [data-code="NS"]{background:var(--flow-cal-ns-bg);color:var(--flow-cal-ns-fg)}
.flow-calendar-primary .day [data-code="U"],body:has(.flow-year-tabs) .year-plan-day [data-code="U"]{background:var(--flow-cal-u-bg);color:var(--flow-cal-u-fg)}
.flow-calendar-primary .day [data-code="FS"],body:has(.flow-year-tabs) .year-plan-day [data-code="FS"]{background:var(--flow-cal-fs-bg);color:var(--flow-cal-fs-fg)}
.flow-calendar-primary .day [data-code="KR"],body:has(.flow-year-tabs) .year-plan-day [data-code="KR"]{background:var(--flow-cal-kr-bg);color:var(--flow-cal-kr-fg)}
.flow-calendar-primary .day [data-code="ST"],body:has(.flow-year-tabs) .year-plan-day [data-code="ST"]{background:var(--flow-cal-st-bg);color:var(--flow-cal-st-fg)}
.flow-calendar-primary .day [data-code="AFZ"],body:has(.flow-year-tabs) .year-plan-day [data-code="AFZ"]{background:var(--flow-cal-afz-bg);color:var(--flow-cal-afz-fg)}
.flow-calendar-primary .day [data-code="ZT"],body:has(.flow-year-tabs) .year-plan-day [data-code="ZT"]{background:var(--flow-cal-zt-bg);color:var(--flow-cal-zt-fg)}
.flow-calendar-primary .day [data-code="SU"],body:has(.flow-year-tabs) .year-plan-day [data-code="SU"]{background:var(--flow-cal-su-bg);color:var(--flow-cal-su-fg)}
.flow-calendar-primary .day [data-code="BU"],body:has(.flow-year-tabs) .year-plan-day [data-code="BU"]{background:var(--flow-cal-bu-bg);color:var(--flow-cal-bu-fg)}
.flow-calendar-primary .day [data-code="GT"],body:has(.flow-year-tabs) .year-plan-day [data-code="GT"]{background:var(--flow-cal-gt-bg);color:var(--flow-cal-gt-fg)}

.flow-year-answers{font-size:1.08rem;line-height:1.5;font-weight:650;color:var(--flow-ink);margin:10px 0 6px}
.flow-year-rowcards{display:none}
@media(max-width:600px){
 body:has(.flow-year-tabs) #yearTable{display:none}
 .flow-year-rowcards{display:grid;gap:9px;padding:12px}
 .flow-year-rowcard{min-width:0;padding:13px 14px;background:var(--flow-surface);border:1px solid var(--flow-line);border-radius:12px;color:var(--flow-ink)}
 .flow-year-rowcard h3{font-size:1rem;margin:0 0 9px}
 .flow-year-rowcard dl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin:0}
 .flow-year-rowcard dt{font-size:.79rem;color:var(--flow-ink-2)}
 .flow-year-rowcard dd{font-size:.85rem;font-weight:700;margin:0;text-align:right;color:var(--flow-ink)}
 .flow-year-rowcard details{margin-top:12px;border-top:1px solid var(--flow-line);padding-top:10px}
 .flow-year-rowcard summary{cursor:pointer;color:var(--flow-petrol);font-weight:720}
 .flow-year-rowcard details dl{margin-top:10px}
}
@media print{.flow-year-rowcards{display:none!important}body:has(.flow-year-tabs) #yearTable{display:table!important}}

/* END schichtkalender/css/flow-calendar-g3.css */

/* BEGIN schichtkalender/css/free-blocks-flow-patch.css */
/* SETO Flow – dezente, aber erkennbare Freizeitbloecke (G2/G3 Visual-Fix).
   Nur Darstellung: Die Ermittlung von freien Bloecken bleibt unveraendert.
   Mint unterscheidet sich von Urlaub (U), FS und den TS/NS-Status-Chips.
   Der markierte Beginn nach einer gearbeiteten NS bleibt exakt halb gefuellt. */
:root {
  --seto-free-block-fill: #D2EDE1;
  --seto-free-block-hover: #C2E5D7;
  --seto-free-block-edge: #77B79F;
  --seto-free-block-divider: #408A73;
}
:root[data-theme="dark"] {
  --seto-free-block-fill: #204D40;
  --seto-free-block-hover: #296251;
  --seto-free-block-edge: #4D947F;
  --seto-free-block-divider: #78BEA5;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]):not([data-theme="dark"]) {
    --seto-free-block-fill: #204D40;
    --seto-free-block-hover: #296251;
    --seto-free-block-edge: #4D947F;
    --seto-free-block-divider: #78BEA5;
  }
}
/* Monatskalender + Jahresplaner: vorhandene Markierung .block nutzen. */
.calendar-grid .day.block:not(.block-half-after-ns):not(.contractual-block),
#yearPlanGrid .day.block:not(.block-half-after-ns):not(.contractual-block) {
  background: var(--seto-free-block-fill);
  border-color: var(--seto-free-block-edge);
}
.calendar-grid .day.block:not(.block-half-after-ns):not(.contractual-block):hover,
#yearPlanGrid .day.block:not(.block-half-after-ns):not(.contractual-block):hover {
  background: var(--seto-free-block-hover);
}
/* Halbtag nach NS: oberer Teil neutral, unterer Teil dezentes Mint. */
.calendar-grid .day.block.block-half-after-ns,
#yearPlanGrid .day.block.block-half-after-ns {
  background: linear-gradient(to bottom,
    var(--flow-surface, var(--surface, #fff)) 0 calc(50% - 1px),
    var(--seto-free-block-divider) calc(50% - 1px) calc(50% + 1px),
    var(--seto-free-block-fill) calc(50% + 1px) 100%);
  border-color: var(--seto-free-block-edge);
}
/* In der neuen Flow-Monatsansicht wird die Flaeche spaeter im Stylesheet
   ueberschrieben; hier wird bewusst nur dieser Spezialfall zurueckgeholt. */
.flow-calendar-primary .calendar-grid .day.block:not(.block-half-after-ns):not(.contractual-block) {
  background: var(--seto-free-block-fill);
  border-color: var(--seto-free-block-edge);
  border-top-style: solid;
}
.flow-calendar-primary .calendar-grid .day.block.block-half-after-ns {
  background: linear-gradient(to bottom,
    var(--flow-surface, #fff) 0 calc(50% - 1px),
    var(--seto-free-block-divider) calc(50% - 1px) calc(50% + 1px),
    var(--seto-free-block-fill) calc(50% + 1px) 100%);
}
/* Heute- und Auswahlmarkierungen behalten ihre Umrandung.
   Auf ausgewaehlten Tagen bleibt die Freizeitfuellung trotzdem sichtbar. */
.flow-calendar-primary .calendar-grid .day.block.today:not(.selected):not(.block-half-after-ns),
.flow-calendar-primary .calendar-grid .day.block.selected:not(.block-half-after-ns):not(.contractual-block) {
  background: var(--seto-free-block-fill) !important;
}
.flow-calendar-primary .calendar-grid .day.block.selected.block-half-after-ns {
  background: linear-gradient(to bottom,
    var(--flow-surface, #fff) 0 calc(50% - 1px),
    var(--seto-free-block-divider) calc(50% - 1px) calc(50% + 1px),
    var(--seto-free-block-fill) calc(50% + 1px) 100%) !important;
}
/* Auch in der G2-Basis bleibt die Farbmarkierung nach der Tagesauswahl. */
.calendar-grid .day.block.selected:not(.block-half-after-ns):not(.contractual-block),
#yearPlanGrid .day.block.selected:not(.block-half-after-ns):not(.contractual-block) {
  background: var(--seto-free-block-fill) !important;
}
.calendar-grid .day.block.selected.block-half-after-ns,
#yearPlanGrid .day.block.selected.block-half-after-ns {
  background: linear-gradient(to bottom,
    var(--flow-surface, var(--surface, #fff)) 0 calc(50% - 1px),
    var(--seto-free-block-divider) calc(50% - 1px) calc(50% + 1px),
    var(--seto-free-block-fill) calc(50% + 1px) 100%) !important;
}
@media print {
  /* Freiblöcke im Druck durch bestehende Druck-CSS steuern, nicht durch Appfarben. */
  .calendar-grid .day.block,
  #yearPlanGrid .day.block { print-color-adjust: exact; -webkit-print-color-adjust: exact; }
}

/* END schichtkalender/css/free-blocks-flow-patch.css */


/* G8 2.5.15: calendar arrows and setting rows have >=44px touch areas. */
body:has(.flow-calendar-layout) .flow-cal-period .cal-nav #btnPrev,
body:has(.flow-calendar-layout) .flow-cal-period .cal-nav #btnNext{
  box-sizing:border-box;min-width:44px;width:44px;min-height:44px;flex:0 0 44px;
}
body:has(.flow-calendar-layout) .cal-options .cal-toggle{
  display:inline-flex;align-items:center;min-height:44px;padding:8px 10px;box-sizing:border-box;
}
body:has(.flow-calendar-layout) #btnPrev:focus-visible,
body:has(.flow-calendar-layout) #btnNext:focus-visible{
  outline:3px solid var(--flow-magenta,#a3206f);outline-offset:2px;
}

/* Existing header remains functional if SETO runs without the shared shell. */
html[data-seto-section="kalender"] .calendar-app-header .header-home-link,
html[data-seto-section="kalender"] .calendar-app-header #btnLogout{
  display:inline-flex;align-items:center;min-height:44px;box-sizing:border-box;
}
