:root{
  /* 暖石色底＋琥珀主色：與常見藍／綠儀表板區隔 */
  --bg:#0c0a09;
  --surface:#1c1917;
  --surface2:#292524;
  --border:rgba(255,255,255,.08);
  --border-strong:color-mix(in srgb, var(--accent) 32%, transparent);
  --accent:#f59e0b;
  --accent-mid:#d97706;
  --accent2:#fde68a;
  --accent-soft:color-mix(in srgb, var(--accent) 16%, transparent);
  --danger:#f87171;
  --warn:#fbbf24;
  --text:#fafaf9;
  --muted:#a8a29e;
  --water:#38bdf8;
  --bb:#fb923c;
  --full:#c084fc;
  --font:"Noto Sans TC","PingFang TC","Microsoft JhengHei",ui-sans-serif,system-ui,sans-serif;
  --mono:ui-monospace,"IBM Plex Mono","Consolas","Courier New",monospace;
  --display:"Syne","Noto Sans TC",ui-sans-serif,system-ui,sans-serif;
  --ease:cubic-bezier(0.4,0,0.2,1);
  --ease-out:cubic-bezier(0.16,1,0.3,1);
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:14px;
  --radius-xl:20px;
  --radius-pill:999px;
  --shadow-sm:0 2px 8px rgba(0,0,0,.4);
  --shadow-md:0 20px 50px -15px rgba(0,0,0,.65);
  --shadow-glow:0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent),0 12px 40px rgba(0,0,0,.45);
  --header-h:72px;
  --query-strip-top:72px;
  --touch-min:44px;
  --bg-deep:#0c0a09;
  --bg-mid:#1c1917;
  --notice-bg:#1c1917;
  --notice-border:#57534e;
  --notice-text:#a8a29e;
  --calendar-border:rgba(120,113,108,.38);
  --calendar-select:var(--accent);
  --calendar-select-soft:color-mix(in srgb, var(--accent) 10%, transparent);
  --calendar-select-mid:color-mix(in srgb, var(--accent) 22%, transparent);
  --calendar-select-strong:color-mix(in srgb, var(--accent) 32%, transparent);
  --calendar-select-border:color-mix(in srgb, var(--accent) 42%, transparent);
  --calendar-select-label:#fffbeb;
}
*{box-sizing:border-box;margin:0;padding:0;}
.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;}
.skip-link:focus{position:fixed;left:max(8px,env(safe-area-inset-left));top:max(8px,env(safe-area-inset-top));width:auto;height:auto;padding:10px 16px;z-index:10000;background:var(--accent);color:#1c1917;font-family:var(--mono);font-size:14px;font-weight:700;border-radius:var(--radius-sm);outline:2px solid var(--text);}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
body{
  position:relative;
  color:var(--text);
  font-family:var(--font);
  font-size:15px;
  line-height:1.6;
  min-height:100vh;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  background-color:var(--bg);
  background-image:
    radial-gradient(ellipse 90% 55% at 50% 115%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 55%),
    linear-gradient(185deg, rgba(41,37,36,.5) 0%, transparent 42%),
    repeating-linear-gradient(90deg, transparent, transparent 80px, rgba(255,255,255,.02) 80px, rgba(255,255,255,.02) 81px);
}
body.modal-open{overflow:hidden;touch-action:none;}
.wrap{max-width:1200px;margin:0 auto;padding:0 16px;position:relative;z-index:1;}

/* 整體版面：主內容、頂欄操作、查詢列 */
#main-content{padding-bottom:max(28px,env(safe-area-inset-bottom));}
.hdr-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end;}
.line-user-label{font-family:var(--font);font-size:11px;font-weight:600;color:var(--accent2);max-width:min(160px,32vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 14px;border-radius:var(--radius-pill);background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 22%, transparent);}
.query-phone-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.query-line-hint{font-size:12px;color:var(--muted);font-family:var(--font);font-weight:500;max-width:min(100%,520px);line-height:1.55;}
.query-inline-status{font-size:12px;color:var(--muted);font-family:var(--font);font-weight:500;}

/* HEADER — 粗底線＋標題字體，非膠囊儀表板 */
header{border-bottom:3px solid color-mix(in srgb, var(--accent) 45%, transparent);padding:18px 0 16px;position:sticky;top:0;background:rgba(12,10,9,.88);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15);z-index:100;box-shadow:0 8px 32px rgba(0,0,0,.4);}
header::before{content:'';position:absolute;left:0;right:0;bottom:-3px;height:3px;background:linear-gradient(90deg,transparent,color-mix(in srgb, var(--accent) 70%, transparent),transparent);pointer-events:none;opacity:.9;}
.hrow{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.logo{font-family:var(--display);font-weight:800;font-size:clamp(1.05rem,3.2vw,1.55rem);letter-spacing:.12em;line-height:1.15;text-transform:uppercase;}
/* 頁首主標：光暈預設；支援漸層裁切時改為上亮下深＋ drop-shadow 霓虹感（配色隨 --accent） */
.logo-title{
  display:inline-block;
  color:var(--accent2);
  -webkit-text-fill-color:var(--accent2);
  text-shadow:
    0 0 8px color-mix(in srgb,var(--accent) 55%,transparent),
    0 0 18px color-mix(in srgb,var(--accent) 32%,transparent),
    0 0 34px color-mix(in srgb,var(--accent) 14%,transparent),
    0 1px 2px rgba(0,0,0,.45);
}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .logo-title{
    background:linear-gradient(180deg,#fffbeb 0%,var(--accent2) 45%,var(--accent-mid) 100%);
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
    -webkit-text-fill-color:transparent;
    text-shadow:none;
    filter:drop-shadow(0 0 8px color-mix(in srgb,var(--accent) 70%,transparent))
      drop-shadow(0 0 20px color-mix(in srgb,var(--accent) 38%,transparent))
      drop-shadow(0 0 40px color-mix(in srgb,var(--accent) 16%,transparent));
  }
}
.logo small{display:block;font-family:var(--mono);font-size:9px;font-weight:500;color:var(--muted);letter-spacing:.22em;margin-top:6px;text-transform:none;opacity:.75;-webkit-text-fill-color:var(--muted);}
.admin-btn{background:transparent;border:2px solid color-mix(in srgb, var(--accent) 45%, transparent);color:var(--accent2);padding:8px 18px;font-family:var(--display);font-size:11px;font-weight:700;cursor:pointer;letter-spacing:.08em;text-transform:uppercase;transition:transform .2s var(--ease),color .2s,border-color .2s,background .2s;white-space:nowrap;min-height:var(--touch-min);border-radius:var(--radius-sm);}
.admin-btn:hover{border-color:var(--accent);color:#1c1917;background:var(--accent);transform:translateY(-2px);}
.admin-btn:active{transform:translateY(0);}
button:focus-visible,.tab:focus-visible,.nav-btn:focus-visible,.today-btn:focus-visible,.view-btn:focus-visible,.tool-btn:focus-visible,.login-btn:focus-visible,.logout-btn:focus-visible,.del-btn:focus-visible,.edit-btn:focus-visible,.cancel-booking-btn:focus-visible,.submit-btn:focus-visible,.sel-btn:focus-visible,.modal-close:focus-visible,.finput:focus-visible,.fselect:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}

/* TABS — 底線＋粗指示條（非膠囊） */
.tab-bar{display:flex;border-bottom:3px solid rgba(255,255,255,.1);margin-top:22px;gap:0;padding:0;background:transparent;border-radius:0;border:none;width:100%;max-width:100%;flex-wrap:wrap;box-shadow:none;}
.tab{padding:14px 22px 12px;font-family:var(--display);font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--muted);border:none;background:transparent;border-radius:0;transition:color .2s var(--ease);position:relative;}
.tab.active{color:var(--accent2);background:transparent;box-shadow:none;}
.tab.active::after{content:'';position:absolute;bottom:-3px;left:12px;right:12px;height:3px;background:var(--accent);border-radius:2px 2px 0 0;}
.tab:hover:not(.active){color:var(--text);}
.tab:active:not(.active){opacity:.9;}

