:root{--ink:#282238;--violet:#7162b8;--pink:#efb7ce;--sky:#a8dcef;--paper:rgba(255,255,255,.9);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:linear-gradient(145deg,#fff 20%,#f8f4ff 57%,#eefaff);overflow-x:hidden}.glow{position:fixed;border-radius:50%;filter:blur(60px);opacity:.35;pointer-events:none}.g1{width:46vw;height:46vw;background:var(--pink);top:-22vw;right:-15vw}.g2{width:48vw;height:48vw;background:var(--sky);bottom:-26vw;left:-20vw}main{position:relative;min-height:100dvh;padding:max(24px,env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));display:grid;place-items:center}.account-login{width:min(480px,100%);text-align:center;padding:clamp(26px,7vw,58px);background:var(--paper);border:1px solid #fff;border-radius:36px;box-shadow:0 25px 80px rgba(81,65,118,.13)}.account-login h1{font-size:clamp(3rem,12vw,5rem)}.account-login form{display:grid;gap:18px;margin-top:28px;text-align:left}.account-login .primary{width:100%}.honeypot{position:absolute!important;left:-10000px!important}.welcome{width:min(680px,100%);text-align:center;padding:clamp(26px,7vw,72px);background:var(--paper);border:1px solid #fff;border-radius:36px;box-shadow:0 25px 80px rgba(81,65,118,.13);animation:rise .8s ease both}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.72rem;color:var(--violet)}h1{font-family:Georgia,serif;font-size:clamp(4rem,14vw,7.5rem);font-weight:400;margin:.15em 0;background:linear-gradient(110deg,#588eb2,#9b75c8,#d789a9);color:transparent;background-clip:text}.subtitle{font-family:Georgia,serif;font-size:clamp(1.2rem,4vw,1.7rem)}.dedication{line-height:1.7;color:#5b536a;margin:2rem auto;max-width:510px}.primary,button{border:0;min-height:44px;border-radius:999px;padding:12px 22px;font:inherit;cursor:pointer}.primary{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(110deg,#7bbedd,#a985d0,#e59db9);color:#fff;font-weight:700;box-shadow:0 10px 25px #ad8dcc55}.flower{font-size:2rem;color:#d899b5}.album{width:min(1080px,100%)}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}h2{font-family:Georgia,serif;font-weight:400;font-size:clamp(1.8rem,6vw,3rem);margin:.15em 0}.album-title-row{display:flex;align-items:center;gap:8px}.title-pencil{width:38px;min-height:38px;padding:0;background:#fff;color:var(--violet);box-shadow:0 5px 20px #57477118;font-size:1.15rem}.tools{display:flex;gap:8px}.icon,nav button{width:48px;padding:0;background:#fff;box-shadow:0 5px 20px #57477118}.page{background:var(--paper);padding:clamp(20px,5vw,48px);border-radius:30px;box-shadow:0 25px 80px #5141761a;animation:fade .35s ease}.date{color:#7e6c8c}.description{line-height:1.7;white-space:pre-wrap}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:24px}.media-wrap{position:relative;min-width:0}.media{padding:0;overflow:hidden;border-radius:16px;background:#eee;min-height:140px}.media-delete{position:absolute;right:8px;bottom:8px;min-height:38px;padding:7px 12px;background:#fff;color:#a52c4c;box-shadow:0 4px 16px #28223833;font-size:.82rem}.media img,.media video{display:block;width:100%;height:100%;max-height:480px;object-fit:cover}.external-item{overflow:hidden;border-radius:16px;background:#fff;box-shadow:0 5px 20px #57477118}.external-item img,.external-item iframe{display:block;width:100%;height:240px;border:0;object-fit:cover}.external-item p{padding:0 14px}.gift-grid{display:grid;gap:14px}.gift-card{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:center;padding:18px;border:1px solid #eadff0;border-radius:18px;background:linear-gradient(135deg,#fff,#fff5fa)}.gift-card>span{font-size:2.3rem}.gift-card h4,.gift-card p{margin:.25rem 0}.gift-status{color:var(--violet);font-size:.82rem}.gift-card>.primary,.gift-actions{grid-column:1/-1}.gift-actions{display:flex;gap:8px;flex-wrap:wrap}.music-preview{overflow:hidden;border-radius:16px;background:#17131d}.music-preview iframe{display:block;width:100%;height:180px;border:0}.music-preview audio{display:block;width:100%;padding:12px;background:#f3eff7}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.gift-reveal{padding:28px;text-align:center}.gift-reveal .close{float:right}.gift-reveal img{display:block;width:min(300px,100%);margin:20px auto;border-radius:14px}.gift-reveal .primary{margin:8px}.section-title{margin-top:28px}.adminbar{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}.hidden-badge{background:#fbe9f2;padding:6px 10px;border-radius:20px;font-size:.8rem}nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:20px}.empty{text-align:center;padding:80px 20px;background:#ffffffaa;border-radius:30px}dialog{width:min(520px,calc(100% - 24px));border:0;border-radius:25px;padding:0;box-shadow:0 30px 90px #29203955}dialog::backdrop{background:#27223688;backdrop-filter:blur(5px)}dialog form{padding:28px;display:grid;gap:18px}.editor-top{position:relative;display:flex;flex-direction:row-reverse;justify-content:space-between;align-items:center}.editor-options{position:relative}.editor-options-toggle{width:44px;min-height:44px;padding:0;border:1px solid #e3d9ea;background:#fff;color:var(--violet);font-size:1.55rem;line-height:1;box-shadow:0 5px 18px #57477118}.editor-options-toggle[aria-expanded="true"]{transform:rotate(45deg);background:#f3eff7}.editor-options-menu{position:absolute;top:52px;left:0;z-index:5;width:min(280px,calc(100vw - 70px));padding:8px;border:1px solid #e4dce9;border-radius:18px;background:#fff;box-shadow:0 18px 45px #2822382b}.editor-options-menu button{display:block;width:100%;text-align:left;background:transparent;border-radius:12px}.editor-options-menu button:hover,.editor-options-menu button:focus{background:#f6f2f8}.close{justify-self:end;font-size:1.5rem;padding:0;width:44px;background:#f3eff7}label{display:grid;gap:7px;font-size:.9rem}input,textarea{width:100%;font:inherit;font-size:16px;padding:13px;border:1px solid #d8d0e1;border-radius:12px}.password-field{position:relative;display:block}.password-field input{padding-right:90px}.password-field button{position:absolute;right:5px;top:50%;transform:translateY(-50%);min-height:36px;padding:6px 12px;background:#f3eff7}textarea{min-height:120px}.switch{display:flex;align-items:center}.save-status{min-height:1.25em;margin:0;text-align:center;color:#746a80;font-size:.84rem}.save-status[data-state="saving"]{color:var(--violet)}.save-status[data-state="saved"]{color:#397357}.save-status[data-state="error"]{color:#a52c4c}.switch input{width:auto}.error{color:#a52c4c}.danger{color:#a52c4c;background:#fff0f3}#musicEmbed{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:20;width:min(360px,calc(100% - 32px));filter:drop-shadow(0 12px 30px #28223855)}#musicEmbed iframe{display:block;width:100%;height:202px;border:0;border-radius:18px;background:#17131d}#lightbox{width:min(1000px,calc(100% - 20px));background:#17131d;color:white}#lightbox img{width:100%;max-height:80dvh;object-fit:contain}#toast{position:fixed;bottom:20px;left:50%;translate:-50%;background:#282238;color:#fff;padding:12px 18px;border-radius:15px;opacity:0;pointer-events:none;transition:.2s}#toast.show{opacity:1}@media(min-width:700px){.grid{grid-template-columns:repeat(3,1fr)}.media{min-height:210px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@keyframes rise{from{opacity:0;transform:translateY(14px)}}@keyframes fade{from{opacity:.25;transform:translateX(8px)}}.album-quick-add{position:fixed;left:50%;bottom:max(22px,calc(env(safe-area-inset-bottom) + 14px));z-index:100;transform:translateX(-50%)}.album-quick-add-button{display:grid;place-items:center;width:64px;height:64px;min-height:64px;padding:0;border:3px solid rgba(255,255,255,.9);border-radius:50%;background:linear-gradient(135deg,#7162b8,#d789a9);color:#fff;box-shadow:0 14px 32px rgba(81,65,118,.38);transition:transform .2s ease,box-shadow .2s ease}.album-quick-add-button:hover,.album-quick-add-button:focus-visible{transform:translateY(-2px) scale(1.04);box-shadow:0 18px 38px rgba(81,65,118,.46)}.album-quick-add-button:disabled{cursor:wait;opacity:.65}.album-quick-add-button svg{width:32px;height:32px}body:has(#albumQuickAdd:not([hidden])) main{padding-bottom:max(106px,calc(env(safe-area-inset-bottom) + 94px))}#toast{z-index:12100}
.contribution-admin{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:16px 0;padding:14px;border:1px solid #ddd2e7;border-radius:18px;background:#faf7ff}.contribution-admin strong{color:var(--violet)}.contribution-admin small{flex-basis:100%;color:#746a80}.pending-contributions{margin-top:28px;padding-top:10px;border-top:1px solid #eadff0}.pending-card{overflow:hidden;padding:10px;border:2px solid #f0c36c;border-radius:18px;background:#fff9ea}.pending-card img,.pending-card video{display:block;width:100%;height:180px;object-fit:cover;border-radius:12px}.pending-card p{margin:8px 2px}.pending-card div{display:flex;gap:8px}.pending-card button{flex:1;padding:8px 12px}
.view-mode-button{min-height:44px;padding:10px 16px;background:#fff;color:var(--violet);box-shadow:0 5px 20px #57477118;font-weight:700;white-space:nowrap}@media(max-width:560px){.view-mode-button{width:44px;padding:0;font-size:0}.view-mode-button::before{content:"👁";font-size:1.15rem}}
.visibility-toggle{cursor:pointer;border:1px solid transparent}.visibility-toggle:hover,.visibility-toggle:focus-visible{border-color:var(--violet);box-shadow:0 0 0 3px rgba(113,98,184,.14)}.visibility-toggle[aria-pressed="false"]{background:#eee9f3;color:#665c70}.visibility-toggle:disabled{cursor:wait;opacity:.6}
@media(max-width:640px){.album>header{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;align-items:start;margin-bottom:18px}.album>header>div:first-child{min-width:0;width:100%}.album>header>div:first-child>.eyebrow{display:none}.album-title-row{width:100%;justify-content:space-between;gap:12px}.album-title-row h2{min-width:0;margin:0;font-size:clamp(2rem,11vw,3rem);line-height:1.02;overflow-wrap:anywhere}.title-pencil{flex:0 0 42px;width:42px;min-height:42px}.tools{display:grid;grid-template-columns:repeat(4,44px);gap:9px;width:100%;justify-content:start;align-items:center}.tools .icon{width:44px;min-height:44px}.tools .view-mode-button{width:44px;min-height:44px;padding:0;font-size:0}.tools .view-mode-button::before{content:"👁";font-size:1.15rem}}@media(max-width:360px){.album-title-row h2{font-size:clamp(1.8rem,10vw,2.35rem)}.tools{gap:7px}}

/* Contribution notices keep the header compact and pending files distinct. */
.contribution-notices{position:relative}
.contribution-notices[hidden],.contribution-notice-panel[hidden]{display:none}
.contribution-notice-button{display:grid;place-items:center;width:44px;height:44px;padding:0;background:transparent;border:0;border-radius:50%;cursor:pointer}
.contribution-dot{width:10px;height:10px;border-radius:50%;background:#c95060;box-shadow:0 0 0 4px #c9506015}
.contribution-notice-button:hover{background:#c950600d}
.contribution-notice-button:focus-visible,.contribution-notice-panel button:focus-visible{outline:2px solid #a43e50;outline-offset:3px}
.contribution-notice-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:30;width:min(330px,calc(100vw - 48px));max-height:60vh;overflow:auto;padding:16px;background:#fff;border:1px solid #efdee3;border-radius:18px;box-shadow:0 12px 36px #28223820;text-align:left}
.contribution-notice-panel p{margin:0 0 10px;color:#9b4050;font-weight:600}
.contribution-notice-panel button{display:block;width:100%;padding:12px;background:#fdf7f8;text-align:left;border:0;border-radius:12px;margin-top:8px;white-space:normal;overflow-wrap:anywhere}
.contribution-notice-panel button span{display:block;margin-top:5px;font-size:.85rem;color:#795862}
.contribution-status{display:block;margin:8px 0 12px;font-size:.8rem;color:#825613}
.sent-contributions{margin-top:24px}.contribution-hint{color:#746a80;font-size:.85rem;line-height:1.5}
.sent-card p{overflow-wrap:anywhere}.sent-card--accepted{background:#f0f8f3;border-color:#abcdb7}.sent-card--accepted .contribution-status{color:#316646}
.sent-file-icon{display:grid;place-items:center;height:100px;font-size:2rem;color:#a77a33}
@media(max-width:600px){.contribution-notices{position:static}.contribution-notice-panel{right:0;top:100%}.album header{position:relative}}
