/*ホーム*/
#logo_container,
#calender_container  {
 display:inline-block;
 vertical-align:top;
 width:158px;
 margin:10px;
 color:white;
}
#logo { 
 display:block;
 margin:5px auto;
 width:158px;
}
#title {
 font-size:16px;
 font-weight:bold;
}
#title span {
 font-size:12px;
}
#introduction {
 font-size:11px;
}

/*カレンダー*/
  /* 全体：背景透明 */
  .mini-cal-wrap{
    width: 100%;
    padding: 0;
    border-radius: 10px;
    background: transparent;
    box-sizing: border-box;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans JP", sans-serif;
  }
  /* 月ブロック間隔 */
  .mini-month{
    margin-bottom: 5px;
  }
  .mini-month:last-child{
    margin-bottom: 0;
  }
  /* ===== 曜日（最上段・1回だけ） ===== */
  table.mini-week{
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    margin-bottom: 2px;
  }
  .mini-week th{
    font-size: 10px;
    font-weight: 700;
    padding: 2px 0 4px;
    text-align: center;
  }
  .mini-week th.sun{ color: violet; }
  .mini-week th.sat{ color: #36c; }
  /* ===== カレンダー本体 ===== */
  table.mini-cal{
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
  }
  /* 年月タイトル行（2026 Jan 01） */
  .mini-cal thead .mini-title-cell{
    text-align: center;
    padding: 2px 0 4px;
    letter-spacing: .3px;
    font-weight: 600;
    font-size: 11px; /* 基本 */
  }
  /* 年 */
  .mini-cal .mini-title-cell .y{
    font-size: 11px;
  }
  /* 月（Jan を少し大きく） */
  .mini-cal .mini-title-cell .m{
    font-size: 14px;   /* ←ここで大きく */
    font-weight: 700;
    margin: 0 2px;
  }
  /* 日（01） */
  .mini-cal .mini-title-cell .d0{
    font-size: 11px;
  }
  /* セル共通 */
  .mini-cal td{
    height: 16px;
    text-align: center;
    vertical-align: middle;
    font-size: 12px;
    position: relative;
    border-radius: 6px;
  }
  /* 空セル */
  .mini-cal td.empty{
    color: transparent;
  }
  /* 土日色（数字） */
  .mini-cal td.sun{ color: violet; }
  .mini-cal td.sat{ color: #36c; }
  /* 数字（前面） */
  .mini-cal td .d{
    display: inline-block;
    line-height: 1;
    position: relative;
    z-index: 1;
  }
  /* mark日の数字色 */
  .mini-cal td.marked .d{
    color: red;       /* 好きな色に */
    font-weight: 700; /* 任意 */
  }
  /* ●マーク（数字の背面） */
  .mini-cal td .mark{
    position: absolute;
    left: 0;
    top: -2px;
    font-size: 24px;
    line-height: 1;
    opacity: .9;
    color: white;
    z-index: 0;          /* -1にしない（消える原因になりやすい） */
    pointer-events: none;
  }
  /* 処理中（点滅） */
  .mini-cal td.blinking .d{
    animation: calBlink 0.25s steps(2, end) infinite;
  }
  .mini-cal td.blinking .mark{
    animation: calBlink 0.25s steps(2, end) infinite;
  }

  /* 点滅アニメ */
  @keyframes calBlink{
    0%   { opacity: 1; }
    100% { opacity: 0; }
  }

.mainmenu,
.submenu {
 display:inline-block;
 vertical-align:top;
 width:150px;
 height:140px;
 margin:10px 7.5px;
 padding:5px;
 text-align:center;
 border-radius:20px;
 background:white;
 line-height:40px;
 font-size:14px;
 font-weight:bold;
 color:rgb(255, 44, 79);
 text-decoration:none;
}
.mainmenu img {
 display:block;
 height:80px;
 margin:5px auto;
}
.submenu {
 height:30px;
 line-height:30px;
 border-radius:15px;
}
.submenu img {
 display:inline-block;
 vertical-align:middle;
 margin:-3px 5px 0 0;
 width:20px;height:20px;
}
#admin-login-wrap {
 display:inline-block;
}
#admin-modal {
 display:none;
 position:fixed;
 top:35vh;left:calc(50% - 120px);
 background:rgba(0,0,0,.4);
 z-index:9999;
 background:#fff;
 border-radius:12px;
 padding:10px;
 width:220px;
 height:85px;
}
#admin-password {
 width:calc(100% - 20px);
 padding:5px;
 font-size:16px;
 border:solid 2px gray;
}
#admin-modal button {
 margin-top:10px;
 display:inline-block;
 font-size:14px;
}
html.modal-open,
body.modal-open{
  overflow: hidden;
  height: 100%;
  touch-action: none;
}
#QRcode {
 display:none;
 position:fixed;
 top:150px;left:calc(50% - 150px);
 width:300px;
 z-index:200;
}

