:root{
  --bg:#f2f4f7;
  --bg-accent:#eef3fb;
  --card:#ffffff;
  --surface:#f8fafc;
  --surface-muted:#f3f6fb;
  --surface-elevated:#ffffff;
  --ink:#172033;
  --text:var(--ink);
  --ink-soft:#3c4a63;
  --text-muted:#6b7890;
  --muted:var(--text-muted);
  --line:#e2e8f0;
  --line-strong:#cdd6e3;
  --brand:#0d8f8c;
  --brand2:#097470;
  --primary:var(--brand);
  --primary-hover:var(--brand2);
  --brand-soft:#e5f6f5;
  --brand-ring: rgba(13,143,140,.20);
  --shift-afterhours:#f4a261;
  --shift-day-surface:#dff3f1;
  --shift-eve-surface:#deeaf8;
  --shift-border-subtle:rgba(13,143,140,.13);
  --panel-tint:#ffffff;
  --nav-bg:#ffffff;
  --panel-bg:#ffffff;
  --topbar-bg:#ffffff;
  --sidebar-border:var(--line);
  --nav-item-hover:#f1f5f9;
  --nav-item-active-bg:var(--brand);
  --danger:#dc2626;
  --warning:#d97706;
  --info:#0d8f8c;
  --success:#15803d;
  --shadow-xs:0 1px 3px rgba(17,24,39,.06);
  --shadow:0 4px 14px rgba(17,24,39,.07);
  --shadow-soft:0 8px 28px rgba(17,24,39,.08);
  --shadow-strong:0 18px 44px rgba(17,24,39,.11);
  --radius-sm:12px;
  --radius-md:15px;
  --radius-lg:18px;
  --radius-xl:26px;
  --radius: 18px;
  --control-height: 48px;
  --control-radius: 14px;
  --control-border: var(--line-strong);
  --control-shadow: inset 0 1px 0 rgba(255,255,255,.9), var(--shadow-xs);
  --focus-ring: 0 0 0 3px var(--brand-ring);
  --layer-base: 1;
  --layer-controls: 20;
  --layer-topbar: 30;
  --layer-dropdown: 60;
  --layer-tooltip: 80;
  --layer-modal: 100;
  --popover-radius: 20px;
  --popover-shadow: var(--shadow-strong);
  --accent: var(--brand);
  --accent-soft: var(--brand-soft);
  --sidebar-width: 260px;
  --nav-item-radius: 10px;
}


*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Inter",-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",sans-serif;
  background:var(--bg);
  color:var(--ink);
  min-height:100vh;
}

.hidden{display:none !important}

.auth-screen{min-height:100vh;display:grid;place-items:center;padding:20px}
.auth-card{
  width:min(420px, 100%);
  background:#fff;
  border:1px solid var(--line);
  border-radius:20px;
  box-shadow:var(--shadow-strong);
  padding:28px 28px 32px;
  display:grid;
  gap:14px;
}
.auth-card-brand{display:flex;align-items:center;gap:12px;margin-bottom:6px;}
.auth-card-logo{width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:#fff;box-shadow:0 8px 18px rgba(13,143,140,.24);}
.auth-card-brand-text .auth-card-name{font-size:15px;font-weight:800;color:var(--ink);}
.auth-card-brand-text .auth-card-tagline{font-size:12px;color:var(--muted);margin-top:1px;}
.auth-card h1{margin:0; font-size:22px;font-weight:800;letter-spacing:-.02em;}
.auth-sub{margin:0 0 4px 0; color:var(--muted); font-size:14px; line-height:1.55;}
.auth-card label{font-weight:700; color:var(--ink); font-size:13.5px;}
.auth-card input{border:1px solid var(--control-border);border-radius:var(--control-radius);padding:12px 16px;font-size:14px;background:rgba(255,255,255,.92);box-shadow:var(--control-shadow);}
.auth-btn{justify-self:stretch;margin-top:4px;border-radius:999px !important;}
.auth-error{margin-top:4px;padding:8px 10px;border-radius:10px;border:1px solid #fecaca;background:#fff1f2;color:#9f1239;font-weight:700;font-size:13px;}

.app{position:relative;isolation:isolate;max-width:1460px;margin:16px auto 40px;padding:0 18px;animation:appEnter .45s ease;}
.app.admin-shell-active{max-width:none;margin-inline:0;padding-inline:clamp(14px,2vw,24px);}
.app.dashboard-view-active{height:100vh;min-height:100vh;margin:0;padding:clamp(14px,2vw,20px);}
.app.admin-shell-active.dashboard-view-active{height:calc(100vh - 32px);min-height:calc(100vh - 32px);margin:16px 0;padding:0 clamp(14px,2vw,24px);}
.app.dashboard-view-active .admin-tools-dock{display:none;}
body.dashboard-view-active{overflow:hidden;}
.topbar{position:relative;z-index:var(--layer-topbar);display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px;padding:6px 4px;}
.userbox{display:flex;align-items:center;gap:8px;position:relative;z-index:var(--layer-dropdown);}
.user-badge{font-size:13px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:700;box-shadow:var(--shadow-xs);display:flex;align-items:center;gap:6px;}
.user-badge::after{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--ink-soft);opacity:.6;}
.user-badge-btn{cursor:pointer;}
.user-menu{position:absolute;top:48px;right:0;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-strong);min-width:220px;overflow:hidden;z-index:var(--layer-dropdown);display:grid;transform-origin:top right;animation:menuEnter .18s ease;padding:6px;}
.user-menu-item{border:none;background:transparent;text-align:left;padding:12px 14px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:14px;}
.user-menu-item:hover{background:var(--brand-soft);color:var(--brand2);}
.user-menu-item:active{background:linear-gradient(180deg,var(--brand),var(--brand2));color:#fff;}
.app-version-badge{
  position:fixed;
  left:12px;
  bottom:10px;
  z-index:90;
  padding:4px 8px;
  border-radius:10px;
  border:1px solid #dbe2ea;
  background:rgba(255,255,255,.9);
  color:#475569;
  font-size:11px;
  font-weight:600;
  letter-spacing:.01em;
  backdrop-filter:blur(2px);
  pointer-events:none;
}
@media print{
  .app-version-badge{display:none !important;}
}

.brand{display:flex;align-items:center;gap:12px}
.logo{width:48px;height:48px;border-radius:16px;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;align-items:center;justify-content:center;font-weight:800;color:white;box-shadow:0 16px 28px rgba(11,139,136,.24);}
.brand-title{font-weight:800}
.brand-sub{font-size:12px;color:var(--muted);margin-top:2px}

.hint{display:none;}

.controls{position:relative;z-index:var(--layer-controls);isolation:isolate;overflow:visible;background:var(--panel-tint);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:16px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1.12fr);align-items:center;gap:18px;}
.controls-left,.controls-center,.controls-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.controls-left{justify-self:start;grid-column:1;position:relative;z-index:1;min-width:0;}
.controls-center{justify-self:center;grid-column:2;gap:16px;flex-wrap:nowrap;z-index:2;position:relative;min-width:0;max-width:100%;margin-inline-end:clamp(18px,2.6vw,42px);transform:translateX(calc(-10px - 0.55vw));}
.controls-right{justify-self:end;grid-column:3;justify-content:flex-end;align-items:center;flex-wrap:nowrap;gap:14px;position:relative;z-index:1;}
.controls-heading-slot{flex:0 0 auto;min-width:0;}
.controls-heading-slot .pill{
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:max-content;
  max-width:9.25rem;
  overflow:hidden;
  white-space:nowrap;
  transition:max-width .34s cubic-bezier(0.32,1,0.32,1);
  font-variant-numeric:tabular-nums;
}
.controls-heading-slot .pill.month-mode{max-width:27rem;}

.controls-heading-slot #weekPill.month-mode{
  background:#fff;
  color:var(--ink);
  border:1px solid rgba(217,226,236,.95);
  box-shadow:var(--shadow-xs);
}

