.couple-page-body { min-height: 100vh; }
.couple-shell { overflow: visible; }
.couple-header { height: 90px; }
.couple-home-link { padding: 11px 13px; background: #1d1c1a; color: #fff; text-decoration: none; font-size: 10px; border-radius: 3px; }
.couple-home-link span { margin-left: 8px; color: #ead8c6; }
.couple-main { max-width: 790px; margin: 0 auto; padding: 76px 0 72px; }
.couple-intro { margin-bottom: 30px; text-align: center; }
.couple-intro .eyebrow { justify-content: center; }
.couple-intro h1 { margin: 0 0 12px; font: 500 clamp(38px, 6vw, 57px)/1.1 var(--serif); letter-spacing: -.035em; }
.couple-intro > p:last-child { max-width: 490px; margin: 0 auto; color: var(--muted); font-size: 12px; line-height: 1.8; }
.couple-panel { width: min(100%, 430px); margin: 0 auto; padding: 34px; background: #fffefa; border: 1px solid #e9e4db; box-shadow: 0 14px 38px rgba(59,51,42,.06); text-align: center; }
.couple-lock { color: var(--wine); font-size: 24px; }
.couple-panel h2 { margin: 10px 0 9px; font-size: 27px; }
.couple-panel > p { margin: 0 auto 21px; color: var(--muted); font-size: 11px; line-height: 1.7; }
.couple-field { display: block; margin: 0 0 7px; text-align: left; font-size: 10px; font-weight: 600; }
#couple-password { width: 100%; height: 43px; padding: 0 12px; border: 1px solid #e5dfd6; outline: none; background: white; font-size: 12px; }
#couple-password:focus { border-color: #9a7773; }
.couple-submit { width: 100%; margin-top: 13px; }
.couple-message { margin: 14px 0 0 !important; padding: 11px; background: #f7eeeb; color: #884e48 !important; }
.couple-collection-heading { display: flex; justify-content: space-between; align-items: end; gap: 14px; margin-bottom: 20px; }
.couple-collection-heading h2 { font-size: 36px; }
.couple-logout { padding: 9px 12px; border: 1px solid #d8cfc4; background: transparent; color: var(--ink); cursor: pointer; font-size: 10px; }
.couple-status { margin: 0 0 14px; color: var(--muted); font-size: 11px; line-height: 1.7; }
.couple-upload-list { display: grid; gap: 13px; }
.couple-upload-card { padding: 19px; background: #fffefa; border: 1px solid #e9e4db; }
.couple-upload-heading { display: flex; justify-content: space-between; gap: 12px; align-items: start; margin-bottom: 10px; }
.couple-upload-heading h3 { margin: 0; font: 21px/1.25 var(--serif); }
.couple-upload-heading time { flex: none; padding-top: 4px; color: #908980; font-size: 9px; }
.couple-upload-note { margin: 0 0 14px; color: var(--muted); font: italic 13px/1.6 var(--serif); }
.couple-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(145px, 1fr)); gap: 10px; }
.couple-media-item { min-width: 0; overflow: hidden; background: #f4f0e9; }
.couple-media-item img, .couple-media-item video { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: #e8e3da; }
.couple-media-meta { display: flex; flex-direction: column; gap: 5px; padding: 8px; }
.couple-media-name { overflow: hidden; color: #655f59; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.couple-download { color: var(--wine); font-size: 9px; text-underline-offset: 3px; }
.couple-delete-upload { margin-top: 13px; padding: 7px 10px; border: 1px solid #e2d6d0; background: transparent; color: #805b54; cursor: pointer; font-size: 9px; }
.couple-delete-upload:hover { background: #f7eeeb; }
.couple-delete-upload:disabled { opacity: .55; cursor: wait; }
.couple-footnote { margin: 30px auto 0; max-width: 510px; color: #989188; text-align: center; font-size: 9px; line-height: 1.7; }
.couple-footer { min-height: 75px; border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; color: #8a837b; font-size: 8px; letter-spacing: .16em; }
.couple-footer > span:first-child { color: var(--wine); font: 21px var(--serif); letter-spacing: -3px; }
.couple-footer > span:first-child span { font-size: 11px; }
@media (max-width: 680px) {
  .couple-header { height: auto; min-height: 78px; padding: 12px 0; gap: 10px; }
  .couple-home-link { padding: 9px 10px; font-size: 9px; }
  .couple-main { padding: 55px 0 50px; }
  .couple-panel { padding: 25px 19px; }
  .couple-collection-heading h2 { font-size: 29px; }
  .couple-upload-card { padding: 14px; }
  .couple-upload-heading { display: block; }
  .couple-upload-heading time { display: block; margin-top: 6px; }
  .couple-media-grid { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 7px; }
}