/* VIEW SWITCHER — 實心分段（非圓膠囊） */
.view-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:18px;}
.view-btns{display:inline-flex;gap:0;padding:0;border-radius:var(--radius-sm);border:2px solid color-mix(in srgb, var(--accent) 40%, transparent);background:var(--surface);overflow:hidden;box-shadow:4px 4px 0 rgba(0,0,0,.35);}
.view-btn{padding:11px 20px;font-family:var(--display);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;color:var(--muted);background:transparent;border:none;border-radius:0;border-right:1px solid rgba(255,255,255,.08);transition:background .2s var(--ease),color .2s;}
.view-btn:last-child{border-right:none;}
.view-btn.active{background:var(--accent);color:#1c1917;}
.view-btn:hover:not(.active){color:var(--text);background:rgba(255,255,255,.05);}

/* NAV */
.nav-row{display:flex;align-items:center;gap:8px;}
.nav-btn{background:var(--surface2);border:2px solid var(--calendar-border);color:var(--text);width:36px;height:36px;cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:border-color .2s,color .2s,background .2s,transform .15s;border-radius:var(--radius-sm);}
.nav-btn:hover{border-color:var(--calendar-select-border);color:var(--calendar-select);background:var(--calendar-select-soft);transform:scale(1.05);}
.nav-label{font-family:var(--font);font-size:14px;font-weight:600;color:var(--calendar-select-label);letter-spacing:.02em;min-width:200px;text-align:center;font-variant-numeric:tabular-nums;}
.today-btn{background:transparent;border:2px solid var(--calendar-border);color:var(--muted);padding:8px 16px;font-family:var(--display);font-size:10px;font-weight:700;cursor:pointer;letter-spacing:.1em;text-transform:uppercase;transition:all .2s var(--ease);border-radius:var(--radius-sm);}
.today-btn:hover{border-color:var(--calendar-select);color:var(--calendar-select);}
.day-badge{font-family:var(--font);font-size:11px;font-weight:600;padding:5px 11px;border:1px solid var(--calendar-border);color:var(--muted);border-radius:var(--radius-pill);}
.day-badge.weekend{border-color:rgba(251,191,36,.45);color:var(--warn);}

/* LEGEND */
.legend{display:flex;gap:12px 18px;margin-bottom:16px;flex-wrap:wrap;}
.leg{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted);font-family:var(--font);font-weight:500;}
.leg-dot{width:10px;height:10px;border-radius:var(--radius-pill);flex-shrink:0;}
.leg-dot.free{background:transparent;border:1px solid var(--calendar-border);}
.leg-dot.one{background:rgba(251,146,60,.25);border:1px solid var(--bb);}
.leg-dot.na{background:rgba(100,100,100,.2);border:1px solid #555;}
.leg-dot.water{background:rgba(56,189,248,.2);border:1px solid var(--water);}
.leg-dot.bb{background:rgba(251,146,60,.2);border:1px solid var(--bb);}

/* ── DAY VIEW ── */
.cal-wrap{overflow-x:auto;border:2px solid color-mix(in srgb, var(--accent) 22%, transparent);border-radius:var(--radius-md);-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.45));box-shadow:6px 6px 0 rgba(0,0,0,.25);}
.cal-table{width:100%;border-collapse:collapse;min-width:720px;}
.cal-table th{background:linear-gradient(180deg,#44403c,#292524);padding:10px 6px;text-align:center;font-family:var(--display);font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent2);border:1px solid var(--calendar-border);white-space:nowrap;}
.cal-table th.zone-h{text-align:left;padding-left:12px;width:105px;min-width:105px;position:sticky;left:0;z-index:3;background:var(--surface2);box-shadow:4px 0 12px rgba(0,0,0,.35);}
.zone-name{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--calendar-select-label);}
.zone-sub{font-size:9px;color:var(--muted);margin-top:2px;opacity:.95;}
.cal-table td{border:1px solid var(--calendar-border);min-height:96px;padding:4px;vertical-align:top;position:relative;min-width:52px;}
.cal-table td.label-cell{cursor:default;padding:8px 10px;vertical-align:middle;position:sticky;left:0;z-index:2;background:var(--surface2);box-shadow:4px 0 10px rgba(0,0,0,.28);}
.cal-table td.clickable{cursor:pointer;transition:background .15s;}
.cal-table td.clickable:hover{background:var(--calendar-select-soft);}
.cal-table td.unavailable{background:repeating-linear-gradient(-45deg,var(--surface),var(--surface) 4px,var(--surface2) 4px,var(--surface2) 8px);cursor:not-allowed;}
.cal-table td.unavailable.cal-slot-interactive{cursor:pointer;}
.cal-table td.unavailable.cal-slot-interactive:hover{background:var(--calendar-select-soft);}
.slot-detail-list{list-style:none;margin:0;padding:0;font-size:13px;line-height:1.55;color:var(--text);}
.slot-detail-row{padding:8px 10px;border:1px solid var(--calendar-border);border-radius:var(--radius-md);margin-bottom:8px;background:rgba(255,255,255,.03);font-family:var(--mono);font-size:12px;}
.slot-detail-row:last-child{margin-bottom:0;}
.slot-join-details{margin-top:10px;padding:10px 10px;background:rgba(0,0,0,.2);border:1px dashed var(--calendar-border);border-radius:var(--radius-md);}
.slot-join-row{padding:6px 8px;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-md);margin-bottom:6px;background:rgba(255,255,255,.02);font-family:var(--mono);font-size:12px;color:var(--text);}
.slot-join-row:last-child{margin-bottom:0;}
.slot-join-empty{font-family:var(--mono);font-size:12px;color:var(--muted);text-align:center;padding:6px 0;}
.slot-join-sum{margin-top:8px;font-family:var(--mono);font-size:12px;color:var(--accent2);text-align:right;}
.slot-detail-empty{color:var(--muted);font-size:12px;padding:8px 0;text-align:center;}
.slot-cell-inner{position:absolute;inset:4px;display:flex;flex-direction:column;gap:4px;min-height:0;overflow:hidden;}
.slot-meta{flex:0 0 auto;font-size:11px;font-family:var(--mono);color:var(--muted);text-align:center;line-height:1.35;padding:2px 3px 0;letter-spacing:.02em;font-weight:600;}
.slot-chips-stack{flex:1 1 auto;min-height:44px;position:relative;}
.slot-chip{position:absolute;left:0;right:0;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:9px;font-family:var(--mono);overflow:hidden;white-space:nowrap;}
.slot-chip.top{top:0;bottom:50%;margin-bottom:1px;}
.slot-chip.bot{top:50%;bottom:0;margin-top:1px;}
.slot-chip.full-h{top:0;bottom:0;}
.slot-chip.water-chip{background:rgba(56,189,248,.2);border:1px solid rgba(56,189,248,.45);color:var(--water);}
.slot-chip.bb-chip{background:rgba(251,146,60,.2);border:1px solid rgba(251,146,60,.45);color:var(--bb);}
.slot-chip.na-chip{background:rgba(100,100,100,.15);border:1px solid #555;color:#888;font-size:8px;}
.slot-chip.full-zone{background:rgba(192,132,252,.16);border:1px solid rgba(192,132,252,.45);color:var(--full);}
.slot-chip.warn-chip{background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.4);color:var(--warn);font-size:8px;}
.slot-chip.join-chip{background:rgba(74,222,128,.16);border:1px solid rgba(74,222,128,.45);color:color-mix(in srgb, var(--accent) 65%, #22c55e);cursor:pointer;font-size:9px;}
.slot-chip.join-chip:hover{background:rgba(74,222,128,.28);}
.slot-chip.join-chip{animation:pulse-join 2s infinite;}
@keyframes pulse-join{
  0%,100%{box-shadow:0 0 0 0 rgba(74,222,128,.0);}
  50%{box-shadow:0 0 0 6px rgba(74,222,128,.08);}
}
.slot-more{position:absolute;left:0;right:0;bottom:1px;font-size:8px;color:var(--muted);text-align:center;font-family:var(--mono);line-height:1;pointer-events:none;z-index:2;text-shadow:0 1px 2px rgba(0,0,0,.85);}

/* ── WEEK VIEW ── */
.week-wrap{overflow-x:auto;border:2px solid color-mix(in srgb, var(--accent) 22%, transparent);border-radius:var(--radius-md);-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.45));box-shadow:6px 6px 0 rgba(0,0,0,.25);}
.week-table{width:100%;border-collapse:collapse;min-width:600px;}
.week-table th{background:linear-gradient(180deg,#44403c,#292524);padding:10px 6px;text-align:center;font-family:var(--display);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);border:1px solid var(--calendar-border);white-space:nowrap;}
.week-table th.zone-h{text-align:left;padding-left:12px;width:100px;position:sticky;left:0;z-index:3;background:var(--surface2);box-shadow:4px 0 12px rgba(0,0,0,.35);}
.week-table th.today-col{color:var(--calendar-select);border-bottom:2px solid var(--calendar-select);background:var(--calendar-select-soft);}
.week-table td{border:1px solid var(--calendar-border);padding:6px 4px;text-align:center;vertical-align:middle;cursor:pointer;transition:background .15s;height:56px;}
.week-table td.label-cell{cursor:default;text-align:left;padding:8px 10px;position:sticky;left:0;z-index:2;background:var(--surface2);box-shadow:4px 0 10px rgba(0,0,0,.28);}
.week-table td:not(.label-cell):hover{background:var(--calendar-select-soft);}
.week-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:100%;}
.week-count{font-family:var(--mono);font-size:18px;font-weight:700;line-height:1;}
.week-dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;}
.wdot{width:7px;height:7px;border-radius:2px;}
.wdot.bb{background:var(--bb);opacity:.85;}
.wdot.water{background:var(--water);opacity:.85;}
.wdot.full-z{background:var(--full);opacity:.85;}
.week-empty{font-family:var(--mono);font-size:10px;color:var(--muted);opacity:.5;}

