
:root{--ivory:#f7f5ef;--paper:#fffdf8;--sage:#728064;--sage-dark:#48543e;--brown:#78553e;--ink:#302e28;--muted:#716d63;--line:#dcd9cd;--wash:#e8eadd;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--ivory);font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button,a,input,textarea{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--brown);outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3,.serif{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:clamp(3rem,6vw,6.5rem);letter-spacing:-.05em;line-height:1.05}h2{font-size:clamp(2.3rem,4vw,4rem);letter-spacing:-.04em;line-height:1.1}h3{font-size:1.7rem;letter-spacing:-.025em}p{font-size:1rem;line-height:1.8}em{font-weight:400;color:var(--sage-dark)}.eyebrow{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600}.muted{color:var(--muted)}header{max-width:1440px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:28px 5%;gap:25px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-family:Georgia,serif;font-size:1.3rem;white-space:nowrap}.brand span{font-size:1.25rem;border:1px solid var(--sage);border-radius:50%;width:42px;height:42px;display:grid;place-items:center;color:var(--sage-dark)}nav{display:flex;align-items:center;gap:26px;font-size:.875rem}nav a{padding:10px 0;border-bottom:1px solid transparent}nav a.active{border-color:var(--brown);color:var(--brown)}.button,button{display:inline-flex;align-items:center;justify-content:center;gap:12px;border:1px solid var(--sage-dark);background:var(--sage-dark);color:#fffdf8;padding:16px 24px;border-radius:3px;font-size:.875rem;line-height:1.4;transition:background .2s,transform .2s}.button:hover,button:hover{background:#35422d}.button.secondary,button.secondary{background:transparent;color:var(--sage-dark);border-color:#a1a68e}.button.secondary:hover,button.secondary:hover{background:var(--wash)}.button.small{padding:11px 17px}.hero{max-width:1440px;margin:auto;padding:72px 7% 60px;display:grid;grid-template-columns:1.1fr 1fr;gap:8%;align-items:center}.hero .eyebrow{color:var(--brown);margin-bottom:26px}.hero h1{margin-bottom:26px}.hero p{max-width:430px;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.hero-art{position:relative;min-height:480px;border-radius:240px 240px 4px 4px;background:var(--wash);padding:20px;display:flex;align-items:center;justify-content:center;border:1px solid #bac2aa}.hero-art:before{content:'';position:absolute;inset:13px;border:1px solid #fff9;border-radius:230px 230px 0 0;pointer-events:none}.hero-art .numeral{font-family:Georgia,serif;font-size:13rem;letter-spacing:-.1em;color:var(--sage);padding-right:18px}.art-label{position:absolute;bottom:28px;left:28px;right:28px;text-align:center;font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;background:var(--paper);padding:16px}.hero-art.has-image{background:linear-gradient(0deg,#41332415,#ffffff00),url('/anniversary.png') center/cover}.hero-art.has-image .numeral{display:none}.date-strip{display:flex;align-items:center;justify-content:center;gap:24px;padding:25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--brown);font-family:Georgia,serif;font-size:1.25rem}.date-strip span:nth-child(2){font-size:1rem;color:var(--sage)}.section{max-width:1200px;padding:75px 5%;margin:auto}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:30px}.section-head h2{margin-bottom:0}.section-head p{max-width:350px;margin:0}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.card{padding:30px;border:1px solid var(--line);background:var(--paper);border-radius:3px}.card .number{color:var(--brown);font-size:.8rem;letter-spacing:.12em;display:block;margin-bottom:24px}.card p{color:var(--muted)}.text-link{font-size:.875rem;color:var(--brown);border-bottom:1px solid #b9a68f;padding-bottom:5px;display:inline-block}.footer{margin:0 5%;border-top:1px solid var(--line);padding:28px 0;display:flex;justify-content:space-between;gap:20px;font-size:.8rem;color:var(--muted)}.footer a{margin-left:16px}.page{max-width:1080px;padding:65px 5% 90px;margin:auto}.page.narrow{max-width:780px}.page>h1{font-size:clamp(3rem,6vw,4.8rem);margin-bottom:22px}.page>.eyebrow{color:var(--brown);margin-bottom:20px}.lead{font-size:1.1rem;color:var(--muted);max-width:640px}.form-card{background:var(--paper);border:1px solid var(--line);padding:34px;margin-top:36px;border-radius:4px}label{display:block;font-size:.9rem;margin-bottom:10px}input:not([type=checkbox]),textarea{display:block;width:100%;border:1px solid #b9bbae;background:var(--paper);border-radius:3px;padding:14px 15px;font-size:1rem;color:var(--ink);margin:8px 0 24px}textarea{resize:vertical;min-height:150px;line-height:1.7}input[type=checkbox]{width:19px;height:19px;accent-color:var(--sage-dark);flex-shrink:0}.check{display:flex;gap:12px;align-items:start;font-size:.875rem;line-height:1.6;margin:22px 0}.check span{padding-top:1px}.hint{font-size:.8rem;color:var(--muted)}.notice{border-left:3px solid var(--sage);background:var(--wash);padding:18px 22px;line-height:1.7;margin:22px 0}.error{color:#962f22;background:#fff0e9}.success{text-align:center;padding:40px 20px}.success .seal{font-size:2rem;color:var(--sage-dark);border:1px solid var(--sage);border-radius:50%;width:75px;height:75px;display:grid;place-items:center;margin:0 auto 25px}.success h2{font-size:2.8rem}.split{display:grid;grid-template-columns:1fr 1fr;gap:40px}.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:30px}.detail{padding:25px;border-top:1px solid var(--line)}.detail h3{margin:12px 0}.prose{white-space:pre-wrap;font-size:1.125rem;line-height:1.9}.chapter{padding:30px 0;border-top:1px solid var(--line)}.chapter .eyebrow{color:var(--brown)}.empty{border:1px dashed #b0b49f;padding:50px 24px;text-align:center;background:#e8eadd50;border-radius:3px}.empty h3{margin-bottom:12px}.empty p{color:var(--muted);max-width:440px;margin:0 auto 20px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:32px}.photo{margin:0;background:var(--paper);border:1px solid var(--line);padding:10px;min-width:0}.photo img{width:100%;height:250px;object-fit:cover;display:block}.photo figcaption{padding:12px 5px 6px;font-size:.875rem;line-height:1.5;overflow-wrap:anywhere}.photo small{display:block;color:var(--muted);margin-top:5px}.upload-box{border:1px dashed var(--sage);padding:28px;background:#e8eadd50;margin:20px 0}.upload-box input{margin-bottom:0}.preview-grid{display:flex;gap:10px;flex-wrap:wrap}.preview-grid img{width:90px;height:90px;object-fit:cover}.host-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.host-grid .form-card{margin:0}.host-grid h2{font-size:2rem}.display-links{display:grid;gap:12px}.display-links a{justify-content:space-between}.kiosk{min-height:100svh;padding:5vh 6vw;position:relative;overflow:hidden;background:var(--ivory)}.kiosk-top{display:flex;justify-content:space-between;align-items:center;gap:15px}.kiosk-top .eyebrow{margin:0}.display-controls{display:flex;gap:12px}.display-controls a,.display-controls button{padding:8px 12px;background:transparent;border:1px solid var(--line);color:var(--muted);font-size:.8rem}.scan{display:flex;flex-direction:column;align-items:center;text-align:center;justify-content:center;min-height:88vh;max-width:850px;margin:auto}.scan h1{font-size:clamp(3.5rem,7vw,7rem);margin:28px 0}.scan .qr{width:clamp(210px,32vh,400px);height:auto;border:1px solid var(--line);padding:12px;background:white}.scan .lead{max-width:520px}.scan .years{font-family:Georgia,serif;font-size:1.5rem;color:var(--brown);padding-bottom:25px}.qr-note{font-size:.8rem;color:var(--muted);max-width:440px;margin:20px auto}.wishes-heading{text-align:center;margin:4vh 0}.wishes-heading h1{font-size:clamp(3rem,5vw,5rem);margin:20px 0}.wish-canvas{display:grid;grid-template-columns:repeat(3,1fr);gap:25px;align-items:center;min-height:58vh}.wish{padding:35px;background:var(--paper);border:1px solid var(--line);box-shadow:0 10px 30px #403c2710;animation:arrive 1s both;overflow-wrap:anywhere}.wish:nth-child(3n+1){transform:rotate(-2deg)}.wish:nth-child(3n+2){transform:rotate(1.5deg);background:var(--wash)}.wish blockquote{font:clamp(1.3rem,2vw,2.4rem)/1.5 Georgia,serif;margin:0 0 25px;white-space:pre-wrap}.wish cite{font-style:normal;font-size:.875rem;color:var(--brown)}.wish.long blockquote{font-size:clamp(1rem,1.6vw,1.4rem)}.collage-shell{background:#252a21;color:var(--paper);height:100svh;padding:25px;display:flex;flex-direction:column;gap:20px;overflow:hidden}.collage-shell .kiosk-top{flex-shrink:0}.collage-shell .display-controls a,.collage-shell .display-controls button{color:var(--paper);border-color:#ffffff40}.collage{flex:1;min-height:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:16px;padding-right:225px}.collage.count-1{grid-template-columns:1fr;grid-template-rows:1fr}.collage.count-2{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.collage.count-3,.collage.count-4{grid-template-columns:repeat(2,1fr)}.collage.count-7,.collage.count-8{grid-template-columns:repeat(4,1fr)}.collage img{display:block;width:100%;height:100%;object-fit:contain;background:#ffffff0a;animation:arrive 1s}.qr-fixed{position:absolute;right:25px;top:50%;transform:translateY(-50%);width:200px;background:var(--paper);color:var(--ink);padding:18px;text-align:center}.qr-fixed img{width:100%;display:block}.qr-fixed h3{font-size:1.5rem;margin:10px 0}.qr-fixed p{font-size:.85rem;line-height:1.5;margin-bottom:0}.collage-empty{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;padding-right:235px}.collage-empty h1{font-size:clamp(3rem,6vw,6rem)}.slideshow{display:grid;place-items:center;flex:1;min-height:0}.slideshow figure{height:100%;width:100%;margin:0;text-align:center;display:flex;flex-direction:column;gap:15px}.slideshow img{width:100%;height:0;flex:1;min-height:0;object-fit:contain;animation:arrive 1s}.slideshow figcaption{font-family:Georgia,serif;font-size:1.5rem}.status{min-height:24px;font-size:.9rem;line-height:1.6;overflow-wrap:anywhere}.prototype-tag{font-size:.75rem;border:1px solid var(--line);padding:5px 9px;display:inline-block;color:var(--muted);margin-bottom:15px}.hidden{display:none!important}@keyframes arrive{from{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-width:850px){header{flex-wrap:wrap;padding:20px 5%}nav{gap:17px;flex-wrap:wrap}nav .button{display:none}.hero{padding-top:45px;gap:30px}.hero-art{min-height:380px}.hero-art .numeral{font-size:10rem}.cards{grid-template-columns:1fr}.section{padding-top:45px;padding-bottom:45px}.section-head{display:block}.section-head p{margin-top:20px}.host-grid{grid-template-columns:1fr}.wish-canvas{grid-template-columns:1fr 1fr}.gallery{grid-template-columns:1fr 1fr}.collage{padding-right:180px}.qr-fixed{width:165px;right:20px}.qr-fixed h3{font-size:1.25rem}}@media(max-width:560px){.hero{grid-template-columns:1fr;padding-bottom:35px}.hero h1{font-size:3.9rem}.hero-art{min-height:320px;max-width:380px;width:100%;margin:auto}.hero-art .numeral{font-size:9rem}.date-strip{gap:12px;font-size:1rem;padding:22px 10px}.date-strip span:nth-child(2){font-size:.85rem}.page{padding-top:40px}.form-card{padding:24px 20px}.split,.details-grid{grid-template-columns:1fr;gap:10px}.footer{flex-direction:column;line-height:1.8}.footer a{margin:0 16px 0 0}.gallery{gap:10px}.photo img{height:180px}.kiosk{padding:25px 6vw}.wish-canvas{grid-template-columns:1fr}.wish{padding:25px}.scan h1{font-size:3.5rem}.display-controls{gap:5px}.display-controls a,.display-controls button{font-size:.75rem;padding:6px}.collage-shell{padding:12px}.collage{padding-right:0;padding-bottom:190px;gap:8px}.qr-fixed{top:auto;bottom:12px;right:12px;transform:none;width:calc(100% - 24px);display:grid;grid-template-columns:140px 1fr;gap:12px;align-items:center;padding:10px}.qr-fixed img{grid-row:1/3}.qr-fixed h3{margin:0;align-self:end}.qr-fixed p{margin:0;align-self:start}.collage-empty{padding:0 0 200px}.collage-empty h1{font-size:2.8rem}}@media(orientation:portrait) and (min-width:561px){.wish-canvas{grid-template-columns:1fr;gap:35px;max-width:800px;margin:auto}.wish{padding:40px}.wish blockquote{font-size:2.2rem}.scan h1{font-size:6rem}.scan .lead{font-size:1.6rem}.scan .qr-note{font-size:1rem}}


.hero h1{font-size:clamp(3rem,4.8vw,5rem)} @media(max-width:560px){.hero h1{font-size:3.4rem}}

.wish-canvas.single{grid-template-columns:1fr;max-width:950px;margin:auto}.wish-canvas.single .wish{transform:none}.wish-canvas.single .wish.long blockquote{font-size:clamp(1.1rem,2vw,1.75rem)} @media(max-width:850px){nav .button{display:inline-flex;background:transparent;color:var(--sage-dark);padding:10px 0;border:0;border-bottom:1px solid var(--sage);border-radius:0}}

.contribution-card h2{font-size:clamp(2.4rem,5vw,3.5rem)}.contribution-card>p:not(.eyebrow):not(.hint){line-height:1.9;color:var(--muted)}.contribution-card .hint{margin:16px 0 0}.contribution-pending{padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.contribution-thanks{color:var(--sage-dark);font-size:1.45rem;line-height:1.5;margin-top:30px}.optional-link{margin-top:36px;color:var(--muted);font-size:.875rem}.optional-link a{margin-left:6px}

.entry-choice{border:0;padding:0;margin:0 0 28px}.entry-choice legend{font-size:.9rem;margin-bottom:14px}.entry-choice label{display:inline-flex;align-items:center;gap:8px;margin:0 24px 10px 0}.entry-choice input[type=radio]{display:inline-block;width:18px;height:18px;margin:0;accent-color:var(--sage-dark)}#signature-panel[hidden]{display:none}#signature-pad{display:block;width:100%;height:auto;aspect-ratio:3/1;background:var(--paper);border:1px solid var(--sage);border-radius:3px;touch-action:none;cursor:crosshair}.signature-tools{display:flex;gap:10px;margin:12px 0 28px}.signature-tools button{padding:10px 14px}.saved-signature{display:block;width:100%;height:auto;aspect-ratio:3/1;color:var(--sage-dark);margin:0 0 22px}.entry-choice input:disabled{cursor:wait}

.contribution-intro{max-width:720px;color:var(--muted);margin-bottom:36px}.payment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.payment-card{min-width:0}.payment-card>img{display:block;width:100%;height:auto}.payment-actions{text-align:center;padding:20px 8px}.payment-actions .button{width:100%}.payment-actions .hint{min-height:42px;margin:14px 0}.payment-actions .text-link{font-size:.8rem}@media(max-width:760px){.payment-grid{grid-template-columns:1fr;max-width:420px;margin:auto}.payment-actions{padding-bottom:32px}}

.selfie-section{margin:28px 0;padding:22px;border:1px solid #c5ccb8;border-radius:16px;background:#f5f5ed}.selfie-section h3{margin-top:0}.selfie-section .actions{flex-wrap:wrap;gap:10px}.selfie-section [hidden]{display:none!important}#selfie-preview{margin-top:18px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}#selfie-image{width:150px;max-height:200px;object-fit:contain;border-radius:12px;background:#e9eade}

.guest-signoff{margin-top:28px}.guest-signoff h3{margin-bottom:16px}.wish-signoff{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.wish-signoff>span{font-family:Georgia,serif;font-style:italic}.wish-signoff cite{display:block}.wish-signoff .saved-signature{margin:0;max-height:130px}

.wish-signoff .cursive-signature{font-family:"Segoe Script","Snell Roundhand","Brush Script MT",cursive;font-size:clamp(1.8rem,3vw,3rem);font-weight:400;font-style:normal;text-transform:none;letter-spacing:0;line-height:1.5;overflow-wrap:anywhere}#guest-name{margin-bottom:24px}

.wish-signoff{text-align:left;align-items:flex-start}.wish-signoff .saved-signature{display:block;align-self:flex-start}.wish-signoff .cursive-signature{align-self:flex-start;margin-left:0}.guest-signoff{text-align:left}

