:root{
  --line-green:#06C755;
  --line-green-dark:#04a648;
  --line-bg:#7494b0;
  --admin-blue:#2563eb;
  --gray-bg:#f4f5f7;
  --gray-border:#e2e4e9;
  --text-main:#1f2430;
  --text-sub:#6b7280;
  --danger:#e0422c;
  --warn:#f5a623;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic","Meiryo",sans-serif;
  background:#eef0f3;
  color:var(--text-main);
  padding:24px 12px 60px;
}
.meta-header{
  max-width:1100px;
  margin:0 auto 20px;
  text-align:center;
}
.meta-header h1{
  font-size:19px;
  margin:0 0 6px;
}
.meta-header p{
  font-size:13px;
  color:var(--text-sub);
  margin:0;
}
.switcher{
  max-width:1100px;
  margin:18px auto 24px;
  display:flex;
  justify-content:center;
  gap:10px;
}
.switch-btn{
  padding:10px 20px;
  border-radius:999px;
  border:1px solid var(--gray-border);
  background:#fff;
  font-size:14px;
  font-weight:600;
  cursor:pointer;
  color:var(--text-sub);
  transition:all .15s;
}
.switch-btn.active{
  background:var(--text-main);
  color:#fff;
  border-color:var(--text-main);
}
.view-wrap{ max-width:1100px; margin:0 auto; }

/* ---------- Phone mock (customer) ---------- */
#customerWrap{ display:flex; justify-content:center; }
.phone-frame{
  width:375px;
  max-width:100%;
  background:#111;
  border-radius:38px;
  padding:12px;
  box-shadow:0 20px 50px rgba(0,0,0,.25);
  position:relative;
}
.phone-notch{
  position:absolute;
  top:12px; left:50%; transform:translateX(-50%);
  width:120px; height:22px;
  background:#111;
  border-radius:0 0 16px 16px;
  z-index:5;
}
.phone-screen{
  background:#f2f3f5;
  border-radius:28px;
  height:720px;
  overflow-y:auto;
  position:relative;
  display:flex;
  flex-direction:column;
}
.screen{ display:none; flex-direction:column; min-height:100%; }
.screen.active{ display:flex; }

/* LINE talk mock */
.line-header{
  background:var(--line-green);
  color:#fff;
  padding:34px 16px 12px;
  font-size:15px;
  font-weight:700;
  display:flex; align-items:center; gap:8px;
}
.line-body{
  flex:1;
  padding:16px 12px;
  background:#8fb1c9;
  display:flex; flex-direction:column; gap:10px;
}
.line-bubble{
  background:#fff;
  padding:10px 12px;
  border-radius:12px;
  font-size:13px;
  max-width:78%;
  line-height:1.5;
  box-shadow:0 1px 2px rgba(0,0,0,.08);
}
.line-richmenu{
  background:#fff;
  border-top:1px solid #ddd;
  padding:10px;
}
.richmenu-btn{
  width:100%;
  background:var(--line-green);
  color:#fff;
  border:none;
  padding:14px;
  border-radius:10px;
  font-size:14px;
  font-weight:700;
  cursor:pointer;
}
.richmenu-btn:active{ background:var(--line-green-dark); }
.richmenu-sub{
  display:flex; gap:8px; margin-top:8px;
}
.richmenu-sub div{
  flex:1;
  text-align:center;
  font-size:11px;
  color:var(--text-sub);
  padding:8px 0;
  background:#f7f7f7;
  border-radius:8px;
}

/* mini app screens */
.app-header{
  background:#fff;
  padding:14px 14px;
  display:flex;
  align-items:center;
  gap:10px;
  border-bottom:1px solid var(--gray-border);
  position:sticky; top:0; z-index:2;
}
.app-header .back{
  cursor:pointer;
  font-size:18px;
  color:var(--text-sub);
  width:22px;
}
.app-header .title{ font-size:15px; font-weight:700; flex:1; }
.app-body{ padding:14px; flex:1; }

