/* ==========================================================================
   シフト表 — 共通スタイル
   配色はすべてCSS変数。:root がダーク、[data-theme="light"] がライト。
   テーマの切り替えは <html data-theme="..."> を書き換えるだけ。
   ========================================================================== */

:root{
  --bg:#0d0f13;
  --bg-grad:radial-gradient(1200px 600px at 20% -10%, #17202b 0%, transparent 60%);
  --card:#171b22; --card-2:#1d222b; --card-hi:rgba(255,255,255,.045); --zebra:rgba(255,255,255,.022);
  --border:#262c37; --border-2:#333b49;
  --text:#e8ecf2; --dim:#9aa4b2; --faint:#6b7684;
  --accent:#2dbf8e; --accent-ink:#04231a; --accent-soft:rgba(45,191,142,.14);
  --warn:#e0983a; --warn-ink:#1c1400; --warn-soft:rgba(224,152,58,.13);
  --pending:#5aa9f0; --pending-soft:rgba(90,169,240,.14);
  --danger:#e9635f; --danger-soft:rgba(233,99,95,.14);
  --sat:#7aa8e0; --sun:#e07a7a;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px rgba(0,0,0,.28);
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --tile-hi:rgba(255,255,255,.2);

  --unset-bg:#232833; --unset-fg:#7b8593;
  --today:rgba(45,191,142,.10);
}

[data-theme="light"]{
  --bg:#eef1f5;
  --bg-grad:radial-gradient(1200px 600px at 20% -10%, #ffffff 0%, transparent 65%);
  --card:#ffffff; --card-2:#f6f8fb; --card-hi:rgba(0,0,0,.02); --zebra:rgba(16,24,40,.018);
  --border:#e3e8ef; --border-2:#cdd5e0;
  --text:#141b24; --dim:#5b6672; --faint:#8a95a3;
  --accent:#0f9d70; --accent-ink:#ffffff; --accent-soft:rgba(15,157,112,.12);
  --warn:#c47d1c; --warn-ink:#ffffff; --warn-soft:rgba(196,125,28,.12);
  --pending:#1f6fd0; --pending-soft:rgba(31,111,208,.11);
  --danger:#d64541; --danger-soft:rgba(214,69,65,.11);
  --sat:#2f6ba8; --sun:#b5453f;
  --shadow:0 1px 2px rgba(16,24,40,.06), 0 10px 28px rgba(16,24,40,.08);
  --shadow-sm:0 1px 2px rgba(16,24,40,.07);
  --tile-hi:rgba(255,255,255,.38);

  --work-bg:#b9a9e4;  --work-fg:#2b1d55;
  --off-bg:#f7c4da;   --off-fg:#6b1638;
  --paid-bg:#f7b96b;  --paid-fg:#5a2c00;
  --office-bg:#b3ddb6;--office-fg:#14401a;
  --honpai-bg:#f8e78c;--honpai-fg:#453700;
  --unset-bg:#e9edf3; --unset-fg:#78828f;
  --today:rgba(15,157,112,.10);
}

/* ========================= 基本 ========================= */
*{box-sizing:border-box}
/* hidden属性を常に優先する。
   これが無いと .modal-overlay{display:flex} などのクラス指定に負けて、
   hidden を付けた要素（モーダル等）が表示されたままになる。 */
[hidden]{display:none !important}
body{
  margin:0; background:var(--bg); background-image:var(--bg-grad); color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  font-feature-settings:"tnum" 1; -webkit-font-smoothing:antialiased;
  transition:background-color .25s, color .25s;
}
button,select,input,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
a{color:var(--accent)}
.wrap{max-width:1180px;margin:0 auto;padding:0 18px 64px}
.spacer{flex:1}
.card{
  background:var(--card); border:1px solid var(--border); border-radius:16px;
  box-shadow:var(--shadow); position:relative; overflow:hidden;
}
.card::before{content:"";position:absolute;inset:0 0 auto;height:1px;background:var(--card-hi)}
h1{font-size:calc(20px * var(--fs));font-weight:800;letter-spacing:.01em;margin:22px 0 16px}
h2{font-size:calc(15px * var(--fs));font-weight:800;margin:0 0 3px}
h3{font-size:calc(14px * var(--fs));font-weight:800;margin:0 0 3px}
.sub{margin:0 0 14px;font-size:calc(11.5px * var(--fs));color:var(--faint);line-height:1.65}
.empty-msg{color:var(--faint);font-size:calc(13px * var(--fs));font-weight:600}
.emptybox{padding:34px 20px;text-align:center;color:var(--faint);font-size:calc(13px * var(--fs));font-weight:600;line-height:1.9}

/* ========================= ボタン・入力 ========================= */
.ghost-btn{
  padding:8px 13px;border-radius:10px;background:var(--card);border:1px solid var(--border);
  color:var(--dim);font-size:calc(12.5px * var(--fs));font-weight:600;transition:.15s;box-shadow:var(--shadow-sm);
}
.ghost-btn:hover{color:var(--text);border-color:var(--border-2)}
.ghost-btn.sm{padding:6px 11px;font-size:calc(11.5px * var(--fs));border-radius:9px}
.primary-btn{
  padding:9px 16px;border-radius:11px;background:var(--accent);color:var(--accent-ink);
  font-size:calc(13px * var(--fs));font-weight:800;box-shadow:var(--shadow-sm);transition:.15s;
}
.primary-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.danger-btn{
  padding:7px 12px;border-radius:9px;background:var(--danger-soft);color:var(--danger);
  border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);font-size:calc(11.5px * var(--fs));font-weight:700;transition:.15s;
}
.danger-btn:hover{filter:brightness(1.1)}
.icon-btn{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--card);
  border:1px solid var(--border);color:var(--dim);transition:.15s;box-shadow:var(--shadow-sm);
}
.icon-btn:hover{color:var(--text);border-color:var(--border-2);transform:translateY(-1px)}
.icon-btn svg{width:16px;height:16px}
.select,.input{
  padding:9px 12px;border-radius:11px;background:var(--card);border:1px solid var(--border);
  font-size:calc(13px * var(--fs));font-weight:600;box-shadow:var(--shadow-sm);outline:none;transition:.15s;
}
.input{background:var(--card-2);font-weight:500}
.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.input::placeholder{color:var(--faint)}
.link-btn{font-size:calc(11.5px * var(--fs));font-weight:700;color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.row{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:13px}
.row:last-child{margin-bottom:0}

/* ========================= アプリバー ========================= */
.appbar{
  position:sticky;top:0;z-index:40;
  background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--border);
}
.appbar-in{max-width:1180px;margin:0 auto;padding:11px 18px;display:flex;align-items:center;gap:12px}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;font-size:calc(16px * var(--fs));letter-spacing:.02em;
  color:var(--text);text-decoration:none}
