:root {
  --primary: #0070c0;
  --brand: #0070c0;
  --primary-dark: #005a9c;
  --background: #f6f7f9;
  --card-bg: #ffffff;
  --surface-soft: #fafafa;
  --surface-tint: #eef6fb;
  --input-bg: #ffffff;
  --text-color: #222222;
  --header-text: #ffffff;
  --error-color: #cc0000;
  --success-color: #117a37;
  --warning-color: #f59e0b;
  --muted: #667085;
  --border: #d9dde5;
  --border-radius: 6px;
  --spacing: 1rem;
  --shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  --content-width: 1360px;
  --panel: var(--card-bg);
  color-scheme: light;
}

.planner-css-probe {
  position: absolute;
  left: -9999px;
  top: -9999px;
  width: 7px;
  height: 7px;
  pointer-events: none;
}

html.dark {
  --primary: #0070c0;
  --brand: #4bb3ff;
  --primary-dark: #4bb3ff;
  --background: #07131f;
  --card-bg: #0f1f2d;
  --surface-soft: #12283a;
  --surface-tint: #123a56;
  --input-bg: #091a28;
  --text-color: #eef6ff;
  --header-text: #ffffff;
  --error-color: #ff8b8b;
  --success-color: #7de3a6;
  --warning-color: #fbbf24;
  --muted: #a8b7c7;
  --border: #27435a;
  --shadow: 0 10px 26px rgba(0, 0, 0, 0.35);
  color-scheme: dark;
}

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

[hidden] {
  display: none !important;
}

html {
  font-size: 16px;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}

body {
  width: 100%;
  max-width: 100%;
  min-height: 100vh;
  min-height: 100dvh;
  background: var(--background);
  color: var(--text-color);
  font-family: Arial, Helvetica, sans-serif;
  overflow-x: hidden;
  touch-action: manipulation;
}

body.is-loading {
  cursor: progress;
}

body.is-loading > :not(.page-loading-overlay) {
  filter: blur(3px);
  pointer-events: none;
  user-select: none;
}

@supports (overflow: clip) {
  html,
  body {
    overflow-x: clip;
  }
}

header {
  display: flex;
  align-items: center;
  gap: .5rem;
  background: var(--primary);
  padding: calc(.75rem + env(safe-area-inset-top, 0px)) calc(1rem + env(safe-area-inset-right, 0px)) .75rem calc(1rem + env(safe-area-inset-left, 0px));
  position: sticky;
  top: 0;
  left: 0;
  width: 100%;
  max-width: 100vw;
  z-index: 200;
}

@media (display-mode: standalone) {
  body {
    overscroll-behavior-y: contain;
    -webkit-tap-highlight-color: transparent;
  }
}

.page-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 250;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(246, 247, 249, .58);
  -webkit-backdrop-filter: blur(7px);
  backdrop-filter: blur(7px);
}

.page-loading-overlay.open {
  display: flex;
}

.page-loading-card {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) 32px;
  gap: .85rem;
  align-items: center;
  width: min(420px, 100%);
  padding: 1rem;
  border: 1px solid rgba(0, 112, 192, .22);
  border-radius: 14px;
  background: var(--card-bg);
  box-shadow: 0 18px 55px rgba(15, 23, 42, .24);
}

.page-loading-card img {
  width: 48px;
  height: 48px;
  border-radius: 12px;
}

.page-loading-card strong,
.page-loading-card span {
  display: block;
}

.page-loading-card strong {
  color: var(--text-color);
  font-size: 1.05rem;
}

.page-loading-card span {
  margin-top: .15rem;
  color: var(--muted);
  font-size: .9rem;
}

.loading-spinner {
  width: 30px;
  height: 30px;
  border: 4px solid #d9eaf7;
  border-top-color: var(--primary);
  border-radius: 999px;
  animation: planner-spin .8s linear infinite;
}

@keyframes planner-spin {
  to {
    transform: rotate(360deg);
  }
}

header img {
  width: 96px;
  height: 40px;
  object-fit: contain;
  background: #fff;
  border-radius: 4px;
}

.header-clock {
  flex: 0 0 auto;
  padding: .28rem .5rem;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 6px;
  background: rgba(0, 0, 0, .12);
  color: var(--header-text);
  font-variant-numeric: tabular-nums;
  font-size: .84rem;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
}

header h1 {
  color: var(--header-text);
  font-size: 1.25rem;
  line-height: 1.2;
  white-space: nowrap;
}

button,
.button,
input,
select,
textarea {
  font: inherit;
}

button,
.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.35rem;
  padding: .45rem .8rem;
  border: 0;
  border-radius: var(--border-radius);
  background: var(--primary);
  color: #fff;
  cursor: pointer;
  font-size: .92rem;
  font-weight: 600;
  text-decoration: none;
}

button:hover,
.button:hover {
  background: var(--primary-dark);
}

button.danger {
  background: #fff4f4;
  color: var(--error-color);
}

button.danger:hover {
  background: #f8dddd;
}

.button.secondary,
button.secondary {
  background: #eef6fb;
  color: var(--primary-dark);
}

.button.secondary:hover,
.button.secondary:focus-visible,
button.secondary:hover,
button.secondary:focus-visible {
  background: color-mix(in srgb, var(--primary) 16%, var(--card-bg));
  color: var(--primary-dark);
}

.button.full {
  width: 100%;
}

input,
select,
textarea {
  width: 100%;
  min-height: 2.35rem;
  padding: .5rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: var(--input-bg);
  color: var(--text-color);
}

input[type="color"] {
  width: 2.25rem !important;
  min-width: 2.25rem;
  height: 2.25rem;
  min-height: 2.25rem !important;
  padding: .15rem !important;
  border: 2px solid var(--border);
  border-radius: 999px;
  background: var(--card-bg);
  box-shadow: 0 1px 3px rgba(15, 23, 42, .16);
  cursor: pointer;
}

input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 0;
}

input[type="color"]::-webkit-color-swatch {
  border: 0;
  border-radius: 999px;
}

input[type="color"]::-moz-color-swatch {
  border: 0;
  border-radius: 999px;
}

.native-color-hidden {
  position: absolute !important;
  width: 1px !important;
  min-width: 1px !important;
  height: 1px !important;
  min-height: 1px !important;
  opacity: 0;
  pointer-events: none;
}

.color-dot-button {
  width: 2.3rem;
  min-width: 2.3rem;
  height: 2.3rem;
  min-height: 2.3rem;
  padding: .18rem;
  border: 2px solid var(--border);
  border-radius: 999px;
  background:
    linear-gradient(var(--picked-color, #0070c0), var(--picked-color, #0070c0)) padding-box,
    var(--card-bg);
  box-shadow: 0 1px 3px rgba(15, 23, 42, .16);
}

.color-dot-button:hover,
.color-dot-button:focus-visible {
  background:
    linear-gradient(var(--picked-color, #0070c0), var(--picked-color, #0070c0)) padding-box,
    var(--card-bg);
  outline: 3px solid color-mix(in srgb, var(--picked-color, #0070c0) 32%, transparent);
  outline-offset: 2px;
}

.color-picker-popover {
  position: fixed;
  z-index: 1700;
  width: min(520px, calc(100vw - 1.5rem));
  max-height: min(78vh, 540px);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: .85rem;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--card-bg);
  box-shadow: 0 18px 45px rgba(15, 23, 42, .28);
}

.color-picker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .75rem;
}

.color-picker-head strong {
  font-size: 1rem;
}

.color-picker-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: .32rem;
}

.color-swatch-choice {
  aspect-ratio: 1;
  min-height: 2rem;
  border: 1px solid rgba(15, 23, 42, .18);
  border-radius: 8px;
  background: var(--swatch-color);
}

.color-swatch-choice:hover,
.color-swatch-choice:focus-visible {
  background: var(--swatch-color);
  outline: 2px solid color-mix(in srgb, var(--swatch-color) 52%, #111827);
  outline-offset: 1px;
}

.color-swatch-choice.is-active {
  outline: 3px solid var(--primary);
  outline-offset: 2px;
}

.color-picker-custom {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: .5rem;
  margin-top: .75rem;
}

.color-picker-custom input {
  text-transform: uppercase;
}

.session-row-revoked {
  opacity: .72;
}

.session-status {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  border-radius: 999px;
  padding: .16rem .55rem;
  font-weight: 800;
  font-size: .78rem;
}

.session-status.is-active {
  background: #dcfce7;
  color: #166534;
}

.session-status.is-revoked {
  background: #fee2e2;
  color: #991b1b;
}

html.dark .session-status.is-active {
  background: rgba(34, 197, 94, .18);
  color: #bbf7d0;
}

html.dark .session-status.is-revoked {
  background: rgba(239, 68, 68, .18);
  color: #fecaca;
}

@media (max-width: 560px) {
  .logout-confirm-actions {
    grid-template-columns: 1fr;
  }

  .color-picker-grid {
    grid-template-columns: repeat(auto-fit, minmax(44px, 1fr));
  }

  .color-swatch-choice {
    min-width: 44px;
    min-height: 44px;
  }

  .color-picker-custom {
    grid-template-columns: 1fr;
  }
}

textarea {
  resize: vertical;
}

.monday-date-picker {
  padding-right: 2rem;
  background-image: linear-gradient(45deg, transparent 50%, #475467 50%), linear-gradient(135deg, #475467 50%, transparent 50%);
  background-position: calc(100% - 1rem) 52%, calc(100% - .72rem) 52%;
  background-size: .28rem .28rem, .28rem .28rem;
  background-repeat: no-repeat;
}

.date-picker-popover {
  position: fixed;
  z-index: 1600;
  display: grid;
  gap: .4rem;
  padding: .6rem;
  border: 1px solid var(--border);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(16, 24, 40, .18);
}

.date-picker-popover[hidden] {
  display: none;
}

.date-picker-head,
.date-picker-weekdays,
.date-picker-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  align-items: center;
  gap: .25rem;
}

.date-picker-head {
  grid-template-columns: 2.25rem 1fr 2.25rem;
}

.date-picker-head strong {
  text-align: center;
  text-transform: capitalize;
}

.date-picker-nav {
  width: 2.25rem;
  height: 2.25rem;
  min-height: 2.25rem;
  padding: 0;
  background: #eef6fb;
  color: var(--primary-dark);
  font-size: 1.25rem;
}

.date-picker-weekdays span {
  padding: .2rem 0;
  color: var(--muted);
  text-align: center;
  font-size: .76rem;
  font-weight: 700;
}

.date-picker-days {
  grid-template-rows: repeat(6, 2.15rem);
}

.date-picker-day {
  height: 2.15rem;
  min-height: 2.15rem;
  padding: 0;
  border: 1px solid transparent;
  background: #fff;
  color: var(--text-color);
  font-size: .85rem;
}

#plannerDatePicker .date-picker-nav,
#plannerDatePicker .date-picker-day,
#plannerDatePicker .date-picker-actions button {
  border-radius: 10px !important;
}

#plannerDatePicker .date-picker-nav,
#plannerDatePicker .date-picker-day {
  min-height: 2.15rem !important;
  height: 2.15rem !important;
  padding: 0 !important;
}

.date-picker-day:hover,
.date-picker-day.is-today {
  border-color: var(--primary);
  background: #eef6fb;
  color: var(--primary-dark);
}

.date-picker-day.is-selected {
  background: var(--primary);
  color: #fff;
}

.date-picker-day.outside-month {
  color: #667085;
}

.date-picker-actions {
  display: flex;
  justify-content: space-between;
  gap: .5rem;
}

.date-picker-actions button {
  min-height: 2.35rem;
  padding: .3rem .55rem;
  font-size: .8rem;
}

#plannerDatePicker .date-picker-actions button {
  min-height: 2.35rem !important;
  padding: .3rem .65rem !important;
}

label {
  display: grid;
  gap: .35rem;
  color: #344054;
  font-size: .88rem;
  font-weight: 700;
}

.menu-btn {
  flex: 0 0 44px;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  background: none;
  color: var(--header-text);
  font-size: 1.5rem;
  line-height: 1;
  position: relative;
  z-index: 250;
}

.logout-form {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: .5rem;
}

.notification-toggle {
  margin-left: auto;
  min-height: 2rem;
  padding: .3rem .55rem;
  background: rgba(0, 0, 0, .12);
  font-size: .82rem;
}

.notification-toggle.enabled {
  background: #ecfdf3;
  color: var(--success-color);
}

.logout-form span {
  max-width: 18rem;
  overflow: hidden;
  color: #fff;
  font-size: .85rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.logout-form button {
  background: rgba(0, 0, 0, .12);
}

.sidebar {
  position: fixed;
  top: 0;
  left: -250px;
  width: 240px;
  height: 100vh;
  visibility: hidden;
  pointer-events: none;
  background: var(--card-bg);
  box-shadow: 2px 0 6px rgba(0, 0, 0, .2);
  transition: left .25s ease, visibility 0s linear .25s;
  z-index: 999;
}

.sidebar.open {
  left: 0;
  visibility: visible;
  pointer-events: auto;
  transition: left .25s ease, visibility 0s;
}

.close-btn {
  position: absolute;
  top: var(--spacing);
  right: var(--spacing);
  min-height: auto;
  background: none;
  color: var(--text-color);
  font-size: 1.25rem;
}

.sidebar nav ul {
  list-style: none;
  padding: 4rem 1rem;
}

.sidebar nav a {
  display: block;
  padding: .65rem 0;
  color: var(--text-color);
  text-decoration: none;
}

.sidebar nav a:hover {
  color: var(--primary);
}

.sidebar-section-label {
  margin: .9rem 0 .25rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 800;
  text-transform: uppercase;
}

.scrim {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .28);
  z-index: 900;
}

.scrim.open {
  display: block;
}

.container {
  width: min(1360px, 100%);
  max-width: 100vw;
  margin: var(--spacing) auto;
  padding: 0 1rem;
  display: grid;
  gap: var(--spacing);
  overflow-x: clip;
}

.card {
  min-width: 0;
  max-width: 100%;
  background: var(--card-bg);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow);
  padding: 1rem;
}

.auth-container {
  max-width: 440px;
}

.auth-card {
  display: grid;
  gap: 1rem;
}

.auth-brand {
  display: flex;
  align-items: center;
  gap: .8rem;
}

.auth-brand img {
  width: 6rem;
  height: auto;
  border-radius: 6px;
  background: #fff;
}

.auth-brand h2,
.auth-brand p {
  margin: 0;
}

.store-choice-card {
  width: min(100%, 560px);
}

.store-choice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .75rem;
}

.store-choice-button {
  width: 100%;
  min-height: 5.2rem;
  align-items: flex-start;
  justify-content: center;
  flex-direction: column;
  gap: .3rem;
  padding: 1rem;
  text-align: left;
}

.store-choice-button span {
  font-size: .88rem;
  opacity: .9;
}

.auth-debug {
  display: grid;
  gap: .45rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fbfdff;
  color: var(--muted);
  font-size: .84rem;
}

.auth-debug code {
  display: block;
  overflow-wrap: anywhere;
  padding: .45rem .55rem;
  border-radius: 6px;
  background: #eef6fb;
  color: var(--primary-dark);
  font-size: .78rem;
}

.notice,
.flash {
  padding: .8rem;
  border-radius: var(--border-radius);
  background: #eef6fb;
  color: var(--primary-dark);
}

.notice.warning,
.flash-warning {
  border-left: 4px solid var(--warning-color);
  background: #fff7e6;
  color: #8a4b00;
}

.flash-stack {
  width: min(1180px, 100%);
  max-width: 100vw;
  margin: 1rem auto 0;
  padding: 0 1rem;
}

.flash-error {
  background: #fff4f4;
  color: var(--error-color);
}

.flash-success {
  background: #ecfdf3;
  color: var(--success-color);
}

.muted {
  color: var(--muted);
}

.planner-shell {
  padding-bottom: 5rem;
}

.planner-shell > .planner-announcement {
  display: grid;
  gap: .5rem;
  min-width: 0;
  padding: .9rem 1rem;
  border: 1px solid color-mix(in srgb, var(--brand) 42%, var(--border));
  border-left: 5px solid var(--brand);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--brand) 6%, var(--card-bg));
  color: var(--text-color);
  box-shadow: var(--shadow);
}

.planner-announcement-heading {
  display: flex;
  align-items: center;
  gap: .7rem;
  min-width: 0;
}

.planner-announcement-heading h2 {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 800;
  line-height: 1.3;
}

.planner-announcement-icon {
  flex: 0 0 28px;
  width: 28px;
  height: 28px;
  color: var(--brand);
}

.planner-announcement-message,
.planner-announcement-meta,
.planner-announcement-editor {
  min-width: 0;
  margin: 0 0 0 calc(28px + .7rem);
}

.planner-announcement-message {
  font-size: .94rem;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.planner-announcement-meta {
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.planner-announcement-editor > summary {
  display: flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  min-height: 44px;
  padding: .5rem .8rem;
  border: 1px solid color-mix(in srgb, var(--brand) 35%, var(--border));
  border-radius: var(--border-radius);
  background: var(--card-bg);
  color: var(--primary-dark);
  font-size: .88rem;
  font-weight: 700;
  line-height: 1.3;
  cursor: pointer;
  list-style: none;
}

.planner-announcement-editor > summary::-webkit-details-marker {
  display: none;
}

.planner-announcement-editor > summary:hover,
.planner-announcement-editor[open] > summary {
  background: var(--surface-tint);
}

.planner-announcement-form {
  display: grid;
  gap: .65rem;
  margin-top: .75rem;
}

.planner-announcement-form label {
  color: var(--text-color);
}

.planner-announcement-form textarea {
  min-width: 0;
  min-height: 112px;
  font-size: 16px;
  line-height: 1.5;
}

.planner-announcement-form small {
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.4;
}

.planner-announcement-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
}

form.planner-announcement-actions {
  margin-top: .65rem;
}

.planner-announcement-actions button {
  min-height: 44px;
}

.planner-announcement-editor > summary:focus-visible,
.planner-announcement-form textarea:focus-visible,
.planner-announcement-actions button:focus-visible {
  outline: 3px solid var(--brand);
  outline-offset: 3px;
}

html.dark .planner-shell > .planner-announcement {
  border-color: color-mix(in srgb, var(--brand) 55%, var(--border));
  border-left-color: var(--brand);
  background: color-mix(in srgb, var(--brand) 10%, var(--card-bg));
  color: var(--text-color);
}

@media (max-width: 480px) {
  .planner-shell > .planner-announcement {
    padding: .85rem .75rem;
  }

  .planner-announcement-editor {
    margin-left: 0;
  }

  .planner-announcement-actions button {
    flex: 1 1 auto;
  }
}

.closed-day-panel {
  display: grid;
  gap: .55rem;
  justify-items: start;
  padding: 1.25rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: var(--surface-soft);
  color: var(--text-color);
}

.closed-day-panel strong {
  font-size: 1.2rem;
}

.closed-day-panel p {
  max-width: 68ch;
  margin: 0;
  color: var(--muted);
}

.notification-permission-banner {
  width: min(1180px, calc(100% - 2rem));
  margin: .85rem auto 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .8rem 1rem;
  border: 1px solid rgba(245, 158, 11, .45);
  border-left: 5px solid #f59e0b;
  border-radius: var(--border-radius);
  background: #fff7ed;
  color: #7c2d12;
  box-shadow: 0 6px 22px rgba(15, 23, 42, .08);
}

.notification-permission-banner[hidden] {
  display: none;
}

.notification-permission-banner div {
  display: grid;
  gap: .15rem;
}

.notification-permission-banner button {
  white-space: nowrap;
}

html.dark .notification-permission-banner {
  background: rgba(245, 158, 11, .14);
  color: #fed7aa;
  border-color: rgba(245, 158, 11, .55);
}

.mobile-update-banner {
  width: min(1180px, calc(100% - 2rem));
  margin: .85rem auto 0;
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .8rem 1rem;
  color: #eaf7ff;
  background: linear-gradient(135deg, #005a9f, #0078cc);
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: var(--border-radius);
  box-shadow: 0 8px 24px rgba(0, 72, 128, .2);
}

.mobile-update-banner[hidden] {
  display: none;
}

.mobile-update-banner > div {
  display: grid;
  flex: 1;
  gap: .15rem;
  min-width: 0;
}

.mobile-update-action,
.mobile-update-later {
  min-height: 42px;
  box-sizing: border-box;
  display: inline-grid;
  place-items: center;
  padding: .55rem .85rem;
  white-space: nowrap;
  border-radius: 10px;
  font-weight: 800;
}

.mobile-update-action {
  color: #005a9f;
  background: #fff;
  text-decoration: none;
}

.mobile-update-later {
  color: #fff;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, .55);
}

html.mobile-update-blocked,
html.mobile-update-blocked body { overflow: hidden !important; }

dialog.mobile-required-update {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  box-sizing: border-box;
  border: 0;
  background: transparent;
  color: var(--text-color, #16324b);
  z-index: 2147483647;
  overflow: auto;
}
dialog.mobile-required-update:not([open]) { display: none !important; }
dialog.mobile-required-update[open] { display: grid; place-items: center; }
dialog.mobile-required-update::backdrop { background: rgb(3 16 28 / 82%); backdrop-filter: blur(8px); }
dialog.mobile-required-update.mobile-required-fallback { background: rgb(3 16 28 / 92%); }
/* Existing navigation/loading cleanup must never disable the update controls. */
body.is-loading > dialog.mobile-required-update {
  filter: none !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}
.mobile-required-card {
  display: grid;
  gap: 1rem;
  width: min(100%, 420px);
  padding: clamp(1.2rem, 5vw, 2rem);
  box-sizing: border-box;
  border-radius: 24px;
  background: var(--card-bg, #fff);
  border: 1px solid var(--border, #d5e4ef);
  box-shadow: 0 20px 80px #0005;
  text-align: center;
  overflow-wrap: anywhere;
}
.mobile-required-card h1 { margin: 0; font-size: clamp(1.5rem, 6vw, 1.9rem); line-height: 1.15; }
.mobile-required-card p { margin: 0; line-height: 1.5; }
.mobile-required-icon {
  display: grid; place-items: center; justify-self: center;
  width: 64px; height: 64px; border-radius: 20px;
  color: #fff; background: #0070bd; font-size: 2.5rem; font-weight: 700;
}
.mobile-required-card .mobile-required-link,
.mobile-required-card button {
  display: grid; place-items: center; box-sizing: border-box; width: 100%;
  min-height: 48px; padding: .8rem 1rem; border-radius: 12px;
  font: inherit; font-weight: 750; white-space: normal; text-decoration: none;
}
.mobile-required-card .mobile-required-link { color: #fff; background: #0070bd; }
.mobile-required-card :is(a, button):focus-visible { outline: 3px solid #f6b634; outline-offset: 3px; }
.mobile-required-status { color: var(--muted, #64748b); font-size: .86rem; }

.modal-followup {
  display: grid;
  gap: .85rem;
  margin-top: 0;
  padding: 1rem 1.1rem 1.1rem;
  border-top: 1px solid var(--border);
}

.compact-title {
  margin-bottom: 0;
}

.task-followup-summary {
  display: grid;
  gap: .25rem;
  padding: .8rem .9rem;
  border: 1px solid color-mix(in srgb, var(--primary) 35%, var(--border));
  border-left: 4px solid var(--primary);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--primary) 8%, var(--card-bg));
}

.task-followup-summary strong {
  color: var(--text-color);
  font-size: 1.05rem;
  line-height: 1.2;
}

.task-followup-summary span {
  color: var(--muted);
  font-size: .9rem;
}

.task-followup-summary p {
  margin: .45rem 0 0;
  padding: .6rem .7rem;
  border: 1px solid color-mix(in srgb, var(--warning-color) 45%, var(--border));
  border-left: 4px solid var(--warning-color);
  border-radius: calc(var(--border-radius) - 2px);
  background: color-mix(in srgb, var(--warning-color) 12%, var(--card-bg));
  color: var(--text-color);
  font-weight: 700;
  line-height: 1.35;
}

.modal-followup-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(130px, auto);
  gap: .65rem;
  align-items: end;
  padding: .75rem .85rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: var(--surface-soft);
}

.modal-followup-form button {
  min-height: 2.45rem;
}

.modal-followup-form.mobile-verify {
  grid-template-columns: minmax(0, 1fr) auto auto;
}

.modal-followup-form label,
.modal-followup-form input,
.modal-followup-form select {
  min-width: 0;
}

.modal-attachment-gallery {
  margin-top: .25rem;
}

.task-photo-section { min-width: 0; }
.task-photo-section h3 { margin: 0 0 .35rem; }
.task-photo-section > p { margin: 0 0 .7rem; }
.task-photo-section form { display: grid; gap: .75rem; min-width: 0; }
.task-photo-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.task-photo-card { min-width: 0; padding: .75rem; border: 1px solid var(--border); border-radius: var(--border-radius); background: var(--surface-soft); }
.task-photo-card h4 { margin: 0; font-size: 1rem; color: var(--text-color); }
.task-photo-file-label { display: grid; gap: .35rem; min-width: 0; font-size: .85rem; }
.task-photo-file-label input { width: 100%; min-width: 0; max-width: 100%; box-sizing: border-box; }
.task-photo-card .camera-upload-choice { min-height: 44px; box-sizing: border-box; position: relative; }
.task-photo-card .camera-upload-choice:focus-within { outline: 2px solid var(--primary); outline-offset: 2px; }
.task-photo-card .attachment-tile { width: 100%; min-width: 0; box-sizing: border-box; grid-template-rows: auto 120px auto; background: var(--card-bg); }
.task-photo-card .attachment-tile img { height: 120px; object-fit: contain; }
.task-photo-empty { margin: .4rem 0; font-size: .85rem; }
.task-photo-result { margin: 0; padding: .65rem; border-radius: var(--border-radius); background: var(--card-bg); color: var(--success-color); overflow-wrap: anywhere; }
.task-photo-result[data-failed="1"] { color: var(--error-color); }
@media (max-width: 520px) { .task-photo-columns { grid-template-columns: minmax(0, 1fr); } }

@media (max-width: 720px) {
  .notification-permission-banner,
  .mobile-update-banner {
    align-items: stretch;
    flex-direction: column;
  }

  .mobile-update-action,
  .mobile-update-later {
    width: 100%;
  }

  .modal-followup-form {
    grid-template-columns: 1fr;
  }

  .modal-followup-form.mobile-verify {
    grid-template-columns: 1fr;
  }

  .notification-filter-card,
  .notification-compose-card,
  .notification-history-item,
  .notification-history-head,
  .notification-history-actions {
    align-items: stretch;
    grid-template-columns: 1fr;
    flex-direction: column;
  }

  .notification-filter-form {
    grid-template-columns: 1fr;
  }

  .notification-compose-form {
    grid-template-columns: 1fr;
  }

  .notification-compose-form > button,
  .notification-compose-form label > button,
  .notification-compose-form .notification-send-button {
    width: 100%;
  }

  .notification-compose-form .emoji-toggle-button {
    width: 2.2rem;
    max-width: 2.2rem;
    min-width: 2.2rem;
    height: 2.2rem;
    min-height: 2.2rem;
    padding: 0;
  }

  .notification-filter-actions,
  .notification-mark-read-form,
  .notification-cleanup-form,
  .notification-mark-read-form button {
    width: 100%;
  }

  .notification-filter-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .notification-history-actions {
    min-width: 0;
  }

  .notification-history-marker {
    display: none;
  }

  .notification-history-actions .button,
  .notification-history-actions .status-pill,
  .notification-filter-actions .button {
    justify-content: center;
    width: 100%;
  }

  .notification-cleanup-form {
    grid-template-columns: 1fr;
  }
}

.toolbar-card {
  min-width: 0;
  max-width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: end;
}

.toolbar-form {
  min-width: 0;
  display: grid;
  grid-template-columns: 170px 180px repeat(4, auto);
  gap: .75rem;
  align-items: end;
}

.summary-grid {
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .5rem;
}

.summary-grid div {
  min-width: 5.5rem;
  padding: .65rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.summary-grid strong,
.summary-grid span {
  display: block;
}

.summary-grid strong {
  color: var(--primary-dark);
}

.summary-grid span {
  color: var(--muted);
  font-size: .78rem;
}

.planner-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--spacing);
  align-items: start;
}

.management-card {
  border-left: 5px solid var(--primary);
}

.suggestion-card {
  display: none;
  border-left: 5px solid #f59e0b;
}

.suggestion-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: .65rem;
}

.suggestion-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .65rem;
  align-items: center;
  padding: .7rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--task-color);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.suggestion-item p {
  margin-top: .2rem;
  color: var(--muted);
  font-size: .82rem;
}

.suggestion-item small {
  display: block;
  margin-top: .25rem;
  color: #344054;
  font-size: .74rem;
  font-weight: 700;
}

.suggestion-item button {
  min-height: 2.1rem;
  padding: .35rem .6rem;
}

.notification-list {
  display: grid;
  gap: .75rem;
}

.notification-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, .9fr);
  gap: .75rem;
  align-items: center;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.notification-item p {
  margin-top: .25rem;
  color: var(--muted);
  font-size: .86rem;
}

.notification-overview-toolbar {
  align-items: center;
}

.toolbar-copy {
  display: grid;
  gap: .2rem;
}

.toolbar-copy strong {
  font-size: 1.05rem;
  color: var(--text-color);
}

.toolbar-copy span {
  color: var(--muted);
  font-size: .88rem;
}

.notification-summary-grid {
  min-width: min(420px, 100%);
}

.notification-compose-card {
  display: grid;
  gap: .85rem;
}

.notification-compose-form {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) minmax(14rem, 1.2fr) minmax(12rem, .9fr) auto;
  gap: .65rem;
  align-items: end;
}

.notification-compose-form label,
.notification-compose-form .notification-field {
  display: grid;
  gap: .28rem;
  min-width: 0;
  color: var(--text-color);
  font-size: .82rem;
  font-weight: 800;
}

.notification-compose-form .notification-field > label {
  display: block;
}

.notification-compose-form .wide-field {
  grid-column: 1 / -1;
}

.notification-outside-hours {
  min-width: 0;
  padding: .8rem .9rem;
  border: 1px solid color-mix(in srgb, var(--warning-color) 45%, var(--border));
  border-left: 4px solid var(--warning-color);
  border-radius: 8px;
  background: color-mix(in srgb, var(--warning-color) 8%, var(--card-bg));
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}

.notification-outside-hours.is-active {
  border-color: color-mix(in srgb, var(--warning-color) 72%, var(--border));
  background: color-mix(in srgb, var(--warning-color) 16%, var(--card-bg));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--warning-color) 25%, transparent);
}

