:root{
  --w: 400px;   /* カレンダー幅 */
  --gap: 4px;
  --border: #e6e6e6;
  --muted: #888;
}
*{box-sizing:border-box;}
body{
  margin:0;display:grid;place-items:center;min-height:100dvh;background:#ffffff;
  font-family:"Hiragino Sans","Yu Gothic UI","Noto Sans JP",system-ui,sans-serif;
  color:#222;
}

.calendar-wrap{
  width:var(--w);
  background:#fff;border:1px solid #ddd;overflow:hidden;
  display:grid;grid-template-rows:auto 1fr;
}

/* ヘッダー（ナビゲーション） */
.nav{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  padding:4px 8px;
  border-bottom:1px solid #e6e6e6;
  background:#ffffff;
}
.nav__title{
grid-column:2;
text-align:center;
  font-weight:700;font-size:16px;letter-spacing:.02em;
  font-family:"Yu Mincho","Hiragino Mincho ProN","Noto Serif JP",serif;
}
.nav__controls{ display:flex; gap:4px; }
.btn{
  appearance:none;border:none;background:transparent;color:#333;
  padding:2px 6px;font-size:16px;font-weight:bold;cursor:pointer;
}
.btn:disabled{ opacity:.3; cursor:not-allowed; }

/* セグメント風ナビ */
.segmented{
  display:inline-flex;
  border-radius:3px;
  overflow:hidden;
  border:1px solid #00000020;
  box-shadow: 0 1px 0 rgba(0,0,0,.04) inset;
  grid-column:3;
  justify-self:end;
}

.seg-btn{
  appearance:none;
  border:0;
  margin:0;
  padding:6px 12px;
  font-size:13px;
  font-weight:700;
  color:#fff;
  cursor:pointer;
  line-height:1;
}
.seg-btn + .seg-btn{
  border-left:1px solid #00000030; /* 仕切り線 */
}

.seg-btn svg{
  pointer-events:none;   /* クリック透過 */
  width: 20px;
  height: 20px;
}

.seg--today{ background:#90a4ae; }
.seg--prev { background:#78909c; }
.seg--next { background:#455a64; } 

/* hover/disabled */
.seg-btn:hover{ filter:brightness(1.05); }
.seg-btn:disabled{
  opacity:.45;
  cursor:not-allowed;
  filter:none;
}


/* 月カレンダー */
.month{
  display:grid;grid-template-rows:auto 1fr;
  padding:4px;background:#fff;
  min-width:0;min-height:0;
}
.month__header{ display:none; }

.month__dow{
  display:grid;grid-template-columns:repeat(7,1fr);
  font-size:12px;text-align:center;user-select:none;
  padding:2px 0;
}
.month__dow span.sun{color:#d64545;}
.month__dow span.sat{color:#2d6cdf;}

.month__grid{
  display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);
  gap:1px;min-height:0;
}

.day{
  position:relative;border:1px solid var(--border);
  padding:2px;display:grid;align-content:start;justify-items:end;background:#fff;overflow:hidden;
  min-height:60px;
}
.day__num{font-size:12px;font-weight:600;z-index:1;color:#333;user-select:none;}

/* 曜日着色 */
.day.sun   .day__num { color:#d32f2f; }
.day.sat   .day__num { color:#1976d2; }
.day.holiday .day__num { color:#d32f2f; }

.placeholder{border:1px dashed #eee;background:#fafafa;}

.day.today { background: #fffbe6; } 

/* イベント表示 */
.day__events{
  position:absolute;left:0;right:0;bottom:10px;
  display:flex;flex-direction:column;align-items:center;gap:1px;
  padding:0 2px;z-index:0;pointer-events:auto;
}
.event-badge{
  max-width:95%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:11px;
  padding:0 4px;border:1px solid #00000010;
  background:#1976d2;
  color:#fff;
  cursor:pointer;
}

.event-popup{
  position:absolute;
  background:#fff;
  border:1px solid #ccc;
  padding:20px 10px;
  font-size:14px;
  max-width:300px;
  box-shadow:0 2px 6px rgba(0,0,0,0.2);
  z-index:10000;
  display:none;
  white-space:pre-wrap;
}
