
@import url('https://fonts.googleapis.com/css2?family=Caveat:wght@400;600&family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@0,400;1,400&display=swap');
:root{--ink:#363e32;--muted:#838877;--paper:#fffdf7;--accent:#64734f}*{box-sizing:border-box}body{margin:0;background:#f2f0e6;color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:30px;padding:14px 22px;background:var(--accent);color:white}button:disabled{opacity:.5;cursor:wait}button.secondary{background:transparent;border:1px solid #c8ccba;color:var(--ink)}a{color:inherit;text-decoration:none}header{display:flex;align-items:center;justify-content:space-between;padding:24px 5vw;border-bottom:1px solid #dadccd}header .logo{font:italic 25px 'Playfair Display',serif}nav{display:flex;gap:8px}nav a{padding:9px 13px;border-radius:20px;font-size:12px}nav a.active{background:#e0e4d5}.eyebrow{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--muted)}h1,h2{font-family:'Playfair Display',serif;font-weight:400}h1{font-size:clamp(38px,5vw,65px);line-height:1.12;margin:17px 0}h1 em{color:var(--accent)}p{line-height:1.7;color:var(--muted)}main{max-width:1100px;margin:55px auto;padding:0 24px}.layout{display:grid;grid-template-columns:1fr 1fr;gap:75px;align-items:start}.form{background:#faf9f2;padding:30px;border-radius:18px;border:1px solid #e0e2d5}label{display:block;margin:20px 0 8px;font-size:12px}input,textarea{width:100%;border:1px solid #d8dccd;background:#fffdf8;padding:13px;border-radius:9px;color:var(--ink)}textarea{resize:vertical;min-height:100px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.photo-box{height:190px;border:1px dashed #a8b197;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;overflow:hidden;background:#e9eddf}.photo-box img{width:100%;height:100%;object-fit:cover}.count{font-size:10px;color:var(--muted);text-align:right;margin-top:6px}.polaroid{background:var(--paper);padding:14px 14px 20px;box-shadow:0 10px 35px #3b483222;width:265px;transform:rotate(-5deg);color:var(--ink)}.polaroid .pic{width:100%;height:210px;object-fit:cover;background:linear-gradient(130deg,#ccd3bc,#e6daca);display:flex;align-items:center;justify-content:center;font:italic 55px 'Playfair Display',serif}.hand{font:26px/1.15 'Caveat','Segoe Print',cursive;overflow-wrap:anywhere;white-space:pre-wrap;margin:14px 0 8px}.signature{font-size:9px;letter-spacing:2px;text-transform:uppercase}.preview-zone{min-height:340px;display:flex;justify-content:center;align-items:center;margin:28px 0}.hint{font-size:11px}.status{min-height:24px;margin:12px 0;font-size:13px;color:var(--accent)}.success{text-align:center;padding:55px 20px}.success h2{font-size:38px}.wall{position:relative;overflow:hidden;height:calc(100dvh - 85px);min-height:500px;background:radial-gradient(ellipse at 50% 35%,#f9f7ed,#e5e9da)}.wall-title{position:absolute;top:25px;width:100%;text-align:center;z-index:1}.wall-title h1{font-size:42px;margin:10px}.wall .polaroid{position:absolute;width:clamp(150px,16vw,235px);animation:float 9s ease-in-out infinite alternate}.wall .pic{height:clamp(105px,12vw,175px)}.wall .hand{font-size:clamp(17px,1.9vw,25px)}@keyframes float{from{transform:translateY(0) rotate(var(--r))}to{transform:translateY(-18px) rotate(calc(var(--r) + 3deg))}}.wall .hero-card{left:50%!important;top:48%!important;z-index:10;width:310px;animation:arrive .7s both;transform:translate(-50%,-50%) rotate(-3deg)}.hero-card .pic{height:235px}.hero-card .hand{font-size:29px}@keyframes arrive{from{opacity:0;transform:translate(-50%,50%) rotate(15deg)}to{opacity:1;transform:translate(-50%,-50%) rotate(-3deg)}}.join{position:absolute;bottom:22px;right:25px;display:flex;align-items:center;gap:15px;background:#fffdf4e8;padding:12px 18px;border-radius:14px;z-index:20}.join svg{width:85px;height:85px}.wall-controls{position:absolute;bottom:24px;left:25px;z-index:20}.empty{text-align:center;padding-top:220px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:30px;margin-top:30px}.admin-grid .polaroid{width:100%;transform:none}.pill{font-size:10px;padding:6px 10px;background:#e6ebdc;border-radius:20px}.stats{display:flex;gap:20px;padding:20px 0}.stats strong{font-size:26px}.admin-grid button{font-size:11px;padding:9px 13px}.settings{padding:20px;background:#faf9f3;border:1px solid #daddcd;border-radius:12px}.settings input{width:auto}.footer{font-size:10px;letter-spacing:2px;text-align:center;margin:35px;color:var(--muted)}video{width:100%;border-radius:12px}dialog{max-width:430px;border:0;border-radius:15px;padding:25px}dialog::backdrop{background:#26332199}@media(max-width:700px){header{padding:18px 15px}header .logo{font-size:21px}nav a{padding:8px;font-size:10px}main{margin:30px auto}.layout{grid-template-columns:1fr;gap:15px}.layout>section:first-child{text-align:center}.preview-zone{min-height:300px}.form{padding:20px}.wall-title h1{font-size:30px}.join{right:12px;bottom:12px;padding:9px}.join svg{width:60px;height:60px}.join p{font-size:10px}.wall-controls{left:10px;bottom:120px}.settings input{width:100%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important}}

.wall .drifting-card{animation:none;left:0;top:0;will-change:transform;pointer-events:none}
.wall .hero-card{width:clamp(360px,33vw,580px);top:50%!important;box-shadow:0 25px 100px #24351d55}
.wall .hero-card .pic{height:clamp(270px,26vw,440px)}
.wall .hero-card .hand{font-size:clamp(32px,3vw,46px)}
.wall .hero-card .signature{font-size:12px}
@media(max-width:700px){.wall .hero-card{width:min(85vw,420px)}.wall .hero-card .pic{height:250px}}

body.led-mode header,body.guest-mode header{display:none}
body.led-mode .wall{height:100dvh;min-height:0}
body.led-mode .wall-controls{display:none}
#preview{touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}
#preview img{-webkit-user-drag:none;pointer-events:none}
#preview.swiping{cursor:grabbing}
#preview.swiping .polaroid{transition:none}

/* Wedding edition — Ivory & Olive */
:root{--ink:#444638;--muted:#8d8c7d;--paper:#fffdf8;--accent:#647052}
body{background:#f6f3ec;background-image:radial-gradient(ellipse at 0% 15%,#e8ecdd88,transparent 45%),radial-gradient(ellipse at 100% 85%,#eadccd66,transparent 40%)}
body.guest-mode main.layout{max-width:1120px;margin:0 auto;min-height:calc(100dvh - 70px);padding:65px 40px 35px;gap:85px;align-items:center}
body.guest-mode main.layout>section:first-child{position:relative;text-align:center;padding-top:20px}
body.guest-mode main.layout>section:first-child:before{content:'✧';display:block;font:35px 'Playfair Display',serif;color:#a79c7c;margin-bottom:20px}
.eyebrow{font-size:9px;letter-spacing:3.5px;color:#8f947e}
body.guest-mode h1{font-size:clamp(42px,4.5vw,63px);line-height:1.08;letter-spacing:-2px;margin:20px 0}
body.guest-mode h1 em{font-weight:400;color:#687756}
body.guest-mode .layout>section:first-child>p{font-size:12px;line-height:1.9}
body.guest-mode .preview-zone{min-height:335px;margin:25px 0 8px}
.polaroid{border:1px solid #ede8dc;background:linear-gradient(115deg,#fffef9,#faf7ee);padding:15px 15px 22px;box-shadow:2px 4px 5px #4d493810,0 18px 35px #4d49381c}
.polaroid .pic{border:1px solid #e9e4d9;background:radial-gradient(ellipse at 25% 20%,#e9e8da,transparent 65%),linear-gradient(145deg,#c9d1bc,#e7dbc6);color:#fffdf4;font-size:65px}
.polaroid .hand{color:#626347;font-weight:400;margin:16px 3px 12px;line-height:1.2}
.polaroid .signature{color:#a59c87;font-size:8px;letter-spacing:2px;margin:0 3px}
.form{background:#fffdf7d9;border:1px solid #e8e3d7;border-radius:25px;padding:35px;box-shadow:0 14px 50px #8074510a}
.form h2{font-size:32px;letter-spacing:-.7px}.form>.eyebrow{color:#a49476}
.photo-box{height:185px;background:#eeeee4;border:1px dashed #b9bda6;border-radius:15px;color:#868e70;position:relative}
.photo-box:empty{background:#eeeee4}.photo-box img{filter:saturate(.95)}
button{background:#657253;font-size:12px;letter-spacing:.2px;padding:14px 21px;transition:background .2s,transform .2s}button:hover{background:#526140}button:active{transform:translateY(1px)}
button.secondary{border-color:#dedfce;background:#fcfbf5;color:#70775e}button.secondary:hover{background:#eeefe5}
input,textarea{background:#fffef9;border-color:#e4e1d5;border-radius:10px;font-size:13px;padding:14px;outline:none;transition:border-color .2s,box-shadow .2s}input:focus,textarea:focus{border-color:#94a17c;box-shadow:0 0 0 3px #94a17c18}input::placeholder,textarea::placeholder{color:#b0ac9e}
label{font-size:11px;color:#747762}.form .row{gap:7px}.form .row button{padding:10px 15px;font-size:11px}
#send{padding:17px;border-radius:11px;font-size:13px;box-shadow:0 5px 12px #53613c15}
.hint{font-size:10px;line-height:1.7}.footer{font-size:8px;letter-spacing:3px;margin:22px}
.wall{background:#f1efe6;background-image:radial-gradient(ellipse at 0% 0%,#d8dfc999,transparent 48%),radial-gradient(ellipse at 100% 100%,#e2cdb688,transparent 48%),radial-gradient(ellipse at center,#fffdf5aa,transparent 65%)}
.wall:before,.wall:after{content:'';position:absolute;width:380px;height:580px;border:1px solid #bac2a355;border-radius:50%;pointer-events:none;transform:rotate(30deg);left:-220px;top:-160px}
.wall:after{left:auto;top:auto;right:-230px;bottom:-210px;transform:rotate(-35deg);border-color:#c8b38c66}
.wall-title{top:5vh;z-index:0}.wall-title .eyebrow{font-size:10px;letter-spacing:5px}.wall-title h1{font-size:clamp(40px,5vw,78px);font-style:italic;letter-spacing:-2px;margin:13px 0 8px;color:#61684f}.wall-title p{font-size:11px;letter-spacing:2px;color:#a09378}
.wall .polaroid{box-shadow:0 3px 5px #4d49380b,0 15px 30px #4d493823}
.wall .hero-card{box-shadow:0 6px 12px #4d493820,0 35px 100px #4d49383d}
.join{bottom:30px;right:35px;padding:13px 20px 13px 13px;border-radius:16px;background:#fffdf3ed;border:1px solid #e6e2d4;box-shadow:0 7px 25px #74674b0b;gap:15px}.join svg{width:76px;height:76px}.join strong{font:italic 23px 'Playfair Display',serif;color:#606a4e}.join p{font-size:10px;letter-spacing:.3px;color:#a3967e}
.success{max-width:650px;margin:0 auto;padding-top:65px}.success:before{content:'✧';font-size:36px;color:#a79872;display:block;margin-bottom:28px}.success h2{font-size:43px;letter-spacing:-1px}.success .preview-zone{margin:30px 0 25px}.success>p{font-size:13px}.success button{margin:15px 0}
@media(min-width:701px){body.guest-mode .layout>section:first-child .hint{max-width:270px;margin:0 auto}}
@media(max-width:700px){body.guest-mode main.layout{display:flex;flex-direction:column;gap:20px;padding:28px 20px 15px;min-height:auto}body.guest-mode main.layout>section:first-child{padding-top:0;width:100%}body.guest-mode main.layout>section:first-child:before{font-size:25px;margin-bottom:12px}body.guest-mode h1{font-size:43px;line-height:1.1;margin:15px 0;letter-spacing:-1.5px}body.guest-mode .layout>section:first-child>p{margin:10px 0}body.guest-mode .preview-zone{min-height:300px;margin:15px 0 8px}.preview-zone .polaroid{width:225px}.preview-zone .polaroid .pic{height:170px}.preview-zone .hand{font-size:24px}.form{width:100%;padding:25px 22px;border-radius:20px}.form h2{font-size:29px}.photo-box{height:175px}.wall-title{top:4vh}.wall-title h1{font-size:40px}.wall-title .eyebrow{font-size:8px;letter-spacing:3px}.wall-title p{font-size:9px;letter-spacing:1px}.join{bottom:16px;right:16px;padding:9px 12px;gap:9px}.join svg{width:55px;height:55px}.join strong{font-size:18px}.join p{font-size:8px}.success{padding:40px 22px}.success h2{font-size:35px}}

body.guest-mode:has(.guest-compose){height:100dvh;overflow:hidden}
main.guest-compose{width:min(100%,460px);height:100dvh;margin:0 auto;padding:18px 24px max(10px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:10px;overflow:auto}
.compose-title{text-align:center;flex-shrink:0}.compose-title .eyebrow{font-size:8px;letter-spacing:3px}.compose-title h2{font:italic 27px 'Playfair Display',serif;margin:6px 0 3px}.compose-title p{font-size:10px;margin:0}
.guest-compose .preview-zone{margin:0!important;min-height:0!important;flex:1;width:100%;display:flex;align-items:center;justify-content:center;touch-action:pan-x}
.guest-compose .editable-card{width:100%;max-width:340px;height:min(440px,100%);transform:rotate(-2deg);display:flex;flex-direction:column;padding:13px 13px 17px;box-shadow:0 15px 35px #4d493824;min-height:235px}
.photo-editor{flex:1;min-height:100px;position:relative;background:#e8ecde;overflow:hidden}
#photobox{height:100%;width:100%;padding:0;border:0;border-radius:0;background:linear-gradient(140deg,#e6eadc,#e9dfce);display:flex;align-items:center;justify-content:center;color:#8a9276}
#photobox img{width:100%;height:100%;object-fit:cover;pointer-events:none}
.photo-placeholder{font:40px 'DM Sans',sans-serif;display:flex;align-items:center;flex-direction:column;gap:8px}.photo-placeholder small{font:10px 'DM Sans',sans-serif;letter-spacing:.4px}
.photo-actions{position:absolute;bottom:8px;left:0;width:100%;display:flex;justify-content:center;gap:5px}.photo-actions button{font-size:9px;padding:7px 11px;background:#fffdf4e8;color:#697256;border:1px solid #ffffff66;border-radius:20px;box-shadow:0 2px 8px #39432b0c}
.editable-card textarea{flex-shrink:0;height:83px;min-height:0;resize:none;border:0;border-radius:0;background:transparent;font:25px/1.15 'Caveat','Segoe Print',cursive;padding:13px 3px 5px;color:#626347;touch-action:pan-y;box-shadow:none}
.editable-card textarea::placeholder{color:#aaa68e}.editable-card textarea:focus{outline:0;background:#eae8d629}
.card-bottom{display:flex;align-items:center;gap:7px;flex-shrink:0}.editable-card #name{flex:1;min-width:0;border:0;border-radius:0;background:transparent;padding:6px 3px;font-size:11px;color:#807b65;box-shadow:none}.editable-card #name:focus{background:#eae8d629}.card-bottom .count{font-size:8px;margin:0;color:#b5af9c;white-space:nowrap}
.compose-consent{margin:0;display:flex;align-items:center;gap:7px;font-size:9px;color:#8b8e7a;flex-shrink:0}.compose-consent input{width:14px;height:14px;margin:0;accent-color:#657253}
.guest-compose #send{width:100%;max-width:340px;margin:0!important;display:flex;align-items:center;justify-content:center;gap:14px;padding:12px 15px;border-radius:14px;flex-shrink:0;background:#657253;box-shadow:0 5px 20px #65725330;font-size:10px;letter-spacing:1px;text-align:left;min-height:61px}.swipe-cta small{display:block;font-size:9px;letter-spacing:0;margin-top:5px;color:#e3e8d8}.swipe-arrow{font-size:30px;line-height:1;animation:swipe-hint 1.8s ease-in-out infinite}@keyframes swipe-hint{0%,100%{transform:translateY(3px)}50%{transform:translateY(-4px)}}
.guest-compose .status{font-size:10px;margin:0;min-height:13px;max-width:340px;text-align:center;flex-shrink:0}.compose-note{font-size:8px;color:#a09d8b;flex-shrink:0;text-align:center}
@media(min-width:701px){main.guest-compose{padding-top:30px;padding-bottom:20px;gap:14px}.guest-compose .editable-card{max-width:360px;height:min(480px,100%)}.compose-title h2{font-size:34px}}
@media(max-height:650px){main.guest-compose{padding-top:10px;gap:6px}.compose-title p{display:none}.compose-title h2{font-size:23px}.guest-compose .editable-card{padding:10px}.editable-card textarea{height:65px;font-size:22px}.guest-compose #send{min-height:52px;padding:9px 12px}.photo-actions button{padding:5px 9px}}
@media(prefers-reduced-motion:reduce){.swipe-arrow{animation:none}}

#photobox:has(#cropimage){position:relative;overflow:hidden;touch-action:none;cursor:grab}
#photobox.dragging{cursor:grabbing}
#photobox #cropimage{position:absolute;max-width:none;max-height:none;object-fit:fill;user-select:none;pointer-events:none}
.crop-hint{position:absolute;top:8px;left:50%;transform:translateX(-50%);font-size:8px;white-space:nowrap;color:#fff;background:#333b2a66;border-radius:15px;padding:5px 9px;pointer-events:none}
.crop-zoom{position:absolute;right:8px;top:35px;display:flex;flex-direction:column;gap:4px}.crop-zoom span{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:#fffdf4ed;border-radius:50%;font-size:18px;color:#657253;cursor:pointer}

/* Admin-controlled appearance, always layered above the wedding defaults. */
body{background:var(--bg);color:var(--ink)}
body.guest-mode{background:radial-gradient(ellipse at 15% 0%,color-mix(in srgb,var(--accent) 12%,transparent),transparent 65%),var(--bg)}
body .eyebrow,body p,body .hint,body .count,body .compose-note,body .compose-consent{color:var(--muted)}
body .compose-title h2,body .success h2{color:var(--ink)}
body button,body .guest-compose #send{background:var(--accent);color:var(--paper)}
body button.secondary{background:var(--paper);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}
body .polaroid{background:var(--paper);position:relative;isolation:isolate}
body .polaroid:after{content:'';position:absolute;inset:0;background-image:var(--uploaded-frame);background-size:100% 100%;background-repeat:no-repeat;pointer-events:none;z-index:2}
body .polaroid .hand,body .editable-card textarea{color:var(--accent)}
body .polaroid .signature,body .editable-card #name{color:#756d5d}
body .editable-card textarea,body .editable-card .card-bottom,body .polaroid .hand,body .polaroid .signature{position:relative;z-index:3}
body #photobox{background:color-mix(in srgb,var(--accent) 15%,var(--paper));color:var(--accent)}
body .editable-card input,body .editable-card textarea{background:transparent}
body .wall{background:radial-gradient(ellipse at 0% 0%,color-mix(in srgb,var(--accent) 15%,transparent),transparent 60%),var(--bg)}
body.custom-background .wall{background-image:var(--display-background);background-size:cover;background-position:center}
body.custom-background .wall:before,body.custom-background .wall:after{display:none}
body .wall-title h1{color:var(--ink)}body .wall-title p{color:var(--muted)}
body .join{background:var(--paper)}body .join strong{color:var(--accent)}body .join p{color:#8d8677}
body .photo-actions button{background:var(--paper);color:var(--accent)}
body .settings,body .form{background:color-mix(in srgb,var(--paper) 93%,transparent)}
body .settings{color:#45483b}body .settings label,body .settings p{color:#7c806e}
body .keepsake-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}body .keepsake-actions button{margin:5px 0}
body.guest-mode:has(.success){height:auto;overflow:auto}.success{min-height:100dvh}
.asset-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin:20px 0}.asset-preview{height:160px;background:repeating-conic-gradient(#e8e7e0 0% 25%,#faf9f3 0% 50%) 50%/20px 20px;border:1px solid #dfdfd1;border-radius:10px;display:flex;align-items:center;justify-content:center;overflow:hidden;color:#999}.asset-preview img{width:100%;height:100%;object-fit:contain}.asset-control input[type=file]{width:100%;padding:10px;font-size:11px;margin:8px 0}.asset-control .hint{min-height:33px}.asset-control button{font-size:10px;padding:9px 12px}.settings>input:not([type=checkbox]),.settings select{display:block;width:100%;max-width:600px}.settings select{font:inherit;padding:13px;border:1px solid #dedfcf;border-radius:10px;background:#fffef8;color:#45483b}.theme-preview{display:flex;align-items:center;gap:7px;margin:15px 0}.theme-preview>span{width:28px;height:28px;border-radius:50%;border:1px solid #9994}.theme-preview small{margin-left:8px;color:#7c806e}
@media(max-width:700px){.asset-grid{grid-template-columns:1fr}.success .preview-zone{margin:25px auto}.keepsake-actions{flex-direction:column}.keepsake-actions button{width:100%}}
body[data-theme="midnight"] button:not(.secondary),body[data-theme="midnight"] .guest-compose #send{color:#182334}body[data-theme="midnight"] .swipe-cta small{color:#33405a}body .keepsake-actions button:disabled{opacity:.45}

/* A custom frame supplies its own edge and silhouette. */
body.custom-frame .polaroid,
body.custom-frame .wall .polaroid,
body.custom-frame .wall .hero-card,
body.custom-frame .guest-compose .editable-card{
 background:transparent!important;border:0!important;outline:0!important;box-shadow:none!important;filter:none!important;
}
body.custom-frame .polaroid .pic{border:0!important;outline:0!important;box-shadow:none!important}
body.custom-frame .polaroid:after{border:0;outline:0;box-shadow:none;background-color:transparent}

/* Custom artwork defines the photo opening; the photo fills the canvas below it. */
body.custom-frame .polaroid:not(.editable-card){aspect-ratio:4/5;min-height:0;padding:0}
body.custom-frame .polaroid:not(.editable-card)>.pic{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;margin:0;border:0}
body.custom-frame .polaroid:not(.editable-card)>.hand{position:absolute;top:72%;left:6%;width:88%;height:19%;margin:0;overflow:hidden}
body.custom-frame .polaroid:not(.editable-card)>.signature{position:absolute;bottom:4%;left:6%;max-width:88%;margin:0}
body.custom-frame .guest-compose .editable-card{padding:0;overflow:visible}
body.custom-frame .editable-card>.photo-editor{position:absolute;inset:0;min-height:0;overflow:visible;background:transparent}
body.custom-frame .editable-card #photobox{position:absolute;inset:0;width:100%;height:100%;border-radius:0;overflow:hidden;transform:none!important;transition:none}
body.custom-frame .editable-card>textarea{position:absolute;top:72%;left:6%;width:88%;height:19%;margin:0;padding:0 2px;z-index:4}
body.custom-frame .editable-card>.card-bottom{position:absolute;left:6%;bottom:3%;width:88%;z-index:4}
body .photo-actions{z-index:8}body .crop-hint,body .crop-zoom{z-index:8}
body.custom-frame .photo-actions{bottom:29%;z-index:8}
body.custom-frame .crop-hint{top:10px;z-index:8}
body.custom-frame .crop-zoom{top:45px;right:10px;z-index:8}
.download-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:30px 0 0;padding:18px;border:1px solid #d4d5c7;border-radius:12px;background:var(--paper);color:#45483b}
.download-toolbar label{margin:0;display:flex;gap:8px;align-items:center;font-size:11px}.download-toolbar input,.select-wish input{width:16px;height:16px;accent-color:var(--accent)}
.download-toolbar button{font-size:11px;padding:11px 15px}.download-toolbar .hint{flex-basis:100%;margin:0}.select-wish{display:flex;align-items:center;gap:7px;font-size:11px;margin:0 0 10px;color:var(--ink)}
.admin-grid .download-single{margin-top:10px;width:100%;font-size:11px;padding:10px}.admin-grid>div{min-width:0}

.join-qr{width:76px;height:76px;background:#fff}@media(max-width:700px){.join-qr{width:55px;height:55px}}

/* Permanent photo deletion actions */
body .danger-button,body[data-theme="midnight"] button.danger-button{background:#9c3f40;color:#fff;border:1px solid #9c3f40}body .danger-button:hover{background:#7f2d31}body .danger-button:disabled{opacity:.4;cursor:not-allowed}.admin-grid .delete-single{display:block;width:100%;margin-top:8px;padding:9px;font-size:11px}