.brand .mark{
  width:28px;height:28px;border-radius:9px;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#1b6ea8));
  color:var(--accent-ink);box-shadow:var(--shadow-sm);flex:none;
}
.brand .mark svg{width:16px;height:16px}
.user-chip{
  display:flex;align-items:center;gap:8px;padding:4px 12px 4px 4px;border-radius:999px;
  background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-sm);
}
.avatar{
  width:26px;height:26px;border-radius:999px;display:grid;place-items:center;font-size:calc(12px * var(--fs));font-weight:800;flex:none;
  background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 50%,#1b6ea8));color:var(--accent-ink);
}
.user-chip .nm{font-size:calc(13px * var(--fs));font-weight:700;line-height:1.15;display:block}
.user-chip .rl{font-size:calc(10px * var(--fs));color:var(--faint);letter-spacing:.04em}
.admin-link-btn{
  display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:11px;
  background:var(--card);border:1px solid var(--border);color:var(--text);text-decoration:none;
  font-size:calc(12.5px * var(--fs));font-weight:700;box-shadow:var(--shadow-sm);transition:.15s;
}
.admin-link-btn:hover{border-color:var(--border-2);transform:translateY(-1px)}
.pending-badge{
  background:var(--danger);color:#fff;border-radius:999px;padding:2px 8px;font-size:calc(11px * var(--fs));font-weight:900;
}

/* ========================= ツールバー ========================= */
.toolbar{
  position:sticky;top:57px;z-index:35;margin:0 -18px 12px;padding:12px 18px;
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--border);
}
.monthnav{display:flex;align-items:center;gap:6px}
.month-pill{
  display:flex;align-items:baseline;gap:8px;padding:9px 15px;border-radius:12px;background:var(--card);
  border:1px solid var(--border);box-shadow:var(--shadow-sm);font-weight:800;font-size:calc(15px * var(--fs));transition:.15s;
}
.month-pill:hover{border-color:var(--border-2)}
.month-pill small{font-weight:600;font-size:calc(11.5px * var(--fs));color:var(--faint)}
.month-pill .caret{color:var(--faint);font-size:calc(10px * var(--fs))}
.seg-wrap{display:flex;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:3px;
  box-shadow:var(--shadow-sm)}
