:root{
  --pink:#e8b4a8;
  --pink-soft:#f3d9d2;
  --pink-bg:#faf0ec;
  --ink:#5b4a45;
  --blue:#3f7d8c;
  --bluebg:#eaf2f4;
  --green:#7a9e6e;
  --gold:#d98a2b;
}

*{box-sizing:border-box;}

html,body{
  margin:0;
  padding:0;
  background:#fffdf9;
  color:var(--ink);
  font-family:"Hiragino Maru Gothic ProN","Yu Gothic",sans-serif;
}

body{
  max-width:640px;
  margin:0 auto;
  padding-bottom:40px;
}

/* ---------- header ---------- */
.topbar{
  position:sticky;
  top:0;
  z-index:10;
  background:var(--pink);
  color:#fff;
  padding:12px 14px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.08);
}

.topbar h1{
  font-size:18px;
  margin:0;
  letter-spacing:.03em;
  white-space:nowrap;
}

#weekSelect{
  flex:1;
  max-width:220px;
  border:none;
  border-radius:10px;
  padding:7px 10px;
  font-size:13px;
  font-family:inherit;
  color:var(--ink);
  background:#fff;
}

.weekTitle{
  text-align:center;
  font-size:17px;
  font-weight:700;
  margin:14px 12px 2px;
  color:var(--ink);
}

.weekNote{
  text-align:center;
  font-size:11.5px;
  color:#9a8b84;
  margin:0 16px 12px;
  line-height:1.6;
}

/* ---------- tabs ---------- */
.tabs{
  display:flex;
  gap:8px;
  padding:0 14px;
  margin-bottom:14px;
}

.tabBtn{
  flex:1;
  border:1.5px solid var(--pink-soft);
  background:#fff;
  color:var(--ink);
  border-radius:12px;
  padding:9px 4px;
  font-size:14px;
  font-family:inherit;
  font-weight:700;
  cursor:pointer;
  transition:background .15s, color .15s;
}

.tabBtn.active{
  background:var(--pink);
  color:#fff;
  border-color:var(--pink);
}

.tabPanel{display:none;padding:0 12px;}
.tabPanel.active{display:block;}

/* ---------- kondate tab ---------- */
.visual{
  display:block;
  width:100%;
  max-width:100%;
  height:auto;
  border-radius:14px;
  margin-bottom:16px;
  border:4px solid var(--pink-soft);
}

.daysWrap{
  display:flex;
  flex-direction:column;
  gap:12px;
}

.dayCard{
  border:1.5px solid var(--pink-soft);
  border-radius:14px;
  padding:12px 14px;
  background:#fff;
}

.dayCard.juku{
  background:#eef4ea;
  border-color:#cfe0c6;
}

.dayCard.today{
  border-color:var(--gold);
  border-width:2.5px;
  background:#fff8ea;
  box-shadow:0 0 0 3px rgba(217,138,43,.15);
}

.dayHead{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:6px;
  flex-wrap:wrap;
}

.dayDow{
  font-size:15px;
  font-weight:700;
  color:var(--ink);
  background:var(--pink-bg);
  border-radius:8px;
  padding:3px 9px;
}

.dayCard.today .dayDow{
  background:var(--gold);
  color:#fff;
}

.dayDate{
  font-size:13px;
  color:#9a8b84;
}

.badge{
  display:inline-block;
  font-size:10.5px;
  font-weight:700;
  border-radius:10px;
  padding:2px 9px;
  color:#fff;
}

.badge.juku{background:var(--green);}
.badge.tag{background:var(--blue);}
.badge.today{background:var(--gold);}

.mainLine{
  font-size:16px;
  font-weight:700;
  color:#a85a4a;
  margin:6px 0 4px;
  line-height:1.4;
}

.sidesList{
  margin:0 0 4px;
  padding-left:0;
  list-style:none;
  font-size:13px;
  line-height:1.7;
  color:var(--ink);
}

.sidesList li{
  padding-left:1.1em;
  text-indent:-1.1em;
}

.sidesList li:before{
  content:"・";
  color:var(--blue);
  margin-right:2px;
}

