@import url('https://fonts.googleapis.com/css2?family=Cormorant+SC:wght@600&family=Marcellus&family=Jost:wght@300;400;500;600&display=swap');

:root{
  --maroon-deep:#210810;
  --maroon:#3c1220;
  --gold:#b08d54;
  --gold-light:#d9bc85;
  --gold-dim:#7c6440;
  --ivory:#f6f1e6;
  --ivory-dim:#ece3cf;
  --ink:#141010;
  --danger:#8b3333;
  --success:#2f5d3a;
  --display:'Cormorant SC', serif;
  --label:'Marcellus', serif;
  --body:'Jost', sans-serif;
}
*{box-sizing:border-box; margin:0; padding:0;}
body{font-family:var(--body); font-weight:300; color:var(--ink); background:var(--ivory);}
img{max-width:100%; display:block;}
button{font-family:inherit; cursor:pointer;}
input, select, textarea{font-family:var(--body); font-size:0.92rem;}

.eyebrow{font-family:var(--label); font-size:0.7rem; letter-spacing:0.28em; text-transform:uppercase; color:var(--gold-dim);}

.btn{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--label); font-size:0.8rem; letter-spacing:0.1em; text-transform:uppercase;
  padding:0.7rem 1.5rem; border:1px solid var(--maroon-deep); background:transparent; color:var(--maroon-deep);
  transition:background .25s ease, color .25s ease;
}
.btn.solid{background:var(--maroon-deep); color:var(--gold-light); border-color:var(--maroon-deep);}
.btn.solid:hover{background:var(--maroon);}
.btn:focus-visible{outline:2px solid var(--gold); outline-offset:2px;}