.seg{padding:7px 17px;border-radius:9px;font-size:calc(13px * var(--fs));font-weight:700;color:var(--dim);transition:.18s}
.seg.active{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}
.jump-pop{
  display:none;gap:8px;align-items:center;padding:12px 14px;margin:-2px 0 12px;background:var(--card);
  border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);flex-wrap:wrap;
}
.jump-pop.open{display:flex}
.jump-pop .lbl{font-size:calc(12px * var(--fs));color:var(--faint);font-weight:600}

/* ========================= メンバー絞り込み ========================= */
.filterbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:12px}
.filter-toggle{
  display:flex;align-items:center;gap:8px;padding:8px 13px;border-radius:11px;background:var(--card);
  border:1px solid var(--border);box-shadow:var(--shadow-sm);font-size:calc(12.5px * var(--fs));font-weight:700;
  color:var(--dim);transition:.15s;
}
.filter-toggle:hover{border-color:var(--border-2);color:var(--text)}
.filter-toggle svg{width:15px;height:15px}
.filter-toggle .cnt{
  font-size:calc(11px * var(--fs));font-weight:900;padding:2px 9px;border-radius:999px;background:var(--card-2);color:var(--faint);
}
.filter-toggle.on{border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--text);background:var(--accent-soft)}
.filter-toggle.on .cnt{background:var(--accent);color:var(--accent-ink)}
.filter-toggle .chev{transition:.2s;font-size:calc(9px * var(--fs));color:var(--faint)}
.filter-toggle.open .chev{transform:rotate(180deg)}
.active-names{display:flex;gap:5px;flex-wrap:wrap;align-items:center;font-size:calc(11.5px * var(--fs));color:var(--faint);font-weight:600}
.active-names b{color:var(--text);font-weight:800}
.filter-panel{display:none;padding:14px 16px;margin-bottom:14px}
.filter-panel.open{display:block}
.fp-top{display:flex;gap:8px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.search{flex:1;min-width:170px;position:relative;display:flex;align-items:center}
.search svg{position:absolute;left:11px;width:15px;height:15px;color:var(--faint);pointer-events:none}
.search input{
  width:100%;padding:9px 12px 9px 33px;border-radius:11px;background:var(--card-2);border:1px solid var(--border);
  font-size:calc(13px * var(--fs));font-weight:600;outline:none;transition:.15s;
}
.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.search input::placeholder{color:var(--faint);font-weight:500}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{
  display:inline-flex;align-items:center;gap:6px;padding:7px 14px 7px 10px;border-radius:999px;
  background:var(--card-2);border:1px solid var(--border);font-size:calc(12.5px * var(--fs));font-weight:700;color:var(--dim);transition:.15s;
}
.chip:hover{border-color:var(--border-2);color:var(--text)}
.chip .ck{width:15px;height:15px;border-radius:5px;border:1.5px solid var(--border-2);display:grid;
  place-items:center;flex:none;transition:.15s}
.chip .ck svg{width:10px;height:10px;opacity:0;transition:.15s}
.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.chip.on .ck{background:var(--accent-ink);border-color:var(--accent-ink)}
.chip.on .ck svg{opacity:1;color:var(--accent)}
.chip.hide{display:none}
.fp-empty{font-size:calc(12px * var(--fs));color:var(--faint);padding:6px 2px;font-weight:600}

/* ========================= 凡例 ========================= */
.legend{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.lg{
  display:inline-flex;align-items:center;gap:6px;padding:4px 11px 4px 5px;border-radius:999px;
  background:var(--card);border:1px solid var(--border);font-size:calc(11.5px * var(--fs));font-weight:700;color:var(--dim);
}
.lg i{width:14px;height:14px;border-radius:5px;display:block}
.lg.pend i{background:transparent;border:2px dashed var(--pending)}

/* ========================= ステータス色 ========================= */
/* 各ステータスの色は管理者ページで設定し、common.js の applyStatuses() が
   <style id="statusStyles"> に書き出す。ここにあるのは固定の「未設定」だけ。 */
.s-unset{background:var(--unset-bg);color:var(--unset-fg)}
option[value="unset"]{background-color:var(--unset-bg);color:var(--unset-fg)}

/* ========================= ステータス設定（管理者ページ） ========================= */
.st-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.st-row{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border-radius:12px;
  background:var(--card-2);border:1px solid var(--border);
}
.st-move{display:flex;flex-direction:column;gap:2px;flex:none}
.st-move button{
  width:26px;height:16px;border-radius:5px;font-size:9px;line-height:1;color:var(--dim);
  background:var(--card);border:1px solid var(--border);
}
.st-move button:hover:not(:disabled){color:var(--text);border-color:var(--border-2)}
.st-move button:disabled{opacity:.3;cursor:default}
.st-color{
  width:42px;height:36px;padding:3px;border-radius:10px;border:1px solid var(--border);
  background:var(--card);cursor:pointer;flex:none;
}
.st-label{width:9.5em}
.st-short{width:4.4em;text-align:center}
.st-check{
  display:inline-flex;align-items:center;gap:5px;font-size:calc(12px * var(--fs));font-weight:700;
  color:var(--dim);cursor:pointer;white-space:nowrap;
}
.st-add{margin-bottom:0}
.pw-lbl{min-width:6em;font-size:calc(12.5px * var(--fs));font-weight:800;color:var(--dim)}

/* 右上の名前（メンバーは押すと自分の名前を選び直せる） */
button.user-chip{cursor:pointer;text-align:left;transition:.15s}
button.user-chip:hover{border-color:var(--border-2)}
button.user-chip.static{cursor:default}
button.user-chip.static:hover{border-color:var(--border)}

/* ========================= 全員ビュー（表） ========================= */
.table-card{padding:0}
.scroller{overflow:auto;max-height:min(64vh,600px);border-radius:16px}
table{border-collapse:separate;border-spacing:0;width:100%}
th,td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:0;text-align:center}
thead th{
  position:sticky;top:0;z-index:3;background:var(--card-2);font-size:calc(11px * var(--fs));font-weight:700;color:var(--dim);
  padding:7px 4px;min-width:calc(50px * var(--fs));line-height:1.35;white-space:nowrap;
}
thead th .d{display:block;font-size:calc(13px * var(--fs));font-weight:800;color:var(--text)}
thead th.sat .d{color:var(--sat)}
thead th.sun .d{color:var(--sun)}
thead th.today{background:var(--accent-soft)}
thead th.today .d{color:var(--accent)}
th.corner,td.who{
  position:sticky;left:0;z-index:4;background:var(--card-2);text-align:left;padding:8px 14px;
  min-width:calc(118px * var(--fs));font-weight:800;font-size:calc(13px * var(--fs));white-space:nowrap;
}
th.corner{z-index:5;color:var(--dim);font-size:calc(11px * var(--fs));font-weight:700}
tbody tr:hover td{background:var(--card-hi)}
tbody tr:hover td.who{background:var(--card-2)}
td.day{padding:3px;position:relative;min-width:calc(50px * var(--fs))}
td.day.todaycol{background:var(--today)}
td.pend .cellsel,td.pend .status-badge{outline:2px dashed var(--pending);outline-offset:-2px}
td.pend::after{content:"";position:absolute;top:4px;right:4px;width:5px;height:5px;border-radius:999px;background:var(--pending)}
.cellsel,.status-badge{
  width:100%;display:block;border:none;border-radius:7px;padding:5px 1px;font-size:calc(12px * var(--fs));font-weight:800;
  text-align:center;text-align-last:center;-webkit-appearance:none;appearance:none;transition:.12s;
}
.cellsel{cursor:pointer}
.cellsel:hover{filter:brightness(1.07)}
.today-pill{font-size:calc(9px * var(--fs));font-weight:900;padding:1px 6px;border-radius:999px;
  background:var(--accent);color:var(--accent-ink);margin-left:4px}
.scrollhint{display:none;font-size:calc(11.5px * var(--fs));color:var(--faint);margin:0 0 8px;text-align:center}

/* ========================= 個人ビュー ========================= */
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:9px;margin-bottom:14px}
.stat{
  border-radius:14px;padding:11px 13px;box-shadow:var(--shadow-sm);border:1px solid transparent;
  position:relative;overflow:hidden;
}
.stat::after{content:"";position:absolute;inset:0 0 auto;height:1px;background:var(--tile-hi)}
.stat .k{font-size:calc(11px * var(--fs));font-weight:800;opacity:.72;letter-spacing:.06em}
.stat .v{font-size:calc(26px * var(--fs));font-weight:900;line-height:1.15;margin-top:1px}
.stat .v small{font-size:calc(12px * var(--fs));font-weight:700;opacity:.6;margin-left:2px}
.stat.pendstat{background:var(--pending-soft);color:var(--pending);
  border-color:color-mix(in srgb,var(--pending) 40%,transparent)}