.notification-compose-form .notification-outside-hours-toggle {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: .7rem;
  cursor: pointer;
}

.notification-compose-form .notification-outside-hours-toggle input[type="checkbox"] {
  width: 1.35rem;
  min-width: 1.35rem;
  height: 1.35rem;
  margin: .12rem 0 0;
  accent-color: var(--warning-color);
  cursor: pointer;
}

.notification-outside-hours-toggle span,
.notification-outside-hours-toggle strong,
.notification-outside-hours-toggle small {
  display: block;
  min-width: 0;
}

.notification-outside-hours-toggle strong {
  font-size: .92rem;
}

.notification-outside-hours-toggle small {
  margin-top: .2rem;
  color: var(--muted);
  font-size: .84rem;
  font-weight: 650;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.notification-outside-hours-toggle:has(input:focus-visible) {
  outline: 3px solid color-mix(in srgb, var(--primary) 45%, transparent);
  outline-offset: 4px;
  border-radius: 4px;
}

.notification-outside-hours-status,
.notification-recipient-error {
  margin: .65rem 0 0;
  font-size: .84rem;
  font-weight: 800;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.notification-outside-hours-status {
  color: var(--text-color);
}

.notification-recipient-error {
  color: var(--error-color);
}

.notification-recipient-field {
  display: grid;
  gap: .65rem;
  min-width: 0;
  margin: 0;
  padding: .85rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
}

.notification-recipient-field legend {
  padding: 0 .35rem;
  color: var(--text-color);
  font-size: .86rem;
  font-weight: 900;
}

.notification-recipient-note {
  display: grid;
  gap: .2rem;
  padding: .75rem .85rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--text-color);
}

.notification-recipient-note span {
  color: var(--muted);
  font-size: .9rem;
}

.notification-recipient-groups {
  display: grid;
  grid-template-columns: repeat(3, minmax(7.5rem, 1fr));
  gap: .65rem;
}

.recipient-chip,
.recipient-person {
  cursor: pointer;
  user-select: none;
}

.recipient-chip {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .65rem;
  min-height: 3.2rem;
  padding: .65rem .8rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  color: var(--text-color);
  font-weight: 900;
  overflow: hidden;
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease, transform .15s ease;
}

.recipient-chip input,
.recipient-person input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.recipient-chip::before,
.recipient-person::before {
  display: grid;
  place-items: center;
  width: 2rem;
  height: 2rem;
  border-radius: 999px;
  color: #fff;
  background: var(--primary);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, #fff 20%, transparent);
}

.recipient-chip::before {
  font-size: 1rem;
}

.recipient-chip-all::before {
  content: "Alle";
  font-size: .66rem;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.recipient-chip-management::before {
  content: "M";
}

.recipient-chip-sellers::before {
  content: "V";
}

.recipient-chip span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.recipient-chip:hover,
.recipient-person:hover {
  border-color: color-mix(in srgb, var(--primary) 55%, var(--border));
  background: color-mix(in srgb, var(--primary) 8%, var(--card-bg));
}

.recipient-chip:has(input:focus-visible),
.recipient-person:has(input:focus-visible) {
  outline: 3px solid color-mix(in srgb, var(--primary) 45%, transparent);
  outline-offset: 2px;
}

.recipient-chip:has(input:disabled) {
  cursor: not-allowed;
  opacity: .58;
  border-color: var(--border);
  background: var(--surface-soft);
  box-shadow: none;
}

.notification-recipient-field:focus-visible,
.notification-recipient-field[aria-invalid="true"] {
  outline: 3px solid color-mix(in srgb, var(--error-color) 35%, transparent);
  outline-offset: 2px;
}

.recipient-chip:has(input:checked),
.recipient-person:has(input:checked) {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 15%, var(--card-bg));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--primary) 38%, transparent), 0 8px 20px color-mix(in srgb, var(--primary) 12%, transparent);
}

.recipient-chip:has(input:checked)::after,
.recipient-person:has(input:checked)::after {
  content: "";
  position: absolute;
  top: .65rem;
  right: .7rem;
  width: .55rem;
  height: .9rem;
  border: solid var(--primary);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.notification-recipient-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: .55rem;
  max-height: 18rem;
  overflow: auto;
  padding-right: .15rem;
}

.recipient-person {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .65rem;
  align-items: center;
  min-height: 3.15rem;
  padding: .62rem .8rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}

.recipient-person::before {
  content: attr(data-initials);
  width: 1.85rem;
  height: 1.85rem;
  font-size: .68rem;
  font-weight: 900;
  text-transform: uppercase;
}

.recipient-person:not([data-initials])::before {
  content: "•";
}

.recipient-person strong,
.recipient-person small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.recipient-person small {
  color: var(--muted);
  font-weight: 700;
}

.notification-compose-form input,
.notification-compose-form select,
.notification-compose-form textarea {
  width: 100%;
  min-width: 0;
}

.notification-compose-form textarea {
  resize: vertical;
}

.emoji-input-wrap {
  position: relative;
  display: grid;
  min-width: 0;
}

.emoji-input-wrap input,
.emoji-input-wrap textarea {
  padding-right: 3.25rem;
}

.emoji-toggle-button {
  position: absolute;
  top: .45rem;
  right: .45rem;
  z-index: 2;
  width: 2.2rem;
  max-width: 2.2rem;
  min-width: 2.2rem;
  height: 2.2rem;
  min-height: 2.2rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--surface-tint);
  color: var(--text-color);
  font-size: 1.15rem;
  line-height: 1;
  box-shadow: none;
}

.emoji-toggle-button:hover,
.emoji-toggle-button:focus-visible {
  background: var(--surface-tint);
  color: var(--text-color);
}

.emoji-picker-panel {
  position: absolute;
  top: calc(100% + .45rem);
  right: 0;
  z-index: 60;
  width: min(26rem, calc(100vw - 2rem));
  padding: .6rem;
  display: grid;
  grid-template-columns: repeat(8, minmax(2rem, 1fr));
  gap: .35rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  color: var(--text-color);
  box-shadow: 0 18px 50px rgba(15, 23, 42, .22);
}

.emoji-picker-panel[hidden] {
  display: none;
}

.emoji-picker-panel button {
  width: 100%;
  min-width: 0;
  min-height: 2.25rem;
  padding: .15rem;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: inherit;
  font-size: 1.35rem;
  line-height: 1;
  box-shadow: none;
}

.emoji-picker-panel button:hover,
.emoji-picker-panel button:focus-visible {
  border-color: var(--border);
  background: var(--card-bg);
}

.notification-compose-form button {
  min-height: 2.45rem;
  white-space: nowrap;
}

@media (max-width: 900px) {
  .notification-compose-form {
    grid-template-columns: 1fr;
  }

  .notification-compose-form > button {
    width: 100%;
  }

  .notification-compose-form .emoji-toggle-button {
    width: 2.2rem;
    max-width: 2.2rem;
    min-width: 2.2rem;
    height: 2.2rem;
    min-height: 2.2rem;
    padding: 0;
  }

  .notification-compose-form .emoji-picker-panel {
    left: 0;
    right: auto;
    width: min(22rem, calc(100vw - 3rem));
  }

  .notification-filter-form {
    grid-template-columns: 1fr;
  }

  .notification-filter-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .notification-filter-form label,
  .notification-filter-actions,
  .notification-mark-read-form,
  .notification-cleanup-form {
    min-width: 0;
    width: 100%;
  }

  .notification-cleanup-form {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 1024px) {
  .schedule-scroll {
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
  }

  .desktop-schedule {
    width: 100%;
    min-width: 0;
  }

  .desktop-schedule.single-seller-view {
    min-width: 100%;
    width: 100%;
  }
}

@media (max-width: 768px) {
  .notification-recipient-groups {
    grid-template-columns: 1fr;
  }

  .recipient-chip,
  .recipient-person {
    min-height: 3.35rem;
  }

  .task-modal-tabs {
    position: static;
    top: auto;
  }

  .pause-grid {
    grid-template-columns: 1fr;
  }

  .notification-compose-form .emoji-input-wrap,
  .notification-compose-form input,
  .notification-compose-form textarea,
  .notification-compose-form input[type="file"] {
    min-width: 0;
    width: 100%;
  }

  .notification-compose-form .emoji-toggle-button {
    width: 2.2rem !important;
    max-width: 2.2rem;
    min-width: 2.2rem;
  }
}

@media (max-width: 480px) {
  .mobile-task-card {
    grid-template-columns: 1fr;
  }
}

.notification-filter-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
}

.notification-filter-form {
  display: grid;
  grid-template-columns: minmax(9rem, .8fr) minmax(10rem, .9fr) minmax(14rem, 1.4fr) repeat(2, minmax(9rem, .8fr)) minmax(11rem, 1fr) auto;
  align-items: end;
  gap: .65rem;
  width: 100%;
}

.notification-filter-form label {
  display: grid;
  gap: .28rem;
  min-width: 0;
  color: var(--text-color);
  font-size: .82rem;
  font-weight: 800;
}

.notification-filter-form input,
.notification-filter-form select {
  width: 100%;
  min-width: 0;
}

.notification-filter-actions {
  display: flex;
  gap: .45rem;
  align-items: center;
}

.notification-filter-actions .button,
.notification-mark-read-form button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.45rem;
  white-space: nowrap;
}

.notification-mark-read-form {
  margin: 0;
  display: flex;
  justify-content: flex-end;
}

.notification-cleanup-form {
  margin: 0;
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) auto;
  gap: .65rem;
  align-items: end;
  padding-top: .75rem;
  border-top: 1px solid var(--border);
}

.notification-cleanup-form label {
  display: grid;
  gap: .28rem;
  min-width: 0;
  color: var(--text-color);
  font-size: .82rem;
  font-weight: 800;
}

.notification-cleanup-form select {
  width: 100%;
  min-height: 2.45rem;
}

.notification-cleanup-form .danger-button {
  min-height: 2.45rem;
  background: #d90429;
  color: #fff;
}

.notification-cleanup-form .danger-button:hover,
.notification-cleanup-form .danger-button:focus-visible {
  background: #b00020;
  color: #fff;
}

@media (min-width: 721px) and (max-width: 1264px) {
  .notification-filter-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .notification-filter-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
  }
}

.notification-history-list {
  display: grid;
  gap: .65rem;
}

.notification-history-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .8rem;
  align-items: center;
  padding: .85rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
}

.notification-history-item.unread {
  border-left: 5px solid var(--primary);
  background: color-mix(in srgb, var(--primary) 8%, var(--card-bg));
}

.notification-history-marker {
  width: .75rem;
  height: .75rem;
  border-radius: 999px;
  background: var(--border);
}

.notification-history-item.unread .notification-history-marker {
  background: var(--primary);
}

.notification-history-main {
  min-width: 0;
}

.notification-history-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
}

.notification-history-head strong {
  color: var(--text-color);
}

.notification-history-head span,
.notification-history-meta {
  color: var(--muted);
  font-size: .82rem;
}

.notification-history-main p {
  margin-top: .25rem;
  color: var(--text-color);
}

.notification-image-preview {
  display: inline-grid;
  grid-template-columns: 4.5rem minmax(0, 1fr);
  align-items: center;
  gap: .55rem;
  max-width: min(28rem, 100%);
  margin-top: .55rem;
  padding: .4rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  color: var(--text-color);
  text-decoration: none;
}

.notification-image-preview img {
  width: 4.5rem;
  height: 3.2rem;
  object-fit: cover;
  border-radius: 6px;
  background: var(--surface-soft);
}

.notification-image-preview span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .82rem;
  font-weight: 800;
}

.notification-history-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem .65rem;
  margin-top: .45rem;
}

.notification-type-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 1.45rem;
  padding: .16rem .5rem;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--primary) 35%, transparent);
  background: color-mix(in srgb, var(--primary) 12%, var(--card-bg));
  color: var(--text-color);
  font-size: .72rem;
  font-weight: 900;
}

.notification-type-pill.type-pauze {
  border-color: #f59e0b;
  background: color-mix(in srgb, #f59e0b 22%, var(--card-bg));
}

.notification-type-pill.type-taak {
  border-color: #0b7cc1;
  background: color-mix(in srgb, #0b7cc1 18%, var(--card-bg));
}

.notification-type-pill.type-planning {
  border-color: #22c55e;
  background: color-mix(in srgb, #22c55e 18%, var(--card-bg));
}

.notification-type-pill.type-sync {
  border-color: #8b5cf6;
  background: color-mix(in srgb, #8b5cf6 18%, var(--card-bg));
}

.notification-history-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .5rem;
  min-width: max-content;
}

.status-pill {
  display: inline-flex;
  align-items: center;
  min-height: 1.85rem;
  padding: .25rem .55rem;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 800;
}

.unread-pill {
  background: var(--primary);
  color: #fff;
}

.muted-pill {
  background: var(--surface-tint);
  color: var(--muted);
}

.verify-form {
  display: grid;
  grid-template-columns: minmax(140px, 1fr) auto auto;
  gap: .5rem;
}

.section-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .9rem;
}

.section-title h2,
.sellers-card h2 {
  color: var(--text-color);
  font-size: 1.1rem;
}

.section-title span {
  color: var(--muted);
  font-size: .86rem;
}

.schedule-card {
  min-width: 0;
}

.schedule-card {
  overflow: hidden;
}

.schedule-view-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 1rem;
  margin-bottom: .75rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--primary) 5%, var(--card-bg));
}

.schedule-view-toolbar strong,
.schedule-view-toolbar span {
  display: block;
}

.schedule-view-toolbar span {
  margin-top: .15rem;
  color: var(--muted);
  font-size: .84rem;
}

.schedule-view-controls {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: end;
  gap: .45rem;
}

.schedule-view-controls button,
.schedule-view-controls select {
  min-height: 2.35rem;
}

.schedule-view-controls button.is-active {
  background: var(--primary);
  color: #fff;
}

.schedule-view-controls label {
  min-width: min(220px, 100%);
  color: var(--muted);
  font-size: .78rem;
  font-weight: 800;
}

.day-responsibility-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(460px, auto);
  gap: .75rem;
  align-items: start;
  margin-bottom: .75rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--responsibility-color, var(--primary));
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--responsibility-color, var(--primary)) 7%, var(--card-bg));
}

.day-responsibility-card.has-responsible {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--responsibility-color, var(--primary)) 18%, transparent);
}

.day-responsibility-editor {
  background: var(--card-bg);
}

.day-responsibility-content {
  display: grid;
  gap: .65rem;
  min-width: 0;
}

.day-responsibility-main {
  display: grid;
  gap: .15rem;
  min-width: 0;
}

.day-responsibility-main span {
  color: var(--muted);
  font-size: .74rem;
  font-weight: 900;
  letter-spacing: .02em;
  text-transform: uppercase;
}

.day-responsibility-main strong {
  color: var(--text-color);
  font-size: 1.06rem;
}

.day-responsibility-card.has-responsible .day-responsibility-main strong {
  color: var(--responsibility-color, var(--primary));
}

.day-responsibility-main small {
  color: var(--muted);
}

.day-responsibility-form {
  display: grid;
  grid-template-columns: minmax(160px, .75fr) minmax(220px, 1fr) auto;
  gap: .45rem;
  align-items: end;
}

.day-responsibility-form label {
  display: grid;
  gap: .25rem;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 900;
}

.day-responsibility-form select,
.day-responsibility-form input,
.day-responsibility-form button {
  min-height: 2.35rem;
}

@media (min-width: 769px) and (max-width: 880px) {
  .day-responsibility-card {
    grid-template-columns: minmax(0, 1fr);
  }
}

.day-responsibility-list {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  align-items: stretch;
}

.responsibility-pill {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-width: min(100%, 15rem);
  max-width: 100%;
  padding: .42rem .45rem .42rem .55rem;
  border: 1px solid color-mix(in srgb, var(--responsibility-color, var(--primary)) 38%, var(--border));
  border-left: 4px solid var(--responsibility-color, var(--primary));
  border-radius: 7px;
  background: color-mix(in srgb, var(--responsibility-color, var(--primary)) 10%, var(--input-bg));
}

.responsibility-pill span {
  display: grid;
  min-width: 0;
  line-height: 1.15;
}

.responsibility-pill strong,
.responsibility-pill small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.responsibility-pill strong {
  color: var(--text-color);
  font-size: .78rem;
}

.responsibility-pill small {
  color: var(--muted);
  font-size: .68rem;
  font-weight: 800;
}

.responsibility-remove {
  min-height: 1.9rem;
  padding: .34rem .5rem;
  border: 0;
  border-radius: 6px;
  background: color-mix(in srgb, #d71920 88%, #0f172a);
  color: #fff;
  font-size: .7rem;
  font-weight: 900;
  white-space: nowrap;
}

.day-responsibility-switch {
  display: inline-grid;
  min-height: 1.35em;
  align-items: center;
}

.day-responsibility-switch > span {
  grid-area: 1 / 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.day-responsibility-card.has-responsible .responsibility-name {
  animation: dayResponsibleNameSwap 4.2s ease-in-out infinite;
  will-change: opacity, text-shadow;
}

.day-responsibility-card.has-responsible .responsibility-hours {
  color: var(--text-color);
  opacity: 0;
  animation: dayResponsibleHoursSwap 4.2s ease-in-out infinite;
  will-change: opacity;
}

@keyframes dayResponsibleNameSwap {
  0%, 38%, 100% {
    opacity: 1;
    text-shadow: 0 0 0 transparent;
  }
  50%, 88% {
    opacity: .18;
    text-shadow: 0 0 11px color-mix(in srgb, var(--responsibility-color, var(--primary)) 48%, transparent);
  }
}

@keyframes dayResponsibleHoursSwap {
  0%, 38%, 100% {
    opacity: 0;
  }
  50%, 88% {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  .day-responsibility-card.has-responsible .responsibility-name,
  .day-responsibility-card.has-responsible .responsibility-hours {
    animation: none;
  }

  .day-responsibility-card.has-responsible .responsibility-hours {
    display: none;
  }
}

.numeric-target-panel {
  margin-bottom: .75rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--primary) 4%, var(--card-bg));
}

.numeric-target-panel summary {
  cursor: pointer;
  min-height: 44px;
  padding: .65rem .75rem;
  color: var(--primary);
  font-weight: 900;
}

.numeric-target-grid {
  display: grid;
  gap: .45rem;
  padding: 0 .75rem .75rem;
}

.numeric-target-form {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) repeat(2, minmax(110px, .8fr)) minmax(160px, 1.2fr);
  align-items: end;
  gap: .45rem;
  padding: .45rem;
  border: 1px solid var(--border);
  border-left: 4px solid var(--seller-color, var(--primary));
  border-radius: var(--border-radius);
  background: var(--card-bg);
}

.numeric-target-form strong {
  align-self: center;
  min-width: 0;
  overflow-wrap: anywhere;
}

.numeric-target-form label {
  min-width: 0;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 900;
}

.numeric-target-form input {
  min-width: 0;
  min-height: 44px;
  font-size: 16px;
}

.numeric-target-form input:focus-visible,
.numeric-target-panel summary:focus-visible,
.numeric-target-actions button:focus-visible {
  outline: 3px solid var(--brand);
  outline-offset: 3px;
}

.numeric-target-form button {
  min-height: 2.25rem;
  padding-inline: .75rem;
}

.numeric-target-actions {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .5rem;
  padding: 0 .75rem .75rem;
}

.numeric-target-actions button {
  min-height: 44px;
}

.day-target-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: .65rem;
  margin-bottom: .85rem;
}

.day-target-card {
  display: grid;
  gap: .55rem;
  padding: .65rem;
  border: 1px solid var(--border);
  border-left: 4px solid var(--seller-color, var(--primary));
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--seller-color, var(--primary)) 4%, var(--card-bg));
}

.day-target-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: .75rem;
}

.day-target-head strong,
.day-target-head small {
  display: block;
}

.day-target-head small {
  margin-top: .1rem;
  color: var(--muted);
  font-size: .76rem;
}

.target-pill {
  flex: 0 0 auto;
  padding: .22rem .48rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--seller-color, var(--primary)) 18%, var(--surface-soft));
  color: var(--primary-dark);
  font-size: .72rem;
  font-weight: 900;
}

.muted-pill {
  background: var(--surface-soft);
  color: var(--muted);
}

.day-target-progress {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem;
}

.day-target-progress span,
.day-target-progress strong {
  display: block;
}

.day-target-progress span {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 800;
}

.day-target-progress strong {
  margin: .1rem 0 .2rem;
  font-size: .86rem;
}

.day-target-progress meter {
  width: 100%;
  height: .45rem;
}

.day-target-focus {
  margin: 0;
  padding: .45rem .55rem;
  border-radius: var(--border-radius);
  background: var(--surface-soft);
  color: var(--text-color);
  font-size: .84rem;
}

.day-target-editor {
  border-top: 1px solid var(--border);
  padding-top: .45rem;
}

.day-target-editor summary {
  width: fit-content;
  cursor: pointer;
  color: var(--primary);
  font-size: .82rem;
  font-weight: 900;
}

.day-target-editor[open] summary {
  margin-bottom: .45rem;
}

.day-target-form {
  display: grid;
  grid-template-columns: 64px 64px 74px minmax(140px, 1fr) auto;
  align-items: end;
  gap: .4rem;
}

.day-target-form label {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 800;
}

.day-target-form input {
  min-height: 2.25rem;
}

.day-target-form button {
  min-height: 2.25rem;
  padding-inline: .75rem;
}

.schedule-scroll {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: var(--card-bg);
}

.schedule-scroll::-webkit-scrollbar {
  height: 10px;
}

.schedule-scroll::-webkit-scrollbar-track {
  background: #f1f5f9;
}

.schedule-scroll::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 999px;
}

.desktop-schedule {
  --schedule-time-width: 54px;
  --schedule-head-height: 54px;
  --schedule-hour-height: 86px;
  --schedule-seller-min: 0px;
  display: grid;
  position: relative;
  grid-template-columns: var(--schedule-time-width) repeat(var(--visible-seller-count, var(--seller-count, 8)), minmax(0, 1fr));
  width: 100%;
  min-width: 0;
}

/* Keep all seller lanes and the time axis aligned when either sales target is shown. */
.desktop-schedule.has-sales-targets {
  --schedule-head-height: 110px;
  --schedule-seller-min: 125px;
}

.schedule-scroll:has(.desktop-schedule.has-sales-targets) {
  overflow-x: auto;
}