#backscreen {
 display:none;
 position:fixed;
 top:0;left:0;
 width:100%;
 height:100%;
 background:black;
 opacity:0.6;
 overflow:hidden;
 z-index:50;
}

/*ホーム画面追加案内*/
#a2hs-modal {
 position:fixed;
 z-index: 9999;
 width:320px;
 top:20vh;left:calc(50% - 170px);
 background:white;
 border-radius:15px;
 padding:10px;
 text-align:left;
}
#a2hs-title {
 font-weight:bold;
 font-size:18px;
 text-align:center;
}
.a2hs-subtitle {
 margin-top:10px;
 text-align:center;
}
.a2hs-steps {
 padding:0 5px 0 25px
}

/*メンバー*/
.viewmode{
  display:flex;
  gap:8px;
  justify-content:center;
  font-size:13px;
  line-height:30px;
  padding-left:20px;
  color:white;
}
.viewmode-btn{
  padding:0px 10px;
  border-radius:5px;
  border:1px solid rgba(255,255,255,.35);
  background:rgba(0,0,0,.15);
  color:#fff;
  cursor:pointer;
}
.viewmode-btn.is-active{
  background:rgba(255,255,255,.55);
  border-color:rgba(255,255,255,.65);
  font-weight:700;
}

#date {
 position:fixed;
 height:30px;
 width:calc(100% - 10px);
 max-width:calc(500px - 10px);
 background:pink;
 margin:10px 0;
 padding:10px 5px 13px 5px;
 font-size:14px;
 z-index:10;
}
#date select {
 z-index:1;
 position:relative;
 top:-2px;
 display:inline-block;
 padding:2px 4px;
 font-size:14px;
 background:white;
 color:black;
 border:solid 2px black;
 border-radius:5px;
}
#attendanceCountNumber {
 font-weight: bold;
 color:rgb(1, 146, 1);
 font-size:20px;
}
#date button {
 position:relative;
 top:-2px;
 display:inline-block;
 padding:2px 10px 3px 10px;
 font-size:14px;
 background:silver;
 border-radius:5px;
 color:black;
 border:solid 2px black;
}
#memberList {
 margin:75px 0 10px 0;
}
#memberList.order_mode {
 background-color: #b4c8ff;
 border: 2px dashed #007bff;
 padding: 5px;
}
.member_container {
 background:white;
 width:calc(100% - 4px);
 margin:2px auto;
 padding:0;
 white-space:nowrap;
 text-align:center;
}
.member_container div {
 display:inline-block;
 vertical-align:middle;
 min-width:26px;
 padding:2px;
 margin-left:2px;
 border-radius:5px;
 line-height:20px;
}
.nickname {
 width:100px;
 margin-left:0!important;
 border:solid 2px gray;
 font-size:13px;
 font-weight:bold;
 text-align:left;
 white-space:nowrap;
 overflow:hidden;
 text-overflow:ellipsis;
}
.attendance {
 display:inline-block;
 margin:0 0 0 2px;
}
.attendance.o {
 color:rgb(27, 167, 27);
}
.attendance.x {
 color:red;
}
.relation {
 font-size:13px;
 min-width:17px!important;
 height:17px;
 margin:0 0 0 1px!important;
 border-radius:999px!important;
 line-height:16px!important;
 overflow:hidden;
}
.relation.none {
 background:rgb(236, 236, 236);
}
.line_icon {
 display:inline-block;
 vertical-align:middle;
 width:28px;
 margin:0 2px;
}
.line_icon.none {
 opacity:0.2;
}
.bibs {
 display:none!important;
 background:rgb(255, 217, 0);
 border:solid 2px rgb(209, 178, 0);
 font-size:8px;
 text-align:center;
 white-space:nowrap;
}
.bibs.o { opacity:1; }
.bibs.x { opacity:0.2;}
@keyframes bibsBlink {
  0%   { opacity: 1; }
  50%  { opacity: 0.2; }
  100% { opacity: 1; }
}
.bibs.blink {
  animation: bibsBlink 0.3s linear infinite;
}
.birthday {
 background:rgb(98, 137, 255);
 border:solid 2px blue;
 font-size:10px;
 font-weight:bold;
 text-align:center;
 color:white;
 white-space:nowrap;
}
.birthday.empty {
 background:silver;
 border:solid 2px gray;
}
.category {
 background:silver;
 border:solid 2px gray;
 font-size:10px;
 font-weight:bold;
 text-align:center;
 color:white;
 white-space:nowrap;
}
.category.O30,
.cat-btn#O30b {
 border:solid 2px red;
 background:rgb(253, 67, 67);
 color:white;
}
.category.U29,
.cat-btn#U29b {
 border:solid 2px rgb(233, 78, 233);
 background:violet;
 color:white;
}
.category.SP,
.cat-btn#SPb {
 border:solid 2px rgb(196, 172, 42);
 background:rgb(223, 190, 6);
 color:white;
}
.category.guest { font-size:8px; }
.category.guest,
.cat-btn#guestb {
 background:silver;
 border:solid 2px gray;
 color:white;
}
.category.Non,
.cat-btn#Nonb {
 border:solid 2px black;
 background:black;
 color:white;
}
.stamp {
 border:solid 2px rgb(72, 238, 72);
 width:40px;
 height:20px;
 text-align:left;
 padding:2px 1px!important;
}
.stamp.o30 span {
 display:inline-block;
 width:11.5px;
 margin:0 1px;
 height:20px;
 background:rgb(72, 238, 72);
}
.stamp.u29 span {
 display:inline-block;
 width:18px;
 margin:0 1px;
 height:20px;
 background:rgb(72, 238, 72);
}
.stamp.guest {
 border:solid 2px black;
 opacity:0.3;
}
.stamp.guest span {
 display:none;
}
.edit {
 margin:0 2px 0 0!important;
 padding:2px 10px!important;
 background:tomato;
 border:solid 2px red;
 font-size:12px;
 font-weight:bold;
 text-align:center;
 color:white;
 white-space:nowrap;
}
.dragging {
  background-color: #007bff;
  color: white;
  opacity: 0.8;
  transform: scale(1.05);
  transition:0.5s;
  box-shadow: 0 4px 8px rgba(0,0,0,0.2);
  z-index: 1000;
}
#button_container {
 margin:-20px 0 0 0;
 padding:20px 0;
 text-align:center;
}
#button_container button {
 margin:0 15px;
 font-size:20px;
}