.stat.pendstat::after{display:none}

.calcard{padding:14px}
.wkhead{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-bottom:7px}
.wkhead div{text-align:center;font-size:calc(11.5px * var(--fs));font-weight:800;color:var(--faint);padding:2px 0}
.wkhead .sat{color:var(--sat)}
.wkhead .sun{color:var(--sun)}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}
.cal{
  border-radius:12px;min-height:86px;padding:7px;display:flex;flex-direction:column;gap:5px;
  border:1px solid var(--border);background:var(--card-2);transition:.15s;
}
.cal.blank{background:transparent;border-color:transparent}
.cal .dn{font-size:calc(12px * var(--fs));font-weight:800;text-align:right;opacity:.85}
.cal.today{box-shadow:0 0 0 2px var(--accent) inset}
.cal .dn .badge-today{float:left;font-size:calc(9px * var(--fs));font-weight:900;padding:1px 6px;border-radius:999px;
  background:var(--accent);color:var(--accent-ink)}
.cal .dn.holi{color:var(--sun)}
.cal .csel{
  flex:1;width:100%;border:none;border-radius:9px;font-size:calc(13px * var(--fs));font-weight:800;
  text-align:center;text-align-last:center;-webkit-appearance:none;appearance:none;cursor:pointer;
}
.cal.pending{border-color:var(--pending);border-style:dashed;border-width:2px}
.ptag{font-size:calc(9.5px * var(--fs));font-weight:800;color:var(--pending);text-align:center}

