@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:wght@400;500;600;700&display=swap');
:root{--ink:#263f38;--muted:#7e8177;--cream:#f9f6f0;--paper:#fffdfa;--linen:#eee7dc;--sage:#d7e2d7;--gold:#c6a272;--accent:#254b42;--danger:#b45951;--radius:18px;--shadow:0 14px 42px #2b493319;}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:'DM Sans',system-ui,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit}img{max-width:100%}.hidden{display:none!important}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #c6a272aa;outline-offset:3px}.ico{width:18px;height:18px;display:inline-block;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}.ico.sm{width:15px;height:15px}.ico.big{width:23px;height:23px}
.boot{min-height:100dvh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;color:#61776b}.loading-ring{width:34px;height:34px;border:2px solid #ddd5ca;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.sr{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}.muted{color:var(--muted)}.micro{text-transform:uppercase;letter-spacing:2.6px;font-size:10px;font-weight:700}.serif{font-family:'Playfair Display',Georgia,serif}.small{font-size:12px}.center{text-align:center}.spaced{letter-spacing:.07em}.caps{text-transform:uppercase}.line{height:1px;background:#e9e3d9;margin:20px 0}.link{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.btn{display:inline-flex;justify-content:center;align-items:center;gap:9px;padding:12px 19px;border:1px solid transparent;border-radius:9px;background:var(--accent);color:#fff;font-weight:700;text-decoration:none;transition:background .2s,transform .2s,box-shadow .2s;line-height:1.3}.btn:hover:not(:disabled){background:#3a6354;transform:translateY(-1px);box-shadow:0 8px 20px #24483920}.btn.secondary{background:#fff;color:var(--ink);border-color:#dcd9d1}.btn.secondary:hover{background:#f7f2ea}.btn.ghost{background:transparent;color:var(--ink);border-color:transparent}.btn.ghost:hover{background:#f0ece5}.btn.gold{background:#bb966d;color:white}.btn.danger{background:#fff4f1;color:var(--danger);border-color:#efd3cb}.btn.wide{width:100%}.btn.sm{padding:9px 12px;font-size:12px}.btn.icon-only{width:42px;height:42px;padding:0;border-radius:50%}
.input,.select,.textarea{display:block;width:100%;min-width:0;border:1px solid #ddd9ce;border-radius:10px;padding:12px 13px;color:#253e35;background:#fff;outline:none;transition:border .2s}.textarea{min-height:110px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--gold)}.field{display:block;margin-bottom:16px}.field>span,.field>label{display:block;font-size:11px;font-weight:700;margin-bottom:8px;color:#54675e;letter-spacing:.04em}.field small{display:block;color:var(--muted);margin-top:6px}.two-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.actions.end{justify-content:flex-end}.pill{border-radius:30px;padding:6px 11px;background:#edf3eb;color:#557265;display:inline-flex;gap:5px;align-items:center;font-size:11px;font-weight:700}.pill.warn{background:#fff1dc;color:#987043}.empty{padding:40px 18px;text-align:center;color:#8f9085;border:1px dashed #ddd4c7;border-radius:14px;background:#fffcf7}.empty .ico{width:34px;height:34px;color:#c1ad90;display:block;margin:0 auto 12px}
/* top navigation */
.topbar{height:74px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 clamp(18px,5vw,75px);border-bottom:1px solid #ece6dc;background:#fffdf9e9;backdrop-filter:blur(13px);position:sticky;top:0;z-index:40}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--accent);font-family:'Playfair Display',Georgia,serif;font-size:25px;font-weight:700;letter-spacing:-1.3px}.brand-logo{width:33px;height:33px;border:1px solid #bfc9b8;border-radius:9px;display:grid;place-items:center;transform:rotate(-7deg);color:#346054}.brand-logo .ico{transform:rotate(7deg)}.nav-links{display:flex;align-items:center;gap:18px}.nav-links a{font-size:12px;text-decoration:none;font-weight:700}.nav-links a:hover{color:#bc9668}.nav-links .btn{font-size:12px}
/* Home */
.home-hero{min-height:620px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:50px;max-width:1250px;margin:0 auto;padding:70px 32px 85px;position:relative}.hero-text h1{font-size:clamp(48px,6vw,82px);line-height:1.09;letter-spacing:-3px;margin:23px 0 21px;font-weight:500;max-width:600px}.hero-text p{max-width:480px;color:#798479;line-height:1.9;font-size:15px}.hero-buttons{margin:30px 0}.hero-stage{height:490px;position:relative;display:grid;place-items:center}.hero-stage:before{content:'';position:absolute;width:80%;height:85%;border-radius:48% 48% 2% 2%;background:#e1e9df;top:5%;left:11%}.hero-stage:after{content:'';position:absolute;width:67%;height:65%;border:1px solid #fff;top:16%;left:17%;border-radius:48% 48% 1% 1%;pointer-events:none}.photo-demo{position:relative;width:245px;height:330px;transform:rotate(-9deg) translateY(-12px);background:#fff;padding:13px 13px 40px;box-shadow:0 25px 55px #22372e44;z-index:2;transition:transform .8s}.photo-demo:hover{transform:rotate(-4deg) translateY(-24px)}.photo-demo .demo-art{width:100%;height:100%;position:relative;overflow:hidden;background:linear-gradient(155deg,#d5ddcf,#f2ddc4 55%,#bdcdbb)}.sun{position:absolute;top:30px;right:27px;width:85px;height:85px;border-radius:50%;background:#ffe8b9;box-shadow:0 0 42px #fff4d8}.hill{position:absolute;width:280px;height:150px;background:#7f9b82;border-radius:50%;bottom:-70px;left:-40px}.hill.two{background:#a8b89a;bottom:-37px;left:75px}.leaf-art{position:absolute;bottom:35px;left:35px;width:8px;height:110px;background:#58795e;transform:rotate(-23deg)}.leaf-art:before,.leaf-art:after{content:'';position:absolute;width:47px;height:20px;background:#6a886c;border-radius:100% 0 100% 0;left:-43px;top:26px;transform:rotate(-18deg)}.leaf-art:after{left:7px;top:57px;transform:rotate(155deg)}.hero-card-back{position:absolute;right:16%;top:8%;width:190px;height:270px;background:#d6baa0;transform:rotate(10deg);border:13px solid #fdfcf5;box-shadow:0 10px 34px #253a2f35;z-index:1}.float-label{position:absolute;bottom:25px;right:3%;z-index:4;background:#fff;padding:14px 18px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;animation:float 4s ease-in-out infinite}.float-label .ico{color:#a99170;margin-right:8px}@keyframes float{50%{transform:translateY(-9px)}}.feature-band{background:#f0ebe2;padding:40px 20px}.feature-grid{max-width:1100px;margin:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.feature{display:flex;align-items:center;gap:15px}.feature-icon{width:47px;height:47px;background:#fff;border-radius:12px;display:grid;place-items:center;color:var(--accent);flex-shrink:0}.feature h4{font-size:13px;margin:0 0 4px}.feature p{font-size:12px;margin:0;color:#83857a;line-height:1.6}.home-end{text-align:center;padding:65px 20px}.home-end h2{font-size:40px;margin:10px 0 22px;font-weight:500}
/* guest */
.guest-wrap{max-width:1120px;margin:auto;padding:34px 25px 100px}.guest-hero{min-height:380px;border-radius:20px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:44px 20px;text-align:center;background:linear-gradient(130deg,#dfe7da,#f9eadd 65%,#e0e7db)}.guest-hero:before,.guest-hero:after{content:'';position:absolute;width:280px;height:280px;border:1px solid #c8cfb7;border-radius:50%;top:-130px;left:-110px;box-shadow:0 0 0 50px #ffffff20,0 0 0 100px #ffffff13}.guest-hero:after{left:auto;right:-140px;top:auto;bottom:-140px}.guest-hero.has-cover{background-size:cover;background-position:var(--x,50%) var(--y,50%);background-repeat:no-repeat}.guest-hero.has-cover:before{inset:0;width:auto;height:auto;position:absolute;border:0;background:linear-gradient(0deg,#20392cad,#20392c55);box-shadow:none;border-radius:0}.guest-hero.has-cover .guest-hero-content{color:#fff}.guest-hero-content{z-index:1;position:relative}.guest-hero h1{font:500 clamp(40px,6vw,69px)/1.2 'Playfair Display',Georgia,serif;margin:17px 0;letter-spacing:-2px}.guest-hero .date{letter-spacing:2.5px;font-weight:700;font-size:11px}.guest-hero .little-heart{font-size:24px;font-family:Georgia,serif;color:#ab9577}.guest-tabs{display:flex;gap:7px;justify-content:center;flex-wrap:wrap;padding:23px 0 30px;position:sticky;top:73px;background:var(--cream);z-index:30;border-bottom:1px solid #eee8df}.guest-tab{display:inline-flex;align-items:center;gap:8px;min-height:39px;border:1px solid transparent;background:transparent;color:#798277;border-radius:40px;padding:9px 16px;font-weight:700;font-size:12px}.guest-tab.active{background:var(--accent);color:#fff;box-shadow:0 3px 9px #254b4225}.guest-content{max-width:900px;margin:10px auto 0}.section-eyebrow{text-align:center;color:#b49a77;font-size:10px;letter-spacing:2.4px;font-weight:700;text-transform:uppercase;margin-bottom:10px}.section-title{text-align:center;font:500 35px/1.25 'Playfair Display',Georgia,serif;margin:0 0 12px}.section-lead{text-align:center;color:#839084;line-height:1.8;max-width:560px;margin:0 auto 29px}.card{background:#fffefa;border:1px solid #ebe6dc;border-radius:16px;padding:25px;box-shadow:0 6px 25px #3e51490a}.guest-intro{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin:20px auto}.intro-art{border-radius:13px;min-height:265px;background:linear-gradient(145deg,#d4dfd3,#f6e7d8);display:flex;align-items:center;justify-content:center}.intro-art .ico{width:80px;height:80px;stroke-width:.8;color:#879d89}.intro-copy{align-self:center}.intro-copy h2{font:500 35px 'Playfair Display',Georgia,serif;margin:10px 0}.intro-copy p{line-height:1.8;color:var(--muted)}.name-form{max-width:650px;margin:26px auto}.limit-box{padding:15px 18px;background:#f0f3eb;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin:17px 0;color:#47705b}.photo-counter{display:flex;gap:6px}.photo-dot{height:9px;width:9px;background:#d3d9cb;border-radius:50%}.photo-dot.used{background:#557967}.photo-tile{border-radius:14px;overflow:hidden;background:#e5ebe1;aspect-ratio:4/5;position:relative}.photo-tile img{display:block;width:100%;height:100%;object-fit:cover}.photo-tile .tile-foot{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#1a282cba);padding:34px 12px 13px;color:white}.photo-tile .tile-foot b{font-size:12px}.photo-tile .tile-foot span{display:block;font-size:10px;opacity:.8;margin-top:3px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.cam-panel{max-width:730px;margin:auto}.cam-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.camera-frame{background:#202924;position:relative;border-radius:18px;overflow:hidden;max-height:70dvh;aspect-ratio:3/4;margin:auto;display:flex;align-items:center;justify-content:center;transition:aspect-ratio .3s}.camera-frame.landscape{aspect-ratio:4/3;max-width:730px}.camera-frame video,.camera-frame #capturePreview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.camera-frame .cam-guide{position:absolute;inset:6%;border:1px solid #ffffff55;border-radius:9px;pointer-events:none;z-index:2}.camera-frame .cam-guide:before,.camera-frame .cam-guide:after{content:'';position:absolute;width:25px;height:25px;border-top:3px solid #fff;border-left:3px solid #fff;top:0;left:0;border-radius:7px 0 0 0}.camera-frame .cam-guide:after{top:auto;left:auto;bottom:0;right:0;border:0;border-bottom:3px solid #fff;border-right:3px solid #fff;border-radius:0 0 7px 0}.camera-message{color:#fff;text-align:center;padding:30px;z-index:3;max-width:390px}.camera-message .ico{width:35px;height:35px;margin-bottom:14px}.flash-overlay{position:absolute;inset:0;background:#fff;pointer-events:none;opacity:0;z-index:5}.flash-overlay.animate{animation:cameraFlash .65s ease-out}@keyframes cameraFlash{0%{opacity:0}20%{opacity:1}100%{opacity:0}}.cam-toolbar{display:flex;justify-content:center;gap:12px;margin:16px 0;flex-wrap:wrap}.cam-toolbar .btn{min-width:85px}.camera-shutter{width:66px;height:66px;border:4px solid #fff;border-radius:50%;background:#f7f2e9;box-shadow:inset 0 0 0 5px #365e50,0 3px 12px #243c341a;transition:transform .2s}.camera-shutter:hover{transform:scale(1.06)}.filter-row{display:flex;gap:8px;overflow-x:auto;padding:9px 3px 17px;scrollbar-width:thin;justify-content:flex-start}.filter-chip{border-radius:30px;border:1px solid #e5dfd5;padding:9px 14px;background:#fff;white-space:nowrap;font-size:12px;font-weight:700;color:#678071}.filter-chip.active{border-color:var(--accent);background:#e1ede4;color:var(--accent)}.voice-panel{max-width:660px;margin:auto}.mic-circle{width:95px;height:95px;display:grid;place-items:center;border-radius:50%;background:#edf2e9;margin:25px auto 20px;color:var(--accent);position:relative}.mic-circle.recording:after{content:'';position:absolute;inset:-12px;border:1px solid #bb645d;border-radius:50%;animation:pulse 1.5s infinite}.mic-circle.recording{background:#f7e3dc;color:#af514b}@keyframes pulse{to{transform:scale(1.25);opacity:0}}.mic-circle .ico{width:36px;height:36px}.voice-time{font-size:26px;font-variant-numeric:tabular-nums;font-weight:700;letter-spacing:3px}.voice-card{border:1px solid #eae4da;background:#fff;padding:16px;border-radius:13px;display:grid;grid-template-columns:minmax(100px,1fr) minmax(150px,260px);gap:12px;align-items:center;margin:9px 0}.voice-card audio{width:100%;height:36px}.wish-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.wish-card{padding:23px;border:1px solid #e9e2d6;border-radius:13px;background:#fffefa}.wish-card:before{content:'“';font-family:Georgia,serif;font-size:48px;color:#d4b997;line-height:.8;display:block}.wish-card p{color:#52685d;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;margin:9px 0 18px}.wish-card .by{font-size:11px;font-weight:700;color:#9b836a}.footer{border-top:1px solid #e5ddd2;padding:30px;text-align:center;font-size:12px;color:#9a998e}.footer .brand{justify-content:center;margin-bottom:8px;font-size:20px}.event-info{text-align:center;margin:15px 0 28px;color:#7b857b;font-size:12px}
/* dashboard */
.dash-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100dvh;background:#f8f7f3}.sidebar{background:#fffdf8;border-right:1px solid #ece7db;display:flex;flex-direction:column;padding:25px 18px;min-height:100vh;position:sticky;top:0;height:100vh}.side-brand{padding:4px 14px 27px}.side-group-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:#a4a59a;padding:12px 16px}.side-button{border:0;border-radius:9px;background:transparent;display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:13px 15px;color:#718077;font-size:13px;font-weight:700;margin:2px 0}.side-button.active{background:#e9f0e8;color:#2b5346}.side-button:hover{background:#f4f5ef}.sidebar-bottom{margin-top:auto;padding:20px 8px 0;border-top:1px solid #eee8dc}.dash-main{padding:32px clamp(18px,4vw,58px) 70px;max-width:1400px;width:100%;margin:auto}.dash-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.dash-head h1{font:500 33px 'Playfair Display',Georgia,serif;margin:7px 0}.dash-head p{color:#879187;font-size:13px;margin:0}.dash-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat{background:#fff;border:1px solid #e9e7df;border-radius:13px;padding:23px}.stat .ico{color:#a9b8a7}.stat strong{font-size:31px;font-weight:600;display:block;margin-top:10px}.stat small{font-size:11px;color:#8f968c}.dash-card{background:#fff;border:1px solid #e8e7e0;border-radius:15px;padding:25px;margin-bottom:20px}.dash-card h3{margin:0 0 19px;font-size:16px}.dash-card>p{color:#89948a;line-height:1.7}.events-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.event-item{background:#fff;border:1px solid #ebe7df;border-radius:12px;padding:20px}.event-item h3{font-family:Georgia,serif;font-size:23px;font-weight:400;margin:8px 0 15px}.event-item .actions{justify-content:space-between}.preview-cover{width:100%;aspect-ratio:2.8;border-radius:11px;background:linear-gradient(110deg,#dde6d8,#f6e6d6);background-position:center;background-size:cover;display:flex;align-items:center;justify-content:center;color:#71887c;font:italic 26px Georgia,serif;position:relative;overflow:hidden}.preview-cover:after{content:' ';position:absolute;inset:10px;border:1px solid #ffffff80;border-radius:8px}.upload-area{border:1px dashed #bfc9b6;border-radius:10px;padding:19px;background:#fbfcf8;display:flex;align-items:center;gap:15px;flex-wrap:wrap}.range-row{display:grid;grid-template-columns:90px 1fr 44px;align-items:center;gap:12px;margin:13px 0}.range-row input{width:100%;accent-color:var(--accent)}.color-row{display:flex;gap:12px;align-items:center}.color-row input{width:47px;height:41px;border:0;background:none;cursor:pointer}.design-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px}.qr-layout{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:start}.qr-poster{background:linear-gradient(130deg,#fcfaf4,#f1e9db);border:1px solid #d9c6ac;aspect-ratio:148/210;padding:23px;text-align:center;max-width:350px;position:relative;overflow:hidden;color:#36554b;box-shadow:var(--shadow)}.qr-poster:before{content:'';position:absolute;top:-60px;left:-60px;width:135px;height:135px;border:1px solid #d9c8af;border-radius:50%;box-shadow:0 0 0 24px #d9c8af22,0 0 0 47px #d9c8af11}.qr-poster:after{content:'';position:absolute;bottom:-60px;right:-60px;width:135px;height:135px;border:1px solid #d9c8af;border-radius:50%;box-shadow:0 0 0 24px #d9c8af22,0 0 0 47px #d9c8af11}.qr-poster .qr-brand{font-family:Georgia,serif;font-size:23px;margin:15px 0 20px}.qr-poster h2{font:normal 28px Georgia,serif;margin:14px 0}.qr-poster canvas{width:67%;aspect-ratio:1;position:relative;z-index:1;background:white;padding:10px;margin:15px auto}.qr-poster .sub{font-size:11px;letter-spacing:2px;text-transform:uppercase}.table-wrap{overflow:auto}.simple-table{width:100%;border-collapse:collapse;text-align:left}.simple-table th{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#999f94;background:#f7f8f5;padding:13px}.simple-table td{padding:14px 13px;border-bottom:1px solid #eeeae4;font-size:12px}.simple-table td audio{width:220px;max-width:100%}.auth-shell{max-width:440px;margin:65px auto;background:#fff;border:1px solid #e6e0d5;border-radius:18px;padding:35px;box-shadow:var(--shadow)}.auth-shell h1{font:500 34px Georgia,serif;margin:12px 0}.auth-shell p{line-height:1.7;color:#849186}.dashboard-mobile-header{display:none}.banner{background:#fff7e7;color:#8c6b3c;border:1px solid #eee1be;border-radius:10px;padding:12px 15px;font-size:12px;line-height:1.6;margin-bottom:18px}.banner.success{background:#eef5eb;color:#4e7556;border-color:#d6e4d1}.banner.error{background:#fff1ee;color:#a8504a;border-color:#edcfca}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(100px);z-index:200;background:#203d32;color:#fff;padding:13px 20px;box-shadow:var(--shadow);border-radius:12px;max-width:min(90vw,520px);text-align:center;transition:transform .2s;pointer-events:none;font-size:13px}.toast.show{transform:translateX(-50%) translateY(0)}.modal-cover{position:fixed;inset:0;background:#172e2599;z-index:90;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px)}.modal{width:min(500px,100%);max-height:90dvh;overflow:auto;background:white;padding:25px;border-radius:16px;box-shadow:0 40px 70px #10251c4d}.modal h2{font:500 30px Georgia,serif;margin:0 0 16px}.modal .close-modal{float:right}
@media(max-width:960px){.home-hero{gap:18px}.hero-text h1{font-size:54px}.hero-stage{height:430px}.dash-shell{grid-template-columns:215px 1fr}.sidebar{padding:20px 10px}.dash-main{padding:24px 20px}.qr-layout{gap:15px}.qr-poster h2{font-size:24px}}
@media(max-width:720px){.topbar{height:66px;padding:0 17px}.brand{font-size:22px}.nav-links{gap:9px}.nav-links>a:not(.btn){display:none}.nav-links .btn{font-size:11px;padding:10px 12px}.home-hero{grid-template-columns:1fr;padding:48px 22px 30px;gap:0}.hero-text{text-align:center}.hero-text h1{font-size:clamp(45px,11vw,66px);max-width:570px;margin:17px auto;letter-spacing:-2px}.hero-text p{margin:auto}.hero-buttons{justify-content:center}.hero-stage{height:360px}.hero-stage:before{width:65%;height:95%;left:17%}.hero-stage:after{width:55%;height:75%;left:22%}.photo-demo{width:170px;height:240px}.hero-card-back{width:150px;height:205px;right:25%;top:15%}.float-label{right:5%;bottom:20px}.feature-grid{grid-template-columns:1fr;max-width:350px;gap:23px}.guest-wrap{padding:20px 15px 60px}.guest-hero{min-height:300px;border-radius:15px}.guest-hero h1{font-size:clamp(36px,9vw,53px)}.guest-tabs{top:65px;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;padding:12px 0 15px}.guest-tabs::-webkit-scrollbar{display:none}.guest-tab{white-space:nowrap;padding:10px 13px;font-size:11px}.guest-content{padding:9px 0}.section-title{font-size:30px}.guest-intro{grid-template-columns:1fr}.intro-art{min-height:170px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.wish-grid{grid-template-columns:1fr}.card{padding:19px}.voice-card{grid-template-columns:1fr}.camera-frame{max-height:65dvh}.camera-frame.landscape{max-height:58dvh}.dash-shell{display:block}.sidebar{display:none;position:static}.dashboard-mobile-header{display:flex;background:#fffdf9;position:sticky;top:0;z-index:50;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid #ebe5db}.dashboard-mobile-header .brand{font-size:20px}.mobile-nav{display:flex;gap:5px;overflow-x:auto;padding:12px 15px;background:#fffdf9;position:sticky;top:60px;z-index:50}.mobile-nav .side-button{margin:0;white-space:nowrap;padding:9px 11px;width:auto;font-size:11px}.mobile-nav .ico{width:15px;height:15px}.dash-main{padding:23px 15px 70px}.dash-head{align-items:flex-start}.dash-head h1{font-size:29px}.dash-grid{gap:8px}.stat{padding:14px}.stat strong{font-size:24px}.events-list{grid-template-columns:1fr}.design-grid,.qr-layout{grid-template-columns:1fr}.qr-poster{margin:auto;width:100%}.two-fields{grid-template-columns:1fr}.auth-shell{margin:35px 15px;padding:25px}.footer{padding:22px}.camera-shutter{width:59px;height:59px}}
@media(max-width:380px){.brand{font-size:20px}.guest-wrap{padding:14px 11px 55px}.guest-tab{padding:9px}.guest-hero{min-height:260px}.dash-grid{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:span 2}.photo-grid{gap:8px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Keep desktop dashboard navigation only in the left sidebar. */
.mobile-nav{display:none}
.toast{opacity:0;visibility:hidden}
.toast.show{opacity:1;visibility:visible}
@media(max-width:720px){.mobile-nav{display:flex}}

.little-heart .ico{width:24px;height:24px;stroke-width:1.25}

/* SEKeping Camera Studio V2 — immersive guest capture + adjustable analog effects */
.camera-immersive{min-height:100dvh;background:#171614;color:#f8f4eb;padding:0 0 38px;overflow-x:clip}
.camera-immersive .camera-frame{width:100%;max-width:760px;height:min(80dvh,850px);min-height:560px;max-height:none;aspect-ratio:auto!important;border-radius:0;margin:0 auto;position:relative;background:linear-gradient(145deg,#35312e,#121817);overflow:hidden;box-shadow:0 8px 36px #0004}
.camera-immersive .camera-frame.landscape{height:min(78dvh,850px);max-width:1000px}
.camera-immersive .camera-frame video,.camera-immersive .camera-frame #capturePreview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.camera-immersive .cam-guide{position:absolute;inset:3%;z-index:4;border:1px solid #ffffff28;border-radius:4px;pointer-events:none}
.camera-immersive .cam-guide:before,.camera-immersive .cam-guide:after{width:22px;height:22px;border-color:#e5d4baaa;border-width:1px}
.camera-immersive .flash-overlay{z-index:12}
.camera-immersive .camera-message{position:absolute;z-index:5;left:50%;top:46%;transform:translate(-50%,-50%);width:88%;font-size:14px;color:#f8f4ec;line-height:1.65;text-shadow:0 2px 4px #0006}
.camera-immersive .camera-message .btn{margin-top:12px;background:#faf5eb;color:#29231e}
.camera-immersive .camera-message .ico{height:38px;width:38px}
.camera-immersive .live-grain,.camera-immersive .live-vignette{position:absolute;inset:0;pointer-events:none;z-index:2}
.camera-immersive .live-grain{background-size:160px 160px;mix-blend-mode:overlay}
.camera-immersive .live-vignette{z-index:3}
.camera-immersive .cam-overlay-header{position:absolute;z-index:10;top:0;left:0;right:0;display:grid;grid-template-columns:50px 1fr 50px;align-items:start;gap:10px;padding:calc(21px + env(safe-area-inset-top,0px)) 24px 0;background:linear-gradient(to bottom,#0009,transparent);color:#fff;text-align:center}
.camera-immersive .cam-wedding-title{display:flex;flex-direction:column;gap:7px;align-items:center;min-width:0;text-shadow:0 2px 8px #0009}
.camera-immersive .cam-wedding-title strong{font-size:clamp(24px,4vw,35px);font-weight:600;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.camera-immersive .cam-wedding-title small{font-size:11px;font-weight:600;letter-spacing:3px;color:#e5d2b8}
.camera-immersive .cam-glass{border:1px solid #fffc;background:#171613a8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:#fff;border-radius:35px;min-height:46px;display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:10px 13px}
.camera-immersive .cam-glass.circle{width:48px;height:48px;border-radius:50%;padding:0}
.camera-immersive .cam-glass:hover{background:#332e29d9}
.camera-immersive .cam-film-stamp{position:absolute;left:24px;top:44%;font-size:12px;font-weight:700;letter-spacing:3px;color:#e98f65;z-index:9;writing-mode:vertical-rl;transform:none;text-transform:uppercase;text-shadow:0 2px 6px #0009;pointer-events:none}
.camera-immersive .camera-controls{position:absolute;left:0;right:0;bottom:0;z-index:9;padding:55px 26px 31px;background:linear-gradient(transparent,#00000094 24%,#0009);color:#fff}
.camera-immersive .camera-actions-row{display:grid;grid-template-columns:52px 1fr 52px;align-items:center;gap:18px;margin:0 auto 28px;max-width:550px}
.camera-immersive .camera-ratio{justify-self:center;display:flex;background:#211d1abf;padding:5px;border:1px solid #ffffff76;border-radius:32px;gap:3px;white-space:nowrap}
.camera-immersive .camera-ratio button{border:0;border-radius:25px;background:transparent;color:#eee2d5;letter-spacing:2px;font-size:11px;font-weight:700;padding:11px 20px}
.camera-immersive .camera-ratio button.selected{background:#f8f4eb;color:#332c26}
.camera-immersive .camera-snap-row{max-width:430px;display:grid;grid-template-columns:1fr 100px 1fr;align-items:center;justify-items:center;gap:16px;margin:0 auto 22px}
.camera-immersive .camera-shutter{border:5px solid #f4f1e9;box-shadow:inset 0 0 0 7px #403933,0 5px 20px #0009;background:#fffdf4;width:88px;height:88px;transition:transform .16s}
.camera-immersive .camera-shutter:active{transform:scale(.91)}
.camera-immersive .cam-remaining{width:70px;height:70px;background:#161612c9;border-radius:19px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.camera-immersive .cam-remaining b{font-size:27px;line-height:1;font-weight:600}
.camera-immersive .cam-remaining span{font-size:9px;letter-spacing:2px;color:#ded0bd}
.camera-immersive .cam-remaining.side{background:#ffffff19}
.camera-immersive .cam-upload{display:flex;align-items:center;justify-content:center;gap:11px;border:1px solid #f7e9d89a;border-radius:38px;max-width:390px;margin:0 auto;padding:15px 18px;color:#f6ebdd;letter-spacing:2.3px;font-size:11px;cursor:pointer;background:#13110fb0;min-height:49px}
.camera-immersive .cam-upload:hover{background:#2c2923}
.camera-immersive .camera-review-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.camera-immersive .cam-review-save{display:inline-flex;align-items:center;gap:9px;background:#f6f0e6;border:0;border-radius:34px;padding:13px 22px;color:#29221e;font-weight:700}
.camera-immersive .filter-studio{background:#f7f1e9;color:#2f2a24;padding:29px clamp(16px,4vw,38px) 50px;max-width:1000px;margin:auto;border-radius:0 0 22px 22px}
.camera-immersive .filter-studio-header{display:flex;align-items:center;justify-content:space-between;gap:13px;margin-bottom:22px}
.camera-immersive .filter-studio-header .micro{font-size:10px;color:#a3805c}
.camera-immersive .filter-studio-header h2{font-size:clamp(23px,4vw,30px);margin:7px 0;font-weight:500}
.camera-immersive .filter-studio-header p{margin:0;color:#837c72;line-height:1.6;font-size:12px;max-width:530px}
.camera-immersive .filter-category-row{display:flex;overflow-x:auto;gap:7px;padding:0 0 16px;scrollbar-width:none}
.camera-immersive .filter-category-row::-webkit-scrollbar{display:none}
.camera-immersive .filter-category{font-size:11px;font-weight:700;padding:9px 17px;border:1px solid #ddd4c8;border-radius:24px;color:#736c63;background:#fffcf7;white-space:nowrap}
.camera-immersive .filter-category.active{background:#28231f;color:#f9f3eb;border-color:#28231f}
.camera-immersive .filter-preview-grid{display:flex;overflow-x:auto;gap:12px;scrollbar-width:thin;padding:5px 1px 17px;scroll-snap-type:x proximity}
.camera-immersive .filter-preview-card{position:relative;flex:0 0 108px;scroll-snap-align:start;border:2px solid transparent;background:#fff;border-radius:13px;padding:6px;display:flex;flex-direction:column;align-items:center;gap:8px;transition:transform .2s,border .2s}
.camera-immersive .filter-preview-card.active{border-color:#957958;background:#f7eee3}
.camera-immersive .filter-preview-card:hover{transform:translateY(-3px)}
.camera-immersive .filter-thumbnail{width:100%;aspect-ratio:3/4;border-radius:7px;display:block;overflow:hidden;background:#d8c1a2}
.camera-immersive .filter-landscape{display:block;width:100%;height:100%;background:linear-gradient(175deg,#bbd1c4 0%,#dfe6cb 42%,#f6e4bb 72%,#c1a78e 100%);position:relative;overflow:hidden}
.camera-immersive .filter-sun{position:absolute;left:20%;top:21%;width:30px;height:30px;border-radius:50%;background:#f6dfb3;box-shadow:0 0 18px 6px #f8e5bf}
.camera-immersive .filter-hill{position:absolute;width:150%;height:50%;left:-12%;bottom:-20%;background:#567d6c;border-radius:60% 55% 0 0;transform:rotate(13deg)}
.camera-immersive .filter-hill.back{left:20%;bottom:-35%;background:#9a937a;transform:rotate(-17deg)}
.camera-immersive .filter-name{font-size:11px;font-weight:700;white-space:nowrap;color:#504c46}
.camera-immersive .filter-selected{position:absolute;top:11px;right:11px;background:#f8f3ea;color:#423529;border-radius:50%;width:22px;height:22px;display:grid;place-items:center}
.camera-immersive .effects-heading{display:flex;align-items:center;gap:13px;padding:25px 0 12px;border-top:1px solid #ded5c8}
.camera-immersive .effects-heading>.ico{color:#927960}
.camera-immersive .effects-heading strong{font-size:17px}
.camera-immersive .effects-heading p{font-size:12px;color:#8f8274;margin:4px 0}
.camera-immersive .effects-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:10px 0 20px}
.camera-immersive .effect-card{background:white;border:1px solid #e3d9cc;border-radius:13px;padding:18px;min-width:0}
.camera-immersive .effect-card-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.camera-immersive .effect-label{font-weight:700;font-size:15px}
.camera-immersive .effect-status{font-size:9px;letter-spacing:1.2px;color:#a89e90;margin-left:4px}
.camera-immersive .effect-caption{font-size:11px;color:#8a8177;margin:6px 0 0;line-height:1.5}
.camera-immersive .effect-toggle{width:54px;height:31px;min-width:54px;border:0;background:#d9d1c6;border-radius:40px;padding:4px;display:flex;align-items:center;justify-content:flex-start;transition:background .2s}
.camera-immersive .effect-toggle span{background:#fff;border-radius:50%;width:23px;height:23px;box-shadow:0 1px 5px #0003;transition:transform .2s}
.camera-immersive .effect-toggle.active{background:#36564a}
.camera-immersive .effect-toggle.active span{transform:translateX(23px)}
.camera-immersive .effect-range{display:grid;grid-template-columns:65px 1fr 38px;align-items:center;gap:11px;margin-top:20px;font-size:11px;color:#6e6b63}
.camera-immersive .effect-range input{width:100%;accent-color:#3b5e4c;cursor:pointer}
.camera-immersive .effect-range.is-disabled{opacity:.4}
.camera-immersive .effect-range output{text-align:right;font-variant-numeric:tabular-nums}
.camera-immersive .cam-tip{display:flex;gap:9px;align-items:flex-start;background:#ebe4d9;border-radius:12px;padding:14px;color:#7f746a;line-height:1.6;font-size:11px;margin-bottom:17px}
.camera-immersive .cam-tip .ico{flex-shrink:0;margin-top:2px}
.camera-immersive .filter-studio>.btn{background:#28231f}
.camera-immersive .filter-studio>.btn:hover{background:#514338}
@media(max-width:720px){
 .camera-immersive .camera-frame,.camera-immersive .camera-frame.landscape{height:76dvh;min-height:530px;max-width:none}
 .camera-immersive .cam-overlay-header{padding:calc(17px + env(safe-area-inset-top,0px)) 19px 0;grid-template-columns:46px 1fr 46px;gap:4px}
 .camera-immersive .cam-glass.circle{width:43px;height:43px}
 .camera-immersive .cam-wedding-title strong{font-size:27px}
 .camera-immersive .cam-film-stamp{left:14px;font-size:10px;letter-spacing:2px}
 .camera-immersive .camera-controls{padding:45px 18px 23px}
 .camera-immersive .camera-actions-row{gap:7px;margin-bottom:19px}
 .camera-immersive .camera-ratio button{padding:9px 16px;font-size:10px}
 .camera-immersive .camera-snap-row{grid-template-columns:1fr 80px 1fr;gap:8px;margin-bottom:19px}
 .camera-immersive .camera-shutter{width:78px;height:78px}
 .camera-immersive .cam-remaining{width:62px;height:64px}
 .camera-immersive .cam-upload{padding:12px 12px;font-size:10px;letter-spacing:1.8px;min-height:42px;max-width:330px}
 .camera-immersive .filter-studio{border-radius:0;padding:27px 16px 30px}
 .camera-immersive .effects-grid{grid-template-columns:1fr}
 .camera-immersive .filter-studio-header .pill{display:none}
}
@media(max-width:350px){.camera-immersive .cam-wedding-title strong{font-size:22px}.camera-immersive .camera-ratio button{padding:8px 11px}.camera-immersive .cam-film-stamp{left:8px}.camera-immersive .camera-controls{padding-left:10px;padding-right:10px}}
@media(prefers-reduced-motion:reduce){.camera-immersive .filter-preview-card,.camera-immersive .effect-toggle,.camera-immersive .effect-toggle span{transition:none}}

.camera-immersive.is-review .filter-studio{display:none}

/* Sekeping V3 • complete guest journey inspired by the supplied reference screenshots */
.wedding-landing{background:#181412;color:#f6f1e9;max-width:740px;margin:0 auto;min-height:100dvh;overflow:hidden;box-shadow:0 20px 65px #1d18121a}
.guest-photo-hero{height:clamp(290px,48vw,480px);min-height:290px;background:radial-gradient(ellipse at 56% 18%,#a2917a 0,#746e60 30%,transparent 55%),linear-gradient(145deg,#817462 0%,#404839 55%,#171411 100%);position:relative;overflow:hidden}
.guest-photo-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#181412 0%,transparent 66%);pointer-events:none}
.guest-photo-hero.has-cover .hero-ornament{display:none}
.hero-ornament{position:absolute;pointer-events:none;width:260px;height:420px;border:2px solid #d2c4a143;border-radius:50% 55% 45% 48%;transform:rotate(-30deg);filter:blur(1px)}.ornament-a{top:-100px;left:-130px;box-shadow:18px 12px 0 #9fa48a2b,35px 40px 0 #d7bca41a,60px 55px 0 #7a9e7924}.ornament-b{top:-60px;right:-140px;transform:rotate(38deg);box-shadow:-25px 25px 0 #dfcdad21,-55px 65px 0 #a3b99d2b}
.guest-hero-chip{position:absolute;top:24px;left:50%;transform:translateX(-50%);z-index:1;border:1px solid #ffffff65;background:#1814125e;backdrop-filter:blur(10px);border-radius:30px;padding:9px 15px;font-size:9px;letter-spacing:2px;white-space:nowrap;color:#eee4d3}
.wedding-intro{margin-top:-75px;position:relative;z-index:2;background:linear-gradient(180deg,transparent,#181412 60px);text-align:center;padding:0 clamp(20px,6vw,44px) 60px}
.wedding-overline{letter-spacing:6px;font-size:11px;color:#d3c4ab;font-weight:700;margin:26px 0 13px}.wedding-intro h1{font-weight:500;font-size:clamp(40px,8.2vw,63px);letter-spacing:-1px;line-height:1.2;margin:0 0 16px}.wedding-date{font-size:12px;font-family:monospace;letter-spacing:4px;color:#b6a99b}
.wedding-message{font-size:15px;color:#dbd3c9;line-height:1.7;margin:23px auto 14px;max-width:510px}.wedding-remaining{font-family:monospace;color:#d68d61;font-size:12px;letter-spacing:3px;margin:15px auto 23px}
.wedding-name{display:block;width:100%;background:#0e0e0d;color:#f8f4eb;border:1px solid #5f5551;padding:19px 22px;border-radius:40px;font-size:21px;text-align:center;min-height:62px;outline:none}.wedding-name::placeholder{color:#a8a3a0}.wedding-name:focus{border-color:#e6d0ad}
.wedding-main-button{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;min-height:68px;margin:12px auto;border:0;border-radius:40px;background:#faf4e9;color:#1e1a17;font-size:17px;font-weight:600;transition:transform .18s}.wedding-main-button:hover{transform:translateY(-2px)}.wedding-main-button .ico{width:20px;height:20px}
.wedding-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:12px 0}.wedding-buttons>button{min-width:0;min-height:88px;background:#100f0e;border:1px solid #514743;color:#e9dccb;border-radius:24px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;transition:border-color .2s}.wedding-buttons>button:hover,.wedding-wide-button:hover{border-color:#ddbea0}.wedding-buttons span{letter-spacing:1.4px;font-size:10px}.wedding-buttons .ico{color:#d6c4a5}
.wedding-wide-button{width:100%;min-height:54px;display:flex;align-items:center;justify-content:center;gap:12px;margin:10px 0;border:1px solid #645b56;border-radius:30px;background:#100f0e;color:#f1e7db;letter-spacing:2.4px;font-size:11px}.wedding-wide-button.accented{border-color:#baa68a}.wedding-wide-button .ico{width:16px;height:16px;color:#d8be97}
.landing-tip{color:#87817c;font-size:12px;line-height:1.5;max-width:310px;margin:24px auto 13px}.language-switch{background:transparent;color:#bfb1a1;border:1px solid #564c46;padding:9px 20px;border-radius:30px;letter-spacing:2px;font-size:11px}.landing-disclaimer{color:#8d8178;font-size:11px;line-height:1.6;margin:23px auto 16px;max-width:390px}.wedding-dashboard-link{display:inline-block;color:#e0c7a4;font-size:12px;letter-spacing:2px;text-decoration:none;border-bottom:1px solid #d9bb96;padding-bottom:6px;margin-top:16px}
.guest-subpage{min-height:100dvh;background:#f9f5ee;color:#2f2822}.guest-sub-header{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(17px,4vw,45px);gap:12px;max-width:1120px;margin:auto}.guest-sub-header .guest-back{border:0;background:transparent;color:#80786f;display:flex;align-items:center;gap:9px;font-size:11px;letter-spacing:2px;padding:10px 3px}.guest-sub-header .guest-back .ico{width:19px;height:19px}.guest-mini-brand{font:500 21px Georgia,serif;color:#39302a}.guest-subcontent{max-width:1120px;margin:auto;padding:0 clamp(16px,3.7vw,38px) 50px}.guest-subcontent .section-title{color:#2e2620}
.album-cover{background:radial-gradient(ellipse at 30% 22%,#877e6e 0,#615e56 32%,transparent 70%),linear-gradient(140deg,#5a5a50,#14120f);color:white;min-height:310px;padding:35px 20px 30px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;position:relative;overflow:hidden}.album-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#1914128a,transparent 70%);pointer-events:none}.album-cover>*{position:relative;z-index:1}.album-cover .micro{color:#d9c5ab;letter-spacing:4px}.album-cover h1{font-weight:500;font-size:clamp(36px,7vw,57px);margin:12px 0 9px}.album-cover p{color:#e1b48c;font:600 12px monospace;letter-spacing:3px;margin:0 0 18px}.album-stats{display:grid;grid-template-columns:repeat(3,1fr);width:100%;max-width:490px;gap:20px;margin-top:14px}.album-stats div{display:flex;flex-direction:column;gap:5px}.album-stats strong{font:normal 36px Georgia,serif}.album-stats span{letter-spacing:2px;color:#ddd3c7;font-size:10px}
.album-main{background:#faf6f0;padding:22px 0 35px}.album-primary{display:flex;align-items:center;gap:11px;margin-bottom:22px}.album-home-button{border:1px solid #d8d0c5;background:transparent;color:#665e53;border-radius:50%;width:47px;height:47px;min-width:47px;display:grid;place-items:center}.album-primary .album-home-button:last-child{background:#2e2721;color:white;border-color:#2e2721}.album-tabs{background:#efe8dd;padding:5px;display:flex;gap:3px;flex:1;min-width:0;border-radius:30px}.album-tabs button{flex:1;border:none;background:transparent;padding:13px 4px;font-size:12px;color:#8d8379;border-radius:28px;min-width:0}.album-tabs button.active{background:#fffaf4;color:#362d25;box-shadow:0 1px 6px #392b1719}.album-filters{display:flex;gap:9px;overflow:auto;padding:4px 0 18px;scrollbar-width:none}.album-filters button{border:1px solid #ddcbb1;background:transparent;color:#7d6c5c;padding:12px 18px;border-radius:28px;letter-spacing:1.3px;font-size:11px;white-space:nowrap;display:flex;align-items:center;gap:5px}.album-filters button.active{background:#2a241e;color:#fff;border-color:#2a241e}.guest-person-row{display:flex;gap:8px;overflow:auto;margin-bottom:18px}.guest-person-row button{border:1px solid #e5d7c5;background:white;border-radius:24px;padding:9px 13px;font-size:11px;color:#685a4c;white-space:nowrap}.guest-person-row button.active{background:#dbcbb8;border-color:#dbcbb8}
.album-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.album-photo{position:relative;aspect-ratio:3/4;background:#d2c6b8;border-radius:8px;overflow:hidden}.album-photo>img{width:100%;height:100%;object-fit:cover;display:block}.photo-favourite{position:absolute;top:9px;right:9px;border:1px solid #fff7;background:#292723aa;color:#fff;border-radius:50%;width:36px;height:36px;display:grid;place-items:center;backdrop-filter:blur(7px);z-index:2}.photo-favourite.is-fav{background:#ae765d}.photo-favourite.is-fav .ico{fill:#f7e1d0}.album-photo-name{position:absolute;bottom:0;left:0;right:0;padding:28px 12px 12px;color:white;background:linear-gradient(transparent,#15100dba);font:italic 18px Georgia,serif;text-shadow:0 2px 4px #0009}.album-film-mark{position:absolute;left:7px;top:55px;writing-mode:vertical-rl;color:#de915b;font-size:8px;font-family:monospace;letter-spacing:1px;text-shadow:0 1px 3px black;pointer-events:none}.album-wishes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.album-bottom-actions{display:flex;justify-content:center;gap:12px;margin-top:24px;flex-wrap:wrap}
.gift-page{max-width:780px;margin:0 auto;padding:28px 0 40px}.gift-page h1{font-size:clamp(37px,6vw,56px);font-weight:500;margin:14px 0}.gift-lead{font-size:16px;color:#81786f;line-height:1.8;margin-bottom:27px}.gift-card{background:#f1e8da;border:1px solid #e5d1b5;border-radius:9px;padding:35px 30px;text-align:center;margin:27px 0}.gift-qr{width:min(360px,100%);aspect-ratio:1;object-fit:contain;display:block;background:white;border-radius:9px;padding:18px;margin:0 auto 19px}.gift-save-qr{display:block;width:100%;background:#2d261f;color:#f9f2e7;border:0;border-radius:40px;min-height:54px;font-size:14px;max-width:490px;margin:0 auto 30px;display:flex;align-items:center;justify-content:center;gap:12px}.gift-card h2{font-size:clamp(27px,5vw,38px);margin:22px 0 10px;font-weight:500}.gift-divider{font:normal 11px monospace;letter-spacing:3px;color:#a49b90;margin:32px 0 15px}.gift-account{background:#fffaf2;border:1px solid #dec8a7;border-radius:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px 9px 19px}.gift-account span{font:normal clamp(16px,3vw,27px) monospace;letter-spacing:2px;overflow-wrap:anywhere;text-align:left}.gift-account button{border:1px solid #cfc2b1;border-radius:27px;background:#fffaf5;padding:10px 15px;display:flex;align-items:center;gap:7px;color:#332b25}.gift-qr-missing{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;min-height:220px;background:#fffdf8;border:1px dashed #ccbca5;border-radius:12px;color:#8f7c69;margin-bottom:24px;padding:26px}.gift-qr-missing .ico{height:60px;width:60px}.gift-qr-missing small{line-height:1.5;max-width:320px}.gift-not-configured{color:#8b8175;line-height:1.7}.gift-disclaimer{color:#847b73;font-size:12px;line-height:1.8;margin:18px auto 24px}.gift-dashboard-image{display:block;width:min(280px,100%);max-height:330px;object-fit:contain;padding:15px;border:1px solid #e8decf;background:white;margin:12px 0 22px}
.guest-subpage .voice-panel .card,.guest-subpage #wishForm,.guest-subpage .wish-card{box-shadow:none}
@media(max-width:640px){.wedding-landing{width:100%}.guest-photo-hero{height:340px}.wedding-intro{margin-top:-95px}.wedding-overline{letter-spacing:5px}.wedding-message{font-size:14px}.wedding-buttons{gap:8px}.wedding-buttons>button{min-height:83px;border-radius:22px}.wedding-buttons span{font-size:9px;letter-spacing:1px}.guest-sub-header{height:65px}.album-cover{min-height:280px;margin-left:-16px;margin-right:-16px}.album-cover .micro{font-size:9px}.album-stats strong{font-size:31px}.album-primary{gap:6px}.album-tabs button{font-size:11px}.album-home-button{width:41px;height:41px;min-width:41px}.album-photo-grid{gap:8px}.album-photo-name{font-size:15px;padding:25px 6px 9px}.photo-favourite{width:32px;height:32px;top:6px;right:6px}.photo-favourite .ico{width:17px;height:17px}.album-film-mark{left:5px;top:44px;font-size:7px}.album-wishes{grid-template-columns:1fr}.gift-card{padding:26px 18px}.gift-page{padding-top:22px}.gift-account{padding:10px}.gift-account button{padding:8px 11px}.gift-account span{letter-spacing:1px}}
@media(max-width:350px){.wedding-intro{padding-left:15px;padding-right:15px}.wedding-intro h1{font-size:37px}.wedding-main-button{font-size:15px}.guest-photo-hero{height:300px}.album-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Owner-only export panel */
.archive-head{display:flex;gap:15px;align-items:flex-start;margin-bottom:20px}.archive-head>.ico{color:#365f4d;border:1px solid #dce8da;border-radius:10px;background:#edf3eb;padding:9px;width:49px;height:49px}.archive-head h3{margin:3px 0 8px}.archive-head p{margin:0;line-height:1.7}.archive-stat{margin:18px 0}.archive-contents{border:1px solid #e4e8de;border-radius:12px;background:#fafbf6;padding:18px;margin:0 0 23px;color:#375748}.archive-contents p{font-size:12px;color:#78897d;line-height:1.8;margin:8px 0 0}.archive-contents b{font-weight:700;color:#3e6853}

/* Sekeping V7: prevent native Safari date/time fields from colliding at iPad widths. */
.dash-card form .two-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px;row-gap:8px;min-width:0}
.dash-card form .two-fields>.field{min-width:0;width:100%;max-width:100%;overflow:visible}
.dash-card form .two-fields>.field>.input{width:100%;min-width:0;max-width:100%;box-sizing:border-box;display:block}
.dash-card form .two-fields input[type="date"],.dash-card form .two-fields input[type="time"]{min-width:0;max-width:100%;appearance:none;-webkit-appearance:none;min-height:47px;padding:12px 10px}
.dash-card form .two-fields input[type="date"]::-webkit-date-and-time-value,.dash-card form .two-fields input[type="time"]::-webkit-date-and-time-value{text-align:left;min-width:0}
.dashboard-active-strip{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:13px 18px;margin-bottom:22px;border:1px solid #dfe8dd;background:#f0f4ed;border-radius:12px}
.dashboard-active-info{display:flex;flex-wrap:wrap;align-items:center;gap:10px;color:#315749;font-size:12px;min-width:0}
.dashboard-active-info>span:not(.pill){font-size:10px;letter-spacing:1.2px;color:#829387;font-weight:700}
.dashboard-active-info>b{font-weight:700;overflow-wrap:anywhere}.dashboard-active-strip>.btn{flex-shrink:0}
.active-event-pill{background:#e1efe3!important;color:#316447!important}
.event-delete-btn{margin-left:auto}.detail-form-actions{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:8px}
.delete-modal-icon{width:53px;height:53px;border-radius:16px;background:#fff0ec;color:#b15e50;display:grid;place-items:center;margin-bottom:15px}
.delete-modal p{line-height:1.75;color:#6f7770}.delete-modal .banner{margin:17px 0}.delete-modal .field{margin-bottom:22px}
.photo-owner-save{position:absolute;top:10px;left:10px;width:35px;height:35px;z-index:3;background:#f5f8f1f0;color:#294e3c;border:1px solid #fff;border-radius:50%;display:grid;place-items:center;box-shadow:0 3px 10px #122c243b}
.photo-owner-save:hover{background:#fff}
@media(max-width:1140px){.dash-card form .two-fields{grid-template-columns:minmax(0,1fr);gap:0}}
@media(max-width:720px){.dashboard-active-strip{margin-bottom:16px;padding:12px;align-items:start}.dashboard-active-info{gap:5px 10px}.dashboard-active-strip>.btn{padding:8px 10px;font-size:11px}.dash-card form .two-fields{grid-template-columns:1fr}}
/* Audio player for organisers: contained cards rather than oversized native media UI. */
.dash-main .sek-voice-player{max-width:100%;min-width:210px}
.dash-main .simple-table td .sek-voice-player{width:min(350px,100%)}
.dash-main .simple-table td audio{display:none!important}
.dash-main .archive-contents{display:none}
.dash-voice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.dash-voice-card{border:1px solid #e4ebe0;background:#fff;border-radius:13px;padding:16px;min-width:0}
.dash-voice-header{display:flex;align-items:center;gap:11px;margin-bottom:15px;min-width:0}
.dash-voice-avatar{width:36px;height:36px;min-width:36px;display:grid;place-items:center;border-radius:11px;background:#ecf3eb;color:#406751}
.dash-voice-header>div{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.dash-voice-header b{color:#294d3b;font-size:12px;overflow-wrap:anywhere}
.dash-voice-header small{color:#8a978d;font-size:10px}
@media(max-width:1050px){.dash-voice-grid{grid-template-columns:1fr}}
/* V9: two true photo previews in organiser design settings */
.cover-preview-pair{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:13px;align-items:start}
.cover-preview-unit{min-width:0;display:flex;flex-direction:column;gap:8px;color:#60776a;font-size:11px;font-weight:700}
.cover-frame-preview{position:relative;isolation:isolate;overflow:hidden;border-radius:12px;background:#4b6c5b;border:1px solid #dbe7d9}
.cover-frame-preview.portrait{aspect-ratio:4/5}
.cover-frame-preview.wide{aspect-ratio:16/9}
.cover-frame-preview .cover-blurred-backdrop{z-index:-2}
.cover-frame-preview .cover-foreground{z-index:-1}
.cover-fit-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:20px}
.cover-fit-picker label{display:flex;flex-direction:column;gap:7px;padding:14px 12px;border:1px solid #dde7de;border-radius:12px;background:#fafcf8;color:#284d3b;font-size:12px;cursor:pointer}
.cover-fit-picker input{accent-color:#315b47;width:19px;height:19px}
.cover-fit-picker small{color:#71887b;font-size:10px;line-height:1.5}
@media(max-width:800px){.cover-preview-pair{grid-template-columns:1fr 1fr}.cover-fit-picker{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.cover-fit-picker{grid-template-columns:1fr}}
.dash-voice-header .voice-replace-label{font-size:10px;padding:8px 10px;white-space:nowrap;margin-left:auto}
@media(max-width:720px){.dash-voice-header{flex-wrap:wrap}.dash-voice-header .voice-replace-label{margin-left:0}}
