@font-face{font-family:"Cormorant Garamond";font-weight:500;font-style:normal;font-display:swap;src:url(../assets/fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-weight:600;font-style:normal;font-display:swap;src:url(../assets/fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-weight:500;font-style:italic;font-display:swap;src:url(../assets/fonts/cormorant-garamond-latin-500-italic.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(../assets/fonts/inter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:500;font-display:swap;src:url(../assets/fonts/inter-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:600;font-display:swap;src:url(../assets/fonts/inter-latin-600-normal.woff2) format("woff2")}

:root{--copper:#E89E7D;--charcoal:#171716;--black:#101010;--ivory:#F7F5F0;--white:#fff;--gold:#B99A62;--gold-d:#8f7340;--grey:#77756F;--border:#E6E2D9;--err:#a3281f;--ok:#2f6b3f;
--serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;--sans:Inter,system-ui,"Segoe UI",Arial,sans-serif;--r:6px}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font:400 16px/1.5 var(--sans);color:var(--charcoal);background:var(--ivory);-webkit-text-size-adjust:100%}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
button,input,select{font:inherit;color:inherit}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;min-height:44px;padding:.6rem 1.3rem;border:1.5px solid var(--charcoal);border-radius:var(--r);background:var(--charcoal);color:var(--ivory);font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.btn:hover{background:var(--black)}
.btn.ghost{background:transparent;color:var(--charcoal);border-color:var(--border)}
.btn.ghost:hover{border-color:var(--charcoal)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--black)}
.btn.gold:hover{background:#c9ab74}
.btn.danger{background:transparent;color:var(--err);border-color:#e3c3bf}
.btn.danger:hover{background:var(--err);color:#fff}
.btn.sm{min-height:38px;padding:.35rem .9rem;font-size:.9rem}
.btn.big{min-height:60px;width:100%;font-size:1.1rem;letter-spacing:.01em}
.btn[disabled]{opacity:.65;cursor:progress}
.spin{display:none;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:rot .7s linear infinite}
.btn.loading .spin{display:inline-block}
@keyframes rot{to{transform:rotate(360deg)}}

/* ---- guest layout ---- */
.guest{display:grid;grid-template-columns:minmax(320px,5fr) 6fr;min-height:100vh;min-height:100dvh;position:relative}
.brand-panel{background:var(--charcoal);color:var(--ivory);padding:clamp(1.5rem,4vw,3.5rem);display:flex;flex-direction:column;justify-content:space-between;gap:2rem;border-right:1px solid #2c2b28}
.brand-copy h1{font:500 clamp(2.8rem,5.2vw,4.8rem)/1.02 var(--serif);margin:0 0 1.4rem;letter-spacing:-.012em;color:var(--ivory)}
.tagline{font:italic 500 clamp(1.35rem,2.1vw,1.85rem)/1.35 var(--serif);color:#dcd6c8;margin:0}
.rule{width:56px;height:1px;border:0;background:var(--copper);margin:2.2rem 0 1.1rem}
.welcome{font-size:.8rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:0}
.event-line{margin:.9rem 0 0;color:#8d8a82;font-size:.85rem;min-height:1.3em}
.logo-btn img{display:block;height:clamp(64px,9vh,88px);width:auto;max-width:100%;pointer-events:none}
.logo-btn{background:none;border:0;padding:0;cursor:default;align-self:flex-start;-webkit-tap-highlight-color:transparent;user-select:none}
.brand-foot{color:#8d8a82;font-size:.85rem;margin:0}
.form-panel{display:flex;align-items:center;justify-content:center;padding:clamp(1.25rem,3vw,3rem);overflow-y:auto}
#regForm{width:100%;max-width:620px}
#regForm h2{font:600 2.3rem/1.1 var(--serif);margin:0 0 .35rem}
.sub{color:var(--grey);margin:0 0 1.4rem;font-size:.95rem}
.field{margin-bottom:1rem}
label{display:block;font-weight:500;font-size:.9rem;margin-bottom:.35rem}
.req{color:var(--err)}.opt{color:var(--grey);font-weight:400;font-size:.8rem;margin-left:.35rem}
input[type=text],input[type=email],input[type=tel],input[type=password],input[type=search],input[type=date],select{width:100%;min-height:52px;padding:.65rem .9rem;background:var(--white);border:1.5px solid var(--border);border-radius:var(--r);transition:border-color .15s}
input::placeholder{color:#9a968c;opacity:1}
input:hover,select:hover{border-color:#cfc9bb}
input:focus,select:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px rgba(185,154,98,.28)}
input[aria-invalid=true]{border-color:var(--err)}
.err{color:var(--err);font-size:.85rem;margin:.3rem 0 0;min-height:0}
.err:empty{display:none}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.check{display:flex;gap:.8rem;align-items:flex-start;font-weight:400;padding:.5rem 0 1.2rem;cursor:pointer}
.check input{width:26px;height:26px;margin:0;accent-color:var(--charcoal);flex:none}
.privacy{color:var(--grey);font-size:.8rem;margin:1rem 0 0;max-width:60ch}
.dup{background:#fbf3df;border:1.5px solid var(--gold);border-radius:var(--r);padding:1rem;margin-bottom:1rem}
.dup p{margin:0 0 .8rem;font-size:.92rem}.dup-actions{display:flex;gap:.6rem;justify-content:flex-end}
.form-error{background:#fbeceb;color:var(--err);border:1.5px solid #e3c3bf;border-radius:var(--r);padding:.8rem 1rem;margin:0 0 1rem;font-size:.92rem}
.net{position:fixed;right:14px;bottom:12px;font-size:.75rem;padding:.2rem .6rem;border-radius:99px;background:var(--white);border:1px solid var(--border);color:var(--grey)}
.net::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:.4rem}
.net.off::before{background:var(--gold)}

/* ---- success ---- */
.success{position:fixed;inset:0;z-index:50;background:var(--charcoal);color:var(--ivory);display:grid;place-items:center;text-align:center;padding:2rem;animation:fade .4s ease}
@keyframes fade{from{opacity:0}to{opacity:1}}
.success-inner{max-width:640px;width:100%}
.star{color:var(--gold);font-size:2.6rem;line-height:1}
.success h2{font:500 clamp(2.6rem,6vw,4.4rem)/1.05 var(--serif);margin:.8rem 0 .4rem}
.s-lead{font:italic 500 1.9rem var(--serif);color:var(--gold);margin:0 0 1.2rem}
.s-body{color:#d7d3ca;font-size:1.1rem;max-width:46ch;margin:0 auto 1.8rem}
.s-brand{font:600 1.1rem var(--serif);letter-spacing:.2em;text-transform:uppercase;margin:0 0 2rem}
.s-brand span{display:block;font:400 .78rem var(--sans);letter-spacing:.28em;color:var(--gold);margin-top:.3rem}
.success .btn{max-width:420px}
.s-bar{height:2px;background:#33322e;margin:2rem auto 0;max-width:420px}.s-bar i{display:block;height:100%;width:100%;background:var(--gold);transform-origin:left}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---- admin ---- */
.admin{min-height:100vh;padding:1.2rem clamp(1rem,3vw,2.2rem) 3rem;background:var(--ivory)}
.a-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}
.a-title{display:flex;gap:.8rem;align-items:center}
.a-title strong{font:600 1.7rem var(--serif);display:block;line-height:1}
.a-title small{color:var(--grey);font-size:.78rem}.a-title small.warn{color:var(--err)}
.mark{width:48px;height:48px;border-radius:50%;background:var(--charcoal);padding:0;display:block}
.a-tools{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.a-tools select{min-height:38px;width:auto;max-width:260px;padding:.3rem .7rem}
.reminder{background:#fbf3df;border:1px solid var(--gold);border-radius:var(--r);padding:.7rem 1rem;margin-bottom:1rem;font-size:.9rem}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.2rem}
.stat{background:var(--white);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:var(--r);padding:1rem 1.2rem}
.stat b{display:block;font:600 2.6rem/1 var(--serif)}.stat span{color:var(--grey);font-size:.85rem}
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:.8rem}
.toolbar input[type=search]{flex:1 1 240px;min-height:42px}.toolbar select{width:auto;min-height:42px;padding:.3rem .7rem}
.grow{flex:1}.count{color:var(--grey);font-size:.88rem}
.table-wrap{overflow-x:auto;background:var(--white);border:1px solid var(--border);border-radius:var(--r)}
table{border-collapse:collapse;width:100%;font-size:.88rem}
th,td{text-align:left;padding:.65rem .8rem;border-bottom:1px solid var(--border);white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
th{background:#faf8f3;font-weight:600;font-size:.78rem;color:var(--grey);position:sticky;top:0}
tbody tr:hover{background:#fdfcf9}
td.act{display:flex;gap:.4rem}
.pill{display:inline-block;padding:.1rem .55rem;border-radius:99px;font-size:.78rem;background:#eee;color:var(--grey)}.pill.yes{background:#e3efe5;color:var(--ok)}
.empty{padding:2.5rem;text-align:center;color:var(--grey);margin:0}

/* ---- dialogs ---- */
dialog{max-height:92vh;max-height:92dvh;overflow:auto;border:0;border-radius:10px;padding:1.6rem;width:min(520px,92vw);background:var(--ivory);color:var(--charcoal);box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(16,16,16,.6)}
dialog h3{font:600 1.7rem var(--serif);margin:0 0 .4rem}
dialog label{margin-top:.9rem}
.dlg-actions{display:flex;gap:.6rem;justify-content:flex-end;flex-wrap:wrap;margin-top:1.3rem}
dl{display:grid;grid-template-columns:140px 1fr;gap:.5rem 1rem;margin:1rem 0 0;font-size:.92rem}dt{color:var(--grey)}dd{margin:0;word-break:break-word}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--charcoal);color:var(--ivory);padding:.7rem 1.2rem;border-radius:var(--r);opacity:0;pointer-events:none;transition:.25s;z-index:100;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%)}.toast.bad{background:var(--err)}

/* ---- responsive ---- */
@media (max-width:900px){
  .logo-btn img{height:48px}
  .guest{grid-template-columns:1fr}
  .rule,.event-line{display:none}.net{position:static;margin:0 auto 1.2rem;width:max-content}.welcome{font-size:.72rem}
  .brand-panel{padding:1.2rem 1.4rem;gap:.8rem}.brand-copy h1{font-size:2rem;margin-bottom:.5rem}.tagline{font-size:1.15rem}.welcome{margin-top:.7rem}.brand-foot{display:none}
  .stats{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){.row2{grid-template-columns:1fr}dl{grid-template-columns:1fr}}
@media (min-width:901px) and (max-height:760px){.field{margin-bottom:.7rem}#regForm h2{font-size:1.9rem}.sub{margin-bottom:.9rem}.privacy{margin-top:.6rem}}

@media (min-width:561px) and (max-width:900px){.logo-btn img{height:60px}.brand-panel{padding:1.6rem 2.4rem 1.8rem}.brand-copy h1{font-size:2.9rem}.tagline{font-size:1.45rem}.welcome{font-size:.78rem}}

.stat b,#regForm h2,.a-title strong{font-variant-numeric:lining-nums}
table{font-size:.85rem}
th,td{padding:.6rem .6rem}
td:nth-child(3){max-width:200px}td:nth-child(5){max-width:140px}td:nth-child(7){max-width:150px}
td.act{gap:.3rem}td.act .btn.sm{min-height:32px;padding:.2rem .6rem;font-size:.8rem}
.dup:not([hidden]) ~ #submitBtn,.dup:not([hidden]) ~ .privacy{display:none}

/* ---- system health ---- */
.health{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
.chip{display:inline-flex;align-items:center;gap:.5rem;font-size:.8rem;padding:.3rem .8rem;border-radius:99px;background:var(--white);border:1px solid var(--border);color:var(--grey)}
.chip::before{content:"";width:8px;height:8px;border-radius:50%;background:#b9b5ab}
.chip.ok::before{background:var(--ok)}.chip.warn{border-color:#e3c3bf;color:var(--err);font-weight:500}.chip.warn::before{background:var(--err)}
.alert{display:flex;gap:1.2rem;align-items:center;justify-content:space-between;flex-wrap:wrap;background:#fbeceb;border:1.5px solid #e3c3bf;border-left:5px solid var(--err);border-radius:var(--r);padding:1rem 1.2rem;margin-bottom:1rem}
.alert strong{color:var(--err)}.alert p{margin:.3rem 0 0;font-size:.88rem;color:#5b3430;max-width:70ch}
.alert-actions{display:flex;gap:.5rem;flex-wrap:wrap}

/* ---- touch + small screens ---- */
@media (pointer:coarse),(max-width:1200px){.btn.sm,.a-tools select,.toolbar select,.toolbar input[type=search]{min-height:46px}td.act .btn.sm{min-height:44px}}
@media (max-width:1200px){
  .a-head{align-items:flex-start}.a-tools{width:100%}.a-tools select{flex:1 1 100%;max-width:none}.a-tools .btn{flex:1}
  .toolbar select,.toolbar .btn{flex:1 1 150px;width:auto}.toolbar input[type=search]{flex:1 1 100%}
  .exports .count{flex:1 1 100%}.exports .grow{display:none}.exports .btn{flex:1 1 140px}
  .table-wrap{background:none;border:0;overflow:visible}
  table,tbody{display:block}thead{display:none}
  tbody{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:.9rem}
  tbody tr{display:grid;grid-template-columns:1fr auto;gap:.25rem .8rem;background:var(--white);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:var(--r);padding:1rem 1.1rem}
  tbody tr:hover{background:var(--white)}
  td{display:block;border:0;padding:0;max-width:none;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}
  td:nth-child(n){max-width:none}
  td:nth-child(1){grid-column:2;grid-row:1;color:var(--grey);font-size:.8rem;text-align:right}td:nth-child(1)::before{content:"No. "}
  td:nth-child(2){grid-column:1;grid-row:1;font:600 1.4rem/1.2 var(--serif)}
  td:nth-child(3),td:nth-child(4){grid-column:1/-1;font-size:.92rem}
  td:nth-child(n+5):nth-child(-n+9){grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.85rem;text-align:right}
  td:nth-child(n+5):nth-child(-n+9)::before{content:attr(data-label);color:var(--grey);font-size:.78rem;text-align:left}
  td:nth-child(5){margin-top:.6rem;padding-top:.7rem;border-top:1px solid var(--border)}
  td.act{grid-column:1/-1;display:flex;gap:.6rem;margin-top:.7rem}td.act .btn{flex:1;min-height:44px}
}
@media (max-width:560px){.stat b{font-size:2.1rem}.stat{padding:.8rem 1rem}.alert{padding:.9rem 1rem}tbody{grid-template-columns:1fr}.admin{padding:1rem .9rem 2.5rem}}

.success{overflow-y:auto}
@media (max-height:520px){
  .success{place-items:start center;padding:1rem}.star{display:none}
  .success h2{font-size:2.2rem;margin:0 0 .2rem}.s-lead{font-size:1.4rem;margin-bottom:.5rem}
  .s-body{font-size:.98rem;max-width:62ch;margin-bottom:.8rem}.s-brand{margin-bottom:.8rem}
  .success .btn.big{min-height:52px}.s-bar{margin-top:.8rem}
}