/* ========================= 集計カード ========================= */
.c-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:11px}
.c-card{
  border-radius:14px;border:1px solid var(--border);background:var(--card-2);padding:12px 13px 13px;transition:.15s;
}
.c-card:hover{border-color:var(--border-2)}
.c-card.warn{border-color:color-mix(in srgb,var(--warn) 45%,transparent);background:var(--warn-soft)}
.c-hd{display:flex;align-items:baseline;gap:7px;margin-bottom:10px}
.c-hd .nm{font-size:calc(13.5px * var(--fs));font-weight:800;display:flex;align-items:center;gap:6px}
.c-hd .tot{font-size:calc(10.5px * var(--fs));color:var(--faint);font-weight:700}
.warndot{width:6px;height:6px;border-radius:999px;background:var(--warn);flex:none;display:inline-block}
.c-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.c-t{border-radius:10px;padding:6px 4px 7px;text-align:center;position:relative;overflow:hidden;box-shadow:var(--shadow-sm)}
.c-t::after{content:"";position:absolute;inset:0 0 auto;height:1px;background:var(--tile-hi)}
.c-t .k{font-size:calc(9.5px * var(--fs));font-weight:800;opacity:.7;letter-spacing:.05em}
.c-t .v{font-size:calc(20px * var(--fs));font-weight:900;line-height:1.15}
.c-t.zero{opacity:.42}

/* ========================= 管理者ツール（シフト表ページ内） ========================= */
.tools{margin-top:22px}
.tools>summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:9px;padding:12px 16px;border-radius:14px;
  background:var(--card);border:1px solid var(--border);font-size:calc(13.5px * var(--fs));font-weight:800;
  box-shadow:var(--shadow-sm);transition:.15s;
}
.tools>summary::-webkit-details-marker{display:none}
.tools>summary:hover{border-color:var(--border-2)}
.tools>summary .chev{transition:.2s;color:var(--faint);display:grid;place-items:center}
.tools[open]>summary .chev{transform:rotate(90deg)}
.tools>summary .tag{margin-left:auto;font-size:calc(10.5px * var(--fs));font-weight:800;padding:3px 9px;border-radius:999px;
  background:var(--accent-soft);color:var(--accent)}
