:root { --bg:#0f172a; --card:#1e293b; --accent:#38bdf8; --text:#e2e8f0; --muted:#94a3b8; --danger:#f87171;
  --rmk:#34d399; --cp:#38bdf8; }
* { box-sizing:border-box; margin:0; padding:0; }
body { font-family:-apple-system,system-ui,"PingFang SC",sans-serif; background:var(--bg); color:var(--text);
  -webkit-font-smoothing:antialiased; padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom); }
#app { max-width:520px; margin:0 auto; padding:16px; }
h1 { font-size:20px; margin-bottom:12px; }
.row { display:flex; align-items:center; justify-content:space-between; gap:8px; }
button { font-size:16px; padding:10px 14px; border:none; border-radius:10px; background:var(--accent);
  color:#04263a; font-weight:600; cursor:pointer; }
button.ghost { background:transparent; color:var(--accent); border:1px solid var(--accent); }
button.danger { background:transparent; color:var(--danger); border:1px solid var(--danger); }
input, textarea, select { width:100%; font-size:16px; padding:12px; border-radius:10px; border:1px solid #334155;
  background:#0b1220; color:var(--text); margin-top:6px; }
label { display:block; margin-top:12px; font-size:14px; color:var(--muted); }
.card { background:var(--card); border-radius:14px; padding:14px; margin-top:10px; }
.field-group { display:flex; gap:8px; margin-top:6px; }
.chip { flex:1; text-align:center; padding:10px; border-radius:10px; border:1px solid #334155;
  background:#0b1220; color:var(--text); cursor:pointer; user-select:none; }
.chip.on { background:var(--accent); color:#04263a; border-color:var(--accent); font-weight:600; }
.cal-head { display:grid; grid-template-columns:repeat(7,1fr); text-align:center; color:var(--muted); font-size:12px; margin:8px 0; }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.cal-cell { aspect-ratio:1; border-radius:10px; background:var(--card); display:flex;
  align-items:center; justify-content:center; cursor:pointer; position:relative; overflow:hidden; }
.cal-cell.empty { background:transparent; cursor:default; }
.cal-cell .n { position:relative; z-index:1; font-size:15px; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.55); }
.cal-cell.today { outline:2px solid #fff; outline-offset:-2px; }
.fill { position:absolute; left:0; right:0; height:50%; }
.fill.top { top:0; }
.fill.bottom { bottom:0; }
.fill.on.rmk { background:var(--rmk); }
.fill.on.cp { background:var(--cp); }
.fill.on.neutral { background:var(--muted); }
.fill.on.both { background:linear-gradient(90deg, var(--rmk) 0 50%, var(--cp) 50% 100%); }
.fill.on.sb::after { content:''; position:absolute; inset:0;
  background:repeating-linear-gradient(45deg, rgba(255,255,255,.5) 0 2px, transparent 2px 6px); }
.legend { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:12px; font-size:12px; color:var(--muted); }
.legend span { display:inline-flex; align-items:center; gap:5px; }
.legend .sep { width:1px; height:14px; background:#334155; }
.sw { position:relative; display:inline-block; width:16px; height:16px; border-radius:4px;
  background:var(--card); overflow:hidden; border:1px solid #334155; }
.badge.loc-rmk { color:var(--rmk); border:1px solid var(--rmk); }
.badge.loc-cp { color:var(--cp); border:1px solid var(--cp); }
.badge { display:inline-block; font-size:12px; padding:2px 8px; border-radius:999px; background:#0b1220; color:var(--muted); margin-right:6px; }
.error { color:var(--danger); font-size:14px; margin-top:10px; }
.muted { color:var(--muted); font-size:14px; }
.section-title { margin-top:16px; color:var(--muted); font-size:13px; text-transform:uppercase; letter-spacing:.05em; }
.spacer { height:12px; }
.link { color:var(--accent); background:none; padding:0; font-weight:400; }
.user-box { display:flex; flex-direction:column; align-items:flex-end; gap:2px; }
.user-email { font-size:12px; color:var(--muted); max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* v2: 地点色 MH */
:root { --mh:#f87171; }
.fill.on.mh { background: var(--mh); }
.fill.on.multi { /* 背景由 JS 内联渐变提供 */ }

/* v2: 待定=半透明+虚线；休息日=灰底斜杠 */
.fill.on.tentative { opacity:.5; border:1.5px dashed rgba(255,255,255,.85); }
.cal-cell.restday { background-color:#243244;
  background-image: repeating-linear-gradient(45deg, rgba(148,163,184,.28) 0 5px, transparent 5px 10px); }
.badge.loc-mh { color:var(--mh); border:1px solid var(--mh); }
.badge.status-tentative { color:#fbbf24; border:1px solid #fbbf24; }

/* v2: 顶部导航 */
.nav { display:flex; flex-wrap:wrap; gap:20px; margin:18px 0 16px; padding:2px 2px; }
.nav .link { font-size:14px; padding:6px 4px; }

/* v2: 下拉 & 复制按钮 & 只读提示 */
.copy-btn { display:inline-flex; align-items:center; gap:4px; font-size:13px;
  padding:4px 8px; border-radius:8px; background:transparent; color:var(--accent);
  border:1px solid var(--accent); margin-left:8px; }
.copy-btn.copied { color:#34d399; border-color:#34d399; }
.reqname-row { display:flex; align-items:center; flex-wrap:wrap; gap:4px; margin-top:4px; }
.readonly-hint { color:var(--muted); font-size:12px; margin-top:4px; }
.weekday-picker { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-top:6px; }
.weekday-picker .chip { padding:8px 0; }
.search-hit { display:flex; align-items:center; justify-content:space-between;
  gap:8px; padding:10px 0; border-bottom:1px solid #334155; }
.search-hit .rest-flag { color:var(--muted); font-size:13px; }