.desktop-schedule.has-sales-targets:not(.single-seller-view) {
  grid-template-columns: var(--schedule-time-width) repeat(var(--visible-seller-count, var(--seller-count, 8)), minmax(var(--schedule-seller-min), 1fr));
  width: max(100%, calc(var(--schedule-time-width) + (var(--visible-seller-count, var(--seller-count, 8)) * var(--schedule-seller-min))));
  min-width: max(100%, calc(var(--schedule-time-width) + (var(--visible-seller-count, var(--seller-count, 8)) * var(--schedule-seller-min))));
}

.desktop-schedule.single-seller-view {
  --schedule-time-width: 58px;
  grid-template-columns: var(--schedule-time-width) minmax(0, 1fr);
  min-width: 100%;
  width: 100%;
}

.desktop-schedule.single-seller-view .time-column {
  grid-column: 1;
}

.desktop-schedule.single-seller-view .seller-column-focused {
  grid-column: 2;
}

.time-column,
.seller-column {
  min-width: 0;
}

.time-column {
  position: sticky;
  left: 0;
  z-index: 42;
  width: var(--schedule-time-width);
  min-width: var(--schedule-time-width);
  background: #fafafa;
  box-shadow: 2px 0 0 color-mix(in srgb, var(--border) 78%, transparent);
}

.seller-head {
  height: var(--schedule-head-height);
  display: grid;
  align-items: center;
  justify-content: center;
  padding: 0 .25rem;
  border-bottom: 1px solid var(--border);
  color: var(--seller-color, var(--primary-dark));
  font-size: .78rem;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  overflow: hidden;
}

.seller-head strong,
.seller-head span {
  min-width: 0;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.seller-head span {
  margin-top: .08rem;
  color: #475467;
  font-size: .66rem;
  font-weight: 800;
}

.seller-head .seller-target-line {
  color: var(--seller-color, var(--primary));
  font-size: .64rem;
  font-weight: 900;
}

.has-sales-targets .seller-head {
  align-content: center;
  grid-template-columns: minmax(0, 1fr);
  row-gap: 2px;
  padding: .4rem .25rem;
  font-size: .78rem;
}

.has-sales-targets .seller-head > span {
  margin-top: 0;
}

.has-sales-targets .seller-head .seller-target-line {
  font-size: .72rem;
  line-height: 1.25;
  font-variant-numeric: tabular-nums;
}

.seller-head .seller-target-zc {
  color: var(--primary-dark);
}

.seller-head .seller-target-services {
  color: #087c7b;
}

html.dark .seller-head .seller-target-zc {
  color: #4bb3ff;
}

html.dark .seller-head .seller-target-services {
  color: #54e0cf;
}

.seller-head .seller-responsibility-line {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  margin-top: .12rem;
  padding: .08rem .4rem;
  border: 1px solid rgba(255, 45, 85, .44);
  border-radius: 999px;
  background: rgba(255, 45, 85, .1);
  color: #ff2d55;
  font-size: .64rem;
  font-weight: 950;
  letter-spacing: 0;
  line-height: 1.1;
  text-transform: uppercase;
  animation: sellerResponsibilityPulse 1.22s ease-in-out infinite;
  text-rendering: optimizeLegibility;
  transform: translateZ(0);
  will-change: opacity, box-shadow, transform;
}

@keyframes sellerResponsibilityPulse {
  0%, 100% {
    opacity: 1;
    box-shadow: 0 0 0 0 rgba(255, 45, 85, .42);
    transform: translateZ(0) scale(1);
  }
  50% {
    opacity: .32;
    box-shadow: 0 0 0 4px rgba(255, 45, 85, .1);
    transform: translateZ(0) scale(.985);
  }
}

@media (prefers-reduced-motion: reduce) {
  .seller-responsibility-badge {
    animation: none;
    opacity: 1;
    text-shadow: none;
    transform: none;
    will-change: auto;
  }
}

.seller-head.empty {
  color: transparent;
}

.time-cell,
.grid-hour {
  height: var(--schedule-hour-height);
  border-top: 1px solid #eef0f4;
}

.grid-hour {
  display: block;
  width: 100%;
  padding: 0;
  border-right: 0;
  border-bottom: 0;
  border-left: 0;
  border-radius: 0;
  background:
    linear-gradient(
      to bottom,
      transparent 0 calc(50% - .5px),
      rgba(148, 163, 184, .34) calc(50% - .5px) calc(50% + .5px),
      transparent calc(50% + .5px) 100%
    );
  cursor: pointer;
}

.grid-hour.hour-slot {
  display: grid;
  grid-template-rows: 1fr 1fr;
  overflow: hidden;
  position: relative;
}

.grid-half-slot {
  position: relative;
  display: block;
  width: 100%;
  min-width: 0;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.grid-half-slot + .grid-half-slot {
  border-top: 1px solid rgba(148, 163, 184, .34);
}

.grid-half-slot:hover,
.grid-half-slot:focus {
  outline: none;
  background: rgba(0, 112, 192, .10);
  box-shadow: inset 0 0 0 2px rgba(0, 112, 192, .24);
}

.grid-half-slot:focus-visible {
  box-shadow: inset 0 0 0 2px var(--primary);
}

.grid-half-slot:hover::after,
.grid-half-slot:focus-visible::after {
  content: "Nieuwe taak " attr(data-start);
  position: absolute;
  left: .45rem;
  top: .32rem;
  z-index: 4;
  padding: .16rem .42rem;
  border-radius: 999px;
  background: var(--primary);
  color: #fff;
  font-size: .68rem;
  font-weight: 900;
  line-height: 1.1;
  box-shadow: 0 8px 18px rgba(0, 112, 192, .25);
  pointer-events: none;
  white-space: nowrap;
}

.readonly-half,
.readonly-half:hover,
.readonly-half:focus {
  cursor: default;
  background: transparent;
  box-shadow: none;
}

.readonly-half:hover::after,
.readonly-half:focus-visible::after {
  content: none;
}

.time-cell {
  position: relative;
  display: flex;
  justify-content: center;
  padding-top: .45rem;
  color: var(--muted);
  font-size: .8rem;
}

.time-cell::after {
  content: attr(data-half-label);
  position: absolute;
  top: 50%;
  right: .25rem;
  transform: translateY(-50%);
  color: #64748b;
  font-size: .66rem;
  font-weight: 700;
}

.seller-lane {
  position: relative;
  min-height: calc(var(--hour-count, 11) * var(--schedule-hour-height));
  border-left: 1px solid var(--border);
}

.task-block {
  position: absolute;
  --lane-inset: .25rem;
  --lane-gap: 5px;
  --lane-width: calc(100% - (2 * var(--lane-inset)));
  left: calc(var(--lane-inset) + ((var(--lane-width) + var(--lane-gap)) / var(--overlap-count, 1)) * var(--overlap-col, 0));
  width: calc(((var(--lane-width) + var(--lane-gap)) / var(--overlap-count, 1)) - var(--lane-gap));
  top: calc((var(--start) / 60) * var(--schedule-hour-height));
  height: max(42px, calc((var(--duration) / 60) * var(--schedule-hour-height) - 5px));
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: .12rem;
  padding: .4rem .46rem;
  border-left: 4px solid var(--task-color);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--task-color) 13%, white);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .09);
  overflow: hidden;
  z-index: 10;
  box-sizing: border-box;
}

.task-short {
  justify-content: center;
  gap: .08rem;
  padding-block: .32rem;
}

.task-short strong {
  font-size: .74rem;
  line-height: 1.05;
}

.task-short > span {
  font-size: .66rem;
  line-height: 1.05;
}

.task-short small,
.task-short .task-rack-chip,
.task-short .task-attachment-chip {
  display: none;
}

/* Actual work/rest segments must not expand across time spent working between breaks. */
.desktop-schedule .seller-lane .task-block.grid-segment {
  height: max(2px, calc((var(--duration) / 60) * var(--schedule-hour-height)));
  min-height: 0;
  padding-block: 0;
}

.task-block.grid-segment.grid-segment-compact > span:not(.task-resize-handle),
.task-block.grid-segment.grid-segment-compact > small,
.task-block.grid-segment.grid-segment-tiny > strong {
  display: none;
}

.current-time-line {
  position: absolute;
  left: var(--schedule-time-width);
  right: 0;
  top: calc(var(--schedule-head-height) + ((var(--now-start) / 60) * var(--schedule-hour-height)));
  z-index: 35;
  border-top: 2px solid #dc2626;
  pointer-events: none;
}

.current-time-line span {
  position: absolute;
  left: .35rem;
  top: -.75rem;
  padding: .08rem .35rem;
  border-radius: 999px;
  background: #dc2626;
  color: #fff;
  font-size: .66rem;
  font-weight: 900;
  line-height: 1;
  text-transform: uppercase;
  box-shadow: 0 2px 8px rgba(220, 38, 38, .28);
}

.task-overlap {
  box-shadow: 0 2px 8px rgba(15, 23, 42, .12);
}

.task-dense-overlap {
  padding-inline: .34rem;
}

.desktop-schedule:not(.single-seller-view) .task-overlap {
  gap: .08rem;
  padding: .36rem .38rem;
}

.desktop-schedule:not(.single-seller-view) .task-overlap strong {
  font-size: .76rem;
}

.desktop-schedule:not(.single-seller-view) .task-overlap span,
.desktop-schedule:not(.single-seller-view) .task-overlap small {
  font-size: .67rem;
  line-height: 1.1;
}

.desktop-schedule:not(.single-seller-view) .task-dense-overlap {
  padding: .34rem .36rem;
}

.desktop-schedule:not(.single-seller-view) .task-dense-overlap .task-rack-chip,
.desktop-schedule:not(.single-seller-view) .task-dense-overlap .task-attachment-chip {
  display: none;
}

.task-long-overlap {
  z-index: 10;
  border-left-width: 5px;
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--task-color) 18%, #fff) 0%, color-mix(in srgb, var(--task-color) 9%, #fff) 100%);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--task-color) 18%, transparent);
}

.task-long-overlap strong {
  padding: .18rem .22rem;
  border-radius: 4px;
  background: rgba(255, 255, 255, .56);
}

.single-seller-view .task-block {
  --lane-inset: .45rem;
  --lane-gap: 7px;
  padding: .5rem .6rem;
}

.single-seller-view .task-block strong {
  display: block;
  font-size: .88rem;
  line-height: 1.15;
}

.single-seller-view .task-block span,
.single-seller-view .task-block small {
  font-size: .72rem;
  line-height: 1.2;
}

.single-seller-view .task-long-overlap {
  opacity: .92;
}

.single-seller-view .task-long-overlap:not(:hover):not(:focus-visible) span,
.single-seller-view .task-long-overlap:not(:hover):not(:focus-visible) small {
  opacity: .78;
}

.single-seller-view .task-block:not(.task-long-overlap) {
  z-index: 14;
}

.editable-task {
  cursor: pointer;
}

.draggable-task {
  cursor: grab;
  touch-action: none;
}

.draggable-task:active {
  cursor: grabbing;
}

.task-resize-handle {
  position: absolute;
  left: .55rem;
  right: .55rem;
  z-index: 4;
  height: .5rem;
  border-radius: 999px;
  opacity: 0;
  cursor: ns-resize;
  background: color-mix(in srgb, var(--task-color) 72%, #ffffff);
  box-shadow: 0 0 0 1px rgba(15, 23, 42, .16);
  transition: opacity .12s ease;
}

.task-resize-top {
  top: .12rem;
}

.task-resize-bottom {
  bottom: .12rem;
}

.draggable-task:hover .task-resize-handle,
.draggable-task:focus-visible .task-resize-handle,
.task-resize-handle:hover {
  opacity: .95;
}

.task-block.is-dragging {
  z-index: 60;
  opacity: .88;
  pointer-events: none;
  box-shadow: 0 18px 36px rgba(15, 23, 42, .24);
}

.task-block.mobile-drag-selected {
  z-index: 65;
  outline: 3px solid rgba(0, 112, 192, .38);
  outline-offset: 2px;
  box-shadow: 0 14px 32px rgba(0, 112, 192, .22);
}

.task-block.mobile-drag-selected::before {
  content: "Sleep of trek nu om te verplaatsen";
  position: absolute;
  left: .45rem;
  right: .45rem;
  bottom: calc(100% + .28rem);
  z-index: 3;
  padding: .22rem .38rem;
  border-radius: 5px;
  background: rgba(0, 112, 192, .96);
  color: #fff;
  font-size: .62rem;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  pointer-events: none;
}

.task-block.mobile-drag-selected .task-resize-handle {
  opacity: 1;
}

.task-bulk-selected {
  outline: 3px solid #22c55e;
  outline-offset: 2px;
  box-shadow: 0 0 0 5px rgba(34, 197, 94, .18), 0 8px 20px rgba(15, 23, 42, .18);
}

.bulk-approve-bar {
  position: sticky;
  top: calc(var(--header-height, 64px) + .75rem);
  z-index: 80;
  display: grid;
  grid-template-columns: auto auto minmax(14rem, 1fr) auto auto;
  align-items: center;
  gap: .75rem;
  margin: 0 auto 1rem;
  max-width: var(--content-width);
  padding: .8rem 1rem;
  border: 1px solid color-mix(in srgb, #22c55e 42%, var(--border));
  border-radius: var(--border-radius);
  background: color-mix(in srgb, #22c55e 13%, var(--card-bg));
  box-shadow: var(--shadow);
}

.bulk-approve-bar[hidden] {
  display: none;
}

.bulk-approve-bar strong {
  color: #047857;
}

.bulk-approve-bar span {
  color: var(--muted);
}

.bulk-approve-bar input {
  min-width: 0;
}

.seller-lane.drag-target {
  background: color-mix(in srgb, var(--primary) 9%, transparent);
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--primary) 32%, transparent);
}

.drag-time-preview {
  position: absolute;
  z-index: 55;
  left: .35rem;
  right: .35rem;
  display: grid;
  align-content: center;
  gap: .08rem;
  padding: .38rem .5rem;
  border: 2px dashed var(--primary);
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--primary) 14%, white);
  color: var(--primary-dark);
  box-shadow: 0 12px 26px rgba(0, 112, 192, .2);
  pointer-events: none;
}

.drag-time-preview strong {
  font-size: .78rem;
}

.drag-time-preview span {
  color: var(--muted);
  font-size: .7rem;
  font-weight: 800;
}

.editable-task:hover,
.editable-task:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--task-color) 58%, #fff);
  outline-offset: 2px;
  box-shadow: 0 8px 20px rgba(15, 23, 42, .16);
}

.editable-task.task-keyboard-selected {
  outline: 3px solid color-mix(in srgb, var(--primary) 72%, white);
  outline-offset: 2px;
}

.task-block[data-task-tooltip]:hover,
.task-block[data-task-tooltip]:focus-visible {
  z-index: 125;
  overflow: visible;
}

.task-block[data-task-tooltip]:hover::after,
.task-block[data-task-tooltip]:focus-visible::after {
  content: attr(data-task-tooltip);
  position: absolute;
  left: .25rem;
  top: calc(100% + .35rem);
  z-index: 130;
  width: max-content;
  max-width: min(300px, 78vw);
  padding: .55rem .65rem;
  border: 1px solid color-mix(in srgb, var(--primary) 35%, var(--border));
  border-radius: 8px;
  background: #ffffff;
  color: #101828;
  box-shadow: 0 16px 38px rgba(15, 23, 42, .24);
  font-size: .78rem;
  font-weight: 800;
  line-height: 1.35;
  white-space: normal;
  overflow-wrap: anywhere;
}

.context-menu {
  position: fixed;
  z-index: 1400;
  min-width: 210px;
  padding: .35rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .22);
}

.context-menu-title {
  max-width: 260px;
  padding: .45rem .55rem .35rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.context-menu button {
  width: 100%;
  justify-content: flex-start;
  min-height: 2.15rem;
  padding: .45rem .6rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--text-color);
  font-size: .88rem;
  text-align: left;
}

.context-menu button:hover,
.context-menu button:focus-visible {
  background: #eef6fb;
  color: var(--primary-dark);
}

.context-menu .danger-text {
  color: var(--error-color);
}

.context-menu .danger-text:hover,
.context-menu .danger-text:focus-visible {
  background: #fff4f4;
  color: var(--error-color);
}

.task-block strong,
.task-block span,
.task-block small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.task-block span,
.task-block small {
  color: #344054;
  font-size: .7rem;
}

.task-block strong {
  font-size: .76rem;
  line-height: 1.15;
  flex: 0 0 auto;
}

.task-block small {
  line-height: 1.12;
}

.task-block span {
  flex: 0 0 auto;
}

.task-block small {
  flex: 0 1 auto;
}

.desktop-schedule:not(.single-seller-view) .task-overlap strong {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  white-space: normal;
}

.desktop-schedule:not(.single-seller-view) .task-dense-overlap strong {
  -webkit-line-clamp: 1;
}

.task-block .task-attachment-chip,
.task-block .task-rack-chip {
  max-width: 100%;
}

.task-hover-tooltip {
  position: fixed;
  z-index: 2600;
  max-width: min(320px, calc(100vw - 24px));
  padding: .65rem .75rem;
  border: 1px solid color-mix(in srgb, var(--primary) 35%, var(--border));
  border-radius: 8px;
  background: #ffffff;
  color: #101828;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .24);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.35;
  white-space: pre-line;
  overflow-wrap: anywhere;
  pointer-events: none;
}

.task-hover-tooltip[hidden] {
  display: none;
}

.break-block {
  border-left-color: #f59e0b;
  background: #fff6db;
  outline: 1px dashed rgba(180, 83, 9, .42);
}

.editable-break {
  cursor: pointer;
}

.editable-break:hover,
.editable-break:focus-visible {
  box-shadow: 0 0 0 2px rgba(245, 158, 11, .28), 0 10px 22px rgba(15, 23, 42, .14);
}

.break-block strong {
  color: #78350f;
}

.break-late-badge,
.break-late-line {
  color: #b42318;
  font-weight: 900;
}

.break-block .break-late-badge {
  color: #b42318;
}

.mobile-break-card {
  border-left-color: #f59e0b;
  background: #fffaf0;
}

.mobile-break-card form {
  display: grid;
  gap: .45rem;
}

.break-modal .modal-header {
  border-bottom: 1px solid var(--border);
}

.break-modal-body {
  display: grid;
  gap: .85rem;
  padding: 1rem;
}

.break-modal-summary {
  display: grid;
  gap: .25rem;
  padding: .85rem;
  border: 1px solid var(--border);
  border-left: 4px solid #f59e0b;
  border-radius: 8px;
  background: color-mix(in srgb, #f59e0b 10%, var(--panel));
}

.break-modal-summary strong {
  font-size: 1.05rem;
}

.break-modal-summary small {
  color: var(--muted);
  font-weight: 800;
}

.break-modal .modal-followup-form {
  grid-template-columns: 1fr;
}

.break-modal-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
}

.break-modal-actions form {
  display: grid;
}

.status-dot {
  width: .55rem;
  height: .55rem;
  display: inline-block;
  margin-right: .25rem;
  border-radius: 50%;
  background: var(--muted);
  vertical-align: middle;
}

.status-gepland {
  background: #7c8aa0;
}

.status-bezig {
  background: #f59e0b;
}

.status-ter-controle {
  background: #0070c0;
}

.status-klaar {
  background: #117a37;
}

.mobile-status {
  display: inline-flex;
  margin-left: .35rem;
  padding: .14rem .42rem;
  border-radius: 999px;
  color: #fff;
  font-size: .72rem;
  font-weight: 800;
  vertical-align: middle;
}

.mobile-task-list {
  display: none;
}

.self-select {
  margin-bottom: .25rem;
}

.verification-note {
  margin-top: .25rem;
  color: var(--error-color) !important;
}

.mobile-verify {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: .5rem;
}

.proof-form {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  gap: .5rem;
  align-items: center;
}

.proof-form input[type="file"] {
  min-width: 0;
  padding: .42rem;
}

.break-card {
  display: grid;
  gap: 1rem;
}

.break-request-panel {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: .75rem;
  padding: .8rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--warning-color);
  border-radius: var(--border-radius);
  background: #fffaf0;
}

.break-inline-form {
  flex: 1 1 420px;
  display: grid;
  grid-template-columns: 150px minmax(180px, 1fr) auto;
  gap: .6rem;
  align-items: end;
}

.break-list {
  display: grid;
  gap: .6rem;
}

.break-item {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  align-items: center;
  padding: .75rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--seller-color, var(--primary));
  border-radius: var(--border-radius);
  background: #fff;
}

.break-item p {
  margin: .15rem 0;
  color: var(--muted);
}

.break-item small {
  display: block;
  color: var(--muted);
}

.break-status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: max-content;
  max-width: 100%;
  height: auto !important;
  min-height: 0 !important;
  align-self: start;
  justify-self: end;
  padding: .25rem .55rem;
  border-radius: 999px;
  background: #eef6fb;
  color: var(--primary-dark);
  font-size: .78rem;
  font-weight: 800;
  line-height: 1.15;
  text-align: center;
  overflow-wrap: anywhere;
  white-space: normal;
}

.break-actions {
  flex: 0 0 auto;
  display: grid;
  justify-items: end;
  gap: .4rem;
}

.break-actions form {
  margin: 0;
}

.break-action-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.break-action-row form {
  margin: 0;
  flex: 1 1 150px;
}

.break-action-row button {
  width: 100%;
}

.break-correction-panel {
  width: 100%;
  padding: .65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(0, 112, 192, .06);
}

.break-correction-panel summary {
  cursor: pointer;
  font-weight: 800;
  color: var(--primary-dark);
}

.break-undo-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; }
.break-undo-actions form { align-content: start; min-width: 0; }
.break-undo-actions button { width: 100%; min-height: 44px; }
.break-correction-panel .muted { margin: .65rem 0; font-size: .85rem; }
@media (max-width: 520px) { .break-undo-actions { grid-template-columns: minmax(0, 1fr); } }

.break-correction-panel form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .55rem;
  margin-top: .65rem;
}

.break-correction-panel label,
.break-correction-panel input {
  min-width: 0;
  width: 100%;
}

.break-correction-note,
.break-correction-panel button {
  grid-column: 1 / -1;
}

.break-status-bezig .break-status-pill {
  background: #fff1d6;
  color: #9a5200;
}

.break-status-terug .break-status-pill {
  background: #e7f7ee;
  color: #08733d;
}

.pause-page {
  display: grid;
  gap: 1rem;
}

.pause-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 315px), 1fr));
  align-items: start;
  gap: .75rem;
}

.pause-person-card {
  display: grid;
  align-content: start;
  gap: .75rem;
  padding: .85rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--seller-color, var(--primary));
  border-radius: var(--border-radius);
  background: #fff;
}

.focus-break-card {
  border-color: #f59e0b;
  box-shadow: 0 0 0 3px rgba(245, 158, 11, .22), 0 12px 30px rgba(15, 23, 42, .12);
}

.break-focus-hint {
  padding: .65rem;
  border: 1px solid rgba(245, 158, 11, .45);
  border-radius: 8px;
  background: #fff7e6;
}

.break-focus-hint p {
  margin: .2rem 0 0;
  color: var(--muted);
}

.break-start-form {
  display: grid;
  gap: .55rem;
}

.break-start-form textarea {
  min-height: 4.4rem;
  resize: vertical;
}

.pause-person-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(4.5rem, auto);
  gap: .75rem;
  align-items: start;
}

.pause-actions {
  display: grid;
  grid-template-columns: 1fr;
  gap: .65rem;
  align-content: start;
}

.pause-actions > .break-focus-hint,
.pause-actions > .break-start-form {
  grid-column: auto;
}

.pause-actions > form:not(.break-start-form) {
  max-width: 100%;
  justify-self: end;
}

.pause-person-head > div,
.pause-actions > div {
  min-width: 0;
}

.pause-actions > div:first-child {
  display: grid;
  gap: .15rem;
}

.pause-person-head strong,
.pause-actions strong {
  overflow-wrap: anywhere;
}

.pause-person-head small,
.pause-actions small {
  display: block;
  margin-top: .15rem;
  color: var(--muted);
  font-size: .78rem;
}

.pause-plan-form {
  display: grid;
  grid-template-columns: minmax(96px, .42fr) minmax(0, 1fr);
  gap: .55rem;
  align-items: end;
}

.pause-plan-form button {
  grid-column: 1 / -1;
  width: 100%;
}

.pause-plan-form input {
  width: 100%;
  min-width: 0;
}

.pause-plan-form button,
.pause-actions button {
  min-height: 2.35rem;
  white-space: normal;
}

.evidence-card {
  display: grid;
  gap: .9rem;
}

.evidence-task-list {
  display: grid;
  gap: .85rem;
}

.evidence-task-card {
  display: grid;
  grid-template-columns: minmax(220px, .8fr) minmax(320px, 1fr);
  gap: .85rem;
  align-items: start;
  padding: .85rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--task-color);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.evidence-task-main {
  display: grid;
  gap: .28rem;
}

.evidence-task-main h3 {
  font-size: 1.02rem;
}

.evidence-task-main p {
  color: var(--muted);
  font-size: .86rem;
}

.evidence-actions {
  display: grid;
  gap: .65rem;
}

.status-form {
  max-width: 260px;
}

.evidence-proof-form {
  grid-template-columns: minmax(0, 1fr) minmax(190px, .75fr) auto;
}

.management-feedback-form {
  padding: .55rem;
  border: 1px solid #b8dfff;
  border-radius: 8px;
  background: #f5fbff;
}

.photo-upload {
  min-width: 0;
}

.camera-upload-choice {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  align-items: center;
  justify-content: center;
  margin: .35rem .35rem .35rem 0;
  padding: .46rem .7rem;
  border: 1px solid color-mix(in srgb, var(--primary) 45%, var(--border));
  border-radius: 6px;
  background: color-mix(in srgb, var(--primary) 12%, var(--surface-soft));
  color: var(--primary-dark);
  font-size: .86rem;
  font-weight: 900;
  cursor: pointer;
}

.camera-upload-choice input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.camera-upload-stash {
  display: none;
}

.camera-selection-summary {
  margin-top: .35rem;
}

.file-selection-summary {
  margin-top: .45rem;
  padding: .5rem .6rem;
  border: 1px solid color-mix(in srgb, var(--primary) 26%, var(--border));
  border-radius: 6px;
  background: color-mix(in srgb, var(--primary) 7%, var(--surface-soft));
  color: var(--text-color);
  font-size: .78rem;
  line-height: 1.35;
}

