:root{
  --ink:#0D0D0D; --chalk:#FAF8F2; --yolk:#FFDA44; --tang:#FFA85E; --blush:#FF7B7B;
  --ash:#8C8C8C; --rule:#EAE4D8;
}
*{box-sizing:border-box}
body{margin:0;font-family:'DM Sans',sans-serif;background:var(--chalk);color:var(--ink)}
a{color:var(--ink)}
button{cursor:pointer;font-family:inherit}
.hidden{display:none !important}

/* header */
.header{position:relative;overflow:hidden;background:var(--ink);padding:36px 24px}
.header-bg{position:absolute;inset:-10px;background-image:url(../assets/hyde-park.jpg);background-size:cover;background-position:center 40%;filter:blur(3px);transform:scale(1.08)}
.header-tint{position:absolute;inset:0;background:rgba(13,13,13,.6)}
.header-inner{position:relative;max-width:1100px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.logo{width:48px;height:48px;border-radius:50%;object-fit:cover}
.wordmark{font-family:'Fraunces',serif;font-weight:600;font-size:22px;color:#fff;letter-spacing:-.3px}
.tagline{font-family:'Fraunces',serif;font-style:italic;font-size:13px;color:var(--tang)}

/* intro */
.intro{background:#fff;border-bottom:1px solid var(--rule);padding:44px 24px}
.intro-inner{max-width:720px;margin:0 auto;text-align:center}
.intro-inner h1{font-family:'Fraunces',serif;font-weight:600;font-size:28px;margin:0 0 14px;line-height:1.2}
.intro-inner h1 em{font-style:italic;color:var(--tang)}
.intro-inner p{font-size:14.5px;color:#555;line-height:1.75;margin:0 0 12px}
.intro-inner .muted{font-size:13px;color:var(--ash)}

/* filter bar */
.filter-bar{background:#fff;border-bottom:1px solid var(--rule);padding:20px 24px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px;max-width:1148px;margin:0 auto}
.filter-label{font-size:10px;letter-spacing:1px;color:var(--ash);margin-right:12px}
.chip-row{display:inline-flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--rule);background:transparent;border-radius:20px;padding:6px 14px;font-size:13px}
.chip.active{background:var(--tang);border-color:var(--tang);color:var(--ink)}
.custom-range{display:flex;gap:10px;margin-top:10px;font-size:10px;letter-spacing:1px;color:var(--ash)}
.view-toggle{display:flex;border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.toggle-btn{padding:10px 22px;font-size:13px;border:none;background:#fff;color:var(--ink)}
.toggle-btn.active{background:var(--tang);font-weight:500}
.toggle-btn:first-child{border-right:1px solid var(--rule)}

main{max-width:1100px;margin:0 auto;padding:24px}
.view.hidden{display:none}

/* list */
.list-controls{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:12px}
.segmented{display:flex;border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.seg-btn{padding:8px 16px;font-size:13px;border:none;background:#fff}
.seg-btn.active{background:var(--ink);color:#fff}
.btn-primary{display:flex;align-items:center;gap:8px;background:var(--tang);color:var(--ink);padding:10px 18px;border-radius:24px;border:none;font-weight:500;font-size:13px}
.btn-primary.full{width:100%;justify-content:center;height:44px;margin-top:18px}
.btn-dark{background:var(--ink);color:#fff;border:none;border-radius:24px;font-weight:500;font-size:14px}
.btn-dark.full{width:100%;height:44px;margin-top:14px}
.meetup-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
@media(max-width:800px){.meetup-grid{grid-template-columns:1fr}}
.meetup-card{background:#fff;border:1px solid var(--rule);border-radius:14px;padding:20px}
.meetup-card h3{font-family:'Fraunces',serif;font-weight:600;font-size:16px;margin:0 0 8px}
.meetup-card .meta{font-size:13px;color:#666;margin-bottom:4px}
.meetup-card .muted{color:var(--ash);margin-bottom:14px}
.meetup-card .view-link{background:none;border:none;padding:0;color:var(--tang);font-weight:500;font-size:13px}
.meetup-card.past{opacity:.75}
.card-badge{display:inline-block;background:var(--rule);color:#666;font-size:10px;letter-spacing:1px;padding:4px 10px;border-radius:12px;margin-bottom:8px}
.empty-state{text-align:center;color:var(--ash);padding:60px 0}

/* map */
.map-hint{font-size:12px;color:var(--ash);margin:16px 0 8px}
.map-canvas{position:relative;height:520px;border-radius:16px;overflow:hidden}
.google-map{position:absolute;inset:0}

/* custom pins (existing meetups on the map + the create-meetup centre pin) */
.tamago-pin{width:36px;height:36px;border-radius:50%;border:2px solid var(--blush);overflow:hidden;background:var(--chalk);cursor:pointer}
.tamago-pin img{width:100%;height:100%;object-fit:cover;display:block}

@keyframes pinGlow{
  0%{box-shadow:0 0 0 0 rgba(255,123,123,0.75); transform:scale(1);}
  50%{box-shadow:0 0 0 18px rgba(255,123,123,0); transform:scale(1.12);}
  100%{box-shadow:0 0 0 0 rgba(255,123,123,0); transform:scale(1);}
}
.pin-glow{animation:pinGlow 1.4s ease-in-out infinite;}

.center-pin{position:absolute;top:50%;left:50%;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;cursor:pointer;pointer-events:auto;z-index:2}
.tamago-pin--create{opacity:.7;transition:transform .15s ease,filter .15s ease,opacity .15s ease}
.center-pin:hover{cursor:pointer}
.center-pin:hover .tamago-pin--create{transform:scale(1.08)}
.center-pin:hover .pin-bubble{transform:scale(1.05)}
.center-pin--outside{cursor:not-allowed}
.center-pin--outside .tamago-pin--create{filter:grayscale(1);opacity:.45}
.center-pin--outside:hover .tamago-pin--create,.center-pin--outside:hover .pin-bubble{transform:none}

.pin-bubble{position:relative;background:#fff;border:1.5px solid var(--ink);border-radius:10px;padding:6px 12px;margin-bottom:8px;font-family:'DM Sans',sans-serif;font-size:12px;color:var(--ink);white-space:nowrap;transition:transform .15s ease}
.pin-bubble::after{content:'';position:absolute;bottom:-6px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid var(--ink);z-index:1}
.pin-bubble::before{content:'';position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #fff;z-index:2}

/* choose-your-spot mode on the map */
.hint-choosing{display:none}
.view-map--choosing .hint-browse{display:none}
.view-map--choosing .hint-choosing{display:inline}
.center-pin--choosing{cursor:default}
.center-pin--choosing .tamago-pin--create{opacity:1;cursor:default}
.center-pin--choosing:hover .tamago-pin--create,.center-pin--choosing:hover .pin-bubble{transform:none}
/* long place names: the text span is clipped, not the bubble, so its tail stays */
.pin-bubble-text{display:block;max-width:min(300px,calc(100vw - 88px));overflow:hidden;text-overflow:ellipsis}
.center-pin .pin-bubble{box-shadow:0 2px 8px rgba(13,13,13,.12)}
.spot-search{position:absolute;top:12px;left:12px;right:12px;max-width:440px;margin:0 auto;z-index:3}
.spot-search input{width:100%;height:44px;border-radius:22px;border:1px solid var(--rule);background:#fff;padding:0 18px;font-family:'DM Sans',sans-serif;font-size:14px;color:var(--ink);box-shadow:0 2px 10px rgba(13,13,13,.15)}
.spot-search input:focus{outline:2px solid var(--tang);outline-offset:0}
.spot-bar{position:absolute;left:12px;right:12px;bottom:34px;display:flex;justify-content:center;gap:10px;z-index:3}
.spot-bar button{flex:1 1 0;max-width:200px;height:44px;justify-content:center;font-size:14px;box-shadow:0 2px 10px rgba(13,13,13,.2)}
.spot-bar .btn-primary:disabled{opacity:.5;cursor:not-allowed}
@media (max-width:600px){.spot-search input{font-size:16px}} /* 16px stops iOS zooming in on focus */

/* place search suggestions (map search box and the forms' Place field) */
.place-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--rule);border-radius:12px;max-height:260px;overflow-y:auto;z-index:6;box-shadow:0 4px 16px rgba(13,13,13,.12);-webkit-overflow-scrolling:touch}
.place-option{padding:9px 12px;font-size:13px;border-bottom:1px solid #F2EEE4;cursor:pointer;color:var(--ink)}
.place-option:last-child{border-bottom:none}
.place-option strong{display:block;font-weight:500}
.place-option span{display:block;font-size:11.5px;color:var(--ash);margin-top:1px}
.place-option:hover,.place-option.active{background:var(--chalk)}
.place-option--note{color:var(--ash);cursor:default}
.place-option--note:hover{background:#fff}

/* form: location section */
.modal .loc-label{margin:18px 0 0}
.loc-preview{margin-top:10px}
.loc-preview-map{height:160px;border-radius:12px;overflow:hidden;border:1px solid var(--rule)}
.loc-no-spot{margin:10px 0 0}
.modal .loc-adjust{margin-top:6px}

/* view popup: where to meet */
.v-location{margin:10px 0 6px;padding:12px 14px;background:var(--chalk);border-radius:12px}
.v-meeting{font-family:'Fraunces',serif;font-weight:600;font-size:16px;color:var(--ink);line-height:1.35;margin-bottom:4px}
.v-meeting::before{content:'📍 '}
.v-place{font-size:13.5px;font-weight:500;color:var(--ink);line-height:1.45}
.v-address{font-size:12px;color:var(--ash);line-height:1.5;margin-top:2px}
.btn-directions{display:inline-flex;align-items:center;margin-top:10px;background:var(--ink);color:#fff;text-decoration:none;border-radius:20px;padding:7px 14px;font-size:12.5px;font-weight:500}
.meetup-card .card-place{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* meetup category pill, next to the date and time */
.meta-daytime{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}
.cat-pill{display:inline-block;background:rgba(255,218,68,.35);color:var(--ink);font-size:11px;font-weight:500;line-height:1.4;padding:2px 9px;border-radius:12px;white-space:nowrap}
.loc-place-caption{font-size:12px;color:var(--ash);margin:8px 0 0}
.form-hint{text-align:center;margin:8px 0 0}
.btn-primary.full:disabled{cursor:not-allowed}

/* footer */
.footer{border-top:1px solid var(--rule);padding:28px 20px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:18px;overflow:visible}
.footer-buttons-group{display:flex;align-items:center;gap:14px;overflow:visible}
.footer-links-group{display:flex;align-items:center;gap:10px}
.footer-dot{color:var(--rule);font-size:12px}
.footer-link{background:none;border:none;font-size:12px;color:var(--ash)}
.advertise-btn{display:flex;align-items:center;gap:6px;background:var(--tang);border:none;border-radius:20px;padding:8px 18px;font-weight:500;font-size:13px;color:var(--ink)}
.chipin-btn{display:flex;align-items:center;gap:6px;background:var(--tang);border:none;border-radius:20px;padding:8px 18px;font-weight:500;font-size:13px;color:var(--ink)}

/* footer button glow, matching the map-pin glow language */
@keyframes glowTang{
  0%{box-shadow:0 0 0 0 rgba(255,168,94,0.75); transform:scale(1);}
  50%{box-shadow:0 0 0 18px rgba(255,168,94,0); transform:scale(1.04);}
  100%{box-shadow:0 0 0 0 rgba(255,168,94,0); transform:scale(1);}
}
.glow-btn.glow-tang{animation:glowTang 1.4s ease-in-out infinite}
/* pause the whole group on hover: pausing just one button left it out of step for good */
.footer-buttons-group:hover .glow-btn{animation-play-state:paused}
@media (prefers-reduced-motion: reduce){
  .glow-btn.glow-tang{animation:none}
}

/* chip in popup */
.chipin{margin-top:4px;display:flex;flex-direction:column;text-align:center}
.chipin-amounts{justify-content:center;margin-bottom:16px}
.chipin-amounts .chip{min-width:56px}
.chipin-steps{text-align:left}
.chipin-steps-title{font-weight:500;font-size:14px;margin-bottom:8px}
.chipin-steps ol{list-style:none;counter-reset:step;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.chipin-steps li{counter-increment:step;display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.5;color:var(--ink)}
.chipin-steps li::before{content:counter(step);flex:none;width:22px;height:22px;border-radius:50%;background:var(--tang);color:var(--ink);font-size:12px;font-weight:500;display:flex;align-items:center;justify-content:center;margin-top:-1px}
.chipin-camera-note{background:rgba(255,218,68,.3);border-radius:10px;padding:8px 12px;font-size:12px;line-height:1.5;color:var(--ink);margin:12px 0 0;text-align:left}
.chipin-qr{display:block;width:200px;height:200px;margin:16px auto 0;image-rendering:pixelated}
.chipin-actions{display:flex;justify-content:center;margin-top:14px}
.chipin-thanks{font-size:13px;color:#555;line-height:1.6;margin:18px 0 0}
/* Desktop: scan the code on screen, save button under the QR.
   Phones / touch: save the QR first (step 2), so the button sits above it. */
.chipin-qr{order:1}
.chipin-actions{order:2}
.chipin-thanks{order:3}
.step-touch{display:none}
@media (max-width:600px), (hover:none) and (pointer:coarse){
  .chipin-actions{order:0}
  .step-desktop{display:none}
  .step-touch{display:inline}
}

/* modals */
.modal-overlay{position:fixed;inset:0;background:rgba(13,13,13,.55);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px}
.modal{background:#fff;border-radius:20px;padding:28px;width:100%;max-width:380px;max-height:88vh;overflow-y:auto}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;font-family:'Fraunces',serif;font-weight:600;font-size:19px}
/* info popups (feedback / privacy / t&c / chip in / advertise): header stays
   put, only the body scrolls, capped at ~80% of the screen */
.modal.modal--info{display:flex;flex-direction:column;max-height:80vh;max-height:80dvh;overflow:hidden}
.modal--info .modal-head{flex:none}
.info-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.close-x{background:none;border:none;font-size:20px;color:var(--ash);line-height:1}
.modal label{display:block;font-size:10px;letter-spacing:1px;color:var(--ash);margin:12px 0 5px}
.modal input,.modal textarea,.modal select{width:100%;height:38px;border-radius:10px;border:1px solid var(--rule);background:var(--chalk);padding:0 12px;font-family:'DM Sans',sans-serif;font-size:13px;color:var(--ink)}
.modal textarea{height:56px;padding:8px 12px;resize:none}
.modal hr{border:none;border-top:1px solid var(--rule);margin:16px 0}
.row-2{display:flex;gap:8px}
.row-2 label{flex:1}
.checkbox-row{display:flex;align-items:center;gap:8px;font-size:12px;color:#2E2E2E}
.checkbox-row input{width:15px;height:15px;height:auto}
.section-label{font-size:10px;letter-spacing:1px;color:var(--ash);margin:12px 0}
.badge{display:inline-block;background:var(--rule);color:#666;font-size:10px;letter-spacing:1px;padding:4px 10px;border-radius:12px;margin-bottom:10px}
.meta{font-size:13px;color:#666;margin-bottom:4px}
.notes{font-size:13px;color:#555;line-height:1.6;margin-bottom:6px}
.error{font-size:12px;color:#C0605A;margin-top:6px}
.autocomplete-wrap{position:relative;margin-top:12px}
.breed-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--rule);border-radius:10px;max-height:160px;overflow-y:auto;z-index:5}
.breed-option{padding:9px 12px;font-size:13px;border-bottom:1px solid #F2EEE4}
.breed-option:hover{background:var(--chalk)}
.confirm-box{text-align:center;padding:20px 0}
.confirm-title{font-family:'Fraunces',serif;font-weight:600;font-size:18px;margin-bottom:8px}

/* text links and buttons */
.link-btn{background:none;border:none;padding:0;color:var(--tang);font-weight:500;font-size:13px;margin-top:10px}
.link-btn--muted{color:var(--ash)}
.inline-link{background:none;border:none;padding:0;color:var(--ink);font-size:inherit;text-decoration:underline;text-underline-offset:2px}
.body-text{font-size:13.5px;color:#555;line-height:1.6;margin:0 0 8px}
.fine-print{font-size:11.5px;color:var(--ash);line-height:1.55;margin:14px 0 0}
.switch-line{font-size:12.5px;color:#555;text-align:center;margin:14px 0 0}
.muted-note{font-size:11.5px;color:var(--ash)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.btn-primary:disabled,.btn-dark:disabled{opacity:.6;cursor:wait}
.modal .code-input{font-size:22px;letter-spacing:8px;text-align:center;height:48px}

/* header account button */
.header-account{position:absolute;top:16px;right:16px;z-index:2}
.header-login{background:var(--tang);color:var(--ink);border:none;border-radius:20px;padding:7px 16px;font-size:13px;font-weight:500}
.avatar-btn{width:38px;height:38px;border-radius:50%;border:2px solid var(--tang);background:var(--yolk);padding:0;overflow:hidden;display:flex;align-items:center;justify-content:center}
.avatar-btn img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-btn span{font-family:'Fraunces',serif;font-weight:600;font-size:16px;color:var(--ink)}

/* pet thumbnails, lists and choices */
.pet-thumb{width:32px;height:32px;border-radius:50%;object-fit:cover;flex:none;background:var(--chalk);border:1px solid var(--rule)}
.pet-thumb--empty{display:inline-flex;align-items:center;justify-content:center;font-size:14px}
.pet-list{display:flex;flex-direction:column;gap:8px}
.pet-item{display:flex;align-items:center;gap:10px;border:1px solid var(--rule);border-radius:12px;padding:8px 10px}
.pet-item .link-btn{margin-top:0;font-size:12px}
.pet-item-text{flex:1;min-width:0;display:flex;flex-direction:column;font-size:12px;color:#666}
.pet-item-text strong{font-size:13.5px;color:var(--ink)}
.pet-choices{display:flex;flex-direction:column;gap:8px}
.modal label.pet-choice{display:flex;align-items:center;gap:10px;margin:0;border:1px solid var(--rule);border-radius:12px;padding:8px 10px;font-size:13px;letter-spacing:0;color:var(--ink);cursor:pointer}
.modal label.pet-choice input{width:16px;height:16px;flex:none;accent-color:var(--tang)}
.photo-picker{display:flex;align-items:center;gap:14px}
.photo-preview{width:72px;height:72px;border-radius:50%;overflow:hidden;background:var(--chalk);border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;font-size:24px;flex:none}
.photo-preview img{width:100%;height:100%;object-fit:cover;display:block}
.photo-actions{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.photo-actions .link-btn{margin-top:0}
.modal label.photo-choose{margin:0;font-size:13px;letter-spacing:0;color:var(--tang);cursor:pointer}

/* attendee list */
.attendee-list{margin:10px 0}
.attendee-row{font-size:12.5px;color:#555;line-height:1.6;padding:8px 0;border-top:1px solid #F2EEE4}
.attendee-name{font-weight:500;color:var(--ink);margin-bottom:4px}
.attendee-pet{display:flex;align-items:center;gap:8px;margin-top:4px}
.attendee-pet strong{color:var(--ink)}
.attendee-breed{color:var(--ash)}

/* you're going */
.going-box{margin-top:18px;text-align:center;background:var(--chalk);border-radius:14px;padding:14px}
.going-title{font-family:'Fraunces',serif;font-weight:600;font-size:16px}
.going-box .link-btn{margin-top:6px}

/* legal popup body (privacy / terms) */
.info-body h4{font-family:'Fraunces',serif;font-weight:600;font-size:14px;margin:16px 0 6px}
.info-body h4:first-child{margin-top:0}
.info-body p{font-size:13px;color:#555;line-height:1.65;margin:0 0 10px}
.info-body ul{margin:0 0 10px;padding-left:18px}
.info-body li{font-size:13px;color:#555;line-height:1.6;margin-bottom:4px}

/* walking critter border */
/* Walks the inside edge of the intro section. The section's padding keeps
   the text clear of the path; on narrow screens the critters shrink to 60%. */
.intro{--critter-size:54px;position:relative;padding:calc(var(--critter-size) + 22px) calc(var(--critter-size) + 16px)}
@media (max-width:600px){.intro{--critter-size:32px}}
#critter-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}
.critter{position:absolute;width:var(--critter-size);height:var(--critter-size);background-repeat:no-repeat;background-size:calc(var(--critter-size) * 4) var(--critter-size);image-rendering:pixelated}

/* delete meetup */
.delete-link{display:block;margin:18px auto 0;background:none;border:none;padding:6px;color:var(--blush);font-size:13px;font-weight:500;text-decoration:underline;text-underline-offset:3px}
.modal-overlay--top{z-index:55}
/* info popups can open from the sign-up form (T&C / privacy links) */
.modal-overlay--info{z-index:58}
.delete-link--small{font-size:12px;margin-top:22px}
.confirm-delete-text{font-size:14px;color:var(--ink);line-height:1.6;margin:0}
.btn-danger{background:var(--blush);color:var(--ink);border:none;border-radius:24px;font-weight:500;font-size:14px}
.btn-danger.full{width:100%;height:44px;margin-top:18px}
.btn-danger:disabled{opacity:.6;cursor:wait}

/* toast */
.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%);background:var(--ink);color:#fff;font-size:13px;padding:10px 18px;border-radius:20px;z-index:70;box-shadow:0 4px 16px rgba(13,13,13,.2)}
