:root{--paper:#fcfaf7;--ink:#4f4a45;--taupe:#9b735e;--taupe-dark:#7e5d4d;--line:#e8ded7;--blue:#8faed5;--blue-soft:#dce8f4;--green:#70856b;--danger:#9b4f4f;--shadow:0 18px 50px rgba(91,71,58,.08)}*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;background:linear-gradient(180deg,#fff 0%,var(--paper) 100%);color:var(--ink);font-family:Montserrat,Arial,sans-serif;font-weight:300;min-height:100vh}a{color:inherit;text-decoration:none}button,input{font:inherit}.page-shell{width:min(1080px,calc(100% - 32px));margin:0 auto;padding:72px 0 36px;position:relative;z-index:2}.page-shell.narrow{width:min(760px,calc(100% - 32px))}.home-shell{padding-top:94px}.hero{text-align:center;max-width:760px;margin:0 auto 54px}.eyebrow{text-transform:uppercase;letter-spacing:.28em;font-size:12px;color:var(--taupe);font-weight:500;margin-bottom:16px}.hero h1,.login-card h1{font-family:Parisienne,cursive;font-size:clamp(64px,10vw,108px);line-height:.85;font-weight:400;color:var(--taupe);margin:12px 0 28px}.hero h1 span{display:inline-block}.hero h1 em,.login-card h1 em{font-family:"Cormorant Garamond",serif;font-size:.42em;font-style:normal;margin:0 .08em;vertical-align:middle}.hero p{font-family:"Cormorant Garamond",serif;font-size:23px;line-height:1.55;margin:0 auto;max-width:690px;color:#635d58}.hero.compact{margin-bottom:32px}.section-title{font-family:"Cormorant Garamond",serif!important;font-size:clamp(42px,7vw,62px)!important;line-height:1!important;letter-spacing:.01em}.action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.memory-card{background:rgba(255,255,255,.82);border:1px solid var(--line);border-radius:26px;padding:38px 34px;text-align:center;box-shadow:var(--shadow);transition:.25s ease;backdrop-filter:blur(6px)}.memory-card:hover{transform:translateY(-4px);border-color:#dac7ba}.memory-icon{width:58px;height:58px;border-radius:50%;margin:0 auto 19px;display:grid;place-items:center;background:var(--blue-soft);color:#6886ad;font-size:30px}.memory-icon.video{background:#eee7e1;color:var(--taupe)}.memory-card h2,.settings-card h2{font-family:"Cormorant Garamond",serif;font-size:32px;font-weight:500;margin:0 0 12px;color:var(--taupe-dark)}.memory-card p{line-height:1.7;min-height:82px;margin:0 0 26px}.button{border:1px solid transparent;border-radius:999px;padding:13px 22px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-weight:500;transition:.2s;background:#fff}.button.primary{background:var(--taupe);color:#fff;border-color:var(--taupe)}.button.primary:hover{background:var(--taupe-dark)}.button.ghost{border-color:#d7c7bc;color:var(--taupe-dark);background:rgba(255,255,255,.7)}.button.small{padding:8px 13px;font-size:12px}.button.wide{width:100%}.button:disabled{opacity:.45;cursor:not-allowed}.back-link{display:inline-block;margin-bottom:26px;color:var(--taupe);font-weight:500}.upload-panel,.login-card,.settings-card{background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:26px;padding:30px;box-shadow:var(--shadow)}.field-label{display:block;font-size:13px;font-weight:600;margin:0 0 9px;color:#625a54}.field-label span{font-weight:300;color:#918880;margin-left:5px}.text-input{width:100%;border:1px solid #ddd3cc;background:#fff;border-radius:14px;padding:14px 15px;outline:none;color:var(--ink)}.text-input:focus{border-color:#b79079;box-shadow:0 0 0 3px rgba(155,115,94,.10)}.drop-zone{margin:22px 0 18px;min-height:180px;border:1.5px dashed #cdb9aa;border-radius:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:28px;cursor:pointer;background:#fffdfb}.drop-zone strong{font-family:"Cormorant Garamond",serif;font-size:30px;color:var(--taupe-dark)}.drop-zone span,.helper{font-size:12px;color:#8f8780;line-height:1.5}.photo-preview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 18px}.photo-thumb{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;background:#f0ebe6;border:1px solid var(--line)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-thumb button{position:absolute;right:6px;top:6px;width:27px;height:27px;border:0;border-radius:50%;background:rgba(33,30,28,.75);color:#fff;cursor:pointer}.photo-file{display:grid;place-items:center;padding:8px;text-align:center;font-size:11px;height:100%}.progress-wrap{margin-top:18px}.progress{height:8px;background:#eee7e1;border-radius:99px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--taupe);transition:width .2s}.progress-wrap span{font-size:12px;display:block;margin-top:8px}.notice{margin-top:16px;border-radius:14px;padding:13px 15px;background:#f2eee9;line-height:1.5}.notice.success{background:#edf3eb;color:#52634f}.notice.error{background:#f8ecec;color:#894646}.hidden{display:none!important}.camera-shell{margin-top:22px;border-radius:24px;overflow:hidden;background:#211f1e;aspect-ratio:9/12;position:relative}.camera-shell video{width:100%;height:100%;object-fit:cover;display:block}.camera-placeholder{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:#d9d2cd;padding:30px}.camera-placeholder span{font-size:44px}.recording-badge{position:absolute;top:16px;left:16px;background:rgba(0,0,0,.5);color:#fff;border-radius:999px;padding:8px 11px;display:flex;align-items:center;gap:7px;font-size:12px}.recording-badge i{width:8px;height:8px;background:#e15a5a;border-radius:50%;animation:pulse 1s infinite}.camera-actions{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:18px}.icon-button{width:48px;height:48px;border-radius:50%;border:1px solid #d7c7bc;background:#fff;color:var(--taupe);font-size:24px;cursor:pointer}.record-button{height:54px;border-radius:999px;border:1px solid #d3c1b5;background:#fff;padding:0 19px;display:flex;align-items:center;gap:10px;cursor:pointer}.record-button i{width:20px;height:20px;border-radius:50%;background:#bd5757}.record-button.recording i{border-radius:4px}.centered{text-align:center}.site-footer{text-align:center;padding:22px 20px 42px;position:relative;z-index:2;color:var(--taupe)}.site-footer span{display:block;font-family:Parisienne,cursive;font-size:29px}.site-footer small{display:block;margin-top:3px;letter-spacing:.12em;font-size:10px;text-transform:uppercase}.botanical{position:fixed;pointer-events:none;z-index:0;width:260px;height:300px;opacity:.62}.botanical i{position:absolute;display:block}.botanical i:nth-child(1),.botanical i:nth-child(2),.botanical i:nth-child(3){width:54px;height:54px;border-radius:58% 42% 55% 45%;background:radial-gradient(circle at 65% 34%,#dbe8f7 0 11%,#99b8df 12% 38%,#7498c7 39% 50%,transparent 52%);filter:blur(.1px)}.botanical i:nth-child(4),.botanical i:nth-child(5){width:80px;height:25px;border-radius:100% 0 100% 0;background:linear-gradient(90deg,#819274,#5d7359);opacity:.7}.botanical-top{right:-52px;top:-38px;transform:rotate(14deg)}.botanical-top i:nth-child(1){right:64px;top:48px}.botanical-top i:nth-child(2){right:12px;top:98px;transform:scale(.7)}.botanical-top i:nth-child(3){right:110px;top:8px;transform:scale(.55)}.botanical-top i:nth-child(4){right:95px;top:126px;transform:rotate(-35deg)}.botanical-top i:nth-child(5){right:17px;top:166px;transform:rotate(22deg)}.botanical-bottom{left:-46px;bottom:-54px;transform:rotate(195deg)}.botanical-bottom i:nth-child(1){left:48px;top:65px}.botanical-bottom i:nth-child(2){left:116px;top:120px;transform:scale(.7)}.botanical-bottom i:nth-child(3){left:8px;top:145px;transform:scale(.55)}.botanical-bottom i:nth-child(4){left:81px;top:173px;transform:rotate(-25deg)}.botanical-bottom i:nth-child(5){left:3px;top:103px;transform:rotate(30deg)}@keyframes pulse{50%{opacity:.35}}.login-shell{min-height:85vh;display:grid;place-items:center;padding:30px}.login-card{width:min(440px,100%)}.login-card h1{text-align:center;font-size:58px;margin:8px 0 28px}.login-card .text-input{margin-bottom:17px}.admin-nav{position:relative;z-index:5;display:flex;align-items:center;gap:25px;padding:16px max(20px,calc((100vw - 1180px)/2));background:rgba(255,255,255,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(10px);position:sticky;top:0}.admin-nav .brand{font-family:Parisienne,cursive;font-size:26px;color:var(--taupe);white-space:nowrap}.admin-nav .brand em{font-family:serif;font-size:.7em}.admin-links{display:flex;gap:20px;flex:1}.admin-links a{font-size:13px;font-weight:500}.link-button,.danger-link{border:0;background:none;cursor:pointer;color:var(--taupe);font-size:12px}.danger-link{color:var(--danger);padding:0}.admin-shell{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:48px 0 70px;position:relative;z-index:2}.admin-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.admin-header h1{font-family:"Cormorant Garamond",serif;font-size:48px;font-weight:500;margin:0;color:var(--taupe-dark)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.stat{background:#fff;border:1px solid var(--line);padding:25px;border-radius:20px;box-shadow:var(--shadow)}.stat span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:#8e837b}.stat strong{display:block;font-family:"Cormorant Garamond",serif;font-size:42px;color:var(--taupe);margin-top:8px}.admin-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.media-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}.media-card>a{display:block;aspect-ratio:1;background:#eee}.media-card img{width:100%;height:100%;object-fit:cover}.media-meta{padding:13px;display:grid;gap:5px}.media-meta strong{font-size:13px}.media-meta span{font-size:11px;color:#8c837c}.video-list{display:grid;gap:16px}.video-card{display:grid;grid-template-columns:280px 1fr;gap:20px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:20px}.video-card video{width:100%;aspect-ratio:16/10;background:#111;border-radius:14px}.video-card h3{font-family:"Cormorant Garamond",serif;font-size:28px;margin:8px 0 5px}.video-card p{font-size:12px;color:#8b827b}.settings-form{display:grid;gap:18px}.settings-card{box-shadow:none}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:14px 0;border-bottom:1px solid #eee6e0}.switch-row:last-child{border-bottom:0}.switch-row strong,.switch-row small{display:block}.switch-row small{font-size:11px;color:#8f8780;margin-top:5px}.switch-row input{width:20px;height:20px;accent-color:var(--taupe)}.country-toolbar{display:flex;gap:8px;margin:20px 0;flex-wrap:wrap}.country-toolbar .text-input{max-width:320px}.country-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-height:430px;overflow:auto;padding-right:5px}.country-grid label{display:flex;align-items:center;gap:8px;border:1px solid #eee4dd;border-radius:12px;padding:9px;background:#fff}.country-grid input{accent-color:var(--taupe)}.country-grid span{font-size:11px;display:flex;gap:7px;align-items:center}.country-grid b{font-size:10px;color:var(--taupe);min-width:21px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-grid label>span{display:block;font-size:12px;font-weight:500;margin-bottom:7px}@media(max-width:800px){.page-shell{padding-top:52px}.action-grid,.stats-grid{grid-template-columns:1fr 1fr}.admin-gallery{grid-template-columns:repeat(3,1fr)}.country-grid{grid-template-columns:repeat(2,1fr)}.admin-nav{overflow-x:auto}.admin-links{min-width:max-content}.hero h1{font-size:72px}}@media(max-width:560px){.action-grid,.stats-grid,.form-grid{grid-template-columns:1fr}.memory-card{padding:28px 22px}.hero p{font-size:20px}.photo-preview{grid-template-columns:repeat(3,1fr)}.upload-panel{padding:20px}.camera-shell{aspect-ratio:3/4}.admin-gallery{grid-template-columns:repeat(2,1fr)}.video-card{grid-template-columns:1fr}.country-grid{grid-template-columns:1fr}.admin-nav .brand{display:none}.admin-header{align-items:start;gap:10px}.admin-header h1{font-size:38px}.botanical{opacity:.42}}
.setup-card{width:min(540px,100%)}.setup-intro{font-family:"Cormorant Garamond",serif;font-size:19px;line-height:1.55;text-align:center;margin:-8px 0 22px;color:#675f59}.setup-status{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;border-radius:14px;margin:16px 0;background:#f2eee9}.setup-status strong{font-size:13px}.setup-status span{font-size:12px}.setup-status.ok{background:#edf3eb;color:#52634f}.setup-status.bad{background:#f8ecec;color:#894646}.setup-details{border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:18px}.setup-details>div{display:flex;justify-content:space-between;gap:18px;padding:11px 13px;border-bottom:1px solid var(--line);background:#fff}.setup-details>div:last-child{border-bottom:0}.setup-details span{font-size:11px;color:#8f8780}.setup-details strong{font-size:12px;text-align:right;word-break:break-word}.setup-error-detail{margin:0 0 18px;font-size:12px}.setup-error-detail code{display:block;margin-top:8px;white-space:pre-wrap;word-break:break-word;background:#f8ecec;padding:10px;border-radius:10px}

/* Wedding action icons: fine-line pictograms matching the invitation palette. */
.memory-icon{width:72px;height:72px;background:transparent!important;border:1px solid rgba(155,115,94,.24);color:var(--taupe);box-shadow:inset 0 0 0 7px rgba(252,250,247,.9)}
.memory-icon svg{width:39px;height:39px;display:block;overflow:visible}
.memory-icon svg *{fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.memory-icon .icon-dot{fill:currentColor;stroke:none}
.memory-icon .icon-fill{fill:rgba(155,115,94,.12);stroke:currentColor}
.memory-icon-photo{color:#7f9bbb;border-color:rgba(143,174,213,.34);background:radial-gradient(circle at 50% 50%,rgba(220,232,244,.38),transparent 64%)!important}
.memory-icon-video{color:var(--taupe);background:radial-gradient(circle at 50% 50%,rgba(232,222,215,.45),transparent 64%)!important}
.memory-card:hover .memory-icon{transform:translateY(-2px);transition:transform .25s ease,border-color .25s ease}

/* v4 — closer to the original wedding announcement */
html,body{background:#fffdfb}
body{background:linear-gradient(180deg,#fff 0%,#fffdfb 68%,#fbf8f4 100%)}
.page-shell{position:relative}
.home-shell{padding-top:72px;max-width:980px}
.invitation-hero{max-width:720px;margin-bottom:38px}
.invitation-hero .eyebrow{font-size:12px;letter-spacing:.36em;margin-bottom:20px}
.invitation-hero h1{font-size:clamp(66px,9vw,104px);margin:6px 0 26px;color:#9a725c}
.invitation-hero p{max-width:650px;font-size:22px;line-height:1.5}

/* Use the actual watercolor flowers from the supplied invitation. */
.botanical{position:fixed;z-index:0;pointer-events:none;opacity:.92;overflow:visible}
.botanical i{display:none!important}
.botanical img{display:block;width:100%;height:100%;object-fit:contain}
.botanical-top{width:260px;height:458px;right:-10px;top:-8px;transform:none}
.botanical-bottom{width:285px;height:467px;left:-8px;bottom:-12px;transform:none}

.wedding-actions{max-width:770px;margin:0 auto;gap:18px}
.memory-card{position:relative;border-radius:22px;padding:25px 24px 23px;box-shadow:0 14px 38px rgba(91,71,58,.06);background:rgba(255,255,255,.91);border-color:#eadfd7;overflow:hidden}
.memory-card:before{content:"";position:absolute;width:58px;height:58px;right:-24px;top:-26px;border:1px solid rgba(143,174,213,.24);border-radius:50%}
.memory-card:after{content:"";position:absolute;width:6px;height:6px;right:18px;top:16px;border-radius:50%;background:#9eb7d6;box-shadow:9px 6px 0 -1px #c2d1e5,4px 14px 0 -1px #879c77;opacity:.72}
.memory-card h2{font-size:29px;margin-bottom:8px}
.memory-card p{font-size:14px;line-height:1.55;min-height:65px;margin-bottom:18px}
.memory-card .button{padding:10px 18px;font-size:13px}
.memory-icon{position:relative;width:58px;height:58px;border-radius:17px;margin-bottom:14px;background:#fff!important;box-shadow:inset 0 0 0 5px rgba(252,250,247,.96);border:1px solid rgba(155,115,94,.28);color:#9a725c}
.memory-icon:before,.upload-art-icon:before,.camera-art-icon:before{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background:#93acd0;right:-2px;top:-2px;box-shadow:6px 4px 0 -1px #b7c8df,2px 9px 0 -1px #809575}
.memory-icon svg{width:29px;height:29px}
.memory-icon svg *{stroke-width:2}
.memory-icon-photo,.memory-icon-video{color:#8d6b58!important;border-color:rgba(155,115,94,.28)!important;background:#fff!important}

/* Icons on the upload and camera screens use the same framed visual language. */
.upload-art-icon,.camera-art-icon{width:58px;height:58px;border:1px solid rgba(155,115,94,.28);border-radius:17px;display:grid;place-items:center;color:#8d6b58;background:#fff;position:relative;box-shadow:inset 0 0 0 5px rgba(252,250,247,.96)}
.upload-art-icon svg,.camera-art-icon svg{width:29px;height:29px}
.camera-placeholder .camera-art-icon{font-size:inherit;margin:0 auto 5px}
.camera-placeholder{color:#d9d2cd}
.drop-zone{min-height:166px;background:rgba(255,255,255,.86);border-style:solid;border-color:#dfd0c5}
.drop-zone strong{font-size:28px}

/* Video player should feel like a real preview and remain usable on mobile. */
.video-card video{display:block;object-fit:contain;background:#181716}
.video-card video::-webkit-media-controls{display:flex!important}

@media(max-width:700px){
  .home-shell{padding-top:54px;width:min(100% - 24px,980px)}
  .invitation-hero{margin-bottom:24px;padding:0 12px}
  .invitation-hero h1{font-size:clamp(56px,15vw,76px);line-height:.9;margin-bottom:18px}
  .invitation-hero p{font-size:18px;line-height:1.42}
  .botanical-top{width:180px;height:318px;right:-36px;top:-14px;opacity:.72}
  .botanical-bottom{width:190px;height:311px;left:-35px;bottom:-18px;opacity:.62}
  .wedding-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%}
  .memory-card{padding:18px 11px 15px;border-radius:18px;min-height:184px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}
  .memory-icon{width:50px;height:50px;border-radius:15px;margin-bottom:10px;flex:0 0 auto}
  .memory-icon svg{width:25px;height:25px}
  .memory-card h2{font-size:22px;line-height:1.05;margin-bottom:8px}
  .memory-card p{font-size:12px;line-height:1.35;min-height:0;margin:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .memory-card .button{display:none}
  .site-footer{padding-top:28px}
}
@media(max-width:390px){
  .invitation-hero p{font-size:17px}
  .memory-card{min-height:174px;padding-left:8px;padding-right:8px}
  .memory-card h2{font-size:20px}
  .memory-card p{-webkit-line-clamp:2}
}

/* v6: camera switch overlay + repeat upload state */
.camera-switch{position:absolute;right:14px;bottom:14px;z-index:4;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.42);background:rgba(46,42,39,.52);color:#fff;display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);box-shadow:0 8px 24px rgba(0,0,0,.16);transition:background .2s ease,transform .2s ease,opacity .2s ease}.camera-switch:hover{background:rgba(46,42,39,.7);transform:translateY(-1px)}.camera-switch svg{width:24px;height:24px}.camera-switch:disabled{opacity:.45;cursor:default;transform:none}.camera-actions .record-button{min-width:150px;justify-content:center}@media(max-width:560px){.camera-switch{right:12px;bottom:12px;width:44px;height:44px}.camera-switch svg{width:22px;height:22px}}

/* v7: camera overlay, brown upload icon, secondary back */
.camera-shell{isolation:isolate}
.camera-shell video{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;display:block}
.camera-placeholder{z-index:2}
.recording-badge{z-index:31}
.camera-switch{z-index:40!important;right:14px!important;bottom:14px!important;display:grid;visibility:visible;pointer-events:auto}
.camera-switch.hidden{display:none!important}
.camera-switch:not(.hidden){display:grid!important}
.upload-art-icon{color:var(--taupe-dark)!important;border-color:rgba(126,93,77,.36)!important}
.upload-art-icon:before{display:none!important}
.upload-art-icon svg{stroke:currentColor}
.secondary-back{margin-top:18px;background:rgba(255,255,255,.72);color:var(--taupe-dark);border-color:#d7c7bc}
.secondary-back:hover{background:#fff;border-color:#cbb5a7}
@media(max-width:560px){.secondary-back{margin-top:14px}.camera-switch{right:12px!important;bottom:12px!important}}


/* v8: mobile action copy visibility and button consistency */
.memory-card h2{font-weight:600}
.camera-actions{align-items:stretch}
.camera-actions .button,.camera-actions .record-button{height:54px;min-height:54px;padding-top:0;padding-bottom:0;box-sizing:border-box}
.camera-actions .button.primary{min-width:150px}
@media(max-width:700px){
  .memory-card{min-height:0;height:auto}
  .memory-card h2{font-weight:600}
  .memory-card p{display:block!important;-webkit-line-clamp:unset!important;-webkit-box-orient:initial!important;overflow:visible!important;white-space:normal;min-height:0;margin-bottom:0}
}
@media(max-width:390px){
  .memory-card p{display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important}
}

/* v9: bulk admin selection + video record icon */
.bulk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 18px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.9)}
.bulk-select-all{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:500;cursor:pointer}.bulk-select-all input,.media-check input{accent-color:var(--taupe);width:18px;height:18px}.button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.button.danger:disabled{opacity:.42;cursor:not-allowed}.bulk-delete{display:inline-flex;align-items:center;gap:7px}.bulk-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:rgba(255,255,255,.2);font-size:11px}.selectable-media{position:relative;transition:border-color .18s ease,box-shadow .18s ease}.selectable-media.is-selected{border-color:var(--taupe);box-shadow:0 0 0 2px rgba(155,115,94,.12)}.media-check{position:absolute;z-index:6;top:10px;left:10px;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.94);border:1px solid rgba(155,115,94,.26);box-shadow:0 5px 18px rgba(50,38,30,.12);cursor:pointer}.media-check input{margin:0}.video-card .media-check{top:12px;left:12px}.admin-flash{margin-bottom:18px}
.record-play-icon{display:grid;place-items:center;color:#bd5757}.record-play-icon svg{width:24px;height:24px}.record-stop-icon{display:none;width:18px;height:18px;border-radius:4px;background:#bd5757}.record-button.recording .record-play-icon{display:none}.record-button.recording .record-stop-icon{display:block}.record-button>i{display:none!important}
@media(max-width:560px){.bulk-toolbar{align-items:stretch;flex-direction:column}.bulk-toolbar .button{width:100%;justify-content:center}.media-check{top:8px;left:8px}}

/* Video record button: match primary/secondary typography and red action color */
.record-button{font-weight:500;color:#bd5757}
.record-button .record-label{color:#bd5757;font-weight:500}
.record-button .record-play-icon{color:#bd5757}
.record-button.recording{color:#bd5757}
.record-button.recording .record-label{color:#bd5757;font-weight:500}

/* v10: definitive video-button typography + slideshow administration */
.record-button{font-family:Montserrat,Arial,sans-serif!important;font-weight:500!important;color:#bd5757!important}
.record-button .record-label{font:inherit!important;font-weight:500!important;color:#bd5757!important}
.record-button .record-play-icon,.record-button .record-play-icon svg{color:#bd5757!important;stroke:currentColor!important}
.record-button.recording,.record-button.recording .record-label{color:#bd5757!important;font-weight:500!important}
.camera-actions .button{font-family:Montserrat,Arial,sans-serif;font-weight:500}

.slideshow-pair-card{max-width:560px;margin:0 auto;text-align:center}
.qr-frame{width:min(330px,82vw);aspect-ratio:1;margin:4px auto 20px;padding:16px;border:1px solid #dfd0c5;border-radius:24px;background:#fff;box-shadow:0 12px 35px rgba(91,71,58,.08)}
.qr-frame img{width:100%;height:100%;object-fit:contain;display:block}
.pair-code{display:flex;align-items:center;justify-content:center;gap:14px;margin:4px 0 16px;color:#8f8780;font-size:13px}.pair-code strong{font-size:22px;letter-spacing:.18em;color:var(--taupe-dark)}
.slideshow-admin-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:18px;margin-bottom:18px}
.inline-setting{display:flex;gap:10px;align-items:center}.inline-setting .text-input{min-width:0}.inline-setting>span{white-space:nowrap;color:#8f8780;font-size:13px}
.scanner-box{position:relative;aspect-ratio:4/3;border-radius:18px;overflow:hidden;background:#171615;margin:16px 0}.scanner-box video{width:100%;height:100%;display:block;object-fit:cover}.scanner-line{position:absolute;left:10%;right:10%;top:50%;height:1px;background:#bd5757;box-shadow:0 0 12px rgba(189,87,87,.7)}
.scanner-actions{display:flex;gap:10px;flex-wrap:wrap}.manual-approve{margin-top:18px}.slideshow-sessions{margin-top:18px}.session-table-wrap{overflow:auto}.session-table{width:100%;border-collapse:collapse;font-size:13px}.session-table th,.session-table td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.session-table th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#8f8780}.session-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:600;letter-spacing:.05em}.status-approved{background:#edf3eb;color:#52634f}.status-pending{background:#f4eee7;color:#8d6b58}.status-revoked{background:#f8ecec;color:#894646}
@media(max-width:820px){.slideshow-admin-grid{grid-template-columns:1fr}.inline-setting{flex-wrap:wrap}.inline-setting .text-input{flex:1 1 170px}.admin-header{gap:12px;align-items:flex-start}.admin-header>.button{flex:0 0 auto}}
@media(max-width:560px){.qr-frame{padding:12px;border-radius:20px}.scanner-actions .button{width:100%}.inline-setting .button{width:100%}}

/* v11: engagement prompts + more readable mobile home */
.engagement-card{max-width:770px;margin:22px auto 0;padding:24px 26px;text-align:center;border:1px solid #e6d8cf;border-radius:22px;background:rgba(255,255,255,.78);box-shadow:0 12px 34px rgba(91,71,58,.055)}
.engagement-card.inline-challenge{max-width:none;margin:0 0 18px;padding:20px 24px}
.engagement-kicker{text-transform:uppercase;letter-spacing:.2em;font-size:11px;font-weight:600;color:var(--taupe);margin-bottom:9px}
.engagement-card h2{font-family:"Cormorant Garamond",serif;font-size:30px;line-height:1.12;font-weight:600;color:var(--taupe-dark);margin:0 0 8px}
.engagement-card p{font-size:14px;line-height:1.6;color:#6f6761;margin:0 auto 16px;max-width:620px}
.text-action{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--taupe-dark);font:500 12px Montserrat,Arial,sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:10px 12px;margin-left:8px}
.video-prompt-card h2{font-size:28px}

@media(max-width:700px){
  .invitation-hero{margin-bottom:32px}
  .invitation-hero .eyebrow{margin-bottom:20px}
  .invitation-hero h1{margin-top:16px;margin-bottom:24px}
  .invitation-hero p{line-height:1.62}
  .wedding-actions{grid-template-columns:1fr!important;gap:16px;width:100%;max-width:520px}
  .memory-card{padding:24px 22px 22px;min-height:0;align-items:center}
  .memory-icon{margin-bottom:15px}
  .memory-card h2{font-size:27px;line-height:1.18;margin-bottom:12px}
  .memory-card p{font-size:14px;line-height:1.62;margin-bottom:18px!important;max-width:420px}
  .memory-card .button{display:inline-flex!important;margin-top:auto}
  .engagement-card{margin-top:18px;padding:22px 18px}
  .engagement-card h2{font-size:27px}
  .engagement-card p{font-size:13px;line-height:1.6}
  .engagement-card .button{width:100%;margin-top:2px}
  .text-action{margin:8px 0 0}
}

/* QR call-to-action shown during the live slideshow */
.slideshow-guest-qr{position:absolute;right:20px;bottom:20px;z-index:12;display:flex;align-items:center;gap:12px;padding:9px 12px 9px 9px;border-radius:16px;background:rgba(255,255,255,.91);border:1px solid rgba(155,115,94,.2);box-shadow:0 8px 28px rgba(65,49,40,.1);color:#7e5d4d;font-family:Montserrat,Arial,sans-serif;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.slideshow-guest-qr img{width:74px;height:74px;display:block;border-radius:8px;background:#fff}
.slideshow-guest-qr strong{display:block;font-family:"Cormorant Garamond",serif;font-size:20px;line-height:1.05;font-weight:600;max-width:130px}
.slideshow-guest-qr span{display:block;font-size:9px;line-height:1.35;letter-spacing:.04em;margin-top:4px;color:#8f8780;max-width:135px}
@media(max-width:700px){.slideshow-guest-qr{right:10px;bottom:10px;padding:7px 9px 7px 7px;gap:8px}.slideshow-guest-qr img{width:58px;height:58px}.slideshow-guest-qr strong{font-size:16px;max-width:105px}.slideshow-guest-qr span{font-size:8px;max-width:105px}}


/* v12: definitive mobile stacking + challenge card alignment */
.photo-challenge-card{max-width:none;margin-top:24px;padding:32px 34px;text-align:center}
.photo-challenge-card .engagement-kicker{margin-bottom:12px}
.photo-challenge-card h2{margin-bottom:12px}
.photo-challenge-card p{margin-bottom:22px}
.challenge-actions{display:flex;justify-content:center;align-items:center;gap:12px;flex-wrap:wrap}
.challenge-actions .button{height:54px;min-height:54px;padding:0 24px;min-width:170px;font-weight:500}

@media(max-width:900px){
  .wedding-actions.action-grid{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:18px!important;max-width:560px!important;margin-left:auto!important;margin-right:auto!important}
  .wedding-actions .memory-card{width:100%!important;min-width:0!important;padding:28px 24px 26px!important}
  .wedding-actions .memory-card h2{font-size:29px;line-height:1.22;margin-bottom:14px}
  .wedding-actions .memory-card p{font-size:15px;line-height:1.72;min-height:0!important;margin:0 auto 20px!important;max-width:470px}
  .wedding-actions .memory-card .button{height:54px;min-height:54px;padding:0 24px}
  .photo-challenge-card{max-width:560px!important;margin:20px auto 0!important;padding:28px 24px 26px!important}
  .photo-challenge-card p{font-size:15px;line-height:1.72;margin-bottom:20px}
  .challenge-actions{gap:12px}
  .challenge-actions .button{height:54px;min-height:54px;min-width:0;flex:1 1 0;padding:0 18px;white-space:nowrap}
}

@media(max-width:480px){
  .wedding-actions.action-grid{gap:16px!important}
  .wedding-actions .memory-card,.photo-challenge-card{padding:26px 20px 24px!important;border-radius:24px}
  .wedding-actions .memory-card h2,.photo-challenge-card h2{font-size:27px}
  .wedding-actions .memory-card p,.photo-challenge-card p{font-size:14px;line-height:1.72}
  .challenge-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:10px}
  .challenge-actions .button{width:100%;padding:0 12px;font-size:14px}
}


/* v13: mobile home — forced single-column layout, challenge spacing and icon */
.memory-icon-challenge{
  color:var(--taupe-dark)!important;
  border-color:rgba(155,115,94,.28)!important;
  background:#fff!important;
  margin-bottom:14px;
}
.memory-icon-challenge:before{display:none!important}
.memory-icon-challenge svg{width:29px;height:29px;stroke:currentColor}

.photo-challenge-card{
  display:flex;
  flex-direction:column;
  align-items:center;
  overflow:visible;
}
.photo-challenge-card .challenge-actions{
  margin-top:28px!important;
  padding-top:0!important;
  width:100%;
}
.photo-challenge-card .challenge-actions .button{
  height:54px!important;
  min-height:54px!important;
  font-weight:500!important;
  box-sizing:border-box;
}

@media (max-width:900px){
  .home-shell .wedding-actions.action-grid{
    display:flex!important;
    flex-direction:column!important;
    grid-template-columns:none!important;
    width:min(100%,560px)!important;
    max-width:560px!important;
    gap:18px!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }
  .home-shell .wedding-actions.action-grid > .memory-card{
    display:flex!important;
    flex-direction:column!important;
    width:100%!important;
    max-width:none!important;
    flex:0 0 auto!important;
  }
  .home-shell .photo-challenge-card{
    width:min(100%,560px)!important;
    max-width:560px!important;
    margin:20px auto 0!important;
    padding:28px 24px 26px!important;
  }
  .home-shell .photo-challenge-card .challenge-actions{
    margin-top:28px!important;
    gap:12px!important;
  }
  .home-shell .photo-challenge-card .challenge-actions .button{
    display:inline-flex!important;
    visibility:visible!important;
    opacity:1!important;
    flex:1 1 0!important;
    min-width:0!important;
  }
}

@media (max-width:480px){
  .home-shell .wedding-actions.action-grid{gap:16px!important}
  .home-shell .photo-challenge-card{padding:26px 20px 24px!important}
  .home-shell .photo-challenge-card .challenge-actions{
    display:flex!important;
    flex-direction:column!important;
    gap:10px!important;
    margin-top:26px!important;
  }
  .home-shell .photo-challenge-card .challenge-actions .button{
    width:100%!important;
    flex:0 0 54px!important;
  }
}


/* v14: photo/video subpages — prompt actions and mobile camera buttons */
.inline-challenge{
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}
.inline-challenge p{
  margin-bottom:0!important;
}
.inline-challenge .prompt-next-button{
  margin-top:24px!important;
  min-height:54px!important;
  height:54px!important;
  padding:0 24px!important;
  min-width:190px;
  width:auto;
  font-family:Montserrat,Arial,sans-serif!important;
  font-size:15px!important;
  line-height:1!important;
  font-weight:500!important;
  white-space:nowrap;
  text-decoration:none!important;
  box-sizing:border-box;
}

.camera-actions .record-button,
.camera-actions .button.primary{
  height:54px!important;
  min-height:54px!important;
  box-sizing:border-box;
  font-size:16px!important;
  line-height:1.15!important;
  font-weight:500!important;
}
.camera-actions .record-button{
  min-width:210px!important;
  padding:0 22px!important;
  justify-content:center!important;
  flex:0 1 auto;
}
.camera-actions .record-button .record-label{
  font-size:16px!important;
  line-height:1.15!important;
  font-weight:500!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
  flex:0 0 auto;
}
.camera-actions .record-play-icon{
  flex:0 0 24px;
}
.camera-actions .button.primary{
  padding:0 24px!important;
  min-width:170px!important;
  white-space:nowrap!important;
}

@media(max-width:700px){
  .engagement-card.inline-challenge{
    margin-top:18px!important;
    margin-bottom:20px!important;
    padding:24px 20px 22px!important;
  }
  .engagement-card.inline-challenge h2{
    font-size:27px!important;
    line-height:1.18!important;
    margin-bottom:12px!important;
  }
  .engagement-card.inline-challenge p{
    font-size:14px!important;
    line-height:1.65!important;
    margin:0!important;
  }
  .inline-challenge .prompt-next-button{
    margin-top:24px!important;
    width:100%!important;
    max-width:320px;
  }

  /* On a phone, do not squeeze two 54 px actions into half-width buttons. */
  .camera-actions{
    display:flex!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:12px!important;
    width:100%;
    margin-top:18px!important;
  }
  .camera-actions .record-button,
  .camera-actions .button.primary{
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
    flex:0 0 54px!important;
    height:54px!important;
    min-height:54px!important;
    justify-content:center!important;
  }
  .camera-actions .record-button .record-label{
    font-size:16px!important;
    white-space:nowrap!important;
  }
}

/* v15: mobile horizontal-overflow hardening (Safari/iOS included) */
html{
  width:100%;
  max-width:100%;
  overflow-x:hidden; /* fallback */
  overflow-x:clip;
}
body{
  width:100%;
  max-width:100%;
  overflow-x:hidden; /* fallback for older Safari */
  overflow-x:clip;
  position:relative;
}

/* Prevent flex/grid children and media from creating a wider layout than viewport. */
img,svg,video,canvas{
  max-width:100%;
}
.page-shell,
.home-shell,
.hero,
.invitation-hero,
.wedding-actions,
.memory-card,
.upload-panel,
.engagement-card,
.photo-challenge-card,
.camera-shell,
.camera-actions,
.drop-zone,
.photo-preview,
.site-footer{
  min-width:0;
  max-width:100%;
}

/* Decorative invitation flowers must never enlarge the document scroll width. */
.botanical{
  max-width:none;
  contain:paint;
}

/* Long labels / controls may shrink instead of forcing page width. */
.button,
.record-button,
.text-action,
.text-input,
.field-label,
.memory-card h2,
.memory-card p,
.engagement-card h2,
.engagement-card p{
  min-width:0;
  max-width:100%;
}

@media(max-width:700px){
  /* Previous syntax could be interpreted inconsistently by Safari. */
  .home-shell{
    width:min(calc(100% - 24px),980px)!important;
    max-width:calc(100% - 24px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }

  .page-shell,
  .page-shell.narrow{
    width:calc(100% - 24px)!important;
    max-width:calc(100% - 24px)!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }

  .wedding-actions,
  .wedding-actions.action-grid,
  .photo-challenge-card,
  .engagement-card,
  .engagement-card.inline-challenge,
  .upload-panel,
  .camera-shell{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
  }

  .memory-card,
  .challenge-actions,
  .challenge-actions > *,
  .camera-actions,
  .camera-actions > *{
    min-width:0!important;
    max-width:100%!important;
  }

  /* Keep decorative artwork visually outside the content without creating horizontal pan. */
  .botanical-top{right:-36px!important}
  .botanical-bottom{left:-35px!important}
}

@media(max-width:480px){
  .challenge-actions{
    grid-template-columns:minmax(0,1fr)!important;
  }
  .challenge-actions .button,
  .challenge-actions .text-action{
    width:100%!important;
    min-width:0!important;
    white-space:normal!important;
  }
}

/* v16: simplified photo challenge flow */
.photo-challenge-strip{
  max-width:100%;
  margin:0 0 18px;
  padding:18px 22px 19px;
  text-align:center;
  background:rgba(255,255,255,.88);
  border:1px solid var(--line);
  border-radius:20px;
  box-shadow:0 10px 28px rgba(91,71,58,.05);
}
.photo-challenge-strip .engagement-kicker{margin:0 0 7px}
.photo-challenge-strip h2{
  margin:0;
  color:var(--taupe-dark);
  font-family:"Cormorant Garamond",serif;
  font-size:clamp(25px,4.5vw,31px);
  line-height:1.18;
  font-weight:600;
}
.photo-next-challenge{margin-top:16px;height:54px;min-height:54px;font-weight:500}
@media(max-width:560px){
  .photo-challenge-strip{margin-bottom:14px;padding:16px 18px 17px;border-radius:18px}
  .photo-challenge-strip h2{font-size:25px}
  .photo-next-challenge{margin-top:14px}
}

/* v17: admin application logs – same visual language as the rest of admin */
.admin-log-filter{margin-bottom:18px;padding:20px}
.admin-log-filter .log-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;align-items:end}
.admin-log-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;align-items:center}
.admin-log-count{font-size:12px;color:#8f8780;margin-left:auto}
.admin-log-table-card{padding:0;overflow:hidden}
.admin-log-table-wrap{overflow:auto;-webkit-overflow-scrolling:touch}
.admin-log-message{white-space:normal!important;min-width:260px;line-height:1.45}
.admin-log-code{font-size:10px;word-break:break-all;color:#746b64}
.admin-log-event{font-size:11px;color:var(--taupe-dark)}
.admin-log-detail summary{cursor:pointer;font-size:11px;color:#8f8780;font-weight:500}
.admin-log-detail pre{white-space:pre-wrap;word-break:break-word;font-size:11px;background:#faf7f4;padding:11px;border:1px solid #eee4dd;border-radius:10px;max-width:780px}
.session-status.status-info{background:#f2eee9;color:#766b63}
.session-status.status-queued{background:#f6f1ea;color:#896d5c}
.session-status.status-processing{background:#f4eee7;color:#8d6b58}
.session-status.status-paused{background:#f1edf5;color:#6e6179}
.session-status.status-retry{background:#f8f1df;color:#806a36}
.session-status.status-completed{background:#edf3eb;color:#52634f}
.session-status.status-failed{background:#f8ecec;color:#894646}
@media(max-width:900px){.admin-log-filter .log-filter-grid{grid-template-columns:1fr 1fr}.admin-log-count{margin-left:0;width:100%}}
@media(max-width:560px){.admin-log-filter .log-filter-grid{grid-template-columns:1fr}.admin-log-filter{padding:16px}.admin-log-actions .button{width:100%}.admin-log-table-card{border-radius:18px}.admin-log-message{min-width:220px}}

/* v18: fully styled admin logs + stuck upload queue */
.admin-subtitle{margin:8px 0 0;color:#8f8780;font-size:13px;line-height:1.55;max-width:680px}
.admin-log-header .button svg{flex:0 0 auto}
.admin-log-stats{margin-bottom:18px}
.admin-log-stats .stat{box-shadow:none}
.admin-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}
.admin-section-heading.compact{margin-bottom:14px}
.admin-section-heading .eyebrow{margin-bottom:8px}
.admin-section-heading h2{font-family:"Cormorant Garamond",serif;font-size:32px;line-height:1.1;font-weight:500;color:var(--taupe-dark);margin:0}
.admin-section-heading p{font-size:12px;line-height:1.6;color:#8f8780;max-width:720px;margin:8px 0 0}
.admin-stuck-card{padding:24px;margin-bottom:18px;box-shadow:none}
.queue-total-badge{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:7px 11px;border-radius:999px;background:#f4eee7;color:#8d6b58;font-size:11px;font-weight:600}
.admin-empty-state{display:flex;align-items:center;gap:14px;padding:19px;border:1px dashed #ded3cb;border-radius:16px;background:#fcfaf7;color:#7e5d4d}
.admin-empty-state svg{flex:0 0 auto}
.admin-empty-state strong,.admin-empty-state span{display:block}.admin-empty-state strong{font-size:13px}.admin-empty-state span{font-size:11px;color:#8f8780;margin-top:4px;line-height:1.45}
.queue-list{display:grid;gap:10px}
.queue-item{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px;border:1px solid #ece2db;border-radius:16px;background:#fff;transition:border-color .18s ease,background .18s ease}
.queue-item.is-stale{border-color:#e4cfc1;background:#fffaf7}
.queue-item-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;border:1px solid rgba(155,115,94,.22);background:#fcfaf7;color:var(--taupe)}
.queue-item-icon svg{width:24px;height:24px}.queue-item-icon.video{color:#9b4f4f;background:#fff8f8}.queue-item-main{min-width:0}
.queue-item-topline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.queue-item-topline>strong{font-size:13px;color:#625a54}
.queue-stale-badge{display:inline-flex;padding:5px 8px;border-radius:999px;background:#f8ecec;color:#894646;font-size:10px;font-weight:600}
.queue-item-meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:5px;color:#948b84;font-size:10px}.queue-item-meta span+span:before{content:"·";margin-right:10px}
.queue-client-id{display:block;margin-top:7px;font-size:10px;color:#756b65;word-break:break-all}.queue-item-main p{margin:6px 0 0;font-size:11px;line-height:1.45;color:#7d746e}
.queue-cancel-form{margin:0}.queue-cancel-form .button{white-space:nowrap}
.admin-log-filter{box-shadow:none}.admin-log-filter .log-filter-grid label>span{display:block;font-size:11px;font-weight:500;margin-bottom:7px;color:#6d645e}
.admin-log-table-card{box-shadow:none}.admin-log-table thead th{background:#fcfaf7}.admin-log-table tbody tr:hover:not(.admin-log-detail-row){background:#fffdfb}
.admin-log-detail-row td{border-bottom:1px solid var(--line);background:#fcfaf7;padding-top:0!important}.admin-table-empty{padding:34px!important;text-align:center!important;color:#8f8780}
.session-status.status-cancelled{background:#eee9e5;color:#665c56}
@media(max-width:900px){.admin-log-stats{grid-template-columns:1fr 1fr}.queue-item{grid-template-columns:44px minmax(0,1fr)}.queue-cancel-form{grid-column:1/-1}.queue-cancel-form .button{width:100%}.admin-section-heading{gap:12px}}
@media(max-width:560px){.admin-log-header{display:grid;gap:16px}.admin-log-header .button{width:100%}.admin-log-stats{grid-template-columns:1fr 1fr}.admin-log-stats .stat{padding:18px}.admin-log-stats .stat strong{font-size:34px}.admin-stuck-card{padding:18px}.admin-section-heading{display:block}.queue-total-badge{margin-top:12px}.queue-item{grid-template-columns:40px minmax(0,1fr);padding:12px;gap:11px}.queue-item-icon{width:40px;height:40px;border-radius:12px}.queue-item-icon svg{width:21px;height:21px}.queue-item-meta{display:grid;gap:3px}.queue-item-meta span+span:before{display:none}}

/* v17: video prompt metadata, dashboard navigation and selfie preview */
.camera-shell video.selfie-preview{transform:scaleX(-1);transform-origin:center}
.media-prompt-tag{display:inline-flex;flex-direction:column;gap:3px;margin:6px 0 12px;padding:8px 11px;border:1px solid rgba(155,115,94,.22);border-radius:12px;background:#fbf7f3;color:var(--taupe-dark);font-size:12px;line-height:1.45}
.media-prompt-tag span{font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#9a8a7f}
.stat-link{position:relative;display:block;padding-right:58px;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.stat-link:hover{transform:translateY(-2px);border-color:#dac7ba;box-shadow:0 14px 34px rgba(91,71,58,.10)}
.stat-link-arrow{position:absolute;right:20px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:34px;height:34px;border:1px solid #e1d4cb;border-radius:50%;color:var(--taupe);font-size:20px;font-weight:400;line-height:1}
@media(max-width:560px){.stat-link{padding-right:52px}.stat-link-arrow{right:16px;width:32px;height:32px}}

/* v19: dashboard chevrons use SVG instead of font glyph */
.stat-link-arrow{font-size:0!important}
.stat-link-arrow svg{display:block;width:19px;height:19px;stroke:currentColor;flex:0 0 auto}


/* v20: admin video metadata spacing + simple dashboard chevron */
.video-card-content{display:flex;flex-direction:column;align-items:flex-start;min-width:0;padding-top:2px}
.video-card-content h3{margin-top:6px}
.video-card-content>p{margin:0 0 14px}
.video-card-content .media-prompt-tag{display:flex;width:fit-content;max-width:min(100%,620px);margin:0 0 18px}
.video-card-actions{display:flex;align-items:center;gap:10px;margin-top:0;padding-top:0}
.video-card-actions .button{margin:0}
.stat-link{padding-right:48px}
.stat-link-arrow{right:22px;top:50%;transform:translateY(-50%);width:auto!important;height:auto!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--taupe)!important;display:flex!important;align-items:center;justify-content:center;padding:0!important}
.stat-link-arrow svg{width:22px!important;height:22px!important;stroke-width:2.2}
@media(max-width:560px){.video-card-content .media-prompt-tag{max-width:100%;margin-bottom:16px}.video-card-actions{width:100%}.video-card-actions .button{width:100%;justify-content:center}.stat-link{padding-right:42px}.stat-link-arrow{right:16px}}

/* v21: definitive admin dashboard chevron + video prompt layout */
.stat-link .stat-nav-chevron{
  position:absolute;
  right:22px;
  top:50%;
  transform:translateY(-50%);
  display:block;
  width:22px;
  height:22px;
  padding:0;
  margin:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:var(--taupe);
  line-height:0;
}
.stat-link .stat-nav-chevron svg{
  display:block;
  width:22px;
  height:22px;
  stroke:currentColor;
}
.video-card-content{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  min-width:0;
}
.video-card-content .media-prompt-tag{
  display:flex!important;
  flex-direction:column;
  width:fit-content;
  max-width:min(100%,620px);
  margin:0 0 20px!important;
}
.video-card-actions{
  display:flex;
  width:100%;
  margin:0;
  padding:0;
}
.video-card-actions .button{
  margin:0;
}
@media(max-width:560px){
  .stat-link .stat-nav-chevron{right:16px}
  .video-card-content .media-prompt-tag{max-width:100%;margin-bottom:18px!important}
  .video-card-actions .button{width:100%;justify-content:center}
}

/* v22: admin photos responsive list, image skeleton, pagination and ZIP export */
.admin-photo-filter-card{padding:18px 20px;margin:0 0 18px;box-shadow:none}
.admin-photo-filter-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.admin-photo-filter-form>label{flex:1 1 320px;min-width:220px}
.admin-photo-filter-form>label>span{display:block;font-size:12px;font-weight:500;margin-bottom:7px}
.admin-photo-count{font-size:12px;color:#8f8780;white-space:nowrap}
.admin-photo-bulk-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.admin-download-zip{display:inline-flex;gap:8px;align-items:center;white-space:nowrap}
.admin-photo-gallery{align-items:start}
.admin-photo-card{min-width:0}
.admin-photo-image-shell{position:relative;display:block;aspect-ratio:1;background:#f3eee9;overflow:hidden}
.admin-photo-image-shell img{position:relative;z-index:2;width:100%;height:100%;object-fit:cover;display:block;opacity:0;transition:opacity .22s ease}
.admin-photo-image-shell.is-loaded img{opacity:1}
.admin-photo-skeleton{position:absolute;z-index:1;inset:0;display:block;background:linear-gradient(100deg,#f1ebe6 20%,#faf7f4 38%,#f1ebe6 56%);background-size:220% 100%;animation:adminPhotoSkeleton 1.25s ease-in-out infinite}
.admin-photo-image-shell.is-loaded .admin-photo-skeleton,.admin-photo-image-shell.is-error .admin-photo-skeleton{display:none}
.admin-photo-image-shell.is-error{background:#f7f1ed}
@keyframes adminPhotoSkeleton{0%{background-position:100% 0}100%{background-position:-100% 0}}
.admin-photo-challenge-badge{align-items:center;gap:6px;width:max-content;max-width:100%;padding:5px 9px;margin-top:3px;border:1px solid rgba(155,115,94,.24);border-radius:999px;background:#fcfaf7;color:#7e5d4d;font-size:10px;line-height:1.25}
.admin-photo-challenge-badge>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-photo-no-challenge{font-size:10px;color:#aaa19a}
.admin-photo-hidden-badge{width:max-content;padding:5px 9px;border-radius:999px;background:#f8ecec;color:#894646;font-size:10px}
.admin-photo-meta-editor{margin-top:8px;padding-top:10px;border-top:1px solid #eee6e0;display:grid;gap:9px}
.admin-photo-meta-editor>label>span{display:block;font-size:10px;font-weight:600;margin-bottom:5px;color:#746b65}
.admin-photo-meta-editor select{padding:9px 10px;font-size:11px}
.admin-photo-slideshow-toggle{display:flex!important;align-items:center;gap:8px;font-size:11px;cursor:pointer}
.admin-photo-slideshow-toggle input{width:17px;height:17px;accent-color:var(--taupe);flex:0 0 auto}
.admin-photo-slideshow-toggle span{margin:0!important;font-size:11px!important;font-weight:300!important;color:inherit!important}
.admin-photo-meta-editor [data-save-photo-meta]{width:100%;justify-content:center}
.admin-photo-meta-status{display:none;font-size:10px;line-height:1.35}
.admin-pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin:28px 0 4px;flex-wrap:wrap}
.admin-pagination-pages{display:flex;align-items:center;gap:5px}
.admin-pagination-pages a,.admin-pagination-pages span{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;font-size:12px;color:#7e5d4d}
.admin-pagination-pages a{border:1px solid transparent}
.admin-pagination-pages a:hover{border-color:#ddcec3;background:#fff}
.admin-pagination-pages a.is-current{background:var(--taupe);color:#fff;border-color:var(--taupe)}
.admin-pagination .is-disabled{opacity:.4;pointer-events:none}
@media(max-width:700px){
  #adminPhotosRoot{width:min(100% - 24px,1180px);padding-top:30px}
  .admin-photo-header{display:flex;align-items:flex-end;gap:12px}
  .admin-photo-filter-card{padding:16px}
  .admin-photo-filter-form{display:grid;grid-template-columns:1fr;align-items:stretch}
  .admin-photo-filter-form>label{min-width:0;width:100%}
  .admin-photo-filter-form>.button{width:100%;justify-content:center}
  .admin-photo-bulk-toolbar{display:grid!important;grid-template-columns:1fr;gap:12px!important}
  .admin-photo-bulk-actions{display:grid;grid-template-columns:1fr;gap:9px;width:100%}
  .admin-photo-bulk-actions .button{width:100%;justify-content:center;min-height:46px}
  #adminPhotosRoot .admin-photo-gallery{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:18px!important;width:100%!important}
  #adminPhotosRoot .admin-photo-card{width:100%!important;max-width:none!important;display:grid;grid-template-columns:1fr;border-radius:22px;overflow:hidden}
  #adminPhotosRoot .admin-photo-image-shell{width:100%;aspect-ratio:4/3;max-height:none}
  #adminPhotosRoot .admin-photo-meta{padding:18px;gap:7px}
  #adminPhotosRoot .admin-photo-meta>strong{font-size:20px;line-height:1.25}
  #adminPhotosRoot .admin-photo-meta>span{font-size:12px;line-height:1.45}
  #adminPhotosRoot .admin-photo-meta-editor{margin-top:10px;padding-top:14px;gap:12px}
  #adminPhotosRoot .admin-photo-meta-editor select{font-size:16px;padding:12px 13px}
  #adminPhotosRoot .admin-photo-slideshow-toggle{font-size:14px;gap:10px}
  #adminPhotosRoot .admin-photo-slideshow-toggle input{width:20px;height:20px}
  #adminPhotosRoot .admin-photo-slideshow-toggle span{font-size:14px!important}
  #adminPhotosRoot .admin-photo-meta-editor [data-save-photo-meta]{min-height:48px;font-size:14px}
  .admin-pagination{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .admin-pagination-pages{grid-column:1/-1;grid-row:1;justify-content:center;flex-wrap:wrap}
  .admin-pagination>.button{width:100%;justify-content:center}
}
@media(max-width:380px){
  .admin-photo-header{display:block}.admin-photo-count{margin-top:6px}
  .admin-pagination-pages a,.admin-pagination-pages span{width:31px;height:31px}
}
@media(prefers-reduced-motion:reduce){.admin-photo-skeleton{animation:none}.admin-photo-image-shell img{transition:none}}

/* v23: compact thumbnail presentation inside admin photo cards */
#adminPhotosRoot .admin-photo-card{overflow:hidden}
#adminPhotosRoot .admin-photo-image-shell{
  width:auto;
  margin:14px 14px 0;
  aspect-ratio:4/3;
  border-radius:16px;
  background:#f5f0eb;
  border:1px solid rgba(155,115,94,.12);
  overflow:hidden;
}
#adminPhotosRoot .admin-photo-image-shell img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  border-radius:inherit;
}
#adminPhotosRoot .admin-photo-skeleton{border-radius:inherit}

@media(max-width:700px){
  #adminPhotosRoot .admin-photo-image-shell{
    width:auto!important;
    margin:12px 12px 0!important;
    aspect-ratio:16/10!important;
    border-radius:16px;
  }
}

/* v24: admin photo thumbnails always fill their preview frame */
#adminPhotosRoot .admin-photo-image-shell{
  position:relative;
  display:block;
  overflow:hidden;
}
#adminPhotosRoot .admin-photo-image-shell img[data-admin-photo]{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  min-width:100%!important;
  min-height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  object-position:center center!important;
  display:block!important;
  border-radius:0!important;
}

/* v25: hard-fill admin thumbnails; generated thumbnails are center-cropped to 4:3 */
#adminPhotosRoot .admin-photo-image-shell{
  position:relative!important;
  display:block!important;
  width:calc(100% - 28px)!important;
  margin:14px 14px 0!important;
  aspect-ratio:4/3!important;
  overflow:hidden!important;
  border-radius:16px!important;
  background:#f5f0eb!important;
}
#adminPhotosRoot .admin-photo-image-shell img,
#adminPhotosRoot .admin-photo-image-shell img[data-admin-photo]{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:cover!important;
  object-position:50% 50%!important;
  border-radius:0!important;
  margin:0!important;
  padding:0!important;
}
@media(max-width:700px){
  #adminPhotosRoot .admin-photo-image-shell{
    width:calc(100% - 24px)!important;
    margin:12px 12px 0!important;
    aspect-ratio:4/3!important;
  }
}

/* v26: wedding blue success messages */
.notice.success{background:#eef5fb!important;color:#5f7896!important;border:1px solid rgba(143,174,213,.28)!important}

/* v27: admin media group + editable wedding program + public program */
.admin-menu-group{position:relative;flex:0 0 auto}
.admin-menu-group summary{list-style:none;display:flex;align-items:center;gap:5px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}
.admin-menu-group summary::-webkit-details-marker{display:none}
.admin-menu-group summary svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.8;transition:transform .18s ease}
.admin-menu-group[open] summary svg{transform:rotate(90deg)}
.admin-submenu{position:absolute;z-index:40;top:calc(100% + 12px);left:-14px;min-width:150px;padding:7px;background:rgba(255,255,255,.98);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 32px rgba(64,48,38,.12);display:grid;gap:2px}
.admin-submenu:before{content:"";position:absolute;top:-13px;left:0;right:0;height:14px}
.admin-submenu a{display:block;padding:10px 11px;border-radius:9px;font-size:13px;white-space:nowrap}
.admin-submenu a:hover{background:#faf6f2;color:var(--taupe-dark)}
.admin-intro{margin:7px 0 0;max-width:680px;color:#8f8780;font-size:13px;line-height:1.55}
.program-editor-card{padding:24px}
.program-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}
.program-editor-head h2{margin:0 0 6px}
.program-editor-head p{margin:0;color:#8f8780;font-size:12px;line-height:1.5;max-width:620px}
.program-list{display:grid;gap:10px}
.program-row{display:grid;grid-template-columns:40px 125px minmax(180px,.9fr) minmax(220px,1.4fr) 42px;gap:10px;align-items:end;padding:12px;border:1px solid #eee4dd;border-radius:16px;background:#fff;transition:opacity .15s ease,transform .15s ease,box-shadow .15s ease}
.program-row.is-dragging{opacity:.48;box-shadow:0 12px 26px rgba(73,54,43,.1);transform:scale(.995)}
.program-field{display:block;min-width:0}.program-field>span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:#8f8780;margin:0 0 6px}.program-field .text-input{height:46px;padding:10px 12px}
.program-drag,.program-remove{height:46px;width:40px;border:1px solid #e3d6cc;border-radius:12px;background:#fff;color:var(--taupe);display:grid;place-items:center;cursor:pointer}
.program-drag{cursor:grab}.program-drag:active{cursor:grabbing}.program-drag svg{width:22px;height:22px;fill:currentColor}.program-remove{font-size:23px;line-height:1;color:#9b6b6b}
.program-empty{padding:30px 15px;text-align:center;border:1px dashed #ddd0c7;border-radius:16px;color:#9b928b;font-size:13px}

.public-home-nav{display:flex;justify-content:center;margin:-28px auto 34px;position:relative;z-index:5}
.public-home-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 22px;border:1px solid #decfc5;border-radius:999px;background:rgba(255,255,255,.88);color:var(--taupe-dark);font-weight:500;font-size:13px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.home-program{max-width:770px;margin:46px auto 12px;padding:34px 36px;border:1px solid #e6d8cf;border-radius:26px;background:rgba(255,255,255,.84);box-shadow:0 14px 38px rgba(91,71,58,.055);scroll-margin-top:24px}
.home-program>.eyebrow{text-align:center;margin-bottom:9px}.home-program>h2{text-align:center;font-family:"Cormorant Garamond",serif;font-size:44px;font-weight:500;color:var(--taupe-dark);margin:0 0 24px}
.home-program-list{display:grid}.home-program-row{display:grid;grid-template-columns:92px 1fr;gap:20px;padding:15px 0;border-bottom:1px solid #eee4dd;align-items:start}.home-program-row:last-child{border-bottom:0}.home-program-row time{font-family:"Cormorant Garamond",serif;font-size:24px;font-weight:600;color:var(--taupe);line-height:1.15}.home-program-row h3{font-family:"Cormorant Garamond",serif;font-size:24px;line-height:1.15;font-weight:600;color:var(--taupe-dark);margin:0}.home-program-row p{font-size:12px;line-height:1.55;color:#827972;margin:5px 0 0}

@media(max-width:900px){
  .program-row{grid-template-columns:40px 105px minmax(160px,1fr) minmax(180px,1.3fr) 42px}
}
@media(max-width:700px){
  .admin-menu-group{position:static}.admin-submenu{position:fixed;left:16px;right:16px;top:78px;min-width:0}
  .program-editor-head{display:grid}.program-editor-head .button{width:100%}
  .program-row{grid-template-columns:40px minmax(0,1fr) 42px;align-items:end}
  .program-time{grid-column:2}.program-name,.program-note{grid-column:1/-1}.program-drag{grid-column:1;grid-row:1}.program-remove{grid-column:3;grid-row:1}.program-row .program-name{grid-row:2}.program-row .program-note{grid-row:3}
  .home-program{padding:28px 22px;margin-top:34px}.home-program>h2{font-size:38px}.home-program-row{grid-template-columns:72px 1fr;gap:14px}.home-program-row time,.home-program-row h3{font-size:21px}
  .public-home-nav{margin-top:-18px;margin-bottom:28px}
}


/* v28: clear pre-recording state inside camera preview */
.camera-start-overlay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:35;min-height:58px;padding:0 24px;border:1px solid rgba(255,255,255,.72);border-radius:999px;background:rgba(255,255,255,.94);color:#bd5757;display:inline-flex;align-items:center;justify-content:center;gap:11px;font-family:Montserrat,Arial,sans-serif;font-size:15px;font-weight:500;white-space:nowrap;cursor:pointer;box-shadow:0 12px 34px rgba(30,25,22,.22);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:transform .18s ease,background .18s ease,box-shadow .18s ease}.camera-start-overlay:hover{background:#fff;transform:translate(-50%,-50%) scale(1.02);box-shadow:0 14px 38px rgba(30,25,22,.26)}.camera-start-overlay.hidden{display:none!important}.camera-start-overlay-icon{display:grid;place-items:center;color:#bd5757}.camera-start-overlay-icon svg{width:24px;height:24px;display:block}.camera-start-overlay-icon svg *{stroke:currentColor}.record-button.camera-ready-hidden{display:none!important}@media(max-width:560px){.camera-start-overlay{min-height:56px;padding:0 20px;font-size:14px;max-width:calc(100% - 48px)}.camera-start-overlay-icon svg{width:22px;height:22px}}


/* v29: reliable mobile camera switching + wedding-blue upload success */
.camera-switch:not(.hidden){display:grid!important;visibility:visible!important;pointer-events:auto!important;opacity:1!important}
.camera-switch:not(.hidden):disabled{opacity:.72!important;pointer-events:none!important}
.camera-switch.is-switching svg{animation:camera-switch-spin .8s linear infinite}
@keyframes camera-switch-spin{to{transform:rotate(180deg)}}
.notice.success{background:#eef5fb!important;color:#5f7896!important;border:1px solid rgba(143,174,213,.34)!important;box-shadow:none!important}