.panels{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.panel{padding:17px 19px}
.season{display:flex;background:var(--card-2);border:1px solid var(--border);border-radius:11px;padding:3px}
.season button{padding:6px 14px;border-radius:8px;font-size:calc(12px * var(--fs));font-weight:700;color:var(--dim);transition:.15s}
.season button.on{background:var(--warn);color:var(--warn-ink);box-shadow:var(--shadow-sm)}
.wk{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin-bottom:14px}
.wk .cell{background:var(--card-2);border:1px solid var(--border);border-radius:11px;padding:7px 5px;text-align:center}
.wk .cell .lb{font-size:calc(11.5px * var(--fs));font-weight:800;margin-bottom:5px;color:var(--dim)}
.wk .cell .lb.sat{color:var(--sat)}
.wk .cell .lb.sun{color:var(--sun)}
.wk select,.pattern-select{
  width:100%;border:none;border-radius:8px;padding:6px 1px;font-size:calc(11.5px * var(--fs));font-weight:800;
  text-align:center;text-align-last:center;-webkit-appearance:none;appearance:none;cursor:pointer;
}

/* ========================= 管理者専用ページ ========================= */
.section{margin-bottom:26px}
.section-hd{display:flex;align-items:center;gap:10px;margin-bottom:11px;flex-wrap:wrap}
.section-hd h2{margin:0}
.section-hd .count{
  font-size:calc(11px * var(--fs));font-weight:900;padding:3px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);
}
.section-hd .count.alert{background:var(--danger-soft);color:var(--danger)}

.pending-row{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;
  background:var(--pending-soft);border:1px solid color-mix(in srgb,var(--pending) 38%,transparent);
  border-radius:13px;padding:12px 15px;margin-bottom:9px;font-size:calc(13px * var(--fs));
}
.pending-info{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-weight:600}
.pending-info strong{font-weight:800}
.status-tag{padding:3px 10px;border-radius:999px;font-size:calc(11.5px * var(--fs));font-weight:800}
.pending-actions{display:flex;gap:7px}
.approve-btn{padding:7px 15px;border-radius:9px;background:var(--accent);color:var(--accent-ink);
  font-size:calc(12px * var(--fs));font-weight:800;box-shadow:var(--shadow-sm);transition:.15s}
.approve-btn:hover{filter:brightness(1.08)}
.reject-btn{padding:7px 15px;border-radius:9px;background:var(--card);border:1px solid var(--border);
  color:var(--dim);font-size:calc(12px * var(--fs));font-weight:700;transition:.15s}
.reject-btn:hover{color:var(--text);border-color:var(--border-2)}
.request-comment{
  flex-basis:100%;font-size:calc(11.5px * var(--fs));color:var(--dim);background:var(--card);padding:7px 11px;
  border-radius:9px;border:1px solid var(--border);font-weight:500;line-height:1.6;
}

/* 一覧テーブル（メンバー管理・アカウント管理） */
.list-table{width:100%;border-collapse:separate;border-spacing:0}
.list-table th{
  background:transparent;border:none;border-bottom:1px solid var(--border);text-align:left;
  padding:0 12px 8px;font-size:calc(11px * var(--fs));font-weight:800;color:var(--faint);letter-spacing:.06em;position:static;min-width:0;
}
.list-table td{
  border:none;border-bottom:1px solid var(--border);padding:11px 12px;font-size:calc(13px * var(--fs));text-align:left;min-width:0;
}
.list-table tbody tr:last-child td{border-bottom:none}
.list-table tbody tr:hover td{background:var(--card-hi)}
.list-table td.nm{font-weight:800}
.list-table td.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;letter-spacing:.04em}
.member-status{padding:3px 11px;border-radius:999px;font-size:calc(11.5px * var(--fs));font-weight:800;display:inline-block}
.member-status.active{background:var(--accent-soft);color:var(--accent)}
.member-status.archived{background:var(--card-2);color:var(--faint);border:1px solid var(--border)}
.role-tag{padding:3px 11px;border-radius:999px;font-size:calc(11.5px * var(--fs));font-weight:800;display:inline-block;
  background:var(--card-2);color:var(--dim);border:1px solid var(--border)}
.role-tag.admin{background:var(--accent-soft);color:var(--accent);border-color:transparent}
.actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.new-user-result{font-size:calc(12.5px * var(--fs));margin:12px 0 0;min-height:17px;font-weight:700}
.new-user-result.error{color:var(--danger)}
.new-user-result.success{color:var(--accent)}