.file-selection-summary strong {
  display: block;
  margin-bottom: .3rem;
  color: var(--primary-dark);
}

.file-selection-summary ul {
  display: grid;
  gap: .16rem;
  margin: 0;
  padding-left: 1rem;
}

.file-selection-summary li {
  min-width: 0;
  overflow-wrap: anywhere;
}

.file-selection-summary span {
  color: var(--muted);
  font-weight: 700;
}

.attachment-gallery {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  padding-top: .25rem;
}

.attachment-tile {
  position: relative;
  width: 132px;
  min-height: 162px;
  display: grid;
  grid-template-rows: 20px 82px minmax(0, auto);
  gap: .25rem;
  padding: .35rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fff;
  color: var(--text-color);
  text-decoration: none;
}

.attachment-tile.attachment-bewijs {
  border-color: #16a34a;
  box-shadow: inset 4px 0 0 #16a34a;
}

.attachment-tile.attachment-feedback {
  border-color: #f59e0b;
  box-shadow: inset 4px 0 0 #f59e0b;
}

.attachment-tile.attachment-instructie {
  border-color: #0b7cc1;
  box-shadow: inset 4px 0 0 #0b7cc1;
}

.attachment-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  border-radius: 4px;
  background: #eef2f7;
  color: #1f2937;
  font-size: .68rem;
  font-weight: 900;
  line-height: 1;
  padding: 4px 5px;
}

.attachment-feedback .attachment-badge {
  background: #fff7ed;
  color: #9a3412;
}

.attachment-bewijs .attachment-badge {
  background: #ecfdf5;
  color: #166534;
}

.attachment-instructie .attachment-badge {
  background: #e0f2fe;
  color: #075985;
}

.attachment-tile img {
  width: 100%;
  height: 82px;
  object-fit: cover;
  border-radius: 4px;
  background: #eef2f7;
}

.attachment-tile span {
  display: grid;
  place-items: center;
  border-radius: 4px;
  background: #eef6fb;
  color: var(--primary-dark);
  font-weight: 800;
}

.attachment-tile small {
  overflow: hidden;
  color: var(--muted);
  font-size: .72rem;
  text-overflow: ellipsis;
  white-space: normal;
  word-break: break-word;
}

.attachment-link {
  display: inline-block;
  margin-top: .3rem;
  color: var(--primary-dark);
  font-size: .82rem;
  font-weight: 700;
}

.task-instruction-upload {
  padding: .75rem .85rem;
  border: 1px solid color-mix(in srgb, var(--primary) 28%, var(--border));
  border-radius: var(--border-radius);
  background: color-mix(in srgb, var(--primary) 7%, var(--surface-soft));
}

.task-instruction-upload input[type="file"] {
  margin-top: .35rem;
  width: 100%;
}

.task-instruction-upload small {
  display: block;
  margin-top: .35rem;
  color: var(--muted);
  font-weight: 600;
}

.task-attachment-chip {
  display: inline-flex;
  width: fit-content;
  align-items: center;
  justify-content: center;
  margin-top: .18rem;
  padding: .12rem .42rem;
  border-radius: 999px;
  background: color-mix(in srgb, #0b7cc1 14%, #fff);
  color: #075985;
  font-size: .68rem;
  font-weight: 900;
  line-height: 1.2;
}

.task-rack-chip {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  align-items: center;
  justify-content: center;
  margin-top: .18rem;
  padding: .12rem .42rem;
  border: 1px solid color-mix(in srgb, var(--rack-color, #0070c0) 42%, transparent);
  border-left: 4px solid var(--rack-color, #0070c0);
  border-radius: 999px;
  background: color-mix(in srgb, var(--rack-color, #0070c0) 12%, #fff);
  color: #0f172a;
  font-size: .68rem;
  font-weight: 900;
  line-height: 1.2;
}

.stack-form {
  display: grid;
  gap: .75rem;
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .65rem;
}

html:has(body.modal-open),
.modal-open {
  overflow: hidden;
  overscroll-behavior: none;
}

.modal-backdrop {
  position: fixed;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 1rem;
  background: rgba(15, 23, 42, .46);
  z-index: 1200;
}

.modal-backdrop.open {
  display: flex;
}

.task-modal {
  width: min(720px, 100%);
  max-height: min(86vh, 760px);
  max-height: min(86dvh, 760px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 18px 55px rgba(0, 0, 0, .24);
}

.logout-confirm-modal {
  width: min(430px, 100%);
  overflow: hidden;
  border-radius: 8px;
  background: var(--card-bg);
  box-shadow: 0 18px 55px rgba(0, 0, 0, .24);
}

.action-confirm-backdrop {
  z-index: 3200;
}

.action-confirm-modal {
  margin-bottom: max(0px, env(safe-area-inset-bottom, 0px));
}

.logout-confirm-body {
  display: grid;
  gap: 1rem;
  padding: 1rem 1.1rem 1.1rem;
}

.logout-confirm-body p {
  margin: 0;
  color: var(--muted);
  line-height: 1.45;
}

.logout-confirm-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .65rem;
}

.logout-confirm-actions button {
  width: 100%;
}

.logout-confirm-actions .danger {
  border-color: #fecaca;
  background: #fee2e2;
  color: #991b1b;
}

.logout-confirm-actions .danger:hover {
  border-color: #dc2626;
  background: #dc2626;
  color: #fff;
}

html.dark .logout-confirm-actions .danger {
  border-color: rgba(239, 68, 68, .35);
  background: rgba(239, 68, 68, .2);
  color: #fecaca;
}

html.dark .logout-confirm-actions .danger:hover {
  border-color: #ef4444;
  background: #dc2626;
  color: #fff;
}

.modal-header {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.1rem;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, #ffffff 0%, #f4f9fd 100%);
}

.modal-header h2 {
  color: var(--text-color);
  font-size: 1.25rem;
  line-height: 1.15;
}

.modal-kicker {
  display: block;
  margin-bottom: .15rem;
  color: var(--primary-dark);
  font-size: .78rem;
  font-weight: 800;
  text-transform: uppercase;
}

.icon-close {
  flex: 0 0 auto;
  width: 2.75rem;
  min-height: 2.75rem;
  padding: 0;
  border: 2px solid #27435a;
  border-radius: 8px;
  background: #fff;
  color: #0f1f2d;
  font-size: 1.55rem;
  font-weight: 900;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.icon-close:hover {
  background: #eef6fb;
  color: var(--primary-dark);
}

.task-modal-tabs {
  position: sticky;
  top: 4.8rem;
  z-index: 2;
  display: flex;
  gap: .5rem;
  padding: .65rem 1.1rem;
  border-bottom: 1px solid var(--border);
  background: var(--card-bg);
}

.task-modal-tabs button {
  flex: 1 1 0;
  min-height: 2.35rem;
  border: 1px solid var(--border);
  background: var(--surface-tint);
  color: var(--primary-dark);
}

.task-modal-tabs button.active {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
}

.modal-task-form {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .85rem;
  padding: 1rem 1.1rem 1.1rem;
}

.modal-task-form .wide-field {
  grid-column: 1 / -1;
}

.mobile-time-controls {
  display: none;
  gap: .65rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
}

.mobile-time-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}

.mobile-time-head strong {
  color: var(--text-color);
}

.mobile-time-head span {
  color: var(--primary-dark);
  font-weight: 900;
}

.mobile-time-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .5rem;
}

.mobile-time-grid button {
  min-height: 2.45rem;
}

.mobile-time-controls small {
  color: var(--muted);
  line-height: 1.35;
}

.repeat-task-panel {
  display: grid;
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr) minmax(110px, .7fr);
  gap: .65rem;
  align-items: end;
  padding: .75rem;
  border: 1px solid color-mix(in srgb, var(--primary) 24%, var(--border));
  border-radius: 8px;
  background: color-mix(in srgb, var(--primary) 6%, var(--card-bg));
}

.repeat-task-panel[hidden] {
  display: none;
}

.repeat-task-panel small {
  grid-column: 1 / -1;
  color: var(--muted);
  line-height: 1.35;
}

.multi-seller-field {
  display: grid;
  gap: .65rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
}

.multi-seller-field[hidden] {
  display: none;
}

.multi-seller-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}

.multi-seller-head strong {
  display: block;
  color: var(--text-color);
}

.multi-seller-head span {
  display: block;
  color: var(--muted);
  font-size: .86rem;
  font-weight: 600;
}

.multi-seller-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: .45rem;
}

.multi-seller-option {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .45rem .55rem;
  min-height: 2.55rem;
  margin: 0;
  padding: .5rem .55rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  color: var(--text-color);
  cursor: pointer;
}

.multi-seller-option input {
  width: 1rem;
  min-height: 1rem;
}

.multi-seller-option span,
.multi-seller-option small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.multi-seller-option span {
  font-weight: 800;
}

.multi-seller-option small {
  grid-column: 2;
  color: var(--muted);
  font-size: .74rem;
  font-weight: 700;
}

.multi-seller-option:has(input:checked) {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 12%, var(--card-bg));
}

.ghost-button {
  border: 1px solid var(--border);
  background: var(--card-bg);
  color: var(--primary-dark);
}

.inline-template-save {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(160px, .55fr);
  gap: .65rem;
  align-items: end;
  padding: .65rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fbfdff;
}

.inline-template-save label {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: .5rem;
  min-height: 2.35rem;
  margin: 0;
  color: var(--text-color);
  font-weight: 800;
}

.inline-template-save input[type="checkbox"] {
  width: 1rem;
  min-height: 1rem;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: .6rem;
  padding-top: .25rem;
}

.modal-delete-form {
  display: flex;
  justify-content: flex-start;
  padding: 0 1.1rem 1.1rem;
}

.modal-delete-form[hidden] {
  display: none;
}

button.danger {
  border-color: var(--error-color);
  background: var(--error-color);
  color: #fff;
}

button.danger:hover {
  background: #a51d2d;
}

.template-card {
  display: grid;
  gap: 1rem;
}

.beheer-save-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 1rem;
  align-items: center;
  border-left: 5px solid var(--primary);
}

.beheer-save-card h2 {
  font-size: 1.05rem;
}

.beheer-save-card p {
  margin-top: .2rem;
  font-size: .86rem;
}

.template-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: .75rem;
}

.template-item {
  display: grid;
  gap: .3rem;
  padding: .75rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--task-color);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.template-item span,
.template-item p {
  color: var(--muted);
  font-size: .84rem;
}

.editable-template-grid {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.template-edit-form {
  display: grid;
  gap: .45rem;
}

.template-edit-form label {
  display: grid;
  gap: .25rem;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 700;
}

.template-edit-form input,
.template-edit-form textarea {
  width: 100%;
}

.template-edit-form textarea {
  resize: vertical;
}

.template-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: .65rem;
  align-items: end;
}

.shift-template-form {
  grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto auto minmax(220px, .9fr);
}

.template-form .color-field {
  display: grid;
  gap: .25rem;
  justify-items: start;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 800;
}

.template-form button {
  min-height: 2.35rem;
}

.seller-chips {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(540px, 1fr));
  gap: .75rem;
  margin-top: .8rem;
}

.seller-chip-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .5rem;
  align-items: start;
  padding: .7rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--seller-color);
  border-radius: var(--border-radius);
  background: #fff;
}

.seller-chip-row a {
  min-width: 0;
  color: var(--text-color);
  text-decoration: none;
}

.seller-chip-row span {
  display: block;
  margin-top: .1rem;
  color: var(--muted);
  font-size: .75rem;
  text-transform: capitalize;
}

.seller-chip-row button {
  min-height: 2rem;
  padding: .25rem .5rem;
  font-size: .78rem;
  white-space: nowrap;
}

.seller-edit-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
  gap: .4rem;
  min-width: 0;
}

.seller-edit-form select,
.seller-edit-form input {
  min-width: 0;
  width: 100%;
}

.seller-edit-form button {
  justify-self: start;
}

.seller-chip-row > form:not(.seller-edit-form) {
  justify-self: start;
}

.function-card {
  display: grid;
  gap: .85rem;
}

.function-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
  gap: .5rem;
}

.function-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .55rem .7rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fff;
}

.function-row span {
  display: grid;
  gap: .1rem;
  font-weight: 800;
}

.function-row small {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 600;
}

.function-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: .65rem;
  align-items: center;
}

.seller-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: .65rem;
  align-items: center;
  margin-top: 1rem;
}

.sessions-card {
  display: grid;
  gap: .8rem;
}

.session-list {
  display: grid;
  gap: .5rem;
}

.session-row {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(190px, .8fr) auto;
  gap: .7rem;
  align-items: center;
  padding: .65rem .75rem;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fff;
}

.session-row strong,
.session-row small,
.session-row span {
  min-width: 0;
}

.session-row small {
  display: block;
  color: var(--muted);
}

.session-meta {
  display: grid;
  gap: .15rem;
}

.session-row form {
  justify-self: end;
}

.session-row button {
  min-height: 2.2rem;
  white-space: nowrap;
}

.logs-preview-card {
  display: grid;
  gap: .75rem;
}

.log-preview-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .75rem;
}

.log-preview-grid h3 {
  margin-bottom: .5rem;
  font-size: .96rem;
}

.log-preview-grid p {
  padding: .45rem 0;
  border-top: 1px solid var(--border);
  color: var(--muted);
  font-size: .84rem;
}

.table-scroll {
  overflow-x: auto;
}

.inline-action-form {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
}

.compact-summary {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.schedule-admin-card {
  min-width: 0;
}

.primary-week-card {
  display: grid;
  gap: .9rem;
}

.sheet-live-card {
  display: grid;
  gap: .85rem;
}

.sheet-action-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
}

.google-sheet-frame {
  width: 100%;
  height: min(78vh, 820px);
  min-height: 560px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
}

.sheet-source-row {
  padding-top: .1rem;
  border-top: 1px solid var(--border);
}

.week-board {
  display: grid;
  grid-template-columns: repeat(7, minmax(190px, 1fr));
  gap: .75rem;
  margin-bottom: 1rem;
  overflow-x: auto;
  padding-bottom: .25rem;
}

.day-panel {
  min-width: 190px;
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fafafa;
}

.day-panel h3 {
  padding: .55rem .65rem;
  border-bottom: 1px solid var(--border);
  background: #f4f8fb;
  color: var(--primary-dark);
  font-size: .9rem;
}

.day-shifts {
  display: grid;
  gap: .45rem;
  padding: .55rem;
}

.shift-card {
  display: grid;
  gap: .45rem;
  padding: .55rem;
  border: 1px solid #e6e9ef;
  border-left: 4px solid var(--primary);
  border-radius: var(--border-radius);
  background: #fff;
}

.shift-card.dirty {
  border-left-color: #f59e0b;
  background: #fffaf0;
}

.shift-card strong,
.shift-card span {
  display: block;
}

.shift-card span {
  color: var(--muted);
  font-size: .76rem;
}

.quick-shift-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .35rem;
}

.quick-shift-form input {
  min-height: 2rem;
  padding: .35rem .45rem;
}

.quick-shift-form button {
  min-height: 2rem;
  padding: .25rem .45rem;
  font-size: .78rem;
}

.shift-badge {
  width: max-content;
  padding: .28rem .45rem;
  border-radius: var(--border-radius);
  background: #eef6fb;
  color: var(--primary-dark);
}

.compact-title {
  margin-top: .75rem;
}

.excel-scroll {
  max-height: calc(100vh - 260px);
  border: 1px solid var(--border);
  border-radius: var(--border-radius);
  background: #fff;
}

.week-roster-box {
  overflow: hidden;
  border: 1px solid #1f2937;
  border-radius: 4px;
  background: #fff;
}

.week-roster-toolbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .55rem;
  min-height: 2.5rem;
  padding: .35rem .55rem;
  border-bottom: 1px solid #1f2937;
  background: #eef4f8;
  color: #1f2937;
}

.week-roster-toolbar label {
  display: flex;
  align-items: center;
  gap: .45rem;
  margin: 0;
  font-size: .76rem;
  font-weight: 800;
}

.week-roster-toolbar input[type="range"] {
  width: clamp(92px, 16vw, 180px);
  min-height: 1.5rem;
  margin: 0;
  padding: 0;
  accent-color: #0070c0;
  touch-action: pan-x;
}

.week-roster-toolbar output {
  min-width: 3.5rem;
  color: #375070;
  font-size: .72rem;
  font-weight: 800;
  text-align: center;
}

.week-roster-reset {
  min-height: 1.9rem;
  padding: .25rem .55rem;
  border: 1px solid #9db1c1;
  border-radius: 5px;
  background: #fff;
  color: #1f2937;
  font-size: .72rem;
  font-weight: 800;
}

.week-roster-reset:hover,
.week-roster-reset:focus-visible {
  background: #dceaf3;
  color: #111827;
}

.week-roster-reset:disabled {
  cursor: default;
  opacity: .58;
}

.week-roster-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x pan-y;
}

.week-roster-content {
  width: var(--week-roster-width, 100%);
  min-width: 100%;
}

.week-roster-title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .75rem;
  padding: .85rem;
  background: #2f7d2c;
  color: #fff;
  text-align: center;
}

.week-roster-title strong {
  font-size: 1.28rem;
}

.week-roster-title span {
  color: #f3faef;
  font-size: .8rem;
  font-weight: 700;
}

.week-roster-band {
  padding: .35rem;
  border-top: 1px solid #1f2937;
  border-bottom: 1px solid #1f2937;
  background: #93c47d;
  color: #17340f;
  font-weight: 800;
  text-align: center;
}

.shift-table {
  min-width: 0;
}

.week-roster-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
}

.week-roster-table th,
.week-roster-table td {
  padding: .2rem;
  border: 1px solid #1f2937;
  font-size: .78rem;
  text-align: center;
  vertical-align: middle;
}

.week-roster-table th {
  background: #fff;
  color: #111827;
  font-weight: 800;
}

.week-roster-table th:first-child,
.week-roster-table td:first-child {
  width: 10%;
}

.week-roster-table th:nth-child(2),
.week-roster-table td:nth-child(2) {
  width: 11%;
}

.week-roster-table th:nth-child(n + 3),
.week-roster-table td:nth-child(n + 3) {
  width: calc(79% / 7);
}

.week-roster-table .role-cell {
  background: #93c47d;
  color: #111827;
  font-weight: 700;
  text-align: left;
}

.week-roster-table .name-cell {
  background: #d9d9d9;
  color: #111827;
  text-align: left;
}

.week-roster-table .name-cell small {
  display: block;
  margin-top: .15rem;
  color: #375070;
  font-size: .68rem;
}

.week-roster-table .support-row .role-cell {
  background: #fff;
  font-weight: 500;
}

.week-roster-table .support-row .name-cell {
  background: #fff;
}

.week-cell-form {
  display: grid;
  gap: .18rem;
}

.week-cell-form input,
.week-cell-form select {
  min-height: 1.7rem;
  padding: .2rem .25rem;
  border: 1px solid rgba(0, 0, 0, .22);
  border-radius: 4px;
  background: rgba(255, 255, 255, .72);
  color: var(--shift-text, #000);
  font-size: .76rem;
  font-weight: 800;
  text-align: center;
}

.week-cell-form input[type="color"] {
  width: 2.25rem !important;
  min-width: 2.25rem;
  height: 2.25rem;
  min-height: 2.25rem !important;
  justify-self: center;
  padding: .15rem !important;
}

.week-cell-form button {
  min-height: 1.45rem;
  padding: .1rem .2rem;
  font-size: .66rem;
}

.week-shift-value {
  width: 100%;
  display: block;
  padding: .28rem .15rem;
  background: transparent;
  color: var(--shift-text, #000);
  font-weight: 800;
  text-align: center;
}

.week-shift-button {
  width: 100%;
  min-height: 2rem;
  padding: .25rem .15rem;
  border: 1px solid rgba(0, 0, 0, .14);
  border-radius: 4px;
  background: transparent;
  color: var(--shift-text, #000);
  font-size: .78rem;
  font-weight: 800;
  text-align: center;
}

.week-shift-button:hover,
.week-shift-button:focus-visible {
  outline: 2px solid rgba(0, 112, 192, .35);
  outline-offset: -2px;
}

.hidden-shift-form {
  display: none;
}

.shift-context-menu {
  position: fixed;
  z-index: 1450;
  min-width: 190px;
  max-height: min(420px, calc(100vh - 16px));
  max-height: min(420px, calc(100dvh - 16px));
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
  padding: .35rem;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .22);
}

[data-shift-cell] {
  touch-action: manipulation;
  -webkit-user-select: none;
  user-select: none;
}

.shift-context-menu button {
  width: 100%;
  min-height: 2.1rem;
  display: flex;
  align-items: center;
  gap: .45rem;
  padding: .3rem .45rem;
  border-radius: 4px;
  background: transparent;
  color: #111827;
  text-align: left;
  touch-action: pan-y;
}

.shift-context-menu button:hover {
  background: #eef6fb;
}

.shift-context-menu .clear-shift-option {
  margin-bottom: .25rem;
  border-bottom: 1px solid var(--border);
  border-radius: 4px 4px 0 0;
  color: #b91c1c;
  font-weight: 800;
}

.shift-context-menu .clear-shift-option:hover {
  background: #fff4f4;
}

.template-swatch {
  width: 1.45rem;
  height: 1.45rem;
  display: inline-grid;
  place-items: center;
  border: 1px solid rgba(0, 0, 0, .25);
  border-radius: 4px;
  font-size: .65rem;
  font-weight: 800;
}

.clear-swatch {
  background: #fff;
  color: #b91c1c;
}

.row-delete-form {
  margin-top: .25rem;
}

.row-standard-form {
  margin-top: .35rem;
}

.row-standard-form button {
  min-height: 1.55rem;
  padding: .18rem .42rem;
  background: #eaf5ff;
  color: var(--brand);
  border: 1px solid #b8dfff;
  border-radius: 5px;
  font-size: .62rem;
  font-weight: 800;
}

.row-delete-form button {
  min-height: 1.45rem;
  padding: .15rem .35rem;
  background: #b91c1c;
  font-size: .62rem;
}

.shift-template-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: .65rem;
  align-items: end;
  padding-top: .85rem;
  border-top: 1px solid var(--border);
}

.shift-template-form input,
.shift-template-form select {
  width: 100%;
}

.template-form.beheer-shift-template-form {
  grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) auto auto minmax(220px, .9fr);
  padding-top: 0;
  border-top: 0;
}

.schedule-edit-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 420px);
  gap: .9rem;
  align-items: stretch;
  padding-top: .85rem;
  border-top: 1px solid var(--border);
}

.schedule-edit-forms {
  display: grid;
  gap: .65rem;
}

.schedule-edit-panel .shift-template-form {
  padding-top: 0;
  border-top: 0;
}

.week-notes-form {
  display: grid;
  gap: .6rem;
  align-content: start;
  padding: .75rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fbfdff;
}

.week-notes-form textarea {
  width: 100%;
  min-height: 7.5rem;
  resize: vertical;
  line-height: 1.35;
}

.week-notes-form button {
  justify-self: end;
}

.excel-shift-table {
  border-collapse: separate;
  border-spacing: 0;
}

.excel-shift-table th {
  position: sticky;
  top: 0;
  z-index: 5;
  background: #eef6fb;
  color: var(--primary-dark);
  text-align: center;
}

.excel-shift-table th:first-child,
.excel-shift-table td:first-child {
  position: sticky;
  left: 0;
  z-index: 4;
  width: 125px;
  background: #fff;
}

.excel-shift-table th:nth-child(2),
.excel-shift-table td:nth-child(2) {
  position: sticky;
  left: 125px;
  z-index: 4;
  width: 165px;
  background: #fff;
  box-shadow: 1px 0 0 var(--border);
}

.excel-shift-table th:first-child,
.excel-shift-table th:nth-child(2) {
  z-index: 8;
  background: #eef6fb;
}

.excel-shift-table td {
  min-width: 145px;
  height: 70px;
  background: #fff;
}

.shift-table small {
  display: block;
  margin-top: .2rem;
  color: var(--muted);
  font-size: .72rem;
}

.shift-cell-form {
  display: grid;
  gap: .3rem;
}

.excel-shift-cell {
  background: color-mix(in srgb, var(--shift-fill) 55%, white) !important;
  position: relative;
}

.excel-shift-cell.dirty,
.pending-sync-cell {
  box-shadow: inset 0 0 0 2px #f59e0b;
}

.sync-pill {
  position: absolute;
  right: .2rem;
  bottom: .15rem;
  padding: .05rem .28rem;
  border-radius: 999px;
  background: rgba(245, 158, 11, .95);
  color: #111827;
  font-size: .58rem;
  font-weight: 900;
  line-height: 1.2;
  text-transform: uppercase;
}

.mobile-week-overview {
  display: none;
}

.mobile-week-header,
.mobile-week-row {
  display: none;
}

.excel-cell-form {
  height: 100%;
}

.shift-cell-form input {
  min-height: 2rem;
  padding: .35rem .45rem;
}

.excel-cell-form input {
  height: 2.35rem;
  border-color: rgba(0, 0, 0, .14);
  background: rgba(255, 255, 255, .82);
  font-weight: 700;
  text-align: center;
}

.shift-cell-form button {
  min-height: 1.9rem;
  padding: .25rem .45rem;
  font-size: .78rem;
}

.shift-value {
  display: inline-block;
  min-width: 5rem;
  padding: .3rem .45rem;
  border-radius: var(--border-radius);
  background: #eef6fb;
  color: var(--primary-dark);
  font-weight: 700;
}

.excel-shift-value {
  width: 100%;
  min-height: 2.4rem;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, .72);
  color: #111827;
  text-align: center;
}

.schedule-legend {
  display: flex;
  flex-wrap: wrap;
  gap: .7rem;
  margin-bottom: .75rem;
  color: var(--muted);
  font-size: .84rem;
}

.schedule-legend span {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
}

.legend-dot {
  width: .75rem;
  height: .75rem;
  display: inline-block;
  border-radius: 50%;
}

.legend-dot.work {
  background: var(--primary);
}

.legend-dot.off {
  background: #d1d5db;
}

.legend-dot.dirty {
  background: #f59e0b;
}

table {
  width: 100%;
  border-collapse: collapse;
}

th,
td {
  padding: .55rem;
  border: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
  font-size: .86rem;
}

th {
  background: #f4f4f4;
  color: var(--text-color);
}

pre {
  max-width: 56rem;
  white-space: pre-wrap;
  font-size: .78rem;
}

.floating-add {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  width: 46px;
  height: 46px;
  display: none;
  place-items: center;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
  font-size: 1.8rem;
  font-weight: 700;
  text-decoration: none;
  z-index: 500;
}