.pill{background:#fff;border:1px solid var(--line);padding:10px 16px;border-radius:999px;box-shadow:var(--shadow-xs);font-weight:700;}
.pill.month-mode{background:linear-gradient(180deg,var(--brand),var(--brand2));color:#fff;border-color:transparent;box-shadow:0 8px 18px rgba(13,143,140,.22);}

.btn,.iconbtn,.user-badge-btn,.user-menu-item,.modal-close,.sandbox-modal-close,.consistency-btn,.seg,.card,.admin-panel,.dashboard-panel{transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .12s ease,color .16s ease,opacity .18s ease;}
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:11px 16px;min-height:var(--control-height);border-radius:14px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-xs);display:inline-flex;align-items:center;justify-content:center;gap:8px;}
.btn:hover{background:var(--surface);border-color:var(--line-strong);color:var(--ink);transform:translateY(-1px);box-shadow:var(--shadow);}
.btn:active{transform:scale(.98);box-shadow:var(--shadow-xs);}
.btn.active{background:var(--brand);border-color:transparent;color:#fff;transform:translateY(0);box-shadow:0 6px 16px rgba(13,143,140,.26);}
.btn-secondary{background:#fff;color:var(--ink-soft);border-color:var(--line);}
.btn-primary{background:var(--brand);color:#fff;border-color:transparent;box-shadow:0 4px 14px rgba(13,143,140,.28);}
.btn-primary:hover{background:var(--brand2);color:#fff;border-color:transparent;box-shadow:0 6px 18px rgba(13,143,140,.34);}
.btn-danger{background:#fff3f2;color:#991b1b;border-color:#fecaca;}
.btn-danger:hover{background:#fee2e2;border-color:#fca5a5;color:#7f1d1d;}
.btn-warning{background:#fffbeb;color:#92400e;border-color:#fde68a;}
.btn-warning:hover{background:#fef3c7;border-color:#fcd34d;color:#78350f;}

.iconbtn{width:var(--control-height);height:var(--control-height);border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-size:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs);}
.iconbtn:hover,.user-badge-btn:hover,.seg:hover,.modal-close:hover,.sandbox-modal-close:hover,.consistency-btn:hover{background:var(--brand-soft);border-color:#c4dafd;color:var(--brand2);transform:translateY(-1px);box-shadow:var(--shadow);}
.iconbtn:active,.user-badge-btn:active,.seg:active,.modal-close:active,.sandbox-modal-close:active,.consistency-btn:active{transform:scale(.98);}
.seg.active{background:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(13,143,140,.28);}

.datewrap{position:relative;display:flex;align-items:center;z-index:var(--layer-dropdown);}

/* Match the unified date fields used in planner/admin forms */
.controls .datewrap{
  width:max-content;
  max-width:100%;
  overflow:visible;
}
.controls .datewrap .dateinput{
  width:170px;
  border:1px solid var(--control-border);
  border-radius:var(--control-radius);
  background:rgba(255,255,255,.92);
  box-shadow:var(--control-shadow);
  padding:12px 46px 12px 16px;
  min-height:var(--control-height);
  color:var(--ink);
}
.controls .datewrap .calicon-btn,
.controls .datewrap .ui-date-toggle{
  background:transparent;
  right:4px;
}
.controls .datewrap .calicon{
  opacity:.72;
  font-size:15px;
}
.controls .datewrap .date-popover::before,
.controls .datewrap .ui-date-popover::before{
  display:none;
}

.ui-unified-date-field{position:relative;width:max-content;max-width:100%;justify-self:start;z-index:calc(var(--layer-controls) + 1);}
.ui-unified-date-field.is-open,
.employee-request-datewrap.is-open,
.derived-staffing-datewrap.is-open,
.special-rule-datewrap.is-open,
.staffing-conflict-datewrap.is-open{z-index:2147483000 !important;}
.ui-unified-date-field .ui-date-popover{left:50%;transform:translateX(-50%);top:calc(100% + 14px);width:340px;max-width:min(340px,calc(100vw - 48px));z-index:2147483001 !important;}
.floating-date-popover{
  position:fixed !important;
  z-index:2147483646 !important;
  transform:none !important;
  overflow:auto;
}
.floating-date-popover[data-placement="top"]{
  --origin-y:100%;
}

/* Date popover beak (arrow pointing up) */
.date-popover::before,
.ui-popover.ui-date-popover::before{
  content:"";
  position:absolute;
  top:-7px;
  left:50%;
  transform:translateX(-50%);
  width:14px;
  height:14px;
  background:#fff;
  border-left:1px solid rgba(217,226,236,.92);
  border-top:1px solid rgba(217,226,236,.92);
  border-radius:3px 0 0 0;
  rotate:45deg;
  z-index:-1;
}
.floating-date-popover::before{display:none;}
.sandbox-native-date-input{position:absolute !important;left:0 !important;top:0 !important;width:1px !important;height:1px !important;margin:0 !important;padding:0 !important;border:0 !important;opacity:0 !important;pointer-events:none !important;overflow:hidden !important;}
.ui-time,
.ui-unified-time-field{position:relative;min-width:0;overflow-x:clip;z-index:calc(var(--layer-controls) + 1);}
.ui-time.is-open,
.ui-unified-time-field.is-open{z-index:2147483000 !important;}
.sandbox-native-time-input{position:absolute !important;left:0 !important;top:0 !important;width:1px !important;height:1px !important;margin:0 !important;padding:0 !important;border:0 !important;opacity:0 !important;pointer-events:none !important;overflow:hidden !important;visibility:hidden !important;appearance:none !important;-webkit-appearance:none !important;}
.dateinput{width:170px;padding:12px 46px 12px 16px;border-radius:18px;border:1px solid var(--control-border);background:rgba(255,255,255,.92);box-shadow:var(--control-shadow);font-weight:700;min-height:var(--control-height);cursor:pointer;font-family:inherit;color:var(--ink);}
.dateinput:hover{border-color:#b8c7d8;box-shadow:var(--shadow);}
.dateinput:focus-visible{outline:none;border-color:var(--brand2);box-shadow:var(--focus-ring);}
.calicon-btn,
.ui-date-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%);width:32px;height:32px;border:none;background:transparent;border-radius:999px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;}
.calicon-btn:hover,
.ui-date-toggle:hover{background:rgba(10,132,255,.08);}
.calicon-btn:focus-visible,
.ui-date-toggle:focus-visible{outline:none;box-shadow:var(--focus-ring);}
.calicon{opacity:.72;pointer-events:none;font-size:16px;line-height:1;}
.ui-date-icon{font-size:15px;opacity:.76;}

.ui-date-input,
.ui-time-input{
  padding-right:52px;
  border-radius:18px;
  font-weight:700;
}

.ui-date-input:not(.is-manual),
.ui-time-input:not(.is-manual){
  cursor:pointer;
}

/* Teal border on time/date inputs when focused or parent is open */
.ui-time.is-open .dateinput,
.ui-unified-time-field.is-open .dateinput{
  border-color:var(--brand);
  box-shadow:var(--focus-ring);
}
.ui-unified-date-field.is-open .dateinput{
  border-color:var(--brand);
  box-shadow:var(--focus-ring);
}

.ui-popover{
  --origin-x:50%;
  --origin-y:0%;
  box-sizing:border-box;
  position:absolute;
  top:calc(100% + 10px);
  left:0;
  width:100%;
  padding:10px;
  display:grid;
  gap:6px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:20px;
  box-shadow:var(--shadow-strong);
  z-index:2147483001 !important;
  transform-origin:var(--origin-x) var(--origin-y);
}

.ui-popover[hidden]{
  display:none !important;
}

.date-popover,
.ui-popover.ui-date-popover{position:absolute;top:calc(100% + 10px);left:0;width:min(340px,calc(100vw - 48px));background:#fff;border:1px solid var(--line);border-radius:var(--popover-radius);box-shadow:var(--shadow-strong);padding:16px;z-index:2147483001 !important;display:grid;gap:14px;}
.date-popover-head{display:grid;grid-template-columns:36px 1fr 36px;gap:10px;align-items:center;}
.date-popover-title{text-align:center;font-size:16px;font-weight:800;color:#0f172a;text-transform:capitalize;letter-spacing:-.01em;}
.date-popover-nav{width:34px;height:34px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);cursor:pointer;font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs);}
.date-popover-nav:hover{background:var(--brand-soft);border-color:rgba(13,143,140,.3);color:var(--brand2);transform:translateY(-1px);}
.date-popover-nav:focus-visible{outline:none;box-shadow:var(--focus-ring);}
.date-popover-weekdays,.date-popover-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;}
.date-popover-weekdays{color:var(--muted);font-size:12px;font-weight:600;text-align:center;letter-spacing:.01em;}
.date-popover-weekday{padding:4px 0;text-align:center;}
.date-popover-day{aspect-ratio:1;border:none;border-radius:8px;background:transparent;color:var(--ink);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease,transform .12s ease;}
.date-popover-day:hover{background:var(--brand-soft);color:var(--brand2);}
.date-popover-day.is-outside{color:#b0bccf;}
.date-popover-day.is-today{box-shadow:inset 0 0 0 1.5px var(--brand);background:rgba(13,143,140,.06);color:var(--brand);}
.date-popover-day.is-selected{background:var(--brand);color:#fff;box-shadow:0 4px 10px rgba(13,143,140,.28);}
.date-popover-day.is-selected.is-today{box-shadow:0 4px 10px rgba(13,143,140,.28);}
.date-popover-day:focus-visible{outline:none;box-shadow:var(--focus-ring);}
.date-popover-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:2px;}
.date-popover-action{flex:1 1 0;border-radius:999px !important;min-height:44px;}
.floating-date-popover[data-density="compact"]{
  padding:10px;
  gap:10px;
}
.floating-date-popover[data-density="compact"] .date-popover-head{
  gap:8px;
}
.floating-date-popover[data-density="compact"] .date-popover-weekdays,
.floating-date-popover[data-density="compact"] .date-popover-grid{
  gap:4px;
}
.floating-date-popover[data-density="compact"] .date-popover-weekday{
  padding:2px 0;
  font-size:11px;
}
.floating-date-popover[data-density="compact"] .date-popover-day{
  border-radius:12px;
}
.floating-date-popover[data-density="compact"] .date-popover-actions{
  gap:8px;
}
.floating-date-popover[data-density="compact"] .date-popover-action{
  min-height:42px;
  padding:10px 12px;
}
.ui-time-panel{
  width:296px;
  max-width:min(296px,calc(100vw - 32px));
  gap:12px;
}

.floating-time-popover{
  box-sizing:border-box;
  position:fixed !important;
  z-index:2147483646 !important;
  transform:none !important;
  overflow:auto;
  padding:8px;
}

.floating-time-popover[data-placement="top"]{
  --origin-y:100%;
}

.floating-time-popover[data-placement="bottom"]{
  --origin-y:0%;
}

.ui-time-panel .date-popover-actions .btn{
  box-shadow:none;
}

.ui-time-panel .date-popover-actions .btn:hover{
  box-shadow:none;
}

.ui-time-panel-head{
  display:grid;
  gap:10px;
  text-align:center;
}

/* Large clock display in time picker header */
.ui-time-panel-clock{
  font-size:32px;
  font-weight:800;
  color:var(--brand);
  letter-spacing:-.03em;
  line-height:1;
  font-variant-numeric:tabular-nums lining-nums;
  font-feature-settings:"tnum" 1, "lnum" 1;
}

/* Quick preset segments (Morgen / Dag / Aften / Nat) */
.ui-time-presets{
  display:flex;
  gap:6px;
  justify-content:center;
  flex-wrap:wrap;
}
.ui-time-preset{
  border:1px solid var(--line);
  border-radius:999px;
  background:#fff;
  color:var(--ink-soft);
  font-size:12px;
  font-weight:700;
  padding:5px 12px;
  cursor:pointer;
  transition:background-color .14s ease, border-color .14s ease, color .14s ease;
}
.ui-time-preset:hover{
  background:var(--brand-soft);
  border-color:rgba(13,143,140,.3);
  color:var(--brand2);
}
.ui-time-preset.is-active{
  background:linear-gradient(135deg,var(--brand),var(--brand2));
  border-color:transparent;
  color:#fff;
}

.ui-time-panel-title{
  margin:0;
  font-size:13px;
  font-weight:800;
  letter-spacing:-.01em;
}

/* Time picker footer actions */
.ui-time-actions{
  margin-top:4px;
}

.ui-time-columns{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}

.ui-time-column{
  display:grid;
  gap:14px;
  min-width:0;
}

.ui-time-wheel{
  position:relative;
  height:208px;
  border-radius:20px;
  background:#ffffff;
  overflow:hidden;
  padding-right:14px;
  margin-top:10px;
}

.ui-time-wheel::before,
.ui-time-wheel::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  height:76px;
  z-index:2;
  pointer-events:none;
}

.ui-time-wheel::before{
  top:0;
  background:linear-gradient(180deg,#ffffff 0%, rgba(255,255,255,0) 100%);
}

.ui-time-wheel::after{
  bottom:0;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%, #ffffff 100%);
}

.ui-time-wheel-highlight{
  position:absolute;
  left:10px;
  right:30px;
  top:50%;
  height:46px;
  transform:translateY(-50%);
  border-radius:16px;
  background:linear-gradient(180deg,rgba(13,143,140,.08),rgba(13,143,140,.05));
  box-shadow:inset 0 0 0 1px rgba(13,143,140,.12);
  z-index:1;
  pointer-events:none;
}

.ui-time-column-title{
  padding-left:13px;
  padding-right:27px;
  text-align:center;
  font-size:11px;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--muted);
}

.ui-time-options{
  display:grid;
  gap:8px;
  height:208px;
  overflow-y:auto;
  padding:118px 20px 98px 2px;
  scrollbar-gutter:stable both-edges;
  scroll-snap-type:y proximity;
  scroll-padding-block:81px;
  overscroll-behavior-y:contain;
  scroll-behavior:auto;
  position:relative;
  z-index:3;
  scrollbar-width:thin;
  scrollbar-color:rgba(107,120,144,.72) transparent;
  touch-action:pan-y;
  -webkit-overflow-scrolling:touch;
}

.ui-time-options::-webkit-scrollbar{
  width:10px;
}

.ui-time-options::-webkit-scrollbar-track{
  background:transparent;
}

.ui-time-options::-webkit-scrollbar-thumb{
  border-radius:999px;
  background:rgba(107,120,144,.72);
  border:2px solid transparent;
  background-clip:padding-box;
}

.ui-time-option{
  position:relative;
  width:100%;
  height:46px;
  min-height:46px;
  border:1px solid transparent;
  border-radius:16px;
  background:transparent;
  display:grid;
  place-items:center;
  color:rgba(23,32,51,.36);
  cursor:pointer;
  scroll-snap-align:center;
  transform:none;
  transition:border-color .16s ease, background-color .16s ease, color .16s ease, transform .18s ease, opacity .18s ease;
}

.ui-time-options.is-scrolling .ui-time-option{
  transition:none;
}

.ui-time-option-label{
  display:grid;
  place-items:center;
  width:100%;
  height:100%;
  min-width:2ch;
  font-size:22px;
  font-weight:700;
  letter-spacing:-.02em;
  line-height:1;
  font-variant-numeric:tabular-nums lining-nums;
  font-feature-settings:"tnum" 1, "lnum" 1;
  transform:translate(3px,-1px);
}

.ui-time-option:hover{
  color:rgba(23,32,51,.7);
}

.ui-time-option.is-selected{
  color:var(--brand);
  transform:scale(1.05);
}

.floating-time-popover[data-density="compact"]{
  padding:6px;
}

.floating-time-popover[data-density="compact"] .ui-time-panel{
  gap:10px;
}

.floating-time-popover[data-density="compact"] .ui-time-columns{
  gap:8px;
}

.floating-time-popover[data-density="compact"] .ui-time-column{
  gap:10px;
}

.floating-time-popover[data-density="compact"] .ui-time-wheel{
  height:184px;
  margin-top:8px;
  padding-right:12px;
}

.floating-time-popover[data-density="compact"] .ui-time-wheel-highlight{
  right:26px;
  height:42px;
}

.floating-time-popover[data-density="compact"] .ui-time-options{
  height:184px;
  padding:104px 16px 86px 2px;
  scroll-padding-block:71px;
}

.floating-time-popover[data-density="compact"] .ui-time-option{
  height:42px;
  min-height:42px;
}

.floating-time-popover[data-density="compact"] .ui-time-option-label{
  font-size:20px;
  transform:translate(2px,0);
}
.planner-time-range > .ui-unified-time-field{min-width:0;}
.planner-time-range > .ui-unified-time-field .dateinput{width:100%;}

.segmented{background:#f1f4f8;border:1px solid var(--line);border-radius:20px;padding:5px;display:flex;gap:3px;box-shadow:var(--shadow-xs);}
.seg{border:none;background:transparent;padding:10px 16px;min-height:44px;border-radius:16px;cursor:pointer;font-weight:700;color:var(--ink);letter-spacing:-.01em;display:inline-flex;align-items:center;justify-content:center;}

.calendar-view-segments.segmented{
  position:relative;
  border-radius:28px;
  padding:4px;
  gap:3px;
  background:#edf1f6;
  border-color:var(--line);
  box-shadow:var(--shadow-xs);
  transform:translateX(var(--calendar-view-segment-center-offset,0px));
}
.calendar-view-segments .segmented-thumb{
  position:absolute;
  z-index:0;
  left:0;top:0;width:0;height:0;
  opacity:0;
  pointer-events:none;
  border-radius:22px;
  background:var(--brand);
  box-shadow:0 4px 12px rgba(13,143,140,.28);
  transition:
    left .19s cubic-bezier(0.32,1,0.32,1),
    top .19s cubic-bezier(0.32,1,0.32,1),
    width .19s cubic-bezier(0.32,1,0.32,1),
    height .19s cubic-bezier(0.32,1,0.32,1),
    opacity .12s ease;
  will-change:left,top,width,height;
}
.calendar-view-segments .seg{
  position:relative;
  z-index:1;
  border-radius:24px;
  min-height:46px;
  padding:11px 17px;
  color:rgba(15,23,42,.52);
  transition:transform .08s ease;
  background:transparent;
  box-shadow:none;
}
.calendar-view-segments .seg:hover,
.calendar-view-segments .seg:active{
  background:transparent !important;
  transform:none;
  box-shadow:none;
}
.calendar-view-segments .calendar-seg-label{
  transition:color .17s cubic-bezier(0.32,1,0.32,1);
}
.calendar-view-segments .seg:hover:not(.active) .calendar-seg-label{
  color:var(--ink);
  text-decoration:none;
}
.calendar-view-segments .seg:focus-visible:not(.active) .calendar-seg-label{
  color:var(--ink);
}
.calendar-view-segments .seg.active{
  background:transparent;
  color:transparent;
  text-shadow:none;
  box-shadow:none;
}
.calendar-view-segments .seg.active .calendar-seg-label{
  color:#fff;
  text-shadow:none;
}
.calendar-today-btn{
  border-radius:999px !important;
  padding-left:18px;
  padding-right:18px;
  border-color:var(--line);
  box-shadow:var(--shadow-xs);
}

@media (prefers-reduced-motion: reduce){
  .calendar-view-segments .segmented-thumb{transition-duration:.01ms;transition-delay:0ms;}
  .calendar-view-segments .seg,.calendar-view-segments .calendar-seg-label{transition-duration:.01ms;}
}

.employee-filter-wrap{display:grid;gap:8px;color:var(--muted);font-size:13px;font-weight:700;min-width:190px;}
.controls-right .employee-filter-wrap{
  display:flex;
  align-items:center;
  gap:0;
  min-width:0;
  color:inherit;
  font-weight:700;
}
.controls-right label[for="employeeFilter"].employee-filter-wrap{min-width:10.5rem;}
.controls-right label[for="employeeTypeFilter"].employee-filter-wrap{min-width:6.75rem;}
.controls-right .employee-filter-wrap .ui-dropdown{min-width:0;width:100%;}
.employee-filter{border:1px solid var(--control-border);border-radius:14px;background:#fff;padding:10px 44px 10px 14px;font-weight:700;color:var(--ink);min-height:var(--control-height);box-shadow:var(--shadow-xs);}

.app-address{display:none;}

.notification-container{
  position:fixed;
  top:18px;
  right:18px;
  display:grid;
  gap:10px;
  width:min(360px, calc(100vw - 24px));
  z-index:130;
  pointer-events:none;
}
.notification-container.is-stacked{
  gap:6px;
}
.notification-container.is-stacked .notification{
  padding:11px 12px 11px 14px;
  border-radius:14px;
}
.notification-container.is-stacked .notification-message{
  font-size:13px;
}
.notification{
  position:relative;
  display:grid;
  grid-template-columns:1fr auto;
  gap:10px;
  align-items:start;
  padding:14px 14px 14px 16px;
  border-radius:16px;
  border:1px solid var(--line);
  background:#fff;
  box-shadow:var(--shadow-strong);
  color:var(--ink);
  pointer-events:auto;
  opacity:0;
  transform:translateY(-8px) scale(.98);
  transition:opacity .2s ease,transform .2s ease,box-shadow .2s ease;
}
.notification.is-visible{
  opacity:1;
  transform:translateY(0) scale(1);
}
.notification.is-closing{
  opacity:0;
  transform:translateY(-6px) scale(.98);
  pointer-events:none;
}
.notification-body{
  display:grid;
  gap:4px;
  min-width:0;
}
.notification-title{
  font-size:12px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.notification-message{
  font-size:14px;
  font-weight:700;
  line-height:1.4;
  overflow-wrap:anywhere;
}
.notification-detail{
  font-size:13px;
  line-height:1.45;
  color:inherit;
  opacity:.92;
}
.notification-hint{
  font-size:12px;
  line-height:1.45;
  color:inherit;
  opacity:.82;
}
.notification-code{
  display:inline-flex;
  align-items:center;
  justify-self:start;
  width:max-content;
  max-width:100%;
  padding:4px 8px;
  border-radius:999px;
  border:1px solid currentColor;
  font-size:11px;
  font-weight:800;
  font-family:ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing:.03em;
  user-select:all;
  opacity:.78;
}
.notification-close{
  border:none;
  background:transparent;
  color:inherit;
  width:28px;
  height:28px;
  border-radius:999px;
  cursor:pointer;
  font-size:18px;
  line-height:1;
  display:flex;
  align-items:center;
  justify-content:center;
  opacity:.72;
}
.notification-close:hover{
  background:rgba(15,23,42,.08);
  opacity:1;
}
.notification-close:focus-visible{
  outline:none;
  box-shadow:var(--focus-ring);
}
.notification-success{
  border-color:rgba(21,128,61,.18);
  background:linear-gradient(135deg, rgba(240,253,244,.98), rgba(255,255,255,.96));
  color:#166534;
}
.notification-success .notification-title{color:var(--success);}
.notification-error{
  border-color:rgba(220,38,38,.18);
  background:linear-gradient(135deg, rgba(254,242,242,.98), rgba(255,255,255,.96));
  color:#991b1b;
}
.notification-error .notification-title{color:var(--danger);}
.notification-warning{
  border-color:rgba(217,119,6,.2);
  background:linear-gradient(135deg, rgba(255,251,235,.98), rgba(255,255,255,.96));
  color:#92400e;
}
.notification-warning .notification-title{color:var(--warning);}
.notification-info{
  border-color:rgba(10,132,255,.18);
  background:linear-gradient(135deg, rgba(237,245,255,.98), rgba(255,255,255,.96));
  color:var(--brand2);
}
.notification-info .notification-title{color:var(--info);}

.consistency-wrap{position:relative; display:flex; align-items:center;z-index:var(--layer-tooltip);}
.consistency-btn{width:32px;height:32px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);font-weight:800;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-xs);}
.consistency-btn.problem{background:#dc2626;border-color:#b91c1c}
.consistency-btn.ok{background:#9ca3af;border-color:#94a3b8}
.consistency-panel{position:absolute;top:38px;right:0;width:340px;max-height:280px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow: var(--shadow);padding:10px 12px;z-index:var(--layer-tooltip);font-size:13px;line-height:1.35;}
.consistency-panel ul{margin:0; padding-left:18px}
.consistency-panel li{margin:0 0 8px 0}
.consistency-section{display:grid;gap:6px;margin-bottom:12px;}
.consistency-section:last-child{margin-bottom:0;}
.consistency-section strong{font-size:12px;color:#0f172a;}
.consistency-link-btn{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:1px solid #d7e0ea;background:#f8fbff;padding:8px 10px;border-radius:10px;text-align:left;color:inherit;font:inherit;cursor:pointer;transition:border-color .18s ease, background .18s ease, box-shadow .18s ease;}
.consistency-link-btn:hover{border-color:#b9cbe0;background:#ffffff;box-shadow:0 6px 16px rgba(15,23,42,.08);}
.consistency-link-copy{display:block;min-width:0;flex:1;}
.consistency-link-cta{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:12px;font-weight:700;color:#5b6b80;opacity:0;transform:translateX(-4px);transition:opacity .18s ease, transform .18s ease, color .18s ease;}
.consistency-link-btn:hover .consistency-link-cta,.consistency-link-btn:focus-visible .consistency-link-cta{opacity:1;transform:translateX(0);color:#0f172a;}
.consistency-static-text{display:block;padding:2px 0;}

.layout{position:relative;z-index:var(--layer-base);display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;}
.layout > *{min-width:0;}
.card{position:relative;z-index:1;margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow-soft);padding:14px;min-width:0;}
.card:hover,.admin-panel:hover,.dashboard-panel:hover{box-shadow:var(--shadow-strong);}

.admin-tools-dock{position:fixed;right:0;bottom:0;z-index:calc(var(--layer-modal) + 20);pointer-events:none;}
.admin-tools-backdrop{position:fixed;inset:0;background:transparent !important;backdrop-filter:none !important;-webkit-backdrop-filter:none !important;opacity:0;visibility:hidden;transition:opacity .32s cubic-bezier(.22,1,.36,1),visibility .32s;pointer-events:none;z-index:calc(var(--layer-modal) + 10);}
.admin-tools-dock.is-open .admin-tools-backdrop{opacity:1;visibility:visible;pointer-events:auto;}
.admin-tools-sheet{position:fixed;right:22px;bottom:calc(22px + 52px + 14px);width:min(340px,calc(100vw - 44px));max-height:min(560px,calc(100vh - 120px));display:flex;flex-direction:column;z-index:calc(var(--layer-modal) + 30);pointer-events:none;transform-origin:bottom right;transform:translateY(24px) scale(.88);opacity:0;transition:transform .38s cubic-bezier(.22,1,.36,1),opacity .28s ease;filter:drop-shadow(0 16px 36px rgba(15,23,42,.16));}
.admin-tools-dock.is-open .admin-tools-sheet{pointer-events:auto;transform:translateY(0) scale(1);opacity:1;}
.admin-tools-sheet .admin-panel{margin-top:0;position:relative;top:auto;max-height:min(560px,calc(100vh - 120px));overflow:auto;border-radius:var(--radius-lg);}
.admin-tools-fab{position:fixed;right:22px;bottom:22px;box-sizing:border-box;width:52px;height:52px;min-width:52px;min-height:52px;padding:0;aspect-ratio:1;border-radius:50%;border:none;cursor:pointer;display:grid;place-items:center;background:var(--brand);color:#fff;box-shadow:0 8px 22px rgba(13,143,140,.38),0 3px 10px rgba(15,23,42,.14);pointer-events:auto;z-index:calc(var(--layer-modal) + 40);transition:transform .32s cubic-bezier(.22,1,.36,1),box-shadow .22s ease;}
.admin-tools-fab:hover{box-shadow:0 12px 28px rgba(13,143,140,.44),0 4px 12px rgba(15,23,42,.16);transform:translateY(-2px);}
.admin-tools-fab:focus-visible{outline:none;box-shadow:var(--focus-ring),0 12px 28px rgba(37,99,235,.45);}
.admin-tools-fab-icon{position:relative;display:block;width:22px;height:22px;transition:transform .38s cubic-bezier(.22,1,.36,1);}
.admin-tools-fab-icon::before,.admin-tools-fab-icon::after{content:"";position:absolute;left:50%;top:50%;background:currentColor;border-radius:2px;transition:transform .38s cubic-bezier(.22,1,.36,1);}
.admin-tools-fab-icon::before{width:22px;height:2px;transform:translate(-50%,-50%);}
.admin-tools-fab-icon::after{width:2px;height:22px;transform:translate(-50%,-50%);}
.admin-tools-dock.is-open .admin-tools-fab-icon{transform:rotate(45deg);}
@media (max-width:640px){
  .admin-tools-sheet{left:0;right:0;bottom:0;width:auto;max-height:min(78vh,calc(100vh - 96px));border-radius:22px 22px 0 0;padding-bottom:max(12px,env(safe-area-inset-bottom));transform-origin:bottom center;transform:translateY(100%) scale(.96);}
  .admin-tools-dock.is-open .admin-tools-sheet{transform:translateY(0) scale(1);}
  .admin-tools-sheet .admin-panel{max-height:min(78vh,calc(100vh - 96px));}
  .admin-tools-fab{bottom:max(18px,env(safe-area-inset-bottom));right:max(18px,env(safe-area-inset-right));}
}

.admin-panel{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;display:grid;gap:4px;position:sticky;top:10px;}
.admin-panel h3{margin:0 0 6px 0;padding:2px 4px 8px;border-bottom:1px solid var(--line);font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);}
.admin-btn{width:100%;text-align:left;justify-content:flex-start;gap:10px;min-height:40px;padding:9px 10px;box-shadow:none;border-color:transparent;background:transparent;border-radius:var(--nav-item-radius);color:var(--ink-soft);font-size:13px;}
.admin-btn:hover{background:var(--nav-item-hover);border-color:transparent;box-shadow:none;transform:none;color:var(--ink);}
.admin-btn:active{transform:none;box-shadow:none;}
.admin-btn-icon{flex:0 0 18px;width:18px;height:18px;display:grid;place-items:center;color:var(--brand2);opacity:.78;}
.admin-btn-icon svg{width:18px;height:18px;display:block;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;}
.admin-btn:hover .admin-btn-icon{opacity:1;}
.admin-btn-label{flex:1;min-width:0;text-align:left;font-weight:700;}
.admin-help{display:none !important;}
.absence-overview{margin-top:6px;padding-top:10px;border-top:1px solid var(--line);}
.absence-overview h4{margin:0 0 8px 0;}
.absence-list{font-size:12px;color:#334155;max-height:none;overflow:visible;display:grid;gap:10px;}
.absence-empty{margin:0;color:#64748b;font-style:italic;}

/* Absence groups (Enkeltdage / Perioder / Frav?rende vagter) */
.absence-group{border-radius:10px;border:1px solid #e2e8f0;overflow:hidden;}
.absence-group-header{display:flex;align-items:center;gap:6px;padding:7px 10px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:#f1f5f9;color:#475569;border-bottom:1px solid #e2e8f0;}
.absence-group-items{display:grid;gap:0;}

/* Individual absence items */
.absence-item{padding:8px 10px;background:#fff;border-bottom:1px solid #f1f5f9;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.absence-item:last-child{border-bottom:none;}
.absence-item-main{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;flex:1;min-width:0;}
.absence-item-main strong{font-size:12px;color:#0f172a;}
.absence-type-badge{font-size:10px;font-weight:600;padding:2px 7px;border-radius:99px;background:#ede9fe;color:#6d28d9;white-space:nowrap;}
.absence-dates{font-size:11px;color:#475569;}
.absence-shift-lines{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex-basis:100%;min-width:0;}
.absence-shift-dayline{font-size:11px;font-weight:700;color:#475569;line-height:1.25;}
.absence-shift-timeline{font-size:11px;font-weight:600;color:#475569;line-height:1.25;}
.absence-note{font-size:11px;color:#64748b;font-style:italic;width:100%;}
.absence-reason{font-size:11px;color:#b91c1c;width:100%;}
.absence-edit-btn{flex-shrink:0;padding:3px 10px;font-size:11px;}
.absence-absent-item .absence-dates,.absence-absent-item .absence-shift-dayline,.absence-absent-item .absence-shift-timeline{color:#b91c1c;}

/* Vacation period events in calendar (all-day banner) */
.manual-vacation-event .fc-event-main{font-size:11px;font-weight:600;padding:1px 4px;}
.manual-vacation-period{opacity:.95;}
.manual-vacation-single{opacity:.85;}
.employee-requests-card{display:grid;gap:16px;}
.employee-requests-head h3,.employee-requests-list-wrap h4,.employee-requests-admin-head h4{margin:0;}
.employee-request-form,.employee-requests-admin-toolbar{display:grid;gap:12px;}
.employee-request-grid,.employee-requests-admin-toolbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.employee-request-datewrap{width:100%;}
.employee-request-dateinput{width:100%;border-radius:18px;padding-right:42px;font-size:14px;font-weight:700;letter-spacing:.01em;}
.employee-request-select-wrap{position:relative;z-index:calc(var(--layer-modal) + 2);}
.employee-request-select-wrap.is-open{z-index:calc(var(--layer-modal) + 20);}
.employee-request-select-button{width:100%;min-height:var(--control-height);border:1px solid var(--control-border);border-radius:18px;background:
  linear-gradient(45deg, transparent 50%, #1f2937 50%) calc(100% - 22px) calc(50% - 3px)/7px 7px no-repeat,
  linear-gradient(135deg, #1f2937 50%, transparent 50%) calc(100% - 16px) calc(50% - 3px)/7px 7px no-repeat,
  #fff;
padding:12px 46px 12px 16px;font-weight:700;color:#0f172a;box-shadow:var(--control-shadow);cursor:pointer;text-align:left;font:inherit;}
.employee-request-select-button:hover{border-color:#b8c7d8;box-shadow:var(--shadow);}
.employee-request-select-button:focus-visible{outline:none;border-color:var(--brand2);box-shadow:var(--focus-ring),var(--shadow);}
.employee-request-select-menu{position:absolute;top:calc(100% + 10px);left:0;right:0;display:grid;gap:6px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-strong);z-index:calc(var(--layer-modal) + 21);}
.employee-request-select-option{border:none;background:#fff;padding:12px 14px;border-radius:14px;font:inherit;font-weight:700;color:#0f172a;cursor:pointer;text-align:left;}
.employee-request-select-option:hover,.employee-request-select-option.is-selected{background:var(--brand-soft);color:var(--brand2);}
.employee-requests-list-wrap{display:grid;gap:10px;}
.employee-request-list,.employee-request-admin-list,.employee-request-profile-list{display:grid;gap:12px;}
.employee-request-item,.employee-request-admin-item{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.employee-request-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;}
.employee-request-meta{display:grid;gap:8px;}
.employee-request-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.employee-request-title strong{font-size:16px;color:#0f172a;}
.employee-request-period,.employee-request-created,.employee-request-comment,.employee-request-reason,.employee-request-conflicts,.employee-request-empty,.employee-request-help{font-size:13px;line-height:1.45;color:#475569;}
.employee-request-comment,.employee-request-reason{padding:12px 14px;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-xs);}
.employee-request-reason{border-color:#fed7aa;background:#fff7ed;color:#9a3412;}
.employee-request-actions{display:flex;gap:8px;flex-wrap:wrap;}
.employee-request-status{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:12px;font-weight:800;box-shadow:var(--shadow-xs);}
.employee-request-status.is-pending{background:var(--brand-soft);border-color:#c4dafd;color:var(--brand2);}
.employee-request-status.is-approved{background:#ecfdf5;border-color:#a7f3d0;color:#047857;}
.employee-request-status.is-rejected{background:#fff7ed;border-color:#fed7aa;color:#9a3412;}
.employee-request-status.is-cancelled{background:#f8fafc;border-color:#cbd5e1;color:#64748b;}
.employee-request-admin-head,.employee-requests-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.employee-request-admin-item.is-pending{border-color:#bfdbfe;}
.employee-request-admin-item.is-approved{border-color:#a7f3d0;}
.employee-request-admin-item.is-rejected{border-color:#fed7aa;}
.employee-request-admin-item.is-cancelled{opacity:.88;}
.employee-request-admin-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;}
.employee-request-admin-stat{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.employee-request-admin-stat span{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#64748b;}
.employee-request-admin-stat strong{font-size:14px;color:#0f172a;}
.employee-request-conflict-box{padding:14px 16px;border-radius:16px;border:1px solid #fdba74;background:linear-gradient(180deg,#fffaf5,#fff4ea);color:#9a3412;font-size:13px;line-height:1.5;box-shadow:var(--shadow-xs);}
.employee-request-conflict-box strong{display:block;margin-bottom:4px;}
.employee-request-review-summary{display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;}
.employee-request-empty{padding:16px;border:1px dashed #cbd5e1;border-radius:16px;background:#fff;}
.employee-request-profile-list .employee-request-item{padding:12px;background:#fff;}
.employee-request-profile-list{margin-top:4px;}
.employee-requests-modal-card{width:min(1120px,100%);min-height:min(780px,calc(100vh - 48px));}
.employee-requests-modal-card :is(.modal-body,.sandbox-modal-body){overflow:visible;}
.employee-requests-modal-card .datewrap{z-index:calc(var(--layer-modal) + 2);}
.employee-requests-modal-card .employee-request-datewrap.is-open{z-index:calc(var(--layer-modal) + 20);}
.employee-requests-modal-card .date-popover{left:0;right:auto;transform:none;top:calc(100% + 12px);width:340px;max-width:min(340px,calc(100vw - 48px));}
.employee-requests-modal-card .date-popover::before,
.employee-requests-modal-card .ui-popover.ui-date-popover::before{display:none;}
.employee-requests-modal-card #employeeRequestEndDatePopover{left:auto;right:0;transform:none;}
.closed-day-datewrap .date-popover{left:50%;transform:translateX(-50%);top:calc(100% + 12px);width:340px;max-width:min(340px,calc(100vw - 48px));z-index:calc(var(--layer-modal) + 10);}
.employee-requests-modal-card .employee-request-grid{align-items:start;}
.employee-request-form textarea{width:100%;max-width:100%;min-width:100%;resize:vertical;font-family:inherit;}
.employee-request-form textarea::placeholder{font-family:inherit;font-size:14px;font-weight:500;color:#64748b;opacity:1;}
.employee-request-admin-section{display:grid;gap:12px;}
.employee-request-admin-section h5{margin:4px 0 0;font-size:14px;color:#0f172a;}
#manualVacationModal .manual-vacation-modal-card{width:min(1180px,100%);max-height:calc(100vh - 48px);}
.manual-vacation-modal-card .sandbox-modal-body{overflow-y:auto;overflow-x:visible;}
.manual-vacation-form{display:grid;gap:16px;}
.manual-vacation-grid{align-items:start;}
.manual-vacation-grid label{min-width:0;}
.manual-vacation-grid .ui-control{width:100%;min-width:0;max-width:100%;}
.manual-vacation-grid select.ui-control{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.manual-vacation-calendar-section{position:relative;display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.manual-vacation-calendar-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.manual-vacation-calendar-head strong{font-size:16px;color:#0f172a;}
.manual-vacation-calendar-head p{margin:4px 0 0;}
.manual-vacation-period-action{position:absolute;z-index:8;display:grid;padding:6px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;box-shadow:0 10px 20px rgba(15,23,42,.16);min-width:0;max-width:none;}
.manual-vacation-period-action::after{content:"";position:absolute;left:calc(var(--manual-vacation-action-pointer-left, 20px) - 6px);bottom:-7px;width:12px;height:12px;background:#eff6ff;border-right:1px solid #bfdbfe;border-bottom:1px solid #bfdbfe;transform:rotate(45deg);}
.manual-vacation-period-action.is-below-anchor::after{top:-8px;bottom:auto;transform:rotate(225deg);}
.manual-vacation-period-action-buttons{display:flex;gap:6px;}
.manual-vacation-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;border:1px solid #93c5fd;background:#fff;color:#0f766e;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease,transform .18s ease;}
.manual-vacation-icon-btn svg{display:block;fill:currentColor;}
.manual-vacation-icon-btn:hover{background:#ecfeff;border-color:#5eead4;transform:translateY(-1px);}
.manual-vacation-icon-btn.is-danger{color:#b91c1c;border-color:#fca5a5;}
.manual-vacation-icon-btn.is-danger:hover{background:#fef2f2;border-color:#f87171;}
.manual-vacation-modal-card .manual-vacation-calendar{position:relative;top:auto;left:auto;right:auto;transform:none;width:100%;max-width:100%;padding:16px;box-shadow:none;background:#fff;display:grid;}
.manual-vacation-modal-card .manual-vacation-calendar .date-popover-head{display:grid;}
.manual-vacation-calendar .date-popover-grid,
.manual-vacation-calendar .date-popover-weekdays{gap:8px;}
.manual-vacation-calendar .date-popover-day{min-height:48px;border-radius:16px;}
.manual-vacation-periods-section{display:grid;gap:10px;}
.manual-vacation-periods-section h4{margin:0;font-size:15px;color:#0f172a;}
.manual-vacation-period-list{display:grid;gap:10px;}
.manual-vacation-period-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);font-size:13px;font-weight:800;color:#0f172a;}
.manual-vacation-period-item span{line-height:1.4;}
.manual-vacation-admin-item .employee-request-status{background:#ecfdf5;border-color:#a7f3d0;color:#047857;}
.closed-day-comment-input{width:100%;max-width:100%;min-width:100%;resize:vertical;font-family:inherit;}
.closed-day-comment-input::placeholder{font-family:inherit;font-size:14px;font-weight:500;color:#64748b;opacity:1;}

.error{margin-top:10px;padding:14px;border-radius:16px;border:1px solid #fecaca;background:linear-gradient(180deg,#fff7f8,#fff1f2);color:#9f1239;font-weight:700;line-height:1.5;box-shadow:var(--shadow-xs);}

/* FullCalendar */
.fc{
  --fc-border-color: #e8edf3;
  --fc-page-bg-color: transparent;
  --fc-neutral-bg-color: transparent;
  --fc-today-bg-color: rgba(13,143,140,.04);
  --fc-small-font-size: 12px;
  font-size: 14px;
}
.fc .fc-toolbar{display:none;}
.fc .fc-timegrid-slot-label{color: var(--muted);font-weight:600;font-size:11.5px;}
.fc .fc-timegrid-slot{height:2.4em;}
.fc .fc-col-header-cell-cushion{color: var(--ink);font-weight:700;text-transform:lowercase;font-size:12.5px;padding:6px 4px;}
.fc .fc-col-header-cell.fc-day-today .fc-col-header-cell-cushion{color:var(--brand);font-weight:800;}
.fc .fc-timegrid-event-harness{padding-right: 5px;padding-left: 3px;padding-bottom: 3px;}
.fc .fc-timegrid-event,.fc .fc-daygrid-event,.fc .fc-event {--event-color:transparent;--event-open-fade:transparent;--event-close-fade-strong:transparent;--event-close-fade-mid:transparent;--event-close-fade-light:transparent;background: transparent !important;border: 0 !important;box-shadow: none !important;outline: none !important;overflow: visible !important;}
.fc .fc-event-resizer,.fc .fc-timegrid-event .fc-event-resizer {display: none !important;}
.fc a:focus,.fc button:focus,.fc .fc-event:focus,.fc .fc-event:focus-within {outline: none !important;box-shadow: none !important;}
.fc .fc-scrollgrid{border-radius:14px;border-color:#e8edf3;}
/* Section cells must stay square so header/body borders meet; per-section radius caused corner gaps and border spikes in month view. */
.fc .fc-scrollgrid-section > td,
.fc .fc-scrollgrid-section > th{border-radius:0;}
.fc .fc-scrollgrid-sync-inner,
.fc .fc-daygrid-day-frame,
.fc .fc-col-header-cell,
.fc .fc-daygrid-day{border-radius:0;}

/* Event card base */
.fc .fc-timegrid-event .fc-event-main,.fc .fc-daygrid-event .fc-event-main,.fc .fc-event .fc-event-main {position: relative;height: 100%;border-radius: 12px;overflow: visible;}
.fc .fc-timegrid-event .fc-event-main::before,.fc .fc-daygrid-event .fc-event-main::before,.fc .fc-event .fc-event-main::before {
  content:"";position:absolute;inset:2px;border-radius:12px;
  background:linear-gradient(to bottom,var(--event-open-fade,transparent) 0,transparent 40px),
             linear-gradient(to top,var(--event-close-fade-strong,transparent) 0,var(--event-close-fade-mid,transparent) 22px,var(--event-close-fade-light,transparent) 42px,transparent 64px),
             var(--event-color,transparent);
  box-shadow:0 3px 10px rgba(0,0,0,.08);z-index:0;
  transition:transform .14s ease,box-shadow .14s ease;
}
.fc .fc-event:hover .fc-event-main::before{transform:translateY(-1px) scale(1.01);box-shadow:0 8px 18px rgba(0,0,0,.12);}
.fc .fc-timegrid-event .fc-event-main-frame,.fc .fc-daygrid-event .fc-event-main-frame {position: relative;z-index: 2;padding: 6px 8px;}
.fc .fc-event-time,.fc .fc-event-title {position: relative;z-index: 2;color: #062b2b;font-weight: 800;line-height: 1.2;}

.fc .fc-event-main .ev {position: relative;z-index: 3;padding: 7px 9px;height: 100%;display:flex;flex-direction:column;overflow:hidden;}
.fc .fc-event-main .ev-time {font-size:10.5px;font-weight:700;color:#0a3332;opacity:.78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fc .fc-event-main .ev-title {font-size:12.5px;font-weight:800;color:#062b2b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* Small person icon prefix in ev-title */
.fc .fc-event-main .ev-title::before{
  content:"";
  display:inline-block;
  width:10px;height:10px;
  margin-right:4px;
  vertical-align:middle;
  opacity:.7;
  background:currentColor;
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z'/%3E%3C/svg%3E");
  mask-repeat:no-repeat;
  mask-size:contain;
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z'/%3E%3C/svg%3E");
  -webkit-mask-repeat:no-repeat;
  -webkit-mask-size:contain;
}

.fc .month-dot-event .fc-event-main::before{content:none !important;}
.fc .month-dot-event .fc-event-main-frame{padding:2px 4px !important;}
.fc .month-dot-event .fc-event-title,.fc .month-dot-event .fc-event-time{display:none !important;}
.shift-dot{display:inline-block;width:8px;height:8px;border-radius:999px;}
.shift-dot-normal{ background: var(--brand); }
.shift-dot-open{ background: #22c55e; }
.shift-dot-close{ background: #ef4444; }
.shift-dot-afterhours{ background: var(--shift-afterhours); }
.shift-dot-open-close{background: linear-gradient(to right, #22c55e 0 50%, #ef4444 50% 100%);}
.shift-dot-holiday{background:#2563a8;}
.month-event-row{display:flex;align-items:center;gap:6px;min-width:0;}
.month-event-text{font-size:11px;font-weight:700;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

.fc .fc-timegrid-col,.fc .fc-timegrid-col-frame,.fc .fc-daygrid-day-frame,.fc .fc-col-header-cell{cursor:pointer;}
.fc .fc-event-main .ev-initials {position: relative;z-index: 3;width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;font-weight: 800;font-size: 14px;letter-spacing: 0.02em;color: #062b2b;white-space: nowrap;}
.fc .fc-event-main .ev-initials.ev-initials-week {writing-mode: vertical-rl;text-orientation: upright;justify-content: flex-start;padding-top: 8px;}

/* Holiday event: white card with teal-blue border */
.fc .fc-event.holiday-calendar-event .fc-event-main::before{
  background:rgba(255,255,255,.95) !important;
  box-shadow:inset 0 0 0 1.5px rgba(37,99,168,.28), 0 3px 10px rgba(0,0,0,.06) !important;
}
.fc .fc-event.holiday-calendar-event .ev-time,
.fc .fc-event.holiday-calendar-event .ev-title{color:#1e4a8a;}
.fc .fc-event.holiday-calendar-event .fc-event-time,
.fc .fc-event.holiday-calendar-event .fc-event-title{color:#1e4a8a;}

.fc .fc-event.absent-event .fc-event-main::before,
.fc .fc-event.absent-event .fc-event-main{background:linear-gradient(135deg,#ef4444,#b91c1c) !important;color:#fff !important;}

/* Modal */
.modal,.sandbox-modal{position:fixed;inset:0;background:rgba(15,23,42,.32);backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px;z-index:var(--layer-modal);}
.modal-card,.sandbox-modal-card{width:min(560px,100%);background:#fff;border-radius:22px;border:1px solid var(--line);box-shadow:var(--shadow-strong);overflow:hidden;animation:modalEnter .22s ease;}
.modal-head,.sandbox-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px 14px;border-bottom:1px solid var(--line);}
.modal-head h3,.sandbox-modal-head h3{margin:0;font-size:16px;font-weight:800;letter-spacing:-.02em}
.modal-close,.sandbox-modal-close{border:none;background:var(--surface);border:1px solid var(--line);width:30px;height:30px;border-radius:999px;font-size:20px;line-height:1;color:var(--ink-soft);cursor:pointer;display:grid;place-items:center;}
.modal-body,.sandbox-modal-body{padding:16px 20px 20px;max-height:75vh;overflow:auto;display:grid;gap:14px;}
.datewrap .dateinput{width:170px;max-width:100%;}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="file"]),select,textarea){width:100%;min-height:var(--control-height);border:1px solid var(--control-border);border-radius:var(--control-radius);padding:12px 16px;font-size:14px;background:rgba(255,255,255,.92);color:var(--ink);box-shadow:var(--control-shadow);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease,transform .14s ease;}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="file"]),select,textarea):hover{border-color:#b8c7d8;}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="file"]),select,textarea):focus-visible,.btn:focus-visible,.iconbtn:focus-visible,.user-badge-btn:focus-visible,.user-menu-item:focus-visible,.modal-close:focus-visible,.sandbox-modal-close:focus-visible,.seg:focus-visible,.consistency-btn:focus-visible{outline:none;border-color:var(--brand2);box-shadow:var(--focus-ring);}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="date"],:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="time"]{cursor:pointer;}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) select{
  appearance:none;
  -webkit-appearance:none;
  -moz-appearance:none;
  padding-right:46px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 5.25 7 9l4-3.75' fill='none' stroke='%233c4a63' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"),linear-gradient(180deg,rgba(255,255,255,.98),rgba(249,251,255,.96));
  background-repeat:no-repeat,no-repeat;
  background-position:right 16px center,0 0;
  background-size:14px 14px,100% 100%;
}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) select option{
  background:#ffffff;
  color:var(--ink);
}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="time"],
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="date"]{
  border-radius:18px;
  padding-right:42px;
}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="time"]::-webkit-calendar-picker-indicator,
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="date"]::-webkit-calendar-picker-indicator{
  cursor:pointer;
  opacity:.88;
  filter:grayscale(.15) saturate(.75) brightness(.75);
}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="time"]::-webkit-datetime-edit,
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="date"]::-webkit-datetime-edit{
  color:var(--ink);
}
:is(.auth-card,.controls,.modal,.sandbox-modal,.dashboard-layout,.admin-panel,.user-menu,.user-management-list) input[type="checkbox"]{width:18px;height:18px;accent-color:var(--brand);cursor:pointer;border-radius:6px;flex:0 0 auto;}
.admin-form{display:grid;gap:14px;}
.admin-form label{display:grid;gap:8px;font-size:13px;font-weight:700;color:var(--ink-soft);}
.form-help{font-size:13px;font-weight:500;color:#64748b;line-height:1.55;}
.field-error{font-size:12px;font-weight:700;color:#b91c1c;}
.has-error{color:#991b1b !important;}
.input-invalid{border-color:#dc2626 !important;box-shadow:0 0 0 3px rgba(220,38,38,.15) !important;}
.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:6px;flex-wrap:wrap;}
.form-actions > .btn,
.form-actions > a.btn{min-width:132px;}
.checkbox-row{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--ink);}
.checkbox-row input[type="checkbox"]{margin:0;}
.repeat-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px;display:grid;gap:10px;}
.weekday-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;}
.weekday-grid label{display:flex;align-items:center;gap:6px;font-weight:600;}
.modal-message,.sandbox-modal-message{margin-top:10px;padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);font-size:13px;font-weight:600;line-height:1.55;}
.admin-period-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.planner-remove-summary strong{color:var(--ink);}
.modal-info,.sandbox-modal-info{margin:0;color:var(--ink-soft);font-weight:600;line-height:1.55;}
.dirty-confirm-card{width:min(520px,calc(100% - 24px));}
.dirty-confirm-modal{z-index:calc(var(--layer-modal) + 20);}
.dirty-confirm-body{display:grid;gap:14px;}
.dirty-confirm-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.dirty-confirm-actions .btn{width:100%;}
.dirty-confirm-card.is-busy .dirty-confirm-actions .btn,
.dirty-confirm-card.is-busy :is(.modal-close,.sandbox-modal-close){opacity:.65;pointer-events:none;}
.dirty-confirm-message-error{border-color:#fecaca;background:#fef2f2;color:#b91c1c;}
.sandbox-modal-close:focus-visible{
  outline:none;
  box-shadow:var(--focus-ring);
}

.sandbox-modal-info{
  margin:0;
  color:var(--ink-soft);
  font-weight:600;
  line-height:1.55;
}
.sandbox-modal-info--secondary{
  font-weight:400;
  font-size:.875rem;
  color:var(--ink-faint,#6b7280);
  margin-top:4px;
}

/* Hours date row — Fra/Til side by side */
.hours-date-row{
  display:flex;
  align-items:stretch;
  border:1px solid var(--control-border,#d1dbe8);
  border-radius:18px;
  background:rgba(255,255,255,.92);
  box-shadow:var(--control-shadow);
  overflow:visible;
  position:relative;
}
.hours-date-row::after{
  content:'';
  position:absolute;
  left:50%;
  top:12px;
  bottom:12px;
  width:1px;
  background:var(--control-border,#d1dbe8);
  pointer-events:none;
}
.hours-date-row .ui-field{
  flex:1;
  margin:0;
  min-width:0;
  position:relative;
  display:flex;
  flex-direction:column;
  padding:10px 16px 10px;
}
.hours-date-row .ui-field-label{
  padding:0;
  font-size:.7rem;
  font-weight:600;
  color:var(--ink-soft,#6b7280);
  text-transform:uppercase;
  letter-spacing:.04em;
  display:block;
  margin-bottom:3px;
}
.hours-date-row .ui-unified-date-field{
  width:100%;
  max-width:100%;
}
.hours-date-row .datewrap{
  position:static;
}
.hours-date-row .dateinput{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  border:none !important;
  box-shadow:none !important;
  border-radius:0;
  background:transparent;
  padding:0 40px 0 0;
  min-height:unset;
  font-size:1rem;
  line-height:1.4;
}
.hours-date-row .dateinput:focus-visible{
  outline:none;
  box-shadow:none !important;
}
.hours-date-row .ui-date-toggle{
  position:absolute;
  right:10px;
  top:50%;
  transform:translateY(-50%);
}
.hours-date-row:focus-within{
  border-color:var(--brand2,#0d9b97);
  box-shadow:0 0 0 2px rgba(13,155,151,.15);
}

/* Hours period preset buttons */
.hours-period-btns{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-bottom:2px;
}
.hours-period-btn{
  background:var(--surface-raised,#f1f5f9);
  border:1px solid var(--border,#e2e8f0);
  border-radius:8px;
  padding:5px 11px;
  font-size:.75rem;
  font-weight:500;
  color:var(--ink-soft,#6b7280);
  cursor:pointer;
  transition:background .12s,border-color .12s,color .12s;
  line-height:1.4;
}
.hours-period-btn:hover{
  background:#e9f5f5;
  border-color:#9dd4d4;
  color:var(--ink,#1e293b);
}
.hours-period-btn.is-current{
  border-color:#9dd4d4;
  color:#0d9b97;
  font-weight:600;
}
.hours-period-btn.is-selected{
  background:#e3f4f4;
  border-color:#0d9b97;
  color:#0d9b97;
  font-weight:700;
}
.hours-norm-period-row{
  margin:4px 0 8px;
}
.hours-norm-period-btn{
  font-size:.8125rem;
}
.hours-norm-section{
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid var(--line,#e2e8f0);
  display:grid;
  gap:8px;
}
.hours-norm-heading{
  font-size:13px;
  font-weight:700;
  color:#0f172a;
}
.hours-norm-meta{
  font-size:12px;
  color:#475569;
}
.hours-norm-grid{
  display:grid;
  gap:8px;
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
}
.hours-norm-cell{
  display:grid;
  gap:4px;
  padding:10px 12px;
  border:1px solid var(--line,#e2e8f0);
  border-radius:10px;
  background:#f8fafc;
  font-size:12px;
  color:#475569;
}
.hours-norm-cell strong{
  font-size:14px;
  color:#0f172a;
}
.hours-norm-warning{
  padding:12px;
  border:1px solid #fcd34d;
  border-radius:12px;
  background:#fffbeb;
}
.hours-norm-warning p{
  margin:0 0 10px;
  font-size:13px;
  color:#92400e;
}

/* Hours note area */
.hours-note-area{
  border:1px solid var(--border,#e2e8f0);
  border-radius:10px;
  overflow:hidden;
  background:#fafcfc;
}
.hours-note-toggle{
  display:flex;
  align-items:center;
  justify-content:space-between;
  width:100%;
  padding:9px 12px;
  background:transparent;
  border:none;
  cursor:pointer;
  text-align:left;
  gap:8px;
}
.hours-note-toggle:hover{
  background:#f1f7f7;
}
.hours-note-label{
  font-size:.8125rem;
  font-weight:600;
  color:var(--ink-soft,#6b7280);
  flex:1;
}
.hours-note-toggle-chevron{
  width:16px;
  height:16px;
  flex-shrink:0;
  color:var(--ink-faint,#94a3b8);
}
.hours-note-toggle-chevron::after{
  content:'›';
  display:block;
  font-size:14px;
  line-height:1;
  transform:rotate(90deg);
  transition:transform .2s;
}
.hours-note-toggle[aria-expanded="true"] .hours-note-toggle-chevron::after{
  transform:rotate(270deg);
}
.hours-note-body{
  padding:0 12px 12px;
  border-top:1px solid var(--border,#e2e8f0);
}
.hours-note-actions{
  display:flex;
  justify-content:flex-end;
  margin-top:8px;
}
.hours-prev-notes{
  margin-top:12px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.hours-prev-notes-heading{
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.05em;
  color:var(--ink-faint,#94a3b8);
  padding-bottom:4px;
  border-bottom:1px solid var(--border,#e2e8f0);
  margin-bottom:2px;
}
.hours-prev-note-current-badge{
  display:inline-block;
  font-size:.65rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  background:#e3f4f4;
  color:#0d9b97;
  border-radius:4px;
  padding:1px 5px;
  margin-left:5px;
  vertical-align:middle;
}
.hours-prev-note-item.is-current-period{
  border-color:#9dd4d4;
  background:#f5fcfc;
}
.hours-prev-notes-empty{
  font-size:.8125rem;
  color:var(--ink-faint,#94a3b8);
  font-style:italic;
  margin:0;
}
.hours-prev-note-item{
  border:1px solid var(--border,#e2e8f0);
  border-radius:8px;
  padding:8px 10px;
  background:#fff;
}
.hours-prev-note-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  margin-bottom:4px;
}
.hours-prev-note-actions{
  display:flex;
  gap:4px;
  flex-shrink:0;
}
.hours-prev-note-btn{
  background:transparent;
  border:1px solid var(--border,#e2e8f0);
  border-radius:6px;
  padding:2px 9px;
  font-size:.7rem;
  font-weight:600;
  color:var(--ink-soft,#6b7280);
  cursor:pointer;
  transition:background .12s,color .12s,border-color .12s;
  white-space:nowrap;
}
.hours-prev-note-btn:hover{
  background:#f1f5f9;
  color:var(--ink,#1e293b);
}
.hours-prev-note-btn.is-delete{
  color:#b91c1c;
  border-color:#fecaca;
}
.hours-prev-note-btn.is-delete:hover{
  background:#fef2f2;
  border-color:#f87171;
}
.hours-prev-note-period{
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:var(--ink-soft,#6b7280);
  margin-bottom:2px;
}
.hours-prev-note-meta{
  font-size:.7rem;
  color:var(--ink-faint,#94a3b8);
  margin-bottom:4px;
}
.hours-prev-note-text{
  font-size:.8125rem;
  color:var(--ink,#1e293b);
  white-space:pre-wrap;
  line-height:1.5;
}
.hours-note-textarea{
  width:100%;
  min-height:72px;
  resize:vertical;
  box-sizing:border-box;
  font-size:.875rem;
  line-height:1.5;
  border:1px solid var(--border,#e2e8f0);
  border-radius:7px;
  padding:8px 10px;
  background:#fff;
  color:var(--ink,#1e293b);
  font-family:inherit;
  transition:border-color .15s;
  margin-top:10px;
}
.hours-note-textarea:focus{
  outline:none;
  border-color:#0d9b97;
  box-shadow:0 0 0 2px rgba(13,155,151,.15);
}
.btn-sm{
  padding:4px 12px;
  font-size:.8rem;
  border-radius:7px;
}

/* Hours mode toggle */
.hours-mode-toggle{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:4px;
  background:var(--surface-raised,#f1f5f9);
  border-radius:10px;
  padding:4px;
  margin-bottom:4px;
}
.hours-mode-btn{
  background:transparent;
  border:none;
  border-radius:7px;
  padding:7px 10px;
  font-size:.8125rem;
  font-weight:500;
  color:var(--ink-soft,#6b7280);
  cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s;
  line-height:1.3;
}
.hours-mode-btn.is-active{
  background:#fff;
  color:var(--ink,#1e293b);
  box-shadow:0 1px 3px rgba(0,0,0,.1);
  font-weight:600;
}
.hours-mode-btn:not(.is-active):hover{
  color:var(--ink,#1e293b);
}

/* Hours employee list (all-employees mode) */
.hours-emp-list{
  display:flex;
  flex-direction:column;
  gap:4px;
  margin-top:2px;
}
.hours-emp-row{
  border:1px solid var(--border,#e2e8f0);
  border-radius:10px;
  overflow:hidden;
  background:#fff;
  transition:border-color .15s;
}
.hours-emp-row:hover{
  border-color:#b2dada;
}
.hours-emp-row.is-open{
  border-color:#0d9b97;
}
.hours-emp-row-header{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 12px;
  cursor:pointer;
  user-select:none;
}
.hours-emp-name{
  flex:1;
  font-size:.875rem;
  font-weight:600;
  color:var(--ink,#1e293b);
  min-width:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.hours-emp-quick{
  display:flex;
  gap:6px;
  align-items:center;
  flex-shrink:0;
}
.hours-list-normal{
  font-size:.8125rem;
  font-weight:600;
  color:#0d9b97;
  background:#f0fafa;
  border-radius:6px;
  padding:2px 7px;
  min-width:72px;
  text-align:left;
  display:inline-block;
}
.hours-list-ah{
  font-size:.8125rem;
  font-weight:600;
  color:var(--shift-afterhours,#f4a261);
  background:#fff8f2;
  border-radius:6px;
  padding:2px 7px;
  min-width:64px;
  text-align:left;
  display:inline-block;
}
.hours-list-ah.is-zero{
  color:var(--ink-faint,#cbd5e1);
  background:transparent;
}
.hours-emp-chevron{
  flex-shrink:0;
  width:18px;
  height:18px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--ink-faint,#94a3b8);
  font-size:11px;
  transition:transform .2s;
}
.hours-emp-chevron::after{
  content:'›';
  display:block;
  transform:rotate(90deg);
  transition:transform .2s;
  font-size:14px;
  line-height:1;
}
.hours-emp-row.is-open .hours-emp-chevron::after{
  transform:rotate(270deg);
}
.hours-emp-detail{
  padding:12px 12px 14px;
  border-top:1px solid var(--border,#e2e8f0);
  background:#fafcfc;
}
.hours-emp-detail .hours-split-grid{
  margin-bottom:10px;
}
.hours-emp-detail .hours-summary-details{
  font-size:.8125rem;
}

/* Hours split grid (normal vs after-hours) */
.hours-split-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-bottom:12px;
}
.hours-split-cell{
  background:#f0fafa;
  border:1px solid #b2dada;
  border-radius:10px;
  padding:10px 14px;
  text-align:center;
}
.hours-split-cell.is-after-hours{
  background:#fff8f2;
  border-color:#f4c09a;
}
.hours-split-label{
  font-size:.75rem;
  font-weight:600;
  color:var(--ink-soft,#6b7280);
  text-transform:uppercase;
  letter-spacing:.04em;
  margin-bottom:4px;
}
.hours-split-cell.is-after-hours .hours-split-label{
  color:var(--shift-afterhours,#f4a261);
}
.hours-split-value{
  font-size:1.35rem;
  font-weight:700;
  color:#0d9b97;
}
.hours-split-cell.is-after-hours .hours-split-value{
  color:var(--shift-afterhours,#f4a261);
}
.hours-summary-details{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:.875rem;
  color:var(--ink-soft,#6b7280);
  font-weight:400;
}
.hours-summary-details strong{
  color:var(--ink,#1e293b);
  font-weight:600;
}

/* Hours calendar toggle */
.hours-calendar-wrap{
  border:1px solid var(--border,#e2e8f0);
  border-radius:10px;
  overflow:hidden;
  background:#fafcfc;
}
.hours-calendar-toggle{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  padding:10px 14px;
  background:transparent;
  border:none;
  cursor:pointer;
  text-align:left;
  user-select:none;
}
.hours-calendar-toggle:hover{
  background:#f1f7f7;
}
.hours-calendar-toggle-label{
  flex:1;
  font-size:.8125rem;
  font-weight:600;
  color:var(--ink,#1e293b);
}
.hours-calendar-toggle-chevron{
  width:16px;
  height:16px;
  color:var(--ink-faint,#94a3b8);
  flex-shrink:0;
}
.hours-calendar-toggle-chevron::after{
  content:'›';
  display:block;
  font-size:14px;
  line-height:1;
  transform:rotate(90deg);
  transition:transform .2s;
}
.hours-calendar-toggle[aria-expanded="true"] .hours-calendar-toggle-chevron::after{
  transform:rotate(270deg);
}
.hours-calendar-body{
  border-top:1px solid var(--border,#e2e8f0);
  padding:12px;
  overflow-x:auto;
}

/* Hours-emp calendar (all-employee mode, inside accordion) */
.hours-emp-calendar{
  margin-top:10px;
}
.hours-emp-calendar:empty{
  display:none;
}

/* Mini calendar grid (hcal) */
.hcal{
  display:flex;
  flex-direction:column;
  gap:16px;
  min-width:0;
}
.hcal-month{
  min-width:0;
}
.hcal-month-title{
  font-size:.8125rem;
  font-weight:700;
  color:var(--ink,#1e293b);
  text-transform:capitalize;
  margin-bottom:6px;
  letter-spacing:-.01em;
}
.hcal-weekdays{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:2px;
  margin-bottom:3px;
}
.hcal-weekdays span{
  font-size:.65rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.04em;
  padding:2px 0;
}
.hcal-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:2px;
}
.hcal-day{
  min-height:40px;
  border-radius:6px;
  padding:3px 4px;
  background:#fff;
  border:1px solid var(--border,#e2e8f0);
  display:flex;
  flex-direction:column;
  gap:2px;
  overflow:hidden;
}
.hcal-day-pad{
  background:transparent;
  border-color:transparent;
  pointer-events:none;
}
.hcal-day-out{
  background:transparent;
  border-color:transparent;
}
.hcal-day-out .hcal-day-num{
  color:var(--ink-faint,#cbd5e1);
}
.hcal-day-has-shift{
  border-color:#b2dada;
}
.hcal-day-num{
  font-size:.65rem;
  font-weight:700;
  color:var(--ink-soft,#6b7280);
  line-height:1.2;
  align-self:flex-start;
}
.hcal-shifts{
  display:flex;
  flex-direction:column;
  gap:1px;
  min-width:0;
}
.hcal-shift{
  display:block;
  font-size:.6rem;
  font-weight:600;
  padding:1px 3px;
  border-radius:3px;
  line-height:1.4;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.hcal-shift-normal{
  background:#e5f6f5;
  color:#0d7e7b;
}
.hcal-shift-ah{
  background:#fff1e6;
  color:#c96a1a;
}
.hcal-shift-internal{
  background:#ede9fe;
  color:#5b21b6;
}
.hcal-empty{
  font-size:.8125rem;
  color:var(--ink-faint,#94a3b8);
  margin:0;
  padding:4px 0;
}

/* ── Vacation overview modal (ferie kalenderoverblik) ───────────────── */
.vacation-overview-open-btn{
  margin-bottom:12px;
}
.vacation-overview-modal-card{
  width:min(1600px,98vw);
  height:auto;
  max-height:96vh;
  display:flex;
  flex-direction:column;
}
/* fuld højde kun når editor er åben (scroll i højre panel) */
.vacation-overview-modal-card:has(.vcal-split-wrap.has-editor){
  height:96vh;
}
.vacation-overview-modal-card .sandbox-modal-head{
  padding:8px 16px 6px;
  border-bottom:1px solid var(--line,#e2e8f0);
  background:#fff;
}
.vacation-overview-modal-card .sandbox-modal-body.vacation-overview-modal-body{
  flex:1;
  overflow:hidden;
  padding:4px 16px 10px;
  display:flex;
  flex-direction:column;
  min-height:0;
  max-height:none;
  gap:4px;
}
/* uden editor: hele indholdet må scrolle; med editor: kun højre panel */
.vacation-overview-modal-body:not(:has(.vcal-split-wrap.has-editor)){
  overflow-y:auto;
  overflow-x:auto;
}

/* toolbar – synlig med editor; "Tilføj ferie" skjules når editoren er åben */
.vacation-overview-toolbar{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:0;
  flex-shrink:0;
}
.vacation-overview-modal-body:has(.vcal-split-wrap.has-editor) .vacation-overview-toolbar{
  position:sticky;
  top:0;
  z-index:2;
  background:#fff;
  padding-bottom:6px;
  margin-bottom:0;
}
.vacation-overview-view-tabs{
  display:flex;
  gap:4px;
}
.vacation-overview-view-tab{
  border:1px solid var(--line,#cbd5e1);
  background:#fff;
  border-radius:8px;
  padding:5px 12px;
  font:inherit;
  font-size:.75rem;
  font-weight:700;
  color:var(--ink-faint,#64748b);
  cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.vacation-overview-view-tab:hover{background:var(--brand-soft,#e6f7f7);color:var(--brand2,#0d9b97);}
.vacation-overview-view-tab.is-active{background:var(--brand2,#0d9b97);color:#fff;border-color:var(--brand2,#0d9b97);}
.vacation-overview-nav{
  display:flex;
  align-items:center;
  gap:6px;
}
.vacation-overview-nav-btn{
  border:1px solid var(--line,#cbd5e1);
  background:#fff;
  border-radius:8px;
  width:28px;
  height:28px;
  font-size:16px;
  line-height:1;
  cursor:pointer;
  color:var(--ink,#1e293b);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0;
  transition:background .15s;
}
.vacation-overview-nav-btn:hover{background:var(--brand-soft,#e6f7f7);}
.vacation-overview-range-label{
  font-size:.8125rem;
  font-weight:700;
  color:var(--ink,#1e293b);
  min-width:120px;
  text-align:center;
}
.vacation-overview-today-btn{font-size:.75rem;padding:5px 12px;}
.vacation-overview-add-btn{font-size:.75rem;padding:5px 14px;margin-left:auto;}
.vacation-overview-modal-body:has(.vcal-split-wrap.has-editor) .vacation-overview-add-btn{display:none;}

/* legend */
.vacation-overview-legend{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-bottom:4px;
}
/* månedstitel i grid – dublikerer værktøjslinjens periode-label */
.vacation-overview-calendar .vcal-month-title{
  display:none;
}
.vacation-overview-calendar .vcal-month{
  gap:4px;
}
.vcal-legend-item{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:.75rem;
  color:var(--ink,#1e293b);
  font-weight:600;
}
.vcal-legend-dot{
  width:10px;
  height:10px;
  border-radius:50%;
  flex-shrink:0;
}

/* calendar area – ingen vertikal udstrækning (kun i overbliks-modal) */
.vacation-overview-modal-card .vcal-split-wrap{
  flex:1 1 auto;
  min-height:0;
  align-items:flex-start;
}
.vacation-overview-modal-card .vcal-split-calendar{
  flex:1 1 auto;
  min-height:0;
  justify-content:flex-start;
}
.vacation-overview-modal-card .vacation-overview-calendar{
  min-width:0;
  flex:0 0 auto;
  display:flex;
  flex-direction:column;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-month{
  flex:0 0 auto;
  gap:2px;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-month-grid-wrap{
  flex:none;
  grid-auto-rows:auto;
  align-content:start;
}
/* dagceller vokser med antal ferier i ugen; chips skaleres ned ved mange */
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day{
  --vcal-chip-row:20px;
  --vcal-chip-gap:2px;
  min-height:max(72px, calc(18px + var(--vcal-slot-rows, 1) * (var(--vcal-chip-row) + var(--vcal-chip-gap))));
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-compact{
  --vcal-chip-row:16px;
  --vcal-chip-gap:2px;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-dense{
  --vcal-chip-row:13px;
  --vcal-chip-gap:1px;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-extra-dense{
  --vcal-chip-row:11px;
  --vcal-chip-gap:1px;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day-chips{gap:var(--vcal-chip-gap);}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-chip{
  min-height:var(--vcal-chip-row);
  height:var(--vcal-chip-row);
  font-size:.6rem;
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-compact .vcal-chip{font-size:.55rem;padding:0 4px;}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-dense .vcal-chip{font-size:.5rem;padding:0 3px;}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-day.is-extra-dense .vcal-chip{font-size:.45rem;padding:0 2px;}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-chip-placeholder{
  min-height:var(--vcal-chip-row);
  height:var(--vcal-chip-row);
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-chip.is-span-start,
.vacation-overview-modal-card .vacation-overview-calendar .vcal-chip.is-span-mid,
.vacation-overview-modal-card .vacation-overview-calendar .vcal-chip.is-span-end{
  min-height:var(--vcal-chip-row);
  height:var(--vcal-chip-row);
}
.vacation-overview-modal-card .vacation-overview-calendar .vcal-week-cell{
  min-height:56px;
}

/* month view (generelt) */
.vcal-month{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;}
.vcal-month-title{
  font-size:.875rem;
  font-weight:700;
  color:var(--ink,#1e293b);
  text-transform:capitalize;
  margin-bottom:6px;
  letter-spacing:-.01em;
}
.vcal-weekdays{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:2px;
  margin-bottom:3px;
}
.vcal-weekdays span{
  font-size:.65rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  text-align:center;
  text-transform:uppercase;
  letter-spacing:.04em;
  padding:2px 0;
}
.vcal-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:2px;
}
.vcal-day-pad{min-height:52px;}
.vcal-day{
  min-height:52px;
  padding:3px 4px;
  border-radius:6px;
  background:#fff;
  border:1px solid var(--border,#e2e8f0);
  display:flex;
  flex-direction:column;
  gap:2px;
  cursor:default;
}
.vcal-day.is-today{border-color:var(--brand2,#0d9b97);background:var(--brand-soft,#e6f7f7);}
.vcal-day.is-clickable{cursor:pointer;}
.vcal-day.is-clickable:hover{background:#f8fefe;}
.vcal-day-num{
  font-size:.65rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  line-height:1;
}
.vcal-day-chips{display:flex;flex-direction:column;gap:2px;overflow:visible;}
.vcal-chip{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  font-size:.6rem;
  font-weight:800;
  line-height:1;
  padding:0 5px;
  min-height:20px;
  height:20px;
  box-sizing:border-box;
  border-radius:4px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
  color:#fff;
  cursor:pointer;
  background:var(--vcal-color,#7c3aed);
}
.vcal-chip.is-request{opacity:.85;}
.vcal-chip.is-manual{opacity:1;}
/* ── Spanning period chips (connected bar across days) ── */
.vcal-chip.is-span-start,
.vcal-chip.is-span-mid,
.vcal-chip.is-span-end{
  display:flex;
  width:100%;
  max-width:none;
  box-sizing:border-box;
  position:relative;
  z-index:3;
  /* bridge 4px right-padding + 1px border + 2px gap + 1px border + 4px left-padding = 12px */
}
.vcal-chip.is-span-start{
  border-top-right-radius:0;
  border-bottom-right-radius:0;
  min-height:20px;
  height:20px;
  box-shadow:12px 0 0 0 var(--chip-color);
}
.vcal-chip.is-span-mid{
  border-radius:0;
  font-size:0;
  min-height:20px;
  height:20px;
  cursor:pointer;
  box-shadow:12px 0 0 0 var(--chip-color),-12px 0 0 0 var(--chip-color);
}
.vcal-chip.is-span-end{
  border-top-left-radius:0;
  border-bottom-left-radius:0;
  font-size:0;
  min-height:20px;
  height:20px;
  cursor:pointer;
  box-shadow:-12px 0 0 0 var(--chip-color);
}
.vcal-chip-placeholder{
  display:block;
  min-height:20px;
  height:20px;
  visibility:hidden;
}
.vcal-overflow{
  font-size:.6rem;
  color:var(--ink-faint,#94a3b8);
  font-weight:700;
  padding:0 2px;
}

/* week view */
.vcal-week-grid{
  display:grid;
  grid-template-columns:auto repeat(7,1fr);
  gap:2px;
}
.vcal-week-head{
  font-size:.65rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  text-align:center;
  padding:4px 2px;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.vcal-week-head.is-today{color:var(--brand2,#0d9b97);}
.vcal-week-corner{font-size:.6rem;color:var(--ink-faint,#94a3b8);padding:4px 6px;font-weight:700;}
.vcal-week-emp-label{
  font-size:.7rem;
  font-weight:700;
  color:var(--ink,#1e293b);
  padding:6px 8px;
  display:flex;
  align-items:center;
  gap:5px;
  border-right:1px solid var(--border,#e2e8f0);
}
.vcal-week-cell{
  border-radius:4px;
  border:1px solid var(--border,#e2e8f0);
  background:#fff;
  min-height:36px;
  padding:2px;
  display:flex;
  flex-direction:column;
  gap:2px;
  cursor:pointer;
}
.vcal-week-cell:hover{background:#f8fefe;}
.vcal-week-cell.is-today{border-color:var(--brand2,#0d9b97);background:var(--brand-soft,#e6f7f7);}
.vcal-week-fill{
  border-radius:3px;
  height:24px;
  background:var(--vcal-color,#7c3aed);
  opacity:.85;
  cursor:pointer;
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:.6rem;
  font-weight:800;
  color:#fff;
}
.vcal-week-fill.is-request{opacity:.7;}

/* day view */
.vcal-day-view{display:flex;flex-direction:column;gap:8px;}
.vcal-day-view-empty{
  font-size:.8125rem;
  color:var(--ink-faint,#94a3b8);
  padding:12px 0;
}
.vcal-day-row{
  display:flex;
  align-items:center;
  gap:10px;
  padding:8px 10px;
  border:1px solid var(--border,#e2e8f0);
  border-radius:10px;
  background:#fff;
  cursor:pointer;
  position:relative;
  z-index:1;
}
.vcal-day-row:hover{background:#f8fefe;}
.vcal-day-row-chip{
  flex-shrink:0;
  width:32px;
  height:32px;
  border-radius:8px;
  background:var(--vcal-color,#7c3aed);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:.65rem;
  font-weight:800;
  color:#fff;
}
.vcal-day-row-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;}
.vcal-day-row-name{font-size:.8125rem;font-weight:700;color:var(--ink,#1e293b);}
.vcal-day-row-detail{font-size:.75rem;color:var(--ink-faint,#64748b);}
.vcal-day-row-source{
  font-size:.65rem;
  font-weight:700;
  padding:2px 7px;
  border-radius:999px;
  background:var(--brand-soft,#e6f7f7);
  color:var(--brand2,#0d9b97);
  flex-shrink:0;
}
.vcal-day-row-source.is-request{background:#f1f5f9;color:#64748b;}

.vacation-overview-empty{
  font-size:.8125rem;
  color:var(--ink-faint,#94a3b8);
  padding:16px 0;
  text-align:center;
}

/* ── Vcal split layout ──────────────────────────────────────────────── */
.vcal-split-wrap{
  display:flex;
  gap:0;
  min-width:0;
  flex:1;
  min-height:0;
  align-items:stretch;
}
.vcal-split-wrap.has-editor{
  overflow:hidden;
}
.vcal-split-calendar{
  flex:1;
  min-width:0;
  min-height:0;
  display:flex;
  flex-direction:column;
}
/* when editor is active the calendar shrinks and editor slides in */
.vcal-split-wrap.has-editor .vcal-split-calendar{
  min-width:0;
  overflow:hidden;
  flex-shrink:1;
}

/* ── Inline vacation editor pane ───────────────────────────────────── */
.vcal-editor{
  width:300px;
  flex-shrink:0;
  border-left:1px solid var(--line,#e2e8f0);
  margin-left:16px;
  padding-left:16px;
  display:flex;
  flex-direction:column;
  gap:0;
  min-height:0;
  animation:vcal-editor-in .18s ease;
}
.vcal-split-wrap.has-editor .vcal-editor{
  max-height:100%;
  overflow:hidden;
}
@keyframes vcal-editor-in{
  from{opacity:0;transform:translateX(12px)}
  to{opacity:1;transform:translateX(0)}
}
.vcal-editor.hidden{display:none;}
.vcal-editor-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:12px;
  flex-shrink:0;
}
.vcal-editor-title{
  font-size:.875rem;
  font-weight:700;
  color:var(--ink,#1e293b);
}
.vcal-editor-body{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-height:0;
}
.vcal-split-wrap.has-editor .vcal-editor-body{
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
  padding-right:4px;
}
.vcal-editor-fields{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.vcal-editor-note-field{ flex:1; }
.vcal-editor-cal-wrap{
  border:1px solid var(--line,#e2e8f0);
  border-radius:10px;
  padding:8px;
  background:#fcfcfc;
}
.vcal-editor-cal-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:6px;
}
.vcal-editor-cal-label{
  font-size:.75rem;
  font-weight:700;
  color:var(--ink,#1e293b);
  text-align:center;
  flex:1;
  text-transform:capitalize;
}
.vcal-editor-cal-grid{
  display:grid;
  grid-template-columns:auto repeat(7,1fr);
  column-gap:0;
  row-gap:2px;
  user-select:none;
}
.vcal-editor-cal-grid .date-popover-weekday{
  font-size:.6rem;
  text-align:center;
  color:var(--ink-faint,#94a3b8);
  font-weight:700;
  padding:2px 0;
}
.vcal-editor-cal-grid .date-popover-day{
  font-size:.7rem;
  min-width:24px;
  min-height:24px;
  padding:0;
  border-radius:4px;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  color:var(--ink,#1e293b);
  position:relative;
}
.vcal-editor-cal-grid .date-popover-day:hover{background:var(--brand-soft,#e6f7f7);}
.vcal-editor-cal-grid .date-popover-day.is-outside{color:var(--ink-faint,#cbd5e1);}
.vcal-editor-cal-grid .date-popover-day.is-today:not(.is-selected):not(.is-selection-pending){font-weight:700;color:var(--brand2,#0d9b97);}
.vcal-editor-cal-grid .date-popover-day.is-selected{
  background:var(--brand2,#0d9b97);
  color:#fff;
  border-radius:0;
  box-shadow:none;
}
.vcal-editor-cal-grid .date-popover-day.is-selected.is-today{color:#fff;box-shadow:none;}
.vcal-editor-cal-grid .date-popover-day.is-selected.is-range-single{border-radius:4px;}
.vcal-editor-cal-grid .date-popover-day.is-selected.is-range-start{
  border-top-left-radius:4px;
  border-bottom-left-radius:4px;
  border-top-right-radius:0;
  border-bottom-right-radius:0;
}
.vcal-editor-cal-grid .date-popover-day.is-selected.is-range-end{
  border-top-left-radius:0;
  border-bottom-left-radius:0;
  border-top-right-radius:4px;
  border-bottom-right-radius:4px;
}
.vcal-editor-cal-grid .date-popover-day.is-selected.is-range-middle{
  border-radius:0;
  background:var(--brand2,#0d9b97);
  color:#fff;
}
.vcal-editor-cal-grid .date-popover-day.is-selection-pending{
  background:var(--brand-soft,#e0f5f5);
  color:var(--brand2,#0d9b97);
  border-radius:0;
  box-shadow:none;
}
.vcal-editor-cal-grid .date-popover-day.is-selection-pending.is-range-single{border-radius:4px;}
.vcal-editor-cal-grid .date-popover-day.is-selection-pending.is-range-start{border-radius:4px 0 0 4px;}
.vcal-editor-cal-grid .date-popover-day.is-selection-pending.is-range-end{border-radius:0 4px 4px 0;}
.vcal-editor-weeknr{
  font-size:.6rem;
  color:var(--ink-faint,#94a3b8);
  font-weight:700;
  text-align:center;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:0 3px;
  cursor:default;
}
.vcal-editor-hint-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
.vcal-editor-period-btn{font-size:.7rem;padding:4px 10px;flex-shrink:0;}
.vcal-editor-period-btn.is-active{background:var(--brand2,#0d9b97);color:#fff;border-color:var(--brand2,#0d9b97);}
.vcal-editor-period-list{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.vcal-editor-period-list:not(:empty){
  max-height:120px;
  overflow-y:auto;
}
.vcal-split-wrap.has-editor .vcal-editor-period-list:not(:empty){
  max-height:none;
  overflow:visible;
}
.vcal-editor-period-item.is-focused{
  border-color:var(--brand2,#0d9b97);
  background:var(--brand-soft,#e6f7f7);
}
.vcal-editor-period-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:6px;
  font-size:.75rem;
  padding:4px 8px;
  border:1px solid var(--line,#e2e8f0);
  border-radius:6px;
  background:#fff;
}
.vcal-editor-period-remove{
  background:none;
  border:none;
  cursor:pointer;
  color:var(--ink-faint,#94a3b8);
  font-size:14px;
  line-height:1;
  padding:0 2px;
  flex-shrink:0;
}
.vcal-editor-period-remove:hover{color:var(--error,#dc2626);}
.vcal-editor-queue-list{
  display:grid;
  gap:6px;
  margin-top:4px;
  padding:8px;
  border:1px solid var(--line,#e2e8f0);
  border-radius:10px;
  background:#f8fafc;
  max-height:120px;
  overflow-y:auto;
}
.vcal-editor-queue-list.hidden{display:none;}
.vcal-editor-queue-item{
  display:flex;
  align-items:flex-start;
  gap:8px;
  font-size:.7rem;
  color:var(--ink,#1e293b);
}
.vcal-editor-queue-label{flex:1;min-width:0;line-height:1.35;}
.vcal-editor-queue-remove{
  border:none;
  background:transparent;
  cursor:pointer;
  color:var(--ink-faint,#94a3b8);
  font-size:14px;
  line-height:1;
  padding:0 2px;
  flex-shrink:0;
}
.vcal-editor-queue-remove:hover{color:var(--error,#dc2626);}
.vcal-editor-actions{
  display:flex;
  gap:8px;
  justify-content:flex-end;
  padding-top:4px;
  flex-wrap:wrap;
}
.vcal-editor-actions .btn{font-size:.75rem;padding:6px 14px;}

/* ── Month view with week-number column ────────────────────────────── */
.vcal-month-grid-wrap{
  display:grid;
  grid-template-columns:auto repeat(7,1fr);
  grid-auto-rows:1fr;
  gap:2px;
  flex:1;
}
.vcal-weekday-head-row{
  display:contents;
}
.vcal-wknr-head{
  font-size:.6rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  text-align:center;
  padding:2px 0;
  text-transform:uppercase;
  letter-spacing:.03em;
}
.vcal-wknr{
  font-size:.6rem;
  font-weight:700;
  color:var(--ink-faint,#94a3b8);
  display:flex;
  align-items:flex-start;
  justify-content:center;
  padding:4px 3px 0;
  cursor:default;
}

@media(max-width:700px){
  .vcal-split-wrap{ flex-direction:column; }
  .vcal-split-wrap.has-editor .vcal-split-calendar{
    flex:0 0 auto;
    overflow:visible;
  }
  .vcal-split-wrap.has-editor .vcal-editor{
    flex:1;
    min-height:0;
    max-height:none;
  }
  .vcal-editor{
    width:auto;
    border-left:none;
    border-top:1px solid var(--line,#e2e8f0);
    margin-left:0;
    padding-left:0;
    padding-top:16px;
    margin-top:16px;
  }
}

.sandbox-modal-actions{
  display:grid;
  gap:10px;
  grid-template-columns:repeat(3,minmax(0,1fr));
  align-items:start;
}

.sandbox-modal-actions.is-two{
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.sandbox-modal-actions > .btn,
.sandbox-modal-actions > a.btn{
  width:100%;
  min-width:0;
}

.sandbox-modal-body > .sandbox-modal-actions,
.sandbox-modal-body > form > .sandbox-modal-actions,
.sandbox-modal-body > .admin-form > .sandbox-modal-actions,
.sandbox-modal-body .profile-closure-step > .sandbox-modal-actions,
.sandbox-modal-body .print-week-actions.sandbox-modal-actions{
  margin-top:2px;
}

#adminModal .sandbox-modal-actions.is-two .btn-primary{
  background:#fff;
  color:var(--ink);
  border-color:var(--line);
  box-shadow:var(--shadow-xs);
}

#adminModal .sandbox-modal-actions.is-two .btn-primary:hover{
  background:linear-gradient(180deg,#ffffff,#eef5ff);
  color:var(--ink);
  border-color:#b8c7d8;
  box-shadow:var(--shadow);
}

.action-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.action-menu-grid .btn{width:100%;}
#absenceReasonWrap{margin:2px 0 4px 0;}
.sync-modal-body{display:grid;gap:10px;}
.sync-action-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.sync-action-row .btn{min-width:160px;}
.sync-link-row{display:flex;gap:10px;align-items:center;}
.sync-link-input{flex:1;background:var(--surface);color:var(--ink);}
.sync-platform-hint{margin:0;font-size:13px;color:#475569;line-height:1.5;}
.sync-fallback-panel{display:grid;gap:6px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--ink-soft);}
.sync-fallback-panel p{margin:0;font-size:13px;line-height:1.45;}

@media (max-width: 640px){
  .sync-action-row,
  .sync-link-row{flex-direction:column;align-items:stretch;}
  .sync-action-row .btn{width:100%;}
}

.user-management-card{width:min(1120px,100%);height:min(88vh,860px);display:grid;grid-template-rows:auto minmax(0,1fr);} 
.user-management-card :is(.modal-body,.sandbox-modal-body){display:grid;grid-template-rows:minmax(0,1fr) auto auto;gap:12px;min-height:0;overflow:hidden;}
.user-management-list{display:grid;gap:10px;margin-bottom:10px;}
.user-management-help{margin:0 0 10px;}
.user-management-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px;flex-wrap:wrap;}
.user-management-top-actions{margin:0;}
.user-management-toolbar{display:grid;grid-template-columns:minmax(220px,1.5fr) minmax(160px,.8fr);gap:12px;margin-bottom:14px;}
.user-management-toolbar label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155;}
.user-management-layout{display:grid;grid-template-columns:1fr;gap:14px;align-items:start;}
.user-management-overview-card{border:1px solid var(--line);border-radius:16px;background:var(--surface);padding:10px;max-height:none;overflow:visible;min-height:0;}
.user-management-bottom-actions{margin-top:14px;}
.user-management-empty,.user-profile-empty{border:1px dashed #cbd5e1;border-radius:16px;padding:18px;background:#fff;color:#475569;}
.user-profile-empty p{margin:8px 0 0;}
.user-overview-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid #e2e8f0;background:#fff;}
.user-overview-row:first-child{border-top-left-radius:12px;border-top-right-radius:12px;}
.user-overview-row:last-child{border-bottom:none;border-bottom-left-radius:12px;border-bottom-right-radius:12px;}
.user-overview-main{display:flex;justify-content:space-between;gap:12px;align-items:center;min-width:0;}
.user-overview-name{display:grid;gap:3px;min-width:0;}
.user-overview-name strong,.user-overview-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.user-overview-name strong{font-size:15px;font-weight:800;color:#0f172a;}
.user-overview-name span{font-size:12px;color:#64748b;}
.user-overview-meta{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;}
.user-overview-type{font-size:12px;color:#64748b;}
.user-overview-actions{display:flex;justify-content:flex-end;}
.icon-button{width:46px !important;min-width:46px !important;max-width:46px !important;height:46px !important;min-height:46px !important;max-height:46px !important;padding:0 !important;padding-inline:0 !important;border-radius:50% !important;aspect-ratio:1 / 1;box-sizing:border-box;flex:0 0 46px;font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:#fff;}
.icon-button:hover{background:var(--brand-soft);border-color:#c4dafd;color:var(--brand2);}
.profile-trash-button{width:32px !important;min-width:32px !important;max-width:32px !important;height:32px !important;min-height:32px !important;max-height:32px !important;flex:0 0 32px;font-size:14px;color:#7f1d1d;}
.profile-trash-button:hover{background:#fef2f2;border-color:#fca5a5;color:#991b1b;}
.profile-trash-button:disabled{opacity:.45;cursor:not-allowed;}
.employee-profile-view{display:grid;gap:12px;min-height:0;overflow:hidden;}
.user-profile-panel{display:grid;gap:14px;min-height:0;overflow:hidden;}
.user-profile-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid #dbe4ea;flex-wrap:wrap;}
.user-profile-kicker{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--brand2);}
.user-profile-head h5{margin:6px 0 4px;font-size:22px;}
.user-profile-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end;}
.user-profile-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:start;min-height:0;overflow:hidden;}
.user-profile-sidebar{position:sticky;top:0;display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);}
.user-profile-sidebar-nav{display:grid;gap:8px;}
.user-profile-nav-btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:12px 14px;border-radius:14px;text-align:left;font:inherit;font-weight:700;cursor:pointer;box-shadow:var(--shadow-xs);}
.user-profile-nav-btn:hover{background:var(--brand-soft);border-color:#c4dafd;color:var(--brand2);}
.user-profile-nav-btn.active{background:linear-gradient(180deg,var(--brand),var(--brand2));border-color:transparent;color:#fff;box-shadow:0 12px 22px rgba(10,132,255,.2);}
.user-profile-content{min-width:0;max-height:100%;overflow-y:auto;padding-right:6px;}
.user-profile-sections{display:grid;gap:12px;}
.user-profile-section{border:1px solid var(--line);border-radius:18px;background:#fff;padding:16px;box-shadow:var(--shadow-xs);}
.user-profile-section-head{margin-bottom:12px;}
.user-profile-section-head h6{margin:0 0 4px;font-size:14px;}
.user-profile-section-head p{margin:0;font-size:12px;color:#64748b;}
.user-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.user-profile-grid label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155;}
.user-profile-checkbox{display:flex;align-items:center;justify-content:space-between;border:1px solid #dbe4ea;border-radius:12px;padding:12px;background:#f8fafc;}
.user-profile-summary-card{display:grid;gap:4px;align-content:start;border:1px solid #dbe4ea;border-radius:12px;padding:12px;background:#f8fafc;color:#334155;}
.user-profile-summary-card span{font-size:12px;font-weight:700;color:#64748b;}
.user-profile-grid-fixed{grid-template-columns:repeat(2,minmax(0,220px));}
.user-fixed-list{display:grid;gap:10px;margin-top:12px;}
.user-fixed-card{display:grid;gap:10px;border:1px solid #dbe4ea;border-radius:12px;padding:12px;background:#f8fafc;}
.user-fixed-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.user-fixed-rows{display:grid;gap:8px;}
.user-fixed-row{display:grid;grid-template-columns:110px 1fr;gap:10px;font-size:13px;color:#0f172a;}
.user-fixed-row.is-empty span{color:#64748b;}
.user-fixed-editor{display:grid;gap:12px;margin-top:12px;padding:14px;border:1px solid #dbe4ea;border-radius:14px;background:#fff;}
.user-fixed-editor-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;}
.user-fixed-editor-week{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155;}
.user-fixed-editor-row{display:grid;grid-template-columns:120px 140px repeat(2,minmax(0,180px));gap:10px;align-items:end;}
.user-fixed-editor-day{font-weight:700;color:#0f172a;}
.user-fixed-editor-toggle{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#334155;}
.user-fixed-editor-time{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155;}
.user-fixed-editor-time input{width:100%;}
.competency-admin-card{display:grid;gap:14px;}
.competency-admin-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.competency-admin-head h5{margin:0 0 4px;font-size:16px;color:#0f172a;}
.competency-admin-form{display:grid;gap:12px;}
.competency-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.competency-special-toggle{display:flex;align-items:center;gap:10px;padding:4px 2px;font-size:14px;font-weight:700;color:#0f172a;}
.competency-special-toggle input{width:18px;height:18px;flex:0 0 auto;}
.competency-support-wrap{display:grid;gap:10px;padding:14px;border:1px solid #dbe4ea;border-radius:16px;background:#f8fafc;}
.competency-support-head{display:grid;gap:4px;}
.competency-support-head strong{font-size:14px;color:#0f172a;}
.competency-support-head span{font-size:12px;color:#64748b;line-height:1.45;}
.competency-support-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.competency-support-option{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.competency-support-option input{margin-top:2px;}
.competency-support-option span{display:grid;gap:4px;color:#334155;font-size:12px;line-height:1.4;}
.competency-support-option strong{font-size:13px;color:#0f172a;}
.competency-support-option.is-inactive{background:#fff7ed;border-color:#fed7aa;}
.competency-support-option.is-selected{border-color:#c4dafd;box-shadow:0 0 0 1px rgba(10,132,255,.14);}
.competency-support-empty{border:1px dashed #cbd5e1;border-radius:14px;padding:14px;background:#fff;color:#64748b;font-size:13px;}
.competency-admin-list{display:grid;gap:12px;}
.competency-admin-empty,.user-competency-empty{border:1px dashed #cbd5e1;border-radius:16px;padding:16px;background:#fff;color:#64748b;font-size:13px;}
.competency-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.competency-panel-actions{margin:0;align-items:center;}
.competency-create-card{width:min(680px,100%);}
.competency-modal-actions{justify-content:space-between;align-items:center;flex-wrap:wrap;}
.competency-modal-primary-actions{display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap;}
.competency-delete-confirm-card{width:min(460px,100%);}
.competency-matrix-wrap{display:grid;gap:12px;}
.competency-matrix-scroller{overflow:auto;max-height:min(68vh,calc(100vh - 280px));border:1px solid #dbe4ea;border-radius:16px;background:#fff;box-shadow:0 8px 18px rgba(15,23,42,.04);}
.competency-matrix-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;}
.competency-matrix-table th,.competency-matrix-table td{border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;padding:0;vertical-align:middle;}
.competency-matrix-table thead th{position:sticky;top:0;z-index:2;background:#f8fafc;}
.competency-matrix-corner{position:sticky;top:0;left:0;z-index:4;min-width:220px;padding:14px 16px !important;text-align:left;font-size:13px;font-weight:800;color:#0f172a;background:#f8fafc;}
.competency-matrix-rowhead{position:sticky;left:0;z-index:1;min-width:220px;padding:14px 16px !important;text-align:left;background:#fff;font-size:13px;font-weight:800;color:#0f172a;}
.competency-matrix-header{min-width:170px;max-width:170px;padding:12px 10px !important;text-align:left;background:#f8fafc;}
.competency-matrix-header.is-clickable{cursor:pointer;}
.competency-matrix-header.is-clickable:hover{background:var(--brand-soft);}
.competency-matrix-header.is-inactive{background:#f8fafc;color:#64748b;}
.competency-matrix-header-inner{display:grid;gap:4px;}
.competency-matrix-header-inner strong{font-size:13px;color:#0f172a;line-height:1.3;}
.competency-matrix-header-inner span{font-size:11px;color:#64748b;line-height:1.35;}
.competency-matrix-header-inner small{font-size:11px;font-weight:800;color:var(--brand2);text-transform:uppercase;letter-spacing:.04em;}
.competency-matrix-header.is-inactive .competency-matrix-header-inner small{color:#92400e;}
.competency-matrix-cell{width:72px;min-width:72px;height:62px;text-align:center;background:#fff;}
.competency-matrix-cell.is-inactive{background:#fffaf0;}
.competency-matrix-check{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer;}
.competency-matrix-check input{margin:0;}
.competency-card{display:grid;gap:10px;padding:14px;border:1px solid #dbe4ea;border-radius:14px;background:#fff;}
.competency-card.is-inactive{background:#f8fafc;border-color:#cbd5e1;opacity:.92;}
.competency-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.competency-card-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.competency-card-title strong{font-size:15px;color:#0f172a;}
.competency-card-meta{display:grid;gap:4px;font-size:12px;color:#64748b;}
.competency-card-description{font-size:13px;color:#334155;line-height:1.45;}
.competency-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.competency-status-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid #cbd5e1;background:#ecfdf5;color:#047857;font-size:12px;font-weight:800;}
.competency-status-badge.is-inactive{background:#f8fafc;color:#64748b;}
.competency-usage{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:#eff6ff;border:1px solid #bfdbfe;color:#1d4ed8;font-size:12px;font-weight:800;}
.derived-staffing-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.derived-staffing-actions{margin:0;align-items:center;}
.derived-staffing-toolbar{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;}
.derived-staffing-toolbar label{min-width:0;display:grid;gap:6px;}
.derived-staffing-mode-toggle{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.derived-staffing-mode-btn.active{background:linear-gradient(180deg,var(--brand),var(--brand2));border-color:transparent;color:#fff;}
.derived-staffing-date-controls{display:flex;gap:12px;align-items:flex-end;flex:0 1 340px;}
.derived-staffing-date-controls > label{width:min(340px,100%);}
.derived-staffing-range-controls{display:grid;grid-template-columns:repeat(2,minmax(260px,320px));gap:12px;align-items:end;justify-content:start;flex:0 0 auto;}
.derived-staffing-range-controls label{min-width:0;display:grid;gap:6px;}
.derived-staffing-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;}
.derived-staffing-status-board{display:grid;gap:14px;}
.derived-staffing-period-overview{display:grid;gap:14px;}
.derived-staffing-stat{display:grid;gap:4px;padding:12px 14px;border:1px solid #dbe4ea;border-radius:14px;background:#fff;}
.derived-staffing-stat span{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#64748b;}
.derived-staffing-stat strong{font-size:20px;color:#0f172a;}
.derived-staffing-rule-list,.derived-staffing-conflicts{display:grid;gap:16px;}
.derived-staffing-status-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;}
.derived-staffing-status-card{display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.derived-staffing-status-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;}
.derived-staffing-status-head h5{margin:0;font-size:15px;color:#0f172a;}
.derived-staffing-status-head p{margin:4px 0 0;font-size:12px;color:#64748b;line-height:1.45;}
.derived-staffing-coverage-list,.derived-staffing-result-list{display:grid;gap:10px;}
.derived-staffing-coverage-item,.derived-staffing-result-item{display:grid;gap:8px;padding:12px;border:1px solid #e2e8f0;border-radius:14px;background:#f8fafc;}
.derived-staffing-coverage-main,.derived-staffing-result-main{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap;}
.derived-staffing-coverage-title,.derived-staffing-result-title{font-size:14px;font-weight:700;color:#0f172a;}
.derived-staffing-coverage-meta,.derived-staffing-result-meta{font-size:12px;color:#475569;line-height:1.45;}
.derived-staffing-coverage-detail,.derived-staffing-result-detail{font-size:12px;color:#64748b;line-height:1.45;}
.derived-staffing-coverage-stats{display:flex;gap:8px;flex-wrap:wrap;}
.derived-staffing-metric{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:12px;font-weight:700;}
.derived-staffing-metric.is-flyver,.derived-staffing-metric.is-special{border-color:#fde68a;background:#fffbeb;color:#92400e;}
.derived-staffing-empty{border:1px dashed #cbd5e1;border-radius:16px;padding:16px;background:var(--surface);color:#64748b;}
.derived-staffing-rule-card,.derived-staffing-conflict-card,.derived-staffing-editor-card{display:grid;gap:12px;padding:14px;border:1px solid #dbe4ea;border-radius:16px;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.04);}
.derived-staffing-modal-card{width:min(1120px,100%);max-height:min(92vh,980px);}
.derived-staffing-modal-card :is(.modal-body,.sandbox-modal-body){overflow:visible;}
.derived-staffing-rule-card.is-inactive{background:#f8fafc;border-color:#cbd5e1;}
.derived-staffing-rule-head,.derived-staffing-conflict-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.derived-staffing-rule-title{display:grid;gap:6px;}
.derived-staffing-rule-title strong{font-size:15px;color:#0f172a;}
.derived-staffing-rule-description,.derived-staffing-rule-meta,.derived-staffing-conflict-meta{font-size:13px;color:#475569;line-height:1.45;}
.derived-staffing-rule-parts{display:grid;gap:8px;}
.derived-staffing-pill-row,.derived-staffing-card-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.derived-staffing-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;}
.derived-staffing-badge.is-inactive{border-color:#cbd5e1;background:#f8fafc;color:#64748b;}
.derived-staffing-badge.is-conflict{border-color:#fecaca;background:#fef2f2;color:#b91c1c;}
.derived-staffing-badge.is-warning{border-color:#fed7aa;background:#fff7ed;color:#9a3412;}
.derived-staffing-expression{padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;color:#0f172a;font-size:13px;line-height:1.5;}
.derived-staffing-editor-card{margin-top:0;border:none;box-shadow:none;padding:0;background:transparent;}
.derived-staffing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.derived-staffing-grid > label{position:relative;z-index:1;}
.derived-staffing-grid > label:focus-within{z-index:2;}
.derived-staffing-grid > label:hover{z-index:2;}
.derived-staffing-grid > label .info-tooltip-wrap.tooltip-visible{z-index:calc(var(--layer-modal) + 80);}
.derived-staffing-grid .info-tooltip-bubble{top:auto;bottom:calc(100% + 10px);}
.derived-staffing-grid .info-tooltip-bubble::before{top:100%;bottom:auto;border:6px solid transparent;border-top-color:#dbe4ea;border-bottom-color:transparent;}
.derived-staffing-grid .info-tooltip-bubble::after{top:calc(100% - 1px);bottom:auto;border:6px solid transparent;border-top-color:rgba(255,255,255,.98);border-bottom-color:transparent;}
.derived-staffing-grid > label:nth-child(-n+3) .info-tooltip-bubble{top:calc(100% + 10px);bottom:auto;}
.derived-staffing-grid > label:nth-child(-n+3) .info-tooltip-bubble::before{top:auto;bottom:100%;border:6px solid transparent;border-bottom-color:#dbe4ea;border-top-color:transparent;}
.derived-staffing-grid > label:nth-child(-n+3) .info-tooltip-bubble::after{top:auto;bottom:calc(100% - 1px);border:6px solid transparent;border-bottom-color:rgba(255,255,255,.98);border-top-color:transparent;}
.derived-staffing-grid-span{grid-column:1 / -1;}
.derived-staffing-active-row{align-self:end;}
.derived-staffing-conflict-card{border-color:#fecaca;background:#fffdfd;}
.derived-staffing-conflict-card.is-ok{border-color:#99f6e4;background:#f0fdfa;}
.derived-staffing-conflict-title{font-size:14px;font-weight:700;color:#0f172a;}
.derived-staffing-conflict-detail{font-size:13px;color:#475569;line-height:1.45;}
.derived-staffing-result-item.is-conflict{border-color:#fecaca;background:#fff7f7;}
.derived-staffing-result-item.is-flyver,.derived-staffing-result-item.is-special{border-color:#fde68a;background:#fffbeb;}
.derived-staffing-result-item.is-ok{border-color:#99f6e4;background:#f0fdfa;}
.derived-staffing-period-summary{display:flex;gap:8px;flex-wrap:wrap;}
.derived-staffing-period-list{display:grid;gap:8px;}
.derived-staffing-period-item{width:100%;text-align:left;border:none;cursor:pointer;font:inherit;}
.derived-staffing-period-card{width:100%;text-align:left;cursor:pointer;font:inherit;display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:12px;border:1px solid #dbe4ea;background:#f8fafc;color:#0f172a;box-shadow:0 6px 14px rgba(15,23,42,.04);}
.derived-staffing-period-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;border:1px solid #dbe4ea;background:#f8fafc;color:#0f172a;box-shadow:0 6px 14px rgba(15,23,42,.04);}
.derived-staffing-period-item:hover,.derived-staffing-period-card:hover{border-color:#c4dafd;background:var(--brand-soft);}
.derived-staffing-period-item strong{font-size:13px;}
.derived-staffing-period-item span{font-size:12px;color:#475569;}
.derived-staffing-period-card.is-warning{border-color:#fed7aa;background:#fffaf5;}
.derived-staffing-card-actions{margin-top:4px;display:flex;gap:8px;flex-wrap:wrap;}
.derived-staffing-card-actions .btn{font-size:12px;padding:6px 12px;}
.derived-staffing-period-item-row{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap;}
.derived-staffing-period-item-row .derived-staffing-period-item{flex:1;min-width:140px;}
.derived-staffing-period-planner{flex:0 0 auto;align-self:center;}
.consistency-item-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.consistency-planner-btn{font-size:12px;padding:6px 12px;}
.competency-chip-list{display:flex;gap:8px;flex-wrap:wrap;}
.competency-chip{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:var(--brand-soft);border:1px solid #c4dafd;color:var(--brand2);font-size:12px;font-weight:800;}
.competency-chip.is-inactive{background:#f8fafc;border-color:#cbd5e1;color:#64748b;}
.competency-chip.is-flyver,.competency-chip.is-special{background:#fffbeb;border-color:#fcd34d;color:#92400e;}
.user-overview-competencies{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.user-overview-competency{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:var(--brand-soft);border:1px solid #c4dafd;color:var(--brand2);font-size:11px;font-weight:800;}
.user-overview-competency-more{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#f8fafc;border:1px solid #cbd5e1;color:#64748b;font-size:11px;font-weight:800;}
.user-competency-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.user-competency-option{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-xs);}
.user-competency-option input{margin-top:2px;}
.user-competency-text{display:grid;gap:4px;min-width:0;}
.user-competency-text strong{font-size:13px;color:#0f172a;}
.user-competency-text span{font-size:12px;color:#64748b;line-height:1.4;}
.user-competency-option.is-inactive{background:#fff7ed;border-color:#fed7aa;}
.user-competency-option.is-flyver,.user-competency-option.is-special{background:#fffbea;border-color:#fde68a;}
.user-competency-option.is-selected{border-color:#c4dafd;box-shadow:0 0 0 1px rgba(10,132,255,.14);}
.user-competency-summary{display:grid;gap:10px;}
.user-competency-help{font-size:12px;color:#64748b;}
.user-status-panel{display:grid;gap:12px;}
.user-status-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.user-status-summary > div{display:grid;gap:4px;padding:12px;border:1px solid #dbe4ea;border-radius:12px;background:#f8fafc;}
.user-status-label{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#64748b;}
.user-history-list{display:grid;gap:10px;}
.user-history-item{display:grid;gap:4px;padding:12px;border:1px solid #dbe4ea;border-radius:12px;background:#f8fafc;}
.user-history-item strong{font-size:13px;}
.user-history-item span{font-size:13px;color:#334155;}
.user-history-item small{font-size:12px;color:#64748b;}
.user-history-item.is-empty{background:#fff;}
.special-rule-section,.special-rule-editor,.special-rule-list{display:grid;gap:12px;}
.special-rule-toolbar,.special-rule-card-head,.special-rule-editor-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;}
.special-rule-summary{font-size:13px;font-weight:700;color:#475569;}
.special-rule-grid{align-items:start;}
.special-rule-editor .ui-field{gap:10px;}
.special-rule-editor .ui-field-label{color:var(--ink);font-size:13px;}
.special-rule-intro{margin:0;max-width:720px;}
.special-rule-datewrap{width:100%;position:relative;z-index:calc(var(--layer-modal) + 4);}
.special-rule-datewrap.is-open,.special-rule-timewrap.is-open{z-index:calc(var(--layer-modal) + 30);}
.special-rule-datewrap .date-popover{left:50%;transform:translateX(-50%);top:calc(100% + 12px);width:340px;max-width:min(340px,calc(100vw - 48px));z-index:calc(var(--layer-modal) + 31);}
.special-rule-dateinput{width:100%;padding-right:42px;font-size:14px;font-weight:700;letter-spacing:.01em;}
.derived-staffing-datewrap{width:min(340px,100%);position:relative;z-index:20;}
.derived-staffing-datewrap.is-open{z-index:40;}
.derived-staffing-datewrap .date-popover{left:0;right:auto;transform:none;top:calc(100% + 12px);width:340px;max-width:min(340px,calc(100vw - 48px));z-index:41;}
.special-rule-datewrap-multi .special-rule-dateinput{font-weight:600;}
.special-rule-timewrap .date-popover{width:320px;}
.special-rule-time-popover{display:grid;gap:14px;}
.special-rule-time-popover-head{display:grid;gap:4px;}
.special-rule-time-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.special-rule-time-column{display:grid;gap:8px;min-width:0;}
.special-rule-time-column-title{font-size:12px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.04em;text-align:center;}
.special-rule-time-options{display:grid;grid-template-columns:1fr;gap:8px;max-height:220px;overflow:auto;padding-right:2px;}
.special-rule-time-option{border:1px solid #dbe4ea;border-radius:14px;background:#fff;padding:10px 0;font:inherit;font-weight:800;color:#0f172a;cursor:pointer;box-shadow:0 6px 14px rgba(15,23,42,.05);}
.special-rule-time-option:hover{background:var(--brand-soft);border-color:#c4dafd;color:var(--brand2);}
.special-rule-time-option.is-selected{background:linear-gradient(135deg,var(--brand),var(--brand2));border-color:transparent;color:#fff;box-shadow:0 10px 18px rgba(10,132,255,.24);}
.special-rule-timeinput[readonly]{cursor:pointer;}
.special-rule-timeinput{
  min-height:48px;
  border-radius:18px;
  font-variant-numeric:tabular-nums;
}
.special-rule-type-label{position:relative;z-index:calc(var(--layer-modal) + 80);}
.special-rule-type-wrap{position:relative;z-index:calc(var(--layer-modal) + 80);}
.special-rule-type-label .ui-field-label{display:block;}
.special-rule-type-wrap .ui-dropdown-button{padding-right:18px;}
.special-rule-type-wrap .info-tooltip-wrap{z-index:calc(var(--layer-modal) + 70);}
.special-rule-type-wrap .info-tooltip-bubble{z-index:calc(var(--layer-modal) + 71);}
.special-rule-type-menu{z-index:calc(var(--layer-modal) + 90);}
.special-rule-type-label.is-open .info-tooltip-wrap,
.special-rule-type-label.is-open .info-tooltip-bubble{z-index:calc(var(--layer-modal) + 70) !important;}
.special-rule-type-label.is-open .info-tooltip-bubble{opacity:0 !important;pointer-events:none;transform:translate(-50%,-4px) !important;}
.special-rule-days{display:grid;gap:8px;}
.special-rule-days-label{font-size:12px;font-weight:700;color:#334155;}
.special-rule-day-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;}
.special-rule-day-grid label{display:flex;align-items:center;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);font-size:13px;font-weight:700;color:var(--ink-soft);}
.special-rule-exception-field{display:grid;gap:10px;}
.special-rule-field-help{margin:0;}
.special-rule-card{display:grid;gap:8px;padding:14px;border:1px solid #dbe4ea;border-radius:14px;background:#f8fafc;}
.special-rule-card.is-inactive{opacity:.82;background:#f8fafc;}
.special-rule-card-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.special-rule-card-description{padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #dbe4ea;color:#334155;font-size:13px;line-height:1.5;}
.special-rule-card-meta{font-size:13px;color:#475569;line-height:1.45;}
.special-rule-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.special-rule-empty{padding:16px;border:1px dashed #cbd5e1;border-radius:16px;background:#fff;color:#64748b;font-size:13px;}
.special-rule-conflict-card{width:min(640px,100%);}
.closed-day-deactivate-card{width:min(420px,100%);}
.special-rule-conflict-body,.special-rule-conflict-summary,.special-rule-conflict-details{display:grid;gap:12px;}
.special-rule-conflict-summary{padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;}
.special-rule-conflict-item{display:grid;gap:4px;padding:12px 14px;border:1px solid #fed7aa;border-radius:14px;background:#fff7ed;color:#9a3412;}
.special-rule-conflict-item strong{color:#7c2d12;}
.special-rule-selected-dates{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:14px 16px;}
.special-rule-selected-label{display:inline-flex;align-items:center;font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--muted);}
.special-rule-date-chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;border:1px solid #bfdbfe;background:#eff6ff;color:#1d4ed8;font-size:12px;font-weight:800;}
.user-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;}
.user-row label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#334155;position:relative;}
.user-field-head{display:flex;align-items:center;gap:4px;min-height:18px;}
.user-field-head .field-error{position:static;margin:0;min-height:0;z-index:auto;}
.user-tooltip-field{position:relative;}
.field-tooltip{position:absolute;left:0;bottom:calc(100% + 10px);width:220px;padding:8px 10px;border-radius:10px;background:#0f172a;color:#fff;font-size:12px;font-weight:600;line-height:1.35;box-shadow:var(--shadow);opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .22s ease,transform .22s ease;z-index:5;}
.field-tooltip::after{content:"";position:absolute;left:18px;top:100%;border:6px solid transparent;border-top-color:#0f172a;}
.user-tooltip-field.tooltip-visible .field-tooltip{opacity:1;transform:translateY(0);}
.info-label-row{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
.info-tooltip-wrap{position:relative;display:inline-flex;align-items:center;flex:0 0 auto;z-index:calc(var(--layer-modal) + 10);}
.info-tooltip-wrap.tooltip-visible{z-index:calc(var(--layer-modal) + 40);}
.info-tooltip-trigger{width:18px;height:18px;border-radius:999px;border:1px solid var(--line);background:#fff;color:#64748b;font-size:11px;font-weight:800;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;box-shadow:var(--shadow-xs);}
.info-tooltip-trigger:hover{background:var(--brand-soft);color:var(--brand2);border-color:#c4dafd;}
.info-tooltip-trigger:focus-visible{outline:none;box-shadow:var(--focus-ring);}
.info-tooltip-bubble{position:absolute;left:50%;top:calc(100% + 10px);width:min(250px,calc(100vw - 32px));padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-strong);color:var(--ink-soft);font-size:12px;font-weight:600;line-height:1.45;display:grid;gap:8px;opacity:0;pointer-events:none;transform:translate(-50%,-4px);transition:opacity .18s ease,transform .18s ease;z-index:calc(var(--layer-modal) + 41);}
.info-tooltip-bubble::before{content:"";position:absolute;left:50%;bottom:100%;transform:translateX(-50%);border:6px solid transparent;border-bottom-color:#dbe4ea;}
.info-tooltip-bubble::after{content:"";position:absolute;left:50%;bottom:calc(100% - 1px);transform:translateX(-50%);border:6px solid transparent;border-bottom-color:rgba(255,255,255,.98);}
.info-tooltip-wrap.tooltip-visible .info-tooltip-bubble,
.info-tooltip-wrap:hover .info-tooltip-bubble{opacity:1;transform:translate(-50%,0);}
.info-tooltip-wrap.tooltip-align-left .info-tooltip-bubble{left:0;transform:translate(0,-4px);}
.info-tooltip-wrap.tooltip-align-left .info-tooltip-bubble::before,
.info-tooltip-wrap.tooltip-align-left .info-tooltip-bubble::after{left:9px;transform:translateX(-50%);}
.info-tooltip-wrap.tooltip-align-left.tooltip-visible .info-tooltip-bubble,
.info-tooltip-wrap.tooltip-align-left:hover .info-tooltip-bubble{transform:translate(0,0);}
.info-tooltip-wrap.tooltip-align-right .info-tooltip-bubble{left:auto;right:0;transform:translate(0,-4px);}
.info-tooltip-wrap.tooltip-align-right .info-tooltip-bubble::before,
.info-tooltip-wrap.tooltip-align-right .info-tooltip-bubble::after{left:auto;right:9px;transform:translateX(50%);}
.info-tooltip-wrap.tooltip-align-right.tooltip-visible .info-tooltip-bubble,
.info-tooltip-wrap.tooltip-align-right:hover .info-tooltip-bubble{transform:translate(0,0);}
.info-tooltip-bubble span{display:block;}
.info-tooltip-section{display:grid;gap:4px;}
.info-tooltip-section strong{font-size:12px;font-weight:800;color:#0f172a;}
.info-tooltip-section span{font-weight:500;color:#475569;}
.user-profile-checkbox .info-tooltip-bubble{left:0;transform:translate(0,-4px);}
.user-profile-checkbox .info-tooltip-bubble::before,
.user-profile-checkbox .info-tooltip-bubble::after{left:18px;transform:none;}
.user-profile-checkbox .info-tooltip-wrap.tooltip-visible .info-tooltip-bubble,
.user-profile-checkbox .info-tooltip-wrap:hover .info-tooltip-bubble{transform:translate(0,0);}
.user-row-actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.user-row-status{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.user-status-badge{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid #cbd5e1;background:#fff;color:#334155;}
.user-status-badge.is-active{background:#ecfdf5;border-color:#a7f3d0;color:#047857;}
.user-status-badge.is-scheduled{background:#fff7ed;border-color:#fed7aa;color:#9a3412;}
.user-status-badge.is-inactive{background:#fef2f2;border-color:#fecaca;color:#991b1b;}
.user-status-note{font-size:12px;font-weight:600;color:#64748b;}
.user-row.is-inactive{background:#f8fafc;border-color:#e2e8f0;opacity:.88;}
.user-row.is-scheduled{border-color:#fdba74;box-shadow:0 0 0 1px rgba(249,115,22,.08);}
.user-profile-panel .btn-danger{background:#fff;border-color:#e2e8f0;color:#7f1d1d;}
.user-profile-panel .btn-danger:hover{background:#fef2f2;border-color:#fca5a5;color:#991b1b;}
.profile-closure-card{width:min(420px,100%);}
.profile-closure-body{display:grid;gap:14px;}
.profile-closure-step{display:grid;gap:12px;}
.profile-closure-step .form-actions{justify-content:flex-end;}
.profile-closure-actions{justify-content:flex-start;}
#profileClosureTarget{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;width:auto;max-width:fit-content;padding:8px 14px;border-radius:12px;border:1px solid #c4dafd;background:var(--brand-soft);color:var(--ink);font-weight:700;box-shadow:none;}
.profile-closure-shifts{display:grid;gap:10px;padding:12px;border:1px solid #dbe7f1;border-radius:14px;background:#f8fbff;}
.profile-closure-shifts-head{display:flex;justify-content:space-between;align-items:center;gap:10px;color:#0f172a;}
.profile-closure-shift-count{font-size:12px;font-weight:700;color:#64748b;}
.profile-closure-shift-list{display:grid;gap:8px;max-height:180px;overflow:auto;padding-right:4px;}
.profile-closure-shift-list.is-empty{max-height:none;}
.planner-fixed-repeat-conflict-card{width:min(720px,100%);}
.planner-fixed-repeat-conflict-shifts{gap:12px;}
.planner-fixed-repeat-conflict-toolbar{display:flex;flex-wrap:wrap;gap:8px;}
.planner-fixed-repeat-conflict-list{max-height:min(52vh,420px);gap:6px;}
.planner-fixed-repeat-conflict-item{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:10px 12px;border:1px solid #dbe7f1;border-radius:12px;background:#fff;cursor:pointer;}
.planner-fixed-repeat-conflict-item:has(input:checked){border-color:#9ec5bf;background:#f4fbf9;}
.planner-fixed-repeat-conflict-item input[type="checkbox"]{margin-top:2px;accent-color:var(--brand2);}
.planner-fixed-repeat-conflict-item-copy{display:grid;gap:4px;min-width:0;}
.planner-fixed-repeat-conflict-item .profile-closure-shift-day{font-size:13px;font-weight:700;color:#0f172a;line-height:1.25;}
.planner-fixed-repeat-conflict-item .profile-closure-shift-time{font-size:13px;font-weight:600;color:var(--brand2);line-height:1.35;white-space:normal;}
.profile-closure-shift-item{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px;padding:10px 12px;border:1px solid #dbe7f1;border-radius:12px;background:#fff;}
.profile-closure-shift-day{font-size:13px;font-weight:700;color:#0f172a;line-height:1.25;}
.profile-closure-shift-time.is-after-hours-shift,
.ui-dropdown-label-time.is-after-hours-shift,
.ui-dropdown-option-time.is-after-hours-shift{
  color:var(--shift-afterhours);
}

.ui-dropdown-option:hover .ui-dropdown-option-time.is-after-hours-shift,
.ui-dropdown-option.is-selected .ui-dropdown-option-time.is-after-hours-shift{
  color:var(--shift-afterhours);
}

.absence-absent-item .absence-shift-timeline.is-after-hours-shift{
  color:var(--shift-afterhours);
}
.profile-closure-shift-time{font-size:13px;font-weight:600;color:var(--brand2);white-space:nowrap;line-height:1.25;}
.profile-closure-shift-source{font-size:11px;font-weight:500;color:#94a3b8;line-height:1.2;}
.profile-closure-shift-person{font-size:12px;font-weight:700;color:#475569;line-height:1.25;}
.profile-closure-shift-empty{padding:12px 14px;border:1px dashed #cbd5e1;border-radius:14px;background:#fff;color:#64748b;font-size:13px;}
.calendar-tooltip{position:fixed;z-index:var(--layer-tooltip);background:#ffffff;border:1px solid #cfe3e3;border-radius:10px;padding:8px 10px;box-shadow:var(--shadow);font-size:12px;color:#0f172a;pointer-events:none;max-width:220px;}
.calendar-tooltip .tt-title{font-weight:800;margin-bottom:2px;}
.calendar-tooltip .tt-meta{color:#475569;}
.mobile-event-modal{position:fixed;inset:0;z-index:calc(var(--layer-modal) + 5);display:grid;place-items:end center;padding:16px;}
.mobile-event-modal__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(4px);}
.mobile-event-modal__card{position:relative;z-index:1;width:min(100%,520px);background:#fff;border:1px solid var(--line);border-radius:22px 22px 18px 18px;box-shadow:var(--shadow-strong);overflow:hidden;animation:modalEnter .18s ease;}
.mobile-event-modal__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;border-bottom:1px solid var(--line);}
.mobile-event-modal__head h3{margin:0;font-size:17px;}
.mobile-event-modal__close{width:34px;height:34px;border:none;border-radius:999px;background:rgba(241,245,249,.95);color:var(--ink);font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.mobile-event-modal__body{display:grid;gap:8px;padding:16px;}
.mobile-event-modal__body .tt-title{font-size:18px;font-weight:800;color:#0f172a;}
.mobile-event-modal__body .tt-meta{font-size:14px;line-height:1.45;color:#475569;}
.mobile-event-modal-open{overflow:hidden;}
.admin-app-shell{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(12px,1.8vw,20px);align-items:stretch;min-height:min(100dvh,1080px);}
.app.admin-shell-active .admin-app-shell{grid-template-columns:var(--sidebar-width) minmax(0,1fr);}
.app.admin-shell-active.dashboard-view-active .admin-app-shell{height:100%;min-height:0;}
.app.admin-shell-active .admin-app-shell .dashboard-nav{align-self:stretch;position:sticky;top:12px;max-height:calc(100dvh - 24px);}
.admin-main-stack{display:grid;min-width:0;min-height:0;grid-template-rows:minmax(0,1fr);align-content:start;}
.app.admin-shell-active.dashboard-view-active .admin-main-stack{height:100%;overflow:hidden;}
.calendar-app-surface{display:grid;gap:12px;align-content:start;min-width:0;min-height:0;}
.admin-settings-surface{display:grid;min-width:0;min-height:0;height:100%;min-height:min(100dvh - 48px,920px);align-content:stretch;}
.app.admin-shell-active.dashboard-view-active .admin-settings-surface{min-height:0;}
.admin-settings-surface .dashboard-content{height:100%;min-height:0;}

/* Sidebar nav */
.dashboard-nav{display:grid;gap:4px;align-content:start;position:sticky;top:0;max-height:100%;overflow:auto;background:var(--nav-bg);border:1px solid var(--sidebar-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:12px;}
.dashboard-layout{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);gap:18px;height:100%;min-height:0;align-items:stretch;overflow:hidden;}

/* Sidebar brand */
.nav-brand{display:flex;align-items:center;gap:10px;padding:4px 4px 12px;border-bottom:1px solid var(--line);margin-bottom:6px;}
.nav-brand-logo{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand2));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;color:#fff;flex:0 0 36px;box-shadow:0 4px 10px rgba(13,143,140,.24);}
.nav-brand-title{font-size:13px;font-weight:800;color:var(--ink);line-height:1.2;}
.nav-brand-sub{font-size:11px;color:var(--muted);margin-top:1px;}

/* Nav group labels */
.dashboard-nav-group{display:grid;gap:2px;}
.dashboard-tab{width:100%;}
.dashboard-nav-group-label{display:block;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:10px 0 3px 8px;opacity:.8;}
.dashboard-nav-group:first-child .dashboard-nav-group-label{margin-top:4px;}

/* Nav item icons and chevron */
.nav-icon{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;opacity:.72;}
.nav-chevron{width:16px;height:16px;fill:currentColor;stroke:none;margin-left:auto;opacity:.5;transition:transform .2s ease;}
.dashboard-tab{text-align:left;justify-content:flex-start;padding:9px 11px;gap:8px;border-radius:var(--nav-item-radius);min-height:40px;font-size:13px;border-color:transparent;background:transparent;box-shadow:none;color:var(--ink-soft);}
.dashboard-tab:hover:not(.active){background:var(--nav-item-hover);border-color:transparent;box-shadow:none;transform:none;color:var(--ink);}
.dashboard-tab.active{background:var(--brand);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(13,143,140,.28);}
.dashboard-tab.active .nav-icon,.dashboard-tab.active .nav-chevron{opacity:1;}
.dashboard-tab[aria-expanded="true"] .nav-chevron{transform:rotate(180deg);}
.has-dirty-state .dashboard-tab.active,
.has-dirty-state .planner-subtab.active{box-shadow:0 0 0 2px rgba(217,119,6,.20);}

/* Topbar page title (shown in admin-shell only) */
.topbar-page-title{display:none;align-items:center;gap:8px;font-size:20px;font-weight:800;color:var(--ink);letter-spacing:-.025em;}
.topbar-page-title svg{width:20px;height:20px;fill:var(--brand);flex:0 0 20px;}
.app.admin-shell-active .admin-app-shell .topbar-page-title{display:flex;}
.app.admin-shell-active .admin-app-shell .topbar .brand{display:none;}
.dashboard-content{display:grid;grid-template-rows:minmax(0,1fr);gap:10px;min-width:0;min-height:0;height:100%;overflow:hidden;align-content:stretch;}
.dashboard-panel{background:var(--panel-bg);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:20px;align-content:start;min-width:0;min-height:0;height:100%;overflow:auto;}
.dashboard-panel[data-panel="employeeManagement"]{overflow:auto;position:relative;}
.dashboard-panel h4{margin:2px 0 12px 0;font-size:20px;font-weight:800;letter-spacing:-.025em;}
.employee-management-shell{display:grid;gap:18px;min-height:0;align-content:start;}
.employee-management-shell,.employee-management-subpanel[data-employee-management-panel="derivedStaffingRules"]{overflow:visible;}
.employee-management-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.employee-management-nav-subtabs{display:grid;gap:3px;margin:2px 0 4px;padding:4px 0 0 16px;border-left:2px solid var(--line);}
.employee-management-nav-subtabs .btn{text-align:left;justify-content:flex-start;width:100%;padding-left:14px;font-size:12.5px;box-shadow:none;min-height:36px;border-color:transparent;background:transparent;color:var(--ink-soft);position:relative;}
.employee-management-nav-subtabs .btn:hover:not(.active){background:var(--nav-item-hover);border-color:transparent;box-shadow:none;transform:none;color:var(--ink);}
.employee-management-subtab{text-align:left;justify-content:flex-start;}
.employee-management-subtab.active{background:var(--brand-soft);border-color:transparent;color:var(--brand2);box-shadow:none;font-weight:800;}
.employee-management-subtab.active::before{content:"";position:absolute;left:-17px;top:7px;bottom:7px;width:3px;border-radius:999px;background:var(--brand);}
.employee-management-subpanel{display:grid;gap:12px;min-width:0;min-height:0;align-content:start;}
.rules-grid{display:grid;gap:14px;margin-bottom:14px;}
.closed-days-head,.closed-days-list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.closed-day-form,.closed-days-list-wrap,.closed-days-panel{display:grid;gap:12px;}
.closed-days-tabs{display:flex;gap:8px;flex-wrap:wrap;}
.closed-days-tab.active{background:var(--brand);border-color:transparent;color:#fff;box-shadow:0 4px 10px rgba(13,143,140,.24);}
.closed-days-year-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.closed-days-year-nav .btn{min-height:36px;padding:8px 12px;}
.closed-day-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.closed-day-active-wrap{align-content:start;}
.closed-day-active-control{display:flex;align-items:center;gap:8px;min-height:var(--control-height);padding:0 2px;font-weight:600;color:#0f172a;}
.closed-days-summary{font-size:12px;font-weight:700;color:#64748b;}
.closed-days-holiday-list,.closed-days-list{display:grid;gap:12px;}
.closed-day-item{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(0,1.5fr) auto;gap:14px;align-items:start;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 6px 16px rgba(15,23,42,.04);}
.closed-day-item.is-inactive{opacity:.75;background:var(--surface);}
.closed-day-item.closed-day-item-holiday{background:linear-gradient(135deg,#eff6ff,var(--surface));border-color:#dbeafe;}
.closed-day-item.closed-day-item-holiday.is-closed-holiday{background:linear-gradient(135deg,#eff6ff,#fee2e2);border-color:#fecaca;}
.closed-day-item-main,.closed-day-item-meta{display:grid;gap:6px;}
.closed-day-date{font-size:16px;font-weight:800;color:#0f172a;}
.closed-day-weekday,.closed-day-audit{font-size:12px;color:#64748b;line-height:1.45;}
.closed-day-holiday-note{padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #dbe4ea;font-size:13px;line-height:1.45;color:#475569;}
.closed-day-comment{padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #dbe4ea;font-size:13px;line-height:1.45;color:#475569;white-space:pre-wrap;}
.closed-day-comment.is-empty{color:#94a3b8;font-style:italic;}
.closed-day-status{display:inline-flex;align-items:center;justify-self:start;padding:4px 10px;border-radius:999px;border:1px solid #fecaca;background:#fff1f2;color:#b91c1c;font-size:12px;font-weight:800;}
.closed-day-status.is-inactive{border-color:#cbd5e1;background:#f8fafc;color:#64748b;}
.closed-day-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;}
.closed-day-empty{padding:16px;border:1px dashed #cbd5e1;border-radius:16px;background:#fff;color:#64748b;font-size:13px;}
.closed-day-modal-card{width:min(980px,100%);min-height:720px;max-height:min(96vh,980px);}
.closed-day-modal-card :is(.modal-body,.sandbox-modal-body){min-height:620px;max-height:min(88vh,860px);overflow:visible;}
.rule-row{display:grid;grid-template-columns:160px minmax(0,1fr) minmax(0,1fr) 180px;gap:12px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.rule-row:hover{border-color:var(--line-strong);box-shadow:var(--shadow);}
.rule-row > strong,
.rule-row > .rule-label{font-size:14px;font-weight:800;color:var(--ink);letter-spacing:-.01em;}
.rule-row label{display:grid;gap:6px;font-size:12px;font-weight:700;color:var(--ink-soft);}
.rule-row label > span{font-size:12px;font-weight:700;color:var(--ink-soft);}
.rule-row input[type="time"],
.rule-row input[type="date"],
.rule-row select{min-height:48px;border-radius:18px;}
#adminModal{z-index:60;}
#appRoot .admin-settings-surface input[type="date"],#appRoot .admin-settings-surface input[type="time"]{width:100%;min-height:var(--control-height);cursor:pointer;}
#appRoot .admin-settings-surface input[type="date"]::-webkit-calendar-picker-indicator{filter:hue-rotate(135deg) saturate(1.2);cursor:pointer;}
#appRoot .admin-settings-surface .user-row{grid-template-columns:repeat(6,minmax(120px,1fr));}
.activity-log-list{display:grid;gap:8px;max-height:none;overflow:visible;}
.activity-item{padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);box-shadow:var(--shadow-xs);}
.activity-meta{color:#64748b;font-size:12px;}
:is(.modal-info,.sandbox-modal-info).error{color:#b91c1c;background:linear-gradient(180deg,#fff8f8,#fef2f2);border:1px solid #fecaca;padding:12px 14px;border-radius:16px;box-shadow:var(--shadow-xs);}
.auth-error,
.error,
.field-error,
.dirty-confirm-message-error{
  box-shadow:var(--shadow-xs);
}

:is(
  .user-management-empty,
  .user-profile-empty,
  .competency-support-empty,
  .competency-admin-empty,
  .user-competency-empty,
  .derived-staffing-empty,
  .special-rule-empty,
  .closed-day-empty,
  .staffing-rule-empty,
  .planner-generator-empty,
  .planner-fixed-empty,
  .profile-closure-shift-empty,
  .employee-request-empty,
  .planner-norm-details-empty
){
  padding:16px;
  border:1px dashed var(--line-strong);
  border-radius:14px;
  background:var(--surface);
  color:var(--muted);
  font-size:13px;
  line-height:1.55;
}

:is(
  .staffing-rule-preview,
  .employee-request-review-summary,
  .planner-draft-confirm,
  .planner-fixed-confirm,
  .planner-fixed-current-head,
  .planner-norm-editor-summary,
  .sync-fallback-panel,
  .planner-remove-summary,
  .special-rule-conflict-summary,
  .planner-generator-result,
  .planner-generator-problem,
  .planner-generator-stat,
  .activity-item,
  .staffing-conflict-panel
){
  border-radius:14px;
  border:1px solid var(--line);
  background:#fff;
  box-shadow:var(--shadow-xs);
}

:is(
  .planner-fixed-card,
  .planner-generator-group,
  .planner-day-card,
  .planner-employee-card,
  .planner-rules-section,
  .derived-staffing-status-card,
  .derived-staffing-rule-card,
  .derived-staffing-conflict-card,
  .special-rule-card,
  .closed-day-item,
  .high-risk-sidecard,
  .competency-card,
  .user-profile-section,
  .user-management-overview-card
){
  border-radius:18px;
}

:is(
  .employee-request-status,
  .closed-day-status,
  .planner-draft-status,
  .competency-status-badge,
  .competency-usage,
  .competency-chip,
  .user-overview-competency,
  .derived-staffing-badge,
  .special-rule-date-chip,
  .planner-day-status-badge
){
  box-shadow:var(--shadow-xs);
}

:is(
  .planner-generator-field,
  .planner-fixed-time,
  .planner-rules-field,
  .planner-employee-field,
  .planner-norm-picker,
  .user-profile-grid label,
  .user-management-toolbar label,
  .derived-staffing-toolbar label,
  .high-risk-grid label,
  .high-risk-inline-grid label,
  .staffing-rule-grid label,
  .staffing-rule-inline-grid label,
  .admin-form label
){
  gap:8px;
  color:var(--ink-soft);
}
.planner-toolbar{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;align-items:end;margin-bottom:14px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-toolbar.planner-toolbar-simple{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;grid-template-columns:unset;align-items:center;}
.planner-toolbar-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:10px;}
.planner-toolbar-cluster-end{margin-left:auto;}
.planner-pill-btn{border-radius:999px;padding:11px 22px;font-weight:700;min-height:44px;}
.planner-toolbar-sync-hidden{display:none !important;}
.planner-toolbar-sub{min-height:0;margin:-6px 0 10px;padding:0 2px;display:flex;align-items:center;}
.planner-toolbar-sub .planner-day-nav{padding:8px 0;}
.planner-norm-toolbar-expand{margin:0 0 14px;}
.planner-norm-toolbar-expand-inner{padding:16px;border-radius:18px;display:grid;gap:14px;border:1px solid var(--line);}
.planner-norm-toolbar-picker{margin:0;}
.planner-norm-toolbar-body{min-width:0;}
.planner-toolbar label{display:grid;gap:6px;font-size:12px;font-weight:700;color:var(--ink-soft);}
.planner-toolbar.is-disabled{opacity:.65;pointer-events:none;}
.planner-day-nav{display:flex;gap:10px;align-items:center;min-height:42px;}
.planner-view-segments .seg{padding:10px 16px;min-height:44px;border-radius:16px;font-size:13px;}
.planner-day-nav span{font-size:12px;font-weight:700;color:#0f172a;}
.planner-subtabs{display:grid;gap:3px;margin:2px 0 4px;padding:4px 0 0 16px;border-left:2px solid var(--line);}
.planner-subtabs .btn{text-align:left;justify-content:flex-start;width:100%;padding-left:14px;font-size:12.5px;box-shadow:none;min-height:36px;border-color:transparent;background:transparent;color:var(--ink-soft);position:relative;}
.planner-subtabs .btn:hover:not(.active){background:var(--nav-item-hover);border-color:transparent;box-shadow:none;transform:none;color:var(--ink);}
.planner-subtab.active,.rules-subtab.active{background:var(--brand-soft);color:var(--brand2);border-color:transparent;box-shadow:none;font-weight:800;}
.planner-subtab.active::before,.rules-subtab.active::before{content:"";position:absolute;left:-17px;top:7px;bottom:7px;width:3px;border-radius:999px;background:var(--brand);}
.planner-panel{display:grid;gap:8px;min-width:0;min-height:0;}
.planner-employee-list{display:grid;gap:14px;}
.planner-employee-card{display:grid;gap:14px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-employee-card.is-editing{border-color:#c4dafd;box-shadow:0 0 0 1px rgba(10,132,255,.08),0 10px 24px rgba(15,23,42,.06);}
.planner-employee-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;}
.planner-employee-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;}
.planner-employee-head{font-size:18px;font-weight:800;color:#0f172a;}
.planner-employee-sub{font-size:13px;color:#64748b;margin-top:4px;}
.planner-employee-edit-btn{min-width:130px;}
.planner-employee-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.planner-employee-stat{display:grid;gap:4px;padding:12px 14px;border:1px solid #dbe4ee;border-radius:14px;background:#fff;}
.planner-employee-stat span{font-size:12px;font-weight:700;color:#64748b;}
.planner-employee-stat strong{font-size:16px;color:#0f172a;}
.planner-employee-editor{display:grid;gap:12px;padding-top:4px;border-top:1px solid #dbe4ee;}
.planner-employee-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;}
.planner-employee-field{display:grid;gap:6px;font-size:13px;font-weight:700;color:#334155;min-width:0;}
.planner-employee-field span{display:block;}
.planner-employee-field input,.planner-employee-field select{width:100%;border:1px solid var(--control-border);border-radius:var(--control-radius);padding:12px 16px;font-size:14px;background:rgba(255,255,255,.92);box-shadow:var(--control-shadow);}
.planner-employee-field select{padding-right:46px;}
.planner-employee-check{align-content:start;}
.planner-employee-checkbox{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 2px;font-weight:600;color:#0f172a;}
.planner-fixed-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:16px;align-items:start;}
.planner-fixed-form-card,.planner-fixed-overview{display:grid;gap:12px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:16px;box-shadow:var(--shadow-xs);}
.planner-fixed-grid,.planner-rules-grid{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr));}
.planner-rules-layout{display:grid;gap:14px;}
.planner-rules-section{display:grid;gap:12px;padding:16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-rules-section-head{display:grid;gap:4px;}
.planner-rules-section-head h5{margin:0;font-size:16px;font-weight:800;color:#0f172a;}
.planner-rules-section-head p{margin:0;font-size:13px;color:#64748b;line-height:1.45;}
.planner-rules-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.planner-rules-inline-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));}
.planner-rules-grid-compact{grid-template-columns:repeat(2,minmax(0,280px));}
.planner-rules-field{display:grid;gap:8px;font-size:13px;font-weight:700;color:var(--ink-soft);min-width:0;}
.planner-rules-toggle{align-content:start;}
.planner-rules-toggle-control{display:flex;align-items:center;gap:8px;min-height:var(--control-height);padding:0 2px;font-weight:600;color:var(--ink);}
.planner-rules-actions{display:flex;justify-content:flex-end;padding-top:2px;}
.staffing-rules-head,.planning-settings-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.staffing-rules-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.staffing-rules-toolbar-right{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;}
.staffing-rules-actions{margin:0;align-items:center;}
.staffing-rules-summary{margin-bottom:14px;}
.high-risk-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.high-risk-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:14px;}
.high-risk-toolbar-right,.high-risk-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.high-risk-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:24px;align-items:start;}
.high-risk-main{display:grid;gap:12px;min-width:0;}
.high-risk-rule-list{display:grid;gap:16px;}
.high-risk-sidecard{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.high-risk-sidecard h5{margin:0;font-size:16px;color:#0f172a;}
.high-risk-rule-card{border-color:#f5d0a8;background:#fffdf8;}
.high-risk-rule-card.is-inactive{border-color:#d6d3d1;background:#fafaf9;}
.high-risk-rule-expression{background:#fff7ed;border-color:#fed7aa;color:#7c2d12;}
.high-risk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.high-risk-grid-span{grid-column:1 / -1;}
.high-risk-inline-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end;}
.high-risk-inline-checkbox{align-self:end;}
.high-risk-editor-card{margin-top:0;border:none;box-shadow:none;padding:0;background:transparent;}
.high-risk-conflict-card{border-color:#fed7aa;background:#fffaf0;}
.high-risk-conflict-note{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-top:10px;color:#9a3412;font-size:12px;}
.staffing-rule-editor-card{margin-bottom:14px;}
.staffing-rule-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.staffing-rule-inline-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.staffing-rule-grid-span{grid-column:1 / -1;}
.staffing-rules-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:24px;align-items:start;}
.staffing-rules-main{display:grid;gap:12px;min-width:0;padding:0 0 12px;border-bottom:1px solid #dbe4ea;}
.staffing-rules-section-head{display:grid;gap:4px;padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.staffing-rules-section-head h5{margin:0;font-size:16px;color:#0f172a;}
.staffing-rule-list{max-height:calc((176px * 4) + 52px);overflow:auto;padding:8px 10px 8px 2px;align-content:start;}
.staffing-rule-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;}
.staffing-rule-day{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 12px;border:1px solid #dbe4ea;border-radius:999px;background:#f8fafc;font-size:13px;font-weight:700;color:#334155;cursor:pointer;user-select:none;transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .12s ease;}
.staffing-rule-day:hover{border-color:#c4dafd;background:var(--brand-soft);transform:translateY(-1px);}
.staffing-rule-day.is-selected{border-color:transparent;background:linear-gradient(180deg,var(--brand),var(--brand2));color:#fff;box-shadow:0 10px 20px rgba(10,132,255,.18);}
.staffing-rule-day input{position:absolute;opacity:0;pointer-events:none;}
.staffing-rule-active-row{align-self:end;}
.staffing-rule-list{margin-top:14px;}
.staffing-legacy-card{display:grid;gap:12px;padding:18px;margin-top:32px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-xs);}
.staffing-legacy-head{display:grid;gap:4px;}
.staffing-legacy-head h5{margin:0;font-size:16px;font-weight:800;color:#0f172a;}
.staffing-rule-meta-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.staffing-rule-expression{padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;color:#0f172a;font-size:13px;line-height:1.5;}
.staffing-rule-card-actions{display:none;gap:8px;flex-wrap:wrap;align-items:center;padding-top:4px;}
.staffing-rule-card.is-selected .staffing-rule-card-actions{display:flex;}
.staffing-rule-card.is-selected .staffing-rule-expression{border-color:#c4dafd;background:#f4f8ff;}
.staffing-rule-card.is-system{border-style:dashed;background:#fcfcfd;}
.staffing-rule-card.is-inactive{background:#f8fafc;border-color:#cbd5e1;}
.staffing-rule-card.is-clickable{cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .12s ease;}
.staffing-rule-card.is-clickable:hover{border-color:#c4dafd;box-shadow:0 14px 28px rgba(15,23,42,.08);transform:translateY(-1px);}
.staffing-rule-card.is-selected{border-color:#c4dafd;box-shadow:0 14px 28px rgba(15,23,42,.09),0 0 0 1px rgba(10,132,255,.22);}
.staffing-rule-card .derived-staffing-badge.is-system{border-color:#dbe4ea;background:#f8fafc;color:#475569;}
.staffing-rule-modal-card :is(.modal-body,.sandbox-modal-body),
.legacy-staffing-modal-card :is(.modal-body,.sandbox-modal-body){overflow:visible;}
.staffing-rule-timewrap{width:100%;position:relative;z-index:calc(var(--layer-modal) + 4);}
.staffing-rule-timewrap.is-open{z-index:calc(var(--layer-modal) + 30);}
.staffing-rule-timewrap .date-popover{left:50%;transform:translateX(-50%);top:calc(100% + 12px);width:320px;max-width:min(320px,calc(100vw - 48px));z-index:calc(var(--layer-modal) + 31);}
.staffing-rule-empty{border:1px dashed #cbd5e1;border-radius:16px;padding:16px;background:var(--surface);color:#64748b;}
.staffing-rule-preview{padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--surface);color:#334155;font-size:13px;line-height:1.55;box-shadow:var(--shadow-xs);}
.staffing-rule-preview.is-placeholder{color:#64748b;}
.staffing-conflict-date-field{display:grid;gap:6px;min-width:min(220px,100%);font-size:13px;font-weight:700;color:#334155;}
.staffing-conflict-panel{display:grid;gap:16px;padding:18px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow);}
.staffing-rule-modal-card{width:min(760px,100%);}
.legacy-staffing-modal-card{width:min(840px,100%);}
.legacy-staffing-modal-card :is(.modal-body,.sandbox-modal-body){padding:12px 16px 14px;}
.legacy-staffing-modal-card .admin-form{display:grid;gap:10px;}
.legacy-staffing-modal-actions{align-items:center;}
.legacy-staffing-modal-secondary-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.staffing-conflict-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.staffing-conflict-panel-head h5{margin:0;font-size:16px;color:#0f172a;}
.staffing-conflict-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.staffing-conflict-list{display:grid;gap:16px;}
.staffing-conflict-ok{border-color:#99f6e4;background:#f0fdfa;}
.staffing-conflict-rule-meta{font-size:12px;color:#64748b;line-height:1.45;}
.staffing-conflict-datewrap{width:min(340px,100%);position:relative;z-index:20;}
.staffing-conflict-datewrap.is-open{z-index:40;}
.staffing-conflict-datewrap .date-popover{left:50%;transform:translateX(-50%);top:calc(100% + 12px);width:340px;max-width:min(340px,calc(100vw - 48px));z-index:41;}
.planner-fixed-repeat{display:flex;align-items:center;gap:8px;min-height:var(--control-height);padding:0 2px;font-weight:700;color:#0f172a;}
.planner-fixed-days-head{display:grid;grid-template-columns:140px 150px minmax(0,1fr);gap:12px;padding:0 12px;font-size:12px;font-weight:800;color:#64748b;text-transform:uppercase;letter-spacing:.04em;}
.planner-overview-head{font-weight:800;color:#0f172a;}
.planner-week-body{display:grid;gap:12px;}
.planner-norm-list{display:grid;gap:10px;margin-bottom:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
.planner-norm-panel{margin-bottom:12px;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;box-shadow:var(--shadow-xs);}
.planner-norm-panel-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;list-style:none;cursor:pointer;padding:14px 16px;}
.planner-norm-panel-summary::-webkit-details-marker{display:none;}
.planner-norm-panel-title{display:grid;gap:4px;min-width:0;}
.planner-norm-panel-title strong{font-size:14px;color:#0f172a;}
.planner-norm-panel-title span{font-size:12px;color:#475569;}
.planner-norm-panel[open] .planner-norm-panel-summary{border-bottom:1px solid #dbe4ea;background:#fff;}
.planner-norm-panel-body{display:grid;gap:12px;padding:14px 16px;background:#fff;}
.planner-norm-picker{display:grid;gap:6px;max-width:320px;font-size:12px;font-weight:700;color:#334155;}
.planner-norm-picker select{width:100%;}
.planner-norm-detail-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));}
.planner-norm-all-list{display:grid;gap:10px;}
.planner-norm-all-item{display:grid;gap:8px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;}
.planner-norm-all-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.planner-norm-all-head strong{font-size:13px;color:#0f172a;}
.planner-norm-all-head span{font-size:12px;color:#475569;}
.planner-norm-all-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));}
.planner-norm-card{display:grid;gap:6px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;}
.planner-norm-card-details{padding:0;overflow:hidden;}
.planner-norm-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;list-style:none;cursor:pointer;padding:12px;}
.planner-norm-summary::-webkit-details-marker{display:none;}
.planner-norm-summary-main{display:grid;gap:4px;min-width:0;}
.planner-norm-summary-text{font-size:12px;color:#475569;}
.planner-norm-summary-toggle{font-size:12px;font-weight:700;color:var(--brand2);white-space:nowrap;}
.planner-norm-card-details[open] .planner-norm-summary{border-bottom:1px solid #dbe4ea;background:#fff;}
.planner-norm-details{display:grid;gap:8px;padding:12px;}
.planner-norm-details-empty{padding:12px;color:#64748b;font-size:12px;}
.planner-norm-meta{font-size:12px;color:#475569;}
.planner-norm-balance{font-weight:800;}
.planner-norm-balance.pos{color:#047857;}
.planner-norm-balance.neg{color:#b91c1c;}
.planner-norm-balance.zero{color:#0f172a;}
.planner-overview-grid{display:grid;gap:6px;overflow:auto;}
.planner-overview-grid.week{grid-template-columns:220px repeat(var(--planner-week-cols, 7),minmax(140px,1fr)) 120px;}
.planner-overview-grid.month{grid-template-columns:220px repeat(7,minmax(120px,1fr)) 120px;}
.planner-cell{padding:6px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:12px;}
.planner-cell-empty{background:#f1f5f9;border-color:#dbe4ea;}
.planner-cell-filled{background:#ffffff;}
.planner-cell-fallback{background:#f0fdf4;border-color:#86efac;}
.planner-cell input{width:100%;border:1px solid #d1d5db;border-radius:6px;padding:4px;font-size:11px;}
.planner-cell-empty .planner-shift-input{background:#f8fafc;border-color:#cbd5e1;color:#0f172a;}
.planner-cell-filled .planner-shift-input{background:#ffffff;}
.planner-cell-fallback .planner-shift-input{background:#f7fee7;border-color:#86efac;}
.planner-head{background:var(--brand-soft);font-weight:700;}
.planner-name{font-weight:700;background:#f8fafc;}
.planner-weeksum{font-weight:700;background:#f1f5f9;}
.planner-alert{background:#fff7ed;border-color:#fdba74;}
.planner-date{font-weight:700;color:#0f172a;}
.planner-shift-hours{display:block;color:#64748b;font-size:11px;}
.planner-shift-badge{display:inline-flex;align-items:center;gap:6px;width:max-content;margin-top:4px;padding:2px 8px;border-radius:999px;background:#dcfce7;color:#166534;font-size:11px;font-weight:700;}
.planner-day-card{display:grid;gap:8px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff;}
.planner-day-row{display:grid;grid-template-columns:180px 1fr 80px;gap:10px;align-items:center;border-bottom:1px dashed #e2e8f0;padding:6px 0;}
.planner-day-row:last-child{border-bottom:none;}
.planner-total{font-weight:800;color:#0f172a;}
.planner-draft-head{display:flex;justify-content:space-between;align-items:center;gap:10px;}
.planner-create-intro{margin:0 0 12px;font-size:14px;color:#64748b;line-height:1.45;}
.planner-draft-status-banner{margin:0 0 14px;border-radius:14px;padding:10px 14px;font-size:14px;}
.planner-draft-status-banner.hidden{display:none!important;}
.planner-meta-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-meta-strip-empty{color:#64748b;font-size:14px;}
.planner-meta-strip-period{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.02em;}
.planner-meta-strip-badge{display:inline-flex;align-items:center;padding:4px 11px;border-radius:999px;background:var(--brand-soft);color:var(--brand2);font-size:12px;font-weight:700;border:1px solid #c4dafd;}
/* Published – past */
.planner-meta-strip-badge.is-published{background:#dcfce7;color:#166534;border-color:#86efac;}
/* Published – currently active */
.planner-meta-strip-badge.is-active-period{background:#16a34a;color:#fff;border-color:#15803d;}
/* Published – upcoming */
.planner-meta-strip-badge.is-upcoming{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc;}
.planner-draft-item .planner-draft-period{font-size:15px;font-weight:700;letter-spacing:-.02em;}
.planner-panel > #plannerStatus:empty,
#plannerGeneratorSummary:empty,
#plannerDraftPanel:empty{
  display:none;
}
.planner-create-grid{display:grid;grid-template-columns:1.1fr 1.1fr auto;gap:12px 16px;align-items:end;padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-create-fab{box-sizing:border-box;width:52px;height:52px;min-width:52px;min-height:52px;padding:0;aspect-ratio:1;border-radius:50%;border:none;cursor:pointer;display:grid;place-items:center;background:var(--brand);color:#fff;box-shadow:0 8px 22px rgba(13,143,140,.38),0 3px 10px rgba(15,23,42,.14);align-self:end;transition:transform .32s cubic-bezier(.22,1,.36,1),box-shadow .22s ease;}
.planner-create-fab:hover{box-shadow:0 12px 28px rgba(13,143,140,.44),0 4px 12px rgba(15,23,42,.16);transform:translateY(-2px);}
.planner-create-fab:focus-visible{outline:none;box-shadow:var(--focus-ring),0 12px 28px rgba(37,99,235,.45);}
.planner-create-grid .planner-create-submit.ui-plus-button{min-width:52px;min-height:52px;border-radius:50%;}
.planner-create-actions{position:relative;align-self:end;}
.planner-create-menu{position:absolute;bottom:calc(100% + 6px);right:0;z-index:calc(var(--layer-modal, 200) + 5);min-width:230px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-soft);padding:6px;display:grid;gap:2px;}
.planner-create-menu.hidden{display:none;}
.planner-create-menu-item{display:block;width:100%;text-align:left;padding:10px 14px;border:none;background:transparent;border-radius:11px;font-size:14px;font-weight:600;color:#0f172a;cursor:pointer;transition:background .12s;line-height:1.3;}
.planner-create-menu-item:hover,.planner-create-menu-item:focus{background:var(--brand-soft);color:var(--brand2);outline:none;}
.planner-create-menu-item-ah{color:#c2410c;}
.planner-create-menu-item-ah:hover,.planner-create-menu-item-ah:focus{background:#fff4ec;color:#c2410c;}
.planner-create-menu-item-sub{display:block;font-size:12px;font-weight:400;color:#64748b;margin-top:2px;}
.planner-create-menu-item-ah .planner-create-menu-item-sub{color:var(--shift-afterhours);}
/* After-hours setup panel */
.planner-ah-setup{display:grid;gap:18px;padding:18px;border:1px solid #fdba74;border-radius:18px;background:#fff9f5;box-shadow:var(--shadow-xs);}
.planner-ah-setup-head{display:grid;gap:4px;}
.planner-ah-setup-badge{display:inline-flex;align-self:start;padding:3px 10px;border-radius:999px;background:#fff4ec;color:#c2410c;font-size:11px;font-weight:700;border:1px solid #fdba74;letter-spacing:.02em;}
.planner-ah-setup-title{margin:0;font-size:16px;font-weight:700;color:#0f172a;}
.planner-ah-setup-period{margin:0;font-size:13px;color:#64748b;}
.planner-ah-setup-section{display:grid;gap:10px;}
.planner-ah-setup-label{margin:0;font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.04em;}
.planner-ah-setup-staff-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.planner-ah-setup-employees{display:flex;flex-wrap:wrap;gap:8px;}
.planner-ah-setup-emp-check{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border:1.5px solid var(--line);border-radius:12px;background:#fff;font-size:13px;font-weight:600;color:#0f172a;cursor:pointer;transition:border-color .12s,background .12s;}
.planner-ah-setup-emp-check:has(input:checked){border-color:var(--shift-afterhours);background:#fff9f5;}
.planner-ah-setup-emp-check input{margin:0;cursor:pointer;accent-color:var(--shift-afterhours);}
.planner-ah-setup-emp-role{font-size:11px;font-weight:600;padding:2px 7px;border-radius:999px;margin-left:2px;}
.planner-ah-setup-emp-role.is-dyrl{background:#dff3f1;color:#097470;}
.planner-ah-setup-emp-role.is-elev{background:#fff4ec;color:#c2410c;}
.planner-ah-setup-holidays{margin:0;padding:0;list-style:none;display:grid;gap:5px;}
.planner-ah-setup-holiday-item{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:10px;font-size:13px;font-weight:600;background:#fff;border:1px solid var(--line);}
.planner-ah-setup-holiday-item.is-holiday{border-color:#7dd3fc;background:#f0f9ff;color:#0369a1;}
.planner-ah-setup-holiday-item.is-closed{border-color:#fca5a5;background:#fef2f2;color:#991b1b;}
.planner-ah-setup-holiday-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.planner-ah-setup-holiday-item.is-holiday .planner-ah-setup-holiday-dot{background:#38bdf8;}
.planner-ah-setup-holiday-item.is-closed .planner-ah-setup-holiday-dot{background:#f87171;}
.planner-ah-setup-actions{display:flex;gap:10px;}
/* After-hours workspace accent */
.planner-workspace-afterhours > .planner-overview-intro{color:#c2410c;}
.planner-draft-status.is-afterhours{background:#fff4ec;color:#c2410c;border-color:#fdba74;}
.planner-draft-item.is-afterhours{border-left:3px solid var(--shift-afterhours);}
/* Holiday / closed day markers in afterhours draft column heads */
.planner-day-head-holiday{font-size:11px;font-weight:700;color:#2563a8;display:block;margin-top:1px;}
.planner-day-head-closed{font-size:11px;font-weight:700;color:#dc2626;display:block;margin-top:1px;}
.planner-create-period-field .ui-field-label{font-weight:600;color:#475569;font-size:13px;}
.planner-create-grid > label,
.planner-generator-grid > label,
.high-risk-inline-grid > label,
.admin-form > label{position:relative;z-index:1;}
.planner-create-grid > label:focus-within,
.planner-generator-grid > label:focus-within,
.high-risk-inline-grid > label:focus-within,
.admin-form > label:focus-within{z-index:calc(var(--layer-modal) + 20);}
.planner-draft-list{display:grid;gap:8px;max-height:none;overflow:visible;}
.planner-toolbar,.planner-create-grid,.planner-fixed-grid,.planner-rules-grid,.planner-rules-layout{min-width:0;}
.planner-draft-item{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow-xs);}
/* Published – past/afsluttet: light green */
.planner-draft-item.is-published{border-color:#86efac;background:#f0fdf4;}
/* Published – currently active period: vivid green with stronger border */
.planner-draft-item.is-active-period{border-color:#16a34a;background:#dcfce7;box-shadow:0 0 0 2px #bbf7d0,var(--shadow-xs);}
/* Published – upcoming/kommende: sky-blue */
.planner-draft-item.is-upcoming{border-color:#7dd3fc;background:#f0f9ff;}
.planner-draft-item-empty{color:#64748b;}
.planner-draft-section{display:grid;gap:8px;}
.planner-draft-section + .planner-draft-section{margin-top:8px;}
.planner-draft-section-title{font-size:13px;font-weight:600;letter-spacing:-.01em;text-transform:none;color:#475569;margin:0 0 2px;}
.planner-draft-title-row{display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap;}
.planner-draft-status{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand2);font-size:12px;font-weight:700;border:1px solid #c4dafd;}
/* Published – past: muted green pill */
.planner-draft-status.is-published{background:#dcfce7;color:#166534;border-color:#86efac;}
/* Published – active now: vivid solid green pill */
.planner-draft-status.is-active-period{background:#16a34a;color:#fff;border-color:#15803d;}
/* Published – upcoming: sky-blue pill */
.planner-draft-status.is-upcoming{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc;}
.planner-draft-meta{font-size:12px;color:#64748b;}
.planner-draft-conflict-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#dc2626;color:#fff;font-size:13px;font-weight:800;line-height:1;border:2px solid #fff;box-shadow:0 0 0 1px #fecaca;flex-shrink:0;}
.planner-draft-conflict-badge[title]{cursor:help;}
.planner-cell-closed-day-conflict{border-color:#f87171;background:#fef2f2;box-shadow:inset 0 0 0 1px #fecaca;}
.planner-cell-closed-day-conflict .planner-shift-input{border-color:#fca5a5;background:#fff5f5;}
.planner-day-head-cell.is-closed-day-conflict{border-color:#f87171;background:#fef2f2;}
.planner-day-head-conflict-icon{display:inline-flex;margin-left:4px;color:#dc2626;font-weight:800;font-size:14px;line-height:1;vertical-align:middle;}
.planner-closed-day-resolve-panel{margin:0 0 12px;padding:12px 14px;border:1px solid #fca5a5;border-radius:12px;background:#fef2f2;}
.planner-closed-day-resolve-panel.hidden{display:none!important;}
.planner-closed-day-resolve-inner{display:grid;gap:8px;}
.planner-closed-day-resolve-title{font-size:14px;color:#991b1b;}
.planner-closed-day-resolve-date{font-size:13px;color:#7f1d1d;margin:0;}
.planner-closed-day-publish-list{margin:0 0 14px;padding-left:20px;display:grid;gap:8px;}
.planner-closed-day-publish-list li{display:grid;gap:2px;}
.planner-closed-day-publish-list-detail{font-size:13px;color:#64748b;font-weight:400;}
.planner-closed-day-conflict-banner{display:flex;align-items:flex-start;gap:10px;margin:0 0 12px;padding:12px 14px;border:1px solid #fca5a5;border-radius:12px;background:#fef2f2;font-size:13px;color:#7f1d1d;line-height:1.45;}
.planner-closed-day-conflict-banner .planner-draft-conflict-badge{flex-shrink:0;}
.planner-draft-confirm{grid-column:1/-1;display:grid;gap:8px;padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line);}
.planner-draft-confirm span{font-weight:700;color:#0f172a;}
.planner-generator-card{display:grid;gap:16px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-generator-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.planner-generator-head h4{margin:0;font-size:18px;color:#0f172a;}
.planner-generator-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.planner-generator-field{display:grid;gap:6px;font-size:13px;font-weight:700;color:#334155;}
.planner-generator-check{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 2px;font-size:13px;font-weight:700;color:#0f172a;}
.planner-generator-check input{margin:0;}
.planner-generator-advanced{border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.72);overflow:hidden;}
.planner-generator-advanced-summary{cursor:pointer;list-style:none;padding:12px 14px;font-size:13px;font-weight:700;color:#334155;background:rgba(248,250,252,.9);}
.planner-generator-advanced-summary::-webkit-details-marker{display:none;}
.planner-generator-advanced-grid{padding:0 12px 14px;gap:10px;}
.planner-generator-competency-filter{display:grid;gap:10px;}
.planner-generator-competency-head{display:grid;gap:4px;}
.planner-generator-competency-head strong{font-size:13px;color:#0f172a;}
.planner-generator-competency-head .form-help{margin:0;}
.planner-generator-competency-empty{margin:0;}
.planner-generator-competency-chips{display:flex;flex-wrap:wrap;gap:8px 12px;}
.planner-generator-competency-check{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:13px;font-weight:600;color:#0f172a;cursor:pointer;}
.planner-generator-competency-check input{margin:0;cursor:pointer;}
.planner-generator-competency-check span{cursor:pointer;}
.planner-generator-staff{display:grid;gap:12px;}
.planner-generator-staff-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
.planner-generator-employee-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;}
.planner-generator-employee-option{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:#fff;color:var(--ink);}
.planner-generator-employee-option input{margin-top:2px;}
.planner-generator-employee-text{display:grid;gap:4px;min-width:0;}
.planner-generator-employee-text strong{font-size:14px;}
.planner-generator-employee-text span{font-size:12px;color:#64748b;line-height:1.4;}
.planner-generator-actions,.planner-generator-result-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;}
.planner-generator-result{display:grid;gap:14px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-generator-result-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
.planner-generator-result-head h5{margin:0;font-size:16px;color:#0f172a;}
.planner-generator-result-stats{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:10px;}
.planner-generator-stat{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);}
.planner-generator-stat span{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#64748b;}
.planner-generator-stat strong{font-size:22px;color:#0f172a;}
.planner-generator-problems{display:grid;gap:10px;}
.planner-generator-group{border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;box-shadow:var(--shadow-xs);}
.planner-generator-group.is-conflict{border-color:#fecaca;background:#fff7f7;}
.planner-generator-group.is-warning{border-color:#fed7aa;background:#fffaf3;}
.planner-generator-group-summary{cursor:pointer;list-style:none;padding:14px 16px;background:rgba(255,255,255,.78);}
.planner-generator-group-summary::-webkit-details-marker{display:none;}
.planner-generator-group-summary span{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;}
.planner-generator-group-summary strong{font-size:14px;color:#0f172a;}
.planner-generator-group-summary small{font-size:12px;color:#64748b;font-weight:700;}
.planner-generator-group-body{display:grid;gap:10px;padding:0 12px 12px;}
.planner-generator-problem{display:grid;gap:6px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);text-align:left;font:inherit;color:inherit;}
.planner-generator-problem.is-conflict{border-color:#fecaca;background:#fff7f7;}
.planner-generator-problem.is-warning{border-color:#fed7aa;background:#fffaf3;}
.planner-generator-problem-copy{display:grid;gap:6px;}
.planner-generator-problem strong{font-size:14px;color:#0f172a;}
.planner-generator-problem span{font-size:12px;color:#475569;line-height:1.45;}
.planner-generator-problem-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:4px;}
.planner-generator-inline-btn{min-width:0;}
.planner-generator-empty{padding:14px 16px;border:1px dashed #cbd5e1;border-radius:16px;background:var(--surface);color:#64748b;}
.planner-generator-conflict-modal-detail{display:grid;gap:10px;margin-top:12px;color:#475569;font-size:13px;line-height:1.5;}
.planner-generator-conflict-modal-detail strong{color:#0f172a;}
.planner-norm-editor-modal-card{width:min(760px,100%);}
.planner-norm-editor-summary{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#f8fafc;color:#475569;}
.planner-norm-editor-summary strong{font-size:16px;color:#0f172a;}
.planner-norm-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.planner-norm-editor-grid label{display:grid;gap:6px;font-size:13px;font-weight:700;color:#334155;}
.planner-norm-editor-grid input,.planner-norm-editor-grid select{width:100%;border:1px solid var(--control-border);border-radius:var(--control-radius);padding:12px 16px;font-size:14px;background:rgba(255,255,255,.92);box-shadow:var(--control-shadow);}
.planner-norm-editor-grid select{padding-right:46px;}
.planner-norm-editor-check{align-content:end;}
.planner-norm-editor-check span{display:block;}
.planner-norm-editor-check input{width:auto;justify-self:start;}
.planner-toolbar:not(.planner-toolbar-simple){grid-template-columns:repeat(9,minmax(0,1fr));}
.planner-overview-grid.week{grid-template-columns:220px repeat(var(--planner-week-cols, 7),minmax(130px,1fr)) 120px;}
.planner-cell,.planner-cell input{min-height:42px;}
.planner-cell{display:grid;align-content:start;gap:4px;}
.planner-clickable{cursor:pointer;}
.planner-cell-empty .planner-shift-hours{display:none;}
.planner-cell-autofill-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;min-width:0;min-height:0;border-radius:50%;border:1.5px dashed #94a3b8;background:transparent;color:#94a3b8;font-size:15px;font-weight:700;line-height:1;cursor:pointer;padding:0;margin-top:6px;opacity:.55;transition:opacity .12s,border-color .12s,color .12s,background .12s;}
.planner-cell:hover .planner-cell-autofill-btn,.planner-cell-autofill-btn:focus{opacity:1;border-color:#3b82f6;color:#3b82f6;border-style:solid;}
.planner-cell-autofill-btn:hover{background:#eff6ff;}
.planner-cell-actions-reveal{display:none;flex-wrap:wrap;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(226,232,240,.92);}
.planner-cell-editable.is-planner-cell-selected .planner-cell-actions-reveal{display:flex;}
.planner-cell-editable.is-planner-cell-selected{box-shadow:inset 0 0 0 2px rgba(56,149,255,.35);border-radius:18px;}
.planner-cell-actions-reveal .planner-cell-icon-btn{min-height:unset;width:38px;height:38px;min-width:38px;padding:0!important;margin:0;gap:0;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;line-height:0;}
.planner-cell-actions-reveal .planner-cell-icon-btn svg{display:block;color:inherit;width:18px;height:18px;}
.planner-cell-actions-reveal .planner-cell-remove-btn{color:#991b1b;border-color:#fecaca;}
.planner-cell-actions-reveal .planner-cell-remove-btn:hover{background:linear-gradient(180deg,#fff,#fef2f2);border-color:#fca5a5;color:#7f1d1d;}

.planner-cell-weekend.planner-cell:not(.shift--regular):not(.shift--open):not(.shift--close):not(.shift--open-close):not(.shift--status):not(.shift--internal),
.planner-head.planner-cell-weekend.planner-cell{background:linear-gradient(180deg,#ebeff5,#dfe5ed)!important;border-color:#cdd5df!important;color:#475569!important;}
.planner-cell.planner-cell-weekend.planner-cell-filled.shift--regular{background:linear-gradient(180deg,#dfe6ef,#cfd8e6)!important;border-color:#bcc7d6!important;color:#334155!important;}
.planner-cell.planner-cell-weekend .planner-shift-input{background:rgba(255,255,255,.85)!important;}
.planner-cell.planner-cell-weekend .planner-shift-hours{color:#64748b;}
.planner-week-block{padding:0;overflow:clip;display:block;scroll-margin-top:120px;}
.planner-week-block-inner{padding:14px 16px 16px;display:grid;gap:8px;min-width:0;border-radius:inherit;}
.planner-overview-grid.week.planner-week-head > .planner-cell{min-height:0;padding-top:3px!important;padding-bottom:3px!important;}
.planner-overview-grid.week.planner-week-head > .planner-cell.planner-week-corner{padding-top:4px!important;padding-bottom:4px!important;}
.planner-week-corner{display:flex;flex-direction:column;gap:8px;align-items:flex-start;align-self:center;justify-content:center;min-width:0;}
.planner-overview-grid.week.planner-week-head > .planner-cell.planner-week-corner{background:transparent!important;border:none!important;box-shadow:none!important;padding-left:2px;padding-right:10px;}
.planner-week-corner-title{font-size:13px;font-weight:800;color:var(--ink);letter-spacing:-.03em;line-height:1.1;}
.planner-week-corner-pill{display:inline-flex;align-items:center;justify-content:center;padding:7px 14px;border-radius:999px;border:1px solid rgba(217,226,236,.95);background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.98));box-shadow:var(--shadow-xs);}
.planner-week-corner-label{font-size:9px;font-weight:700;color:#94a3b8;letter-spacing:.05em;text-transform:uppercase;line-height:1.1;}
.planner-day-head-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:0;padding:3px 4px!important;}
.planner-day-head-dow{font-size:9px;font-weight:800;color:#64748b;letter-spacing:.05em;text-transform:uppercase;line-height:1.05;}
.planner-day-head-date{font-size:12px;font-weight:700;color:#0f172a;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums;}
.planner-weeksum-head{text-align:center;font-size:11px!important;font-weight:700!important;padding:2px 4px!important;}

.planner-week-heading{margin:0;font-size:16px;font-weight:800;color:var(--ink);letter-spacing:-.02em;padding-bottom:2px;line-height:1.25;padding-right:min(40%,260px);}
.planner-week-heading::after{
  content:"";
  display:block;
  height:6px;margin-top:12px;margin-bottom:0;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(100,148,237,.42),rgba(203,213,225,.35) 52%,transparent 100%);
}
.planner-overview-grid.week.planner-week-employee-row{
  padding:14px;margin:0;
  border-radius:16px;background:#fff;
  border:1px solid var(--line);
  box-shadow:var(--shadow-xs);
}
.planner-overview-grid.week.planner-week-head{
  padding:4px 8px;margin:0;
  border-radius:12px;background:var(--surface);
  border:1px solid var(--line);
  box-shadow:var(--shadow-xs);
  align-items:stretch;
  position:sticky;
  top:8px;
  z-index:8;
}
.planner-overview-grid.week.planner-week-totals{
  padding-top:14px;margin-top:2px;border-top:2px dashed #e2e8f0;background:transparent;
}
.planner-day-card-weekend{border-color:#cdd5df!important;background:linear-gradient(180deg,#f1f5f9,#ebeff5)!important;}
.planner-day-card .planner-day-row{
  gap:14px;
  align-items:start;
  padding:14px 16px;margin:0;margin-bottom:12px;
  border-bottom:none;
  border-radius:14px;background:var(--surface);
  border:1px solid var(--line);
  box-shadow:var(--shadow-xs);
}
.planner-day-card .planner-day-row:last-of-type{margin-bottom:0;}
.planner-cell:hover,
.planner-cell:active{transform:none;box-shadow:none;}
.planner-cell.shift--regular{background:#fff;border-color:#d7dee7;}
.planner-cell.shift--open{background:#bbf7d0;border-color:#4ade80;}
.planner-cell.shift--close{background:#fecaca;border-color:#f87171;}
.planner-cell.shift--open-close{background:linear-gradient(90deg,#bbf7d0 0 50%,#fecaca 50% 100%);border-color:#f59e0b;}
.planner-cell.shift--status{background:#eef5ff;border-color:#bfd7ff;}
.planner-cell.shift--internal{background:#ede9fe;border-color:#a78bfa;}
.planner-cell-locked{background:#f8fafc;border-color:#e2e8f0;opacity:.78;}
.planner-cell.is-closed-day{box-shadow:inset 0 0 0 2px rgba(185,28,28,.10);}
.planner-cell.shift--regular:hover,.planner-cell.shift--regular:active{background:#fff;border-color:#d7dee7;}
.planner-cell.shift--open:hover,.planner-cell.shift--open:active{background:#bbf7d0;border-color:#4ade80;}
.planner-cell.shift--close:hover,.planner-cell.shift--close:active{background:#fecaca;border-color:#f87171;}
.planner-cell.shift--open-close:hover,.planner-cell.shift--open-close:active{background:linear-gradient(90deg,#bbf7d0 0 50%,#fecaca 50% 100%);border-color:#f59e0b;}
.planner-cell.shift--status:hover,.planner-cell.shift--status:active{background:#eef5ff;border-color:#bfd7ff;}
.planner-cell.shift--internal:hover,.planner-cell.shift--internal:active{background:#ede9fe;border-color:#a78bfa;}
.planner-cell.shift--regular input,
.planner-cell.shift--open input,
.planner-cell.shift--close input,
.planner-cell.shift--open-close input,
.planner-cell.shift--status input,
.planner-cell.shift--internal input{background:rgba(255,255,255,.82);}
.planner-cell-locked input{background:#f8fafc;color:#94a3b8;cursor:not-allowed;}
.planner-cell-closed-label{display:inline-flex;align-items:center;justify-self:start;padding:4px 8px;border-radius:999px;background:#fff1f2;border:1px solid #fecaca;color:#b91c1c;font-size:11px;font-weight:800;}
.planner-cell-closed-label.is-allowed{background:#fef3c7;border-color:#fcd34d;color:#92400e;}
.planner-cell-closed-note{font-size:11px;line-height:1.35;color:#7f1d1d;}
.planner-date-highlight{animation:plannerDatePulse 3s ease;}
.planner-meta-warning{margin-top:10px;padding:10px 12px;border:1px solid #f2c99b;background:#fff7ef;color:#8a4b08;border-radius:12px;}
@keyframes plannerDatePulse{
  0%{box-shadow:0 0 0 0 rgba(10,132,255,.0);background:var(--brand-soft);border-color:#8fc2ff;}
  20%{box-shadow:0 0 0 4px rgba(10,132,255,.18);background:var(--brand-soft);border-color:#8fc2ff;}
  100%{box-shadow:0 0 0 0 rgba(10,132,255,0);}
}
.planner-day-status{display:grid;gap:4px;margin-top:2px;}
.planner-day-status-badge{display:inline-flex;align-items:center;justify-content:center;justify-self:start;padding:4px 8px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:800;border:1px solid rgba(10,132,255,.16);}
.planner-day-status-note{font-size:11px;color:#64748b;line-height:1.35;}
.closed-day-calendar-event{
  box-shadow:inset 0 0 0 1px rgba(127,29,29,.22);
  overflow:hidden !important;
  border-radius:14px !important;
  clip-path: inset(0 round 14px);
}
.fc-event.closed-day-calendar-event,
.fc-daygrid-event.closed-day-calendar-event{background:linear-gradient(135deg,#b91c1c,#ef4444) !important;border-color:#991b1b !important;color:#fff !important;}
.fc .closed-day-calendar-event .fc-event-main::before{content:none !important;}
.fc .closed-day-calendar-event .fc-event-main-frame{padding:2px !important;}
.fc .closed-day-calendar-event .ev{
  padding:8px 12px;
  border-radius:14px;
  background:linear-gradient(135deg,#b91c1c,#ef4444);
  box-shadow:0 6px 16px rgba(127,29,29,.22);
}
.fc .closed-day-calendar-event .ev-title,
.fc .closed-day-calendar-event .ev-time{color:#fff;}
.fc .closed-day-calendar-event .ev-time{opacity:.9;}
.shift-dot.shift-dot-closed-day{background:#b91c1c;}
.holiday-calendar-event{
  box-shadow:inset 0 0 0 1px rgba(29,78,216,.18);
  overflow:hidden !important;
  border-radius:14px !important;
  clip-path: inset(0 round 14px);
}
.fc-event.holiday-calendar-event,
.fc-daygrid-event.holiday-calendar-event{background:linear-gradient(135deg,#dbeafe,#eff6ff) !important;border-color:#93c5fd !important;color:#0f172a !important;}
.fc-event.holiday-calendar-event.holiday-calendar-event-closed,
.fc-daygrid-event.holiday-calendar-event.holiday-calendar-event-closed{background:linear-gradient(90deg,#dbeafe,#e8eefc 40%,#fecaca 85%,#fee2e2) !important;border-color:#fca5a5 !important;}
.fc .holiday-calendar-event .fc-event-main::before{
  content:none !important;
}
.fc .holiday-calendar-event .fc-event-main-frame{
  padding:2px !important;
}
.fc .holiday-calendar-event .ev{
  padding:8px 12px;
  border-radius:14px;
  background:linear-gradient(135deg,#dbeafe,#eff6ff);
  border:1px solid rgba(147,197,253,.9);
  box-shadow:0 6px 14px rgba(29,78,216,.10);
}
.fc .holiday-calendar-event.holiday-calendar-event-closed .ev{
  background:linear-gradient(90deg,#dbeafe,#e8eefc 40%,#fecaca 85%,#fee2e2);
  border-color:rgba(252,165,165,.95);
}
.fc .holiday-calendar-event .ev-title,
.fc .holiday-calendar-event .ev-time{color:#1e3a8a;}
.fc .holiday-calendar-event .ev-time{opacity:.88;}
.high-risk-calendar-event{box-shadow:inset 0 0 0 1px rgba(180,83,9,.18);}
.fc .holiday-calendar-event .fc-event-main,
.fc .holiday-calendar-event .fc-event-main-frame{
  overflow:hidden !important;
  border-radius:14px !important;
}

.fc .holiday-calendar-event.holiday-calendar-event-closed,
.fc-daygrid-event.holiday-calendar-event.holiday-calendar-event-closed{
  overflow:hidden !important;
  border-radius:14px !important;
}
.fc-event.high-risk-calendar-event,
.fc-daygrid-event.high-risk-calendar-event{background:linear-gradient(135deg,#fef3c7,#fffbeb) !important;border-color:#f59e0b !important;color:#7c2d12 !important;}
.fc .high-risk-calendar-event .fc-event-main::before{content:none !important;}
.fc .high-risk-calendar-event .fc-event-main-frame{padding:2px !important;}
.fc .high-risk-calendar-event .ev{
  padding:8px 12px;
  border-radius:14px;
  background:linear-gradient(135deg,#fef3c7,#fffbeb);
  border:1px solid rgba(245,158,11,.72);
  box-shadow:0 6px 14px rgba(180,83,9,.10);
}
.fc .high-risk-calendar-event .ev-title,
.fc .high-risk-calendar-event .ev-time{color:#7c2d12;}
.fc .high-risk-calendar-event .ev-time{opacity:.88;}
.shift-dot.shift-dot-internal{background:#7c3aed;}
.planner-remove-summary{font-weight:700;color:#0f172a;background:#f8fafc;border:1px solid var(--line);}
.planner-workspace-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start;}
.planner-subpanel-wrap{display:grid;gap:8px;min-width:0;min-height:0;}
.planner-fixed-days{display:grid;gap:10px;grid-template-columns:1fr;}
.planner-fixed-day-row{display:grid;grid-template-columns:140px 150px minmax(0,1fr);gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-time-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center;}
.planner-time-separator{font-size:12px;font-weight:700;color:#64748b;}
.planner-fixed-day-name{font-weight:800;color:#0f172a;}
.planner-fixed-toggle{display:flex;align-items:center;gap:8px;font-weight:700;color:#334155;}
.planner-fixed-time{display:grid;gap:6px;color:#64748b;font-size:12px;}
.planner-fixed-time input[type="time"]{width:100%;}
.planner-fixed-actions{display:flex;justify-content:flex-end;}
.planner-fixed-bulk-actions{display:flex;gap:8px;flex-wrap:wrap;}
.planner-fixed-global-note{font-size:12px;color:#64748b;line-height:1.45;}
.planner-fixed-debug{display:grid;gap:8px;margin-top:10px;}
.planner-fixed-debug-item{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);font-size:12px;color:var(--ink-soft);}
.planner-fixed-debug-item.is-error{border-color:#fca5a5;background:#fff1f2;}
.planner-fixed-debug-item.is-ok{border-color:#99f6e4;background:#f0fdfa;}
.planner-fixed-current{display:grid;gap:10px;}
.planner-fixed-current-head{display:grid;gap:4px;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-xs);}
.planner-fixed-current-head span{font-size:14px;font-weight:700;color:#0f172a;}
.planner-fixed-overview-head{display:grid;gap:4px;}
.planner-fixed-overview-head span{font-size:12px;color:#64748b;}
.planner-fixed-overview-list{display:grid;gap:10px;}
.planner-fixed-card{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.planner-fixed-card.is-selected{border-color:#c4dafd;box-shadow:0 0 0 1px rgba(10,132,255,.15);}
@media (max-width: 900px){
  .planner-generator-grid{grid-template-columns:1fr;}
  .planner-generator-advanced-grid{grid-template-columns:1fr;}
  .planner-generator-result-stats{grid-template-columns:1fr;}
}
.planner-fixed-card-head{display:flex;justify-content:space-between;gap:10px;align-items:center;}
.planner-fixed-card-head span{font-size:12px;color:#64748b;font-weight:700;}
.planner-fixed-card-actions{display:flex;gap:8px;flex-wrap:wrap;}
.planner-fixed-confirm{display:grid;gap:8px;padding:14px;border-radius:16px;background:var(--surface);border:1px solid var(--line);}
.planner-fixed-confirm span{font-weight:700;color:#0f172a;}
.planner-fixed-summary-row{display:grid;grid-template-columns:110px 1fr;gap:10px;font-size:13px;color:#0f172a;}
.planner-fixed-empty{padding:14px 16px;border:1px dashed #cbd5e1;border-radius:16px;background:#fff;color:#64748b;font-size:13px;}
.planner-copy-btn{margin-top:6px;width:100%;}

@keyframes appEnter{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:translateY(0)}
}

@keyframes modalEnter{
  from{opacity:0;transform:translateY(12px) scale(.985)}
  to{opacity:1;transform:translateY(0) scale(1)}
}

@keyframes menuEnter{
  from{opacity:0;transform:translateY(-4px) scale(.98)}
  to{opacity:1;transform:translateY(0) scale(1)}
}

@media (max-width: 860px){
.derived-staffing-status-grid{grid-template-columns:1fr;}
  .staffing-rule-grid,.staffing-rule-inline-grid,.staffing-rules-layout,.high-risk-layout,.high-risk-grid,.high-risk-inline-grid{grid-template-columns:1fr;}
  .staffing-rules-toolbar-right{width:100%;}
  .staffing-conflict-date-field{width:100%;}
  .staffing-rule-list{max-height:unset;}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none !important;transition:none !important}
}



@media (max-width: 1100px){
  .layout{grid-template-columns:1fr;}
  .admin-panel{position:static;}
  .controls-center,.controls-right{justify-content:flex-start;}
  .dashboard-layout{grid-template-columns:1fr;overflow:auto;}
  .dashboard-content{height:auto;overflow:visible;padding-right:0;}
  .derived-staffing-range-controls{grid-template-columns:1fr;}
  .derived-staffing-date-controls,.derived-staffing-date-controls > label{width:100%;flex:1 1 100%;}
  .user-management-toolbar{grid-template-columns:1fr;}
  .user-overview-main{flex-direction:column;align-items:flex-start;}
  .user-profile-layout{grid-template-columns:1fr;}
  .user-profile-sidebar{position:static;}
  .user-status-summary,.user-profile-grid,.user-profile-grid-fixed,.user-fixed-editor-row{grid-template-columns:1fr;}
  .competency-admin-grid,.user-competency-grid,.derived-staffing-grid,.competency-support-list{grid-template-columns:1fr;}
  .employee-request-grid,.employee-requests-admin-toolbar,.employee-request-admin-grid,.manual-vacation-grid{grid-template-columns:1fr;}
  .manual-vacation-period-item{align-items:stretch;flex-direction:column;}
  .manual-vacation-period-item .btn{width:100%;}
  .rule-row{grid-template-columns:1fr;}
  .closed-day-form-grid,.closed-day-item,.high-risk-grid,.high-risk-inline-grid{grid-template-columns:1fr;}
  .closed-day-actions{justify-content:flex-start;}
  .planner-toolbar:not(.planner-toolbar-simple),.planner-fixed-layout,.planner-fixed-grid,.planner-rules-grid,.planner-rules-grid-compact,.planner-day-row,.planner-create-grid,.planner-workspace-layout,.planner-fixed-days,.planner-fixed-day-row,.planner-fixed-summary-row,.planner-fixed-days-head,.planner-norm-list,.planner-employee-grid,.planner-employee-summary,.planner-time-range{grid-template-columns:1fr;}
  .planner-rules-actions .btn{width:100%;}
  .dirty-confirm-actions{grid-template-columns:1fr;}
  .planner-fixed-actions{justify-content:stretch;}
  .planner-fixed-actions .btn{width:100%;}
  .planner-fixed-card-head{align-items:flex-start;flex-direction:column;}
  .planner-fixed-card-actions{flex-direction:column;}
  .planner-employee-top{flex-direction:column;}
  .planner-employee-actions{width:100%;justify-content:stretch;}
  .planner-employee-edit-btn{width:100%;}
  .planner-norm-editor-grid{grid-template-columns:1fr;}
  .date-popover{left:50%;transform:translateX(-50%);}
}

@media (max-width: 768px){
  .admin-app-shell{grid-template-columns:1fr;min-height:0;}
  .admin-app-shell .dashboard-nav{position:relative;top:auto;max-height:none;}
  .notification-container{
    top:12px;
    left:12px;
    right:12px;
    width:auto;
  }
  .app-address{display:none;}
  .datewrap{width:100%;}
  .dateinput{width:100%;}
  .date-popover{width:min(100vw - 32px, 320px);}
  .mobile-event-modal{padding:12px;}
  .mobile-event-modal__card{border-radius:20px 20px 16px 16px;}
  .mobile-event-modal__body{padding:14px;}
  .app.employee-mobile{margin:0 auto 28px;padding:0 10px;}
  .app.employee-mobile .topbar{align-items:flex-start;flex-wrap:wrap;gap:12px;padding:10px 0 4px;}
  .app.employee-mobile .brand{min-width:0;}
  .app.employee-mobile .brand-text{min-width:0;}
  .app.employee-mobile .brand-title{font-size:15px;}
  .app.employee-mobile .brand-sub{font-size:11px;}
  .app.employee-mobile .logo{width:42px;height:42px;border-radius:14px;}
  .app.employee-mobile .userbox{width:100%;justify-content:flex-end;}
  .app.employee-mobile .user-badge-btn{width:100%;justify-content:center;min-height:44px;}
  .app.employee-mobile .user-menu{left:0;right:0;top:calc(100% + 8px);min-width:0;}
  .app.employee-mobile .controls{padding:12px;gap:12px;border-radius:18px;display:flex;flex-direction:column;flex-wrap:wrap;align-items:stretch;}
  .app.employee-mobile .controls-left,
  .app.employee-mobile .controls-center,
  .app.employee-mobile .controls-right{
    width:100%;
    justify-content:flex-start;
    gap:10px;
    grid-column:unset;
    justify-self:stretch;
  }
  .app.employee-mobile .controls-right{align-items:stretch;flex-wrap:wrap;}
  .app.employee-mobile .controls-heading-slot{
    flex:1 1 100%;
    width:100%;
    min-width:0;
    max-width:none;
    order:-1;
  }
  .app.employee-mobile .controls-heading-slot .pill,
  .app.employee-mobile #weekPill{
    width:100%;
    max-width:none !important;
    text-align:center;
    transition:none;
  }
  .app.employee-mobile .controls-center{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-inline-end:0;transform:none;}
  .app.employee-mobile #todayBtn{grid-column:span 2;}
  .app.employee-mobile .datewrap{grid-column:1 / -1;}
  .app.employee-mobile .segmented{grid-column:1 / -1;width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));}
  .app.employee-mobile .calendar-view-segments .seg{padding:10px 8px;min-height:44px;font-size:14px;border-radius:20px;}
  .app.employee-mobile .calendar-view-segments .segmented-thumb{border-radius:20px;}
  .app.employee-mobile .seg{padding:10px 8px;}
  .app.employee-mobile .employee-filter-wrap{width:100%;min-width:0;}
  .app.employee-mobile .pill{width:100%;justify-content:center;text-align:center;}
  .app.employee-mobile .card{margin-top:12px;padding:10px;}
  .app.employee-mobile .fc{font-size:12px;}
  .app.employee-mobile .fc .fc-timegrid-slot-label{font-size:10px;}
  .app.employee-mobile .fc .fc-col-header-cell-cushion{padding:8px 2px;font-size:11px;}
  .app.employee-mobile .fc .fc-timegrid-axis{width:48px;}
  .app.employee-mobile .fc .fc-timegrid-slot{height:2.9rem;}
  .app.employee-mobile .fc .fc-timegrid-event-harness{padding-right:2px;padding-left:1px;padding-bottom:2px;}
  .app.employee-mobile .fc .fc-event-main .ev{padding:6px 7px;gap:3px;}
  .app.employee-mobile .fc .fc-event-main .ev-time{font-size:10px;}
  .app.employee-mobile .fc .fc-event-main .ev-title{font-size:11px;white-space:normal;line-height:1.2;}
  .app.employee-mobile .fc .fc-daygrid-day-frame{min-height:92px;}
  .app.employee-mobile .fc .fc-daygrid-day-top{padding:4px 6px;}
  .app.employee-mobile .fc .fc-daygrid-day-events{margin:0;padding:0 4px 6px;}
  .app.employee-mobile .month-event-row{align-items:flex-start;padding:3px 0;gap:7px;}
  .app.employee-mobile .month-event-text{font-size:11px;line-height:1.3;white-space:normal;overflow:visible;text-overflow:clip;}
  body.employee-mobile #employeeRequestsModal :is(.modal-card,.sandbox-modal-card){width:min(100%,560px);}
  body.employee-mobile #employeeRequestsModal{align-items:flex-start;overflow:auto;padding:12px;}
  body.employee-mobile #employeeRequestsModal .employee-requests-modal-card{min-height:auto;max-height:calc(100vh - 24px);}
  body.employee-mobile #employeeRequestsModal :is(.modal-body,.sandbox-modal-body){max-height:calc(100vh - 120px);overflow-y:auto;overflow-x:visible;-webkit-overflow-scrolling:touch;}
  body.employee-mobile .employee-request-row,
  body.employee-mobile .employee-request-actions{flex-direction:column;align-items:stretch;}
  body.employee-mobile .employee-request-actions .btn{width:100%;}
}
.planner-fixed-current-meta{
  margin:8px 0 14px;
  color:#5b6b7f;
  font-size:.95rem;
}

.ui-field{
  display:grid;
  gap:8px;
  min-width:0;
}

.ui-field-label{
  display:block;
  font-size:12px;
  font-weight:800;
  letter-spacing:.02em;
  color:var(--muted);
}

.ui-control,
.ui-textarea{
  width:100%;
  min-width:0;
  min-height:var(--control-height);
  padding:0 16px;
  border:1px solid var(--line);
  border-radius:var(--control-radius);
  background:linear-gradient(180deg,#ffffff,rgba(248,250,252,.98));
  color:var(--ink);
  box-shadow:var(--shadow-xs);
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .18s ease;
}

.ui-textarea{
  min-height:124px;
  padding:14px 16px;
  resize:vertical;
}

.ui-control:hover,
.ui-textarea:hover{
  border-color:var(--line-strong);
  background:#fff;
}

.ui-control:focus,
.ui-textarea:focus{
  outline:none;
  border-color:var(--brand);
  box-shadow:var(--focus-ring), var(--shadow-xs);
  background:#fff;
}

.ui-control:disabled,
.ui-textarea:disabled{
  opacity:.62;
  cursor:not-allowed;
  background:var(--surface-muted);
}

.sandbox-native-select{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  opacity:0 !important;
  pointer-events:none !important;
  clip:rect(0, 0, 0, 0) !important;
  clip-path:inset(50%) !important;
  overflow:hidden !important;
}

.ui-dropdown{
  position:relative;
}

.ui-dropdown.is-open{
  z-index:120;
}

.ui-dropdown-button{
  width:100%;
  min-height:var(--control-height);
  border:1px solid var(--line-strong);
  border-radius:18px;
  padding:12px 16px;
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(249,251,255,.96));
  box-shadow:var(--shadow-xs);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  text-align:left;
  color:var(--ink);
  font-weight:700;
  cursor:pointer;
  transition:border-color .18s ease, box-shadow .18s ease, transform .14s ease;
}

.ui-dropdown-button:hover{
  border-color:var(--line-strong);
}

.ui-dropdown-button:focus-visible,
.ui-dropdown-button.is-open{
  outline:none;
  border-color:var(--brand);
  box-shadow:var(--focus-ring), var(--shadow-xs);
}

.ui-dropdown-button:active{
  transform:scale(.992);
}

.ui-dropdown-button:disabled{
  opacity:.62;
  cursor:not-allowed;
}

.ui-dropdown-button.has-stacked-label{
  align-items:flex-start;
}

.ui-dropdown-label{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.ui-dropdown-label.is-stacked-label{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
}

.ui-dropdown-label-line{
  display:block;
  line-height:1.25;
}

.ui-dropdown-label-date{
  font-weight:700;
  color:var(--ink);
}

.ui-dropdown-label-time{
  font-size:13px;
  font-weight:700;
  color:var(--brand2);
}

.ui-dropdown-option-date,
.ui-dropdown-option-time{
  display:block;
  line-height:1.25;
}

.ui-dropdown-option-time{
  margin-top:3px;
  font-size:13px;
  font-weight:700;
  color:var(--brand2);
}

.ui-dropdown-button.is-placeholder .ui-dropdown-label{
  color:var(--muted);
}

.ui-dropdown-caret{
  position:relative;
  width:14px;
  height:14px;
  flex:0 0 auto;
  transform:translateY(1px);
}

.ui-dropdown-caret::before,
.ui-dropdown-caret::after{
  content:"";
  position:absolute;
  top:50%;
  width:8px;
  height:2px;
  border-radius:999px;
  background:#1f2937;
}

.ui-dropdown-caret::before{
  left:0;
  transform:translateY(-50%) rotate(45deg);
}

.ui-dropdown-caret::after{
  right:0;
  transform:translateY(-50%) rotate(-45deg);
}

.ui-dropdown-menu{
  position:absolute;
  top:calc(100% + 10px);
  left:0;
  width:100%;
  max-height:min(320px, 50vh);
  overflow:auto;
  padding:10px;
  display:grid;
  gap:6px;
  background:rgba(255,255,255,.97);
  border:1px solid rgba(217,226,236,.92);
  border-radius:22px;
  box-shadow:var(--shadow-strong);
  backdrop-filter:blur(24px);
  z-index:160;
  animation:sandboxPopIn .24s cubic-bezier(.2,.8,.2,1);
}

.ui-dropdown-menu[hidden]{
  display:none;
}

.ui-dropdown-option{
  width:100%;
  border:none;
  border-radius:14px;
  background:transparent;
  color:var(--ink);
  padding:12px 14px;
  font-weight:700;
  text-align:left;
  cursor:pointer;
  transition:background-color .16s ease, color .16s ease, transform .14s ease;
}

.ui-dropdown-option:hover,
.ui-dropdown-option.is-selected{
  background:var(--brand-soft);
  color:var(--brand2);
}

.ui-plus-button{
  min-width:48px;
  min-height:48px;
  border-radius:16px;
}

.sandbox-modal{
  padding:24px;
  backdrop-filter:blur(10px);
}

.sandbox-modal-card{
  border:1px solid rgba(217,226,236,.92);
  border-radius:28px;
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(248,250,252,.98));
  box-shadow:var(--shadow-strong);
  overflow:hidden;
}

.sandbox-modal-head{
  padding:24px 28px 16px;
  border-bottom:1px solid rgba(217,226,236,.78);
  background:linear-gradient(180deg,rgba(255,255,255,.82),rgba(248,250,252,.88));
}

.sandbox-modal-body{
  padding:24px 28px 28px;
  display:grid;
  gap:18px;
}

.sandbox-modal-message,
.sandbox-info-box{
  display:grid;
  gap:6px;
  padding:14px 16px;
  border:1px solid rgba(191,215,255,.95);
  border-radius:18px;
  background:linear-gradient(180deg,#f8fbff,#eef6ff);
  color:#35507a;
  box-shadow:var(--shadow-xs);
}

.sandbox-note{
  display:grid;
  gap:6px;
  padding:12px 14px;
  border:1px solid rgba(217,226,236,.95);
  border-radius:16px;
  background:var(--surface);
  color:#5b6b82;
  font-size:13px;
  line-height:1.55;
}

.sandbox-note.is-error{
  border-color:#fecaca;
  background:linear-gradient(180deg,#fff7f8,#fff1f2);
  color:#9f1239;
}

.sandbox-feedback{
  display:grid;
  gap:6px;
  padding:14px 16px;
  border:1px solid rgba(191,215,255,.95);
  border-radius:18px;
  background:linear-gradient(180deg,#f8fbff,#eef6ff);
  color:#35507a;
  box-shadow:var(--shadow-xs);
  font-size:13px;
  line-height:1.55;
}

.sandbox-feedback strong{
  color:var(--ink);
}

.sandbox-feedback.is-warning{
  border-color:#ffd4b8;
  background:linear-gradient(180deg,#fffaf5,#fff4ea);
  color:#8d4e16;
}

.sandbox-feedback.is-error{
  border-color:#fecaca;
  background:linear-gradient(180deg,#fff7f8,#fff1f2);
  color:#9f1239;
}

.sandbox-feedback.is-success{
  border-color:#b7ead6;
  background:linear-gradient(180deg,#f4fcf8,#ebf8f1);
  color:#17603d;
}

.sandbox-surface-card{
  border:1px solid rgba(217,226,236,.95);
  border-radius:22px;
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(248,250,252,.98));
  box-shadow:var(--shadow-sm);
}

.sandbox-surface-row{
  border-radius:20px;
  background:linear-gradient(180deg,#ffffff,rgba(248,250,252,.98));
}

.sandbox-empty-state{
  padding:16px 18px;
  border:1px dashed rgba(200,212,227,.96);
  border-radius:20px;
  background:linear-gradient(180deg,#ffffff,rgba(248,250,252,.98));
  color:var(--muted);
  box-shadow:var(--shadow-xs);
}

.sandbox-inline-check{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:var(--control-height);
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:linear-gradient(180deg,#ffffff,rgba(248,250,252,.98));
  box-shadow:var(--shadow-xs);
  font-weight:700;
  color:var(--ink-soft);
}

.sandbox-toggle-card{
  padding:14px 16px;
  border:1px solid var(--line);
  border-radius:20px;
  background:linear-gradient(180deg,#ffffff,rgba(248,250,252,.98));
  box-shadow:var(--shadow-xs);
}

.sandbox-toggle-card .planner-rules-toggle-control{
  display:flex;
  align-items:center;
  gap:10px;
  justify-content:space-between;
}

.planner-norm-picker.ui-field,
.planner-rules-field.ui-field,
.planner-fixed-time.ui-field{
  gap:10px;
}

.planner-fixed-form-card,
.planner-fixed-overview,
.planner-rules-section,
.planner-norm-panel,
.planner-day-card,
.planner-week-block,
.planner-draft-item,
.special-rule-card,
.derived-staffing-rule-card,
.derived-staffing-status-card,
.competency-card,
.consistency-panel,
.absence-item,
.user-profile-summary-card,
.user-fixed-card,
.user-fixed-editor,
.user-overview-row,
.closed-day-item,
.employee-request-card{
  border-radius:22px;
  border-color:rgba(217,226,236,.95);
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(248,250,252,.98));
  box-shadow:var(--shadow-sm);
}

.planner-fixed-day-row{
  padding:16px 18px;
  border-radius:20px;
  border-color:rgba(217,226,236,.95);
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.99));
}

.planner-fixed-global-note,
.closed-day-holiday-note,
.closed-day-comment,
.special-rule-card-description,
.special-rule-conflict-summary,
.planner-remove-summary,
.planner-meta-warning,
.planner-inline-message,
.sync-platform-hint,
.sync-fallback-help,
.derived-staffing-expression{
  padding:14px 16px;
  border-radius:18px;
  border:1px solid rgba(191,215,255,.95);
  background:linear-gradient(180deg,#f8fbff,#eef6ff);
  color:#35507a;
}

:is(
  .form-help,
  .admin-help,
  .user-competency-help,
  .special-rule-summary,
  .closed-days-summary,
  .employee-request-conflicts,
  #plannerGeneratorSummary,
  #legacyStaffingRuleBasis,
  #legacyStaffingRuleHint
){
  display:grid;
  gap:6px;
  padding:12px 14px;
  border:1px solid rgba(217,226,236,.95);
  border-radius:16px;
  background:var(--surface);
  color:#5b6b82;
  font-size:13px;
  line-height:1.55;
}

:is(
  .auth-error,
  .error,
  .employee-request-conflict-box,
  .special-rule-conflict-item,
  .dirty-confirm-message-error,
  .planner-fixed-debug-item.is-error
){
  display:grid;
  gap:6px;
  padding:14px 16px;
  border-radius:18px;
  border:1px solid #fecaca;
  background:linear-gradient(180deg,#fff7f8,#fff1f2);
  color:#9f1239;
  box-shadow:var(--shadow-xs);
}

:is(
  .planner-fixed-debug-item.is-ok,
  .derived-staffing-conflict-card.is-ok,
  .staffing-conflict-ok
){
  border-color:#b7ead6;
  background:linear-gradient(180deg,#f4fcf8,#ebf8f1);
  color:#17603d;
}

:is(
  .employee-request-comment,
  .closed-day-comment,
  .planner-remove-summary,
  .special-rule-conflict-summary,
  .staffing-rule-preview,
  .employee-request-review-summary,
  .planner-norm-editor-summary
) strong{
  color:var(--ink);
}

.planner-cell{
  padding:10px;
  border:1px solid rgba(217,226,236,.95);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.98));
  box-shadow:var(--shadow-xs);
}

.planner-cell input,
.planner-shift-input{
  min-height:44px;
  padding:0 12px;
  border:1px solid rgba(200,212,227,.98);
  border-radius:14px;
  background:rgba(255,255,255,.94);
  box-shadow:none;
}

.planner-cell.shift--regular{background:linear-gradient(180deg,#ffffff,#f9fbff);border-color:rgba(215,222,231,.96);}
.planner-cell.shift--open{background:linear-gradient(180deg,#f2fbf5,#e4f8ea);border-color:#b8e3c4;}
.planner-cell.shift--close{background:linear-gradient(180deg,#fff6f5,#ffe8e5);border-color:#f3c0b8;}
.planner-cell.shift--open-close{background:linear-gradient(90deg,#f2fbf5 0 50%,#fff6f5 50% 100%);border-color:#ecc997;}
.planner-cell.shift--status{background:linear-gradient(180deg,#f8fbff,#eef6ff);border-color:#bfd7ff;}
.planner-cell.shift--internal{background:linear-gradient(180deg,#f8f6ff,#efeaff);border-color:#d3c2ff;}

.planner-day-card .planner-total,
.planner-week-block .planner-weeksum,
.planner-week-block .planner-head{
  font-weight:800;
}

.planner-overview-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  font-weight:800;
  color:var(--ink);
}

.planner-copy-btn{
  border-radius:14px;
}

/* Manual vacation modal must behave like an embedded form, not a floating date picker. */
#manualVacationModal .manual-vacation-modal-card{
  width:min(700px, calc(100vw - 48px)) !important;
  max-width:calc(100vw - 48px) !important;
}

#manualVacationModal .sandbox-modal-body{
  max-height:calc(100vh - 138px) !important;
  overflow-y:auto !important;
  overflow-x:visible !important;
}

#manualVacationModal .manual-vacation-grid{
  position:relative !important;
  display:grid !important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
  column-gap:12px !important;
  row-gap:10px !important;
  align-items:start !important;
}

#manualVacationModal .manual-vacation-grid .ui-dropdown{
  position:relative !important;
  z-index:calc(var(--layer-modal) + 5) !important;
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
}

#manualVacationModal .manual-vacation-grid input.ui-control{
  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;
}

#manualVacationModal .manual-vacation-note-field{
  width:100% !important;
}

#manualVacationModal #manualVacationSelectionHint{
  margin:0 !important;
  padding:0 !important;
  border:none !important;
  background:none !important;
  font-size:13px !important;
  font-weight:600 !important;
  color:var(--brand2) !important;
  border-radius:0 !important;
}

#manualVacationModal .manual-vacation-calendar-section{
  width:100% !important;
  max-width:none !important;
  justify-self:stretch !important;
}

#manualVacationModal .manual-vacation-calendar.date-popover,
#manualVacationModal .manual-vacation-calendar.ui-popover,
#manualVacationModal .manual-vacation-calendar.ui-date-popover{
  position:static !important;
  inset:auto !important;
  transform:none !important;
  width:100% !important;
  max-width:none !important;
  display:grid !important;
  visibility:visible !important;
  opacity:1 !important;
  margin:0 !important;
  box-shadow:none !important;
  padding:14px !important;
  justify-self:stretch !important;
  z-index:1 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-weekdays,
#manualVacationModal .manual-vacation-calendar .date-popover-grid{
  display:grid !important;
  grid-template-columns:40px repeat(7, minmax(48px, 1fr)) !important;
  justify-content:stretch !important;
  column-gap:0 !important;
  row-gap:8px !important;
  width:100% !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-head{
  display:grid !important;
  grid-template-columns:36px minmax(0,1fr) 36px !important;
  align-items:center !important;
  gap:10px !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-weekdays{
  grid-template-columns:40px repeat(7, minmax(48px, 1fr)) !important;
  justify-content:stretch !important;
  column-gap:4px !important;
  row-gap:8px !important;
  width:100% !important;
}

#manualVacationModal .manual-vacation-weeknumber,
#manualVacationModal .manual-vacation-weeknumber-head{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  color:var(--muted) !important;
  font-size:12px !important;
  font-weight:800 !important;
}

#manualVacationModal .manual-vacation-weeknumber{
  height:48px !important;
  border-radius:12px !important;
  background:rgba(248,250,252,.9) !important;
  border:1px solid rgba(217,226,236,.75) !important;
  margin-right:8px !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day{
  width:100% !important;
  height:48px !important;
  min-height:48px !important;
  max-width:none !important;
  min-width:0 !important;
  aspect-ratio:auto !important;
  border-radius:16px !important;
  justify-self:stretch !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-range-start{
  border-top-left-radius:16px !important;
  border-bottom-left-radius:16px !important;
  border-top-right-radius:0 !important;
  border-bottom-right-radius:0 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-range-middle{
  border-radius:0 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-range-end{
  border-top-left-radius:0 !important;
  border-bottom-left-radius:0 !important;
  border-top-right-radius:16px !important;
  border-bottom-right-radius:16px !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-range-continued-left,
#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-range-continued-right{
  box-shadow:none !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period{
  background:#0f766e !important;
  color:#fff !important;
  border-radius:0 !important;
  box-shadow:none !important;
  margin:0 !important;
  transform:none !important;
  position:relative;
  z-index:2;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period{
  cursor:grab !important;
  z-index:5 !important;
}

#manualVacationModal .manual-vacation-calendar.is-drag-editing .date-popover-day.is-selected.is-existing-period.is-edit-target-period{
  cursor:grabbing !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-start-cell,
#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-end-cell{
  z-index:7 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-range-single{
  border-radius:16px !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-period-hover{
  background:#0b5d57 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-range-start{
  border-top-left-radius:16px !important;
  border-bottom-left-radius:16px !important;
  border-top-right-radius:0 !important;
  border-bottom-right-radius:0 !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-range-end{
  border-top-left-radius:0 !important;
  border-bottom-left-radius:0 !important;
  border-top-right-radius:16px !important;
  border-bottom-right-radius:16px !important;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-start-cell::before,
#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-end-cell::after{
  content:"";
  position:absolute;
  top:50%;
  width:10px;
  height:26px;
  transform:translateY(-50%);
  border-radius:999px;
  background:#ffffff;
  box-shadow:0 0 0 1px rgba(15,118,110,.35), 0 3px 8px rgba(15,23,42,.18);
  z-index:9;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-start-cell::before{
  left:-6px;
  cursor:ew-resize;
}

#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selected.is-existing-period.is-edit-target-period.is-period-end-cell::after{
  right:-6px;
  cursor:ew-resize;
}

.manual-vacation-period-group{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);}
.manual-vacation-period-group-head{font-size:12px;font-weight:800;letter-spacing:.02em;color:#334155;text-transform:uppercase;}
.manual-vacation-period-group-list{display:grid;gap:10px;}
.manual-vacation-singleday-list{display:flex;flex-wrap:wrap;gap:8px;}
.manual-vacation-singleday-pill{display:inline-flex;align-items:center;gap:10px;min-height:34px;border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;color:#0f172a;font-size:13px;font-weight:700;padding:4px 6px 4px 12px;}
.manual-vacation-period-pill-list{display:flex;flex-wrap:wrap;gap:8px;}
.manual-vacation-period-pill{display:inline-flex;align-items:center;gap:10px;min-height:34px;border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;color:#0f172a;font-size:13px;font-weight:700;padding:4px 6px 4px 12px;}
.manual-vacation-remove-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;border:1px solid #fecaca;background:#fff;color:#b91c1c;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,transform .16s ease;}
.manual-vacation-remove-icon-btn svg{display:block;fill:currentColor;}
.manual-vacation-remove-icon-btn:hover{background:#fef2f2;border-color:#fca5a5;transform:translateY(-1px);}
.manual-vacation-remove-icon-btn.is-inline{width:22px;height:22px;border-radius:999px;flex-shrink:0;}

.manual-vacation-singleday-pill span,
.manual-vacation-period-pill span{
  color:#0f172a;
  letter-spacing:.01em;
  white-space:nowrap;
}

@keyframes manualVacationShimmer{
  0%{ opacity:.35; filter:brightness(1.06); }
  100%{ opacity:1; filter:brightness(1); }
}

.manual-vacation-singleday-pill.is-selection-shimmer,
.manual-vacation-period-pill.is-selection-shimmer,
#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selection-shimmer{
  position:relative;
  box-shadow:0 0 0 2px rgba(20,184,166,.24) !important;
  animation:manualVacationShimmer .45s ease-out;
}

.manual-vacation-singleday-pill.is-selection-shimmer::after,
.manual-vacation-period-pill.is-selection-shimmer::after,
#manualVacationModal .manual-vacation-calendar .date-popover-day.is-selection-shimmer::after{
  content:none;
}

@media (max-width: 860px){
  #manualVacationModal .manual-vacation-modal-card{
    width:min(100%, calc(100vw - 24px)) !important;
    max-width:calc(100vw - 24px) !important;
  }

  #manualVacationModal .manual-vacation-grid{
    grid-template-columns:minmax(0,1fr) !important;
  }

  #manualVacationModal .manual-vacation-calendar.date-popover,
  #manualVacationModal .manual-vacation-calendar.ui-popover,
  #manualVacationModal .manual-vacation-calendar.ui-date-popover{
    width:100% !important;
    max-width:360px !important;
  }

  #manualVacationModal .manual-vacation-calendar .date-popover-grid,
  #manualVacationModal .manual-vacation-calendar .date-popover-weekdays{
    grid-template-columns:30px repeat(7, 38px) !important;
    column-gap:0 !important;
    row-gap:4px !important;
  }

  #manualVacationModal .manual-vacation-calendar .date-popover-day{
    width:38px !important;
    height:38px !important;
    min-height:38px !important;
    border-radius:12px !important;
  }

  #manualVacationModal .manual-vacation-weeknumber{
    height:38px !important;
    margin-right:4px !important;
  }
}

/* Global loading overlay (gem / indlæs) */
.app-loading-overlay{
  position:fixed;
  inset:0;
  z-index:calc(var(--layer-modal) + 30);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:rgba(15,23,42,.28);
  backdrop-filter:blur(2px);
  pointer-events:none;
  opacity:0;
  transition:opacity .18s ease;
}
.app-loading-overlay:not(.hidden){
  opacity:1;
}
.app-loading-overlay.is-blocking:not(.hidden){
  pointer-events:all;
}
.app-loading-card{
  display:grid;
  gap:14px;
  justify-items:center;
  min-width:min(280px,calc(100% - 32px));
  padding:22px 26px;
  border-radius:20px;
  background:var(--card);
  border:1px solid var(--line);
  box-shadow:var(--shadow-strong);
}
.app-loading-spinner{
  width:36px;
  height:36px;
  border:3px solid var(--line);
  border-top-color:var(--brand);
  border-radius:50%;
  animation:appLoadingSpin .75s linear infinite;
}
.app-loading-label{
  margin:0;
  font-size:14px;
  font-weight:600;
  color:var(--ink-soft);
  text-align:center;
}
@keyframes appLoadingSpin{
  to{transform:rotate(360deg);}
}
@media (prefers-reduced-motion: reduce){
  .app-loading-spinner{
    animation:none;
    border-top-color:var(--brand);
    opacity:.85;
  }
}