/* ========================= モーダル ========================= */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;z-index:100;padding:16px;
}
.modal-box{
  background:var(--card);border:1px solid var(--border);border-radius:18px;padding:24px;
  width:390px;max-width:100%;box-shadow:0 24px 60px rgba(0,0,0,.45);
}
.office-call-banner{
  background:var(--warn-soft);border:2px solid var(--warn);border-radius:14px;
  padding:16px;text-align:center;margin-bottom:16px;
}
.office-call-title{font-size:calc(16px * var(--fs));font-weight:800;color:var(--warn);margin-bottom:10px}
.office-call-bubble{
  display:inline-block;background:var(--warn);color:var(--warn-ink);font-weight:900;
  font-size:calc(22px * var(--fs));padding:10px 24px;border-radius:999px;text-decoration:none;letter-spacing:.02em;
}
.modal-label{display:block;font-size:calc(12.5px * var(--fs));color:var(--dim);margin-bottom:7px;font-weight:700}
.modal-textarea{
  width:100%;min-height:76px;padding:11px;background:var(--card-2);color:var(--text);
  border:1px solid var(--border);border-radius:11px;font-family:inherit;resize:vertical;outline:none;font-size:calc(13px * var(--fs));
}
.modal-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.modal-actions{display:flex;gap:10px;margin-top:15px}
.modal-cancel-btn,.modal-confirm-btn{flex:1;padding:12px;border-radius:11px;font-size:calc(13.5px * var(--fs));font-weight:800}
.modal-cancel-btn{background:var(--card-2);border:1px solid var(--border);color:var(--dim)}
.modal-cancel-btn:hover{color:var(--text)}
.modal-confirm-btn{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}
.modal-confirm-btn:hover{filter:brightness(1.08)}
.deadline-msg{font-size:calc(13.5px * var(--fs));color:var(--text);text-align:center;margin:0 0 15px;line-height:1.75;font-weight:600}

/* ========================= ログイン ========================= */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.login-card{width:360px;max-width:100%;padding:30px 28px 26px}
.login-brand{display:flex;flex-direction:column;align-items:center;gap:11px;margin-bottom:22px}
.login-brand .mark{
  width:46px;height:46px;border-radius:15px;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--accent),color-mix(in srgb,var(--accent) 55%,#1b6ea8));
  color:var(--accent-ink);box-shadow:var(--shadow);
}
.login-brand .mark svg{width:24px;height:24px}
.login-title{font-size:calc(19px * var(--fs));font-weight:800;margin:0;letter-spacing:.02em}
.login-tabs{display:flex;background:var(--card-2);border:1px solid var(--border);border-radius:12px;
  padding:3px;margin-bottom:15px}
.login-tab{flex:1;padding:9px;border-radius:9px;font-size:calc(13px * var(--fs));font-weight:700;color:var(--dim);transition:.18s}
.login-tab.active{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}
.login-note{
  font-size:calc(11.5px * var(--fs));color:var(--dim);background:var(--card-2);border:1px solid var(--border);
  padding:11px 13px;border-radius:11px;margin:0 0 14px;line-height:1.75;
}
.login-input{
  width:100%;padding:12px 14px;margin-bottom:9px;font-size:calc(14px * var(--fs));background:var(--card-2);
  color:var(--text);border:1px solid var(--border);border-radius:11px;outline:none;transition:.15s;
}
.login-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.login-input::placeholder{color:var(--faint)}
.login-submit{
  width:100%;padding:13px;margin-top:6px;font-size:calc(14.5px * var(--fs));font-weight:800;
  background:var(--accent);color:var(--accent-ink);border-radius:11px;box-shadow:var(--shadow-sm);transition:.15s;
}
.login-submit:hover{filter:brightness(1.08);transform:translateY(-1px)}
.login-error{color:var(--danger);font-size:calc(12.5px * var(--fs));text-align:center;margin:12px 0 0;min-height:17px;font-weight:700}
.login-theme{position:fixed;top:16px;right:16px}