/* ---------- login ---------- */
.login-body{min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--maroon-deep); padding:1.5rem;}
.login-card{
  background:var(--ivory); padding:3rem 2.5rem; max-width:380px; width:100%; text-align:center;
  border-top:3px solid var(--gold);
}
.login-logo{width:48px; margin:0 auto 1rem;}
.login-card h1{font-family:var(--display); font-size:1.8rem; color:var(--maroon-deep); margin:0.3rem 0 1.6rem;}
.login-card form{display:flex; flex-direction:column; gap:1.1rem; text-align:left;}
.login-card label{
  font-family:var(--label); font-size:0.72rem; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--maroon-deep); display:flex; flex-direction:column; gap:0.4rem;
}
.login-card input{border:1px solid #cbb98f; padding:0.65rem 0.8rem; background:#fff;}
.login-card .btn{justify-content:center; margin-top:0.4rem;}
.form-error{color:var(--danger); font-size:0.85rem; min-height:1.2em;}
.login-hint{margin-top:1.6rem; font-size:0.76rem; color:var(--gold-dim); line-height:1.6;}
.login-hint code{background:var(--ivory-dim); padding:0.1rem 0.35rem;}

/* ---------- shell ---------- */
.admin-shell{display:flex; min-height:100vh;}
.admin-sidebar{
  width:230px; flex-shrink:0; background:var(--maroon-deep); color:var(--ivory-dim);
  display:flex; flex-direction:column; padding:1.6rem 1.2rem;
}
.admin-brand{display:flex; align-items:center; gap:0.6rem; margin-bottom:2.4rem;}
.admin-brand img{width:34px;}
.admin-brand span{font-family:var(--display); font-size:1.15rem; color:var(--gold-light); display:flex; flex-direction:column; line-height:1.1;}
.admin-brand small{font-family:var(--label); font-size:0.6rem; letter-spacing:0.18em; color:var(--gold-dim); text-transform:uppercase;}
.admin-nav{display:flex; flex-direction:column; gap:0.3rem; flex:1;}
.admin-nav-link{
  text-align:left; background:none; border:none; color:var(--ivory-dim);
  font-family:var(--label); font-size:0.82rem; letter-spacing:0.04em;
  padding:0.7rem 0.8rem; border-left:2px solid transparent;
}
.admin-nav-link:hover{color:var(--gold-light);}
.admin-nav-link.active{color:var(--gold-light); border-left-color:var(--gold); background:rgba(201,161,93,0.08);}
.admin-sidebar-footer{display:flex; flex-direction:column; gap:0.6rem; font-size:0.78rem; color:var(--gold-dim); padding-top:1.2rem; border-top:1px solid rgba(176,141,84,0.25);}
.admin-link-btn{background:none; border:none; color:var(--gold-light); text-decoration:underline; text-underline-offset:3px; font-size:0.78rem; text-align:left; padding:0;}

.admin-main{flex:1; padding:2.6rem 3rem; max-width:1200px;}
.admin-view-header{margin-bottom:2.2rem; position:relative;}
.admin-view-header h1{font-family:var(--display); font-size:2rem; color:var(--maroon-deep); margin-bottom:0.3rem;}
.admin-view-header p{color:#5a4a40; font-size:0.92rem;}
.admin-view-header .btn{position:absolute; top:0; right:0;}

/* ---------- stats ---------- */
.stat-grid{display:grid; grid-template-columns:repeat(auto-fit, minmax(160px,1fr)); gap:1.2rem;}
.stat-card{background:#fff; border:1px solid var(--ivory-dim); border-top:3px solid var(--gold); padding:1.6rem; display:flex; flex-direction:column; gap:0.4rem;}
.stat-num{font-family:var(--display); font-size:2.2rem; color:var(--maroon-deep);}
.stat-label{font-family:var(--label); font-size:0.72rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--gold-dim);}

/* ---------- table ---------- */
.table-wrap{overflow-x:auto; background:#fff; border:1px solid var(--ivory-dim);}
.admin-table{width:100%; border-collapse:collapse; font-size:0.88rem; min-width:820px;}
.admin-table th{
  text-align:left; font-family:var(--label); font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--gold-dim); padding:0.9rem 1rem; border-bottom:1px solid var(--ivory-dim); background:var(--ivory);
}
.admin-table td{padding:0.85rem 1rem; border-bottom:1px solid var(--ivory-dim); vertical-align:top;}
.admin-table tr:last-child td{border-bottom:none;}
.client-name{font-weight:500;}
.client-contact{color:#8a7a6c; font-size:0.8rem;}
.status-pill{
  display:inline-block; font-family:var(--label); font-size:0.68rem; letter-spacing:0.05em; text-transform:uppercase;
  padding:0.28rem 0.6rem; border-radius:2px;
}
.status-enquiry{background:#eee0c4; color:#7c6440;}
.status-confirmed{background:#d9e6dc; color:var(--success);}
.status-in-progress{background:#dde3ef; color:#37507a;}
.status-completed{background:#e0e0e0; color:#4a4a4a;}
.status-cancelled{background:#f0d9d9; color:var(--danger);}
.row-actions{display:flex; gap:0.6rem;}
.row-actions button{background:none; border:none; font-size:0.78rem; color:var(--maroon); text-decoration:underline; text-underline-offset:2px; padding:0;}
.row-actions .danger{color:var(--danger);}
.notes-cell{max-width:200px; font-size:0.82rem; color:#5a4a40;}
.empty-state{padding:2.4rem; text-align:center; color:var(--gold-dim); font-style:italic;}

/* ---------- upload / gallery ---------- */
.upload-card{background:#fff; border:1px solid var(--ivory-dim); padding:1.6rem; margin-bottom:2rem;}
.upload-row{display:flex; gap:1.2rem; align-items:flex-end; flex-wrap:wrap;}
.upload-row label{
  display:flex; flex-direction:column; gap:0.4rem;
  font-family:var(--label); font-size:0.7rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--maroon-deep);
}
.upload-row label.grow{flex:1; min-width:200px;}
.upload-row input, .upload-row select{border:1px solid #cbb98f; padding:0.6rem 0.7rem; background:#fff;}
.form-note{font-size:0.82rem; color:var(--success); margin-top:0.8rem; min-height:1.2em;}
.form-note.error{color:var(--danger);}

.gallery-admin-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(200px,1fr)); gap:1.2rem;}
.gallery-admin-card{background:#fff; border:1px solid var(--ivory-dim); position:relative; cursor:grab; transition:opacity .15s ease;}
.gallery-admin-card.dragging{opacity:0.35;}
.gallery-admin-card .drag-handle{
  position:absolute; top:0.4rem; right:0.4rem; z-index:2;
  background:rgba(20,16,16,0.55); color:#fff; font-size:0.75rem; line-height:1;
  padding:0.3rem 0.45rem; border-radius:2px; letter-spacing:-2px; pointer-events:none;
}
.gallery-admin-card .thumb{aspect-ratio:4/5; overflow:hidden;}
.gallery-admin-card .thumb img{width:100%; height:100%; object-fit:cover;}
.gallery-admin-card .meta{padding:0.9rem;}
.gallery-admin-card .cat-badge{
  font-family:var(--label); font-size:0.64rem; letter-spacing:0.06em; text-transform:uppercase;
  color:var(--gold-dim); border:1px solid var(--gold-dim); padding:0.15rem 0.5rem; display:inline-block; margin-bottom:0.5rem;
}
.gallery-admin-card .caption{font-size:0.85rem; margin-bottom:0.7rem;}
.gallery-admin-card .tag-chips{display:flex; flex-wrap:wrap; gap:0.3rem; margin-bottom:0.7rem;}
.gallery-admin-card .tag-chip{
  font-size:0.68rem; background:var(--ivory); color:#5a4a40; padding:0.15rem 0.5rem; border-radius:2px;
}
.gallery-admin-card .card-actions{display:flex; justify-content:space-between; align-items:center; font-size:0.78rem;}
.gallery-admin-card .card-actions label{display:flex; align-items:center; gap:0.35rem; color:#5a4a40;}
.gallery-admin-card .card-actions-right{display:flex; gap:0.8rem;}
.gallery-admin-card .card-actions button{background:none; border:none; text-decoration:underline; text-underline-offset:2px;}
.gallery-admin-card .card-actions button[data-edit-img]{color:var(--maroon);}
.gallery-admin-card .card-actions button[data-delete-img]{color:var(--danger);}
.gallery-admin-card .card-actions button[data-move-img]{font-size:1rem; text-decoration:none; padding:.15rem .25rem;}

/* ---------- modal ---------- */
.modal{position:fixed; inset:0; z-index:200; background:rgba(20,16,16,0.6); display:flex; align-items:center; justify-content:center; padding:1.5rem;}
.modal[hidden]{display:none;}
.modal-card{background:#fff; max-width:560px; width:100%; padding:2.2rem; position:relative; max-height:90vh; overflow-y:auto;}
.modal-close{position:absolute; top:1rem; right:1.2rem; background:none; border:none; font-size:1.6rem; color:var(--maroon-deep);}
.modal-card h2{font-family:var(--display); color:var(--maroon-deep); font-size:1.6rem; margin-bottom:1.4rem;}
#bookingForm{display:flex; flex-direction:column; gap:1rem;}
#bookingForm .form-row{display:grid; grid-template-columns:1fr 1fr; gap:1rem;}
#bookingForm label{
  display:flex; flex-direction:column; gap:0.35rem;
  font-family:var(--label); font-size:0.68rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--maroon-deep);
}
#bookingForm label.full{grid-column:1/-1;}
#bookingForm input, #bookingForm select, #bookingForm textarea{border:1px solid #cbb98f; padding:0.6rem 0.7rem; font-family:var(--body);}

#imageForm{display:flex; flex-direction:column; gap:1rem;}
#imageForm label{
  display:flex; flex-direction:column; gap:0.35rem;
  font-family:var(--label); font-size:0.68rem; letter-spacing:0.06em; text-transform:uppercase; color:var(--maroon-deep);
}
#imageForm input, #imageForm select{border:1px solid #cbb98f; padding:0.6rem 0.7rem; font-family:var(--body);}

@media (max-width:900px){
  .admin-shell{flex-direction:column;}
  .admin-sidebar{width:100%; flex-direction:row; align-items:center; padding:1rem 1.2rem;}
  .admin-brand{margin-bottom:0; margin-right:1.6rem;}
  .admin-nav{flex-direction:row; flex:1; overflow-x:auto;}
  .admin-sidebar-footer{flex-direction:row; align-items:center; border:none; padding:0; margin-left:auto;}
  .admin-main{padding:1.6rem;}
  .stat-grid{grid-template-columns:repeat(2,1fr);}
  .admin-view-header .btn{position:static; margin-top:1rem;}
  #bookingForm .form-row{grid-template-columns:1fr;}
}
.field-hint{text-transform:none; letter-spacing:0; font-size:0.68rem; color:#8a7a6c; font-style:italic;}
.password-reveal{
  font-family:var(--label); font-size:1.3rem; letter-spacing:0.06em;
  background:var(--ivory); border:1px dashed var(--gold); padding:1rem; text-align:center;
  color:var(--maroon-deep); margin-top:1rem; user-select:all;
}

[hidden]{display:none!important}.frame-request-details{padding:1rem;background:#f1ecdf;border-radius:8px;margin-bottom:1rem}.frame-request-details p{white-space:pre-line}.frame-request-details a{text-decoration:underline}

.ticket-ref{font:.72rem var(--body);letter-spacing:.08em;color:var(--gold-dim);display:block;margin:.5rem 0}.package-summary{background:var(--ivory-dim);padding:1rem;border-radius:8px;margin:1rem 0;font-size:.9rem}.package-summary p{white-space:pre-line}.ticket-filter{display:flex;gap:1rem;flex-wrap:wrap;margin:1rem 0}.ticket-filter label{display:flex;flex-direction:column;gap:.4rem;font-size:.8rem}.ticket-filter input,.ticket-filter select{padding:.65rem .8rem;border:1px solid #cdbb98;border-radius:6px;background:#fffdf8;font:inherit}.enquiry-meta{display:flex;gap:1.5rem;flex-wrap:wrap;margin:.7rem 0;font-size:.85rem}

.package-admin-rates{margin-top:2rem;padding:1.5rem;border:1px solid #d8c9ae;border-radius:10px}.package-admin-rates summary{cursor:pointer;font-size:1.1rem}.package-admin-rates p{margin:1rem 0;font-size:.9rem;color:#756550}.package-admin-rates .form-row{flex-wrap:wrap}.package-admin-rates label{min-width:220px;flex:1}.assigned-label{display:block;margin-top:.3rem;color:#756550}.ticket-filter button{align-self:end}.package-summary{background:#f1ecdf;padding:1rem;margin:1rem 0;border-radius:8px}.package-summary p{white-space:pre-line}

.required-marker{color:#b42330!important;font-weight:700;margin-inline-start:.25em;line-height:1}.field-label-text{display:inline}

.admin-guide-link{display:block;padding:12px 16px;color:var(--gold-light);font-size:13px;text-decoration:none;border-top:1px solid rgba(201,161,93,.15)}