@media (max-width: 1024px) {
  html {
    font-size: 15px;
  }

  .toolbar-card,
  .planner-layout {
    grid-template-columns: 1fr;
  }

  .toolbar-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .week-board {
    grid-template-columns: repeat(7, 220px);
  }
}

@media (min-width: 1180px) {
  body:has(.planner-shell) .container,
  body:has(.planner-shell) .flash-stack {
    width: min(1380px, 100%);
  }
}

@media (max-width: 768px) {
  html {
    font-size: 14px;
  }

  header h1 {
    font-size: 1.05rem;
  }

  .logout-form span {
    display: none;
  }

  .notification-toggle {
    margin-left: auto;
  }

  .container {
    width: 100%;
    max-width: 100vw;
    padding: 0 .75rem;
    overflow-x: clip;
  }

  .toolbar-form,
  .template-form,
  .seller-form,
  .shift-template-form,
  .template-form.beheer-shift-template-form,
  .schedule-edit-panel,
  .beheer-save-card,
  .evidence-task-card,
  .evidence-proof-form,
  .log-preview-grid,
  .notification-item,
  .verify-form,
  .suggestion-item {
    grid-template-columns: 1fr;
  }

  .toolbar-form .button,
  .toolbar-form button,
  .evidence-proof-form button {
    width: 100%;
  }

  .week-notes-form button {
    width: 100%;
    justify-self: stretch;
  }

  .status-form {
    max-width: none;
  }

  .attachment-tile {
    width: calc(50% - .3rem);
  }

  .summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .suggestion-card,
  .sellers-card,
  .logs-preview-card {
    display: none;
  }

  .primary-week-card {
    padding: .65rem;
  }

  .primary-week-card .section-title {
    display: grid;
    grid-template-columns: 1fr;
    gap: .25rem;
  }

  .primary-week-card .section-title h2 {
    font-size: 1.05rem;
    line-height: 1.1;
  }

  .week-roster-box {
    border-radius: 6px;
    overflow: hidden;
  }

  .week-roster-title {
    padding: .55rem .45rem;
    gap: .35rem;
  }

  .week-roster-title strong {
    font-size: 1.05rem;
  }

  .week-roster-title span {
    font-size: .68rem;
  }

  .week-roster-band {
    padding: .24rem;
    font-size: .78rem;
  }

  .week-roster-table {
    display: none;
  }

  .mobile-week-overview {
    display: grid;
    gap: 0;
    background: #1f2937;
    border-top: 1px solid #1f2937;
  }

  .mobile-week-header,
  .mobile-week-row {
    display: grid;
    grid-template-columns: minmax(62px, .95fr) repeat(7, minmax(0, 1fr));
  }

  .mobile-week-header > span {
    display: grid;
    min-width: 0;
    padding: .24rem .1rem;
    border-right: 1px solid #1f2937;
    background: #fff;
    color: #111827;
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.05;
    text-align: center;
  }

  .mobile-week-header > span:first-child {
    text-align: left;
    align-content: center;
    padding-left: .3rem;
  }

  .mobile-week-header small {
    color: #4b5563;
    font-size: .56rem;
    font-weight: 800;
  }

  .mobile-week-row {
    min-height: 2.08rem;
    border-top: 1px solid #1f2937;
  }

  .mobile-person-cell {
    min-width: 0;
    padding: .18rem .2rem;
    border-right: 1px solid #1f2937;
    background: #d9d9d9;
    color: #111827;
    line-height: 1.05;
  }

  .mobile-week-row.support-row .mobile-person-cell {
    background: #fff;
  }

  .mobile-person-cell strong,
  .mobile-person-cell span {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .mobile-person-cell strong {
    font-size: clamp(.56rem, 1.8vw, .66rem);
    font-weight: 900;
  }

  .mobile-person-cell span {
    margin-top: .1rem;
    color: #31506d;
    font-size: clamp(.47rem, 1.5vw, .55rem);
    font-weight: 800;
    text-transform: lowercase;
  }

  .mobile-standard-form {
    margin-top: .18rem;
  }

  .mobile-standard-form button {
    min-height: 24px;
    padding: .06rem .22rem;
    font-size: clamp(.62rem, 1.7vw, .72rem);
  }

  .mobile-shift-cell {
    position: relative;
    min-width: 0;
    min-height: 2.08rem;
    display: grid;
    place-items: center;
    padding: .12rem;
    border-right: 1px solid #1f2937;
    background: color-mix(in srgb, var(--shift-fill) 62%, white);
    color: var(--shift-text);
  }

  .mobile-shift-button,
  .mobile-shift-value {
    width: 100%;
    min-width: 0;
    min-height: 24px;
    display: grid;
    place-items: center;
    padding: .08rem .05rem;
    border: 1px solid rgba(0, 0, 0, .12);
    border-radius: 5px;
    background: color-mix(in srgb, var(--shift-fill) 82%, white);
    color: var(--shift-text, #000);
    font-size: clamp(.62rem, 1.9vw, .76rem);
    font-weight: 900;
    line-height: 1.05;
    text-align: center;
    white-space: normal;
    word-break: keep-all;
  }

  .mobile-shift-button {
    cursor: pointer;
  }

  .mobile-shift-value.muted {
    color: #64748b;
  }

  .mobile-shift-cell .sync-pill {
    right: .1rem;
    bottom: .05rem;
    font-size: .45rem;
  }

  .sheet-source-row {
    display: grid;
    grid-template-columns: 1fr;
    gap: .5rem;
  }

  .schedule-scroll {
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .day-target-grid {
    grid-template-columns: 1fr;
  }

  .numeric-target-form {
    grid-template-columns: 1fr;
  }

  .numeric-target-form button {
    width: 100%;
  }

  .day-target-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .day-target-form .target-focus-input,
  .day-target-form button {
    grid-column: 1 / -1;
  }

  .desktop-schedule {
    --schedule-time-width: 64px;
    --schedule-head-height: 36px;
    --schedule-hour-height: 72px;
    --schedule-seller-min: 168px;
  }

  .desktop-schedule.has-sales-targets {
    --schedule-seller-min: 168px;
  }

  .desktop-schedule:not(.single-seller-view) {
    grid-template-columns: var(--schedule-time-width) repeat(var(--visible-seller-count, var(--seller-count, 8)), minmax(var(--schedule-seller-min), 1fr));
    width: max(100%, calc(var(--schedule-time-width) + (var(--visible-seller-count, var(--seller-count, 8)) * var(--schedule-seller-min))));
    min-width: max(100%, calc(var(--schedule-time-width) + (var(--visible-seller-count, var(--seller-count, 8)) * var(--schedule-seller-min))));
  }

  .desktop-schedule.single-seller-view {
    --schedule-time-width: 64px;
    grid-template-columns: var(--schedule-time-width) minmax(0, 1fr);
    min-width: 100%;
    width: 100%;
  }

  .seller-head {
    font-size: .66rem;
  }

  .time-cell::after {
    right: .45rem;
    font-size: .64rem;
  }

  .task-block {
    --lane-inset: .18rem;
    --lane-gap: 4px;
    height: max(38px, calc((var(--duration) / 60) * var(--schedule-hour-height) - 4px));
    padding: .32rem .34rem;
  }

  .task-block strong {
    font-size: .72rem;
  }

  .task-block span,
  .task-block small {
    font-size: .62rem;
    line-height: 1.08;
  }

  .single-seller-view .task-block {
    --lane-inset: .35rem;
    --lane-gap: 6px;
    padding: .42rem .5rem;
  }

  .single-seller-view .task-block strong {
    font-size: .82rem;
    white-space: normal;
    overflow-wrap: anywhere;
  }

  .single-seller-view .task-block span,
  .single-seller-view .task-block small {
    font-size: .68rem;
  }

  .schedule-view-toolbar {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .schedule-view-controls {
    justify-content: stretch;
  }

  .schedule-view-controls button {
    flex: 1 1 7rem;
  }

  .schedule-view-controls label {
    flex: 1 1 100%;
  }

  .day-responsibility-card,
  .day-responsibility-form {
    grid-template-columns: 1fr;
  }

  .day-responsibility-list {
    display: grid;
    grid-template-columns: 1fr;
  }

  .responsibility-pill {
    width: 100%;
  }

  .day-responsibility-form button,
  .numeric-target-actions button {
    width: 100%;
  }

  .mobile-task-list {
    display: none;
  }

  .mobile-task-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(108px, 128px);
    gap: .75rem;
    align-items: center;
    padding: .8rem;
    border: 1px solid var(--border);
    border-left: 5px solid var(--task-color);
    border-radius: var(--border-radius);
    background: #fafafa;
  }

  .mobile-task-card h3 {
    margin: .2rem 0;
    font-size: 1rem;
  }

  .mobile-task-card p {
    color: var(--muted);
    font-size: .86rem;
  }

  .mobile-task-card.hidden-by-seller {
    display: none;
  }

  .floating-add {
    display: grid;
  }

  .seller-edit-form,
  .seller-chips,
  .shift-template-form,
  .function-form {
    grid-template-columns: 1fr;
  }

  .function-list {
    grid-template-columns: 1fr;
  }

  .beheer-save-card {
    grid-template-columns: 1fr;
  }

  .beheer-save-card button,
  .seller-edit-form button,
  .seller-chip-row > form:not(.seller-edit-form),
  .seller-chip-row > form:not(.seller-edit-form) button {
    width: 100%;
  }

  .modal-backdrop {
    align-items: flex-end;
    max-height: 100dvh;
    padding: .75rem;
    padding-bottom: max(.75rem, env(safe-area-inset-bottom, 0px));
  }

  .task-modal {
    width: 100%;
    max-height: calc(100dvh - 1.5rem - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px));
    border-radius: 12px 12px 8px 8px;
  }

  .modal-header {
    min-height: 76px;
    padding: .95rem 1rem;
  }

  .icon-close {
    width: 44px;
    min-height: 44px;
  }

  .mobile-time-controls {
    display: grid;
  }

  .repeat-task-panel {
    grid-template-columns: 1fr;
  }

  .bulk-approve-bar {
    grid-template-columns: 1fr;
    top: calc(58px + env(safe-area-inset-top, 0px) + .5rem);
  }

  .draggable-task .task-resize-handle {
    opacity: .7;
    height: 14px;
  }
}

@media (max-width: 480px) {
  header {
    min-height: calc(58px + env(safe-area-inset-top, 0px));
    padding: calc(.55rem + env(safe-area-inset-top, 0px)) calc(.75rem + env(safe-area-inset-right, 0px)) .55rem calc(.75rem + env(safe-area-inset-left, 0px));
    align-items: flex-end;
    flex-wrap: wrap;
    gap: .45rem;
  }

  .menu-btn {
    align-self: flex-end;
    order: 1;
  }

  header img {
    order: 2;
    width: 68px;
    height: 34px;
  }

  header h1,
  .theme-switcher {
    display: none;
  }

  .header-clock {
    order: 3;
    flex: 1 1 auto;
    max-width: none;
    min-width: 7.2rem;
    padding: .28rem .42rem;
    overflow: hidden;
    color: var(--header-text);
    font-size: .78rem;
    text-align: center;
    text-overflow: clip;
  }

  .header-clock::after {
    content: none;
  }

  .notification-toggle,
  .logout-form {
    margin-left: 0;
  }

  .notification-toggle {
    order: 4;
    flex: 1 1 calc(50% - .25rem);
  }

  .logout-form {
    order: 5;
    flex: 1 1 calc(50% - .25rem);
  }

  .logout-form button {
    width: 100%;
  }

  .card {
    padding: .85rem;
  }

  .form-row,
  .modal-task-form,
  .mobile-task-card,
  .mobile-verify,
  .proof-form,
  .break-inline-form,
  .pause-plan-form,
  .seller-chip-row {
    grid-template-columns: 1fr;
  }

  .break-request-panel,
  .break-item,
  .pause-person-head,
  .pause-actions,
  .break-correction-panel form {
    align-items: stretch;
    grid-template-columns: 1fr;
  }

  .pause-actions > form:not(.break-start-form) {
    justify-self: stretch;
  }

  .modal-actions {
    display: grid;
    grid-template-columns: 1fr;
    position: sticky;
    bottom: 0;
    margin: 0 -1.1rem -1.1rem;
    padding: .8rem 1.1rem calc(.8rem + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--border);
    background: var(--card-bg);
  }

  .mobile-time-controls {
    display: grid;
  }

  .mobile-time-grid {
    grid-template-columns: 1fr;
  }
}

.side-roles-card .side-role-assignments {
  margin-top: 16px;
}

.side-role-assignment {
  align-items: flex-start;
  gap: 12px;
}

.side-role-checks {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  flex: 1;
}

.side-role-checks label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.9rem;
  color: #1f2937;
}

.approval-list {
  display: grid;
  gap: 12px;
}

@media (max-width: 720px) {
  .side-role-assignment,
  .side-role-checks,
  .session-row,
  .approval-list .verify-form {
    display: grid;
    grid-template-columns: 1fr;
  }
}

.log-filter-form {
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  align-items: end;
}

.log-filter-form .button,
.log-filter-form button {
  min-height: 38px;
}

@media (max-width: 720px) {
  .log-filter-form {
    grid-template-columns: 1fr;
  }
}

.theme-switcher {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  color: var(--header-text);
  font-size: .86rem;
  font-weight: 700;
}

.theme-switcher select {
  width: auto;
  min-height: 2rem;
  padding: .3rem 1.7rem .3rem .55rem;
  border-color: rgba(255, 255, 255, .35);
  background-color: rgba(0, 0, 0, .12);
  color: #fff;
}

.theme-switcher option {
  background: #ffffff !important;
  color: #111827 !important;
}

html.dark .theme-switcher select:focus,
html.dark .theme-switcher select:focus-visible {
  background-color: #ffffff;
  color: #111827;
}

html.dark .theme-switcher option {
  background: #ffffff !important;
  color: #111827 !important;
}

html.dark body,
html.dark .card,
html.dark .task-modal,
html.dark .date-picker-popover,
html.dark .context-menu,
html.dark .shift-context-menu,
html.dark .color-picker-popover,
html.dark .sidebar {
  background-color: var(--card-bg);
  color: var(--text-color);
}

html.dark body {
  background: var(--background);
}

html.dark header {
  background: #052f52;
}

html.dark header img {
  background: #ffffff;
}

html.dark .header-clock,
html.dark .menu-btn,
html.dark header h1,
html.dark .theme-switcher {
  color: #ffffff;
}

html.dark .header-clock {
  border-color: rgba(255, 255, 255, .36);
  background: rgba(255, 255, 255, .18);
}

html.dark .card,
html.dark .template-item,
html.dark .seller-chip-row,
html.dark .function-row,
html.dark .session-row,
html.dark .notification-item,
html.dark .suggestion-item,
html.dark .mobile-task-card,
html.dark .evidence-task-card,
html.dark .attachment-tile,
html.dark .break-request-panel,
html.dark .break-item,
html.dark .pause-person-card,
html.dark .schedule-scroll,
html.dark .desktop-schedule,
html.dark .schedule-edit-panel,
html.dark .week-notes-form,
html.dark .excel-shell,
html.dark .live-sheet-card,
html.dark .schedule-source-card {
  background: var(--card-bg);
  border-color: var(--border);
  color: var(--text-color);
}

html.dark .summary-grid div,
html.dark .seller-head,
html.dark .seller-lane,
html.dark .grid-hour,
html.dark .readonly-hour,
html.dark .template-edit-form,
html.dark .toolbar-card,
html.dark .mobile-week-card,
html.dark .mobile-week-header > span,
html.dark .mobile-person-cell,
html.dark .week-row,
html.dark .attachment-tile span,
html.dark .log-preview-grid p,
html.dark .date-picker-day,
html.dark .shift-cell-form input,
html.dark .excel-cell-form input {
  background: var(--surface-soft);
  color: var(--text-color);
  border-color: var(--border);
}

html.dark .time-cell {
  background: var(--surface-soft);
  border-color: var(--border);
  color: #d8e8f7;
}

html.dark .grid-hour {
  border-color: var(--border);
  background-image:
    linear-gradient(
      to bottom,
      transparent 0 calc(50% - .5px),
      rgba(148, 163, 184, .28) calc(50% - .5px) calc(50% + .5px),
      transparent calc(50% + .5px) 100%
    );
}

html.dark .time-cell::after {
  color: #8fb0c8;
}

html.dark .current-time-line {
  border-top-color: #fb7185;
}

html.dark .current-time-line span {
  background: #fb7185;
  color: #0b1220;
}

html.dark .schedule-scroll::-webkit-scrollbar-track {
  background: #0a1824;
}

html.dark .schedule-scroll::-webkit-scrollbar-thumb {
  background: #36566d;
}

html.dark label {
  color: #d8e8f7;
}

html.dark input,
html.dark select,
html.dark textarea {
  background: var(--input-bg);
  border-color: var(--border);
  color: var(--text-color);
}

html.dark input::placeholder,
html.dark textarea::placeholder {
  color: #8fa7bc;
}

html.dark .date-picker-nav,
html.dark .date-picker-day:hover,
html.dark .date-picker-day.is-today {
  background: var(--surface-tint);
  color: #b9e2ff;
}

html.dark .date-picker-day.is-selected {
  background: var(--primary);
  color: #ffffff;
}

html.dark .date-picker-day.outside-month {
  color: #8fa7bc;
}

html.dark .shift-context-menu button {
  color: var(--text-color);
}

html.dark .shift-context-menu button:hover {
  background: var(--surface-tint);
}

html.dark .shift-context-menu .clear-shift-option {
  color: #ffb4b4;
}

html.dark .shift-context-menu .clear-shift-option:hover {
  background: #3a1118;
}

html.dark .week-roster-toolbar {
  border-color: var(--border);
  background: var(--surface-tint);
  color: var(--text-color);
}

html.dark .week-roster-toolbar output {
  color: var(--muted);
}

html.dark .week-roster-reset {
  border-color: var(--border);
  background: var(--card-bg);
  color: var(--text-color);
}

html.dark .week-roster-reset:disabled {
  opacity: .55;
}

html.dark .button.secondary,
html.dark button.secondary,
html.dark .notification-toggle,
html.dark .attachment-link,
html.dark .date-picker-action {
  background: var(--surface-tint);
  color: #b9e2ff;
}

html.dark .button.secondary:hover,
html.dark .button.secondary:focus-visible,
html.dark button.secondary:hover,
html.dark button.secondary:focus-visible {
  background: color-mix(in srgb, var(--primary) 24%, var(--card-bg));
  color: #d8efff;
}

html.dark .task-attachment-chip {
  background: rgba(14, 165, 233, .18);
  color: #bae6fd;
}

html.dark button.danger,
html.dark .danger {
  background: #3a1118;
  color: #ffb4b4;
}

html.dark .muted,
html.dark small,
html.dark .section-title span,
html.dark .evidence-task-main p,
html.dark .mobile-task-card p {
  color: var(--muted);
}

html.dark table,
html.dark th,
html.dark td {
  border-color: var(--border);
}

html.dark .table-scroll table {
  background: var(--card-bg);
  color: var(--text-color);
}

html.dark .table-scroll tbody tr,
html.dark .table-scroll tbody td {
  background: var(--card-bg);
  color: var(--text-color);
}

html.dark th {
  background: #102f47;
  color: #eef6ff;
}

html.dark tr:nth-child(even),
html.dark .table-scroll tbody tr:nth-child(even) {
  background: var(--surface-soft);
}

html.dark .table-scroll tbody tr:nth-child(even) td {
  background: var(--surface-soft);
}

html.dark .flash-success {
  background: #08351d;
  color: #a7f3c1;
}

html.dark .flash-error {
  background: #3a1118;
  color: #ffb4b4;
}

html.dark .notice.warning,
html.dark .flash-warning {
  border-left-color: var(--warning-color);
  background: #3a2808;
  color: #fde68a;
}

html.dark .modal-backdrop,
html.dark .scrim,
html.dark .page-loading-overlay {
  background: rgba(0, 0, 0, .62);
}

html.dark .modal-header {
  background: linear-gradient(180deg, #102f47 0%, #0f1f2d 100%);
  border-color: var(--border);
}

html.dark .modal-header h2,
html.dark .modal-kicker {
  color: #eef6ff;
}

html.dark .icon-close {
  border-color: #8fb9d6;
  background: #07131f;
  color: #ffffff;
}

html.dark .icon-close:hover,
html.dark .icon-close:focus-visible {
  background: #123a56;
  color: #ffffff;
}

html.dark .inline-template-save {
  background: var(--surface-soft);
  border-color: var(--border);
  color: var(--text-color);
}

html.dark .mobile-time-controls {
  background: var(--surface-soft);
  border-color: var(--border);
}

html.dark .mobile-time-head span {
  color: #7dd3fc;
}

html.dark .bulk-approve-bar {
  background: color-mix(in srgb, #22c55e 14%, var(--card-bg));
  border-color: color-mix(in srgb, #22c55e 48%, var(--border));
}

html.dark .bulk-approve-bar strong {
  color: #86efac;
}

html.dark .modal-actions {
  background: var(--card-bg);
  border-color: var(--border);
}

html.dark .task-block,
html.dark .mobile-status,
html.dark .status-dot {
  color: #07131f;
}

html.dark .task-hover-tooltip {
  background: #0f2638;
  border-color: #38bdf8;
  color: #f8fbff;
  box-shadow: 0 18px 45px rgba(0, 0, 0, .42);
}

html.dark .task-block[data-task-tooltip]:hover::after,
html.dark .task-block[data-task-tooltip]:focus-visible::after {
  background: #0f2638;
  border-color: #38bdf8;
  color: #f8fbff;
  box-shadow: 0 18px 45px rgba(0, 0, 0, .42);
}

html.dark .drag-time-preview {
  background: #082c47;
  color: #dff3ff;
  border-color: #38bdf8;
  box-shadow: 0 12px 26px rgba(56, 189, 248, .18);
}

html.dark .drag-time-preview span {
  color: #9fd7f7;
}

html.dark .break-block,
html.dark .mobile-break-card {
  background: #2b210b;
  outline-color: rgba(245, 158, 11, .55);
}

html.dark .break-block strong,
html.dark .break-block span,
html.dark .break-block small,
html.dark .break-late-badge,
html.dark .break-late-line {
  color: #fbbf24;
}

html.dark .focus-break-card {
  border-color: #fbbf24;
  box-shadow: 0 0 0 3px rgba(251, 191, 36, .24), 0 12px 30px rgba(0, 0, 0, .3);
}

html.dark .break-focus-hint {
  border-color: rgba(251, 191, 36, .48);
  background: #2b210b;
}

html.dark .excel-planning-table,
html.dark .excel-planning-table th,
html.dark .excel-planning-table td {
  color: #000;
}

html.dark .excel-planning-table .row-name small {
  color: #17324a;
}

html.dark .attachment-bewijs .attachment-badge {
  background: #08351d;
  color: #a7f3c1;
}

html.dark .attachment-feedback .attachment-badge {
  background: #3a2410;
  color: #ffd19a;
}

.rack-page {
  display: grid;
  gap: 1rem;
  min-width: 0;
}

.rack-hero,
.rack-dashboard,
.rack-card-head,
.rack-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.rack-dashboard {
  display: grid;
  grid-template-columns: minmax(250px, 34%) minmax(0, 1fr);
  align-items: stretch;
  min-width: 0;
}

.rack-my-card {
  min-width: 0;
}

.rack-map-card {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}

.rack-chip-list,
.rack-assignees,
.rack-seller-picker {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}

.rack-chip,
.rack-person,
.rack-empty {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: .65rem .75rem;
  text-decoration: none;
  color: var(--text-color);
  background: var(--surface-soft);
}

.rack-chip {
  display: grid;
  min-width: 150px;
  border-left: 6px solid var(--rack-color, var(--primary));
}

.rack-chip strong {
  color: var(--rack-color, var(--primary));
}

.rack-task-list {
  display: grid;
  gap: .4rem;
  margin-top: .7rem;
  padding-top: .65rem;
  border-top: 1px solid var(--border);
}

.rack-task-list > strong {
  color: var(--text-color);
  font-size: .82rem;
}

.rack-task-list a {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .15rem .5rem;
  padding: .45rem .55rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--text-color);
  text-decoration: none;
}

.rack-task-list span,
.rack-task-list small {
  color: var(--muted);
  font-size: .74rem;
  font-weight: 800;
}

.rack-task-list b {
  min-width: 0;
  overflow: visible;
  overflow-wrap: anywhere;
  white-space: normal;
}

.rack-task-list small {
  grid-column: 1 / -1;
}

.rack-map-hint {
  margin: -.25rem 0 .65rem;
  color: var(--muted);
  font-weight: 700;
}

.rack-pdf-frame {
  --rack-map-width: 100%;
  --rack-map-aspect: 2382 / 1684;
  position: relative;
  width: 100%;
  max-width: 100%;
  height: auto;
  min-height: 0;
  aspect-ratio: var(--rack-map-aspect);
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  overscroll-behavior: contain;
}

.rack-pdf-scroll {
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: #fff;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-x pan-y;
}

.rack-map-canvas {
  position: relative;
  width: var(--rack-map-width);
  min-width: 100%;
  height: auto;
  aspect-ratio: var(--rack-map-aspect);
  background: #fff;
}

.rack-map-image,
.rack-map-fallback,
.rack-map-overlay {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.rack-map-image {
  display: block;
  object-fit: fill;
  user-select: none;
  -webkit-user-drag: none;
}

.rack-map-fallback {
  border: 0;
  display: block;
  pointer-events: none;
}

.rack-map-overlay {
  z-index: 2;
  pointer-events: none;
}

.rack-pdf-frame.placing .rack-map-overlay {
  cursor: crosshair;
  pointer-events: auto;
  background: color-mix(in srgb, var(--primary) 8%, transparent);
  outline: 3px solid color-mix(in srgb, var(--primary) 70%, #fff);
  outline-offset: -6px;
}

.rack-map-badge {
  position: absolute;
  left: var(--x, 50%);
  top: var(--y, 50%);
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  max-width: 112px;
  min-height: 32px;
  padding: .35rem .55rem;
  border: 2px solid #fff;
  border-radius: 999px;
  background: var(--rack-color, var(--primary));
  color: #fff;
  font-weight: 900;
  font-size: .82rem;
  line-height: 1;
  overflow: hidden;
  text-decoration: none;
  text-overflow: ellipsis;
  white-space: nowrap;
  box-shadow: 0 8px 22px rgba(15, 23, 42, .28);
  pointer-events: auto;
  touch-action: manipulation;
}

.rack-map-badge.draggable {
  cursor: grab;
  touch-action: none;
  user-select: none;
}

.rack-pdf-frame.rack-map-readonly .rack-map-badge {
  cursor: pointer;
  touch-action: manipulation;
}

.rack-map-badge.dragging {
  cursor: grabbing;
  z-index: 5;
  transform: translate(-50%, -50%) scale(1.08);
  box-shadow: 0 14px 34px rgba(15, 23, 42, .42);
}

.rack-map-badge.saving::after {
  content: "";
  position: absolute;
  inset: -5px;
  border: 2px solid rgba(255, 255, 255, .75);
  border-radius: inherit;
  animation: rackBadgeSaving .8s linear infinite;
}

.rack-map-badge.mine {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--rack-color, var(--primary)) 28%, transparent), 0 12px 30px rgba(15, 23, 42, .34);
}

.rack-map-badge.just-placed {
  animation: rackBadgePulse .85s ease-out;
}

.rack-map-badge-copy {
  border-style: dashed;
}

.rack-label-menu,
.rack-label-tooltip {
  position: fixed;
  z-index: 3000;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
  color: var(--text-color);
  box-shadow: 0 18px 44px rgba(15, 23, 42, .28);
}

.rack-label-menu {
  display: grid;
  gap: .35rem;
  min-width: 180px;
  padding: .55rem;
}

.rack-label-menu[hidden],
.rack-label-tooltip[hidden] {
  display: none;
}

.rack-label-menu strong {
  padding: .2rem .35rem .35rem;
  font-size: .86rem;
}

.rack-label-menu button {
  width: 100%;
  justify-content: flex-start;
  padding: .55rem .65rem;
  background: var(--surface-soft);
  color: var(--text-color);
  border: 1px solid var(--border);
}

.rack-label-menu button:hover {
  background: color-mix(in srgb, var(--primary) 12%, var(--surface-soft));
}

.rack-label-tooltip {
  display: grid;
  gap: .25rem;
  max-width: min(280px, calc(100vw - 24px));
  padding: .7rem .8rem;
  pointer-events: none;
  font-size: .88rem;
}

.rack-label-tooltip strong {
  color: var(--primary);
}

.rack-label-tooltip span {
  color: var(--muted);
}

@keyframes rackBadgePulse {
  0% { transform: translate(-50%, -50%) scale(.78); }
  65% { transform: translate(-50%, -50%) scale(1.18); }
  100% { transform: translate(-50%, -50%) scale(1); }
}

@keyframes rackBadgeSaving {
  from { transform: rotate(0deg); opacity: .95; }
  to { transform: rotate(360deg); opacity: .45; }
}

.rack-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: .9rem;
}

.rack-card {
  border: 1px solid var(--border);
  border-left: 5px solid var(--rack-color, var(--primary));
  border-radius: 8px;
  padding: 1rem;
  background: var(--card-bg);
  min-width: 0;
}

.rack-card-mine {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--rack-color, var(--primary)) 18%, transparent);
}

