:root{color-scheme:light only;--terra:#C86B4A;--olive:#6D7A4F;--cream:#F7F0E6;--brown:#8F5A3C;--ink:#2F2B28;--paper:#fff;--muted:#665D53;--deep-olive:#55603C;--line:#DDD1C2;--display:'Jost',sans-serif;--body:'Karla',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.6 var(--body)}[hidden]{display:none!important}button,input,a{ -webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}a{color:var(--deep-olive);text-underline-offset:4px}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--terra);outline-offset:4px}::selection{background:var(--olive);color:var(--paper)}h1,h2,p,figure{margin:0}h1,h2{font-family:var(--display);font-weight:300;line-height:1.15;letter-spacing:-.02em}h2{font-size:clamp(2rem,4vw,3.5rem)}
.top-nav{display:flex;justify-content:space-between;gap:12px;max-width:1320px;margin:auto;padding:20px 4vw;border-bottom:1px solid var(--line);font-size:14px}.top-nav a{display:flex;align-items:center;min-height:44px;text-decoration:none;color:var(--ink)}.top-nav a:hover{text-decoration:underline}
.opening{position:relative;display:grid;grid-template-columns:minmax(250px,.75fr) minmax(0,1.5fr);gap:5vw;align-items:center;max-width:1440px;margin:auto;padding:64px 5vw 90px;overflow:hidden}.opening-copy{position:relative;z-index:1}.signature{display:block;width:min(100%,340px);height:auto;margin-bottom:24px}.opening h1{font-size:clamp(2.5rem,4.3vw,4.5rem)}.opening h1 span{color:var(--brown)}.opening-copy>p{margin-top:18px;color:var(--muted)}.opening-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.button{display:inline-flex;justify-content:center;align-items:center;min-height:48px;padding:12px 20px;background:var(--olive);color:var(--paper);border:1px solid transparent;border-radius:8px;font:600 16px/1.4 var(--body);text-decoration:none;text-align:center}.button:hover{background:var(--deep-olive)}.button-outline{background:transparent;border-color:var(--olive);color:var(--deep-olive)}.button-outline:hover{background:#E6E8DD}.opening-photo{position:relative;z-index:1;transform:rotate(-1deg);padding:12px 12px 0;background:var(--paper);box-shadow:0 18px 40px #2F2B2818}.opening-photo>img{display:block;width:100%;height:auto}.opening-photo figcaption{padding:12px 2px;font-size:14px;color:var(--muted)}.opening-spiral{position:absolute;width:160px;height:280px;bottom:-100px;left:-38px;opacity:.24;pointer-events:none}
.photographer-section{max-width:1320px;margin:auto;padding:60px 4vw 80px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:28px}.section-heading p{color:var(--muted);margin-top:14px}.section-heading strong{font-weight:600;color:var(--brown)}.gallery-help{margin:20px 0 28px;color:var(--muted)}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start;grid-auto-flow:dense}.photo-card.landscape{grid-column:span 2}.photo-button{display:block;padding:0;width:100%;border:0;background:var(--paper);border-radius:3px;overflow:hidden}.photo-button img{display:block;width:100%;height:auto}.photo-button:hover{outline:2px solid var(--olive);outline-offset:3px}.photo-button:focus-visible{outline:3px solid var(--terra);outline-offset:3px}
.guest-section{display:grid;grid-template-columns:1fr .7fr;gap:8vw;align-items:center;background:var(--olive);color:var(--paper);padding:64px max(5vw,calc((100vw - 1200px)/2))}.guest-section p{max-width:60ch;margin-top:22px}.guest-count:empty{display:none}.guest-actions{display:flex;flex-direction:column;align-items:start;gap:20px}.guest-actions .button{background:var(--cream);color:var(--deep-olive)}.guest-wall-link{color:var(--paper);display:inline-flex;align-items:center;min-height:44px}.memory-footer{text-align:center;padding:56px 24px}.memory-footer img{width:170px;height:auto;margin-bottom:16px}.memory-footer p{font-size:14px;color:var(--muted);margin-bottom:12px}
.gate{min-height:100dvh;max-width:500px;margin:auto;display:flex;flex-direction:column;justify-content:center;padding:40px 28px;text-align:center}.gate>img{width:250px;height:auto;margin:0 auto 24px}.gate h1{font-size:2rem}.gate>p{margin-top:20px;color:var(--muted)}.gate form{display:flex;flex-direction:column;text-align:left;gap:10px;margin:24px 0 16px}.gate input{width:100%;padding:12px;border:1px solid var(--brown);border-radius:8px;background:var(--paper);font-size:18px;min-height:48px}.gate form p{min-height:24px;color:#93431F}
#viewer{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:var(--cream);color:var(--ink);overflow:hidden}#viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto}#viewer::backdrop{background:#2F2B28EE}.viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;border-bottom:1px solid var(--line)}.viewer-bar button{min-height:44px;border:0;background:none;color:var(--ink);padding:8px 16px}.viewer-stage{position:relative;min-height:0;touch-action:pan-y pinch-zoom;background-image:url('spiral.svg');background-repeat:no-repeat;background-position:left center;background-size:140px}.viewer-image{position:absolute;inset:16px;display:block;width:calc(100% - 32px);height:calc(100% - 32px);object-fit:contain;opacity:0;transition:opacity 1.1s ease;pointer-events:none}.viewer-image.is-current{opacity:1}.viewer-bottom{padding:12px 24px calc(16px + env(safe-area-inset-bottom,0px));text-align:center;border-top:1px solid var(--line)}.viewer-bottom p{font-size:14px}.viewer-bottom #viewer-status{color:var(--brown);min-height:22px}.viewer-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;max-width:800px;margin:10px auto 0}.viewer-controls button,.viewer-controls a{display:flex;align-items:center;justify-content:center;border:1px solid var(--olive);background:none;color:var(--deep-olive);border-radius:8px;padding:10px 12px;min-height:48px;font-size:16px;line-height:1.3;text-decoration:none}.viewer-controls #viewer-play{background:var(--olive);color:var(--paper)}body.viewer-open{overflow:hidden}.is-playing .viewer-image.is-current{animation:photo-breath 5s linear both}@keyframes photo-breath{from{transform:scale(.985)}to{transform:scale(1)}}
@media(max-width:700px){.top-nav{padding:12px 18px;gap:14px;flex-wrap:wrap}.top-nav a{font-size:14px;min-height:40px}.opening{grid-template-columns:1fr;padding:28px 20px 56px;gap:28px}.signature{width:230px;margin:0 auto 20px}.opening-copy{text-align:center}.opening h1{font-size:2.5rem}.opening-copy>p{margin-top:12px}.opening-actions{justify-content:center;margin-top:20px}.opening-photo{padding:8px 8px 0;transform:none}.opening-photo figcaption{font-size:13px;padding:9px 2px}.opening-spiral{left:-65px;bottom:-145px}.photographer-section{padding:30px 16px 52px}.section-heading{align-items:start;flex-direction:column;gap:18px}.section-heading p{font-size:15px}.gallery-help{font-size:14px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.guest-section{grid-template-columns:1fr;gap:28px;padding:40px 24px}.guest-section h2{font-size:2.2rem}.guest-actions{align-items:stretch}.viewer-bar{padding:8px 12px}.viewer-bottom{padding:10px 12px calc(12px + env(safe-area-inset-bottom,0px))}.viewer-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.viewer-image{inset:8px;width:calc(100% - 16px);height:calc(100% - 16px)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.viewer-image{transition:none}.is-playing .viewer-image.is-current{animation:none}}
body.viewer-open{position:fixed;width:100%;left:0}
.opening-slideshow{display:block;padding:24px 4vw 40px;max-width:1320px;overflow:visible}
.slideshow-title{display:flex;align-items:center;justify-content:center;gap:32px;margin-bottom:20px}.slideshow-title .signature{width:150px;margin:0}.slideshow-title h1{font-size:2rem}.slideshow-title h1 span{color:var(--brown)}
.inline-player{background:var(--paper);padding:12px;border-radius:8px;box-shadow:0 12px 36px #2F2B2814}
.inline-stage{position:relative;height:min(52dvh,540px);min-height:280px;background:var(--cream) url('spiral.svg') left center/100px no-repeat;touch-action:pan-y pinch-zoom;overflow:hidden}
.inline-image{position:absolute;inset:8px;width:calc(100% - 16px);height:calc(100% - 16px);object-fit:contain;opacity:0;transition:opacity 1.15s ease;pointer-events:none}.inline-image.is-current{opacity:1}
.inline-caption{display:flex;justify-content:space-between;gap:12px;padding:12px 8px;color:var(--muted);font-size:14px}.inline-caption strong{color:var(--brown)}#inline-count{font-variant-numeric:tabular-nums;white-space:nowrap}
.inline-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) 1.2fr repeat(2,minmax(0,1fr));align-items:center;gap:8px}.inline-controls>button,.inline-controls>a{display:flex;align-items:center;justify-content:center;border:1px solid var(--olive);border-radius:6px;padding:10px 8px;min-height:48px;background:var(--paper);color:var(--deep-olive);font-size:15px;line-height:1.3;text-decoration:none}.inline-controls #inline-play{background:var(--olive);color:var(--paper)}.inline-controls>button:hover,.inline-controls>a:hover{background:#E6E8DD}.inline-controls #inline-play:hover{background:var(--deep-olive)}.inline-speed{display:flex;flex-direction:column;gap:4px;text-align:center;font-size:12px;color:var(--muted)}.inline-speed select{font:inherit;font-size:15px;min-height:36px;padding:4px 6px;border:1px solid var(--olive);border-radius:6px;color:var(--deep-olive);background:var(--paper)}
#inline-status:empty{display:none}#inline-status{padding:8px;font-size:14px;color:var(--brown)}.scroll-to-photos{display:flex;justify-content:center;align-items:center;min-height:48px;margin-top:16px;font-size:15px}
@media(max-width:700px){.opening-slideshow{padding:16px 12px 24px}.slideshow-title{flex-direction:column;gap:8px;margin-bottom:14px}.slideshow-title .signature{width:126px}.slideshow-title h1{font-size:1.5rem}.inline-player{padding:6px}.inline-stage{height:min(52dvh,480px);min-height:280px;background-size:65px}.inline-caption{font-size:12px;padding:10px 5px}.inline-controls{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.inline-controls>button,.inline-controls>a{font-size:14px;min-height:44px}.inline-speed{grid-row:2;grid-column:1}.inline-controls #start-slideshow{grid-row:2;grid-column:2}.inline-controls #inline-download{grid-row:2;grid-column:3}.scroll-to-photos{font-size:14px}}
@media(prefers-reduced-motion:reduce){.inline-image{transition:none}}
