@import "tailwindcss";

:root { --ink:#102f38; --teal:#0e8f7f; --mint:#dff3ee; --paper:#f4f6f5; --line:#dce5e2; --muted:#64777b; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Arial,"PingFang SC","Microsoft YaHei",sans-serif; }
button,input,textarea { font:inherit; }
.hero { position:relative; overflow:hidden; color:white; background:linear-gradient(145deg,#082d37 0%,#0d4650 62%,#0b766d 100%); }
.hero::before { content:""; position:absolute; width:360px; height:360px; border:1px solid rgba(255,255,255,.15); border-radius:50%; right:-120px; top:-190px; box-shadow:0 0 0 56px rgba(255,255,255,.035),0 0 0 112px rgba(255,255,255,.025); }
.hero-inner { width:min(760px,100%); margin:auto; padding:46px 24px 30px; position:relative; }
.eyebrow { margin:0 0 12px; color:#62d7c4; font-size:12px; font-weight:700; letter-spacing:.2em; }
.hero h1 { margin:0; font-size:clamp(36px,10vw,64px); line-height:1.05; letter-spacing:-.04em; }
.lead { margin:13px 0 28px; font-size:20px; color:#cceae5; letter-spacing:.18em; }
.event-meta { border-top:1px solid rgba(255,255,255,.22); padding-top:20px; display:grid; grid-template-columns:1fr; gap:15px; }
.event-meta div { display:flex; flex-direction:column; gap:4px; }
.event-meta span { font-size:12px; color:#9ec4c3; }
.event-meta strong { font-size:15px; line-height:1.4; }
.page-shell { width:min(760px,100%); margin:auto; padding:20px 14px 56px; }
.schedule-card,.rsvp-form,.success-card { background:white; border:1px solid var(--line); border-radius:18px; box-shadow:0 8px 28px rgba(16,47,56,.06); }
.schedule-card { padding:22px 20px; margin-bottom:16px; }
.section-heading { display:flex; align-items:center; gap:10px; }
.section-heading h2 { font-size:20px; margin:0; }
.step { font-size:11px; color:white; background:var(--teal); padding:5px 9px; border-radius:999px; font-weight:700; }
.timeline { margin-top:18px; }
.timeline-row { display:grid; grid-template-columns:105px 1fr; gap:14px; position:relative; padding:0 0 15px; }
.timeline-row:last-child { padding-bottom:0; }
.timeline-row time { color:var(--teal); font-size:14px; font-weight:700; }
.timeline-row p { margin:0; font-size:14px; line-height:1.55; }
.rsvp-form { overflow:hidden; }
.form-intro { padding:28px 20px 22px; background:linear-gradient(135deg,#fff,#f4fbf9); border-bottom:1px solid var(--line); }
.form-intro h2 { margin:0 0 8px; font-size:28px; }
.form-intro>p:last-child { color:var(--muted); margin:0; font-size:14px; }
b { color:#d25c4c; }
fieldset { border:0; margin:0; padding:26px 20px; display:grid; grid-template-columns:1fr; gap:19px; border-bottom:1px solid var(--line); }
legend { float:left; width:100%; margin:0 0 22px; padding:0; font-size:19px; font-weight:700; }
legend+* { clear:both; }
legend span { color:var(--teal); font-size:12px; margin-right:8px; letter-spacing:.08em; }
.field { display:flex; flex-direction:column; gap:8px; min-width:0; }
.field label { font-size:14px; font-weight:700; }
.field small { color:var(--muted); font-size:12px; line-height:1.5; }
input:not([type=radio]):not([type=checkbox]),textarea { width:100%; border:1px solid #cedbd7; background:#fbfcfc; border-radius:10px; padding:13px 12px; min-height:48px; color:var(--ink); outline:none; transition:.2s; }
textarea { resize:vertical; }
input:focus,textarea:focus { border-color:var(--teal)!important; box-shadow:0 0 0 3px rgba(14,143,127,.11); background:white!important; }
input::placeholder,textarea::placeholder { color:#98a7a8; }
.choice-row { display:flex; gap:8px; flex-wrap:wrap; }
.choice { position:relative; cursor:pointer; }
.choice input { position:absolute; opacity:0; }
.choice span { display:block; border:1px solid #cedbd7; border-radius:9px; padding:10px 16px; min-width:76px; text-align:center; font-size:14px; background:#fff; transition:.15s; }
.choice input:checked+span { color:#087569; border-color:var(--teal); background:var(--mint); font-weight:700; }
.choice input:focus-visible+span { outline:2px solid var(--teal); outline-offset:2px; }
.subsection { grid-column:1/-1; border-top:1px dashed var(--line); padding-top:20px; margin-top:2px; }
.subsection h3 { margin:0; font-size:15px; color:#3f5d62; }
.consent { display:flex; gap:11px; align-items:flex-start; padding:24px 20px 12px; font-size:13px; line-height:1.65; color:#53676b; cursor:pointer; }
.consent input { width:18px; height:18px; margin-top:1px; accent-color:var(--teal); flex:0 0 auto; }
.submit-button,.secondary-button { border:0; border-radius:12px; cursor:pointer; font-weight:700; min-height:50px; }
.submit-button { display:block; width:calc(100% - 40px); margin:8px 20px 12px; background:var(--teal); color:#fff; box-shadow:0 6px 16px rgba(14,143,127,.22); }
.submit-button:hover { background:#087d70; }
.submit-button:disabled { opacity:.65; cursor:wait; }
.privacy-note { text-align:center; margin:0 20px 24px; color:#8a999b; font-size:12px; }
.error-message { margin:0 20px 10px; padding:10px 12px; color:#a43e31; background:#fff0ed; border-radius:8px; font-size:13px; }
.success-card { text-align:center; padding:55px 24px; }
.success-mark { width:64px; height:64px; border-radius:50%; margin:0 auto 20px; display:grid; place-items:center; background:var(--mint); color:var(--teal); font-size:34px; font-weight:700; }
.success-card h2 { margin:0 0 12px; font-size:30px; }
.success-card>p:not(.eyebrow) { color:var(--muted); line-height:1.7; }
.success-card small { display:block; color:#8a999b; margin-top:12px; }
.secondary-button { margin-top:28px; padding:0 22px; color:var(--teal); background:var(--mint); }
.weather-note { margin:18px 4px 0; border-left:3px solid var(--teal); background:#e7f2ef; padding:16px; }
.weather-note strong { font-size:14px; }
.weather-note p { color:#536b6f; font-size:13px; line-height:1.7; margin:6px 0 0; }
footer { text-align:center; padding:0 20px 36px; color:#89999b; font-size:12px; }
@media (min-width:640px) {
  .hero-inner { padding:62px 32px 36px; }
  .event-meta { grid-template-columns:.85fr 1.4fr; }
  .page-shell { padding:28px 20px 72px; }
  .schedule-card { padding:26px 28px; }
  fieldset { grid-template-columns:1fr 1fr; padding:32px 30px; column-gap:22px; }
  .form-intro { padding:34px 30px 26px; }
  .full { grid-column:1/-1; }
  .consent { padding:26px 30px 14px; }
  .submit-button { width:calc(100% - 60px); margin-left:30px; margin-right:30px; }
}

/* Admin dashboard */
.admin-page { min-height:100vh; width:min(1180px,100%); margin:auto; padding:34px 18px 60px; }
.admin-header { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:28px; }
.admin-header h1 { margin:0 0 8px; font-size:clamp(30px,5vw,48px); letter-spacing:-.04em; }
.admin-header>div>p:last-child { margin:0; color:var(--muted); }
.admin-user { display:flex; gap:12px; align-items:center; font-size:13px; background:#fff; border:1px solid var(--line); border-radius:999px; padding:9px 12px 9px 16px; white-space:nowrap; }
.admin-user a { color:var(--teal); text-decoration:none; font-weight:700; }
.stats-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-bottom:20px; }
.stats-grid article { min-height:116px; background:#fff; border:1px solid var(--line); border-radius:15px; padding:18px; position:relative; overflow:hidden; }
.stats-grid article:first-child { background:linear-gradient(145deg,#0b3741,#0b7169); color:#fff; border:0; }
.stats-grid span { display:block; font-size:13px; color:var(--muted); margin-bottom:12px; }
.stats-grid article:first-child span { color:#b9d9d6; }
.stats-grid strong { font-size:34px; line-height:1; }
.stats-grid strong i { font-style:normal; font-size:20px; color:#92aaa9; margin:0 5px; }
.stats-grid small { color:#829496; margin-left:5px; }
.admin-panel { background:#fff; border:1px solid var(--line); border-radius:18px; overflow:hidden; box-shadow:0 10px 32px rgba(16,47,56,.05); }
.admin-toolbar { display:flex; flex-direction:column; gap:18px; padding:22px 20px; border-bottom:1px solid var(--line); }
.admin-toolbar h2 { margin:0 0 4px; font-size:21px; }
.admin-toolbar p { margin:0; color:var(--muted); font-size:13px; }
.toolbar-actions { display:flex; flex-direction:column; gap:10px; }
.admin-search { position:relative; }
.admin-search span { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:#829395; font-size:12px; }
.admin-search input { min-width:260px; padding-left:52px!important; min-height:42px!important; }
.export-button { display:grid; place-items:center; min-height:42px; padding:0 16px; border-radius:10px; background:var(--teal); color:#fff; text-decoration:none; font-size:14px; font-weight:700; }
.guest-record { border-bottom:1px solid var(--line); }
.guest-record:last-child { border-bottom:0; }
.guest-record summary { list-style:none; cursor:pointer; display:flex; flex-direction:column; gap:13px; padding:18px 20px; }
.guest-record summary::-webkit-details-marker { display:none; }
.guest-record summary:hover { background:#f7faf9; }
.guest-main { display:flex; align-items:center; gap:12px; min-width:0; }
.guest-main strong { display:block; font-size:16px; }
.guest-main p { margin:4px 0 0; color:var(--muted); font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.guest-badge { flex:0 0 auto; color:#087568; background:var(--mint); border-radius:7px; padding:6px 8px; font-size:11px; font-weight:700; }
.guest-badge.media { color:#77512a; background:#fff0d9; }
.guest-quick { display:flex; gap:7px; flex-wrap:wrap; }
.guest-quick span { background:#f1f5f4; color:#50676b; border-radius:999px; padding:6px 10px; font-size:12px; }
.record-detail { background:#f7faf9; padding:20px; display:grid; gap:20px; border-top:1px solid var(--line); }
.record-detail section { min-width:0; }
.record-detail h3 { margin:0 0 12px; font-size:14px; }
.record-detail dl { margin:0; display:grid; gap:9px; }
.record-detail dl div { display:grid; grid-template-columns:80px 1fr; gap:8px; font-size:12px; line-height:1.55; }
.record-detail dt { color:#809194; }
.record-detail dd { margin:0; overflow-wrap:anywhere; }
.empty-state { padding:70px 20px; text-align:center; color:var(--muted); }
.admin-footnote { text-align:center; color:#829395; font-size:12px; margin:20px 0 0; }
.admin-denied { min-height:100vh; display:grid; place-items:center; padding:30px; text-align:center; }
.admin-denied>div { background:#fff; border:1px solid var(--line); border-radius:18px; padding:50px 35px; max-width:500px; }
.admin-denied h1 { margin:0 0 12px; }
.admin-denied p:not(.eyebrow) { color:var(--muted); }
.admin-denied a { display:inline-block; margin-top:16px; color:var(--teal); font-weight:700; }
@media (min-width:720px) {
  .admin-page { padding:52px 28px 80px; }
  .stats-grid { grid-template-columns:repeat(4,1fr); }
  .stats-grid article { min-height:132px; padding:22px; }
  .admin-toolbar { flex-direction:row; align-items:center; justify-content:space-between; padding:24px 26px; }
  .toolbar-actions { flex-direction:row; }
  .guest-record summary { flex-direction:row; align-items:center; justify-content:space-between; padding:19px 26px; }
  .record-detail { grid-template-columns:1fr 1.3fr 1fr; padding:24px 26px; }
}