.rack-card-head {
  justify-content: flex-start;
}

.rack-card-head h3 {
  margin: 0;
  font-size: 1.02rem;
}

.rack-card-head p,
.rack-description {
  margin: .18rem 0 0;
  color: var(--muted);
}

.rack-code {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 54px;
  min-height: 42px;
  border-radius: 8px;
  padding: .35rem .55rem;
  font-weight: 800;
  color: #fff;
  background: var(--rack-color, var(--primary));
}

.rack-description {
  margin: .8rem 0;
}

.rack-person {
  border-left: 5px solid var(--person-color, var(--primary));
  display: inline-flex;
  flex-direction: column;
  min-width: 128px;
  font-weight: 700;
}

.rack-person small {
  font-weight: 600;
  color: var(--muted);
}

.rack-empty {
  color: var(--muted);
}

.rack-edit {
  margin-top: 1rem;
  border-top: 1px solid var(--border);
  padding-top: .85rem;
}

.rack-edit summary {
  cursor: pointer;
  font-weight: 800;
  color: var(--primary);
}

.rack-actions {
  flex-wrap: wrap;
}

.rack-actions .active {
  background: var(--warning-color);
  color: #111827;
}

.rack-form-grid,
.rack-create-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
  margin-top: .8rem;
}

.rack-create-form {
  grid-template-columns: minmax(120px, .7fr) minmax(200px, 1fr) minmax(180px, 1fr);
}

.rack-form-grid label,
.rack-create-form label {
  display: grid;
  gap: .3rem;
  font-weight: 700;
}

.rack-form-grid input[type="color"],
.rack-create-form input[type="color"] {
  width: 42px;
  height: 42px;
  padding: 0;
  border: 2px solid var(--border);
  border-radius: 999px;
  background: transparent;
  cursor: pointer;
}

.rack-form-grid input[type="color"]::-webkit-color-swatch-wrapper,
.rack-create-form input[type="color"]::-webkit-color-swatch-wrapper {
  padding: 3px;
}

.rack-form-grid input[type="color"]::-webkit-color-swatch,
.rack-create-form input[type="color"]::-webkit-color-swatch {
  border: 0;
  border-radius: 999px;
}

.rack-form-grid input[type="color"]::-moz-color-swatch,
.rack-create-form input[type="color"]::-moz-color-swatch {
  border: 0;
  border-radius: 999px;
}

.rack-wide {
  grid-column: 1 / -1;
}

.rack-seller-picker {
  margin: .8rem 0;
}

.rack-seller-picker label {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  padding: .5rem .6rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-soft);
  font-weight: 700;
}

.rack-seller-picker input {
  width: 18px;
  height: 18px;
}

.rack-seller-picker small {
  color: var(--muted);
  font-weight: 600;
}

html.dark .rack-pdf-frame {
  background: #fff;
}

html.dark .rack-map-badge {
  border-color: #f8fafc;
  color: #fff;
}

html.dark .rack-map-badge.mine {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--rack-color, var(--primary)) 38%, transparent), 0 12px 30px rgba(0, 0, 0, .5);
}

@media (max-width: 900px) {
  .rack-page {
    overflow-x: hidden;
  }

  .rack-dashboard {
    grid-template-columns: 1fr;
    align-items: stretch;
    min-width: 0;
    max-width: 100%;
  }

  .rack-hero {
    flex-direction: column;
    align-items: stretch;
    min-width: 0;
    max-width: 100%;
  }

  .rack-hero,
  .rack-my-card,
  .rack-map-card,
  .rack-list-card,
  .rack-create-card {
    width: 100%;
    max-width: 100%;
    min-width: 0;
  }

  .rack-create-form {
    grid-template-columns: 1fr;
  }

  .rack-pdf-frame {
    --rack-map-width: max(100%, 980px);
    aspect-ratio: auto;
    height: min(70vh, 620px);
    min-height: 460px;
  }

  .rack-pdf-scroll {
    overflow: auto;
  }
}

@media (max-width: 560px) {
  .rack-pdf-frame {
    --rack-map-width: 980px;
    height: min(72vh, 640px);
    min-height: 430px;
  }

  .rack-map-hint {
    font-size: .95rem;
    line-height: 1.35;
  }

  .rack-map-badge {
    min-width: clamp(24px, 8vw, 32px);
    min-height: clamp(22px, 7vw, 28px);
    max-width: 72px;
    padding: .22rem .32rem;
    border-width: 1.5px;
    font-size: clamp(.56rem, 2.25vw, .72rem);
    box-shadow: 0 4px 12px rgba(15, 23, 42, .2);
  }

  .rack-map-badge.mine {
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--rack-color, var(--primary)) 24%, transparent), 0 6px 16px rgba(15, 23, 42, .24);
  }

  .rack-grid {
    grid-template-columns: 1fr;
  }

  .rack-form-grid {
    grid-template-columns: 1fr;
  }

  .rack-card-head {
    align-items: flex-start;
  }
}

@media (max-width: 760px) {
  .theme-switcher span {
    display: none;
  }
  .theme-switcher select {
    max-width: 94px;
    font-size: .78rem;
  }
}

@media (min-width: 481px) and (max-width: 960px) {
  header {
    flex-wrap: wrap;
  }

  header h1 {
    flex: 1 1 10rem;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .notification-toggle,
  .logout-form {
    margin-left: 0;
  }
}

@media (max-width: 480px) {
  header h1,
  .theme-switcher {
    display: none !important;
  }
}

/* Tablet/mobile QA hardening: keep the planner readable and all primary
   controls reachable without changing the desktop grid layout. */
@media (min-width: 481px) and (max-width: 1100px) {
  header {
    flex-wrap: wrap;
  }

  .notification-toggle,
  .logout-form {
    margin-left: 0;
  }
}

@media (max-width: 768px) {
  .week-roster-toolbar {
    position: sticky;
    left: 0;
    justify-content: space-between;
    gap: .35rem;
    padding: .3rem .4rem;
  }

  .week-roster-toolbar label {
    gap: .3rem;
    font-size: .72rem;
  }

  .week-roster-toolbar input[type="range"] {
    width: clamp(88px, 28vw, 132px);
  }

  .week-roster-toolbar output {
    min-width: 3rem;
    font-size: .68rem;
  }

  .week-roster-reset {
    min-width: auto;
    min-height: 36px;
    padding: .2rem .45rem;
  }

  .mobile-week-overview {
    width: 100%;
    min-width: 100%;
  }

  .mobile-week-header > span:first-child,
  .mobile-person-cell {
    position: sticky;
    left: 0;
  }

  .mobile-week-header > span:first-child {
    z-index: 4;
    box-shadow: 2px 0 4px rgba(15, 23, 42, .18);
  }

  .mobile-person-cell {
    z-index: 3;
    box-shadow: 2px 0 4px rgba(15, 23, 42, .14);
  }

  .mobile-person-cell strong,
  .mobile-person-cell span,
  .mobile-week-header > span,
  .mobile-shift-button,
  .mobile-shift-value {
    font-size: max(.75rem, 12px);
  }

  .mobile-shift-button,
  .mobile-shift-value {
    min-height: 44px;
  }

  .mobile-standard-form button,
  .icon-close,
  .color-dot-button,
  .sidebar [aria-label="Sluit menu"] {
    min-width: 44px;
    min-height: 44px;
  }

  button:not(.mobile-shift-button):not(.mobile-shift-value),
  .button,
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  select {
    min-height: 44px;
  }

  #plannerPersonFocus,
  .day-responsibility-form select {
    height: 44px !important;
    min-height: 44px !important;
  }
}

@media (max-width: 1100px) {
  #plannerDatePicker {
    width: min(360px, 100vw) !important;
    padding: 6px;
  }

  #plannerDatePicker .date-picker-head {
    grid-template-columns: 44px minmax(0, 1fr) 44px;
  }

  #plannerDatePicker .date-picker-weekdays,
  #plannerDatePicker .date-picker-days {
    column-gap: 0;
  }

  #plannerDatePicker .date-picker-days {
    grid-template-rows: repeat(6, 44px);
  }

  #plannerDatePicker .date-picker-day,
  #plannerDatePicker .date-picker-actions button {
    min-height: 44px !important;
    height: 44px !important;
  }

  #plannerDatePicker .date-picker-nav {
    width: 44px;
    min-width: 44px;
    min-height: 44px !important;
    height: 44px !important;
  }
}

@media (max-width: 560px) {
  #plannerDatePicker {
    padding: 6px;
  }

  #plannerDatePicker .date-picker-head {
    grid-template-columns: 44px minmax(0, 1fr) 44px;
  }

  #plannerDatePicker .date-picker-weekdays,
  #plannerDatePicker .date-picker-days {
    column-gap: 0;
  }

  #plannerDatePicker .date-picker-days {
    grid-template-rows: repeat(6, 44px);
  }

  #plannerDatePicker .date-picker-day,
  #plannerDatePicker .date-picker-actions button {
    min-height: 44px !important;
    height: 44px !important;
  }

  #plannerDatePicker .date-picker-nav {
    width: 44px;
    min-width: 44px;
    min-height: 44px !important;
    height: 44px !important;
  }
}

@media (max-width: 360px) {
  #plannerDatePicker {
    left: 0 !important;
    width: 100vw !important;
    max-width: 100vw;
  }
}

@media (min-width: 769px) and (max-width: 1100px) {
  header button,
  header select,
  .toolbar-card button,
  .toolbar-card select,
  .toolbar-card input,
  .schedule-view-toolbar button,
  .schedule-view-toolbar select,
  .day-responsibility-form button,
  .day-responsibility-form select,
  .day-responsibility-form input {
    min-height: 44px;
  }
}

.stockscanner-page {
  width: min(1180px, 100%);
}

.stockscanner-hero {
  align-items: center;
}

.stockscanner-summary {
  min-width: min(100%, 420px);
}

.stockscanner-grid {
  display: grid;
  grid-template-columns: minmax(280px, .85fr) minmax(320px, 1.15fr);
  gap: 1rem;
  align-items: start;
}

.stockscanner-panel {
  display: grid;
  gap: .85rem;
  min-width: 0;
}

.stockscanner-form {
  display: grid;
  gap: .8rem;
}

.stockscanner-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .65rem;
}

.stockscanner-actions .secondary {
  background: var(--surface-soft);
  color: var(--primary-dark);
}

.stockscanner-hint {
  margin: 0;
}

.stockscanner-camera {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #020617;
  aspect-ratio: 4 / 3;
}

.stockscanner-camera video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.stockscanner-camera .scan-frame {
  position: absolute;
  inset: 18% 8%;
  border: 2px solid rgba(255, 255, 255, .85);
  border-radius: 10px;
  box-shadow: 0 0 0 999px rgba(0, 0, 0, .28);
  pointer-events: none;
}

.stockscanner-camera p {
  position: absolute;
  left: .75rem;
  right: .75rem;
  bottom: .65rem;
  margin: 0;
  padding: .45rem .6rem;
  border-radius: 6px;
  background: rgba(2, 6, 23, .72);
  color: #fff;
  font-size: .9rem;
  font-weight: 700;
}

.stockscanner-status {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: .8rem;
  color: var(--muted);
  background: var(--surface-soft);
}

.stock-store-list {
  display: grid;
  gap: .55rem;
}

.stock-store-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .75rem;
  align-items: center;
  min-width: 0;
  padding: .8rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--muted);
  border-radius: 8px;
  background: var(--surface-soft);
}

.stock-store-card.available {
  border-left-color: #16a34a;
}

.stock-store-card.hq {
  border-left-color: #0070c0;
}

.stock-store-card.empty {
  opacity: .78;
}

.stock-store-card strong,
.stock-store-card span {
  display: block;
}

.stock-store-card > div:first-child {
  min-width: 0;
}

.stock-store-card > div:first-child strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stock-store-card > div:first-child span {
  color: var(--muted);
  font-size: .88rem;
}

.stock-store-numbers {
  display: flex;
  gap: .45rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.stock-store-numbers span {
  min-width: 6.2rem;
  padding: .35rem .45rem;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card-bg);
  text-align: center;
  font-size: .84rem;
}

html.dark .stockscanner-actions .secondary,
html.dark .stockscanner-status,
html.dark .stock-store-card {
  background: var(--surface-soft);
  color: var(--text-color);
}

html.dark .stock-store-numbers span {
  background: #061728;
}

@media (max-width: 900px) {
  .stockscanner-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .stockscanner-actions,
  .stock-store-card {
    grid-template-columns: 1fr;
  }

  .stock-store-numbers {
    justify-content: stretch;
  }

  .stock-store-numbers span {
    flex: 1 1 7rem;
  }

  .stockscanner-camera {
    aspect-ratio: 3 / 4;
  }
}

/* Stockscanner: keep the camera and result layout aligned with stock.tbreumelke.be. */
.stockscanner-card {
  display: grid;
  gap: 1rem;
}

.stockscanner-card .input-with-button {
  display: flex;
  gap: 0;
  width: 100%;
}

.stockscanner-card .input-with-button input {
  flex: 1 1 auto;
  min-width: 0;
  border-radius: 6px 0 0 6px;
}

.stockscanner-card .input-with-button button {
  flex: 0 0 auto;
  border-radius: 0 6px 6px 0;
  white-space: nowrap;
}

.voorraad-scan-controls {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
  align-items: center;
}

.stockscanner-external {
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.btn-scan {
  padding: .55rem .8rem;
  background: var(--primary);
  color: #fff;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
  font-weight: 800;
}

.btn-scan:hover {
  background: var(--primary-dark);
}

.scan-video-frame {
  position: relative;
  width: 100%;
  height: var(--scan-frame-height, clamp(150px, 44vw, 215px));
  margin-bottom: 1rem;
  border: 3px solid var(--primary);
  border-radius: 6px;
  overflow: hidden;
  background: #000;
  contain: layout paint;
  touch-action: manipulation;
}

.scan-video-frame.hidden,
.stockscanner-card .hidden {
  display: none !important;
}

.scan-video-frame .video-preview,
.scan-video-frame > #voorraadScanVideo.video-preview {
  position: absolute;
  inset: 0;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  object-fit: cover !important;
  object-position: center center !important;
  background: #000;
}

.scan-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

.scan-box {
  position: absolute;
  inset: 0;
  border: 0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,.22) 0%,
    rgba(0,0,0,.22) 24%,
    rgba(0,0,0,0) 24%,
    rgba(0,0,0,0) 76%,
    rgba(0,0,0,.22) 76%,
    rgba(0,0,0,.22) 100%
  );
  box-shadow: inset 0 0 0 3px #20a4ff, inset 0 0 0 5px rgba(255,255,255,.35);
}

.scan-box::before {
  content: "";
  position: absolute;
  left: 8px;
  right: 8px;
  top: 24%;
  bottom: 24%;
  border: 2px solid rgba(255,255,255,.65);
  border-radius: 10px;
}

.scan-box::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 7%;
  height: 2px;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(32,164,255,.95);
  box-shadow: 0 0 8px rgba(32,164,255,.65);
  animation: sweep 1.35s linear infinite;
}

.scan-hint {
  position: absolute;
  left: 50%;
  top: .45rem;
  transform: translateX(-50%);
  z-index: 3;
  width: max-content;
  max-width: 90%;
  padding: .35rem .6rem;
  border-radius: 999px;
  background: rgba(0,0,0,.68);
  color: #fff;
  font-size: .85rem;
  font-weight: 700;
  line-height: 1.2;
}

.scan-status {
  display: none;
}

@keyframes sweep {
  0% { top: 35%; }
  50% { top: 65%; }
  100% { top: 35%; }
}

.stock-product-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: .9rem;
  align-items: center;
  padding: .85rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--primary);
  border-radius: 8px;
  background: var(--surface-soft);
}

.stock-product-card img {
  width: 72px;
  height: 72px;
  object-fit: contain;
  background: #fff;
  border-radius: 6px;
  border: 1px solid var(--border);
}

.stock-product-card strong,
.stock-product-card span {
  display: block;
}

.stock-product-card span {
  color: var(--muted);
  font-size: .9rem;
}

.prijs-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(130px, 220px);
  gap: 1rem;
  align-items: start;
  padding: 1rem;
  border: 1px solid var(--border);
  border-left: 5px solid var(--primary);
  border-radius: 8px;
  background: var(--surface-soft);
  color: var(--text-color);
}

.prijs-card__body {
  min-width: 0;
  display: grid;
  gap: .55rem;
}

.prijs-card__title {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.25;
}

.stock-product-meta,
.price-line,
.price-discount {
  margin: 0;
}

.stock-product-meta {
  color: var(--muted);
  font-size: .88rem;
}

.stock-product-link {
  display: inline-flex;
  margin-left: .45rem;
  color: var(--primary-dark);
  font-weight: 900;
  text-decoration: none;
}

.stock-product-link:hover {
  text-decoration: underline;
}

.old-price {
  text-decoration: line-through;
  color: var(--muted);
}

.price-line--promo,
.price-discount {
  color: #c00000;
  font-weight: 800;
}

html.dark .price-line--promo,
html.dark .price-discount {
  color: #ff8a8a;
}

.prijs-card__media {
  min-width: 0;
  display: flex;
  justify-content: center;
}

.prijs-card__img {
  width: min(100%, 190px);
  max-height: 190px;
  object-fit: contain;
  padding: .45rem;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
}

.info-badges,
.cashback-promos,
.service-options {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.info-badge,
.cashback-promo,
.service-option,
.energy-label-row,
.sales-usps {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card-bg);
}

.info-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: .28rem .5rem;
  font-size: .82rem;
  font-weight: 800;
}

.info-badge--ok {
  border-color: rgba(22, 163, 74, .35);
  color: #15803d;
}

.info-badge--warn {
  border-color: rgba(245, 158, 11, .45);
  color: #b45309;
}

.info-badge--eco {
  border-color: rgba(5, 150, 105, .45);
  color: #047857;
}

.info-badge--promo {
  border-color: rgba(249, 115, 22, .28);
  background: #fff7ed;
  color: #9a3412;
}

.info-badge--bad {
  border-color: rgba(220, 38, 38, .35);
  background: #fee2e2;
  color: #991b1b;
}

.promo-labels {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

.promo-label {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: .22rem .55rem;
  border-radius: 999px;
  background: #fee2e2;
  color: #b91c1c;
  font-size: .82rem;
  font-weight: 900;
}

.cashback-promos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .35rem;
}

.cashback-promo,
.service-option,
.sales-usps {
  padding: .6rem;
}

.cashback-promo {
  display: grid;
  gap: .26rem;
  border-color: rgba(249, 115, 22, .25);
  background: #fff7ed;
  color: #7c2d12;
}

.cashback-promo__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  flex-wrap: wrap;
  font-weight: 900;
  color: #9a3412;
}

.cashback-promo__desc,
.service-option__desc,
.energy-label-detail {
  color: var(--muted);
}

.cashback-promo__desc {
  color: #7c2d12;
  font-size: .88rem;
  line-height: 1.25;
}

.cashback-promo__dates {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}

.cashback-promo__date {
  border-radius: 999px;
  padding: .15rem .45rem;
  background: #ffedd5;
  color: #7c2d12;
  font-size: .78rem;
  font-weight: 800;
}

.cashback-promo__amount {
  color: #c00;
  font-weight: 900;
  white-space: nowrap;
}

.service-option__price {
  color: var(--primary);
  font-weight: 900;
}

.service-option {
  flex: 1 1 220px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .65rem;
  align-items: center;
}

.service-option__title {
  font-weight: 900;
}

.energy-label-row {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  align-items: center;
  padding: .5rem;
}

.energy-label-icon {
  height: 28px;
  width: auto;
}

.energy-label-fallback {
  display: inline-flex;
  align-items: stretch;
  min-height: 28px;
  overflow: hidden;
  border-radius: 4px;
  border: 1px solid #111827;
  background: linear-gradient(90deg, #0f9f4a, #facc15, #ef4444);
  color: #111827;
  font-weight: 900;
}

.energy-label-fallback__scale {
  padding: .12rem .25rem;
  background: rgba(255,255,255,.7);
  font-size: .58rem;
  line-height: 1;
}

.energy-label-fallback__code {
  padding: .25rem .4rem;
  background: #fff;
}

.energy-label-text {
  font-weight: 900;
}

.energy-label-row a {
  color: var(--primary-dark);
  font-weight: 800;
}

html.dark .stock-product-link {
  color: #7dd3fc;
}

html.dark .info-badge--promo {
  background: rgba(251, 146, 60, .16);
  border-color: rgba(251, 146, 60, .35);
  color: #fdba74;
}

html.dark .info-badge--bad {
  background: rgba(239, 68, 68, .18);
  border-color: rgba(248, 113, 113, .38);
  color: #fecaca;
}

html.dark .promo-label {
  background: rgba(239, 68, 68, .2);
  color: #fecaca;
}

html.dark .cashback-promo {
  background: rgba(251, 146, 60, .14);
  border-color: rgba(251, 146, 60, .34);
  color: #fed7aa;
}

html.dark .cashback-promo__head,
html.dark .cashback-promo__desc,
html.dark .cashback-promo__date {
  color: #fed7aa;
}

html.dark .cashback-promo__date {
  background: rgba(251, 146, 60, .2);
}

html.dark .cashback-promo__amount {
  color: #fca5a5;
}

.sales-usps ul {
  margin: .35rem 0 0;
  padding-left: 1.1rem;
}

.sales-usps li + li {
  margin-top: .2rem;
}

.filters {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: .65rem;
  align-items: end;
}

.filters input {
  width: 100%;
}

.csv-button {
  min-height: 38px;
}

.voorraad-resultaat {
  width: 100%;
  overflow-x: auto;
}

.voorraad-resultaat table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
}

.voorraad-resultaat th,
.voorraad-resultaat td {
  padding: .55rem;
  border: 1px solid var(--border);
  text-align: left;
  white-space: nowrap;
}

.voorraad-resultaat th {
  background: var(--surface-soft);
  color: var(--text-color);
}

.voorraad-resultaat td:nth-child(2),
.voorraad-resultaat td:nth-child(3) {
  text-align: center;
}

.stock-row-available td:nth-child(2) {
  color: #15803d;
}

.stock-row-empty {
  opacity: .75;
}