/* ========================= モバイル ========================= */
@media (max-width:860px){
  .panels{grid-template-columns:1fr}
}
@media (max-width:600px){
  .wrap{padding:0 12px 56px}
  h1{font-size:calc(17px * var(--fs));margin:18px 0 14px}
  .appbar-in{padding:9px 12px;gap:8px}
  .brand span.t{display:none}
  .user-chip{padding:3px 10px 3px 3px}
  .user-chip .nm{font-size:calc(12px * var(--fs))}
  .toolbar{top:51px;margin:0 -12px 12px;padding:10px 12px;gap:9px}
  .monthnav{width:100%}
  .month-pill{flex:1;justify-content:center}
  .toolbar-right{display:flex;gap:9px;width:100%}
  .seg-wrap{flex:1}
  .seg{flex:1;text-align:center;padding:8px 0}
  .select{flex:1}
  .filter-toggle{flex:1;justify-content:center}
  .scrollhint{display:block}
  .statgrid{grid-template-columns:repeat(3,1fr);gap:7px}
  .stat{padding:9px 10px;border-radius:12px}
  .stat .v{font-size:calc(21px * var(--fs))}
  .calgrid,.wkhead{gap:5px}
  .cal{min-height:76px;padding:6px;border-radius:10px}
  .calcard{padding:10px}
  .c-grid{grid-template-columns:1fr}
  .panel{padding:14px 15px}
  .pending-row{flex-direction:column;align-items:stretch}
  .pending-actions{justify-content:flex-end}
  /* 一覧テーブルはカード状に積む */
  .list-table,.list-table tbody,.list-table tr,.list-table td{display:block;width:100%}
  .list-table thead{display:none}
  .list-table tr{
    border:1px solid var(--border);border-radius:13px;margin-bottom:9px;padding:6px 4px;background:var(--card-2);
  }
  .list-table td{border-bottom:none;padding:6px 11px;display:flex;align-items:center;gap:9px}
  .list-table td::before{
    content:attr(data-lb);font-size:calc(10.5px * var(--fs));font-weight:800;color:var(--faint);letter-spacing:.05em;
    min-width:52px;flex:none;
  }
  .list-table tbody tr:hover td{background:transparent}
  .actions{justify-content:flex-start}
}

/* ==========================================================================
   文字サイズ（--fs 倍率）
   すべての font-size は calc(Npx * var(--fs)) で定義してある。
   <html data-size="lg"> のように切り替えるだけで全体が拡大縮小する。
   ※ この定義はモバイル用メディアクエリより後ろに置くこと（後勝ちのため）
   ========================================================================== */
:root{--fs:1.1}                    /* 標準（従来より1割大きい） */
[data-size="lg"]{--fs:1.26}        /* 大きめ */
[data-size="xl"]{--fs:1.44}        /* 最大 */
@media (max-width:600px){
  :root{--fs:1}
  [data-size="lg"]{--fs:1.14}
  [data-size="xl"]{--fs:1.3}
}

/* 文字サイズ切替ボタン（クリックで 標準→大きめ→最大→標準） */
.size-btn{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--card);
  border:1px solid var(--border);color:var(--dim);transition:.15s;box-shadow:var(--shadow-sm);
  font-weight:900;line-height:1;position:relative;flex:none;
}
.size-btn:hover{color:var(--text);border-color:var(--border-2);transform:translateY(-1px)}
.size-btn .a{font-size:13px}
[data-size="lg"] .size-btn .a{font-size:16px}
[data-size="xl"] .size-btn .a{font-size:19px}
[data-size="lg"] .size-btn,[data-size="xl"] .size-btn{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,transparent)}

/* ==========================================================================
   プルダウンの選択肢の色は common.js の applyStatuses() が書き出す
   （Windows/Linux の Chrome・Firefox・Edge で反映される。macOS/iOS はOS側の
     制限で反映されないため、閉じている状態の色だけが手がかりになる）
   ========================================================================== */
select.cellsel,select.csel,select.pattern-select{font-weight:800}

/* ==========================================================================
   メンバーの並び替え（全員ビューの名前セルをドラッグ）
   ========================================================================== */
td.who{position:sticky;left:0}
td.who .who-in{display:flex;align-items:center;gap:7px}
td.who .grip{
  flex:none;width:13px;height:15px;color:var(--faint);opacity:.42;cursor:grab;transition:.15s;
}
td.who:hover .grip{opacity:1;color:var(--accent)}
td.who .grip:active{cursor:grabbing}
td.who .grip svg{width:13px;height:15px;display:block}
tr.dragging td{opacity:.4}
tr.drop-above td{box-shadow:inset 0 3px 0 0 var(--accent)}
tr.drop-below td{box-shadow:inset 0 -3px 0 0 var(--accent)}
.order-note{
  display:inline-flex;align-items:center;gap:7px;font-size:calc(11.5px * var(--fs));
  color:var(--faint);font-weight:600;
}
@media (max-width:600px){
  td.who .grip{display:none}   /* スマホは表が転置されるため並び替えは無効 */
}

/* 一括クリアの取り消しボタン */
.undo-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;padding:10px 13px;
  border-radius:12px;background:var(--warn-soft);
  border:1px solid color-mix(in srgb,var(--warn) 38%,transparent);
  font-size:calc(12px * var(--fs));font-weight:700;color:var(--warn);
}

/* スマホでは表が転置されて行の並び替えができないため、案内も隠す */
@media (max-width:600px){ #orderHint{display:none} }
