@import url('fonts.css');
:root{color-scheme:dark;--bg:#03080e;--panel:#07131d;--ink:#e9f7ff;--muted:#9eb1c2;--cyan:#51d8ff;--blue:#149aff;--line:#193e56;--glow:0 0 18px #099bff38;--radius:18px;font-family:Manrope,Arial,sans-serif;font-size:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:22px}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.6}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer}img{display:block;max-width:100%;height:auto}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.1}svg{width:24px;height:24px;flex-shrink:0}strong{font-weight:800}input,button,a{touch-action:manipulation}[hidden]{display:none!important}:focus-visible{outline:3px solid #b6eeff;outline-offset:5px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip:focus{position:fixed;top:10px;left:10px;z-index:99;background:#51d8ff;color:#001423;padding:12px}.script{font-family:Caveat,cursive;font-weight:700;color:#c5efff;text-shadow:0 0 20px #039eff65}.eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.17em;color:var(--cyan)}.muted{color:var(--muted)}
.page-shell{max-width:480px;min-height:100vh;margin:auto;background:linear-gradient(180deg,#020609 55%,#030b12);box-shadow:0 0 90px #0888c60b}.masthead{height:60px;display:flex;justify-content:space-between;align-items:center;padding:0 24px;border-bottom:1px solid #12334a}.masthead>a{font-family:'Barlow Condensed',sans-serif;font-size:1.4rem;font-weight:800;letter-spacing:.08em}.masthead>a span{color:var(--cyan)}.masthead>span{font-size:.75rem;font-weight:600;letter-spacing:.12em;color:var(--muted)}.button{min-height:52px;border-radius:10px;padding:13px 18px;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;border:1px solid transparent;line-height:1.4;font-weight:800;font-size:1rem;text-align:center;transition:background .2s,box-shadow .2s,transform .2s}.button:active{transform:translateY(1px)}.button-primary{background:linear-gradient(110deg,#79e6ff,#35bfff);color:#03131f;border-color:#7ee4ff;box-shadow:0 0 22px #139afa32}.button-primary:hover{background:#9aeaff;box-shadow:0 0 25px #139afa65}.button-outline{border-color:#2c749b;background:#0a1a2780;color:#bceaff}.button-outline:hover{background:#123048}.button:disabled{opacity:.65;cursor:wait}.rsvp-section{padding:0 22px 28px;scroll-margin-top:20px}.section-number{display:flex;gap:14px;align-items:center;justify-content:center;padding:12px 5px 30px}.section-number span{font-size:.75rem;font-weight:600;letter-spacing:.1em;color:#78a1bc;white-space:nowrap}.section-number i{width:24px;height:1px;background:var(--cyan);box-shadow:0 0 5px var(--blue)}.rsvp-card{padding:28px 22px 24px;border:1px solid #287ca8;border-radius:var(--radius);background:radial-gradient(ellipse at 50% 0%,#0c273c66,transparent 75%),var(--panel);box-shadow:inset 0 0 30px #047fff07,0 0 28px #0287fb0a}.rsvp-card>.eyebrow{text-align:center}.rsvp-card h2{font-size:3.5rem;text-align:center;margin:8px 0 12px;line-height:1.1}.form-intro{color:var(--muted);font-size:1rem;line-height:1.65;text-align:center;margin:0 0 30px}form label,form legend{display:block;font-size:.875rem;font-weight:600;margin-bottom:10px}input:not([type=radio]):not([type=hidden]){display:block;width:100%;min-height:54px;padding:14px;background:#020b13;border:1px solid #24455f;border-radius:9px;color:var(--ink);font-size:1rem;line-height:1.4;transition:border-color .2s}input::placeholder{color:#7790a5;opacity:1}input:focus{border-color:var(--cyan);outline:2px solid #3acaff30;outline-offset:1px}fieldset{border:0;padding:0;margin:24px 0}fieldset legend{margin-bottom:12px}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.attendance-option{position:relative;margin:0;cursor:pointer}.attendance-option input{position:absolute;top:15px;right:12px;width:16px;height:16px;accent-color:var(--cyan);margin:0}.attendance-option>span{display:flex;flex-direction:column;padding:17px 12px 14px;min-height:116px;border-radius:11px;border:1px solid #24455f;background:#05111c;transition:border-color .2s,background .2s}.attendance-option svg{color:#7899b0;width:23px;height:23px;margin-bottom:13px}.attendance-option strong{font-size:.9375rem}.attendance-option small{font-size:.75rem;font-weight:400;color:#9bb5c7;line-height:1.6;margin-top:3px}.attendance-option input:checked+span{border-color:var(--cyan);background:#0c2b40;box-shadow:0 0 13px #0aacff12}.attendance-option input:checked+span svg{color:var(--cyan)}.attendance-option input:focus-visible+span{outline:3px solid #b6eeff;outline-offset:3px}#partner-field{margin-bottom:24px}.form-footnote{text-align:center;color:var(--muted);font-size:.75rem;line-height:1.6;margin-top:18px}.honey{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.field-note{font-size:.875rem;color:var(--muted)}.invitation-footer{padding:8px 24px 126px;text-align:center}.invitation-footer .script{font-size:3rem;transform:rotate(-4deg);margin:10px 0 15px}.invitation-footer>span{font-size:.75rem;color:#7790a5;letter-spacing:.12em}.sticky-rsvp{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;z-index:10;padding:14px 18px calc(14px + env(safe-area-inset-bottom,0px));display:flex;gap:20px;align-items:center;border-top:1px solid #1f5375;background:#030d16f5;backdrop-filter:blur(16px);transition:opacity .2s,visibility .2s}.sticky-rsvp>span{font-size:.75rem;letter-spacing:.1em;flex-shrink:0;color:var(--muted);line-height:1.6}.sticky-rsvp>span strong{display:block;color:#e0f4ff;font-weight:600;letter-spacing:.04em}.sticky-rsvp .button{font-size:.875rem;min-height:48px;padding:12px 14px}.sticky-rsvp.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.notice{padding:14px 16px;border:1px solid #3283a5;border-radius:10px;margin:20px 0;background:#073042;color:#d6f6ff;font-size:.9375rem;line-height:1.6;overflow-wrap:anywhere}.notice.error{border-color:#905266;background:#2a1420;color:#ffd8e3}.success-state{text-align:center;padding:10px 0}.success-icon{width:62px;height:62px;margin:0 auto 24px;border-radius:50%;border:1px solid var(--cyan);display:grid;place-items:center;box-shadow:var(--glow);color:var(--cyan);background:#0b2d40}.success-icon svg{width:32px;height:32px}.success-state h2{font-size:3rem;margin:10px 0 24px}.confirmed-name{font-size:1.375rem;font-weight:800;overflow-wrap:anywhere}.confirmed-name span{display:block;color:var(--cyan);font-family:Caveat,cursive;font-size:1.5rem;margin:6px 0}.success-state>.confirmed-name+p{font-size:1rem;color:var(--muted);margin-top:18px}.success-date{font-size:.875rem;border-top:1px solid var(--line);margin-top:24px;padding-top:20px;color:#b5deef}
.admin-body{background:radial-gradient(ellipse at 50% 10%,#06345544,transparent 60%),#03080e}.admin-shell{max-width:560px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.admin-main{padding:32px 22px;flex:1}.login-card{padding:36px 24px;border:1px solid #245473;border-radius:18px;background:#07131de6;margin-top:24px;text-align:center;box-shadow:0 0 60px #008cff0c}.login-icon{display:grid;place-items:center;width:54px;height:54px;border:1px solid #29618a;border-radius:50%;color:var(--cyan);margin:0 auto 22px}.login-card h1{font-size:3rem;margin:10px 0 16px}.login-card form{margin-top:30px;text-align:left}.login-card .button{margin-top:24px}.password-wrap{position:relative}.password-wrap input{padding-right:75px!important}.password-wrap button{position:absolute;right:0;top:0;bottom:0;background:none;border:0;padding:0 14px;color:var(--cyan);font-size:.875rem;min-width:60px}.admin-title{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:10px 0 32px}.admin-title h1{font-family:'Barlow Condensed',sans-serif;font-size:2.3rem;font-weight:600;margin-top:12px}.admin-title h1 .script{display:block;font-size:3.2rem;margin-top:4px}.text-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 4px;background:none;border:0;color:var(--cyan);font-size:.875rem;font-weight:600;text-decoration:underline;text-underline-offset:5px}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #244a64;border-radius:14px;padding:22px 0;background:#091a27;margin-bottom:32px;gap:0}.stats>div{display:flex;flex-direction:column;align-items:center;border-right:1px solid #244a64;gap:9px;padding:0 4px}.stats>div:last-child{border:0}.stats strong{font-family:'Barlow Condensed',sans-serif;font-size:2.8rem;color:var(--cyan);line-height:1;text-shadow:var(--glow)}.stats span{font-size:.75rem;color:#b5c8d7}.list-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.list-heading h2{font-size:1.125rem;line-height:1.4}.list-caption{font-size:.75rem;color:var(--muted);margin:0 0 20px}.guest-list{list-style:none;margin:0;padding:0;border:1px solid #1e3a50;border-radius:12px;overflow:hidden}.guest-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 18px;border-bottom:1px solid #19364a;background:#071521}.guest-row:last-child{border-bottom:0}.guest-info{display:flex;flex-direction:column;gap:4px;min-width:0;overflow-wrap:anywhere}.guest-info>strong{font-size:1.125rem;color:#e7f8ff;line-height:1.4}.guest-info>span{color:#b4cfdf;font-size:.9375rem}.guest-info time{color:#849fb4;font-size:.8125rem;margin-top:5px}.delete-link{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border:1px solid #65404d;border-radius:9px;color:#e8a9bd;background:#22121b}.delete-link:hover{background:#41202d}.delete-link svg{width:19px;height:19px}.empty-list{border:1px dashed #24445e;border-radius:14px;padding:32px 24px;text-align:center}.empty-list>span{font-family:'Barlow Condensed',sans-serif;font-size:4rem;color:transparent;-webkit-text-stroke:1px #386d91;line-height:1}.empty-list h3{font-size:1.125rem;margin:18px 0 12px;line-height:1.4}.empty-list p{color:var(--muted);font-size:.9375rem}.admin-footer{text-align:center;padding:26px 20px;font-size:.75rem;letter-spacing:.12em;color:#6689a3}dialog{width:calc(100% - 32px);max-width:420px;color:var(--ink);background:#081621;border:1px solid #386d91;border-radius:18px;padding:28px;box-shadow:0 0 60px #0009}dialog::backdrop{background:#010710dd;backdrop-filter:blur(5px)}dialog h2,.delete-card h2{font-family:'Barlow Condensed',sans-serif;font-size:2rem;line-height:1.1;margin:14px 0 20px}#delete-description{font-weight:800;font-size:1.125rem;overflow-wrap:anywhere;margin:0 0 10px}.dialog-actions{display:flex;gap:12px;margin-top:28px}.dialog-actions .button{font-size:.875rem;padding:12px 10px}.button-danger{border-color:#de7598;color:#ffdeeb;background:#64213b}.button-danger:hover{background:#812a4c}.delete-card{padding:20px;border:1px solid #905266;border-radius:12px;background:#281420;margin:24px 0}.delete-card p{overflow-wrap:anywhere}
@media(min-width:600px){.page-shell,.admin-shell{border-left:1px solid #0f283b;border-right:1px solid #0f283b}.admin-main{padding:36px 28px}}
@media(max-width:359px){.masthead{padding:0 18px}.rsvp-section{padding-left:14px;padding-right:14px}.rsvp-card{padding:26px 18px}.sticky-rsvp{gap:12px;padding-left:14px;padding-right:14px}.admin-main{padding-left:16px;padding-right:16px}.stats span{font-size:.75rem}.login-card{padding-left:18px;padding-right:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
/* Keep enlarged text within the mobile layout. */
.masthead{gap:14px;min-height:60px;height:auto;padding-top:14px;padding-bottom:14px;flex-wrap:wrap}.attendance-options{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-option strong,.attendance-option small,.stats span{overflow-wrap:anywhere}.stats span{text-align:center}.sticky-rsvp{flex-wrap:wrap}.sticky-rsvp .button{flex:1;min-width:180px}
/* Invitation v2: each title, date, caption and action is an HTML element. */
@font-face{font-family:Knewave;src:url('fonts/knewave.ttf') format('truetype');font-display:swap;font-style:normal;font-weight:400}
.invitation{background:#010408}.invitation .page-shell{background:radial-gradient(ellipse at 50% 22%,#06132170,transparent 55%),#020609;padding-top:18px;overflow:clip}.neon-invite{position:relative;isolation:isolate;margin:0 16px;padding:14px 20px 24px;border:1px solid #71d9ff;border-radius:21px;box-shadow:0 0 4px #9cecff,inset 0 0 4px #9cecff,0 0 17px #008aff6e,inset 0 0 21px #048afe26;text-align:center;background:radial-gradient(ellipse at 50% 38%,#06365e1a,transparent 68%)}.neon-invite:before{content:"";position:absolute;z-index:-1;inset:5px;border:1px solid #12558166;border-radius:17px;pointer-events:none}.hero-top{height:80px;position:relative}.save-date{position:absolute;left:8px;top:3px;font-family:Caveat,cursive;color:var(--cyan);font-size:2.3rem;font-weight:600;line-height:.85;transform:rotate(-12deg);text-shadow:0 0 8px #13abffb3;text-align:left}.save-date span,.save-date small{display:block}.save-date small{font-size:1.55rem;margin-top:5px;padding-bottom:7px;border-bottom:2px solid #53d8ff}.neon-art{display:block;background-repeat:no-repeat;background-size:contain;background-position:center;aspect-ratio:1;flex-shrink:0;pointer-events:none}.art-disco{background-position:0 0;position:absolute;right:-6px;top:-27px;width:116px;transform-origin:50% 0;animation:disco-sway 8s ease-in-out infinite}.art-beers{background-position:100% 0;width:100%;transform:rotate(-10deg)}.art-shots{background-position:0 50%;width:100%;transform:rotate(8deg)}.art-pack{background-position:100% 50%;width:84px;transform:rotate(-11deg)}.art-ashtray{background-position:0 100%;width:90px;transform:rotate(8deg)}.art-crown{background-position:100% 100%;width:61px;position:absolute;right:1px;top:-29px;transform:rotate(10deg)}.little-star{position:absolute;color:#a2e8ff;font-size:2.3rem;line-height:1;text-shadow:0 0 10px #009fff}.star-one{right:95px;top:4px}.star-two{right:1px;top:61px;font-size:1.4rem}.invite-kicker{font-size:.75rem;letter-spacing:.23em;color:#d6e8f5;font-weight:600;margin:4px 0 12px}.invite-title{font-family:'Barlow Condensed',Arial,sans-serif;font-weight:800;line-height:1;text-align:center;margin:0}.party-title{display:block;font-size:clamp(2.9rem,12.5vw,3.7rem);letter-spacing:.035em;font-weight:700;color:#031221;-webkit-text-stroke:1.2px #72dcff;filter:drop-shadow(0 0 5px #0a9dff);margin-bottom:33px}.age-line{display:grid;grid-template-columns:minmax(42px,1fr) minmax(0,2.35fr) minmax(42px,1fr);align-items:center;margin:0 -13px}.age-line>.neon-art{max-width:92px;align-self:center;margin-top:26px}.age-center{position:relative;display:block}.age-number{display:block;font-size:clamp(9rem,48vw,14rem);font-weight:800;line-height:.83;letter-spacing:-.025em;color:#03101c;-webkit-text-stroke:2px #99e8ff;filter:drop-shadow(0 0 3px #6edaff) drop-shadow(0 0 12px #007fff);padding-right:.025em}.age-years{display:block;font-family:Caveat,cursive;font-size:clamp(3.6rem,15vw,4.6rem);font-weight:600;color:#e5f7ff;line-height:1.08;transform:rotate(-7deg);text-shadow:0 0 5px #67cfff,0 0 15px #188aff;margin-top:2px}.name-intro{display:block;font-family:Manrope,Arial,sans-serif;font-size:.875rem;letter-spacing:.24em;font-weight:500;margin:7px 0 1px}.birthday-name{font-family:Knewave,Caveat,cursive;font-weight:400;display:inline-block;position:relative;color:#48caff;font-size:clamp(4.3rem,20vw,6rem);line-height:1.18;letter-spacing:-.025em;transform:rotate(-6deg);text-shadow:0 0 22px #1190ff51;padding:0 4px 13px}.birthday-name:after{content:"";position:absolute;height:4px;background:#45caff;left:5px;right:0;bottom:5px;transform:rotate(1deg) skew(-25deg);border-radius:100%;box-shadow:0 0 13px #078eff6e}.hero-motto{font-family:Caveat,cursive;font-weight:600;font-size:1.45rem;color:#94e7ff;margin:12px 0 22px}.hero-motto span{display:inline-block;font-family:Manrope,sans-serif;font-size:.65rem;vertical-align:middle;margin:0 6px;color:#45caff}.hero-details{border-top:1px solid #1b5b7c;border-bottom:1px solid #1b5b7c;padding:15px 0 14px;background:linear-gradient(90deg,transparent,#0c40631f,transparent)}.hero-day{font-size:.75rem;letter-spacing:.2em;font-weight:600;color:#c6deed;line-height:1.3}.hero-date{font-family:'Barlow Condensed',sans-serif;font-size:1.9rem;font-weight:700;letter-spacing:.035em;line-height:1.3;color:#83dfff;margin-top:3px}.hero-date span{font-size:.875rem;font-family:Manrope,sans-serif;letter-spacing:.02em;color:#b7d5e6;font-weight:500;margin-left:3px}.hero-time{font-family:'Barlow Condensed',sans-serif;font-size:1.55rem;font-weight:600;line-height:1.25;color:#e6f8ff;margin-top:1px;letter-spacing:.05em}.hero-time span{font-family:Manrope,sans-serif;font-size:.75rem;font-weight:500}.hero-location{font-size:.875rem;line-height:1.6;color:#a5bed0;margin:17px 0 16px}.hero-actions{display:grid;grid-template-columns:1.1fr 1fr;gap:10px}.hero-actions .button{font-size:.875rem;padding:12px 9px;min-height:50px;border-radius:8px}.hero-actions .button-outline svg{width:18px;height:18px}.party-vibes{padding:36px 20px 24px;text-align:center}.vibes-callout{font-family:Caveat,cursive;font-size:2.1rem;color:#d9f2ff;line-height:1.08;transform:rotate(-4deg);font-weight:600;text-shadow:0 0 16px #087fd251}.vibes-callout span{color:#58d4ff;font-size:2.5rem}.attitude-line{display:flex;align-items:center;justify-content:center;gap:0;max-width:360px;margin:14px auto 10px}.attitude-line p{font-family:Caveat,cursive;font-size:1.55rem;line-height:1.1;color:#b9d5e9;flex:1}.attitude-line p strong{display:block;font-weight:600;font-size:1.7rem;color:#e5f3ff}.no-bad-vibes{display:inline-block;font-family:Caveat,cursive;font-size:1.55rem;line-height:1.2;padding:10px 20px;border:1px solid #56c9ff;border-radius:3px;transform:rotate(-3deg);color:#d9f4ff;box-shadow:0 0 8px #018fff55,inset 0 0 8px #018fff20;margin-top:5px}.invitation .section-number{padding:12px 5px 25px}.invitation .rsvp-card{background:radial-gradient(ellipse at 50% 0%,#082a456e,transparent 75%),#061019;border-color:#3498c9;box-shadow:0 0 16px #039bff16}.invitation .invitation-footer{padding-top:0}.invitation .sticky-rsvp{max-width:480px}.admin-title h1 .script{color:#b0eaff}
@keyframes disco-sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@media(max-width:359px){.neon-invite{margin:0 12px;padding-left:16px;padding-right:16px}.hero-top{height:76px}.hero-location{font-size:.8125rem}.hero-actions{gap:8px}.hero-actions .button{font-size:.8125rem}.party-vibes{padding-left:15px;padding-right:15px}.art-pack{width:70px}.art-ashtray{width:75px}.art-crown{width:52px;top:-26px;right:-5px}.hero-motto{font-size:1.3rem}.hero-date{font-size:1.7rem}}
@media(prefers-reduced-motion:reduce){.art-disco{animation:none}}

.art-disco{background-image:url('icons/disco-ball.webp');background-position:center}

.art-beers{background-image:url('icons/beer-bottles.webp');background-position:center}

.art-shots{background-image:url('icons/shot-glasses.webp');background-position:center}

.art-pack{background-image:url('icons/cigarette-pack.webp');background-position:center}

.art-ashtray{background-image:url('icons/ashtray.webp');background-position:center}

.art-crown{background-image:url('icons/crown.webp');background-position:center}
