/* Larger photographs; keep the existing ribbon motion untouched. */
.photo-ribbon{--ribbon-height:clamp(420px,42vw,620px);--ribbon-gap:22px}
/* Media reaches the page edges; headings and controls keep comfortable insets. */
.inline-ceremony{width:100%;max-width:none;margin-inline:0;padding-inline:0;border-top:0}
.inline-heading.page-width{margin-bottom:24px;padding-top:24px;border-top:1px solid var(--line)}
.inline-player,.live-page #live-player{width:100%;max-width:none}
.inline-player .live-player-shell,.live-page .live-player-shell{border:0;border-radius:0}
.inline-player .live-toolbar,.live-page .live-toolbar{padding-inline:max(20px,calc((100% - 1248px)/2))}
.inline-player .player-footnotes,.inline-player .mobile-volume-note{width:min(1248px,calc(100% - 112px));margin-inline:auto}
.live-page .live-main{max-width:none;padding-inline:0}
.live-page .live-heading,.live-page .live-footer,.live-page #live-load-error{width:min(1248px,calc(100% - 80px));margin-inline:auto}
.live-page .player-footnotes,.live-page .mobile-volume-note{width:min(1248px,calc(100% - 80px));margin-inline:auto}
/* A composer in the document, not a nested scrolling modal. */
.contribution-panel{grid-column:1/-1;justify-self:center;box-sizing:border-box;width:min(1120px,100%);margin:0 0 12px;padding:30px 34px 28px;border:1px solid var(--line);background:var(--page);scroll-margin-top:24px;overflow:visible}
.contribution-panel[hidden],.contribution-form[hidden],.contribution-panel .success-view[hidden]{display:none!important}
.contribution-heading{display:flex;justify-content:space-between;align-items:start;gap:24px;margin-bottom:24px}
.contribution-heading h2{font-size:30px;line-height:1.2;letter-spacing:-.025em;font-weight:400;margin:0}
.contribution-heading .form-description{font-size:14px;line-height:1.6;margin:10px 0 0;max-width:65ch}
.contribution-heading .icon-button{flex:none;width:44px;height:44px}
.contribution-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,1fr);align-items:start;gap:34px}
.contribution-copy{display:grid;gap:18px;min-width:0}
.contribution-copy>label{display:grid;gap:8px;font-size:14px;font-weight:500;line-height:1.5}
.contribution-panel input:not([type=checkbox]),.contribution-panel textarea{font-family:var(--body-font);font-size:16px;line-height:1.6;min-width:0;box-sizing:border-box}
.contribution-panel input[name=author]{min-height:46px}
.contribution-panel textarea{display:block;width:100%;min-height:158px;height:auto;resize:none;overflow:hidden}
.composer-label{display:block;font-size:14px;line-height:1.5;font-weight:500;margin:0 0 8px}
.composer-label .optional{margin-inline-start:7px}
.contribution-panel .upload-box{min-height:144px;box-sizing:border-box;align-content:center;margin:0;padding:22px 16px;gap:7px;border:1px dashed var(--line);background:var(--surface)}
.contribution-panel .upload-box>svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5}
.contribution-panel .upload-box strong{font-size:15px;font-weight:500}
.photo-limit{font-size:12px;line-height:1.6;color:var(--muted);margin:10px 0 0}
.contribution-panel .upload-previews{display:flex;gap:8px;margin-top:14px}
.contribution-panel .upload-preview{flex:1 1 0;max-width:110px}
.contribution-panel .upload-previews:empty{display:none}
.contribution-panel .upload-preview img{height:68px}
.contribution-panel .upload-preview>span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;line-height:1.5}
.contribution-panel .upload-preview>button{width:30px;height:30px;right:2px;top:2px;font-size:20px;box-shadow:0 1px 5px #0002}
.contribution-footer{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:24px}
.contribution-footer .check{margin:0;max-width:640px;flex:1;font-size:12px!important;line-height:1.65}
.contribution-footer .check input{margin:3px 0 0;accent-color:var(--accent)}
.contribution-footer>.button{flex:none;min-height:48px;padding-inline:23px;font-size:14px}
.contribution-panel .form-error{margin-top:14px;font-size:13px;line-height:1.5}
.contribution-panel .success-view{padding:28px 10px;text-align:center}
.contribution-panel .success-view h3{font-size:29px;line-height:1.3}
.contribution-panel .success-view p{max-width:55ch;margin-inline:auto}
@media(max-width:1000px){.photo-ribbon{--ribbon-height:440px;--ribbon-gap:18px}.contribution-panel{padding:25px}.contribution-grid{grid-template-columns:minmax(0,1.2fr) minmax(240px,1fr);gap:24px}.contribution-footer{gap:18px}}
@media(max-width:760px){.photo-ribbon{--ribbon-height:clamp(340px,95vw,460px);--ribbon-gap:14px}.inline-heading.page-width{margin-bottom:20px;padding-top:20px}.inline-player .player-footnotes,.inline-player .mobile-volume-note,.live-page .player-footnotes,.live-page .mobile-volume-note{width:calc(100% - 40px)}.live-page .live-heading,.live-page .live-footer,.live-page #live-load-error{width:calc(100% - 40px)}.contribution-panel{padding:22px 20px;scroll-margin-top:12px}.contribution-heading{gap:16px;margin-bottom:22px}.contribution-heading h2{font-size:25px;line-height:1.3}.contribution-heading .form-description{font-size:13px}.contribution-grid{grid-template-columns:1fr;gap:24px}.contribution-panel textarea{min-height:158px}.contribution-panel .upload-box{min-height:120px}.contribution-footer{align-items:stretch;flex-direction:column;gap:20px;margin-top:22px}.contribution-footer>.button{width:100%;justify-content:center;min-height:50px}.contribution-panel .upload-preview img{height:86px}.contribution-panel .upload-preview>button{width:36px;height:36px}.contribution-panel .check{font-size:12px!important}}
@media(max-width:760px){.contribution-panel .upload-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.contribution-panel .upload-preview{max-width:none}}
@media(min-width:621px) and (max-width:760px){.contribution-heading h2{font-size:28px}.contribution-grid{grid-template-columns:minmax(0,1.2fr) minmax(220px,1fr);gap:20px}.contribution-footer{flex-direction:row;align-items:center}.contribution-footer>.button{width:auto}.contribution-panel .upload-preview img{height:52px}}
@media(forced-colors:active){.contribution-panel,.contribution-panel .upload-box{border-color:CanvasText}}
