* {
  box-sizing: border-box;
}

:root {
  color-scheme: light;
  --app-scale: 1;
  --app-width: 100vw;
  --app-height: 100dvh;
  --bg: #edf1ec;
  --surface: #fff;
  --surface-soft: #fbfbf7;
  --ink: #17211d;
  --muted: #627068;
  --line: #cfd8cf;
  --line-soft: #e2e8e1;
  --green: #164b39;
  --cream: #fff7dc;
  --gold: #f1c96f;
  --busy: #eef7ff;
  --busy-line: #9fc7e8;
  --busy-ink: #3f82b8;
  --pay: #e9f3ff;
  --pay-line: #7aa9d6;
  --pay-ink: #2c6c9e;
  --empty-ink: #8b9a91;
  --shadow: 0 12px 28px rgba(22, 33, 29, .08);
}

html,
body {
  margin: 0;
  width: var(--app-width);
  height: var(--app-height);
  overflow: hidden;
  font-family: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif;
  background: var(--bg);
  color: var(--ink);
  letter-spacing: 0;
  touch-action: manipulation;
  -webkit-text-size-adjust: 100%;
}

button {
  font: inherit;
  letter-spacing: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

button:disabled {
  cursor: not-allowed;
  opacity: .48;
}

h1,
h2,
p {
  margin: 0;
}

.app-shell {
  position: fixed;
  left: 0;
  top: 0;
  width: var(--app-width);
  height: var(--app-height);
  overflow: hidden;
  transform: none;
  display: grid;
  grid-template-rows: 96px minmax(0, 1fr);
  background:
    linear-gradient(180deg, rgba(255,255,255,.70), rgba(255,255,255,.18)),
    var(--bg);
}

.top {
  display: grid;
  grid-template-columns: 300px 330px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  padding: 10px 6px 8px;
  border-bottom: 1px solid var(--line);
  background: var(--surface-soft);
}

.brand,
.title-row {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

.title-row > div {
  min-width: 0;
}

.brand {
  position: relative;
}

.floor-toolbar {
  min-width: 0;
  display: grid;
  gap: 8px;
  align-content: center;
}

.floor-date {
  color: var(--ink);
  font-size: 18px;
  line-height: 1.1;
  font-weight: 900;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.floor-overview {
  min-width: 0;
  min-height: 58px;
  display: grid;
  align-content: center;
  gap: 5px;
  border: 1px solid #d5ddd4;
  border-radius: 16px;
  background: var(--surface);
  padding: 9px 12px;
}

.floor-overview strong {
  color: var(--ink);
  font-size: 22px;
  line-height: 1;
  font-weight: 930;
  white-space: nowrap;
}

.floor-overview span {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.2;
  font-weight: 820;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mark,
.back {
  width: 54px;
  height: 54px;
  flex: 0 0 auto;
  border-radius: 14px;
  display: grid;
  place-items: center;
  font-size: 26px;
  font-weight: 950;
}

.mark {
  background: var(--green);
  color: var(--cream);
}

.back {
  border: 1px solid #bfccc2;
  background: var(--surface);
  color: var(--ink);
}

.brand h1,
.title-row h1 {
  font-size: 31px;
  line-height: 1.05;
  font-weight: 930;
  white-space: nowrap;
}

.sub {
  margin-top: 5px;
  color: var(--muted);
  font-size: 15px;
  font-weight: 760;
  line-height: 1.2;
  white-space: nowrap;
}

.register-top .sub {
  overflow: hidden;
  text-overflow: ellipsis;
}

.header-tools {
  position: absolute;
  right: 0;
  bottom: 1px;
  display: flex;
  gap: 6px;
}

.floor-toolbar .header-tools {
  position: static;
}

.header-tool {
  min-width: 62px;
  height: 32px;
  border: 1px solid #c8d4ca;
  border-radius: 12px;
  background: var(--surface);
  color: var(--green);
  font-size: 13px;
  font-weight: 880;
}

.segments {
  justify-self: stretch;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  height: 56px;
  border: 1px solid #b9c8bc;
  border-radius: 18px;
  padding: 6px;
  background: #eef3ef;
}

.seg,
.cat,
.pay-button,
.action,
.primary,
.complete,
.menu-card,
.table {
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

.table,
.table * {
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}

.seg {
  min-width: 0;
  border: 0;
  border-radius: 13px;
  background: transparent;
  color: #526158;
  font-size: 20px;
  font-weight: 880;
  white-space: nowrap;
  word-break: keep-all;
  overflow: hidden;
  text-overflow: ellipsis;
}

.seg.active {
  background: var(--green);
  color: var(--cream);
  box-shadow: 0 8px 18px rgba(22, 75, 57, .20);
}

.metrics {
  display: grid;
  gap: 8px;
}

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

.metric,
.meta {
  min-width: 0;
  min-height: 58px;
  border: 1px solid #d5ddd4;
  border-radius: 16px;
  background: var(--surface);
  padding: 9px 12px;
}

.k {
  color: #718078;
  font-size: 12px;
  font-weight: 780;
  line-height: 1.1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.v {
  margin-top: 6px;
  color: var(--ink);
  font-size: 23px;
  line-height: 1;
  font-weight: 930;
  white-space: nowrap;
}

.floor-main {
  position: relative;
  display: grid;
  grid-template-columns: 128px minmax(0, 1fr) clamp(340px, 33vw, 460px);
  gap: 6px;
  padding: 4px 4px 4px;
  min-height: 0;
  overflow: hidden;
}

.reservation-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, .95fr) auto;
  gap: 8px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: var(--surface);
  padding: 8px;
  box-shadow: var(--shadow);
  overflow: hidden;
}

.reservation-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}

.reservation-head h2 {
  margin: 0;
  color: var(--ink);
  font-size: 16px;
  line-height: 1;
  font-weight: 940;
  white-space: nowrap;
}

.reservation-head span {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.reservation-add {
  width: 30px;
  height: 30px;
  flex: 0 0 auto;
  border: 1px solid #cfd8cf;
  border-radius: 10px;
  background: #f4f7f3;
  color: var(--green);
  font-size: 19px;
  line-height: 1;
  font-weight: 930;
}

.reservation-list {
  min-height: 0;
  display: grid;
  align-content: start;
  gap: 7px;
  overflow: auto;
}

.reservation-empty {
  min-height: 88px;
  display: grid;
  place-items: center;
  border: 1px dashed #cfd8cf;
  border-radius: 14px;
  background: #f7f8f4;
  color: var(--muted);
  font-size: 14px;
  font-weight: 880;
}

.reservation-mini-row {
  width: 100%;
  min-width: 0;
  border: 1px solid #d7e0d8;
  border-radius: 13px;
  background: #f8faf6;
  padding: 8px;
  display: grid;
  gap: 4px;
  text-align: left;
}

.reservation-mini-row strong {
  color: var(--ink);
  font-size: 12px;
  line-height: 1.2;
  font-weight: 900;
}

.reservation-mini-row span {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.2;
  font-weight: 780;
}

.reservation-check-panel {
  min-height: 0;
  border: 1px solid #dce5dd;
  border-radius: 14px;
  background: #f8faf6;
  padding: 8px;
  display: grid;
  gap: 6px;
}

.reservation-check-panel.has-due {
  border-color: #e2b150;
  background: #fff7dc;
}

.reservation-check-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}

.reservation-check-head strong {
  min-width: 0;
  color: var(--ink);
  font-size: 12px;
  line-height: 1.1;
  font-weight: 940;
}

.reservation-check-head span {
  color: #6f786f;
  font-size: 10px;
  font-weight: 880;
  white-space: nowrap;
}

.reservation-check-list {
  min-height: 0;
  max-height: 168px;
  overflow: auto;
  display: grid;
  gap: 5px;
}

.reservation-check-row,
.reservation-check-more,
.reservation-check-clear {
  width: 100%;
  min-width: 0;
  border: 1px solid rgba(190, 146, 44, .28);
  border-radius: 10px;
  background: rgba(255, 255, 255, .72);
  padding: 6px;
  text-align: left;
  display: grid;
  gap: 2px;
}

.reservation-check-row small {
  color: #7a5a14;
  font-size: 9px;
  line-height: 1.12;
  font-weight: 860;
}

.reservation-check-row span,
.reservation-check-more,
.reservation-check-clear {
  color: var(--ink);
  font-size: 11px;
  line-height: 1.15;
  font-weight: 900;
}

.reservation-check-more,
.reservation-check-clear {
  text-align: center;
}

.floor {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #f8f7f1;
  padding: 10px;
  overflow: hidden;
  box-shadow: var(--shadow);
}

.floor-head {
  display: flex;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
}

.chip,
.tag,
.status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  font-weight: 850;
}

.chip {
  min-height: 34px;
  padding: 7px 10px;
  border: 1px solid #d5ddd4;
  border-radius: 11px;
  background: var(--surface);
  color: #4e5c54;
  font-size: 13px;
  white-space: nowrap;
}

.seat-board {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 9px;
}

.seat-column {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  border: 1px solid #dde4dc;
  border-radius: 15px;
  background: #fffdf8;
  padding: 8px;
  overflow: hidden;
}

.seat-column.main-floor {
  align-content: start;
}

.seat-column.upper-floor {
  grid-template-rows: minmax(0, 1fr) minmax(0, 2fr);
  gap: 5px;
}

.seat-column-head,
.seat-block-head {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}

.seat-column-head {
  min-height: 32px;
  padding-bottom: 6px;
  border-bottom: 1px solid #e2e8e1;
}

.seat-column-head strong {
  color: var(--green);
  font-size: 22px;
  line-height: 1;
  font-weight: 960;
}

.seat-column-head span,
.seat-block-head span {
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.12;
  font-weight: 840;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.seat-block {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 5px;
  border-radius: 12px;
  overflow: hidden;
}

.seat-block.has-reminder-test {
  grid-template-rows: auto auto auto;
}

.seat-block.active {
  box-shadow: inset 0 0 0 2px rgba(22, 75, 57, .12);
}

.seat-block-head {
  min-height: 26px;
  padding: 0 3px;
}

.seat-block-head strong {
  color: var(--ink);
  font-size: 16px;
  line-height: 1;
  font-weight: 940;
}

.seat-list {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: repeat(var(--seat-count), minmax(0, 1fr));
  gap: 5px;
}

.main-floor .seat-block {
  height: 590px;
  align-self: start;
}

.main-floor .seat-list {
  grid-template-rows: repeat(var(--seat-count), 42px);
}

.floor-rows {
  min-height: 0;
  display: grid;
  grid-template-rows: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.floor-row {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: 66px minmax(0, 1fr);
  gap: 8px;
  border: 1px solid #dde4dc;
  border-radius: 18px;
  background:
    linear-gradient(90deg, rgba(22,75,57,.045) 0 1px, transparent 1px 100%),
    linear-gradient(180deg, rgba(22,75,57,.045) 0 1px, transparent 1px 100%),
    #fffdf8;
  background-size: 28px 28px;
  padding: 8px;
}

.floor-row.active {
  border-color: rgba(22, 75, 57, .48);
  box-shadow: inset 0 0 0 2px rgba(22, 75, 57, .08);
}

.floor-row-head {
  min-width: 0;
  display: grid;
  align-content: center;
  justify-items: start;
  gap: 6px;
  border-right: 1px solid #e0e6df;
  padding-right: 7px;
}

.floor-row-head strong {
  color: var(--green);
  font-size: 26px;
  line-height: 1;
  font-weight: 950;
}

.floor-row-head span,
.floor-row-head small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.12;
  font-weight: 850;
  white-space: nowrap;
}

.floor-table-row {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(var(--table-count), minmax(0, 1fr));
  gap: 7px;
}

.table {
  position: relative;
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: minmax(58px, .7fr) auto minmax(0, 1fr) auto 52px;
  grid-template-rows: minmax(0, 1fr);
  gap: 4px;
  align-items: center;
  border-radius: 12px;
  border: 2px solid #d7ded5;
  background: var(--surface);
  padding: 4px 6px;
  color: var(--ink);
  text-align: left;
  box-shadow: 0 10px 18px rgba(25, 33, 30, .08);
  touch-action: none;
}

.table.selected {
  border-color: var(--green);
  box-shadow: 0 0 0 5px rgba(22,75,57,.10), 0 12px 22px rgba(25, 33, 30, .14);
}

.table.busy {
  background: var(--busy);
  border-color: var(--busy-line);
}

.table.pay {
  background: var(--pay);
  border-color: var(--pay-line);
}

.table.drag-source {
  opacity: .34;
  transform: scale(.98);
}

.table.drop-target {
  border-color: var(--green);
  box-shadow: 0 0 0 7px rgba(22,75,57,.16), 0 16px 28px rgba(25, 33, 30, .18);
}

.table.grouped {
  box-shadow: 0 0 0 5px rgba(238, 183, 61, .22), 0 16px 28px rgba(25, 33, 30, .12);
}

.table.group-pickable {
  border-color: #e0c36d;
}

.table.group-draft-selected {
  border-color: var(--gold);
  background: #fff7d8;
  box-shadow: 0 0 0 7px rgba(238, 183, 61, .28), 0 16px 28px rgba(25, 33, 30, .14);
}

.table.reminder-due {
  --reminder-border: #d79b17;
  --reminder-bg: #fff5b8;
  --reminder-state: #bd7a00;
  --reminder-pulse: rgba(215, 155, 23, .34);
  --reminder-pulse-soft: rgba(215, 155, 23, .18);
  border-color: var(--reminder-border);
  background: var(--reminder-bg);
  animation: reminderPulse 1.05s ease-in-out infinite;
}

.table.reminder-due .state {
  background: var(--reminder-state);
  color: #fff;
}

.reminder-tone-orange {
  --reminder-border: #de7f1f;
  --reminder-bg: #ffe4c2;
  --reminder-state: #b95b00;
  --reminder-pulse: rgba(222, 127, 31, .34);
  --reminder-pulse-soft: rgba(222, 127, 31, .18);
}

.reminder-tone-red {
  --reminder-border: #d64a3d;
  --reminder-bg: #ffe0dc;
  --reminder-state: #b52d26;
  --reminder-pulse: rgba(214, 74, 61, .34);
  --reminder-pulse-soft: rgba(214, 74, 61, .18);
}

.reminder-tone-blue {
  --reminder-border: #3d83c9;
  --reminder-bg: #ddecff;
  --reminder-state: #2366a8;
  --reminder-pulse: rgba(61, 131, 201, .34);
  --reminder-pulse-soft: rgba(61, 131, 201, .18);
}

.reminder-tone-purple {
  --reminder-border: #8d65c7;
  --reminder-bg: #eee3ff;
  --reminder-state: #7147a8;
  --reminder-pulse: rgba(141, 101, 199, .34);
  --reminder-pulse-soft: rgba(141, 101, 199, .18);
}

.reminder-test-panel {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 74px;
  gap: 5px;
  align-items: stretch;
}

.reminder-test-table {
  height: 56px;
  min-height: 56px;
  grid-template-columns: 54px minmax(0, 1fr) 54px;
  border-style: dashed;
}

.reminder-test-table .table-meta {
  grid-column: 2;
}

.reminder-test-table .state {
  grid-column: 3;
}

.reminder-test-table .amount {
  display: none;
}

.reminder-test-table.reminder-done {
  border-color: #85bd8c;
  background: #dff3e4;
  box-shadow: 0 10px 18px rgba(25, 33, 30, .08);
}

.reminder-test-table.reminder-done .state {
  background: var(--green);
  color: #fff;
}

.reminder-test-actions {
  min-width: 0;
  display: grid;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 5px;
}

.reminder-test-actions .mini-action {
  min-width: 0;
  height: 100%;
  min-height: 0;
  border-radius: 10px;
  padding: 0 4px;
  font-size: 11px;
  line-height: 1.05;
}

.table-group-badge {
  grid-column: 2;
  grid-row: 1;
  align-self: center;
  justify-self: start;
  min-width: 28px;
  height: 16px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  background: var(--gold);
  color: #16211d;
  font-size: 10px;
  font-weight: 950;
}

.table-group-badge.draft {
  min-width: 48px;
  background: var(--green);
  color: #fff;
}

.drag-ghost {
  position: fixed;
  z-index: 80;
  pointer-events: none;
  opacity: .94;
  transform: scale(1.04);
  box-shadow: 0 22px 40px rgba(22, 33, 29, .24);
}

.table-id {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  overflow: hidden;
  font-size: 16px;
  line-height: 1;
  font-weight: 930;
}

.table-label {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.state {
  grid-column: 5;
  grid-row: 1;
  justify-self: end;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  height: 20px;
  padding: 0 4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  color: #fff;
  background: var(--empty-ink);
  font-size: 10px;
  font-weight: 860;
  white-space: nowrap;
}

.busy .state { background: var(--busy-ink); }
.pay .state { background: var(--pay-ink); }
.selected .state { background: var(--green); }

.table-meta {
  grid-column: 3;
  grid-row: 1;
  min-width: 0;
  color: #4e5c54;
  font-size: 11px;
  line-height: 1.3;
  font-weight: 760;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  align-self: center;
}

.amount {
  grid-column: 4;
  grid-row: 1;
  min-width: 0;
  margin-top: 0;
  color: var(--ink);
  font-size: 12px;
  line-height: 1;
  font-weight: 920;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  align-self: center;
  justify-self: end;
}

.floor-row.count-10 .floor-table-row {
  gap: 5px;
}

.floor-row.count-10 .table {
  border-radius: 13px;
  padding: 8px 5px;
}

.floor-row.count-10 .table-id {
  font-size: 18px;
}

.floor-row.count-10 .state {
  height: 21px;
  padding: 0 5px;
  font-size: 10px;
}

.floor-row.count-10 .table-meta {
  font-size: 11px;
}

.floor-row.count-10 .amount {
  font-size: 13px;
}

.floor-row.count-10 .table-group-badge {
  min-width: 28px;
  height: 19px;
  font-size: 10px;
}

.side {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  gap: 10px;
  min-height: 0;
}

.panel {
  border: 1px solid var(--line);
  border-radius: 20px;
  background: var(--surface);
  box-shadow: 0 10px 26px rgba(22, 33, 29, .07);
  overflow: hidden;
}

.panel-pad {
  padding: 16px;
}

.panel h2 {
  margin: 0 0 12px;
  color: var(--ink);
  font-size: 23px;
  line-height: 1.08;
  font-weight: 920;
}

.selected-card {
  background: var(--green);
  color: var(--cream);
  border: none;
}

.selected-card h2 {
  color: var(--cream);
}

.inline-register {
  height: 100%;
  min-height: 0;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.inline-head,
.modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.inline-head h2,
.modal-head h2 {
  margin: 0;
  color: var(--ink);
  font-size: 22px;
  line-height: 1.05;
  font-weight: 940;
}

.inline-head .sub,
.modal-head .sub {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  font-weight: 800;
}

.icon-btn {
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  border: 1px solid #cdd8cf;
  border-radius: 13px;
  background: var(--surface);
  color: var(--ink);
  font-size: 24px;
  line-height: 1;
  font-weight: 850;
}

.inline-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
}

.ticket-time-cells {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
}

.ticket-time-cell {
  appearance: none;
  min-width: 0;
  min-height: 42px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, .18);
  background: rgba(255, 255, 255, .10);
  padding: 7px;
  display: grid;
  align-content: center;
  gap: 3px;
  text-align: left;
  font: inherit;
}

button.ticket-time-cell {
  cursor: pointer;
}

.ticket-time-cell span {
  min-width: 0;
  color: rgba(255, 247, 220, .68);
  font-size: 11px;
  line-height: 1;
  font-weight: 860;
  white-space: nowrap;
}

.ticket-time-cell strong {
  min-width: 0;
  color: var(--cream);
  font-size: 17px;
  line-height: 1;
  font-weight: 940;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ticket-time-cell.reminder-due {
  --reminder-border: #d79b17;
  --reminder-bg: #fff1a6;
  --reminder-pulse: rgba(215, 155, 23, .34);
  --reminder-pulse-soft: rgba(215, 155, 23, .18);
  border-color: var(--reminder-border);
  background: var(--reminder-bg);
  animation: reminderPulse 1.05s ease-in-out infinite;
}

.ticket-time-cell.reminder-due span,
.ticket-time-cell.reminder-due strong {
  color: #3a2a00;
}

.ticket-time-cell.reminder-done {
  border-color: #85bd8c;
  background: #dff3e4;
}

.ticket-time-cell.reminder-done span,
.ticket-time-cell.reminder-done strong {
  color: #164b39;
}

.inline-register .kv {
  min-height: 38px;
  background: #f3f6f2;
  border: 1px solid #dbe3dc;
  padding: 6px;
}

.inline-register .kv .k {
  color: #66736b;
}

.inline-register .kv .v {
  color: var(--ink);
  font-size: 14px;
}

.inline-register .ticket-time-cell {
  min-height: 40px;
  border-color: #dbe3dc;
  background: #f3f6f2;
}

.inline-register .ticket-time-cell span {
  color: #66736b;
}

.inline-register .ticket-time-cell strong {
  color: var(--ink);
  font-size: 15px;
}

.inline-register .ticket-time-cell.reminder-due {
  border-color: #d79b17;
  background: #fff1a6;
}

.inline-register .ticket-time-cell.reminder-done {
  border-color: #85bd8c;
  background: #dff3e4;
}

.inline-tools {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
}

.inline-tools .action {
  min-height: 39px;
  font-size: 13px;
}

.inline-total-lines .ticket-foot {
  border: 1px solid #dbe3dc;
  border-radius: 16px;
  padding: 7px;
}

.inline-total-lines .line {
  font-size: 12px;
}

.inline-total-lines .line.total {
  font-size: 18px;
}

.inline-pay-methods {
  padding: 0;
  gap: 5px;
}

.inline-pay-methods .pay-button {
  height: 39px;
  font-size: 13px;
  border-radius: 12px;
}

.inline-total-card {
  margin: 0;
  padding: 9px;
  border-radius: 14px;
}

.inline-total-card .v {
  font-size: 26px;
}

.inline-complete {
  margin: auto 0 0;
  width: 100%;
  height: 48px;
  border-radius: 14px;
  font-size: 16px;
}

.group-summary {
  display: grid;
  gap: 5px;
  padding: 8px;
  border: 1px solid #dbe3dc;
  border-radius: 14px;
  background: #fffaf0;
}

.group-summary-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  color: #415149;
  font-size: 12px;
  font-weight: 820;
}

.group-summary-row strong {
  color: #17211d;
  font-size: 14px;
  font-weight: 950;
}

.selected-grid,
.summary-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.kv {
  min-height: 54px;
  border-radius: 14px;
  background: rgba(255,255,255,.10);
  padding: 9px;
}

.kv .k {
  color: rgba(255,247,220,.68);
}

.kv .v {
  color: var(--cream);
  font-size: 19px;
}

.primary,
.complete {
  width: 100%;
  border: none;
  color: #10201a;
  background: var(--gold);
  font-weight: 930;
}

.primary {
  height: 56px;
  border-radius: 17px;
  margin-top: 12px;
  font-size: 20px;
  white-space: nowrap;
}

.secondary-action {
  width: 100%;
  min-height: 48px;
  margin-top: 8px;
  border: 1px solid rgba(255,247,220,.36);
  border-radius: 16px;
  background: rgba(255,255,255,.12);
  color: var(--cream);
  font-size: 16px;
  font-weight: 900;
}

.secondary-action.light {
  border-color: rgba(255,247,220,.32);
  background: rgba(255,255,255,.08);
}

.group-draft-list {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.group-draft-list span {
  min-width: 42px;
  padding: 6px 9px;
  border-radius: 999px;
  background: rgba(255,247,220,.14);
  color: var(--cream);
  font-size: 13px;
  font-weight: 920;
  text-align: center;
}

.group-draft-note {
  margin: 10px 0 0;
  color: rgba(255,247,220,.72);
  font-size: 12px;
  line-height: 1.35;
  font-weight: 760;
}

.list {
  display: grid;
  gap: 8px;
}

.mini-row {
  border: 0;
  display: grid;
  grid-template-columns: 42px 1fr auto;
  gap: 8px;
  align-items: center;
  min-height: 44px;
  padding: 8px 10px;
  border-radius: 13px;
  background: #f3f6f2;
  color: #2a3831;
  font-size: 14px;
  font-weight: 770;
  text-align: left;
}

.mini-row .money {
  font-size: 15px;
  font-weight: 920;
  color: var(--ink);
}

.actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.action {
  min-height: 52px;
  border-radius: 15px;
  border: 1px solid #c9d4cb;
  background: var(--surface);
  color: #24332b;
  font-size: 16px;
  font-weight: 870;
}

.action.dark {
  border: none;
  background: var(--ink);
  color: var(--cream);
}

.simple-top {
  grid-template-columns: 520px 1fr;
}

.simple-note {
  justify-self: end;
  color: var(--muted);
  font-size: 20px;
  font-weight: 850;
}

.dashboard-top {
  grid-template-columns: 1fr 250px;
}

.dashboard-menu-button {
  display: none;
  width: 54px;
  height: 54px;
  border: 1px solid #bfccc2;
  border-radius: 14px;
  background: var(--surface);
  color: var(--ink);
  font-size: 25px;
  font-weight: 930;
}

.dashboard-top-actions {
  justify-self: end;
  display: flex;
  align-items: center;
  justify-content: end;
  gap: 10px;
}

.daily-save-state {
  min-height: 32px;
  border: 1px solid #d0d9d1;
  border-radius: 999px;
  background: #eef3ef;
  color: #45534a;
  padding: 7px 11px;
  font-size: 13px;
  font-weight: 860;
  white-space: nowrap;
}

.dashboard-main {
  position: relative;
  display: grid;
  grid-template-columns: 128px minmax(0, 1fr);
  gap: 6px;
  padding: 4px;
  min-height: 0;
  overflow: hidden;
}

.dashboard-nav {
  min-width: 0;
  min-height: 0;
  border: 1px solid #d5ddd4;
  border-radius: 14px;
  background: var(--surface-soft);
  padding: 7px;
  display: grid;
  grid-template-rows: auto;
  grid-auto-rows: auto;
  align-content: start;
  gap: 5px;
  box-shadow: var(--shadow);
}

.dashboard-nav-title {
  padding: 0 2px 4px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 870;
}

.dashboard-tab {
  min-height: 42px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: #334139;
  padding: 6px 7px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px;
  align-items: center;
  text-align: left;
}

.dashboard-tab span {
  min-width: 0;
  font-size: 14px;
  line-height: 1.08;
  font-weight: 900;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.dashboard-tab small {
  border-radius: 999px;
  background: #eef3ef;
  color: #6d7a72;
  padding: 3px 5px;
  font-size: 9px;
  font-weight: 850;
  white-space: nowrap;
}

.dashboard-tab.active {
  border-color: #164b39;
  background: var(--green);
  color: var(--cream);
}

.dashboard-tab.active small {
  background: rgba(255,247,220,.18);
  color: var(--cream);
}

.dashboard-content {
  min-width: 0;
  min-height: 0;
  overflow: auto;
}

.dashboard-nav-backdrop {
  display: none;
}

.dashboard-placeholder {
  min-height: 100%;
  display: grid;
  place-items: center;
  text-align: center;
}

.dashboard-placeholder h2 {
  margin: 0;
  font-size: 36px;
  font-weight: 940;
}

.dashboard-placeholder p {
  margin-top: 10px;
  color: var(--muted);
  font-size: 18px;
  font-weight: 850;
}

.dashboard-panel {
  padding: 14px;
  display: grid;
  gap: 12px;
}

.dashboard-panel-head {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: start;
}

.dashboard-panel-head h2 {
  margin: 0;
  font-size: 28px;
  font-weight: 940;
}

.dashboard-panel-head p {
  margin-top: 6px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 820;
}

.dashboard-actions {
  display: flex;
  align-items: end;
  gap: 10px;
}

.dashboard-month-controls {
  display: flex;
  align-items: end;
  gap: 8px;
}

.dashboard-month-controls label {
  display: grid;
  gap: 5px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.dashboard-month-input {
  width: 150px;
  height: 40px;
  border-radius: 12px;
}

.dashboard-loading {
  min-height: 260px;
  display: grid;
  place-items: center;
  color: var(--muted);
  font-size: 18px;
  font-weight: 850;
}

.dashboard-kpis {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
}

.dashboard-kpis > div {
  min-height: 82px;
  border: 1px solid #d8e1d9;
  border-radius: 16px;
  background: var(--surface);
  padding: 12px;
  display: grid;
  align-content: center;
}

.dashboard-kpis span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.dashboard-kpis strong {
  margin-top: 7px;
  color: var(--ink);
  font-size: 24px;
  line-height: 1;
  font-weight: 950;
  white-space: nowrap;
}

.dashboard-grid {
  display: grid;
  gap: 12px;
}

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

.breakdown-list,
.source-list,
.compact-list,
.trend-list {
  display: grid;
  gap: 8px;
}

.breakdown-row,
.source-row,
.compact-list > div {
  min-height: 38px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: var(--surface);
  padding: 8px 10px;
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
}

.source-row {
  display: grid;
  grid-template-columns: 1fr 160px 120px;
}

.source-row code {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.breakdown-row span,
.source-row span,
.compact-list span,
.trend-row span,
.monthly-table span {
  color: #435148;
  font-size: 14px;
  font-weight: 840;
}

.breakdown-row strong,
.source-row strong,
.compact-list strong,
.trend-row strong,
.monthly-table strong,
.readonly-money {
  color: var(--ink);
  font-size: 16px;
  font-weight: 930;
  text-align: right;
  white-space: nowrap;
}

.trend-row {
  display: grid;
  grid-template-columns: 96px 1fr 110px;
  gap: 10px;
  align-items: center;
}

.trend-row > div {
  height: 12px;
  border-radius: 999px;
  background: #e6ece5;
  overflow: hidden;
}

.trend-row i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
}

.monthly-table {
  display: grid;
  gap: 6px;
}

.monthly-table-head,
.monthly-table-row {
  min-height: 38px;
  display: grid;
  grid-template-columns: 116px repeat(5, minmax(0, 1fr));
  gap: 8px;
  align-items: center;
  border-radius: 12px;
  padding: 7px 10px;
}

.monthly-table-head {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.monthly-table-row {
  border: 1px solid #d8e1d9;
  background: var(--surface);
}

.gmail-config-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.gmail-config-grid .wide {
  grid-column: 1 / -1;
}

.gmail-actions {
  margin-top: 10px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.gmail-note {
  margin-top: 10px;
  border-radius: 12px;
  background: #f3f6f2;
  color: var(--muted);
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.45;
  font-weight: 760;
}

.reservation-candidate-list {
  display: grid;
  gap: 10px;
}

.reservation-candidate {
  border: 1px solid #d6dfd8;
  border-radius: 14px;
  background: #fbfcfa;
  padding: 12px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 116px;
  gap: 12px;
}

.reservation-candidate-main {
  min-width: 0;
  display: grid;
  gap: 5px;
}

.candidate-meta {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

.candidate-meta strong,
.candidate-title {
  color: var(--ink);
  font-weight: 900;
}

.candidate-meta span,
.candidate-detail,
.candidate-subject,
.candidate-warning {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  font-weight: 760;
}

.candidate-title {
  font-size: 18px;
  line-height: 1.2;
}

.candidate-subject {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.candidate-warning {
  color: #9a5b10;
}

.reservation-candidate-actions {
  display: grid;
  gap: 8px;
  align-content: center;
}

.reservation-table {
  display: grid;
  gap: 6px;
}

.reservation-table-head,
.reservation-table-row {
  display: grid;
  grid-template-columns: 132px minmax(130px, 1fr) 64px 116px minmax(160px, 1.6fr) 68px;
  gap: 6px;
  align-items: center;
}

.reservation-table-head {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.reservation-table-row {
  min-height: 46px;
  border: 1px solid #e0e6df;
  border-radius: 12px;
  background: #fbfcfa;
  padding: 8px 10px;
  color: #35453d;
  font-size: 13px;
  font-weight: 760;
}

.reservation-table-row > * {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.payroll-grid {
  display: grid;
  grid-template-columns: 150px 110px 100px 100px 110px 120px 1fr;
  gap: 7px;
  align-items: center;
}

.monthly-expense-grid {
  display: grid;
  grid-template-columns: 150px 1fr 130px 1fr 74px;
  gap: 7px;
  align-items: center;
}

.menu-catalog-grid {
  display: grid;
  grid-template-columns: 150px minmax(220px, 1fr) 110px minmax(180px, .8fr) 92px 108px 64px;
  gap: 7px;
  align-items: center;
}

.payroll-head {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.readonly-money {
  min-height: 40px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: #f7f9f6;
  padding: 8px 10px;
  display: grid;
  align-content: center;
  gap: 2px;
}

.readonly-money small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1;
  font-weight: 820;
}

.menu-editor-grid {
  align-items: start;
}

.menu-grouped-list {
  display: grid;
  gap: 8px;
}

.menu-cat-group {
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface);
  overflow: hidden;
}

.menu-cat-head {
  display: grid;
  grid-template-columns: 40px 70px 1fr auto auto auto;
  gap: 8px;
  align-items: center;
  padding: 7px 10px;
}

.menu-cat-order {
  display: grid;
  grid-template-columns: repeat(2, 30px);
  gap: 4px;
}

.mini-action.icon-only {
  min-width: 0;
  min-height: 34px;
  padding: 0;
  font-size: 14px;
  line-height: 1;
}

.menu-cat-group.open .menu-cat-head {
  border-bottom: 1px solid var(--line-soft);
  background: #f4f8f5;
}

.cat-toggle {
  min-height: 38px;
  border: 1px solid #cdd9d1;
  border-radius: 10px;
  background: var(--surface);
  font-size: 15px;
  color: #384840;
}

.cat-count {
  font-size: 12.5px;
  color: #526057;
  white-space: nowrap;
}

.menu-cat-group .menu-catalog-grid {
  padding: 8px 10px 4px;
}

.cat-group-actions {
  padding: 4px 10px 10px;
}

.toggle-row {
  min-height: 40px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: var(--surface);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: #435148;
  font-size: 13px;
  font-weight: 850;
  white-space: nowrap;
}

.setup-main,
.qr-main,
.course-main,
.check-screen-main {
  padding: 14px 18px 18px;
  min-height: 0;
  overflow: hidden;
}

.check-screen-main {
  overflow: auto;
}

.setup-main {
  display: grid;
  place-items: stretch;
}

.setup-panel {
  display: grid;
  grid-template-rows: auto 1fr;
}

.course-choice-grid {
  padding: 18px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 168px;
  gap: 14px;
  align-content: start;
}

.course-choice {
  border: 1px solid #cbd7cd;
  border-radius: 20px;
  background: var(--surface);
  color: var(--ink);
  padding: 18px;
  display: grid;
  grid-template-rows: 1fr auto;
  text-align: left;
  box-shadow: 0 12px 22px rgba(22, 33, 29, .07);
}

.course-name {
  font-size: 30px;
  line-height: 1.1;
  font-weight: 940;
}

.course-detail {
  color: var(--muted);
  font-size: 17px;
  font-weight: 790;
}

.ticket-setup-grid {
  min-height: 0;
  padding: 14px 18px 18px;
  display: grid;
  grid-template-columns: 430px 1fr;
  gap: 18px;
}

.setup-block {
  min-height: 0;
  border: 1px solid var(--line-soft);
  border-radius: 18px;
  background: #fbfcfa;
  padding: 14px;
  display: grid;
  align-content: start;
  gap: 12px;
}

.course-compact {
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
  overflow: hidden;
}

/* 右カラム：設定群は内部スクロール、「伝票を作る」は常に下に固定表示 */
.setup-controls {
  grid-template-rows: minmax(0, 1fr) auto auto;
  align-content: stretch;
  gap: 10px;
  overflow: hidden;
}

.setup-scroll {
  min-height: 0;
  overflow-y: auto;
  display: grid;
  align-content: start;
  gap: 12px;
  padding-right: 4px;
}

.setup-label {
  color: #4f5e55;
  font-size: 16px;
  line-height: 1;
  font-weight: 900;
}

.compact-course-list,
.normal-menu-select-list {
  min-height: 0;
  display: grid;
  gap: 8px;
  overflow: auto;
  align-content: start;
}

.normal-menu-select-list {
  max-height: 152px;
  overflow: visible;
}

.setup-combine-mark {
  width: 32px;
  height: 32px;
  margin: 2px auto;
  border-radius: 50%;
  background: #eef4ef;
  color: #315044;
  display: grid;
  place-items: center;
  font-size: 20px;
  line-height: 1;
  font-weight: 900;
  pointer-events: none;
}

.compact-course {
  min-height: 56px;
  border: 1px solid #cfdad1;
  border-radius: 15px;
  background: var(--surface);
  color: var(--ink);
  padding: 9px 12px;
  display: grid;
  gap: 4px;
  text-align: left;
}

.compact-course.active {
  border-color: var(--green);
  background: #eef6f1;
  box-shadow: inset 0 0 0 2px rgba(22,75,57,.18);
}

.compact-course span {
  font-size: 18px;
  line-height: 1.15;
  font-weight: 920;
}

.compact-course small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
  font-weight: 780;
}

.time-preview {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.time-preview > div,
.guest-total {
  min-height: 70px;
  border-radius: 16px;
  border: 1px solid #d8e1d9;
  background: var(--surface);
  padding: 12px;
  display: grid;
  align-content: center;
}

.time-preview span,
.guest-total span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 820;
}

.time-preview strong,
.guest-total strong {
  margin-top: 5px;
  color: var(--ink);
  font-size: 24px;
  line-height: 1;
  font-weight: 940;
}

.time-preview.muted strong {
  color: #8a9790;
}

.setup-time-strip {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.time-strip-cell {
  min-width: 0;
  min-height: 70px;
  border-radius: 15px;
  border: 1px solid #d8e1d9;
  background: var(--surface);
  padding: 10px;
  display: grid;
  align-content: center;
  gap: 7px;
}

.time-strip-cell span {
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1;
  font-weight: 850;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.time-strip-cell strong {
  min-width: 0;
  color: var(--ink);
  font-size: 20px;
  line-height: 1;
  font-weight: 940;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.time-strip-cell.muted strong {
  color: #8a9790;
}

.time-wheel-select {
  width: 100%;
  min-width: 0;
  height: 32px;
  border: 1px solid #cdd8d0;
  border-radius: 10px;
  background: #fff;
  color: var(--ink);
  padding: 0 6px;
  font-size: 16px;
  font-weight: 900;
}

.guest-steppers {
  display: grid;
  grid-template-columns: 1fr 1fr 140px;
  gap: 10px;
  align-items: stretch;
}

.guest-stepper {
  min-height: 86px;
  border-radius: 17px;
  border: 1px solid #d8e1d9;
  background: var(--surface);
  padding: 10px;
  display: grid;
  gap: 8px;
}

.guest-stepper > span {
  color: var(--muted);
  font-size: 14px;
  font-weight: 860;
}

.stepper-control {
  height: 42px;
  display: grid;
  grid-template-columns: 42px 1fr 42px;
  border: 1px solid #cedbd1;
  border-radius: 14px;
  overflow: hidden;
}

.stepper-control button {
  border: none;
  background: #eef4ef;
  color: var(--green);
  font-size: 24px;
  font-weight: 950;
}

.stepper-control strong {
  display: grid;
  place-items: center;
  color: var(--ink);
  background: var(--surface);
  font-size: 22px;
  font-weight: 930;
}

.route-segments {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.referrer-block {
  display: grid;
  gap: 8px;
}

.referrer-segments {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.discount-block {
  display: grid;
  gap: 8px;
}

.discount-segments {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.discount-segments .route-btn {
  font-size: 15px;
}

.staff-only-setup-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.setup-quick-charges {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}

.setup-check-card {
  min-width: 0;
  min-height: 88px;
  border: 1px solid #cbd8ce;
  border-radius: 15px;
  background: var(--surface);
  color: #34433b;
  padding: 9px 10px;
  display: grid;
  grid-template-rows: auto auto;
  gap: 8px;
  font-weight: 880;
}

.setup-check-card-compact {
  min-height: 64px;
  padding: 7px 8px;
  border-radius: 12px;
  gap: 6px;
}

.setup-check-card-compact .setup-check-main {
  grid-template-columns: 18px minmax(0, 1fr);
  gap: 6px;
}

.setup-check-card-compact .setup-check-main input {
  width: 16px;
  height: 16px;
}

.setup-check-card-compact .setup-check-main span {
  font-size: 12px;
  line-height: 1.1;
}

.setup-check-card-compact .setup-money-control {
  grid-template-columns: minmax(0, 1fr) 28px;
  gap: 5px;
}

.setup-check-card-compact .setup-money-control input {
  height: 30px;
  padding: 5px 6px;
  font-size: 13px;
}

.setup-check-card-compact .setup-money-control small {
  font-size: 10px;
}

.setup-check-main {
  min-width: 0;
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}

.setup-check-main input {
  width: 18px;
  height: 18px;
  accent-color: var(--green);
}

.setup-check-main span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.setup-money-control {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}

.setup-money-control input {
  min-width: 0;
  height: 38px;
  font-size: 16px;
}

.setup-money-control small,
.setup-price-card small {
  color: var(--green);
  font-size: 12px;
  font-weight: 930;
  white-space: nowrap;
}

.setup-price-card {
  min-width: 0;
  min-height: 72px;
  border: 1px solid #d8e1d9;
  border-radius: 15px;
  background: var(--surface);
  padding: 10px;
  display: grid;
  grid-template-columns: 120px minmax(0, 180px) auto;
  gap: 8px;
  align-items: center;
}

.setup-price-card > span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 880;
}

.setup-price-card input {
  height: 40px;
  font-size: 17px;
}

.setup-check-card.active {
  border-color: var(--green);
  background: #eef6f1;
  box-shadow: inset 0 0 0 2px rgba(22,75,57,.14);
}

.route-btn {
  height: 56px;
  border: 1px solid #cbd8ce;
  border-radius: 16px;
  background: var(--surface);
  color: #3d4d44;
  font-size: 17px;
  font-weight: 880;
}

.route-btn.active {
  border: none;
  background: var(--green);
  color: var(--cream);
}

.create-ticket {
  height: 60px;
  margin-top: 4px;
}

.qr-main {
  display: grid;
  grid-template-columns: 650px 376px;
  gap: 18px;
}

.qr-panel {
  display: grid;
  grid-template-rows: 1fr auto;
  place-items: center;
  padding: 18px;
}

.qr-box {
  width: 410px;
  height: 410px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 24px;
  background: #fff;
}

.qr-svg {
  width: 360px;
  height: 360px;
}

.qr-url {
  width: 100%;
  min-height: 70px;
  border-radius: 16px;
  background: #f3f6f2;
  color: #314039;
  font-size: 17px;
  line-height: 1.35;
  font-weight: 760;
  word-break: break-all;
  padding: 14px;
}

.qr-settings {
  display: grid;
  grid-template-rows: auto 1fr;
}

.field-stack,
.course-form {
  display: grid;
  gap: 10px;
  align-content: start;
  padding: 16px;
}

.field-label {
  color: var(--muted);
  font-size: 14px;
  font-weight: 840;
}

.text-field {
  width: 100%;
  height: 48px;
  border: 1px solid #cbd6cd;
  border-radius: 14px;
  background: var(--surface);
  color: var(--ink);
  padding: 0 12px;
  font: inherit;
  font-size: 17px;
  font-weight: 760;
}

.action.full {
  width: 100%;
}

.course-main {
  display: grid;
  grid-template-columns: 286px 1fr;
  gap: 14px;
}

.course-list,
.course-editor {
  min-height: 0;
  display: grid;
  grid-template-rows: auto 1fr;
}

.course-list-body {
  padding: 12px;
  display: grid;
  gap: 10px;
  align-content: start;
  overflow: auto;
}

.course-row {
  border: 1px solid #d4ded6;
  border-radius: 16px;
  background: var(--surface);
  padding: 13px;
  color: var(--ink);
  text-align: left;
  display: grid;
  gap: 6px;
}

.course-row.active {
  border-color: var(--green);
  box-shadow: inset 0 0 0 2px rgba(22,75,57,.16);
}

.course-row span {
  font-size: 18px;
  font-weight: 900;
}

.course-row small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 760;
}

.course-editor {
  grid-template-rows: auto auto 1fr;
}

.course-form {
  grid-template-columns: 90px 1fr 70px 130px 80px 130px;
  align-items: end;
  border-bottom: 1px solid var(--line-soft);
}

.course-editor-actions {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: 160px 120px;
  gap: 8px;
  justify-content: end;
}

.course-editor-actions .primary,
.course-editor-actions .action {
  height: 48px;
  margin: 0;
  border-radius: 14px;
  font-size: 16px;
}

.course-menu-pick {
  padding: 12px 16px 16px;
  overflow: auto;
  display: grid;
  gap: 12px;
  align-content: start;
}

.course-category h3 {
  margin: 0 0 8px;
  font-size: 16px;
  color: var(--muted);
}

.course-item-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.course-check {
  min-height: 44px;
  display: flex;
  align-items: center;
  gap: 7px;
  border: 1px solid #d5dfd7;
  border-radius: 13px;
  background: #f7f9f6;
  padding: 8px;
  color: #2c3b33;
  font-size: 13px;
  font-weight: 770;
}

.course-top-actions {
  display: flex;
  gap: 8px;
  align-items: center;
}

.course-top-actions .action,
.course-top-actions .primary {
  min-width: 110px;
  height: 48px;
  border-radius: 14px;
  font-size: 16px;
}

.menu-admin-tabs {
  margin: 0 0 14px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.menu-admin-tab {
  min-height: 48px;
  border: 1px solid #cdd9d1;
  border-radius: 14px;
  background: var(--surface);
  color: #384840;
  font-size: 16px;
  font-weight: 900;
}

.menu-admin-tab.active {
  border-color: var(--green);
  background: #edf6f0;
  color: var(--green);
  box-shadow: inset 0 0 0 2px rgba(22,75,57,.14);
}

.menu-course-tab {
  display: grid;
  gap: 12px;
}

.course-axis-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.course-axis-summary > div {
  min-height: 82px;
  border: 1px solid #d5dfd7;
  border-radius: 14px;
  background: #f7faf7;
  padding: 12px;
  display: grid;
  align-content: start;
  gap: 7px;
}

.course-axis-summary strong {
  color: var(--ink);
  font-size: 16px;
  line-height: 1.15;
  font-weight: 930;
}

.course-axis-summary span {
  color: #4d5d54;
  font-size: 13px;
  line-height: 1.35;
  font-weight: 760;
}

.embedded-course-main {
  min-height: 720px;
  padding: 0;
  overflow: visible;
}

.embedded-course-main .course-list,
.embedded-course-main .course-editor {
  border: 1px solid var(--line-soft);
  border-radius: 16px;
  background: var(--surface);
  overflow: hidden;
}

.embedded-course-main.food-focus .course-rule-columns,
.embedded-course-main.drink-focus .course-rule-columns {
  grid-template-columns: minmax(0, 1fr);
}

/* タブ表示時は左右2分割をやめて縦積みにし、一覧は横並びのチップにする */
.embedded-course-main.food-focus,
.embedded-course-main.drink-focus {
  grid-template-columns: 1fr;
  min-height: 0;
}

.embedded-course-main.food-focus .course-list-body,
.embedded-course-main.drink-focus .course-list-body {
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
}

.embedded-course-main.food-focus .course-row,
.embedded-course-main.drink-focus .course-row {
  padding: 9px 11px;
  gap: 3px;
}

.attach-drink-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.sub-head {
  border-top: 1px solid var(--line-soft);
}

.course-editor {
  grid-template-rows: auto auto auto auto 1fr;
}

.course-form {
  grid-template-columns: 1fr;
  border-bottom: 1px solid var(--line-soft);
}

.drink-editor {
  background: #f8faf7;
}

.course-settings-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: end;
}

.course-attach-cell {
  grid-column: 1 / -1;
}

.field-cell {
  min-width: 0;
  display: grid;
  gap: 6px;
}

.field-cell span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.field-cell.wide {
  grid-column: span 2;
}

.course-sub-options {
  border-bottom: 1px solid var(--line-soft);
  padding: 12px 16px;
  display: grid;
  gap: 8px;
  background: #fbfcfa;
}

.course-sub-options h3,
.rule-head h3 {
  margin: 0;
  color: var(--ink);
  font-size: 17px;
  line-height: 1.2;
  font-weight: 920;
}

.sub-option-row {
  min-height: 42px;
  border: 1px solid #d5dfd7;
  border-radius: 13px;
  background: var(--surface);
  padding: 9px 11px;
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 10px;
  align-items: center;
}

.sub-option-row strong {
  color: var(--ink);
  font-size: 14px;
  font-weight: 920;
}

.sub-option-row span {
  color: #4c5a52;
  font-size: 13px;
  line-height: 1.35;
  font-weight: 760;
}

.course-rule-columns {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(320px, .72fr);
  gap: 0;
}

.course-rule-columns .course-menu-pick + .course-menu-pick {
  border-left: 1px solid var(--line-soft);
}

.rule-head {
  position: static;
  z-index: 1;
  border: 1px solid #d5dfd7;
  border-radius: 14px;
  background: #f4f8f4;
  padding: 10px 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.rule-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.course-category-head {
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.course-category {
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface);
  padding: 7px 10px;
}

.course-category.open {
  background: #fbfdfb;
}

.course-category.pseudo-category {
  border-color: #bcd7c6;
  background: #f2f8f4;
}

.course-category-head h3 {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.base-dish-block {
  border: 1px solid #bcd7c6;
  border-radius: 12px;
  background: #f2f8f4;
  padding: 10px 12px;
  margin-bottom: 10px;
}

.base-dish-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}

.base-dish-add {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  align-items: center;
}

.base-dish-add select {
  flex: 1 1 auto;
  min-width: 0;
}

.base-dish-remove {
  margin-left: 6px;
  border: 0;
  background: transparent;
  color: #a33;
  font-weight: 900;
  font-size: 14px;
  padding: 0 2px;
}

.base-dish {
  padding: 4px 11px;
  border-radius: 999px;
  border: 1px solid #bcd7c6;
  background: var(--surface);
  color: #164b39;
  font-size: 13.5px;
  font-weight: 800;
}

.course-category-head h3 {
  margin: 0;
}

.category-rule-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.mini-action {
  min-height: 32px;
  border: 1px solid #ccd8cf;
  border-radius: 10px;
  background: var(--surface);
  color: #385046;
  padding: 0 9px;
  font-size: 12px;
  font-weight: 850;
}

.course-rule-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.course-rule-row {
  min-width: 0;
  min-height: 58px;
  border: 1px solid #d5dfd7;
  border-radius: 13px;
  background: #f7f9f6;
  padding: 8px;
  display: grid;
  grid-template-columns: 1fr 104px;
  gap: 8px;
  align-items: center;
}

.course-rule-row strong {
  display: block;
  min-width: 0;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.25;
  font-weight: 850;
}

.course-rule-row small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  font-weight: 740;
}

.normal-rule-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.normal-rule-row {
  min-width: 0;
  min-height: 76px;
  border: 1px solid #d5dfd7;
  border-radius: 13px;
  background: #f7f9f6;
  padding: 8px;
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr) 128px;
  gap: 8px;
  align-items: center;
}

.normal-rule-row.muted {
  background: #f1f3f1;
  color: #7b8981;
}

.normal-rule-name {
  min-width: 0;
}

.normal-rule-name strong {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.25;
  font-weight: 850;
}

.normal-rule-name small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  font-weight: 740;
}

.normal-price-override {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.normal-price-override span,
.normal-price-override small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.1;
  font-weight: 820;
}

.normal-price-override input {
  width: 100%;
}

.normal-settings-grid {
  grid-template-columns: 1fr 1fr 1fr;
}

.compact-select {
  height: 40px;
  border-radius: 11px;
  font-size: 13px;
  padding: 0 8px;
}

.drink-plan-segments .route-btn {
  height: 64px;
  line-height: 1.15;
}

.route-btn small {
  font-size: 11px;
  font-weight: 780;
}

.course-option-groups {
  display: grid;
  gap: 10px;
}

.course-option-group {
  display: grid;
  gap: 7px;
}

.option-group-label,
.setup-foot-note {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.setup-foot-note {
  min-height: 38px;
  border-radius: 12px;
  background: #f3f7f3;
  padding: 10px 12px;
}

.guest-total.warn {
  border-color: #d98d69;
  background: #fff7f0;
}

.split-line {
  color: #526057;
}

@media (max-width: 900px) {
  .course-main,
  .course-rule-columns,
  .course-axis-summary {
    grid-template-columns: 1fr;
  }

  .ticket-setup-grid {
    grid-template-columns: minmax(300px, 390px) minmax(0, 1fr);
    gap: 12px;
    padding: 12px;
  }

  .course-rule-columns .course-menu-pick + .course-menu-pick {
    border-left: none;
    border-top: 1px solid var(--line-soft);
  }

  .field-cell.wide {
    grid-column: auto;
  }

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

.register-top {
  grid-template-columns: 1fr;
  gap: 0;
}

.register-top .title-row {
  min-width: 0;
}

.register-main {
  display: grid;
  grid-template-columns: 296px minmax(390px, 1fr) 292px;
  gap: 6px;
  padding: 4px;
  min-height: 0;
  overflow: hidden;
}

.ticket,
.menu,
.pay-panel {
  min-height: 0;
  display: grid;
}

.ticket {
  grid-template-rows: auto 1fr auto;
}

.menu {
  grid-template-rows: auto auto 1fr;
}

.pay-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.panel-head {
  min-height: 62px;
  padding: 15px 16px;
  border-bottom: 1px solid var(--line-soft);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  background: var(--surface-soft);
}

.panel-head h2 {
  margin: 0;
  font-size: 24px;
  font-weight: 930;
}

.tag {
  min-height: 30px;
  padding: 7px 10px;
  background: #eef3ef;
  color: #55625a;
  font-size: 13px;
  white-space: nowrap;
}

.items {
  padding: 12px;
  overflow: auto;
  display: grid;
  gap: 9px;
  align-content: start;
}

.empty-state {
  min-height: 140px;
  border: 1px dashed #c9d4cb;
  border-radius: 18px;
  display: grid;
  place-items: center;
  text-align: center;
  color: #68756d;
  font-size: 17px;
  font-weight: 760;
  padding: 20px;
}

.order-plan-stack {
  display: grid;
  gap: 9px;
}

.order-plan-row {
  border: 1px solid #d8e1d9;
  border-radius: 14px;
  background: #fbfcfa;
  padding: 10px;
  display: grid;
  gap: 9px;
}

.plan-row-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: start;
}

.plan-row-head .name {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.16;
  font-weight: 900;
}

.plan-row-head .sub {
  margin-top: 4px;
  color: #66736b;
  font-size: 12px;
  line-height: 1.25;
  font-weight: 760;
}

.mini-segments {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.mini-segment {
  min-height: 34px;
  border: 1px solid #ccd8cf;
  border-radius: 12px;
  background: var(--surface);
  color: #31443a;
  padding: 7px 10px;
  font-size: 12px;
  line-height: 1.15;
  font-weight: 850;
}

.mini-segment.active {
  border-color: var(--green);
  background: #e9f3ed;
  color: var(--green);
  box-shadow: inset 0 0 0 1px rgba(22, 75, 57, .18);
}

.ticket-guest-controls {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.ticket-guest-stepper {
  min-width: 0;
  border: 1px solid #d4ded5;
  border-radius: 12px;
  background: var(--surface);
  display: grid;
  grid-template-columns: 1fr 34px 42px 34px;
  align-items: center;
  overflow: hidden;
}

.ticket-guest-stepper span {
  padding-left: 10px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 820;
}

.ticket-guest-stepper strong {
  text-align: center;
  color: var(--ink);
  font-size: 16px;
  font-weight: 920;
}

.ticket-guest-stepper button {
  height: 34px;
  border: none;
  background: transparent;
  color: var(--green);
  font-size: 18px;
  font-weight: 940;
}

.ticket-option-groups {
  display: grid;
  gap: 8px;
}

.ticket-option-group {
  display: grid;
  gap: 6px;
}

.ticket-option-group > span,
.ticket-drink-price > span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1;
  font-weight: 820;
}

.ticket-drink-price {
  display: grid;
  grid-template-columns: 92px 110px 1fr;
  gap: 8px;
  align-items: center;
}

.ticket-drink-price small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 760;
}

.item {
  display: grid;
  grid-template-columns: 1fr 78px 72px;
  gap: 8px;
  align-items: center;
  min-height: 66px;
  padding: 9px;
  border-radius: 16px;
  background: #f4f7f3;
}

.order-list-items .item.order-list-item-highlight {
  background: #e8f3ed;
  box-shadow: inset 0 0 0 2px rgba(22, 75, 57, .28), 0 6px 18px rgba(22, 75, 57, .12);
  transition: background .18s ease, box-shadow .18s ease;
}

.item .name {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.16;
  font-weight: 890;
}

.item .sub {
  margin-top: 4px;
  color: #66736b;
  font-size: 12px;
  font-weight: 730;
}

.qty {
  display: grid;
  grid-template-columns: 24px 1fr 24px;
  gap: 4px;
  align-items: center;
  height: 38px;
  border-radius: 13px;
  background: var(--surface);
  border: 1px solid #d4ded5;
  overflow: hidden;
}

.qty span {
  text-align: center;
  font-size: 17px;
  font-weight: 920;
}

.qty button {
  height: 100%;
  border: none;
  background: transparent;
  color: var(--green);
  font-size: 21px;
  font-weight: 950;
}

.per-guest-qty {
  grid-template-columns: 1fr 42px;
}

.per-guest-qty span {
  font-size: 14px;
}

.per-guest-qty button {
  color: #8b3f35;
  font-size: 12px;
  font-weight: 900;
}

.price {
  text-align: right;
  color: var(--ink);
  font-size: 16px;
  font-weight: 920;
}

.ticket-foot {
  border-top: 1px solid var(--line-soft);
  padding: 12px;
  background: var(--surface-soft);
  display: grid;
  gap: 8px;
}

.line {
  display: flex;
  justify-content: space-between;
  color: #44524a;
  font-size: 16px;
  font-weight: 790;
}

.discount-line {
  color: #9b4d2d;
}

.line.total {
  color: var(--ink);
  font-size: 25px;
  font-weight: 960;
  padding-top: 7px;
  border-top: 1px solid #d8e0d8;
}

.categories {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 7px;
  padding: 12px;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface);
}

.cat {
  height: 46px;
  border: 1px solid #cbd6cd;
  border-radius: 14px;
  background: var(--surface);
  color: #435248;
  font-size: 14px;
  font-weight: 880;
  white-space: nowrap;
  overflow: hidden;
}

.cat.active {
  border: none;
  background: var(--green);
  color: var(--cream);
}

.menu-grid {
  padding: 12px;
  overflow: auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 112px;
  gap: 10px;
  align-content: start;
  background: #f8f8f3;
}

.menu-card {
  border: 1px solid #d4ded5;
  border-radius: 17px;
  background: var(--surface);
  padding: 11px;
  display: grid;
  grid-template-rows: 1fr auto;
  text-align: left;
  box-shadow: 0 8px 16px rgba(22, 33, 29, .06);
}

.menu-card .name {
  color: var(--ink);
  font-size: 17px;
  line-height: 1.16;
  font-weight: 900;
}

.menu-card .price {
  text-align: left;
  color: var(--green);
  font-size: 20px;
  line-height: 1;
  font-weight: 960;
}

.pay-methods {
  padding: 12px 12px 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.pay-button {
  height: 58px;
  border: 1px solid #cbd6cd;
  border-radius: 16px;
  background: var(--surface);
  color: var(--ink);
  font-size: 16px;
  font-weight: 920;
  white-space: nowrap;
}

.pay-button.active {
  border: none;
  background: var(--gold);
  color: #10201a;
}

.total-card {
  margin: 0 12px;
  border-radius: 19px;
  background: var(--ink);
  color: var(--cream);
  padding: 16px;
}

.total-card .k {
  color: rgba(255,247,220,.72);
  font-size: 13px;
}

.total-card .v {
  margin-top: 8px;
  color: var(--cream);
  font-size: 39px;
  line-height: 1;
  font-weight: 960;
}

.complete {
  margin: auto 12px 12px;
  width: calc(100% - 24px);
  height: 68px;
  border-radius: 19px;
  background: var(--green);
  color: var(--cream);
  font-size: 22px;
  white-space: nowrap;
}

.inline-register .inline-meta {
  gap: 5px;
}

.inline-register .inline-meta .kv {
  min-height: 38px;
  padding: 6px;
}

.inline-register .inline-total-lines .ticket-foot {
  padding: 7px;
  gap: 5px;
}

.inline-register .inline-pay-methods {
  padding: 0;
  gap: 5px;
}

.inline-register .inline-pay-methods .pay-button {
  height: 39px;
  font-size: 13px;
  border-radius: 12px;
}

.inline-register .inline-total-card {
  margin: 0;
  padding: 9px;
}

.inline-register .inline-total-card .v {
  font-size: 26px;
}

.inline-register .inline-complete {
  flex: 0 0 48px;
  margin: auto 0 0;
  width: 100%;
  height: 48px;
  font-size: 16px;
}

.modal-layer {
  position: absolute;
  inset: 0;
  z-index: 30;
  display: grid;
  place-items: center;
  padding: 28px;
  background: rgba(23, 33, 29, .34);
}

.order-list-layer {
  padding: 24px;
  place-items: center;
}

.modal-card {
  width: min(860px, 94vw);
  max-height: min(760px, 92vh);
  display: grid;
  grid-template-rows: auto 1fr auto;
}

.modal-head {
  padding: 16px 18px;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface-soft);
}

.modal-items {
  min-height: 0;
}

.order-modal {
  height: min(720px, 90vh);
}

.order-list-modal {
  width: min(960px, 100%);
  height: min(650px, 100%);
  max-height: none;
  min-height: 0;
  overflow: hidden;
  grid-template-rows: auto minmax(0, 1fr);
}

.order-list-layout {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(360px, .98fr);
  background: #f7f9f5;
}

.order-list-pane {
  min-width: 0;
  min-height: 0;
  display: grid;
  background: var(--surface);
}

.order-list-current {
  grid-template-rows: auto minmax(0, 1fr) auto;
  border-right: 1px solid var(--line-soft);
}

.order-list-menu {
  grid-template-rows: auto minmax(0, 1fr);
  background: #f8f8f3;
}

.order-list-pane-head {
  min-height: 52px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line-soft);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  background: var(--surface-soft);
}

.order-list-pane-head h3 {
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  line-height: 1.05;
  font-weight: 930;
}

.order-list-pane-head span {
  margin-top: 4px;
  display: block;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.2;
  font-weight: 760;
}

.order-list-pane-head strong {
  color: var(--green);
  font-size: 20px;
  line-height: 1;
  font-weight: 950;
  white-space: nowrap;
}

.order-list-items {
  padding: 8px;
}

.order-list-items .order-plan-stack {
  gap: 6px;
}

.order-list-items .order-plan-row {
  padding: 7px 8px;
  gap: 6px;
  border-radius: 12px;
}

.order-list-items .guest-plan-row {
  grid-template-columns: minmax(112px, .62fr) minmax(0, 1.38fr);
  align-items: center;
}

.order-list-items .guest-plan-row .plan-row-head {
  align-items: center;
}

.order-list-items .plan-row-head {
  gap: 8px;
}

.order-list-items .plan-row-head .name {
  font-size: 15px;
  line-height: 1.1;
}

.order-list-items .plan-row-head .sub {
  margin-top: 2px;
  font-size: 11px;
  line-height: 1.15;
}

.order-list-items .plan-row-head .price,
.order-list-items .price {
  font-size: 14px;
}

.order-list-items .ticket-guest-controls {
  gap: 6px;
}

.order-list-items .ticket-guest-stepper {
  grid-template-columns: minmax(38px, 1fr) 28px 30px 28px;
  border-radius: 10px;
}

.order-list-items .ticket-guest-stepper span {
  padding-left: 8px;
  font-size: 11px;
}

.order-list-items .ticket-guest-stepper strong {
  font-size: 14px;
}

.order-list-items .ticket-guest-stepper button {
  height: 30px;
  font-size: 16px;
}

.ticket-course-select {
  width: 100%;
  min-height: 34px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 820;
  color: var(--ink);
  background: var(--surface);
}

.order-list-total {
  padding: 8px 10px 9px;
  gap: 5px 14px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.order-list-total .line {
  min-width: 0;
  gap: 8px;
  font-size: 12px;
  line-height: 1.08;
}

.order-list-total .line span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.order-list-total .line span:last-child {
  white-space: nowrap;
}

.order-list-total .line.total {
  grid-column: 1 / -1;
  margin-top: 1px;
  padding-top: 6px;
  font-size: 20px;
}

.order-menu-accordion {
  min-height: 0;
  overflow: auto;
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.order-menu-category {
  flex: 0 0 auto;
  border: 1px solid #d7dfd6;
  border-radius: 12px;
  overflow: hidden;
  background: var(--surface);
}

.order-menu-category-head {
  appearance: none;
  flex: 0 0 auto;
  width: 100%;
  min-height: 50px;
  border: 0;
  background: var(--surface);
  color: #33443a;
  padding: 9px 11px;
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
  text-align: left;
  font-family: inherit;
  font-size: 15px;
  line-height: 1.1;
  font-weight: 900;
  cursor: pointer;
}

.order-menu-category-head span {
  min-width: 0;
  color: #33443a;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 15px;
  line-height: 1.1;
  font-weight: 900;
}

.order-menu-category-head small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 820;
  white-space: nowrap;
}

.order-menu-category.active .order-menu-category-head {
  background: var(--green);
  color: var(--cream);
}

.order-menu-category.active .order-menu-category-head span {
  color: var(--cream);
}

.order-menu-category.active .order-menu-category-head small {
  color: rgba(255, 247, 220, .72);
}

.order-menu-items {
  flex: 0 0 auto;
  padding: 8px;
  display: grid;
  gap: 6px;
  background: #f5f7f2;
}

.order-menu-item {
  appearance: none;
  position: relative;
  min-height: 46px;
  border: 1px solid #d5ded5;
  border-radius: 11px;
  background: var(--surface);
  color: var(--ink);
  padding: 8px 10px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
}

.order-menu-item .name {
  min-width: 0;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.18;
  font-weight: 880;
}

.order-menu-item .price {
  color: var(--green);
  font-size: 14px;
  line-height: 1;
  font-weight: 920;
  white-space: nowrap;
}

.order-menu-item.sold-out {
  border-style: dashed;
  background: #eef1ec;
  cursor: default;
  opacity: 1;
}

.order-menu-item.sold-out .name,
.order-menu-item.sold-out .price {
  color: #68736d;
}

.order-menu-item .sold-out-badge {
  position: static;
  justify-self: end;
  grid-column: 2;
  padding: 3px 6px;
  font-size: 10px;
  line-height: 1;
}

.empty-state.slim {
  min-height: 58px;
  border-radius: 12px;
  font-size: 13px;
  padding: 12px;
}

.menu-modal {
  width: 800px;
  height: 650px;
  grid-template-rows: auto auto 1fr;
}

.menu-modal .categories {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.menu-modal .menu-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: 106px;
}

.discount-modal {
  width: 500px;
  max-height: none;
  grid-template-rows: auto auto;
}

.discount-modal-body {
  padding: 18px;
  display: grid;
  gap: 12px;
}

.group-modal {
  width: min(680px, 94vw);
  max-height: 720px;
}

.group-modal-body {
  min-height: 0;
  padding: 14px;
  display: grid;
  gap: 10px;
  overflow: auto;
}

.group-note {
  padding: 10px;
  border-radius: 12px;
  background: #f3f6f2;
  color: #53625a;
  font-size: 13px;
  line-height: 1.35;
  font-weight: 780;
}

.group-ticket-list {
  display: grid;
  gap: 8px;
}

.group-ticket-row {
  min-height: 54px;
  display: grid;
  grid-template-columns: 24px 96px minmax(0, 1fr) auto 82px;
  gap: 8px;
  align-items: center;
  padding: 9px;
  border: 1px solid #d5dfd7;
  border-radius: 13px;
  background: #fff;
  color: #34443c;
  font-size: 13px;
  font-weight: 820;
}

.group-ticket-row.selected {
  border-color: #e6bd55;
  background: #fff9e8;
}

.group-ticket-row.empty {
  background: #fbfcfa;
}

.group-ticket-row.disabled {
  opacity: .58;
}

.group-ticket-table {
  color: #17211d;
  font-size: 17px;
  font-weight: 950;
  white-space: nowrap;
}

.group-ticket-row small {
  color: #66736b;
  font-size: 11px;
  font-weight: 820;
  text-align: right;
}

.group-modal-actions {
  padding: 12px 14px 14px;
  border-top: 1px solid var(--line-soft);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.group-modal-actions .primary,
.group-modal-actions .mini-action {
  margin: 0;
  height: 48px;
  border-radius: 14px;
}

.discount-category-segments,
.discount-preset-grid,
.discount-modal-actions,
.mini-actions {
  display: grid;
  gap: 8px;
}

.discount-category-segments,
.discount-preset-grid,
.discount-modal-actions {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.discount-preset-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.discount-category {
  height: 54px;
  border: 1px solid #cbd8ce;
  border-radius: 16px;
  background: var(--surface);
  color: #3d4d44;
  display: grid;
  place-items: center;
  font-size: 17px;
  font-weight: 880;
}

.discount-category input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.discount-category.active,
.discount-category:has(input:checked) {
  border: none;
  background: var(--green);
  color: var(--cream);
}

.discount-input {
  height: 58px;
  font-size: 24px;
  font-weight: 900;
}

.discount-modal-actions .primary {
  margin-top: 0;
}

.daily-top {
  grid-template-columns: 620px 1fr;
}

.daily-main {
  padding: 14px 18px 18px;
  min-height: 0;
  overflow: auto;
}

.daily-sheet {
  padding: 14px;
  display: grid;
  gap: 12px;
  overflow: visible;
}

.daily-sheet-head {
  display: grid;
  grid-template-columns: 1fr 430px;
  gap: 14px;
  align-items: start;
  padding: 4px 2px 0;
}

.daily-sheet-head h2 {
  margin: 0;
  font-size: 28px;
  font-weight: 940;
}

.daily-store-chips {
  margin-top: 9px;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.daily-store-chips span,
.auto-label {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  background: #eef3ef;
  color: #4f5e55;
  padding: 5px 10px;
  font-size: 13px;
  font-weight: 840;
  white-space: nowrap;
}

.daily-head-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.daily-head-fields label {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 840;
}

.daily-auto-stats {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
}

.daily-save-button,
.daily-finalize-button {
  min-width: 0;
  height: 44px;
  align-self: end;
}

.daily-finalize-button {
  border-color: var(--green);
  background: var(--green);
  color: var(--cream);
}

.daily-server-banner,
.daily-conflict {
  min-height: 46px;
  border-radius: 15px;
  padding: 10px 12px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.daily-server-banner {
  border: 1px solid #d5ddd4;
  background: #f5f8f3;
  justify-content: space-between;
}

.daily-server-banner span,
.daily-conflict span {
  min-width: 0;
  color: #516057;
  font-size: 14px;
  font-weight: 820;
}

.daily-server-banner strong {
  color: var(--green);
  font-size: 13px;
  font-weight: 900;
  white-space: nowrap;
}

.daily-conflict {
  border: 1px solid #d38b6c;
  background: #fff2ea;
  flex-wrap: wrap;
}

.daily-conflict strong {
  color: #914724;
  font-size: 14px;
  font-weight: 930;
  white-space: nowrap;
}

.closing-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.closing-kpis > div {
  min-height: 82px;
  border: 1px solid #d8e1d9;
  border-radius: 17px;
  background: var(--surface);
  padding: 12px;
  display: grid;
  align-content: center;
}

.closing-kpis span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.closing-kpis strong {
  margin-top: 7px;
  color: var(--ink);
  font-size: 28px;
  line-height: 1;
  font-weight: 960;
  white-space: nowrap;
}

.daily-auto-stats > div {
  min-height: 76px;
  border: 1px solid #d8e1d9;
  border-radius: 17px;
  background: #f7f9f6;
  padding: 11px 12px;
  display: grid;
  align-content: center;
}

.daily-auto-stats span,
.daily-auto-stats small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 820;
}

.daily-auto-stats strong {
  margin-top: 4px;
  color: var(--ink);
  font-size: 22px;
  line-height: 1;
  font-weight: 950;
  white-space: nowrap;
}

.daily-block {
  border: 1px solid var(--line-soft);
  border-radius: 18px;
  background: #fbfcfa;
  padding: 12px;
  display: grid;
  gap: 10px;
}

.daily-block-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
}

.daily-block h3 {
  margin: 0;
  color: var(--ink);
  font-size: 21px;
  font-weight: 930;
}

.operational-check-page {
  align-content: start;
}

.check-head-fields {
  width: min(460px, 100%);
}

.check-kpis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.check-kpis > div {
  min-height: 74px;
  border: 1px solid #d8e1d9;
  border-radius: 17px;
  background: #f7f9f6;
  padding: 12px;
  display: grid;
  align-content: center;
}

.check-kpis span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.check-kpis strong {
  margin-top: 6px;
  color: var(--ink);
  font-size: 28px;
  line-height: 1;
  font-weight: 960;
}

.check-section {
  gap: 12px;
}

.check-row-list {
  display: grid;
  gap: 8px;
}

.daily-check-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.check-row {
  min-height: 52px;
  border: 1px solid #d8e1d9;
  border-radius: 15px;
  background: var(--surface);
  padding: 8px;
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(118px, .85fr) 96px;
  gap: 8px;
  align-items: center;
}

.check-row.done {
  border-color: #b9d4c3;
  background: #f3faf4;
}

.check-toggle {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink);
  font-size: 16px;
  font-weight: 900;
}

.check-toggle input {
  width: 20px;
  height: 20px;
  accent-color: var(--green);
  flex: 0 0 auto;
}

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

.check-time,
.check-staff {
  min-width: 0;
}

.daily-check-grid .check-row {
  min-height: 96px;
  grid-template-columns: 1fr;
  align-content: start;
}

.daily-check-grid .check-toggle {
  min-height: 30px;
}

.daily-check-grid .check-staff,
.daily-check-grid .check-time {
  width: 100%;
}

.check-slot-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 10px;
}

.check-slot-card {
  min-width: 0;
  border: 1px solid #d8e1d9;
  border-radius: 17px;
  background: #fffefb;
  padding: 10px;
  display: grid;
  gap: 9px;
}

.check-category {
  display: grid;
  gap: 7px;
}

.check-category-title {
  color: #4e5b53;
  font-size: 13px;
  font-weight: 900;
}

.check-slot-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.check-slot-head h4 {
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  font-weight: 930;
}

.check-slot-head span {
  min-height: 28px;
  border-radius: 999px;
  background: #eef3ef;
  color: #4f5e55;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 870;
  white-space: nowrap;
}

.check-row-list.compact .check-row {
  min-height: 44px;
  padding: 6px;
  border-radius: 12px;
  grid-template-columns: minmax(62px, .8fr) minmax(96px, 1fr) 88px;
}

.check-row-list.compact .check-staff {
  grid-column: auto;
}

.check-row-list.compact .check-toggle {
  font-size: 14px;
  gap: 6px;
}

.check-row-list.compact .check-toggle input {
  width: 18px;
  height: 18px;
}

.check-row-list.compact .compact-input {
  height: 36px;
  font-size: 14px;
}

.settings-page {
  align-content: start;
  gap: 14px;
}

.settings-section {
  border: 1px solid #d8e1d9;
  border-radius: 17px;
  background: #fffefb;
  padding: 14px;
  display: grid;
  gap: 12px;
}

.settings-section .daily-block-head span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 820;
}

.reminder-rule-list {
  display: grid;
  gap: 8px;
}

.reminder-rule-row {
  min-width: 0;
  border: 1px solid #d8e1d9;
  border-radius: 14px;
  background: var(--surface);
  padding: 9px;
  display: grid;
  grid-template-columns: 82px 96px 100px 118px 86px 74px;
  gap: 8px;
  align-items: end;
}

.reminder-rule-row.disabled {
  opacity: .58;
}

.reminder-rule-enabled {
  min-height: 42px;
  align-items: center;
}

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

.settings-field {
  min-width: 0;
  display: grid;
  gap: 6px;
}

.settings-field.mini {
  gap: 4px;
}

.settings-field > span {
  color: #4e5b53;
  font-size: 12px;
  font-weight: 900;
}

.settings-inline-input {
  min-width: 0;
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
}

.settings-inline-input small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 840;
}

.mini-action,
.row-delete {
  border: 1px solid #cbd8ce;
  border-radius: 13px;
  background: var(--surface);
  color: var(--green);
  font-size: 14px;
  font-weight: 880;
}

.mini-action {
  height: 36px;
  min-width: 84px;
}

.mini-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, auto));
  gap: 7px;
}

.row-delete {
  height: 40px;
}

.expense-grid {
  display: grid;
  grid-template-columns: 170px 1fr 160px 72px;
  gap: 7px;
  align-items: center;
}

.ledger-head {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.compact-input {
  height: 40px;
  border-radius: 12px;
  font-size: 15px;
}

.money-input {
  text-align: right;
  font-weight: 870;
}

.ledger-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.ledger-row {
  min-height: 48px;
  border: 1px solid #d8e1d9;
  border-radius: 15px;
  background: var(--surface);
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 110px 1fr 70px;
  gap: 8px;
  align-items: center;
}

.ledger-row span {
  color: #3f4d45;
  font-size: 15px;
  font-weight: 860;
  white-space: nowrap;
}

.ledger-row strong {
  text-align: right;
  color: var(--ink);
  font-size: 19px;
  font-weight: 940;
  white-space: nowrap;
}

.ledger-row small {
  color: var(--muted);
  font-size: 11px;
  font-weight: 820;
  text-align: right;
  white-space: nowrap;
}

.ledger-row.editable {
  padding: 6px 10px;
}

.ledger-row.editable .compact-input {
  height: 36px;
}

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

.ledger-total {
  min-height: 52px;
  border-radius: 16px;
  background: var(--ink);
  color: var(--cream);
  padding: 11px 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.ledger-total span {
  color: rgba(255,247,220,.74);
  font-size: 14px;
  font-weight: 830;
}

.ledger-total strong {
  color: var(--cream);
  font-size: 26px;
  line-height: 1;
  font-weight: 960;
  white-space: nowrap;
}

.cash-balance-row {
  min-height: 64px;
  border: 1px solid #d8e1d9;
  border-radius: 16px;
  background: #f7f9f6;
  padding: 10px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  align-items: center;
}

.cash-balance-row label,
.cash-balance-row > div {
  min-width: 0;
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 8px;
  align-items: center;
}

.cash-balance-row span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
  white-space: nowrap;
}

.cash-balance-row strong {
  color: var(--ink);
  font-size: 25px;
  line-height: 1;
  font-weight: 960;
  text-align: right;
  white-space: nowrap;
}

.cumulative-grid {
  display: grid;
  gap: 7px;
}

.cumulative-row {
  min-height: 44px;
  display: grid;
  grid-template-columns: 150px 190px 1fr 1fr;
  gap: 8px;
  align-items: center;
  border: 1px solid #d8e1d9;
  border-radius: 14px;
  background: var(--surface);
  padding: 7px 10px;
}

.cumulative-row span {
  color: #3f4d45;
  font-size: 15px;
  font-weight: 860;
}

.cumulative-row strong {
  text-align: right;
  color: var(--ink);
  font-size: 18px;
  font-weight: 930;
  white-space: nowrap;
}

.cumulative-head {
  min-height: 32px;
  background: transparent;
  border: none;
  color: var(--muted);
}

.cumulative-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

@media (max-width: 700px) {
  .dashboard-top {
    grid-template-columns: 1fr auto;
  }

  .dashboard-menu-button {
    display: grid;
    place-items: center;
  }

  .dashboard-top-actions {
    gap: 8px;
  }

  .daily-save-state {
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .dashboard-main {
    grid-template-columns: 1fr;
    padding: 12px;
  }

  .ticket-setup-grid {
    grid-template-columns: 1fr;
  }

  .dashboard-nav {
    position: absolute;
    z-index: 9;
    left: 12px;
    top: 12px;
    bottom: 12px;
    width: 330px;
    transform: translateX(-116%);
    transition: transform .18s ease;
  }

  .dashboard-main.menu-open .dashboard-nav {
    transform: translateX(0);
  }

  .dashboard-nav-backdrop {
    position: absolute;
    inset: 0;
    z-index: 8;
    display: block;
    border: 0;
    background: rgba(23, 33, 29, .26);
    opacity: 0;
    pointer-events: none;
  }

  .dashboard-main.menu-open .dashboard-nav-backdrop {
    opacity: 1;
    pointer-events: auto;
  }

  .daily-sheet {
    padding: 12px;
  }

  .daily-sheet-head {
    grid-template-columns: 1fr;
  }

  .daily-head-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

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

  .daily-auto-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .dashboard-panel-head,
  .dashboard-actions,
  .dashboard-month-controls {
    flex-wrap: wrap;
  }

  .dashboard-kpis,
  .dashboard-grid.two,
  .check-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .check-slot-grid {
    grid-template-columns: 1fr;
  }

  .check-head-fields,
  .daily-check-grid,
  .daily-check-grid .check-row {
    grid-template-columns: 1fr;
  }

  .payroll-grid,
  .monthly-expense-grid,
  .menu-catalog-grid,
	  .attendance-summary-grid,
	  .employee-management-grid,
	  .payroll-calculated-grid,
	  .attendance-record-row,
	  .monthly-table-head,
	  .monthly-table-row {
	    min-width: 920px;
	  }

	  .attendance-record-row {
	    grid-template-columns: 128px 132px 100px 100px 86px 62px;
	  }

  .ledger-list,
  .outflow-list {
    grid-template-columns: 1fr;
  }

  .expense-grid {
    grid-template-columns: 136px 1fr 128px 72px;
  }

  .cash-balance-row {
    grid-template-columns: 1fr;
  }
}

.toast {
  position: fixed;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%);
  z-index: 20;
  min-width: 260px;
  max-width: 720px;
  border-radius: 16px;
  background: rgba(23, 33, 29, .94);
  color: var(--cream);
  padding: 14px 18px;
  text-align: center;
  font-size: 17px;
  font-weight: 820;
}

@keyframes reminderPulse {
  0%, 100% {
    box-shadow: 0 0 0 0 var(--reminder-pulse, rgba(215, 155, 23, .34)), 0 10px 18px rgba(25, 33, 30, .08);
  }
  50% {
    box-shadow: 0 0 0 7px var(--reminder-pulse-soft, rgba(215, 155, 23, .18)), 0 16px 28px rgba(25, 33, 30, .14);
  }
}

.base-picker-layer {
  position: fixed;
  inset: 0;
  z-index: 60;
}

.base-picker-card {
  width: min(680px, 92vw);
  max-height: 84vh;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--surface);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 24px 60px rgba(22, 33, 29, .30);
}

.base-picker-body {
  overflow: auto;
  padding: 10px 14px 16px;
  display: grid;
  gap: 12px;
}

.base-picker-cat h3 {
  margin: 6px 0;
  font-size: 14.5px;
  color: #164b39;
}

.base-picker-row {
  display: grid;
  grid-template-columns: 26px 1fr auto;
  gap: 8px;
  align-items: center;
  padding: 7px 4px;
  border-bottom: 1px solid var(--line-soft);
  font-weight: 800;
}

.base-picker-row input[type="checkbox"] {
  width: 19px;
  height: 19px;
}

.attendance-layer {
  position: fixed;
  z-index: 70;
}

.attendance-card {
  width: min(620px, 94vw);
  max-height: 84vh;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.attendance-staff-list {
  min-height: 0;
  overflow: auto;
  padding: 12px;
  display: grid;
  gap: 8px;
}

.attendance-staff-row {
  min-height: 64px;
  border: 1px solid var(--line-soft);
  border-radius: 14px;
  background: var(--surface);
  padding: 10px;
  display: grid;
  grid-template-columns: 1fr 112px;
  gap: 10px;
  align-items: center;
}

.attendance-staff-row strong,
.attendance-summary-grid strong {
  color: var(--ink);
  font-weight: 920;
}

.attendance-staff-row span {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 820;
}

.attendance-in-label,
.attendance-out-button {
  min-height: 44px;
  display: grid;
  place-items: center;
  border-radius: 13px;
  text-align: center;
}

.attendance-in-label input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.attendance-tabs {
  margin-bottom: 0;
}

.shift-status-row {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.shift-board {
  overflow: visible;
}

.shift-workspace {
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
  overflow: visible;
}

.shift-workspace > * {
  width: 100%;
  min-width: 0;
  align-self: stretch;
}

.shift-grid {
  min-width: max(1120px, calc(118px + var(--shift-days) * 72px));
  display: grid;
  grid-template-columns: 118px repeat(var(--shift-days), minmax(72px, 1fr));
  gap: 5px;
  align-items: stretch;
}

.shift-pair-grid {
  min-width: max(1120px, calc(118px + var(--shift-days) * 72px));
  grid-template-columns: 118px repeat(var(--shift-days), minmax(72px, 1fr));
}

.shift-wish-grid {
  min-width: max(1120px, calc(118px + var(--shift-days) * 72px));
  grid-template-columns: 118px repeat(var(--shift-days), minmax(72px, 1fr));
}

.shift-head,
.shift-staff,
.shift-cell {
  min-height: 42px;
  border: 1px solid #d5dfd7;
  border-radius: 9px;
  background: var(--surface);
  padding: 5px;
}

.shift-head {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  text-align: center;
}

.shift-head span,
.shift-head small {
  display: block;
}

.shift-staff {
  color: var(--ink);
  font-size: 13px;
  font-weight: 920;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px;
}

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

.shift-total-hours {
  min-height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: #eef3ef;
  color: #365546;
  padding: 0 5px;
  font-size: 10px;
  line-height: 1;
  font-style: normal;
  font-weight: 920;
  white-space: nowrap;
}

.shift-grid .sticky-col {
  position: sticky;
  left: 0;
  z-index: 2;
  box-shadow: 5px 0 10px rgba(22, 33, 29, .05);
}

.shift-cell {
  display: grid;
  gap: 4px;
  background: #fbfcfa;
}

button.shift-cell {
  width: 100%;
  text-align: left;
  color: var(--ink);
  cursor: pointer;
}

.shift-cell.has-wish {
  border-color: #b7d6c0;
  background: #f1f8f2;
}

.shift-pair {
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  padding: 4px;
  align-items: stretch;
  cursor: pointer;
}

.shift-pair.has-wish {
  background: #fbfcfa;
}

.pair-half {
  min-height: 36px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 2px 3px;
  font-size: 11.5px;
  line-height: 1.15;
  font-weight: 860;
  word-break: break-all;
}

.pair-wish {
  background: #f4f7f3;
  color: #a4b1a9;
}

.shift-pair.has-wish .pair-wish {
  background: #eaf4ec;
  color: #2f6c4d;
}

.pair-plan {
  border: 1px dashed #ccd8cf;
  background: var(--surface);
  color: #b3c0b8;
}

.shift-pair.has-plan .pair-plan {
  border: 1px solid #9ecdad;
  background: #dff0e3;
  color: var(--green-strong);
  font-weight: 920;
}

.shift-wish {
  min-height: 42px;
  place-items: center;
  text-align: center;
  color: #a4b1a9;
  font-size: 12px;
  line-height: 1.15;
  font-weight: 860;
}

.shift-wish.has-wish {
  border-color: #b7d6c0;
  background: #eaf4ec;
  color: #2f6c4d;
  font-weight: 920;
}

.pair-legend {
  color: var(--muted);
  font-size: 11px;
}

.shift-time-selects {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 5px;
}

.shift-time-selects select,
.shift-time-selects input {
  min-width: 0;
  height: 34px;
  padding: 5px 6px;
  font-size: 12px;
}

.shift-manual-input,
.shift-end-manual-input {
  grid-column: 1 / -1;
}

.hidden {
  display: none !important;
}

.shift-confirm-card {
  width: min(520px, 94vw);
  overflow: hidden;
}

.shift-confirm-body {
  padding: 14px;
  display: grid;
  gap: 12px;
}

.shift-confirm-source {
  min-height: 48px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: #f5faf6;
  padding: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.shift-confirm-source span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.shift-confirm-source strong {
  color: var(--ink);
  font-weight: 920;
}

.shift-confirm-actions {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 8px;
}

.attendance-record-list {
  display: grid;
  gap: 7px;
}

.attendance-time-section {
  overflow-x: auto;
}

.attendance-record-row {
  min-height: 54px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: var(--surface);
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 128px 132px 100px 100px 86px 62px;
  gap: 7px;
  align-items: center;
}

.attendance-record-head {
  min-height: 34px;
  border: 0;
  background: transparent;
  padding-top: 0;
  padding-bottom: 0;
}

.attendance-record-row span {
  color: #435148;
  font-size: 14px;
  font-weight: 840;
}

.attendance-record-row input,
.attendance-record-row select {
  min-width: 0;
}

.photo-thumb {
  width: 58px;
  height: 42px;
  border: 1px solid #cbd8ce;
  border-radius: 10px;
  overflow: hidden;
  background: #eef3ef;
  padding: 0;
}

.photo-thumb img,
.attendance-photo-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.attendance-photo-card {
  width: min(620px, 92vw);
  max-height: 86vh;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.attendance-photo-card img {
  max-height: 70vh;
  object-fit: contain;
  background: #101815;
}

.attendance-summary-grid {
  display: grid;
  grid-template-columns: 150px 80px 130px 120px 120px;
  gap: 7px;
  align-items: center;
}

.employee-management-grid {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 130px 130px 86px 64px;
  gap: 7px;
  align-items: center;
}

.payroll-calculated-grid {
  width: 100%;
  min-width: 0;
  grid-template-columns: minmax(64px, 1fr) 34px 46px repeat(6, minmax(58px, .84fr));
  gap: 5px;
}

.payroll-calculated-grid .payroll-head {
  min-width: 0;
  font-size: 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.payroll-calculated-grid > strong:not(.readonly-money),
.payroll-calculated-grid > span {
  min-width: 0;
  font-size: 12px;
  line-height: 1.1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.payroll-calculated-grid > strong:not(.readonly-money) {
  color: var(--ink);
  font-size: 13px;
  font-weight: 920;
}

.payroll-calculated-grid .readonly-money {
  min-width: 0;
  min-height: 34px;
  border-radius: 10px;
  padding: 6px 6px;
  font-size: 13px;
}

.payroll-calculated-grid .readonly-money small {
  font-size: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.employee-name-cell {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 48px 70px;
  align-items: center;
  gap: 6px;
}

.employee-name-text {
  min-width: 0;
  color: var(--ink);
  font-weight: 920;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.inline-check {
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  border: 1px solid #d8e1d9;
  border-radius: 10px;
  background: #f7f9f6;
  color: #435148;
  padding: 0 8px;
  font-size: 12px;
  font-weight: 880;
  white-space: nowrap;
}

.inline-check input {
  width: 16px;
  height: 16px;
  accent-color: var(--green);
}

.amount-field-with-unit {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px;
  gap: 5px;
  align-items: center;
}

.amount-field-with-unit span {
  min-height: 34px;
  display: grid;
  place-items: center;
  border: 1px solid #d8e1d9;
  border-radius: 10px;
  background: #f7f9f6;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}

.staff-name-copy {
  min-height: 32px;
  border: 1px solid #d8e1d9;
  border-radius: 10px;
  background: #eef3ef;
  color: #4f5e55;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  cursor: pointer;
  font-size: 12px;
  font-weight: 880;
  white-space: nowrap;
}

.staff-name-copy-placeholder {
  min-height: 32px;
  display: block;
}

.base-picker-row small {
  color: #526057;
}

.menu-card.sold-out {
  position: relative;
  opacity: .74;
  border-style: dashed;
  background: #eef1ec;
  color: #6c7770;
  box-shadow: none;
  cursor: not-allowed;
}

.menu-card.sold-out .name,
.menu-card.sold-out .price {
  color: #6c7770;
}

.sold-out-badge {
  position: absolute;
  right: 9px;
  bottom: 9px;
  padding: 4px 7px;
  border-radius: 999px;
  background: #2d3430;
  color: #fff;
  font-size: 10px;
  line-height: 1;
  font-weight: 920;
}

.confirmed-lane-board {
  margin-top: 4px;
  padding: 10px;
  border: 1px solid #bfd4c6;
  border-radius: 14px;
  background: #f6faf5;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  align-content: start;
  gap: 10px;
  max-width: 100%;
  overflow-x: auto;
}

.confirmed-lane-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}

.confirmed-lane-head h4 {
  margin: 0;
  color: var(--ink);
  font-size: 16px;
  font-weight: 930;
}

.shift-lane-grid {
  height: 100%;
  min-width: max(1120px, calc(118px + var(--shift-days) * 72px));
  grid-template-columns: 118px repeat(var(--shift-days), minmax(72px, 1fr));
  grid-template-rows: 42px repeat(3, minmax(98px, 1fr));
}

.shift-lane-label,
.shift-lane-cell {
  min-height: 62px;
  border: 1px solid #d5dfd7;
  border-radius: 9px;
  padding: 5px;
}

.shift-lane-label {
  color: #18231f;
  font-size: 12px;
  font-weight: 940;
  display: grid;
  align-items: center;
}

.shift-lane-label.lane-day {
  background: #fff36f;
}

.shift-lane-label.lane-evening {
  background: #18b8e8;
}

.shift-lane-label.lane-late {
  background: #8ccc4a;
}

.shift-lane-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-content: flex-start;
}

.shift-lane-cell.lane-day {
  background: #fffbd0;
}

.shift-lane-cell.lane-evening {
  background: #dcf7ff;
}

.shift-lane-cell.lane-late {
  background: #eef9df;
}

.shift-lane-person {
  display: inline-grid;
  gap: 2px;
  min-width: 48px;
  max-width: 100%;
  padding: 4px 5px;
  border-radius: 7px;
  background: #fff;
  border: 1px solid #cbd8ce;
  color: var(--ink);
  font-size: 11px;
  line-height: 1.08;
  font-weight: 920;
}

.shift-lane-person strong {
  font: inherit;
}

.shift-lane-person small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}

.shift-lane-empty {
  color: #a5b0aa;
  font-size: 12px;
  font-weight: 760;
}

.shift-lane-unclassified {
  padding: 8px 10px;
  border-radius: 10px;
  background: #fff7df;
  color: #7c5d1f;
  font-size: 12px;
  font-weight: 820;
}

.shift-edit-section {
  margin-top: 4px;
  padding: 10px;
  border: 1px solid #d5dfd7;
  border-radius: 14px;
  background: #fff;
  display: grid;
  gap: 8px;
  max-width: 100%;
  overflow-x: auto;
}

.extension-modal {
  width: min(520px, 94vw);
}

.extension-form {
  padding: 14px;
  display: grid;
  gap: 10px;
}

.extension-field {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr) 28px;
  gap: 8px;
  align-items: center;
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.extension-note {
  display: grid;
  gap: 6px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 850;
}

.extension-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.extension-list,
.extension-ticket-list {
  display: grid;
  gap: 7px;
}

.extension-list {
  padding: 0 14px 14px;
}

.extension-row {
  min-height: 48px;
  border: 1px solid #d8e1d9;
  border-radius: 12px;
  background: #f6faf6;
  padding: 8px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
}

.extension-row strong,
.extension-row span {
  display: block;
}

.extension-row strong {
  color: var(--ink);
  font-size: 13px;
  font-weight: 920;
}

.extension-row span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.extension-ticket-row {
  background: #f7fbf7;
}
