
*{box-sizing:border-box}
body{
  margin:0;
  background:#0c9b4a;
  font-family:"Pretendard","Noto Sans KR","Apple SD Gothic Neo",system-ui,sans-serif;
}
.app{
  width:min(100vw,768px);
  min-height:100vh;
  margin:auto;
  background:#0c9b4a;
}
.top-art{
  width:100%;
  display:block;
  user-select:none;
  -webkit-user-drag:none;
}

/* 원본 달력판은 사용하지 않고, 새 달력판만 표시 */
.calendar-card{
  width:92%;
  margin:-4px auto 26px;
  padding:22px 26px 28px;
  background:#fffefa;
  border-radius:30px;
  border:4px solid rgba(235,225,205,.95);
  box-shadow:0 8px 18px rgba(0,0,0,.18);
}

.month-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-bottom:18px;
}
.month{
  flex:1;
  text-align:center;
  font-size:clamp(38px,8vw,72px);
  font-weight:1000;
  color:#1158ee;
  letter-spacing:2px;
}
.nav{
  width:clamp(46px,8vw,68px);
  height:clamp(46px,8vw,68px);
  border-radius:50%;
  border:2px solid #d6dfef;
  background:#fff;
  color:#1055e8;
  font-size:clamp(34px,7vw,60px);
  font-weight:1000;
  line-height:.6;
  cursor:pointer;
  box-shadow:0 3px 0 rgba(0,0,0,.13);
}

.week{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:10px;
  margin-bottom:12px;
}
.week div{
  display:flex;
  align-items:center;
  justify-content:center;
  height:52px;
  border-radius:20px;
  background:#fff0d6;
  font-size:clamp(18px,3.2vw,30px);
  font-weight:1000;
  color:#222;
}
.week .sun{background:#ffe3df;color:#ef1128}
.week .sat{background:#dff0ff;color:#0a58ee}

.grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  grid-template-rows:repeat(6,72px);
  border-left:1px dashed rgba(217,191,152,.65);
  border-top:1px dashed rgba(217,191,152,.65);
}
.day{
  position:relative;
  display:flex;
  justify-content:center;
  align-items:flex-start;
  padding-top:10px;
  font-size:clamp(20px,4vw,34px);
  font-weight:950;
  cursor:pointer;
  border-right:1px dashed rgba(217,191,152,.65);
  border-bottom:1px dashed rgba(217,191,152,.65);
}
.day:hover{background:rgba(36,135,255,.08)}
.day.sun{color:#ef1128}
.day.sat{color:#0a58ee}
.day.other{color:#c7c7c7}

.today span{
  display:flex;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  border-radius:50%;
  background:#155cff;
  color:#fff;
  box-shadow:0 3px 0 #0b35bd;
}
.dot{
  position:absolute;
  bottom:12%;
  left:50%;
  transform:translateX(-50%);
  width:9px;
  height:9px;
  border-radius:50%;
  background:#ff8a00;
}

.modal{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.45);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  z-index:20;
}
.hidden{display:none}
.box{
  width:min(92vw,480px);
  background:#fffefa;
  border:6px solid #1166ff;
  border-radius:26px;
  padding:24px;
  box-shadow:0 18px 50px rgba(0,0,0,.28);
}
.box h2{margin:0 0 14px;font-size:24px;line-height:1.25}
textarea{
  width:100%;
  min-height:150px;
  border:2px solid #ccd7eb;
  border-radius:16px;
  padding:14px;
  font-size:18px;
  font-family:inherit;
  line-height:1.5;
  resize:vertical;
}
.actions{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin-top:12px;
}
.actions button{
  border:0;
  border-radius:14px;
  padding:12px 16px;
  font-weight:900;
  font-size:16px;
  cursor:pointer;
}
.save{background:#1166ff;color:#fff}
.close{background:#eee}
.del{background:#ffe2e2;color:#e41328}

@media(max-width:600px){
  .calendar-card{
    width:94%;
    padding:16px 14px 20px;
    border-radius:24px;
  }
  .week{gap:6px}
  .week div{height:40px;border-radius:14px}
  .grid{grid-template-rows:repeat(6,54px)}
  .day{padding-top:7px}
  .today span{width:34px;height:34px}
  .dot{width:7px;height:7px}
}