.spinner {
  display: block;
  width: 30px;
  height: 30px;
  margin: .5rem auto;
  border: 4px solid var(--surface-soft);
  border-top: 4px solid var(--primary);
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

@media (max-width: 620px) {
  .stockscanner-card .input-with-button,
  .voorraad-scan-controls,
  .filters {
    grid-template-columns: 1fr;
    display: grid;
  }

  .stockscanner-card .input-with-button input,
  .stockscanner-card .input-with-button button {
    border-radius: 6px;
  }

  .stock-product-card {
    grid-template-columns: 1fr;
  }

  .prijs-card {
    grid-template-columns: 1fr;
  }

  .stock-product-card img {
    width: 100%;
    height: 110px;
  }

  .prijs-card__media {
    order: -1;
  }

  .prijs-card__img {
    width: 100%;
    max-height: 145px;
  }

  .service-option {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .notification-filter-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .notification-filter-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .notification-filter-form label,
  .notification-filter-actions,
  .notification-mark-read-form,
  .notification-cleanup-form {
    min-width: 0;
    width: 100%;
  }

  .notification-history-item {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  .notification-history-actions {
    min-width: 0;
    width: 100%;
    justify-content: stretch;
  }

  .notification-history-actions .button,
  .notification-history-actions .status-pill {
    flex: 1 1 0;
    justify-content: center;
  }
}

@media (max-width: 760px) {
  .schedule-scroll {
    display: block;
    width: 100%;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    touch-action: pan-x pan-y;
  }

  .mobile-task-list {
    display: none;
  }

  .mobile-task-card {
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  .mobile-task-card h3,
  .mobile-task-card p {
    overflow-wrap: anywhere;
  }

  .mobile-verify,
  .mobile-verify .inline-form,
  .mobile-verify .proof-form,
  .mobile-verify .feedback-form {
    min-width: 0;
    width: 100%;
  }
}

/* Management cockpit, dagstart and evidence library */
.cockpit-page,
.daystart-page,
.evidence-page {
  display: grid;
  gap: 1rem;
}

.cockpit-toolbar {
  display: grid;
  gap: 1rem;
}

.cockpit-hero {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  border-left: 4px solid var(--primary);
}

.cockpit-hero h1 {
  margin: .1rem 0 .3rem;
  font-size: clamp(1.35rem, 2vw, 1.85rem);
}

.cockpit-hero p {
  max-width: 760px;
  color: var(--muted);
}

.cockpit-kicker {
  margin: 0;
  color: var(--primary);
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}

.cockpit-summary-grid,
.daystart-page .summary-grid {
  grid-template-columns: repeat(4, minmax(120px, 1fr));
}

.cockpit-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.cockpit-panel,
.attention-section {
  display: grid;
  gap: .85rem;
  align-content: start;
}

.cockpit-panel {
  min-width: 0;
}

.cockpit-panel--danger,
.attention-section--danger {
  border-left: 4px solid #dc2626;
}

.cockpit-panel--warning,
.attention-section--warning {
  border-left: 4px solid var(--warning-color);
}

.cockpit-panel--bad,
.attention-section--bad {
  border-left: 4px solid #f97316;
}

.cockpit-panel--info {
  border-left: 4px solid var(--primary);
}

.cockpit-panel--daystart {
  border-left: 4px solid #16a34a;
}

.cockpit-panel-head {
  display: flex;
  justify-content: space-between;
  gap: .9rem;
  align-items: start;
  min-width: 0;
}

.cockpit-panel-head h2 {
  margin: .1rem 0 0;
  font-size: 1.15rem;
}

.cockpit-count {
  flex: 0 0 auto;
  min-width: 2.3rem;
  padding: .34rem .55rem;
  text-align: center;
  color: var(--primary-dark);
  background: var(--surface-tint);
  border: 1px solid rgba(0, 112, 192, .18);
  border-radius: 6px;
  font-weight: 900;
}

.cockpit-list {
  display: grid;
  gap: .55rem;
  max-height: 370px;
  overflow: auto;
  padding-right: .15rem;
  scrollbar-gutter: stable;
}

.attention-list,
.daystart-mini-grid {
  display: grid;
  gap: .6rem;
}

.cockpit-item,
.attention-item,
.daystart-mini-card {
  display: grid;
  gap: .22rem;
  padding: .75rem;
  color: var(--text-color);
  text-decoration: none;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  border-radius: 6px;
  min-width: 0;
}

.cockpit-item {
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .7rem;
  border-left-width: 3px;
  border-left-style: solid;
}

.cockpit-item--danger {
  border-left-color: #dc2626;
}

.cockpit-item--warning {
  border-left-color: var(--warning-color);
}

.cockpit-item--bad {
  border-left-color: #f97316;
}

.cockpit-item--info {
  border-left-color: var(--primary);
}

.cockpit-item-icon {
  display: grid;
  place-items: center;
  width: 1.7rem;
  height: 1.7rem;
  color: #fff;
  background: var(--primary);
  border-radius: 999px;
  font-weight: 900;
}

.cockpit-item--danger .cockpit-item-icon {
  background: #dc2626;
  color: #fff;
}

.cockpit-item--warning .cockpit-item-icon {
  background: var(--warning-color);
  color: #111827;
}

.cockpit-item--bad .cockpit-item-icon {
  background: #f97316;
  color: #111827;
}

.cockpit-item--info .cockpit-item-icon {
  color: #fff;
}

.cockpit-item-body {
  display: grid;
  gap: .14rem;
  min-width: 0;
}

.cockpit-open {
  flex: 0 0 auto;
  padding: .38rem .58rem;
  color: var(--primary-dark);
  background: var(--surface-tint);
  border-radius: 6px;
  font-weight: 800;
  font-size: .84rem;
}

.cockpit-empty {
  display: grid;
  gap: .15rem;
  padding: .9rem;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px dashed var(--border);
  border-radius: 6px;
}

.cockpit-empty strong {
  color: var(--text-color);
}

.cockpit-item:hover,
.cockpit-item:focus-visible,
.attention-item:hover,
.attention-item:focus-visible,
.daystart-mini-card:hover,
.daystart-mini-card:focus-visible {
  border-color: var(--primary);
  box-shadow: 0 0 0 2px rgba(0, 112, 192, .12);
  outline: none;
}

.cockpit-item strong,
.attention-item strong,
.daystart-mini-card strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.cockpit-item span,
.cockpit-item small,
.attention-item span,
.attention-item small,
.daystart-mini-card span,
.daystart-mini-card small {
  color: var(--muted);
  overflow-wrap: anywhere;
}

.empty-state {
  padding: .85rem;
  color: var(--muted);
  background: var(--surface-soft);
  border: 1px dashed var(--border);
  border-radius: 6px;
}

.daystart-intro-card {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
}

.daystart-intro-card p {
  color: var(--muted);
  margin-top: .25rem;
}

.daystart-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1rem;
}

.daystart-template-card {
  display: grid;
  gap: .45rem;
  border-top: 4px solid var(--primary);
}

.daystart-template-card p,
.daystart-template-card small {
  color: var(--muted);
}

.daystart-time {
  width: max-content;
  padding: .18rem .5rem;
  color: var(--primary-dark);
  background: var(--surface-tint);
  border-radius: 999px;
  font-weight: 700;
  font-size: .86rem;
}

.evidence-filter-card {
  display: grid;
  gap: 1rem;
}

.evidence-filter-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: .75rem;
  align-items: end;
}

.evidence-filter-form label {
  display: grid;
  gap: .3rem;
  min-width: 0;
  color: var(--muted);
  font-weight: 700;
}

.evidence-filter-actions {
  display: flex;
  gap: .5rem;
}

.evidence-filter-actions .button,
.evidence-filter-actions button {
  flex: 1 1 0;
}

.evidence-grid {
  display: grid;
  gap: .8rem;
}

.evidence-card {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr);
  gap: .85rem;
  padding: .75rem;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  border-radius: 6px;
}

.evidence-preview {
  display: grid;
  place-items: center;
  min-height: 130px;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--muted);
}

.evidence-preview img {
  width: 100%;
  height: 100%;
  max-height: 180px;
  object-fit: cover;
}

.evidence-card-body {
  display: grid;
  gap: .45rem;
  min-width: 0;
}

.evidence-card-head {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  align-items: start;
}

.evidence-card-head strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.evidence-card-head span {
  flex: 0 0 auto;
  padding: .18rem .45rem;
  background: var(--surface-tint);
  color: var(--primary-dark);
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 700;
}

.evidence-card p,
.evidence-card small {
  color: var(--muted);
  overflow-wrap: anywhere;
}

.evidence-note {
  padding: .55rem;
  background: var(--card-bg);
  border-left: 3px solid var(--primary);
  border-radius: 4px;
}

.evidence-note--feedback {
  border-left-color: var(--warning-color);
}

.evidence-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}

html.dark .attention-item,
html.dark .cockpit-item,
html.dark .cockpit-empty,
html.dark .daystart-mini-card,
html.dark .evidence-card,
html.dark .evidence-preview,
html.dark .evidence-note,
html.dark .empty-state {
  background: var(--surface-soft);
}

@media (max-width: 980px) {
  .cockpit-grid,
  .daystart-grid {
    grid-template-columns: 1fr;
  }

  .evidence-filter-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .cockpit-hero,
  .cockpit-panel-head {
    display: grid;
  }

  .cockpit-hero .button,
  .cockpit-panel-head .button {
    width: 100%;
  }

  .cockpit-list {
    max-height: 420px;
  }

  .cockpit-item {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .cockpit-open {
    grid-column: 1 / -1;
    width: 100%;
    text-align: center;
  }

  .cockpit-summary-grid,
  .daystart-page .summary-grid,
  .evidence-filter-form {
    grid-template-columns: 1fr;
  }

  .daystart-intro-card,
  .evidence-card,
  .evidence-card-head {
    grid-template-columns: 1fr;
    display: grid;
  }

  .daystart-intro-card form,
  .daystart-intro-card button,
  .evidence-filter-actions,
  .evidence-actions,
  .evidence-actions .button {
    width: 100%;
  }

  .evidence-filter-actions,
  .evidence-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .evidence-preview {
    min-height: 180px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .loading-spinner,
  .day-responsibility-card.has-responsible .responsibility-name,
  .day-responsibility-card.has-responsible .responsibility-hours,
  .seller-responsibility-badge,
  .rack-map-badge.saving::after,
  .rack-map-badge.just-placed,
  .scan-box::after,
  .spinner {
    animation: none;
  }

  .sidebar {
    transition: none;
  }
}

/* Stockscanner workspace ---------------------------------------------------
   This layer is intentionally scoped to the scanner root. It extends the
   legacy stock lookup styles without changing shared planner components. */
.stockscanner-page {
  --stock-accent: var(--primary);
  --stock-accent-strong: var(--primary-dark);
  --stock-accent-soft: #eef7fd;
  --stock-panel: var(--card-bg);
  --stock-panel-soft: #f8fafc;
  --stock-line: #d7e0e8;
  --stock-text-soft: var(--muted);
  --stock-success: #116b36;
  --stock-success-soft: #edf9f1;
  --stock-warning: #9a5b05;
  --stock-warning-soft: #fff8e8;
  --stock-danger: #b42318;
  --stock-danger-soft: #fff1f0;
  --stock-radius: 10px;
  --stock-control-height: 44px;
  width: min(1180px, 100%);
  min-width: 0;
  max-width: 100vw;
  gap: clamp(.75rem, 1.5vw, 1.1rem);
  isolation: isolate;
}

.stockscanner-page[data-stock-workspace] {
  scroll-padding-top: 1rem;
}

.stockscanner-page :where(
  .stockscanner-hero,
  .stockscanner-workspace-tabs,
  .stockscanner-workspace-view,
  .stockscanner-card,
  .stockscanner-detail-panel,
  .stockscanner-library-card,
  .stockscanner-batch-card,
  .stockscanner-compare-card,
  .stockscanner-section-heading,
  .stockscanner-inline-form,
  .input-with-button,
  .stock-product-actions,
  .stock-library-grid,
  .stock-library-list,
  .stock-library-item,
  .stock-library-item > div,
  .stock-batch-list,
  .stock-batch-item,
  .stock-batch-item-heading,
  .stock-batch-stocks,
  .stock-alternative-original,
  .stock-alternative-grid,
  .stock-alternative-card,
  .stock-alternative-card > div,
  .stock-compare-form,
  .stock-compare-products,
  .stock-compare-product,
  .stock-compare-controls,
  .stock-compare-table-wrap,
  .stock-accessory-grid,
  .stock-accessory-card,
  .voorraad-resultaat,
  .prijs-info,
  .prijs-card,
  .stock-product-card-rich,
  .prijs-card__body,
  .prijs-card__media
) {
  min-width: 0;
  max-width: 100%;
}

.stockscanner-page :where(h2, h3, p, li, dt, dd, strong, span, small, a) {
  overflow-wrap: anywhere;
}

.stockscanner-page :where(img, video) {
  max-width: 100%;
}

.stockscanner-page > .card,
.stockscanner-page .stockscanner-workspace-view > .card {
  border: 1px solid var(--stock-line);
  border-radius: var(--stock-radius);
}

.stockscanner-page :where(
  button,
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea,
  .stock-library-actions a,
  .stock-spec-group > summary,
  .stock-spec-explanation > summary
) {
  min-height: var(--stock-control-height);
}

.stockscanner-page :where(button, input, select, textarea) {
  min-width: 0;
}

.stockscanner-page :where(button, a[href], input, select, textarea, summary):focus-visible {
  outline: 3px solid rgba(0, 112, 192, .42);
  outline: 3px solid color-mix(in srgb, var(--stock-accent) 48%, transparent);
  outline-offset: 2px;
}

.stockscanner-page button:disabled {
  cursor: not-allowed;
  opacity: .55;
}

.stockscanner-page .stockscanner-hero {
  display: grid;
  grid-template-columns: minmax(220px, 1.05fr) minmax(180px, .62fr) minmax(300px, 1fr);
  gap: clamp(.75rem, 1.8vw, 1.25rem);
  align-items: stretch;
  padding: clamp(1rem, 2vw, 1.35rem);
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--stock-accent) 7%, var(--stock-panel)), var(--stock-panel) 58%);
}

.stockscanner-page .stockscanner-hero .toolbar-copy {
  align-content: center;
  gap: .35rem;
}

.stockscanner-page .stockscanner-hero .toolbar-copy strong {
  color: var(--text-color);
  font-size: clamp(1.15rem, 2vw, 1.45rem);
  line-height: 1.18;
}

.stockscanner-page .stockscanner-hero .toolbar-copy span {
  max-width: 46ch;
  color: var(--stock-text-soft);
  font-size: .92rem;
  line-height: 1.45;
}

.stockscanner-page .stockscanner-store-context {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .12rem;
  align-content: center;
  min-height: 76px;
  padding: .72rem .85rem;
  border: 1px solid color-mix(in srgb, var(--stock-accent) 32%, var(--stock-line));
  border-left: 4px solid var(--stock-accent);
  border-radius: 8px;
  background: var(--stock-accent-soft);
  cursor: default;
}

.stockscanner-page .stockscanner-store-context > span {
  color: var(--stock-accent-strong);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .055em;
  line-height: 1.2;
  text-transform: uppercase;
}

.stockscanner-page .stockscanner-store-context > strong {
  color: var(--text-color);
  font-size: 1rem;
  line-height: 1.25;
}

.stockscanner-page .stockscanner-store-context > small {
  color: var(--stock-text-soft);
  font-size: .78rem;
  font-variant-numeric: tabular-nums;
}

.stockscanner-page .stockscanner-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-self: stretch;
  min-width: 0;
  gap: .5rem;
}

.stockscanner-page .stockscanner-summary > div {
  display: grid;
  min-width: 0;
  padding: .68rem .6rem;
  align-content: center;
  border-color: var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel);
  text-align: center;
}

.stockscanner-page .stockscanner-summary strong {
  color: var(--stock-accent-strong);
  font-size: clamp(1.15rem, 2.2vw, 1.45rem);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.stockscanner-page .stockscanner-summary span {
  margin-top: .22rem;
  color: var(--stock-text-soft);
  font-size: .72rem;
  line-height: 1.2;
}

.stockscanner-page .stockscanner-workspace-tabs {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .35rem;
  padding: .35rem;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
}

.stockscanner-page .stockscanner-workspace-tabs button {
  min-height: 48px;
  padding: .65rem .75rem;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--stock-text-soft);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.15;
  white-space: nowrap;
}

.stockscanner-page .stockscanner-workspace-tabs button:hover {
  border-color: var(--stock-line);
  background: var(--stock-panel-soft);
  color: var(--text-color);
}

.stockscanner-page .stockscanner-workspace-tabs button[aria-selected="true"] {
  border-color: color-mix(in srgb, var(--stock-accent) 28%, var(--stock-line));
  background: var(--stock-accent);
  color: #fff;
  box-shadow: 0 2px 8px color-mix(in srgb, var(--stock-accent) 24%, transparent);
}

.stockscanner-page .stockscanner-workspace-tabs button > span {
  font-size: .78em;
  font-variant-numeric: tabular-nums;
}

/* Basic planner scanner: two views, with the existing native camera hooks. */
.stockscanner-page[data-stock-basic="true"] .stockscanner-hero {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
}

.stockscanner-page[data-stock-basic="true"] .stockscanner-workspace-tabs {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.stockscanner-page[data-stock-basic="true"] .stockscanner-workspace-tabs button {
  white-space: normal;
  overflow-wrap: anywhere;
}

.stockscanner-page[data-stock-basic="true"] .stock-library-grid {
  grid-template-columns: minmax(0, 1fr);
}

.stockscanner-page[data-stock-basic="true"] #filters {
  grid-template-columns: minmax(0, 1fr);
}

.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat table {
  min-width: 0;
  table-layout: fixed;
}

.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat th,
.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat td {
  padding: .55rem .4rem;
  white-space: normal;
  overflow-wrap: anywhere;
}

.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat th:nth-child(1) {
  width: 44%;
}

.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat th:nth-child(2) {
  width: 18%;
  text-align: center;
}

.stockscanner-page[data-stock-basic="true"] .voorraad-resultaat th:nth-child(3) {
  width: 38%;
  text-align: center;
}

.stockscanner-page[data-stock-basic="true"] .stock-row-available td:nth-child(2) {
  color: var(--stock-success);
}

.stockscanner-page .stockscanner-workspace-view {
  display: grid;
  gap: clamp(.75rem, 1.5vw, 1rem);
}

.stockscanner-page .stockscanner-card,
.stockscanner-page .stockscanner-detail-panel,
.stockscanner-page .stockscanner-library-card,
.stockscanner-page .stockscanner-batch-card,
.stockscanner-page .stockscanner-compare-card {
  display: grid;
  gap: 1rem;
  overflow: hidden;
}

.stockscanner-page .stockscanner-detail-panel {
  scroll-margin-top: calc(var(--header-height, 4rem) + 1rem + env(safe-area-inset-top, 0px));
}

.stockscanner-page .stockscanner-section-heading {
  display: flex;
  gap: .85rem;
  align-items: center;
  justify-content: space-between;
}

.stockscanner-page .stockscanner-section-heading > div {
  min-width: 0;
}

.stockscanner-page .stockscanner-section-heading h2 {
  margin: .1rem 0 0;
  color: var(--text-color);
  font-size: clamp(1.08rem, 1.8vw, 1.35rem);
  line-height: 1.25;
}

.stockscanner-page .stockscanner-eyebrow {
  display: block;
  color: var(--stock-accent-strong);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .065em;
  line-height: 1.2;
  text-transform: uppercase;
}

.stockscanner-page .stockscanner-inline-form,
.stockscanner-page .stockscanner-name-search {
  display: grid;
  gap: .55rem;
}

.stockscanner-page .stockscanner-name-search {
  padding: .85rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stockscanner-inline-form label,
.stockscanner-page .stock-compare-form label,
.stockscanner-page > * > label,
.stockscanner-page .stockscanner-card > label,
.stockscanner-page .stockscanner-library-card > label {
  color: var(--text-color);
  font-size: .86rem;
  font-weight: 750;
}

.stockscanner-page .input-with-button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  width: 100%;
  gap: 0;
}

.stockscanner-page .input-with-button > input {
  width: 100%;
  border-radius: 7px 0 0 7px;
}

.stockscanner-page .input-with-button > button {
  border-radius: 0 7px 7px 0;
  white-space: nowrap;
}

.stockscanner-page .voorraad-scan-controls,
.stockscanner-page .stock-product-actions,
.stockscanner-page .stock-library-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  align-items: center;
}

.stockscanner-page .voorraad-scan-controls > *,
.stockscanner-page .stock-product-actions > * {
  flex: 1 1 150px;
}

.stockscanner-page .stock-product-actions {
  padding: .72rem;
  border: 1px solid color-mix(in srgb, var(--stock-accent) 24%, var(--stock-line));
  border-radius: 8px;
  background: var(--stock-accent-soft);
}

.stockscanner-page .stock-product-actions button[aria-pressed="true"] {
  background: var(--stock-success);
  color: #fff;
}

.stockscanner-page .btn-scan {
  min-height: var(--stock-control-height);
  padding: .55rem .85rem;
  border-radius: 7px;
}

.stockscanner-page .scan-video-frame {
  margin: 0;
  border-width: 2px;
  border-radius: var(--stock-radius);
}

.stockscanner-page .artikel-label {
  width: fit-content;
  max-width: 100%;
  padding: .3rem .55rem;
  border: 1px solid var(--stock-line);
  border-radius: 999px;
  background: var(--stock-panel-soft);
  color: var(--stock-text-soft);
  font-size: .8rem;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}

.stockscanner-page .artikel-label:empty,
.stockscanner-page .prijs-info:empty,
.stockscanner-page .stock-alternative-original:empty,
.stockscanner-page .stock-alternative-grid:empty,
.stockscanner-page .stock-compare-products:empty,
.stockscanner-page .stock-compare-table-wrap:empty,
.stockscanner-page .stock-search-results:empty,
.stockscanner-page .stockscanner-status:empty {
  display: none;
}

.stockscanner-page .stock-image-placeholder {
  display: grid;
  width: min(100%, 190px);
  min-height: 145px;
  place-items: center;
  border: 1px dashed var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel);
  color: var(--stock-text-soft);
  font-size: 2.2rem;
}

.stockscanner-page .prijs-card {
  border-color: var(--stock-line);
  border-left-color: var(--stock-accent);
  border-radius: var(--stock-radius);
  background: var(--stock-panel-soft);
}

.stockscanner-page .filters {
  display: grid;
  grid-template-columns: minmax(150px, 1.5fr) repeat(2, minmax(110px, .75fr)) minmax(80px, auto);
  gap: .6rem;
  align-items: end;
}

.stockscanner-page .filters > * {
  min-width: 0;
}

.stockscanner-page .filters .csv-button {
  min-height: var(--stock-control-height);
}

.stockscanner-page .stockscanner-status,
.stockscanner-page .stockscanner-empty,
.stockscanner-page .voorraad-resultaat.error,
.stockscanner-page .stock-search-results.error {
  margin: 0;
  padding: .78rem .85rem;
  border: 1px solid var(--stock-line);
  border-left: 4px solid var(--stock-accent);
  border-radius: 8px;
  background: var(--stock-panel-soft);
  color: var(--stock-text-soft);
  line-height: 1.45;
}

.stockscanner-page .stockscanner-status.error,
.stockscanner-page .voorraad-resultaat.error,
.stockscanner-page .stock-search-results.error {
  border-color: color-mix(in srgb, var(--stock-danger) 36%, var(--stock-line));
  border-left-color: var(--stock-danger);
  background: var(--stock-danger-soft);
  color: var(--stock-danger);
}

.stockscanner-page .stockscanner-empty {
  border-left-color: var(--stock-line);
  font-size: .9rem;
  text-align: center;
}

.stockscanner-page .stock-search-results {
  display: grid;
  gap: .45rem;
}

.stockscanner-page .stock-search-sources {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin-bottom: .85rem;
}

.stockscanner-page .stock-search-sources button {
  flex: 1 1 130px;
  min-width: 0;
}

.stockscanner-page .stock-search-sources button[aria-pressed="true"] {
  border-color: var(--stock-accent);
  background: var(--stock-accent-soft);
  color: var(--text-color);
  box-shadow: inset 0 0 0 1px var(--stock-accent);
}

.stockscanner-page .stock-search-hint {
  margin: .55rem 0 .7rem;
  color: var(--stock-text-soft);
  font-size: .8rem;
}

.stockscanner-page #stockNameStatus:not([hidden]) {
  margin-bottom: .7rem;
}

.stockscanner-page .stock-search-result {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: .7rem;
  align-items: center;
  justify-items: start;
  width: 100%;
  padding: .7rem .8rem;
  border: 1px solid var(--stock-line);
  border-radius: 7px;
  background: var(--stock-panel);
  color: var(--text-color);
  text-align: left;
}

.stockscanner-page .stock-search-result:hover,
.stockscanner-page .stock-search-result:focus-visible {
  border-color: color-mix(in srgb, var(--stock-accent) 45%, var(--stock-line));
  background: var(--stock-accent-soft);
  color: var(--text-color);
}

.stockscanner-page .stock-search-result-copy {
  display: grid;
  min-width: 0;
  gap: .2rem;
  overflow-wrap: anywhere;
}

.stockscanner-page .stock-search-result-copy > strong {
  line-height: 1.25;
}

.stockscanner-page .stock-search-result-copy > span,
.stockscanner-page .stock-search-result-copy > small {
  color: var(--stock-text-soft);
  font-size: .8rem;
  font-weight: 500;
}

.stockscanner-page .stock-search-image {
  display: grid;
  width: 58px;
  height: 64px;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--stock-line);
  border-radius: 6px;
  background: #fff;
  color: #637080;
  font-size: .64rem;
  line-height: 1.2;
  text-align: center;
}

.stockscanner-page .stock-search-image img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.stockscanner-page .stock-catalog-product {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: .85rem;
  overflow-wrap: anywhere;
}

.stockscanner-page .stock-catalog-product .stock-search-image {
  width: min(100%, 180px);
  height: 180px;
  justify-self: center;
  font-size: .85rem;
}

.stockscanner-page .stock-catalog-product > p {
  margin: 0;
}

.stockscanner-page .stock-catalog-provenance {
  color: var(--stock-text-soft);
  font-size: .85rem;
}

.stockscanner-page .stock-image-credit {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem .6rem;
  padding: .25rem .3rem;
  font-size: .72rem;
  overflow-wrap: anywhere;
}

.stockscanner-page .stock-image-credit a {
  color: inherit;
  text-decoration: underline;
}

.stockscanner-page .stock-catalog-notice {
  padding: .7rem;
  border-left: 3px solid var(--stock-accent);
  border-radius: 5px;
  background: var(--stock-accent-soft);
}

.stockscanner-page .stock-search-pagination {
  display: grid;
  grid-template-columns: minmax(96px, 1fr) auto minmax(96px, 1fr);
  gap: .5rem;
  align-items: center;
  margin-top: .2rem;
}