/* ── MONTH VIEW ── */
.month-wrap{overflow-x:auto;border-radius:var(--radius-xl);}
.month-grid{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--calendar-border);border-left:1px solid var(--calendar-border);border-radius:0 0 var(--radius-xl) var(--radius-xl);overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(0,0,0,.1));box-shadow:var(--shadow-sm);}
.month-header{background:#292524;border-right:1px solid var(--calendar-border);border-bottom:1px solid var(--calendar-border);padding:10px 4px;text-align:center;font-family:var(--display);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);}
.month-header.sun{color:var(--danger);}
.month-header.sat{color:var(--water);}
.month-day{border-right:1px solid var(--calendar-border);border-bottom:1px solid var(--calendar-border);padding:7px 8px;min-height:80px;cursor:pointer;transition:background .15s;position:relative;}
.month-day:focus-visible{outline:2px solid var(--calendar-select);outline-offset:2px;z-index:1;}
.cal-table td.clickable:focus-visible{z-index:1;outline:2px solid var(--calendar-select);outline-offset:-2px;}
.week-table td:focus-visible:not(.label-cell){outline:2px solid var(--calendar-select);outline-offset:-2px;}
.month-day:hover{background:var(--calendar-select-soft);}
.month-day.other-month{opacity:.35;}
.month-day-closed{opacity:.45;}
.month-day-closed .day-num{text-decoration:line-through;opacity:.75;}
.month-day.today .day-num{color:var(--calendar-select);font-weight:700;}
.month-day.today{background:var(--calendar-select-mid);}
.month-day.weekend .day-num{color:var(--warn);}
.day-num{font-family:var(--mono);font-size:13px;color:var(--muted);margin-bottom:5px;}
.month-pills{display:flex;flex-direction:column;gap:3px;}
.month-pill{font-size:9px;font-family:var(--mono);padding:3px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.month-pill.has-booking{background:var(--calendar-select-mid);border:1px solid var(--calendar-select-border);color:var(--calendar-select-label);}
.month-pill.full-day{background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.35);color:var(--danger);}
.month-pill.warn-day{background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.35);color:var(--warn);}

