@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Great+Vibes&family=Montserrat:wght@400;500;600;700&display=swap');
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:linear-gradient(145deg,#021e18,#07533f 52%,#032820);color:#fffdf8;font-family:Montserrat,sans-serif}.shell{width:min(900px,100%);margin:auto;padding:18px 12px 45px}.card{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);border-radius:28px;overflow:hidden;box-shadow:0 22px 65px #0004}.hero{text-align:center;padding:38px 20px 25px}.hero h1{font:400 75px/.9 "Great Vibes",cursive;margin:12px}.quince{font:600 22px "Cormorant Garamond";text-transform:uppercase;letter-spacing:.24em}.welcome{font:500 20px/1.45 "Cormorant Garamond";max-width:590px;margin:20px auto}.content{padding:0 18px 25px}.panel{background:#00140f38;padding:18px;border-radius:19px}.counter{text-align:center;font:600 18px "Cormorant Garamond";color:#d6f3e7;margin-bottom:14px}label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;margin:12px 0 6px}input,textarea,select{width:100%;padding:12px;border-radius:11px;border:1px solid #ffffff33;background:#07503d;color:white}textarea{min-height:75px}.btn{border:0;border-radius:13px;padding:13px 15px;font-weight:700;cursor:pointer}.primary{background:#fffdf8;color:#07503d}.secondary{background:#0d8968;color:white}.ghost{background:#ffffff14;color:white;border:1px solid #ffffff26}.danger{background:#793e45;color:white}.wide{width:100%;margin-top:10px}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:13px}.photo{position:relative;aspect-ratio:1;border-radius:11px;overflow:hidden;background:#064534;border:1px solid #ffffff21}.photo img{width:100%;height:100%;object-fit:cover}.photo.sel{outline:3px solid #d4f4e7;outline-offset:-3px}.who{position:absolute;left:5px;right:5px;bottom:5px;background:#000b;padding:5px;border-radius:6px;font-size:9px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.stat{padding:14px;border-radius:13px;background:#ffffff12}.stat b{display:block;font:600 26px "Cormorant Garamond"}.stat span{font-size:9px;text-transform:uppercase}.tools{display:flex;gap:7px;flex-wrap:wrap;margin:14px 0}.tools .btn,.tools select{width:auto}.message{padding:12px;margin-top:10px;border-radius:12px;background:#ffffff0f;font-size:11px}.nav{text-align:center;font-size:11px;margin-bottom:10px}.nav a{color:#cef0e2}.status{font-size:12px;margin-top:9px}.footer{text-align:center;font-size:10px;opacity:.55;padding:14px}.empty{text-align:center;padding:40px 15px;color:#cfe8df}.empty b{display:block;font:600 25px "Cormorant Garamond";margin-bottom:5px}@media(max-width:600px){.grid{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:1fr 1fr}.hero h1{font-size:62px}.content{padding:0 10px 14px}}
.file-input{display:none}.pick-head{display:flex;align-items:end;justify-content:space-between;gap:10px}.pick-head label{margin-bottom:6px}.pick-head span{font-size:10px;opacity:.75;margin-bottom:6px}.pick-actions{display:flex;gap:8px;flex-wrap:wrap}.review-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:12px}.review-item{position:relative;aspect-ratio:1;border-radius:13px;overflow:hidden;background:#063c30;border:1px solid #ffffff26}.review-item img{width:100%;height:100%;object-fit:cover}.review-item.invalid{outline:2px solid #d88}.review-item.done{outline:2px solid #bdebd9}.file-placeholder{height:100%;display:grid;place-items:center;font:700 16px "Cormorant Garamond";letter-spacing:.1em}.remove-photo{position:absolute;right:6px;top:6px;width:30px;height:30px;border:0;border-radius:50%;background:#001b16dc;color:white;font-size:22px;line-height:28px}.review-meta{position:absolute;left:0;right:0;bottom:0;padding:18px 7px 7px;background:linear-gradient(transparent,#000d);font-size:8px}.review-meta b,.review-meta span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.review-meta span{opacity:.85;margin-top:2px}.compact{padding:25px 20px 18px}.compact h2{font:600 34px "Cormorant Garamond";margin:10px}.admin-login{max-width:520px;margin:auto}.small{padding:8px 11px}.admin-tabs{display:flex;gap:8px;margin:13px 0}.submission{background:#ffffff0d;border:1px solid #ffffff18;border-radius:15px;padding:13px;margin-bottom:12px}.submission-head b{display:block;font:600 20px "Cormorant Garamond"}.submission-head span{font-size:9px;opacity:.7}.submission-message{margin:10px 0;padding:10px;border-left:3px solid #8ed9be;background:#ffffff0a;font-size:12px;line-height:1.45}.submission-photos{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.submission-photos a{aspect-ratio:1;overflow:hidden;border-radius:8px;background:#064534}.submission-photos img{width:100%;height:100%;object-fit:cover}@media(max-width:600px){.review-grid{grid-template-columns:repeat(3,1fr)}.submission-photos{grid-template-columns:repeat(4,1fr)}}

.event-filter{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 13px}

.submission-head{display:flex;justify-content:space-between;gap:8px;align-items:start}.submission-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}.sub-selected{outline:2px solid #d4f4e7}.badge{font:700 8px Montserrat,sans-serif;letter-spacing:.08em;padding:3px 5px;border-radius:6px;vertical-align:middle}.badge.event{background:#0d8968}.badge.test{background:#725c31}.photo-badge{position:absolute;top:5px;left:5px}.thumb-button{border:0;padding:0;aspect-ratio:1;overflow:hidden;border-radius:8px;background:#064534;cursor:pointer}.thumb-button img{width:100%;height:100%;object-fit:cover}.submission details{margin-top:9px;font-size:10px;opacity:.8}.details{padding:7px 0;overflow-wrap:anywhere}.admin-status{margin:13px 2px 0;opacity:.75}.viewer[hidden]{display:none}.viewer{position:fixed;inset:0;z-index:1000;background:#000e;display:flex;align-items:center;justify-content:center;padding:48px 45px 25px}.viewer-inner{max-width:min(1000px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center}.viewer img{max-width:100%;max-height:70vh;object-fit:contain}.viewer-meta{width:100%;padding:10px;text-align:center;font-size:11px}.viewer-actions{display:flex;gap:8px;justify-content:center}.viewer-actions a{text-decoration:none}.viewer-close{position:absolute;right:14px;top:10px;background:none;border:0;color:white;font-size:40px}.viewer-nav{position:absolute;top:45%;border:0;background:#ffffff18;color:white;font-size:48px;border-radius:12px;padding:5px 12px}.viewer-nav.prev{left:7px}.viewer-nav.next{right:7px}.viewer-nav:disabled{opacity:.2}.modal-open{overflow:hidden}@media(max-width:600px){.viewer{padding:52px 34px 18px}.viewer-nav{font-size:36px;padding:4px 8px}.submission-head{align-items:center}}


/* v0.6.3 — Ivy emerald + gold quinceañera palette */
:root{
  --ivy-emerald:#075c46;
  --ivy-emerald-deep:#043f31;
  --ivy-emerald-dark:#032f25;
  --ivy-gold:#d6b35a;
  --ivy-gold-light:#f0d98b;
  --ivy-gold-deep:#a98634;
  --ivy-cream:#fffaf0;
}
body{
  background:
    radial-gradient(circle at 50% -15%,rgba(214,179,90,.13),transparent 35%),
    linear-gradient(180deg,var(--ivy-emerald-deep),var(--ivy-emerald-dark));
  color:var(--ivy-cream);
}
.eyebrow,.kicker{color:var(--ivy-gold-light)!important}
h1,h2,h3{color:#fff}
.card,.panel{
  border-color:rgba(214,179,90,.42)!important;
  box-shadow:0 12px 35px rgba(0,0,0,.18),0 0 0 1px rgba(214,179,90,.06) inset;
}
.btn.primary{
  background:linear-gradient(180deg,var(--ivy-gold-light),var(--ivy-gold))!important;
  color:#243b2f!important;
  border-color:var(--ivy-gold-deep)!important;
  font-weight:800;
}
.btn.primary:hover,.btn.primary:focus{filter:brightness(1.04)}
.btn.secondary{
  border-color:var(--ivy-gold)!important;
  box-shadow:inset 0 0 0 1px rgba(214,179,90,.22);
}
.btn.ghost{border-color:rgba(214,179,90,.45)!important}
input:focus,textarea:focus,select:focus{
  outline:2px solid var(--ivy-gold)!important;
  border-color:var(--ivy-gold)!important;
}
.count,.stat b,.metric b{color:var(--ivy-gold-light)!important}
.progress>span,.progress-bar>span{background:linear-gradient(90deg,var(--ivy-gold-deep),var(--ivy-gold-light))!important}
.badge.event{background:var(--ivy-gold)!important;color:#26382f!important}
.badge.test{background:#715d35!important;color:#fff7df!important}
.sub-selected,.photo.sel{outline-color:var(--ivy-gold)!important}
.submission-message{border-left-color:var(--ivy-gold)!important}
a{color:var(--ivy-gold-light)}
.viewer{background:rgba(2,28,21,.96)!important}
.viewer-inner{border-color:rgba(214,179,90,.35)}
.viewer-nav{color:var(--ivy-gold-light)!important}
.viewer-close{color:var(--ivy-gold-light)!important}
hr{border-color:rgba(214,179,90,.28)}

/* v0.7 reliability UI */
.connectivity{min-height:18px;text-align:center;font-size:11px;color:var(--ivy-gold-light);margin:5px 0}
.pending{position:relative}.pending.uploading{outline:2px solid var(--ivy-gold)}.pending.done{outline:2px solid #80d9b2}.pending.failed,.pending.invalid{outline:2px solid #e8a59a}
.pstate{font-size:9px;min-height:14px;padding:3px}.remove:disabled{opacity:.35}
.success-card{margin:18px auto;padding:20px;max-width:680px;text-align:center;border:1px solid var(--ivy-gold);border-radius:18px;background:rgba(4,63,49,.94);box-shadow:0 12px 35px #0003}.success-card small{display:inline-block;margin:8px 0 12px;opacity:.75;overflow-wrap:anywhere}

/* v0.8 export & backup */
.export-actions{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0}.export-actions a{text-decoration:none}
.archive-note{padding:14px;border:1px solid rgba(214,179,90,.38);border-radius:12px;background:rgba(4,63,49,.55);margin:12px 0 18px;line-height:1.5}
#exportSubs{display:grid;gap:10px}.muted{opacity:.78}

/* v0.9 event experience */
html{background:var(--ivy-emerald-dark);-webkit-text-size-adjust:100%}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
button,input,textarea,select{font:inherit}.btn{min-height:46px;touch-action:manipulation}.btn:focus-visible,.remove-photo:focus-visible,.thumb-button:focus-visible,.viewer-close:focus-visible,.viewer-nav:focus-visible{outline:3px solid var(--ivy-gold-light);outline-offset:2px}
.choose-main{font-size:17px;padding:16px}.guest-panel{max-width:690px;margin:auto}.event-mode{display:inline-block;margin-bottom:8px;padding:5px 9px;border:1px solid var(--ivy-gold);border-radius:999px;color:var(--ivy-gold-light);font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.review-item.uploading{outline:2px solid var(--ivy-gold)}.review-item.failed,.review-item.invalid{outline:2px solid #ef9d91}.review-item.done{outline:2px solid #8bd8b7}.offline{color:#ffd99a}
.success-card b{display:block;font:600 27px "Cormorant Garamond";color:var(--ivy-gold-light)}.success-card p{line-height:1.5}.success-mark{width:54px;height:54px;margin:0 auto 12px;border:2px solid var(--ivy-gold);border-radius:50%;display:grid;place-items:center;font-size:30px;color:var(--ivy-gold-light)}
.event-dashboard{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0 14px}.event-dashboard>div{padding:12px;border:1px solid rgba(214,179,90,.25);border-radius:12px;background:#ffffff0a}.event-dashboard span{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.08em;opacity:.72}.event-dashboard b{display:block;margin-top:5px;font-size:11px;line-height:1.35;color:var(--ivy-gold-light)}
@media(max-width:600px){.shell{padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right))}.event-dashboard{grid-template-columns:1fr}.admin-tabs{overflow-x:auto;padding-bottom:3px}.admin-tabs .btn{flex:0 0 auto}.review-meta{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* v0.9.2 Turnstile visibility/gating fix */
.security-status{margin:14px 0 8px;text-align:center;font-size:11px;line-height:1.4;color:var(--ivy-gold-light)}
.turnstile-mount{min-height:0;display:flex;justify-content:center;align-items:center;margin:0 auto 14px;overflow:visible}
.turnstile-mount:not(:empty){min-height:65px}

/* v0.9.3 standard Turnstile integration */
.security-status{min-height:16px}
.turnstile-mount{overflow:visible}
.cf-turnstile{max-width:100%}

/* v0.9.7 My Photos */
.my-photos-link{display:inline-block;margin-top:9px;font:600 18px "Cormorant Garamond";font-weight:600}.my-back{display:flex;align-items:center;justify-content:center;text-decoration:none;margin-top:16px}.my-submissions{display:grid;gap:14px;margin-top:14px}.my-submission{padding:14px;border:1px solid rgba(214,179,90,.34);border-radius:14px;background:#ffffff08}.my-sub-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.my-sub-head b{color:var(--ivy-gold-light)}.my-sub-head span{font-size:10px;opacity:.72}.my-message{margin:9px 0 12px;line-height:1.45}.my-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.my-thumb{padding:0;border:1px solid rgba(214,179,90,.35);border-radius:10px;overflow:hidden;background:#000;aspect-ratio:1;cursor:pointer}.my-thumb img{width:100%;height:100%;object-fit:cover;display:block}.my-view-actions{display:flex;justify-content:center;padding:10px}.my-view-actions a{text-decoration:none}.viewer-inner>img{max-width:min(92vw,1100px);max-height:78vh;object-fit:contain;display:block;margin:auto}@media(max-width:600px){.my-grid{grid-template-columns:repeat(2,1fr)}.my-sub-head{display:block}.my-sub-head span{display:block;margin-top:3px}}

/* v0.9.8 pre-upload photo viewer */
.previewbox{width:100%;height:100%;display:block}.preview-photo{border:0;padding:0;background:transparent;cursor:zoom-in}.preview-photo img{display:block}.preview-photo:focus-visible{outline:3px solid var(--ivy-gold-light);outline-offset:-4px}.guest-preview{touch-action:pan-y}.guest-preview-inner{width:100%}.guest-preview .viewer-meta{color:#fffdf8;overflow-wrap:anywhere}.guest-preview .viewer-nav:disabled{visibility:hidden}@media(max-width:600px){.guest-preview{padding-left:42px;padding-right:42px}.guest-preview .viewer-inner>img{max-height:74vh}}