.stockscanner-page .stock-search-pagination > span {
  color: var(--stock-text-soft);
  font-size: .82rem;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.stockscanner-page .stockscanner-table-heading {
  display: flex;
  gap: .75rem;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: .55rem;
}

.stockscanner-page .stockscanner-table-heading > span {
  color: var(--stock-text-soft);
  font-size: .8rem;
}

.stockscanner-page .voorraad-resultaat,
.stockscanner-page .stock-compare-table-wrap {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}

.stockscanner-page .voorraad-resultaat table {
  min-width: 660px;
}

.stockscanner-page .voorraad-resultaat th,
.stockscanner-page .voorraad-resultaat td {
  padding: .62rem .65rem;
  border-color: var(--stock-line);
}

.stockscanner-page .voorraad-resultaat thead th {
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-own-label,
.stockscanner-page .stock-hq-label,
.stockscanner-page .stockscanner-count-pill,
.stockscanner-page .stock-accessory-proof {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  min-height: 24px;
  padding: .16rem .45rem;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 800;
  line-height: 1.2;
}

.stockscanner-page .stock-own-label {
  background: var(--stock-success-soft);
  color: var(--stock-success);
}

.stockscanner-page .stock-hq-label {
  background: var(--stock-accent-soft);
  color: var(--stock-accent-strong);
}

.stockscanner-page .stock-store-contact {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .1rem;
  margin-top: .3rem;
  color: var(--stock-text-soft);
  font-size: .78rem;
  line-height: 1.35;
}

.stockscanner-page .stock-store-contact a {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  max-width: 100%;
  color: var(--stock-accent-strong);
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: .15em;
}

.stockscanner-page .stock-store-phone-missing {
  font-size: .72rem;
}

.stockscanner-page .stockscanner-count-pill {
  flex: 0 0 auto;
  min-height: 30px;
  padding-inline: .65rem;
  border: 1px solid color-mix(in srgb, var(--stock-accent) 30%, var(--stock-line));
  background: var(--stock-accent-soft);
  color: var(--stock-accent-strong);
  font-variant-numeric: tabular-nums;
}

/* Detail panel: specification disclosures and verified accessories. */
.stockscanner-page #stockDetailContent {
  display: grid;
  gap: .75rem;
  min-width: 0;
}

.stockscanner-page .stock-spec-group {
  overflow: hidden;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel);
}

.stockscanner-page .stock-spec-group > summary,
.stockscanner-page .stock-spec-explanation > summary {
  display: flex;
  align-items: center;
  padding: .65rem .8rem;
  color: var(--text-color);
  cursor: pointer;
  font-weight: 800;
  line-height: 1.3;
}

.stockscanner-page .stock-spec-group > summary {
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-spec-group[open] > summary {
  border-bottom: 1px solid var(--stock-line);
  color: var(--stock-accent-strong);
}

.stockscanner-page .stock-spec-group dl {
  margin: 0;
}

.stockscanner-page .stock-spec-group dl > div {
  display: grid;
  grid-template-columns: minmax(150px, .75fr) minmax(0, 1.25fr);
  gap: .45rem 1rem;
  padding: .7rem .8rem;
  border-bottom: 1px solid var(--stock-line);
}

.stockscanner-page .stock-spec-group dl > div:last-child {
  border-bottom: 0;
}

.stockscanner-page .stock-spec-group dt {
  color: var(--stock-text-soft);
  font-size: .84rem;
  font-weight: 750;
}

.stockscanner-page .stock-spec-group dd {
  margin: 0;
  color: var(--text-color);
  font-size: .9rem;
  line-height: 1.4;
}

.stockscanner-page .stock-spec-explanation {
  grid-column: 1 / -1;
  border: 1px solid var(--stock-line);
  border-radius: 6px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-spec-explanation > summary {
  min-height: 44px;
  padding: .4rem .55rem;
  color: var(--stock-accent-strong);
  font-size: .78rem;
}

.stockscanner-page .stock-spec-explanation > p {
  padding: 0 .6rem .6rem;
  color: var(--stock-text-soft);
  font-size: .84rem;
  line-height: 1.45;
}

.stockscanner-page .stock-accessory-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr));
  gap: .75rem;
}

.stockscanner-page .stock-accessory-card {
  display: grid;
  align-content: start;
  gap: .55rem;
  padding: .85rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-accessory-card h3 {
  color: var(--text-color);
  font-size: 1rem;
  line-height: 1.3;
}

.stockscanner-page .stock-accessory-card p {
  margin: 0;
  color: var(--stock-text-soft);
  font-size: .86rem;
  line-height: 1.45;
}

.stockscanner-page .stock-accessory-proof {
  background: var(--stock-success-soft);
  color: var(--stock-success);
}

.stockscanner-page .stock-accessory-proof.warning {
  background: var(--stock-warning-soft);
  color: var(--stock-warning);
}

.stockscanner-page .stock-accessory-condition {
  padding: .48rem .55rem;
  border-left: 3px solid var(--stock-warning);
  border-radius: 4px;
  background: var(--stock-warning-soft);
  color: var(--stock-warning) !important;
}

/* Saved history and favorites. */
.stockscanner-page .stock-library-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .85rem;
}

.stockscanner-page .stock-library-grid > section {
  min-width: 0;
  padding: .85rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-library-grid h3 {
  margin: 0 0 .65rem;
  color: var(--text-color);
  font-size: 1rem;
}

.stockscanner-page .stock-library-list {
  display: grid;
  gap: .55rem;
}

.stockscanner-page .stock-library-item {
  display: grid;
  grid-template-columns: 68px minmax(0, 1fr);
  gap: .7rem;
  align-items: center;
  padding: .7rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel);
}

.stockscanner-page .stock-library-item > img {
  width: 68px;
  height: 68px;
  padding: .2rem;
  border: 1px solid var(--stock-line);
  border-radius: 6px;
  background: #fff;
  object-fit: contain;
}

.stockscanner-page .stock-library-item > div {
  display: grid;
  gap: .22rem;
}

.stockscanner-page .stock-library-item > div:first-child:last-child {
  grid-column: 1 / -1;
}

.stockscanner-page .stock-library-item > div > strong {
  color: var(--text-color);
  line-height: 1.25;
}

.stockscanner-page .stock-library-item > div > span {
  color: var(--stock-text-soft);
  font-size: .8rem;
  font-variant-numeric: tabular-nums;
}

.stockscanner-page .stock-library-actions {
  margin-top: .35rem;
}

.stockscanner-page .stock-library-actions > button,
.stockscanner-page .stock-library-actions > a {
  flex: 0 1 auto;
  min-height: 44px;
  padding: .45rem .68rem;
  font-size: .82rem;
}

.stockscanner-page .stock-library-actions > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid color-mix(in srgb, var(--stock-accent) 32%, var(--stock-line));
  border-radius: 7px;
  background: var(--stock-accent-soft);
  color: var(--stock-accent-strong);
  font-weight: 750;
  text-decoration: none;
}

.stockscanner-page .stock-library-actions > a:hover {
  border-color: var(--stock-accent);
  background: color-mix(in srgb, var(--stock-accent) 15%, var(--stock-panel));
}

/* Persistent multi-product scan list. */
.stockscanner-page .stock-batch-list {
  display: grid;
  gap: .7rem;
}

.stockscanner-page .stock-batch-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(260px, .9fr);
  gap: .75rem;
  align-items: center;
  padding: .85rem;
  border: 1px solid var(--stock-line);
  border-left: 4px solid var(--stock-accent);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-batch-item-heading {
  display: flex;
  gap: .6rem;
  align-items: center;
  justify-content: space-between;
}

.stockscanner-page .stock-batch-item-heading > div {
  display: grid;
  gap: .18rem;
  min-width: 0;
}

.stockscanner-page .stock-batch-item-heading > div > strong {
  color: var(--text-color);
  line-height: 1.25;
}

.stockscanner-page .stock-batch-item-heading > div > span {
  color: var(--stock-text-soft);
  font-size: .8rem;
  font-variant-numeric: tabular-nums;
}

.stockscanner-page .stock-batch-item-heading > button {
  flex: 0 0 auto;
}

.stockscanner-page .stock-batch-quantity {
  display: grid;
  grid-template-columns: auto 44px minmax(52px, 68px) 44px;
  gap: .35rem;
  align-items: center;
}

.stockscanner-page .stock-batch-quantity > span {
  color: var(--stock-text-soft);
  font-size: .8rem;
  font-weight: 750;
}

.stockscanner-page .stock-batch-quantity button,
.stockscanner-page .stock-batch-quantity input {
  width: 44px;
  height: 44px;
  min-height: 44px;
  padding: .3rem;
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.stockscanner-page .stock-batch-quantity input {
  width: 100%;
  appearance: textfield;
}

.stockscanner-page .stock-batch-quantity input::-webkit-inner-spin-button,
.stockscanner-page .stock-batch-quantity input::-webkit-outer-spin-button {
  margin: 0;
  appearance: none;
}

.stockscanner-page .stock-batch-stocks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem;
}

.stockscanner-page .stock-batch-stock {
  display: grid;
  gap: .12rem;
  min-width: 0;
  min-height: 64px;
  align-content: center;
  padding: .52rem .6rem;
  border: 1px solid var(--stock-line);
  border-radius: 7px;
  background: var(--stock-panel);
}

.stockscanner-page .stock-batch-stock > span,
.stockscanner-page .stock-batch-stock > small {
  color: var(--stock-text-soft);
  font-size: .72rem;
  line-height: 1.25;
}

.stockscanner-page .stock-batch-stock > strong {
  color: var(--text-color);
  font-size: .84rem;
  line-height: 1.3;
}

.stockscanner-page .stock-batch-stock.enough {
  border-color: color-mix(in srgb, var(--stock-success) 35%, var(--stock-line));
  background: var(--stock-success-soft);
}

.stockscanner-page .stock-batch-stock.enough > strong {
  color: var(--stock-success);
}

.stockscanner-page .stock-batch-stock.low {
  border-color: color-mix(in srgb, var(--stock-danger) 32%, var(--stock-line));
  background: var(--stock-danger-soft);
}

.stockscanner-page .stock-batch-stock.low > strong {
  color: var(--stock-danger);
}

.stockscanner-page .stock-batch-stock.stale {
  border-style: dashed;
  background: var(--stock-warning-soft);
}

/* Alternatives and side-by-side comparison. */
.stockscanner-page .stock-alternative-original {
  padding-bottom: .2rem;
}

.stockscanner-page .stock-alternative-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(290px, 100%), 1fr));
  gap: .75rem;
}

.stockscanner-page .stock-alternative-card {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: .8rem;
  align-items: start;
  height: 100%;
  padding: .85rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-alternative-card.original {
  grid-template-columns: 112px minmax(0, 1fr);
  border: 2px solid color-mix(in srgb, var(--stock-accent) 52%, var(--stock-line));
  border-left-width: 5px;
  background: var(--stock-accent-soft);
}

.stockscanner-page .stock-alternative-card > img {
  width: 92px;
  height: 92px;
  padding: .25rem;
  border: 1px solid var(--stock-line);
  border-radius: 7px;
  background: #fff;
  object-fit: contain;
}

.stockscanner-page .stock-alternative-card.original > img {
  width: 112px;
  height: 112px;
}

.stockscanner-page .stock-alternative-card > div {
  display: grid;
  align-content: start;
  gap: .38rem;
}

.stockscanner-page .stock-alternative-card > div:first-child:last-child {
  grid-column: 1 / -1;
}

.stockscanner-page .stock-alternative-card h3 {
  color: var(--text-color);
  font-size: 1rem;
  line-height: 1.3;
}

.stockscanner-page .stock-alternative-card p,
.stockscanner-page .stock-alternative-card ul {
  margin: 0;
  color: var(--stock-text-soft);
  font-size: .84rem;
  line-height: 1.4;
}

.stockscanner-page .stock-alternative-card ul {
  padding-left: 1.1rem;
}

.stockscanner-page .stock-alternative-card li + li {
  margin-top: .2rem;
}

.stockscanner-page .stock-alternative-stock {
  color: var(--stock-success);
  font-size: .84rem;
  line-height: 1.35;
}

.stockscanner-page .stock-compare-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr) auto;
  gap: .6rem;
  align-items: end;
}

.stockscanner-page .stock-compare-form label {
  display: grid;
  gap: .38rem;
  min-width: 0;
}

.stockscanner-page #stockCompareSwap {
  width: 48px;
  padding-inline: 0;
  font-size: 1.25rem;
}

.stockscanner-page .stock-compare-products {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}

.stockscanner-page .stock-compare-product {
  display: grid;
  grid-template-columns: 84px minmax(0, 1fr);
  gap: .35rem .7rem;
  align-content: start;
  padding: .8rem;
  border: 1px solid var(--stock-line);
  border-top: 4px solid var(--stock-accent);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-compare-product > img {
  grid-row: 1 / span 3;
  width: 84px;
  height: 84px;
  padding: .2rem;
  border: 1px solid var(--stock-line);
  border-radius: 6px;
  background: #fff;
  object-fit: contain;
}

.stockscanner-page .stock-compare-product h3 {
  color: var(--text-color);
  font-size: .96rem;
  line-height: 1.3;
}

.stockscanner-page .stock-compare-product p {
  color: var(--stock-text-soft);
  font-size: .8rem;
  line-height: 1.35;
}

.stockscanner-page .stock-compare-product > strong {
  color: var(--stock-success);
  font-size: .82rem;
  line-height: 1.35;
}

.stockscanner-page .stock-compare-product > h3:first-child,
.stockscanner-page .stock-compare-product > h3:first-child ~ * {
  grid-column: 1 / -1;
}

.stockscanner-page .stock-compare-controls {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  align-items: center;
  justify-content: space-between;
  padding: .65rem;
  border: 1px solid var(--stock-line);
  border-radius: 8px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-compare-controls > div {
  display: inline-grid;
  grid-template-columns: repeat(3, minmax(0, auto));
  gap: .3rem;
  min-width: 0;
}

.stockscanner-page .stock-compare-controls button {
  border: 1px solid var(--stock-line);
  background: var(--stock-panel);
  color: var(--stock-text-soft);
}

.stockscanner-page .stock-compare-controls button:hover {
  border-color: var(--stock-accent);
  background: var(--stock-accent-soft);
  color: var(--stock-accent-strong);
}

.stockscanner-page .stock-compare-controls button[aria-pressed="true"] {
  border-color: var(--stock-accent);
  background: var(--stock-accent);
  color: #fff;
}

.stockscanner-page .stock-compare-controls > input {
  flex: 1 1 240px;
  width: min(320px, 100%);
}

.stockscanner-page .stock-compare-table-wrap {
  border: 1px solid var(--stock-line);
  border-radius: 8px;
}

.stockscanner-page .stock-compare-table-wrap:has(.stockscanner-empty) {
  border: 0;
}

.stockscanner-page .stock-compare-table-wrap table {
  min-width: 720px;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--stock-panel);
}

.stockscanner-page .stock-compare-table-wrap th,
.stockscanner-page .stock-compare-table-wrap td {
  padding: .65rem .7rem;
  border-width: 0 1px 1px 0;
  border-color: var(--stock-line);
  line-height: 1.35;
  white-space: normal;
}

.stockscanner-page .stock-compare-table-wrap tr:last-child > * {
  border-bottom-width: 0;
}

.stockscanner-page .stock-compare-table-wrap tr > *:last-child {
  border-right-width: 0;
}

.stockscanner-page .stock-compare-table-wrap thead th {
  background: var(--stock-accent-soft);
  color: var(--text-color);
  font-weight: 800;
}

.stockscanner-page .stock-compare-table-wrap th:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  width: 30%;
  min-width: 180px;
  background: var(--stock-panel-soft);
}

.stockscanner-page .stock-compare-table-wrap thead th:first-child {
  z-index: 2;
  background: var(--stock-accent-soft);
}

.stockscanner-page .stock-compare-table-wrap tr.different > * {
  background: var(--stock-warning-soft);
}

.stockscanner-page .stock-compare-table-wrap tr.different > th:first-child {
  box-shadow: inset 4px 0 0 var(--stock-warning);
}

.stockscanner-page .stock-compare-table-wrap tr.same > td {
  color: var(--stock-text-soft);
}

/* Dark-mode scanner surfaces retain the same hierarchy and state contrast. */
html.dark .stockscanner-page {
  --stock-accent: #299fe8;
  --stock-accent-strong: #8bd2ff;
  --stock-accent-soft: #102f45;
  --stock-panel: var(--card-bg);
  --stock-panel-soft: #102534;
  --stock-line: #2b465b;
  --stock-text-soft: #adc0d0;
  --stock-success: #82e2a4;
  --stock-success-soft: #123927;
  --stock-warning: #ffd080;
  --stock-warning-soft: #3a2c14;
  --stock-danger: #ffaaa3;
  --stock-danger-soft: #3b1d20;
}

html.dark .stockscanner-page .stockscanner-hero {
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--stock-accent) 10%, var(--stock-panel)), var(--stock-panel) 60%);
}

html.dark .stockscanner-page :where(
  .stockscanner-store-context,
  .stockscanner-name-search,
  .stock-product-actions,
  .stockscanner-status,
  .stockscanner-empty,
  .stock-search-result,
  .stock-library-grid > section,
  .stock-library-item,
  .stock-batch-item,
  .stock-batch-stock,
  .stock-accessory-card,
  .stock-alternative-card,
  .stock-compare-product,
  .stock-compare-controls,
  .stock-spec-group,
  .stock-spec-explanation,
  .prijs-card
) {
  border-color: var(--stock-line);
  color: var(--text-color);
}

html.dark .stockscanner-page :where(
  .stockscanner-store-context,
  .stockscanner-status,
  .stock-batch-item,
  .prijs-card
) {
  border-left-color: var(--stock-accent);
}

html.dark .stockscanner-page .stock-alternative-card.original {
  border-color: color-mix(in srgb, var(--stock-accent) 52%, var(--stock-line));
  border-left-color: var(--stock-accent);
}

html.dark .stockscanner-page .stock-compare-product {
  border-top-color: var(--stock-accent);
}

html.dark .stockscanner-page .stockscanner-summary > div,
html.dark .stockscanner-page .stock-search-result,
html.dark .stockscanner-page .stock-library-item,
html.dark .stockscanner-page .stock-batch-stock,
html.dark .stockscanner-page .stock-compare-controls button,
html.dark .stockscanner-page .stock-compare-table-wrap table {
  background: var(--stock-panel);
}

html.dark .stockscanner-page :where(
  .stockscanner-status.error,
  .voorraad-resultaat.error,
  .stock-search-results.error,
  .stock-batch-stock.low
) {
  border-color: color-mix(in srgb, var(--stock-danger) 40%, var(--stock-line));
  background: var(--stock-danger-soft);
  color: var(--stock-danger);
}

html.dark .stockscanner-page .stock-batch-stock.enough {
  border-color: color-mix(in srgb, var(--stock-success) 35%, var(--stock-line));
  background: var(--stock-success-soft);
}

html.dark .stockscanner-page .stock-compare-table-wrap tbody tr:not(.different) > * {
  background: var(--stock-panel);
}

html.dark .stockscanner-page .stock-compare-table-wrap :where(thead th, thead th:first-child) {
  background: var(--stock-accent-soft);
}

html.dark .stockscanner-page .stock-compare-table-wrap tr.different > * {
  background: var(--stock-warning-soft);
}

html.dark .stockscanner-page :where(
  .stock-library-item > img,
  .stock-alternative-card > img,
  .stock-compare-product > img,
  .prijs-card__img,
  .stock-image-placeholder
) {
  background: #fff;
  color: #52606d;
}

/* Tablet: keep comparison relationships visible while reducing card columns. */
@media (max-width: 1024px) {
  .stockscanner-page .stockscanner-hero {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .stockscanner-page .stockscanner-hero .toolbar-copy {
    grid-column: 1 / -1;
  }

  .stockscanner-page .stockscanner-summary {
    min-width: 0;
  }

  .stockscanner-page .stock-batch-item {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .stockscanner-page .stock-batch-stocks {
    grid-column: 1 / -1;
  }
}

@media (max-width: 820px) {
  .stockscanner-page .stockscanner-hero {
    grid-template-columns: 1fr;
  }

  .stockscanner-page .stockscanner-hero .toolbar-copy {
    grid-column: auto;
  }

  .stockscanner-page .stock-library-grid {
    grid-template-columns: 1fr;
  }

  .stockscanner-page .stock-compare-form {
    grid-template-columns: minmax(0, 1fr) 48px minmax(0, 1fr);
  }

  .stockscanner-page .stock-compare-form > button[type="submit"] {
    grid-column: 1 / -1;
    width: 100%;
  }

  .stockscanner-page .stock-compare-products {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .stockscanner-page .stock-compare-product {
    grid-template-columns: 64px minmax(0, 1fr);
  }

  .stockscanner-page .stock-compare-product > img {
    width: 64px;
    height: 64px;
  }
}

/* Phone layouts, including narrow 320-430 px viewports. */
@media (max-width: 620px) {
  .stockscanner-page {
    gap: .75rem;
  }

  .stockscanner-page .stockscanner-workspace-tabs {
    grid-template-columns: repeat(4, minmax(104px, 1fr));
  }

  .stockscanner-page .stockscanner-section-heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
  }

  .stockscanner-page .stockscanner-section-heading > button {
    width: 100%;
  }

  .stockscanner-page .input-with-button {
    grid-template-columns: minmax(0, 1fr);
    gap: .5rem;
  }

  .stockscanner-page .input-with-button > input,
  .stockscanner-page .input-with-button > button {
    width: 100%;
    border-radius: 7px;
  }

  .stockscanner-page .filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .stockscanner-page .filters > :first-child,
  .stockscanner-page .filters > button {
    grid-column: 1 / -1;
  }

  .stockscanner-page .stock-batch-item {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .stock-batch-item-heading,
  .stockscanner-page .stock-batch-stocks {
    grid-column: auto;
  }

  .stockscanner-page .stock-batch-quantity {
    justify-content: start;
  }

  .stockscanner-page .stock-compare-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page #stockCompareSwap {
    justify-self: center;
  }

  .stockscanner-page .stock-compare-form > button[type="submit"] {
    grid-column: auto;
  }

  .stockscanner-page .stock-compare-product {
    grid-template-columns: minmax(0, 1fr);
    text-align: left;
  }

  .stockscanner-page .stock-compare-product > img {
    grid-row: auto;
    width: 100%;
    height: 88px;
  }

  .stockscanner-page .stock-compare-controls {
    align-items: stretch;
  }

  .stockscanner-page .stock-compare-controls > div,
  .stockscanner-page .stock-compare-controls > input {
    width: 100%;
    flex-basis: 100%;
  }

  .stockscanner-page .stock-compare-controls > div {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .stockscanner-page .stock-compare-controls button {
    padding-inline: .45rem;
    white-space: normal;
  }

  .stockscanner-page .stock-spec-group dl > div {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .stock-spec-explanation {
    grid-column: auto;
  }
}

@media (max-width: 430px) {
  .stockscanner-page {
    width: 100%;
    padding-left: max(.65rem, env(safe-area-inset-left, 0px));
    padding-right: max(.65rem, env(safe-area-inset-right, 0px));
  }

  .stockscanner-page > .card,
  .stockscanner-page .stockscanner-workspace-view > .card {
    border-radius: 9px;
  }

  .stockscanner-page .stockscanner-hero,
  .stockscanner-page .stockscanner-card,
  .stockscanner-page .stockscanner-detail-panel,
  .stockscanner-page .stockscanner-library-card,
  .stockscanner-page .stockscanner-batch-card,
  .stockscanner-page .stockscanner-compare-card {
    padding: .85rem;
  }

  .stockscanner-page .stockscanner-summary {
    gap: .35rem;
  }

  .stockscanner-page .stockscanner-summary > div {
    min-width: 0;
    padding: .58rem .35rem;
  }

  .stockscanner-page .stockscanner-summary strong {
    font-size: 1.15rem;
  }

  .stockscanner-page .stockscanner-summary span {
    font-size: .68rem;
  }

  .stockscanner-page .voorraad-scan-controls,
  .stockscanner-page .stock-product-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .voorraad-scan-controls > *,
  .stockscanner-page .stock-product-actions > * {
    width: 100%;
  }

  .stockscanner-page .filters {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .filters > :first-child,
  .stockscanner-page .filters > button {
    grid-column: auto;
  }

  .stockscanner-page .stock-library-grid > section {
    padding: .7rem;
  }

  .stockscanner-page .stock-library-item {
    grid-template-columns: 56px minmax(0, 1fr);
    gap: .55rem;
    padding: .6rem;
  }

  .stockscanner-page .stock-library-item > img {
    width: 56px;
    height: 56px;
  }

  .stockscanner-page .stock-library-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
  }

  .stockscanner-page .stock-library-actions > button,
  .stockscanner-page .stock-library-actions > a {
    width: 100%;
    min-height: 44px;
  }

  .stockscanner-page .stock-batch-item-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .stockscanner-page .stock-batch-item-heading > button {
    width: 100%;
  }

  .stockscanner-page .stock-batch-stocks {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .stock-alternative-card,
  .stockscanner-page .stock-alternative-card.original {
    grid-template-columns: 72px minmax(0, 1fr);
    gap: .65rem;
    padding: .72rem;
  }

  .stockscanner-page .stock-alternative-card > img,
  .stockscanner-page .stock-alternative-card.original > img {
    width: 72px;
    height: 72px;
  }

  .stockscanner-page .stock-alternative-card .stock-library-actions {
    grid-column: auto;
  }

  .stockscanner-page .stock-compare-products {
    gap: .45rem;
  }

  .stockscanner-page .stock-compare-product {
    padding: .58rem;
  }

  .stockscanner-page .stock-compare-product h3 {
    font-size: .86rem;
  }

  .stockscanner-page .stock-compare-product p,
  .stockscanner-page .stock-compare-product > strong {
    font-size: .74rem;
  }

  .stockscanner-page .stock-search-pagination {
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  }

  .stockscanner-page .stockscanner-table-heading {
    display: grid;
    gap: .2rem;
  }
}

@media (max-width: 350px) {
  .stockscanner-page .stockscanner-summary span {
    font-size: .64rem;
    letter-spacing: -.01em;
  }

  .stockscanner-page .stock-batch-quantity {
    grid-template-columns: 44px minmax(52px, 1fr) 44px;
    width: 100%;
  }

  .stockscanner-page .stock-batch-quantity > span {
    grid-column: 1 / -1;
  }

  .stockscanner-page .stock-alternative-card,
  .stockscanner-page .stock-alternative-card.original {
    grid-template-columns: minmax(0, 1fr);
  }

  .stockscanner-page .stock-alternative-card > img,
  .stockscanner-page .stock-alternative-card.original > img {
    width: 100%;
    height: 92px;
  }
}

@media (forced-colors: active) {
  .stockscanner-page .stockscanner-workspace-tabs button[aria-selected="true"],
  .stockscanner-page .stock-compare-controls button[aria-pressed="true"],
  .stockscanner-page .stock-product-actions button[aria-pressed="true"] {
    border: 2px solid Highlight;
    outline: 1px solid HighlightText;
  }

  .stockscanner-page :where(.stock-own-label, .stock-hq-label, .stock-accessory-proof) {
    border: 1px solid CanvasText;
  }
}