/* MODAL — 硬邊角＋琥珀框，非圓潤玻璃卡 */
.overlay{position:fixed;inset:0;background:rgba(12,10,9,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);z-index:200;display:none;align-items:center;justify-content:center;padding:14px;}
.overlay.open{display:flex;}
.modal{background:linear-gradient(165deg,#292524 0%,#1c1917 50%,#0c0a09 100%);border:2px solid color-mix(in srgb, var(--accent) 35%, transparent);width:100%;max-width:460px;animation:mIn .4s var(--ease-out);max-height:92vh;overflow-y:auto;border-radius:var(--radius-md);box-shadow:12px 12px 0 rgba(0,0,0,.45),var(--shadow-glow);}
@keyframes mIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
.modal-hd{background:#1c1917;border-bottom:2px solid color-mix(in srgb, var(--accent) 25%, transparent);padding:16px 18px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:1;}
.modal-title{font-family:var(--display);font-weight:800;font-size:1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);}
.modal-close{background:none;border:none;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;padding:4px;border-radius:var(--radius-sm);transition:color .2s,background .2s;}
.modal-close:hover{color:var(--danger);background:rgba(248,113,113,.08);}
.modal-bd{padding:18px;}
.notice-body{font-size:14px;line-height:1.85;color:var(--text);margin-bottom:20px;}
.notice-body p{margin:0 0 .75em 0;}
.notice-body p:last-child{margin-bottom:0;}
.notice-body strong,.notice-body b{font-weight:700;color:var(--accent2);}
.notice-body a{color:var(--accent);}
.notice-body ul,.notice-body ol{margin:.5em 0;padding-left:1.2em;}
.notice-body h1,.notice-body h2,.notice-body h3,.notice-body h4{font-size:1.05em;margin:.75em 0 .4em;font-family:var(--font);font-weight:700;color:var(--accent);}
.notice-body code{font-family:var(--mono);font-size:12px;background:var(--surface2);padding:2px 6px;border-radius:4px;border:1px solid var(--border);}
.info-box{background:var(--surface2);border:1px solid var(--border);padding:12px;margin-bottom:14px;font-family:var(--mono);font-size:11px;color:var(--accent2);letter-spacing:.04em;line-height:1.9;white-space:pre;border-radius:var(--radius-sm);}
.fg{margin-bottom:14px;}
.flabel{display:block;font-family:var(--font);font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;}
.finput,.fselect{width:100%;background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--text);padding:11px 14px;font-family:var(--font);font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s,background .2s;-webkit-appearance:none;border-radius:var(--radius-md);}
.finput:focus,.fselect:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.fselect option{background:var(--surface2);}
.btn-row{display:flex;gap:8px;}
.sel-btn{flex:1;padding:10px;background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--muted);font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s var(--ease);letter-spacing:.02em;border-radius:var(--radius-md);}
.sel-btn.active{border-color:color-mix(in srgb, var(--accent) 45%, transparent);color:var(--accent2);background:color-mix(in srgb, var(--accent) 12%, transparent);}
.submit-btn{width:100%;background:var(--accent);border:3px solid #b45309;color:#1c1917;padding:16px 14px;font-family:var(--display);font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:transform .15s var(--ease),filter .2s,box-shadow .2s;margin-top:8px;border-radius:var(--radius-sm);box-shadow:6px 6px 0 rgba(0,0,0,.35);}
.submit-btn:hover{filter:brightness(1.05);box-shadow:8px 8px 0 rgba(0,0,0,.4);}
.submit-btn:active{transform:scale(.992);}
.err-msg{color:var(--danger);font-size:11px;font-family:var(--mono);margin-top:8px;display:none;letter-spacing:.04em;}
hr.div{border:none;border-top:1px solid var(--border);margin:12px 0;}

/* ADMIN */
.admin-login{max-width:360px;margin:40px auto;background:var(--surface);border:3px solid color-mix(in srgb, var(--accent) 40%, transparent);padding:32px;border-radius:var(--radius-md);box-shadow:10px 10px 0 rgba(0,0,0,.4);}
.adm-line-gate{margin-bottom:16px;padding:12px 14px;border-radius:var(--radius-md);font-size:13px;line-height:1.45;color:var(--warn);background:rgba(251,191,36,.08);border:1px solid rgba(251,191,36,.28);}
.admin-title{font-family:var(--display);font-weight:800;font-size:1.35rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text);margin-bottom:22px;text-align:center;}
.login-btn{width:100%;background:transparent;border:2px solid var(--accent);color:var(--accent2);padding:14px;font-family:var(--display);font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;margin-top:12px;transition:all .2s var(--ease);border-radius:var(--radius-sm);}
.login-btn:hover{background:var(--accent);color:#1c1917;transform:translateY(-2px);}
.adm-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:10px;}
.sec-title{font-family:var(--display);font-weight:800;font-size:1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);}
.logout-btn{background:rgba(255,255,255,.04);border:1px solid var(--border);color:var(--muted);padding:8px 16px;font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s;border-radius:var(--radius-pill);}
.logout-btn:hover{border-color:var(--danger);color:var(--danger);background:rgba(248,113,113,.08);}
.tbl-wrap{overflow-x:auto;}
.adm-tbl{width:100%;border-collapse:collapse;min-width:820px;}
/* 訂單／已取消：欄位多，維持最小寬度以觸發橫向捲動，避免「操作」被壓扁（不 sticky，與備註一併橫向捲動） */
.adm-tbl.adm-tbl-wide{min-width:1480px;}
/* 修改紀錄：四欄窄表，勿套用 wide 的最小寬度 */
.adm-tbl.adm-tbl-logs{
  min-width: 0;
  width: 100%;
  max-width: 100%;
  table-layout: fixed;
}
.adm-tbl.adm-tbl-logs th:nth-child(1),
.adm-tbl.adm-tbl-logs td:nth-child(1){
  width: 10.75rem;
  max-width: 11.5rem;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.adm-tbl.adm-tbl-logs th:nth-child(2),
.adm-tbl.adm-tbl-logs td:nth-child(2){
  width: 4.25rem;
  white-space: nowrap;
}
.adm-tbl.adm-tbl-logs th:nth-child(3),
.adm-tbl.adm-tbl-logs td:nth-child(3){
  width: 7rem;
  white-space: nowrap;
  vertical-align: middle;
}
.adm-tbl.adm-tbl-logs th:nth-child(4),
.adm-tbl.adm-tbl-logs td:nth-child(4){
  white-space: normal;
  word-break: break-word;
}
.adm-tbl.adm-tbl-wide th:last-child,
.adm-tbl.adm-tbl-wide td:last-child{
  min-width:168px;
  width:1%;
  vertical-align:middle;
}
.adm-tbl th{background:linear-gradient(180deg,#44403c,#292524);padding:9px 11px;text-align:left;font-family:var(--display);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);border:1px solid var(--border);}
.adm-tbl td{padding:9px 11px;border:1px solid var(--border);font-size:13px;vertical-align:middle;}
.adm-tbl tr:hover td{background:color-mix(in srgb, var(--accent) 4%, transparent);}
.adm-tbl tr.over-cap td{background:rgba(251,191,36,.06);}
.badge{display:inline-block;padding:3px 7px;font-family:var(--mono);font-size:9px;letter-spacing:.04em;border-radius:4px;}
.badge.water{background:rgba(56,189,248,.15);color:var(--water);border:1px solid rgba(56,189,248,.35);}
.badge.bb{background:rgba(251,146,60,.15);color:var(--bb);border:1px solid rgba(251,146,60,.35);}
.badge.warn{background:rgba(251,191,36,.15);color:var(--warn);border:1px solid rgba(251,191,36,.35);}
.del-btn{background:transparent;border:1px solid var(--border);color:var(--muted);padding:4px 8px;font-size:10px;cursor:pointer;font-family:var(--mono);transition:all .2s;border-radius:var(--radius-sm);}
.del-btn:hover{border-color:var(--danger);color:var(--danger);}
/* 勿對 td 使用 display:flex，會破壞 table 版面導致與鄰欄重疊 */
.adm-op-cell{
  vertical-align:middle;
  min-width:168px;
  white-space:normal;
}
.adm-op-inner{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.adm-op-cell .bl-from-order{border-color:rgba(251,191,36,.45);color:var(--warn);}
.adm-op-cell .bl-from-order:hover{border-color:var(--warn);color:var(--accent);}
.empty{text-align:center;padding:36px;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.04em;}

.toast{
  position:fixed;
  bottom:max(20px,env(safe-area-inset-bottom,0px));
  right:max(16px,env(safe-area-inset-right,0px));
  left:auto;
  max-width:min(300px,calc(100vw - 32px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)));
  background:#1c1917;
  border:2px solid color-mix(in srgb, var(--accent) 45%, transparent);
  color:var(--text);
  padding:14px 20px;
  font-family:var(--font);
  font-size:13px;
  font-weight:600;
  letter-spacing:.02em;
  z-index:500;
  transform:translateY(80px);
  opacity:0;
  transition:transform .35s var(--ease-out),opacity .35s;
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-md);
  backdrop-filter:blur(12px);
}
.toast.show{transform:translateY(0);opacity:1;}
.toast.err{border-color:var(--danger);color:var(--danger);}
.notice{background:var(--notice-bg);border:1px solid var(--notice-border);padding:14px 18px;font-size:13px;color:var(--notice-text);margin-bottom:16px;font-family:var(--font);font-weight:500;line-height:1.7;border-radius:var(--radius-lg);box-shadow:0 2px 12px rgba(0,0,0,.12);}
.section{padding:22px 0;}
/* 訪客主面板：日曆與說明區塊一體化 */
.pub-panel{
  margin-top:14px;
  padding:22px 20px 26px 24px;
  background:linear-gradient(160deg,rgba(41,37,36,.95) 0%,rgba(28,25,23,.98) 100%);
  border:1px solid rgba(255,255,255,.09);
  border-left:6px solid var(--accent);
  border-radius:0 var(--radius-xl) var(--radius-xl) 0;
  box-shadow:8px 8px 0 rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.04);
}
.pub-panel .notice{margin-bottom:14px;}
.pub-panel .view-bar{
  background:rgba(0,0,0,.2);
  border:2px dashed color-mix(in srgb, var(--accent) 35%, transparent);
  border-radius:var(--radius-sm);
  padding:14px 16px;
  margin-bottom:16px;
  gap:14px;
}
.pub-panel .legend{
  padding:12px 16px;
  background:rgba(0,0,0,.25);
  border:2px solid var(--calendar-select-border);
  border-radius:var(--radius-sm);
  margin-bottom:16px;
}
/* 後台外層 */
.adm-sec{padding-bottom:8px;}

/* ADMIN TABS */
.adm-tabs{display:flex;gap:4px;border-bottom:2px solid rgba(255,255,255,.1);margin-bottom:18px;flex-wrap:wrap;}
.adm-tab{padding:10px 18px;font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;color:var(--muted);border-bottom:3px solid transparent;background:transparent;border-top:none;border-left:none;border-right:none;transition:all .2s;border-radius:0;}
.adm-tab.active{color:var(--accent2);border-bottom-color:var(--accent);background:transparent;}
.adm-tab:hover:not(.active){color:var(--text);}
.adm-toolbar{margin-bottom:16px;}
.adm-filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.adm-filter-row .flabel{margin-bottom:0;}
.adm-filter-sep{color:var(--muted);font-size:12px;user-select:none;padding:0 2px;}

/* 後台主面板：分頁、篩選、表格區 */
.adm-panel{
  margin-top:12px;
  padding:24px 22px 30px 26px;
  background:linear-gradient(165deg,#292524 0%,#1c1917 100%);
  border:1px solid rgba(255,255,255,.1);
  border-left:6px solid var(--accent-mid);
  border-radius:0 var(--radius-xl) var(--radius-xl) 0;
  box-shadow:8px 8px 0 rgba(0,0,0,.35);
}
.adm-panel .adm-hd{
  margin-bottom:0;
  padding-bottom:16px;
  border-bottom:1px solid var(--border);
}
.adm-panel .adm-tabs{
  margin:18px 0 20px;
  padding:8px 10px;
  gap:6px;
  border-bottom:none;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
}
.adm-panel .adm-tab{
  border-radius:var(--radius-sm);
  border-bottom:none!important;
  padding:9px 14px;
  background:rgba(0,0,0,.12);
  border-left:none;border-right:none;border-top:none;
  font-family:var(--font);
  font-weight:600;
  font-size:12px;
}
.adm-panel .adm-tab.active{
  background:var(--accent);
  border:1px solid #b45309;
  color:#1c1917;
  box-shadow:3px 3px 0 rgba(0,0,0,.35);
}
.adm-panel .adm-tab:hover:not(.active){
  background:rgba(255,255,255,.05);
  color:var(--text);
}
.adm-panel .adm-toolbar{
  padding:12px 14px;
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  margin-bottom:18px;
}
.adm-panel .tbl-wrap{
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  background:rgba(0,0,0,.1);
}
.adm-notice-help{color:var(--muted);font-size:12px;line-height:1.65;margin:0 0 14px;}
/* 後台：會員管理 */
.adm-members-page{margin-bottom:8px;}
.adm-mem-intro{margin-bottom:18px;}
.adm-mem-cards{
  display:grid;
  gap:14px;
  grid-template-columns:1fr;
  margin-bottom:18px;
}
@media (min-width:640px) and (max-width:899px){
  .adm-mem-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
  .adm-mem-card--accent{grid-column:1/-1;}
}
@media (min-width:900px){
  .adm-mem-cards{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;}
}
.adm-mem-card{
  background:linear-gradient(165deg,color-mix(in srgb,var(--surface2) 88%,transparent) 0%,color-mix(in srgb,var(--surface) 95%,#000) 100%);
  border:1px solid color-mix(in srgb,var(--border) 85%,transparent);
  border-radius:var(--radius-lg);
  padding:0;
  box-shadow:0 4px 18px rgba(0,0,0,.22);
  overflow:hidden;
}
.adm-mem-card--accent{
  border-color:color-mix(in srgb,var(--accent) 38%,var(--border));
  box-shadow:0 4px 20px color-mix(in srgb,var(--accent) 12%,transparent);
}
.adm-mem-card-head{
  display:flex;
  align-items:baseline;
  gap:10px;
  flex-wrap:wrap;
  padding:12px 16px 10px;
  border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);
  background:rgba(0,0,0,.12);
}
.adm-mem-kicker{
  font-family:var(--display);
  font-size:9px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--accent2);
  opacity:.9;
}
.adm-mem-card-title{
  margin:0;
  font-family:var(--display);
  font-size:.95rem;
  font-weight:800;
  letter-spacing:.06em;
  color:var(--text);
}
.adm-mem-card-body{padding:14px 16px 16px;}
.adm-mem-hint{
  margin:0 0 12px;
  font-size:12px;
  line-height:1.55;
  color:var(--muted);
}
.adm-mem-hint strong{color:var(--text);font-weight:700;}
.adm-mem-form-grid{
  display:grid;
  gap:12px 14px;
  grid-template-columns:1fr;
  align-items:end;
}
@media (min-width:520px){
  .adm-mem-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .adm-mem-form-grid--search{grid-template-columns:1fr auto;}
  .adm-mem-fg--grow{grid-column:1/-1;}
  .adm-mem-actions--end{grid-column:1/-1;}
}
.adm-mem-fg{margin-bottom:0!important;}
.adm-mem-fg .flabel{margin-bottom:6px;}
.adm-mem-input{width:100%;min-width:0;}
.adm-mem-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.adm-mem-actions--end{justify-content:flex-end;}
.adm-mem-alert{
  margin:12px 0 0;
  padding:10px 12px;
  border-radius:var(--radius-md);
  font-size:12px;
  line-height:1.45;
}
.adm-mem-alert--err{
  background:rgba(248,113,113,.1);
  border:1px solid rgba(248,113,113,.35);
  color:var(--danger);
}
.adm-mem-mono{font-family:var(--mono);}
.adm-mem-dim{font-size:11px;color:var(--muted);}
.adm-mem-note{font-size:12px;color:var(--muted);max-width:min(280px,36vw);}
.adm-mem-table-card{
  background:color-mix(in srgb,var(--surface2) 55%,transparent);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:0;
  overflow:hidden;
  box-shadow:0 6px 24px rgba(0,0,0,.2);
}
.adm-mem-table-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  padding:14px 16px;
  border-bottom:1px solid var(--border);
  background:rgba(0,0,0,.14);
}
.adm-mem-table-title{
  margin:0;
  font-family:var(--display);
  font-size:1rem;
  font-weight:800;
  letter-spacing:.08em;
  color:var(--accent2);
}
.adm-mem-table-sub{font-size:11px;color:var(--muted);font-family:var(--mono);}
.adm-mem-tbl-wrap{margin:0;padding:0 0 8px;}
.adm-tbl-mem th{font-size:8px;}
.adm-mem-th-ops{min-width:200px;}
.adm-mem-line-td{max-width:min(360px,42vw);}
.adm-mem-num{text-align:right;font-variant-numeric:tabular-nums;}
.adm-mem-pts-cell{vertical-align:middle;}
.adm-mem-pts-val{
  font-family:var(--mono);
  font-weight:700;
  font-size:14px;
  color:var(--accent2);
}
.adm-mem-tag{
  display:inline-block;
  margin-top:4px;
  padding:2px 7px;
  font-size:9px;
  font-weight:700;
  letter-spacing:.04em;
  border-radius:4px;
  border:1px solid var(--border);
  color:var(--muted);
  background:rgba(0,0,0,.15);
}
.adm-mem-tag--ok{
  border-color:rgba(74,222,128,.45);
  color:#86efac;
  background:rgba(34,197,94,.1);
}
.adm-mem-op-grid{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.adm-mem-op{
  font-family:var(--font);
  font-size:11px;
  font-weight:600;
  padding:6px 11px;
  border-radius:var(--radius-sm);
  border:1px solid var(--border);
  background:rgba(255,255,255,.05);
  color:var(--text);
  cursor:pointer;
  transition:border-color .15s,background .15s,color .15s;
}
.adm-mem-op:hover{background:rgba(255,255,255,.09);}
.adm-mem-op--pri{
  border-color:color-mix(in srgb,var(--accent) 50%,transparent);
  color:var(--accent2);
}
.adm-mem-op--danger{
  border-color:rgba(248,113,113,.4);
  color:var(--danger);
}
.adm-mem-op--danger:hover{background:rgba(248,113,113,.08);}
.adm-mini-hint{color:var(--muted);font-size:12px;line-height:1.65;margin:0 0 10px;}
.theme-adm-block{margin-top:4px;}
.theme-color-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
  gap:12px;
  margin-bottom:12px;
}
.theme-color-item{
  display:flex;
  flex-direction:column;
  gap:6px;
  font-size:12px;
  color:var(--muted);
}
.theme-color-label{font-weight:600;color:var(--text);}
.theme-color-input{
  width:100%;
  height:40px;
  padding:2px;
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  cursor:pointer;
  background:var(--surface);
}
.booking-types-editor{display:flex;flex-direction:column;gap:12px;margin-bottom:12px;}
.zones-editor{display:flex;flex-direction:column;gap:12px;margin-bottom:12px;}
.zone-row{border:1px solid var(--border);padding:12px;border-radius:var(--radius-md);background:rgba(0,0,0,.12);}
.zone-row-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;align-items:end;}
.zone-row .zone-remove{margin-top:4px;}
.booking-type-row{
  padding:14px 16px;
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  background:rgba(0,0,0,.12);
}
.booking-type-row .fg{margin-bottom:10px;}
.booking-type-row .fg:last-of-type{margin-bottom:0;}
.bt-id-hint{font-size:11px;color:var(--muted);line-height:1.5;margin:6px 0 0;}
.bt-small-note{font-size:11px;color:var(--muted);margin:6px 0 0;}
.bt-inline-num{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.bt-inline-num .finput{max-width:88px;}
.bt-row-actions{margin-top:12px;padding-top:10px;border-top:1px solid var(--border);}
.bt-remove{border-color:rgba(248,113,113,.35);color:#f87171;}
.bt-remove:hover{border-color:rgba(248,113,113,.55);background:rgba(248,113,113,.08);color:#fca5a5;}
#noticeHtmlEditor{min-height:280px;}
.adm-blacklist-intro{color:var(--muted);font-size:12px;line-height:1.65;margin:0 0 14px;}
.bl-options-card{
  margin-bottom:18px;
  padding:14px 16px;
  border:1px solid var(--border);
  background:linear-gradient(180deg,var(--surface2),rgba(15,21,18,.96));
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-sm);
}
.bl-options-title{font-size:12px;color:var(--accent2);margin-bottom:8px;font-family:var(--mono);letter-spacing:.04em;}
.bl-options-checks{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:center;font-size:12px;margin-bottom:12px;}
.bl-options-checks label{cursor:pointer;display:inline-flex;align-items:center;gap:8px;}
.bl-section-title{font-size:12px;color:var(--accent2);margin:22px 0 10px;font-family:var(--mono);letter-spacing:.04em;padding-bottom:6px;border-bottom:1px solid var(--border);}
.tool-btn{background:transparent;border:2px solid var(--border);color:var(--muted);padding:8px 16px;font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:all .2s var(--ease);white-space:nowrap;border-radius:var(--radius-sm);}
.tool-btn:hover{border-color:var(--accent);color:var(--accent2);background:color-mix(in srgb, var(--accent) 8%, transparent);transform:translateY(-2px);}
.export-btn{border-color:color-mix(in srgb, var(--accent) 45%, transparent);color:var(--accent2);}
.export-btn:hover{background:color-mix(in srgb, var(--accent) 12%, transparent);}

/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:22px;}
.stat-card{background:var(--surface);border:2px solid var(--border);border-left:4px solid var(--accent);padding:18px;border-radius:var(--radius-sm);box-shadow:4px 4px 0 rgba(0,0,0,.3);}
.stat-label{font-family:var(--display);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;}
.stat-val{font-family:var(--font);font-weight:700;font-size:1.75rem;letter-spacing:0;font-variant-numeric:tabular-nums;line-height:1.2;color:var(--accent2);}
.stat-sub{font-size:11px;color:var(--muted);margin-top:6px;}
.stats-section{margin-bottom:22px;}
.stats-title{font-family:var(--font);font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--accent2);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border);}
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.bar-label{font-family:var(--mono);font-size:11px;color:var(--muted);width:80px;text-align:right;flex-shrink:0;}
.bar-wrap{flex:1;background:var(--surface);height:22px;position:relative;border-radius:4px;overflow:hidden;border:1px solid var(--border);}
.bar-fill{height:100%;background:linear-gradient(90deg,#b45309,var(--accent),#fde68a);opacity:.95;transition:width .4s;}
.bar-count{font-family:var(--mono);font-size:10px;color:var(--text);margin-left:6px;flex-shrink:0;}

/* VIP */
.vip-table{width:100%;border-collapse:collapse;min-width:500px;}
.vip-table th{background:linear-gradient(180deg,#44403c,#292524);padding:10px 12px;text-align:left;font-family:var(--display);font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);border:1px solid var(--border);}
.vip-table td{padding:10px 12px;border:1px solid var(--border);font-size:13px;}
.vip-table tr:hover td{background:color-mix(in srgb, var(--accent) 4%, transparent);}
.rank-badge{display:inline-block;width:24px;height:24px;border-radius:50%;text-align:center;line-height:24px;font-family:var(--mono);font-size:11px;font-weight:700;}
.rank-1{background:rgba(251,191,36,.22);color:var(--warn);border:1px solid rgba(251,191,36,.45);}
.rank-2{background:rgba(156,163,175,.15);color:#9ca3af;border:1px solid rgba(156,163,175,.35);}
.rank-3{background:rgba(251,146,60,.15);color:var(--bb);border:1px solid rgba(251,146,60,.35);}
.rank-n{background:var(--surface2);color:var(--muted);border:1px solid var(--border);}

/* PHONE QUERY */
.query-section{margin-top:36px;border-top:1px solid var(--border);padding-top:24px;}
.query-title{font-family:var(--display);font-weight:800;font-size:1rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent2);margin-bottom:14px;}
.query-row{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.query-result{margin-top:6px;}

/* EDIT MODAL + Q CARDS */
.edit-btn{background:transparent;border:1px solid var(--border);color:var(--accent);padding:4px 10px;font-family:var(--mono);font-size:10px;cursor:pointer;letter-spacing:.04em;transition:all .2s;border-radius:var(--radius-sm);}
.edit-btn:hover{background:var(--accent-soft);}
.cancel-booking-btn{background:transparent;border:1px solid var(--border);color:var(--danger);padding:4px 10px;font-family:var(--mono);font-size:10px;cursor:pointer;letter-spacing:.04em;transition:all .2s;border-radius:var(--radius-sm);}
.cancel-booking-btn:hover{background:rgba(248,113,113,.1);}
.q-result-grid{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;}
.q-card{background:var(--surface2);border:1px solid var(--border);padding:12px 14px;margin-bottom:8px;display:inline-flex;flex-direction:column;gap:5px;min-width:180px;max-width:240px;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);}
.q-card-top{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;margin-bottom:4px;}
.q-zone{font-family:var(--mono);font-size:12px;color:var(--accent2);letter-spacing:.04em;}
.q-date{font-family:var(--mono);font-size:11px;color:var(--muted);}
.q-detail{font-size:11px;color:var(--muted);margin-top:2px;}
.q-card-left{flex:1;}
.q-date-big{font-family:var(--mono);font-size:13px;color:var(--accent);letter-spacing:.04em;}
.q-time-big{font-family:var(--mono);font-size:11px;color:var(--accent2);margin-top:2px;}
.q-zone-badge{font-family:var(--mono);font-size:11px;color:var(--accent2);white-space:nowrap;}
.q-actions{display:flex;gap:6px;margin-top:6px;}
.q-status{font-size:11px;font-family:var(--mono);margin-top:4px;line-height:1.45;}
.q-status-done{color:var(--muted);}
.q-status-live{color:var(--notice_text);}
.cancelled-badge{display:inline-block;padding:3px 9px;background:rgba(248,113,113,.12);border:1px solid rgba(248,113,113,.35);color:var(--danger);font-family:var(--mono);font-size:10px;border-radius:4px;}

.site-header{padding-top:env(safe-area-inset-top);}
.query-strip{background:rgba(28,25,23,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:2px solid color-mix(in srgb, var(--accent) 28%, transparent);z-index:90;position:sticky;top:var(--query-strip-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);box-shadow:0 10px 30px rgba(0,0,0,.35);}
.query-strip .wrap{padding-top:12px;padding-bottom:12px;}
.query-strip-inner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.query-label{font-family:var(--font);font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.04em;white-space:nowrap;}
#queryPhone{max-width:min(100%,220px);padding:10px 14px;font-size:16px;min-height:var(--touch-min);border-radius:var(--radius-md);border:1px solid var(--border);background:rgba(255,255,255,.04);color:var(--text);}
#queryPhone:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);}
.tbl-wrap{-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;padding-bottom:6px;}
.adm-tbl th:first-child,.adm-tbl td:first-child{position:sticky;left:0;z-index:2;background:var(--surface2);box-shadow:4px 0 10px rgba(0,0,0,.28);}
.adm-tbl thead th:first-child{z-index:3;}
/* 會員名單等：第一欄不固定，與其他欄一併橫向捲動 */
.adm-tbl.adm-tbl-no-sticky-first th:first-child,
.adm-tbl.adm-tbl-no-sticky-first td:first-child{
  position:static;
  left:auto;
  z-index:auto;
  box-shadow:none;
  background:transparent;
}
.adm-tbl.adm-tbl-no-sticky-first thead th:first-child{
  z-index:auto;
  background:linear-gradient(180deg,#44403c,#292524);
}
.adm-tbl.adm-tbl-no-sticky-first tr:hover td:first-child{
  background:color-mix(in srgb, var(--accent) 4%, transparent);
}
/* 會員表 LINE User ID：完整顯示（可換行） */
.adm-tbl-no-sticky-first .adm-member-line-id{
  font-family:var(--mono);
  font-size:10px;
  line-height:1.45;
  word-break:break-all;
  white-space:normal;
  display:block;
  max-width:min(420px,100%);
}
.vip-table th:first-child,.vip-table td:first-child{position:sticky;left:0;z-index:2;background:var(--surface2);box-shadow:4px 0 10px rgba(0,0,0,.28);}
.vip-table thead th:first-child{z-index:3;}
.overlay{padding:max(16px,calc(env(safe-area-inset-top) + 8px)) max(14px,env(safe-area-inset-right)) max(22px,calc(env(safe-area-inset-bottom) + 16px)) max(14px,env(safe-area-inset-left));}
.modal-close{min-width:var(--touch-min);min-height:var(--touch-min);display:inline-flex;align-items:center;justify-content:center;}
.nav-btn{min-width:var(--touch-min);min-height:var(--touch-min);}
.tab,.view-btn,.tool-btn{min-height:var(--touch-min);}
.scroll-hint{display:none;font-size:10px;color:var(--muted);font-family:var(--mono);margin-bottom:8px;}

@media (max-width:640px){
  :root{--query-strip-top:96px;}
  /* iOS：輸入框字級 ≥16px 可避免聚焦時整頁被放大 */
  .finput,.fselect,textarea.finput{font-size:16px;}
  .wrap{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));}
  /* 主分頁兩顆鈕平均分配寬度，較好點按 */
  .tab-bar{width:100%;justify-content:stretch;}
  .tab{flex:1;min-width:0;text-align:center;padding:11px 12px;}
  .pub-panel{padding:14px 12px 18px;}
  .adm-panel{padding:16px 12px 22px;}
  .adm-panel .adm-tab{padding:8px 10px;font-size:10px;}
  .view-bar{flex-direction:column;align-items:stretch;}
  .nav-row{flex-wrap:wrap;justify-content:center;width:100%;}
  .nav-label{min-width:0;flex:1;text-align:center;font-size:13px;}
  .view-btns{width:100%;justify-content:stretch;}
  .view-btn{flex:1;padding:10px 8px;}
  .tab.active::after{left:6px;right:6px;}
  .logo{font-size:1.05rem;}
  .month-day{min-height:64px;padding:5px 5px;}
  .day-num{font-size:12px;}
  .month-pill{font-size:8px;}
  .scroll-hint{display:block;}
  .bar-label{width:56px;font-size:10px;}
  /* 後台寬表：維持橫向捲動，加提示 */
  .adm-panel .tbl-wrap::after{
    content:'← 左右滑動以檢視完整表格 →';
    display:block;
    font-size:10px;
    font-family:var(--font);
    color:var(--muted);
    text-align:center;
    padding:8px 4px 0;
    line-height:1.4;
  }
  /* 查詢結果小按鈕加大觸控面積 */
  .edit-btn,.cancel-booking-btn,.del-btn{min-height:var(--touch-min);padding:8px 12px;font-size:12px;}
  /* 預約／說明彈窗：避開瀏海與底部手勢區，關閉鈕與底部按鈕較好點 */
  .overlay{
    padding-top:max(22px,calc(env(safe-area-inset-top) + 14px));
    padding-bottom:max(36px,calc(env(safe-area-inset-bottom) + 28px));
  }
  .modal{
    max-height:min(92vh,calc(100dvh - 48px));
    scroll-padding-bottom:max(24px,env(safe-area-inset-bottom));
  }
  .modal-hd{
    padding-top:max(18px,calc(env(safe-area-inset-top) * 0.35 + 14px));
    padding-bottom:16px;
  }
  .modal-bd{padding-bottom:max(28px,calc(env(safe-area-inset-bottom) + 20px));}
  .submit-btn{
    min-height:max(48px,var(--touch-min));
    margin-top:12px;
    padding-top:16px;
    padding-bottom:16px;
  }
  .ics-after-book{
    padding:14px 12px max(18px,calc(env(safe-area-inset-bottom) + 8px));
    margin-bottom:6px;
  }
  .ics-after-book .tool-btn,.ics-after-book .export-btn{
    min-height:var(--touch-min);
    padding:12px 14px;
  }
}
@media (max-width:480px){
  .adm-tabs{flex-wrap:wrap;}
  .adm-tab{flex:1;min-width:calc(50% - 4px);text-align:center;padding:10px 8px;}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
  .toast{transition:none;}
}

/* ── UX 增強：行事曆提示、候補、儀表板、引導 ── */
.onboard-hint-bar{margin:0;padding:6px 0 0;text-align:center;font-size:11px;color:var(--muted);}
.linkish-btn{background:none;border:none;color:var(--accent);text-decoration:underline;cursor:pointer;font-family:inherit;font-size:inherit;padding:4px 8px;}
.linkish-btn:hover{color:var(--accent2);}
.onboard-steps ol{padding-left:1.1rem;line-height:1.75;margin-bottom:14px;font-size:14px;}
.onboard-skip-label{display:block;margin:12px 0;font-size:12px;color:var(--muted);cursor:pointer;}
.booking-draft-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
.ics-after-book{display:none;flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;padding:12px;background:rgba(0,0,0,.3);border:2px dashed color-mix(in srgb, var(--accent) 40%, transparent);border-radius:var(--radius-sm);font-size:13px;}
.slot-waitlist-block{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);}
.adm-pick-th,.adm-pick-cell{width:36px;text-align:center;vertical-align:middle;}
.adm-pick-th input{margin:0;}
.adm-pick-cell{position:static!important;box-shadow:none!important;background:transparent!important;}
.adm-dashboard{
  max-width:100%;
  overflow-x:hidden;
}
.dashboard-content{
  max-width:100%;
  overflow-x:hidden;
}
.dashboard-cards{margin-bottom:18px;}
.dashboard-two-col{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;
  margin-bottom:18px;
  align-items:start;
}
@media (max-width:900px){
  .dashboard-two-col{grid-template-columns:minmax(0,1fr);}
}
.dashboard-two-col > .stats-section{
  min-width:0;
}
.dashboard-content .tbl-wrap{
  max-width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
/* 儀表板內嵌表：勿沿用訂單大表 min-width:820px 與第一欄 sticky，否則雙欄會被撐破 */
.dashboard-content .adm-tbl.dashboard-mini-tbl{
  min-width:0;
  width:100%;
  max-width:100%;
  table-layout:fixed;
  font-size:12px;
}
.dashboard-content .adm-tbl.dashboard-mini-tbl th:first-child,
.dashboard-content .adm-tbl.dashboard-mini-tbl td:first-child{
  position:static;
  left:auto;
  z-index:auto;
  box-shadow:none;
}
.dashboard-content .adm-tbl.dashboard-mini-tbl thead th:first-child{
  z-index:auto;
}
.dashboard-content .adm-tbl.dashboard-mini-tbl td,
.dashboard-content .adm-tbl.dashboard-mini-tbl th{
  padding:8px 10px;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.dashboard-content .adm-tbl.dashboard-mini-tbl .empty{
  white-space:normal;
}
.stats-title--row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:12px;
  padding-bottom:8px;
  border-bottom:1px solid var(--border);
}
.stats-title--row .stats-title-text{
  flex:1;
  min-width:0;
  margin:0;
  padding:0;
  border:none;
  font-family:var(--font);
  font-size:13px;
  font-weight:700;
  letter-spacing:.04em;
  color:var(--accent2);
}
.dashboard-content .dashboard-cell-mono{font-family:var(--mono);font-size:11px;}
.dashboard-content .dashboard-cell-line{font-size:10px;line-height:1.4;}
.wl-done{opacity:.55;}

/* ── 會員專區 ───────────────────────────── */
.member-panel{padding:8px 0 32px;}
.member-zone-gate{padding:24px 0;text-align:center;}
.member-zone-msg{color:var(--muted);font-size:14px;line-height:1.6;max-width:420px;margin:0 auto;}
.member-zone-hd{margin-bottom:20px;}
.member-zone-title{font-family:var(--display);font-size:1.25rem;font-weight:800;letter-spacing:.06em;color:var(--accent2);margin:0 0 8px;}
.member-zone-sub{color:var(--muted);font-size:14px;margin:0;line-height:1.5;}
.member-points-card{
  background:linear-gradient(145deg, color-mix(in srgb, var(--accent) 12%, var(--surface)), var(--surface));
  border:1px solid color-mix(in srgb, var(--accent) 28%, var(--border));
  border-radius:var(--radius-lg);
  padding:20px 22px;
  margin-bottom:28px;
  box-shadow:var(--shadow-sm);
}
.member-points-label{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;}
.member-points-val{font-family:var(--display);font-size:2.25rem;font-weight:800;color:var(--accent);line-height:1.1;}
.member-points-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;margin-top:14px}
@media (max-width:520px){
  .member-points-kpis{grid-template-columns:1fr;gap:10px}
}
.member-kpi{background:color-mix(in srgb, var(--surface2) 70%, transparent);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 12px}
.member-kpi-l{display:block;font-size:11px;letter-spacing:.06em;color:var(--muted)}
.member-kpi-v{display:block;margin-top:4px;font-family:var(--display);font-size:1.15rem;font-weight:800;color:var(--text)}
.member-kpi-s{display:block;margin-top:4px;font-size:12px;color:var(--muted);line-height:1.35}
.member-points-note{font-size:13px;color:var(--muted);margin:12px 0 0;line-height:1.5;}
.member-bookings-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px 24px;
  align-items:start;
}
@media (max-width:800px){
  .member-bookings-grid{grid-template-columns:1fr;}
}
.member-book-title{
  font-family:var(--display);
  font-size:12px;
  font-weight:700;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--accent2);
  margin:0 0 12px;
  padding-bottom:8px;
  border-bottom:1px solid var(--border);
}
.member-book-disclosure{
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  overflow:hidden;
}
.member-book-disclosure > summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px 10px;
  padding:14px 16px;
  font-size:13px;
  color:var(--muted);
  user-select:none;
}
.member-book-disclosure > summary::-webkit-details-marker{display:none}
.member-book-summary-label{
  font-family:var(--display);
  font-size:12px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--accent2);
}
.member-book-summary-num{
  font-family:var(--display);
  font-size:1.85rem;
  font-weight:800;
  line-height:1;
  color:var(--accent);
}
.member-book-summary-unit{font-size:13px;color:var(--text);}
.member-book-summary-hint{font-size:12px;color:var(--muted);}
.member-book-detail-body{
  padding:0 14px 14px;
  border-top:1px solid var(--border);
  display:flex;
  flex-direction:column;
  gap:10px;
  padding-top:12px;
}
.member-book-list{display:flex;flex-direction:column;gap:10px;}
.member-empty{color:var(--muted);font-size:13px;padding:8px 0;}
.member-bk-card{
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:12px 14px;
  font-size:13px;
  line-height:1.5;
  color:var(--text);
}
.member-bk-meta{margin-top:8px;font-size:12px;color:var(--muted);font-family:var(--mono);}
.member-bk-tag{
  display:inline-block;
  margin-left:6px;
  font-size:10px;
  font-weight:700;
  letter-spacing:.04em;
  padding:2px 6px;
  border-radius:4px;
  background:rgba(248,113,113,.15);
  color:#fca5a5;
  vertical-align:middle;
}
.member-bk-tag.member-bk-cancelled{background:rgba(120,113,108,.25);color:var(--muted);}
.member-redeem-hint{
  margin-top:28px;
  padding:14px 16px;
  font-size:13px;
  color:var(--muted);
  line-height:1.55;
  border:1px dashed var(--border);
  border-radius:var(--radius-md);
  text-align:center;
}
