.calendar-image-dialog {
  box-sizing: border-box;
  --calendar-viewport-width: 100vw;
  --calendar-viewport-height: 100vh;
  --calendar-viewport-top: 0px;
  --calendar-viewport-left: 0px;
  --calendar-safe-top: env(safe-area-inset-top, 0px);
  --calendar-safe-bottom: env(safe-area-inset-bottom, 0px);
  --calendar-safe-left: env(safe-area-inset-left, 0px);
  --calendar-safe-right: env(safe-area-inset-right, 0px);
  --calendar-available-height: calc(var(--calendar-viewport-height) - var(--calendar-safe-top) - var(--calendar-safe-bottom) - 24px);
  --calendar-dialog-height: min(50rem, var(--calendar-available-height));
  position: fixed;
  inset: auto;
  top: calc(var(--calendar-viewport-top) + var(--calendar-safe-top) + (var(--calendar-viewport-height) - var(--calendar-safe-top) - var(--calendar-safe-bottom) - var(--calendar-dialog-height)) / 2);
  left: calc(var(--calendar-viewport-left) + var(--calendar-safe-left) + (var(--calendar-viewport-width) - var(--calendar-safe-left) - var(--calendar-safe-right)) / 2);
  transform: translateX(-50%);
  width: min(35rem, calc(var(--calendar-viewport-width) - var(--calendar-safe-left) - var(--calendar-safe-right) - 24px));
  max-width: none;
  height: var(--calendar-dialog-height);
  max-height: var(--calendar-available-height);
  margin: 0;
  padding: 3px;
  border: 3px outset #ddd;
  border-radius: 0;
  background: #c0c0c0;
  color: #000;
  box-shadow: 3px 3px 0 #333;
  font: 16px/1.6 Arial, "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  overflow: hidden;
}
@supports (height: 100dvh) { .calendar-image-dialog { --calendar-viewport-height: 100dvh; } }
.calendar-image-dialog:not([open]) { display: none; }
.calendar-image-dialog[open] { display: flex; flex-direction: column; }
.calendar-image-dialog::backdrop { background: rgba(0, 0, 0, .45); }
.calendar-image-titlebar {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 3px 4px 3px 8px;
  background: #000080;
  color: #fff;
  text-align: left;
  font-weight: 700;
  line-height: 1.45;
}
.calendar-image-title { min-width: 0; overflow-wrap: anywhere; }
.calendar-image-dialog .calendar-image-window-close {
  flex: 0 0 auto;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  width: 44px;
  min-width: 44px;
  height: 44px;
  min-height: 44px;
  padding: 0;
  font: 700 20px/1 Arial, sans-serif;
}
.calendar-image-content {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
  padding: 8px 12px;
  text-align: center;
}
.calendar-image-content > p { flex: 0 0 auto; }
.calendar-image-stage { flex: 1 1 0; min-width: 0; min-height: 48px; }

.calendar-image-dialog .calendar-image-guide { margin: 0 0 6px; font-size: 1rem; font-weight: 700; text-align: center; }
.calendar-image-dialog .calendar-image-preview {
  display: block;
  width: 100%;
  box-sizing: border-box;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 0;
  border: 1px solid #666;
  border-radius: 0;
  object-fit: contain;
  background: #fff;
  -webkit-touch-callout: default;
  user-select: auto;
}
.calendar-image-dialog .calendar-image-tip { margin: 6px 0 0; font-size: .9375rem; text-align: center; }
.calendar-image-dialog .calendar-image-pc-tip { margin: 4px 0 0; font-size: .8125rem; text-align: center; }
.calendar-image-dialog .calendar-image-error { color: #800000; font-size: .875rem; text-align: center; }
.calendar-image-controls {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  padding: 8px 10px 10px;
  margin: 0;
}
.calendar-image-dialog .calendar-image-controls a,
.calendar-image-dialog .calendar-image-controls button,
.calendar-image-dialog .calendar-image-window-close {
  color: #000;
  background: #c0c0c0;
  border: 2px outset #eee;
  border-radius: 0;
  text-decoration: none;
  text-align: center;
  box-shadow: 1px 1px 0 #333;
  animation: none;
}
.calendar-image-dialog .calendar-image-controls a,
.calendar-image-dialog .calendar-image-controls button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 44px;
  margin: 0;
  padding: 5px 12px;
  font-size: .875rem;
  font-weight: 400;
  line-height: 1.6;
}
.calendar-image-dialog .calendar-image-controls button { min-width: 88px; }
.calendar-image-dialog button:active,
.calendar-image-dialog .calendar-image-download:active { border-style: inset; box-shadow: none; }
.calendar-image-dialog button:focus-visible,
.calendar-image-dialog a:focus-visible { outline: 2px dashed #000; outline-offset: 2px; }
.calendar-image-dialog[data-fallback] { z-index: 10001; }
.calendar-image-fallback-backdrop { position: fixed; inset: 0; z-index: 10000; background: rgba(0, 0, 0, .45); }
.calendar-image-fallback-backdrop[hidden] { display: none; }
@media (max-width: 600px) {
  .calendar-image-content { padding: 8px 10px; }
  .calendar-image-titlebar { font-size: .875rem; }
  .calendar-image-dialog .calendar-image-pc-tip { display: none; }
}