/*編集*/
.modal.hidden {
 display: none;
}
.modal {
  position: fixed;
  inset: 0;
  z-index: 9999;
}
#modal_bg {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.5);
}
.modal_content {
  position: relative;
  background: #fff;
  width: 90%;
  max-width: 300px;
  margin: 4vh auto;
  padding: 20px;
  border-radius: 8px;
  font-size:16px;
  padding:20px;
  text-align:center;
  max-height: 80vh;          /* 画面の90%まで */
  overflow-y: auto;          /* 中だけスクロール */
  -webkit-overflow-scrolling: touch; /* iOS対策 */
}
.regist_content {
 text-align:center;
}
#modal {
 margin-top:30px;
 border:dashed 2px royalblue;
}
.modal_content h3 {
 font-size:16px;
 text-align:center;
}
.modal_content label,
.regist_content label {
 display:block;
}
.modal_content select,
.modal_content input,
.modal_content button,
.modal_content textarea,
.regist_content select,
.regist_content input,
.regist_content button,
.regist_content textarea {
  font-size:16px;
}
.modal_content .item_name,
.regist_content .item_name {
 margin:10px 0;
 padding:5px;
 background:silver;
}
.modal_content input[type="text"],
.regist_content input[type="text"],
.modal_content textarea,
.regist_content textarea {
 width:70%;
 border:solid 2px gray;
}
.modal_content #edit_lastname,
.modal_content #edit_firstname {
 width:30%;
}
.modal_content .relation_input {
 width:24px!important;
 display:inline-block;
 vertical-align:top;
}
#regist_memo {
 min-height:200px;
}
.modal_content .cat-btn {
  margin:2px;
  padding:2px 5px;
  border-radius: 5px;
  border: 2px solid #ccc;
  background: #f5f5f5;
  cursor: pointer;
  opacity:0.7;
}
.modal_content .cat-btn.active {
  margin:0px!important;
  border:solid 4px gold!important;
  opacity:1!important;
}
.modal_content .modal_buttons,
.regist_button {
 text-align:center;
}
#saveEdit,
#registMember,
#saveBirthday {
 margin:20px 0 10px 0;
 padding:10px 20px;
 border-radius:10px;
 border:solid 6px royalblue;
 background:royalblue;
 color:white;
}
#deleteMember {
 margin:10px 0 20px 0;
 padding:15px 30px;
 border-radius:10px;
 border:solid 6px red;
 background:red;
 color:white;
}
.modal_content #closeEdit,
#closeBirthday {
 position:absolute;
 width:30px;height:30px;
 top:10px;right:20px;
 padding:0 0 1px 1px;
 background:white;
 border:solid 2px black;
 border-radius:5px;
 color:black;
 font-weight:bold;
 font-size:24px;
 line-height:20px!important;
 text-align:center;
}
.point_edit .memo {
 margin-top:5px;
 font-size:12px;
}
#paymentSection {
 padding:20px;
 border:dashed 2px orange;
 text-align:center;
}
.payment_title {
 margin:10px 0;
 text-align:center;
 font-size:16px;
 font-weight:bold;
}
#payment_times_text {
 font-size:20px;
 color:green;
 font-weight:bold;
}
#executePayment {
 display:inline-block;
 margin:10px 0 0 0;
 padding:15px 30px;
 border-radius:10px;
 border:solid 2px orange;
 background:orange;
 color:white;
}
#paymentSection button {
 margin-top:20px;
}
#attendanceHistorySection,
#paymentHistorySection {
 text-align:left;
}
#attendanceHistorySection summary {
 background:mediumseagreen;
 padding:5px 10px;
 margin:5px 0;
}
#paymentHistorySection summary {
 background:orange;
 padding:5px 10px;
 margin:5px 0;
}
#attendanceHistorySection ul,
#paymentHistorySection ul {
  list-style-position: inside;
  padding-left: 0;
}
#attendanceHistorySection li {
 border:solid 2px mediumseagreen;
  margin: 4px 0;
  padding: 4px 6px;
}
#paymentHistorySection li {
 border:solid 2px orange;
  margin: 4px 0;
  padding: 4px 6px;
}

/*アバウト*/
#description {
 padding:10px;
 font-size:14px;
}
#description .header {
 margin:10px 0;
 font-weight:bold;
 font-size:16px;
}
.description_image {
 display:block;
 width:90%;
 margin:10px auto;
 box-shadow: 10px 10px 20px rgba(0,0,0,.25);
 border-radius:30px;
}
#members_category {
 width:100%;
 font-size:12px;
}
#members_category td {
 border:solid;
 padding:5px;
 border:solid 2px;
}
.caution {
 list-style: none;
}
.caution li {
 position:relative;
}
.caution li::before {
 position:absolute;
 content:"※";
 left:-20px;
}