:root{--bg:#f3f5f7;--white:#fff;--mist:#e4e7eb;--silver:#bcc3cb;--steel:#586069;--graphite:#2e3338;--ink:#1f2327;--serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;--sans:"Manrope",system-ui,-apple-system,"Segoe UI",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--graphite);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:clip}h1,h2,h3,h4{font-family:var(--serif);font-weight:500;color:var(--ink);margin:0}h2{font-size:clamp(2.2rem,8vw,3.4rem);line-height:1.08;margin-bottom:1.4rem;text-wrap:balance}h3{font-size:1.55rem;line-height:1.2;margin-bottom:.6rem}.h3{font-family:var(--serif);font-size:1.5rem;line-height:1.25;color:var(--ink);display:block;margin-bottom:.7rem}p{margin:0 0 1rem}.center{text-align:center}.pad{padding:3rem 1rem}.small{font-size:.95rem;color:var(--steel)}.lead{font-family:var(--serif);font-size:clamp(1.35rem,5vw,1.7rem);line-height:1.5;color:var(--ink);max-width:36rem;margin-inline:auto}.kicker{font-size:.95rem;letter-spacing:.14em;color:var(--steel);margin-bottom:.5rem}:focus-visible{outline:2px solid var(--graphite);outline-offset:3px}.skip{position:absolute;left:-9999px;top:0}.skip:focus{left:8px;top:8px;z-index:100;background:var(--white);color:var(--ink);padding:.8rem 1.1rem;border:2px solid var(--graphite);min-height:44px}.hero{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1.4rem 1rem 1.6rem;background:radial-gradient(ellipse at 50% 28%,#fff,#eceff2 62%,#e1e5e9)}.hero-frame{position:relative;isolation:isolate;line-height:0;transform:rotate(-1.6deg);box-shadow:0 26px 48px -24px #1f232780,0 0 0 1px #bcc3cbcc;animation:rise 1.2s ease both}.hero-frame:before{content:"";position:absolute;top:10px;right:-10px;bottom:-10px;left:10px;border:1px solid var(--silver);transform:rotate(3.2deg);z-index:-1}.hero-frame img{display:block;width:auto;height:auto;max-width:min(76vw,420px);max-height:clamp(250px,calc(100vh - 370px),640px);max-height:clamp(250px,calc(100dvh - 370px),640px)}.cover-ph{display:flex;width:min(64vw,300px);aspect-ratio:3/4}.names{font-size:clamp(2.6rem,11.5vw,5.6rem);line-height:1;margin-top:1.7rem;text-wrap:balance;animation:rise 1.2s .25s ease both}.names i{font-weight:400;color:var(--steel);padding:0 .08em}.hero-date{font-weight:300;font-size:1.15rem;letter-spacing:.34em;margin:.9rem 0 0 .34em;animation:rise 1.2s .45s ease both}.hero-sub{text-wrap:balance;font-family:var(--serif);font-style:italic;font-size:clamp(1.3rem,4.8vw,1.6rem);color:var(--steel);margin:.4rem 0 1.2rem;animation:rise 1.2s .6s ease both}.hero .btn{animation:rise 1.2s .75s ease both}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1}}.hero-frame{animation-name:rise-frame}@keyframes rise-frame{0%{opacity:0;transform:translateY(14px) rotate(-1.6deg)}to{opacity:1;transform:rotate(-1.6deg)}}.btn{font:500 1.05rem var(--sans);min-height:52px;min-width:44px;padding:.8rem 1.7rem;border:1px solid var(--graphite);background:transparent;color:var(--graphite);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;text-align:center;transition:background .25s,color .25s;-webkit-tap-highlight-color:transparent}.btn:hover,.btn.solid{background:var(--graphite);color:var(--white)}.btn.solid:hover{background:var(--ink)}.btn:disabled{opacity:.55;cursor:wait}.btn.sm{min-height:44px;padding:.5rem 1.1rem;font-size:.95rem}.btn.big{min-height:64px;font-size:1.15rem}.btn:focus-visible{outline:3px solid var(--graphite);outline-offset:3px}.sec{max-width:1000px;margin:0 auto;padding:4.5rem 1.25rem}.narrow{max-width:680px}.reveal{opacity:0;transform:translateY(16px);transition:opacity .9s ease,transform .9s ease}.reveal.in{opacity:1;transform:none}.sign{font-family:var(--serif);font-style:italic;font-size:1.7rem;color:var(--ink);margin-bottom:1.6rem}.story-text{text-align:center}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin:2.4rem 0 0}.grid3:empty{display:none}.lift{margin-top:1.4rem}.photo{margin:0;border:1px solid var(--silver);padding:6px;background:var(--white);box-shadow:0 14px 30px -20px #1f232773}.photo img,.ph{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}.photo.wide{margin:1.6rem 0}.photo.wide img,.photo.wide .ph{aspect-ratio:16/10}.ph{background:var(--mist);display:flex;align-items:center;justify-content:center;text-align:center;color:var(--steel);font-size:.95rem;padding:.6rem}.ph small{font-size:.8rem;word-break:break-all}.band{background:var(--graphite);color:var(--bg)}.band h2{color:var(--bg)}.count{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;max-width:520px;margin:1.2rem auto 0;text-align:center}.count b{display:block;font:500 clamp(2.3rem,12vw,3.6rem)/1 var(--serif);color:#fff;font-variant-numeric:tabular-nums}.count span{font-size:.95rem;color:var(--silver)}.count>div{border-top:1px solid #5b636b;padding-top:.8rem}.count-done{font-family:var(--serif);font-size:1.7rem}.band-date{margin:1.6rem 0 0;color:var(--silver);letter-spacing:.2em;font-size:.95rem}.timeline{list-style:none;margin:2.2rem 0 0;padding:0;position:relative}.timeline:before{content:"";position:absolute;left:6.3rem;top:.7rem;bottom:.7rem;width:1px;background:var(--silver)}.timeline li{display:grid;grid-template-columns:5.3rem 1fr;gap:1.8rem;margin-bottom:2.2rem;position:relative}.timeline li:after{content:"";position:absolute;left:6.05rem;top:.8rem;width:11px;height:11px;border-radius:50%;background:var(--graphite);box-shadow:0 0 0 4px var(--bg)}.timeline time{font:500 2.3rem/1 var(--serif);color:var(--ink);text-align:right}.timeline h3{font-size:1.45rem;line-height:1.25;margin:.35rem 0 0}.venue-name{margin:0 0 1.4rem}.venue-name span{display:block;font:500 clamp(3rem,13vw,5rem)/1 var(--serif);color:var(--ink)}.venue-name small{display:block;margin-top:.5rem;font-size:1rem;letter-spacing:.3em;color:var(--steel)}.addr{margin-top:1rem;font-size:1.1rem}.palette{list-style:none;padding:0;margin:2.2rem 0 1.8rem;display:flex;flex-wrap:wrap;justify-content:center;gap:1.2rem}.palette i{display:block;width:64px;height:64px;border-radius:50%;border:1px solid var(--silver);margin:0 auto .5rem}.palette li{width:96px;font-size:.95rem;line-height:1.3;color:var(--steel)}.combos{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:.6rem}.combo{margin:0;background:var(--white);border:1px solid var(--silver);padding:8px}.combo div{display:flex;height:110px;border:1px solid var(--mist)}.combo i{display:block}.combo figcaption{font-family:var(--serif);font-size:1.25rem;color:var(--ink);padding:.7rem .2rem .3rem}details{border-top:1px solid var(--silver)}details:last-of-type{border-bottom:1px solid var(--silver)}summary{cursor:pointer;list-style:none;padding:1.25rem 2.4rem 1.25rem 0;font-family:var(--serif);font-size:1.45rem;color:var(--ink);position:relative;line-height:1.25;min-height:48px;-webkit-tap-highlight-color:transparent}summary::-webkit-details-marker{display:none}summary:after{content:"+";position:absolute;right:.2rem;top:1.05rem;font-size:1.8rem;line-height:1;transition:transform .3s}details[open] summary:after{transform:rotate(45deg)}details p{color:var(--steel);padding-bottom:1.2rem;margin:0}.rsvp{max-width:680px}.choices{display:grid;gap:.9rem;margin-top:1.8rem}.card{background:var(--white);border:1px solid var(--mist);padding:1.5rem;box-shadow:0 20px 44px -30px #1f232773;margin-top:1.5rem}label{display:block;margin-bottom:1.1rem;font-size:1rem;color:var(--steel)}input,select,textarea{display:block;width:100%;margin-top:.4rem;font:inherit;font-size:17px;padding:.8rem;min-height:48px;border:1px solid var(--silver);background:var(--white);color:var(--ink);border-radius:0}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--graphite);outline-offset:1px;border-color:var(--graphite)}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;overflow:hidden}.chips{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:.9rem}.chip{margin:0;border:1px solid var(--silver);padding:.6rem 1rem;color:var(--graphite);cursor:pointer;min-height:48px;display:flex;align-items:center;font-size:1rem;-webkit-tap-highlight-color:transparent}.chip input{position:absolute;opacity:0;width:0;height:0}.chip.on{background:var(--graphite);color:var(--white);border-color:var(--graphite)}.chip.off{opacity:.4;cursor:not-allowed}.chip:focus-within{outline:2px solid var(--graphite);outline-offset:2px}.row{display:flex;gap:.7rem;margin-top:1.2rem}.row .btn{flex:1}.row.wrap{flex-wrap:wrap;margin:.8rem 0}.row.wrap .btn{flex:none}.between{justify-content:space-between;align-items:center}.error{color:#9b2c2c;font-size:1rem}.note{color:var(--steel);font-size:1rem}.foot{text-align:center;padding:3rem 1rem calc(3rem + env(safe-area-inset-bottom));color:var(--steel);font-size:1rem;border-top:1px solid var(--mist)}.admin{max-width:1200px;margin:0 auto;padding:1.2rem}.admin-login{max-width:400px;margin:3rem auto}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.7rem;margin:1rem 0}.stats div{background:var(--white);border:1px solid var(--mist);padding:.9rem}.stats b{display:block;font:500 2rem/1 var(--serif)}.stats span{font-size:.95rem;color:var(--steel)}.tablewrap{overflow-x:auto;background:var(--white);border:1px solid var(--mist)}table{border-collapse:collapse;width:100%;font-size:.95rem}th,td{padding:.6rem;border-bottom:1px solid var(--mist);text-align:left;vertical-align:top;min-width:100px}th{background:var(--bg);font-weight:600}@media (max-width:520px){.sec{padding:3.6rem 1.1rem}.timeline:before{left:5.2rem}.timeline li{grid-template-columns:4.4rem 1fr;gap:1.7rem}.timeline li:after{left:4.95rem}.timeline time{font-size:1.75rem}.grid3{gap:.4rem}.photo{padding:3px}.card{padding:1.2rem}.row{flex-direction:column-reverse}.palette li{width:84px}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}html{scroll-behavior:auto}}