.recipeLine{
  font-size:11.5px;
  color:var(--gold);
  margin-top:4px;
  line-height:1.55;
}

.memoLine{
  font-size:11px;
  color:#9a8b84;
  margin-top:4px;
  line-height:1.6;
  border-top:1px dashed var(--pink-soft);
  padding-top:5px;
}

/* ---------- shopping tab ---------- */
.trip{
  border:2px solid var(--pink-soft);
  border-radius:14px;
  margin-bottom:16px;
  overflow:hidden;
  background:#fff;
}

.trip:nth-of-type(2n){
  border-color:#bcd6dd;
}

.tripHead{
  padding:10px 14px;
  font-size:14.5px;
  font-weight:700;
  color:#fff;
  background:var(--pink);
}

.trip:nth-of-type(2n) .tripHead{
  background:var(--blue);
}

.tripHead .tripNote{
  display:block;
  font-weight:400;
  font-size:11px;
  opacity:.95;
  margin-top:2px;
}

.section{
  font-size:12.5px;
  font-weight:700;
  color:var(--pink);
  background:var(--pink-bg);
  padding:5px 14px;
  margin:0;
}

.trip:nth-of-type(2n) .section{
  color:var(--blue);
  background:var(--bluebg);
}

.itemList{
  list-style:none;
  margin:0;
  padding:4px 14px 10px;
}

.item{
  display:flex;
  align-items:baseline;
  gap:6px;
  font-size:13.5px;
  line-height:1.9;
  border-bottom:1px dotted #e7ddd8;
  padding:6px 2px;
  cursor:pointer;
  user-select:none;
  transition:opacity .15s;
}

.item .checkbox{
  flex:0 0 auto;
  width:19px;
  height:19px;
  border-radius:6px;
  border:2px solid var(--pink);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:13px;
  color:#fff;
  transition:background .15s, border-color .15s, transform .1s;
}

.trip:nth-of-type(2n) .item .checkbox{
  border-color:var(--blue);
}

.item.checked .checkbox{
  background:var(--green);
  border-color:var(--green);
  transform:scale(1.08);
}

.item .itemText{
  flex:1;
}

.item.checked .itemText{
  text-decoration:line-through;
  color:#b6a89f;
}

.item .qty{color:#9a8b84;font-size:11.5px;margin-left:4px;}
.item .star{color:var(--gold);font-size:11px;margin-left:4px;}
.item .day{color:#b56b8e;font-size:10.5px;margin-left:4px;}

.pantryBox{
  font-size:11.5px;
  color:#8a7d6f;
  background:#fbfaf4;
  border:1px dashed var(--pink);
  border-radius:10px;
  padding:10px 14px;
  line-height:1.8;
  margin-bottom:14px;
}

.infoBox{
  font-size:12.5px;
  border-radius:12px;
  padding:10px 14px;
  line-height:1.8;
  margin-bottom:14px;
  background:var(--bluebg);
  border:1px solid #bcd6dd;
  color:#46707c;
}

.infoBox h3{
  margin:0 0 6px;
  font-size:13px;
  color:var(--ink);
}

.highlightsBox{
  background:#fff8ea;
  border:1px solid #ecd9ae;
  color:#8a6a2a;
}

.infoBox ul{
  margin:0;
  padding-left:18px;
}

.infoBox li{
  margin-bottom:3px;
}

/* ---------- flyers tab ---------- */
.flyersWrap{
  display:flex;
  flex-direction:column;
  gap:18px;
}

.flyerBox{
  border:1.5px solid var(--pink-soft);
  border-radius:14px;
  padding:10px;
  background:#fff;
}

.flyerLabel{
  margin:0 0 8px;
  font-size:13.5px;
  font-weight:700;
  color:var(--blue);
  background:var(--bluebg);
  border-radius:8px;
  padding:5px 10px;
  display:inline-block;
}

.flyerImg{
  display:block;
  width:100%;
  max-width:100%;
  height:auto;
  border-radius:8px;
  cursor:zoom-in;
}

.loading{
  text-align:center;
  padding:40px;
  color:#9a8b84;
  font-size:13px;
}

.loading.hidden{display:none;}

@media (min-width:520px){
  .topbar h1{font-size:20px;}
}
