.builder-body{
  overflow:auto; height:auto; min-height:100%;
  background: var(--cream);
}
.builder-header{
  text-align:center; padding:28px 16px 10px;
}
.builder-header h1{
  font-family:'Great Vibes', cursive; font-size:2.2rem; color:var(--pink-dark); margin:0 0 4px;
}
.builder-header p{ font-size:.85rem; opacity:.75; margin:0; }

.builder-wrap{
  max-width:640px; margin:0 auto; padding:10px 16px 60px;
}

.b-card{
  background:#fff; border:1px solid #ecdcc0; border-radius:14px;
  padding:18px 18px 20px; margin-bottom:16px;
  box-shadow:0 4px 14px rgba(0,0,0,.04);
}
.b-card h2{
  font-size:1rem; margin:0 0 10px; color: var(--ink);
  border-left:4px solid var(--pink); padding-left:8px;
}
.b-hint{ font-size:.74rem; opacity:.65; margin:2px 0 10px; }

.b-grid2{
  display:grid; grid-template-columns:1fr 1fr; gap:10px 12px;
}
.b-grid2 label{ display:flex; flex-direction:column; font-size:.75rem; gap:4px; }
.b-grid2 label.span2{ grid-column: 1 / -1; }
@media (max-width:520px){ .b-grid2{ grid-template-columns:1fr; } }

input[type="text"], input[type="datetime-local"], input[type="number"], textarea{
  border:1px solid #d9c6a8; border-radius:8px; padding:8px 10px;
  font-family:inherit; font-size:.85rem; width:100%;
}

.b-repeat{ display:flex; flex-direction:column; gap:8px; }
.b-repeat-row{
  display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:6px; align-items:center;
}
.b-repeat-row.cols2{ grid-template-columns:1fr 2fr auto; }
.b-repeat-row.cols1{ grid-template-columns:1fr auto; }
.b-repeat-row button{
  border:none; background:#f4dede; color:#a33; border-radius:8px;
  width:30px; height:30px; cursor:pointer; font-size:.85rem;
}
@media (max-width:560px){
  .b-repeat-row, .b-repeat-row.cols2{ grid-template-columns:1fr; }
}

.b-add{
  margin-top:10px; border:1px dashed var(--gold); background:#fff8ec;
  color:var(--pink-dark); border-radius:10px; padding:8px 14px;
  font-size:.78rem; cursor:pointer;
}

.b-repeat-row.cols4{ grid-template-columns:2fr 1fr 1.4fr 1fr auto; }
.b-repeat-row select{
  border:1px solid #d9c6a8; border-radius:8px; padding:8px 6px; font-family:inherit; font-size:.85rem;
}
@media (max-width:560px){ .b-repeat-row.cols4{ grid-template-columns:1fr; } }

.upload-drop{
  display:flex; align-items:center; justify-content:center;
  border:2px dashed var(--gold); border-radius:10px;
  padding:18px; margin-top:10px; cursor:pointer;
  font-size:.82rem; color:var(--pink-dark); background:#fffaf0;
  transition: background .15s;
}
.upload-drop:hover{ background:#fff1de; }

.photo-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:10px;
}
.photo-item{
  position:relative; aspect-ratio:1; border-radius:8px; overflow:hidden;
  border:1px solid #eadfc6;
}
.photo-item img{ width:100%; height:100%; object-fit:cover; display:block; }
.photo-item button{
  position:absolute; top:3px; right:3px; width:22px; height:22px;
  border:none; border-radius:50%; background:rgba(0,0,0,.55); color:#fff;
  font-size:.7rem; cursor:pointer;
}

.music-current{
  display:flex; align-items:center; gap:10px; margin-top:10px;
  background:#fff8ec; border:1px solid var(--gold); border-radius:10px; padding:10px 12px;
  font-size:.8rem; flex-wrap:wrap;
}

.venue-map{
  width:100%; height:220px; border-radius:10px; border:1px solid var(--gold);
  margin-top:6px; cursor:crosshair;
}
.map-search-row{ display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
.map-search-row input{
  flex:1; min-width:160px; border:1px solid #d9c6a8; border-radius:8px;
  padding:8px 10px; font-size:.82rem; font-family:inherit;
}
.map-tool-btn{
  border:1px solid var(--gold); background:#fff8ec; color:var(--pink-dark);
  border-radius:8px; padding:8px 12px; font-size:.78rem; cursor:pointer; white-space:nowrap;
}
.map-tool-btn:hover{ background:var(--pink); color:#fff; }
.map-search-results{
  margin-top:6px; border:1px solid #eadfc6; border-radius:8px;
  max-height:160px; overflow-y:auto; background:#fff;
}
.map-search-results div{
  padding:8px 10px; font-size:.78rem; cursor:pointer; border-bottom:1px solid #f3ead6;
}
.map-search-results div:last-child{ border-bottom:none; }
.map-search-results div:hover{ background:#fff8ec; }

.guest-row-header{
  display:grid; gap:6px; padding:0 4px; margin-top:10px;
  font-size:.68rem; text-transform:uppercase; letter-spacing:.03em; opacity:.6;
}
.guest-row-header.cols5{ grid-template-columns:44px 2fr 1fr 1.4fr 1fr; }
@media (max-width:560px){ .guest-row-header{ display:none; } }

.b-repeat-row.cols5{ grid-template-columns:44px 2fr 1fr 1.4fr 1fr auto; }
.b-repeat-row .guest-no{
  text-align:center; background:#f6efe0; border:1px solid #eadfc6 !important;
  color:#8a7a5a; font-weight:600;
}
@media (max-width:560px){ .b-repeat-row.cols5{ grid-template-columns:1fr; } }

.b-color-row label{ display:flex; flex-direction:column; font-size:.75rem; gap:4px; }
input[type="color"]{ width:52px; height:36px; border:none; border-radius:8px; cursor:pointer; }
.color-preview{
  padding:8px 16px; border-radius:20px; font-size:.78rem; color:#fff;
  background: linear-gradient(90deg, var(--preview-primary,#c96f8c), var(--preview-accent,#d8b05a));
}

#musicSearch{
  border:1px solid #d9c6a8; border-radius:8px; padding:8px 10px; width:100%; font-size:.85rem;
}
.music-list{ margin-top:8px; display:flex; flex-direction:column; gap:6px; max-height:160px; overflow-y:auto; }
.music-item{
  display:flex; align-items:center; justify-content:space-between;
  border:1px solid #eadfc6; border-radius:8px; padding:7px 10px; font-size:.78rem; cursor:pointer;
}
.music-item:hover{ background:#fff8ec; }
.music-item.selected{ border-color:var(--pink); background:#fdf1f4; }

.b-submit{
  width:100%; background:var(--pink-dark); color:#fff; border:none;
  border-radius:24px; padding:14px; font-size:.95rem; font-weight:500; cursor:pointer;
  margin-top:6px;
}
.b-status{ text-align:center; font-size:.8rem; margin-top:10px; min-height:1.2em; }

.result-card{ border:2px solid var(--gold); }
.result-row{
  display:flex; align-items:center; gap:8px; margin:10px 0;
  font-size:.82rem; flex-wrap:wrap;
}
.result-row span{ width:150px; opacity:.7; }
.result-row code{
  background:#f6efe0; padding:4px 8px; border-radius:6px; flex:1; word-break:break-all;
}
.b-open-btn{
  display:inline-block; margin-top:10px; background:var(--pink-dark); color:#fff;
  text-decoration:none; padding:10px 18px; border-radius:20px; font-size:.85rem;
}