.card{
  background:#fff;
  border-radius:14px;
  padding:14px;
  margin-bottom:12px;
  box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.status-card{
  background:linear-gradient(135deg,var(--line-green),#04a648);
  color:#fff;
}
.status-card-title{ font-size:11px; opacity:.8; margin-bottom:10px; letter-spacing:.03em; }
.status-card-row{ display:flex; align-items:center; }
.status-stat{ flex:1; text-align:center; }
.status-stat-num{ font-size:36px; font-weight:900; line-height:1; letter-spacing:-.02em; }
.status-stat-num.zero{ opacity:.5; }
.status-stat-unit{ display:inline; font-size:14px; font-weight:700; margin-left:2px; }
.status-stat-label{ font-size:11px; opacity:.8; margin-top:5px; }
.status-divider{ width:1px; height:44px; background:rgba(255,255,255,.3); flex-shrink:0; }

.menu-tile{
  display:flex;
  align-items:center;
  gap:12px;
  padding:16px;
  border-radius:14px;
  background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.06);
  margin-bottom:12px;
  cursor:pointer;
  border:1px solid var(--gray-border);
}
.menu-tile:active{ background:#fafafa; }
.menu-tile .icon{ font-size:26px; }
.menu-tile .txt b{ display:block; font-size:14px; }
.menu-tile .txt span{ font-size:11px; color:var(--text-sub); }

.date-tabs{ display:flex; gap:8px; margin-bottom:12px; }
.date-tab{
  flex:1;
  text-align:center;
  padding:8px;
  border-radius:10px;
  font-size:13px;
  font-weight:600;
  border:1px solid var(--gray-border);
  background:#fff;
  cursor:pointer;
  color:var(--text-sub);
}
.date-tab.active{ background:var(--line-green); color:#fff; border-color:var(--line-green); }

.slots-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.slot-btn{
  border:1px solid var(--gray-border);
  background:#fff;
  border-radius:10px;
  padding:10px 4px;
  display:flex; flex-direction:column; align-items:center; gap:2px;
  cursor:pointer;
}
.slot-time{ font-size:14px; font-weight:700; }
.slot-status{ font-size:11px; color:var(--line-green-dark); font-weight:600; }
.slot-btn.full{ opacity:.5; cursor:not-allowed; background:#f4f4f4; }
.slot-btn.full .slot-status{ color:var(--danger); }

.lane-grid{ display:flex; gap:10px; flex-wrap:wrap; }
.lane-choice{
  width:64px; height:64px;
  border-radius:50%;
  border:2px solid var(--line-green);
  color:var(--line-green-dark);
  background:#fff;
  font-size:15px; font-weight:800;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
}
.lane-choice:active{ background:var(--line-green); color:#fff; }

.field{ margin-bottom:12px; }
.field label{ display:block; font-size:12px; color:var(--text-sub); margin-bottom:4px; font-weight:600; }
.field input{
  width:100%;
  padding:10px;
  border:1px solid var(--gray-border);
  border-radius:8px;
  font-size:14px;
}
.member-row{ display:flex; gap:6px; margin-bottom:6px; }
.member-row input{ flex:1; }
.member-row button{
  border:none; background:#f1f1f1; border-radius:8px; width:36px; color:var(--danger); cursor:pointer; font-size:15px;
}
.add-member-btn{
  width:100%; padding:9px; border:1px dashed var(--gray-border); border-radius:8px;
  background:#fafafa; color:var(--text-sub); font-size:13px; cursor:pointer; margin-bottom:10px;
}

.primary-btn{
  width:100%; padding:13px; border:none; border-radius:10px;
  background:var(--line-green); color:#fff; font-size:14px; font-weight:700; cursor:pointer;
}
.primary-btn:active{ background:var(--line-green-dark); }
.primary-btn.secondary{ background:#fff; color:var(--line-green-dark); border:1px solid var(--line-green); }
.primary-btn.danger{ background:var(--danger); }
.primary-btn.danger:active{ background:#c0341d; }
.primary-btn[disabled]{ background:#ccc; cursor:not-allowed; }

.summary-row{ display:flex; justify-content:space-between; font-size:13px; padding:6px 0; border-bottom:1px solid #f0f0f0; }
.summary-row span:first-child{ color:var(--text-sub); }
.summary-row span:last-child{ font-weight:700; text-align:right; }

.complete-icon{ font-size:48px; text-align:center; margin:20px 0 6px; }
.complete-title{ text-align:center; font-size:16px; font-weight:800; margin-bottom:6px; }
.complete-sub{ text-align:center; font-size:12px; color:var(--text-sub); margin-bottom:16px; }
.queue-no-badge{
  text-align:center; font-size:34px; font-weight:900; color:var(--line-green-dark);
  background:#e8fbf0; border-radius:14px; padding:14px; margin-bottom:14px;
}

/* ---------- My booking card (menu) ---------- */
.my-booking-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  background:linear-gradient(135deg,#1f6feb,#0d4bb5);
  border-radius:14px;
  padding:14px 16px;
  margin-bottom:12px;
  cursor:pointer;
  color:#fff;
  box-shadow:0 2px 8px rgba(13,75,181,.3);
}
.my-booking-card.queue-type{
  background:linear-gradient(135deg,#7c3aed,#5b21b6);
  box-shadow:0 2px 8px rgba(91,33,182,.3);
}
.my-booking-left{ display:flex; flex-direction:column; gap:3px; }
.my-booking-badge{
  font-size:10px; font-weight:800; padding:2px 8px; border-radius:999px;
  display:inline-block; width:fit-content; margin-bottom:2px;
}
.reserve-badge{ background:rgba(255,255,255,.22); color:#fff; }
.queue-badge{ background:rgba(255,255,255,.22); color:#fff; }
.my-booking-time{ font-size:14px; font-weight:700; }
.my-booking-detail{ font-size:11px; opacity:.85; }
.my-booking-arrow{ font-size:20px; opacity:.7; }

/* ---------- Ticket card (detail screen) ---------- */
.ticket-card{
  background:#fff;
  border-radius:16px;
  overflow:hidden;
  box-shadow:0 2px 10px rgba(0,0,0,.08);
  margin-bottom:14px;
}
.ticket-head{
  display:flex; align-items:center; gap:12px;
  padding:16px;
  background:#f8f9fb;
  border-bottom:1px solid var(--gray-border);
}
.ticket-icon{ font-size:28px; }
.ticket-head-text{ flex:1; }
.ticket-title{ font-size:15px; font-weight:800; }
.ticket-subtitle{ font-size:11px; color:var(--text-sub); margin-top:1px; }
.ticket-active-badge{
  font-size:10px; font-weight:800; padding:4px 10px; border-radius:999px;
  background:#dcfce7; color:#15803d; white-space:nowrap;
}
.ticket-done-badge{
  font-size:10px; font-weight:800; padding:4px 10px; border-radius:999px;
  background:#f0f0f0; color:#6b7280; white-space:nowrap;
}
.ticket-called-badge{
  font-size:10px; font-weight:800; padding:4px 10px; border-radius:999px;
  background:#dbeafe; color:#1d4ed8; white-space:nowrap;
}
.ticket-divider{
  height:1px; background:repeating-linear-gradient(90deg,var(--gray-border) 0 6px,transparent 6px 12px);
  margin:0 16px;
}
.ticket-body{ padding:8px 16px 14px; }
.ticket-qr{
  display:flex; flex-direction:column; align-items:center; gap:6px;
  padding:14px; border-top:1px dashed var(--gray-border);
}
.ticket-qr-box{ font-size:52px; color:var(--text-main); line-height:1; }
.ticket-qr-label{ font-size:11px; color:var(--text-sub); }

.notif-banner{
  position:absolute; top:50px; left:8px; right:8px;
  background:#fff; border-radius:12px; padding:10px 12px;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
  display:flex; gap:10px; align-items:flex-start;
  transform:translateY(-120px);
  transition:transform .35s ease;
  z-index:50;
}
.notif-banner.show{ transform:translateY(0); }
.notif-banner .nicon{
  width:32px; height:32px; border-radius:8px; background:var(--line-green);
  display:flex; align-items:center; justify-content:center; color:#fff; font-size:16px; flex-shrink:0;
}
.notif-banner .ntitle{ font-size:12px; font-weight:800; }
.notif-banner .nbody{ font-size:11px; color:var(--text-sub); margin-top:2px; line-height:1.4; }

/* ---------- Admin dashboard ---------- */
#adminWrap{ background:#fff; border-radius:16px; box-shadow:0 2px 10px rgba(0,0,0,.06); overflow:hidden; }
.admin-header{
  background:#1f2937; color:#fff; padding:18px 22px;
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px;
}
.admin-header h2{ margin:0; font-size:16px; }
.admin-header .sub{ font-size:12px; color:#9ca3af; margin-top:2px; }
.admin-stats{ display:flex; gap:14px; padding:16px 22px; background:var(--gray-bg); flex-wrap:wrap; }
.stat-card{
  flex:1; min-width:150px; background:#fff; border:1px solid var(--gray-border); border-radius:12px; padding:14px 16px;
}
.stat-card .n{ font-size:24px; font-weight:800; color:var(--admin-blue); }
.stat-card .l{ font-size:12px; color:var(--text-sub); margin-top:2px; }
.stat-card .stat-sub{ font-size:11px; color:var(--text-sub); margin-top:4px; }

.admin-tabs{ display:flex; gap:4px; padding:0 22px; border-bottom:1px solid var(--gray-border); }
.admin-tab{
  padding:12px 16px; font-size:13px; font-weight:600; color:var(--text-sub); cursor:pointer;
  border-bottom:2px solid transparent;
}
.admin-tab.active{ color:var(--admin-blue); border-color:var(--admin-blue); }
.admin-panel{ display:none; padding:18px 22px 28px; }
.admin-panel.active{ display:block; }

.admin-toolbar{ display:flex; gap:8px; margin-bottom:14px; align-items:center; }
.admin-date-tab{
  padding:7px 14px; border-radius:8px; border:1px solid var(--gray-border); font-size:13px; cursor:pointer; background:#fff; color:var(--text-sub); font-weight:600;
}
.admin-date-tab.active{ background:var(--admin-blue); color:#fff; border-color:var(--admin-blue); }

table{ width:100%; border-collapse:collapse; font-size:13px; }
thead th{
  text-align:left; padding:10px 8px; background:var(--gray-bg); color:var(--text-sub); font-weight:700; font-size:12px;
  border-bottom:1px solid var(--gray-border);
}
tbody td{ padding:10px 8px; border-bottom:1px solid #f2f3f5; vertical-align:top; }
tbody tr:hover{ background:#fafbfc; }
.badge{ padding:3px 9px; border-radius:999px; font-size:11px; font-weight:700; display:inline-block; }
.badge.wait{ background:#fff4e0; color:#b8720a; }
.badge.called{ background:#e6f0ff; color:var(--admin-blue); }
.badge.done{ background:#e6f7ec; color:var(--line-green-dark); }
.badge.cancel{ background:#fde8e8; color:var(--danger); }
.members-list{ font-size:12px; color:var(--text-sub); }
.action-btn{
  border:1px solid var(--gray-border); background:#fff; padding:6px 10px; border-radius:7px; font-size:12px; cursor:pointer; margin-right:4px; white-space:nowrap;
}
.action-btn.done-btn{ border-color:var(--line-green); color:var(--line-green-dark); }
.action-btn.done-btn:hover{ background:#e6f7ec; }
.action-btn.call-btn{ border-color:var(--admin-blue); color:var(--admin-blue); }
.action-btn.call-btn:hover{ background:#e6f0ff; }
.empty-row{ text-align:center; padding:30px; color:var(--text-sub); font-size:13px; }

.settings-form .field{ max-width:320px; }
.note-box{
  background:#f8f9fb; border:1px solid var(--gray-border); border-radius:10px; padding:14px 16px; font-size:12.5px; color:var(--text-sub); line-height:1.8; margin-top:16px;
}
.note-box b{ color:var(--text-main); }
.toast{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(20px);
  background:#1f2937; color:#fff; padding:10px 18px; border-radius:8px; font-size:13px; opacity:0; pointer-events:none;
  transition:all .25s;
}
.toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }

/* ---------- Admin stat card colours ---------- */
.stat-playing .n{ color:#ea580c; }
.stat-avail .n{ color:#16a34a; }

/* ---------- Lane board ---------- */
.lb-legend{
  display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px;
}
.leg-item{
  font-size:11px; font-weight:700; padding:3px 10px; border-radius:6px; border:1px solid transparent;
}
.leg-item.lc-line-sample{ background:#fff; border:2px solid var(--line-green); color:var(--line-green-dark); }

.lb-summary{
  display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px; align-items:center;
}
.lb-cnt{
  font-size:13px; font-weight:700; padding:4px 12px; border-radius:20px;
}
.lbc-playing{ background:#fff3e0; color:#c2410c; }
.lbc-avail{ background:#dcfce7; color:#15803d; }
.lbc-reserved{ background:#dbeafe; color:#1d4ed8; }
.lbc-other{ background:#f3f4f6; color:#6b7280; }
.lbc-total{ background:#f3f4f6; color:#374151; }

.lane-board{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(95px,1fr));
  gap:8px;
}
.lane-card{
  border-radius:10px; padding:10px 8px; cursor:pointer; border:2px solid transparent;
  transition:transform .1s, box-shadow .1s; min-height:90px;
  display:flex; flex-direction:column; gap:3px;
}
.lane-card:hover{ transform:translateY(-2px); box-shadow:0 4px 12px rgba(0,0,0,.15); }

/* Lane status colours */
.ls-avail{ background:#f0fdf4; border-color:#bbf7d0; }
.ls-playing{ background:#fff7ed; border-color:#fed7aa; }
.ls-reserved{ background:#eff6ff; border-color:#bfdbfe; }
.ls-maint{ background:#fefce8; border-color:#fde68a; }
.ls-unavail{ background:#f3f4f6; border-color:#d1d5db; }

/* LINE designated lane extra border */
.lc-line{ border-color:var(--line-green) !important; box-shadow:0 0 0 1px var(--line-green); }

.lc-top{ display:flex; align-items:center; justify-content:space-between; }
.lc-no{ font-size:15px; font-weight:800; color:var(--text-main); }
.lc-line-tag{
  font-size:9px; font-weight:800; background:var(--line-green); color:#fff;
  padding:1px 5px; border-radius:4px; line-height:1.4;
}
.lc-status{
  font-size:11px; font-weight:700; margin-top:1px;
}
.ls-avail .lc-status{ color:#16a34a; }
.ls-playing .lc-status{ color:#c2410c; }
.ls-reserved .lc-status{ color:#1d4ed8; }
.ls-maint .lc-status{ color:#92400e; }
.ls-unavail .lc-status{ color:#6b7280; }

.lc-type{ font-size:10px; color:var(--text-sub); background:rgba(0,0,0,.05); padding:1px 5px; border-radius:4px; display:inline-block; }
.lc-rep{ font-size:11px; font-weight:600; color:var(--text-main); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.lc-elapsed{ font-size:10px; color:#c2410c; font-weight:600; }

/* Legend items reuse lane status classes */
.leg-item.ls-avail{ background:#f0fdf4; border-color:#bbf7d0; color:#16a34a; }
.leg-item.ls-playing{ background:#fff7ed; border-color:#fed7aa; color:#c2410c; }
.leg-item.ls-reserved{ background:#eff6ff; border-color:#bfdbfe; color:#1d4ed8; }
.leg-item.ls-maint{ background:#fefce8; border-color:#fde68a; color:#92400e; }
.leg-item.ls-unavail{ background:#f3f4f6; border-color:#d1d5db; color:#6b7280; }

/* ---------- Lane Modal ---------- */
.lane-modal-overlay{
  display:none; position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:1000;
  align-items:center; justify-content:center; padding:16px;
}
.lane-modal-overlay.show{ display:flex; }
.lane-modal-box{
  background:#fff; border-radius:16px; width:100%; max-width:440px;
  max-height:90vh; overflow-y:auto;
  box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.lane-modal-hd{
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 18px; border-bottom:1px solid var(--gray-border);
  font-size:15px; font-weight:800; position:sticky; top:0; background:#fff; z-index:1;
}
.modal-close{
  border:none; background:none; font-size:18px; color:var(--text-sub); cursor:pointer; padding:2px 6px; border-radius:6px;
}
.modal-close:hover{ background:var(--gray-bg); }
.lane-modal-bd{ padding:16px 18px; display:flex; flex-direction:column; gap:10px; }

.lm-bar{
  border-radius:8px; padding:8px 14px; font-size:13px; font-weight:700; text-align:center;
}
.lm-bar.ls-playing{ background:#fff7ed; color:#c2410c; border:1px solid #fed7aa; }
.lm-bar.ls-reserved{ background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; }
.lm-bar.ls-unavail{ background:#f3f4f6; color:#6b7280; border:1px solid #d1d5db; }
.lm-bar.ls-avail{ background:#f0fdf4; color:#16a34a; border:1px solid #bbf7d0; }

.lm-info{ background:#f9fafb; border-radius:10px; padding:10px 14px; }
.lm-form{ display:flex; flex-direction:column; gap:8px; }

.type-chip{ font-size:11px; font-weight:700; padding:2px 8px; border-radius:999px; }
.type-chip.type-line{ background:#dcfce7; color:#15803d; }
.type-chip.type-phone{ background:#dbeafe; color:#1e40af; }
.type-chip.type-walkin{ background:#fef9c3; color:#92400e; }
.type-chip.type-group{ background:#fce7f3; color:#9d174d; }
.type-chip.type-tournament{ background:#ede9fe; color:#5b21b6; }

.elapsed-hi{ color:#c2410c; font-weight:700; }

.type-btn-row{ display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.type-btn{
  padding:6px 12px; border-radius:20px; border:1px solid var(--gray-border);
  background:#fff; font-size:12px; font-weight:600; cursor:pointer; color:var(--text-sub);
  transition:all .12s;
}
.type-btn.active{ background:var(--admin-blue); color:#fff; border-color:var(--admin-blue); }

.lm-btn{
  width:100%; padding:11px; border-radius:10px; border:none;
  font-size:13px; font-weight:700; cursor:pointer; text-align:center;
}
.lm-start{ background:var(--line-green); color:#fff; }
.lm-start:hover{ background:var(--line-green-dark); }
.lm-end{ background:#ea580c; color:#fff; }
.lm-end:hover{ background:#c2410c; }
.lm-maint{ background:#fff; color:var(--text-sub); border:1px solid var(--gray-border); }
.lm-maint:hover{ background:var(--gray-bg); }
.lm-unavail{ background:#fff; color:var(--danger); border:1px solid var(--danger); }
.lm-unavail:hover{ background:#fef2f2; }

.req{ color:var(--danger); font-weight:700; font-size:11px; }

/* ---------- 2ペインレイアウト ---------- */
.admin-2pane{ display:flex; gap:16px; align-items:flex-start; }
.admin-left{ flex:1; min-width:0; }
.admin-right{
  width:280px; flex-shrink:0;
  display:flex; flex-direction:column; gap:10px;
  position:sticky; top:16px;
  max-height:calc(100vh - 220px); overflow-y:auto;
}

/* ---------- アサインバナー ---------- */
.assign-banner{
  background:#1d4ed8; color:#fff; padding:10px 14px; border-radius:10px;
  font-size:13px; font-weight:700; display:flex; align-items:center;
  margin-bottom:12px;
}

/* ---------- サイドブロック ---------- */
.side-block{
  background:#f9fafb; border:1px solid var(--gray-border);
  border-radius:12px; padding:12px;
}
.side-block-title{
  font-size:12px; font-weight:800; color:var(--text-main);
  margin-bottom:8px; display:flex; align-items:center; gap:6px;
}
.side-badge{
  background:var(--admin-blue); color:#fff; border-radius:999px;
  font-size:10px; font-weight:800; padding:1px 7px; min-width:18px; text-align:center;
}
.side-empty{ font-size:12px; color:var(--text-sub); padding:4px 0; }

/* ---------- アラート ---------- */
.alert-item{
  display:flex; align-items:center; gap:6px; padding:7px 10px;
  border-radius:8px; margin-bottom:5px; font-size:12px; cursor:pointer;
}
.alert-danger{ background:#fef2f2; border-left:3px solid var(--danger); }
.alert-warn{ background:#fffbeb; border-left:3px solid var(--warn); }
.alert-msg{ font-weight:700; flex:1; }
.alert-sub{ font-size:11px; color:var(--text-sub); white-space:nowrap; }

/* ---------- サイド順番待ち ---------- */
.side-q-item{ padding:8px 0; border-bottom:1px solid var(--gray-border); }
.side-q-item:last-child{ border-bottom:none; }
.side-q-top{ display:flex; align-items:center; gap:5px; margin-bottom:5px; flex-wrap:wrap; }
.side-q-no{ font-size:11px; font-weight:800; background:#ede9fe; color:#5b21b6; padding:1px 6px; border-radius:4px; }
.side-q-name{ font-size:13px; font-weight:700; flex:1; }
.side-q-size{ font-size:11px; color:var(--text-sub); }
.side-q-actions{ display:flex; gap:5px; flex-wrap:wrap; }
.sq-btn{
  padding:4px 9px; border-radius:6px; border:none; font-size:11px; font-weight:700; cursor:pointer;
}
.sq-call{ background:#dbeafe; color:#1d4ed8; }
.sq-assign{ background:var(--line-green); color:#fff; }
.sq-done{ background:#f0fdf4; color:#15803d; border:1px solid #bbf7d0; }

/* ---------- サイドLINE予約 ---------- */
.side-r-item{ padding:7px 0; border-bottom:1px solid var(--gray-border); }
.side-r-item:last-child{ border-bottom:none; }
.side-r-top{ display:flex; align-items:center; gap:5px; margin-bottom:3px; }
.side-r-time{ font-size:13px; font-weight:800; color:var(--text-main); width:46px; }
.side-r-name{ font-size:12px; flex:1; }
.side-r-lanes{ font-size:11px; color:var(--text-sub); }
.sr-done .side-r-time,.sr-done .side-r-name{ color:var(--text-sub); text-decoration:line-through; }
.sr-soon{ background:#fffbeb; border-radius:6px; padding:5px 7px; margin:-3px -4px; }
.sr-past .side-r-time{ color:#9ca3af; }

/* ---------- レーンカード改善 ---------- */
.lc-end-btn{
  width:100%; margin-top:5px; padding:4px 0;
  border:1px solid #fed7aa; background:#fff7ed; color:#c2410c;
  border-radius:6px; font-size:11px; font-weight:800; cursor:pointer;
}
.lc-end-btn:hover{ background:#c2410c; color:#fff; }
.elapsed-ok{ color:#6b7280; }
.elapsed-warn{ color:#d97706; font-weight:700; }
.elapsed-danger{ color:var(--danger); font-weight:800; animation:blink .8s step-start infinite; }
@keyframes blink{ 50%{ opacity:.4; } }
.lc-assign-overlay{
  position:absolute; inset:0; background:rgba(22,163,74,.15);
  border-radius:10px; display:flex; align-items:center; justify-content:center;
  font-size:11px; font-weight:800; color:#15803d;
  border:2px dashed #16a34a; cursor:pointer;
}
.lc-assignable{ position:relative; }

/* ---------- 来店履歴 ---------- */
.hist-lane-no{ font-weight:800; font-size:13px; color:var(--text-main); }
.hist-type-badge{ font-size:11px; font-weight:700; padding:2px 8px; border-radius:999px; white-space:nowrap; }
.hist-line     { background:#dcfce7; color:#15803d; }
.hist-phone    { background:#dbeafe; color:#1e40af; }
.hist-walkin   { background:#fef9c3; color:#92400e; }
.hist-group    { background:#fce7f3; color:#9d174d; }
.hist-tourn    { background:#ede9fe; color:#5b21b6; }
.hist-dur      { font-weight:700; color:var(--text-sub); }
