@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Playfair+Display:ital,wght@0,500;1,500&display=swap');
:root{--ink:#101010;--paper:#f4f1eb;--cream:#e9e1d3;--gold:#c6a86a;--line:#d8d2c8;--muted:#756f67}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif}button,input{font:inherit}.brand{color:inherit;text-decoration:none;font-weight:600;letter-spacing:.12em}.brand span{color:#a18249}.eyebrow{font-size:.68rem;letter-spacing:.22em;font-weight:600}.muted{color:var(--muted)}h1,h2,h3,p{margin-top:0}h1,h2{font-family:'Playfair Display',serif;font-weight:500}.button{border:0;padding:1rem 1.2rem;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.primary{background:#171717;color:white}.primary:hover{background:#a18249}label{display:grid;gap:.55rem;font-size:.78rem;font-weight:600}input{border:1px solid var(--line);padding:.9rem;background:#fff;border-radius:0;min-width:0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(120deg,#f4f1eb,#e7dfd2)}.login-card{background:#fff;width:min(460px,100%);padding:48px;box-shadow:0 28px 80px #55472d1c}.login-card .eyebrow{margin-top:70px;color:#9a7b45}.login-card h1{font-size:2.7rem;margin-bottom:.5rem}.stack{display:grid;gap:20px;margin-top:32px}.alert,.success{padding:12px 15px;background:#f5e6e1;color:#8f3928;font-size:.84rem}.success{background:#e4efe8;color:#24633d;margin-bottom:24px}.admin-head{height:76px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1180px)/2));background:#fff}.text-button{border:0;background:none;cursor:pointer}.admin-wrap{max-width:1180px;margin:auto;padding:65px 24px}.hero-admin{display:grid;grid-template-columns:1.1fr .9fr;gap:80px;align-items:start}.hero-admin h1{font-size:clamp(3rem,6vw,5.4rem);line-height:.98;margin:20px 0}.hero-admin>div>p:last-child{color:var(--muted);max-width:480px}.upload-card{background:#fff;padding:32px;display:grid;gap:22px;box-shadow:0 20px 70px #59482110}.drop{border:1px dashed #bdb4a6;min-height:160px;place-items:center;align-content:center;cursor:pointer;text-align:center}.drop input{display:none}.drop-icon{font-size:1.7rem;color:#9a7b45}.drop small{color:var(--muted);font-weight:400}.history{margin-top:100px}.section-title{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:20px}.section-title h2{font-size:2.5rem;margin:0}.section-title span{color:var(--muted);font-size:.8rem}.gift-list{display:grid}.gift-row{display:grid;grid-template-columns:1fr 110px 110px;gap:28px;align-items:center;padding:24px 0;border-bottom:1px solid var(--line)}.gift-info h3{margin-bottom:8px}.gift-info a{color:#7c6338;font-size:.88rem}.gift-info small{display:block;color:var(--muted);margin-top:7px}.gift-row img{width:100%;background:white;padding:7px}.copy{border:1px solid var(--ink);background:transparent;padding:.75rem;cursor:pointer}.empty{padding:50px 0;color:var(--muted)}
.gift-page{background:#050505;color:#f7f3eb;min-height:100vh;overflow:hidden;position:relative}.ambient{position:fixed;inset:0;background:radial-gradient(circle at 50% 45%,#5a402625,transparent 35%),radial-gradient(circle at 20% 10%,#99805614,transparent 25%);pointer-events:none}.gift-intro{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;position:relative;transition:opacity .5s,transform .5s}.gift-intro.leaving{opacity:0;transform:scale(.97)}.gift-mark{color:var(--gold);font-size:2rem}.gift-intro h1{font-size:clamp(3rem,9vw,7rem);font-style:italic;max-width:950px;margin:20px auto;line-height:1}.invitation{color:#aaa39a}.open-button{margin-top:30px;border:1px solid #5f5546;background:transparent;color:white;padding:17px 20px;width:min(290px,90vw);display:flex;justify-content:space-between;cursor:pointer}.open-button:hover{background:#f5efe5;color:#111}.reveal{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;opacity:0;transition:opacity .5s}.reveal.playing{opacity:1}.envelope{width:min(440px,76vw);height:290px;position:relative;perspective:1000px}.envelope-back{position:absolute;inset:0;background:#c7ad80}.envelope-front{position:absolute;inset:0;background:linear-gradient(150deg,transparent 49.8%,#b79869 50%) left/50% 100% no-repeat,linear-gradient(210deg,transparent 49.8%,#c3a879 50%) right/50% 100% no-repeat,linear-gradient(30deg,#d0b889 49.8%,transparent 50%) bottom/100% 70% no-repeat;z-index:3}.flap{position:absolute;inset:0 0 auto;height:55%;background:#d9c49d;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;z-index:4}.letter{position:absolute;left:8%;right:8%;bottom:8%;height:82%;background:#f3eee4;color:#26211b;z-index:2;display:grid;place-items:center;align-content:center;gap:25px;font-family:'Playfair Display',serif;font-style:italic;font-size:1.4rem}.letter b{color:#a18249}.playing .flap{animation:flap 1s .25s forwards}.playing .letter{animation:letter 1.3s 1s forwards}.done{opacity:0;transition:opacity .7s}.video-stage{min-height:100vh;padding:8vh 5vw;display:none;position:relative}.video-stage.visible{display:grid;grid-template-columns:1fr minmax(300px,850px);gap:5vw;align-items:center;animation:fade 1s}.video-head h2{font-size:clamp(2rem,5vw,4.5rem);font-style:italic}.video-stage video{width:100%;max-height:82vh;background:#000;box-shadow:0 30px 90px #000;border:1px solid #2c2925}@keyframes flap{to{transform:rotateX(180deg);z-index:1}}@keyframes letter{to{transform:translateY(-52%);height:120%}}@keyframes fade{from{opacity:0;transform:scale(.98)}}.not-found{min-height:100vh;background:#080808;color:white;display:grid;place-content:center;text-align:center;padding:30px}.not-found h1{font-size:3rem}
@media(max-width:760px){.login-card{padding:32px}.hero-admin{grid-template-columns:1fr;gap:40px}.admin-wrap{padding-top:40px}.history{margin-top:65px}.gift-row{grid-template-columns:1fr 82px}.copy{grid-column:1/-1}.video-stage.visible{grid-template-columns:1fr;align-content:center}.video-head{text-align:center}.envelope{height:210px}.gift-intro h1{font-size:3.6rem}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.upload-status{min-height:1.2em;margin:-8px 0 0;color:var(--muted);font-size:.78rem}.upload-card button:disabled{opacity:.55;cursor:wait}

/* Abertura e vídeo responsivos */
.gift-page,.gift-intro,.video-stage{min-height:100svh}.reveal{position:fixed;padding:max(24px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.envelope{width:min(440px,82vw,calc(72svh * 1.52));height:auto;aspect-ratio:44/29}.video-stage{width:100%;padding:max(32px,6svh) max(20px,5vw);overflow:auto}.video-stage.visible{grid-template-columns:minmax(180px,.65fr) minmax(0,1.7fr);gap:clamp(24px,5vw,72px)}.video-stage video{display:block;max-width:100%;max-height:84svh;object-fit:contain;margin:auto}.video-head{min-width:0}.video-head h2{overflow-wrap:anywhere}
.reveal.playing.done{opacity:0;visibility:hidden;transition:opacity .7s ease,visibility 0s .7s}

@media(max-width:760px){.gift-intro{padding:calc(24px + env(safe-area-inset-top)) 22px calc(24px + env(safe-area-inset-bottom))}.gift-intro h1{font-size:clamp(2.6rem,13vw,4.2rem)}.reveal{align-items:center}.envelope{width:min(88vw,380px,calc(58svh * 1.52))}.letter{font-size:clamp(1rem,5vw,1.3rem);gap:16px}.video-stage{padding:calc(24px + env(safe-area-inset-top)) 16px calc(20px + env(safe-area-inset-bottom));align-content:center}.video-stage.visible{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:16px}.video-head{text-align:center}.video-head .eyebrow{margin-bottom:7px}.video-head h2{font-size:clamp(1.65rem,8vw,2.5rem);line-height:1.05;margin-bottom:0}.video-stage video{width:100%;max-height:calc(100svh - 150px);border-radius:2px}}

@media(max-width:900px) and (orientation:landscape){.reveal{padding:14px}.envelope{width:min(390px,62vw,calc(72svh * 1.52))}.video-stage{padding:14px 24px}.video-stage.visible{grid-template-columns:minmax(150px,.45fr) minmax(0,1.55fr);grid-template-rows:1fr;gap:24px}.video-head{text-align:left}.video-head h2{font-size:clamp(1.5rem,4vw,2.4rem)}.video-stage video{max-height:calc(100svh - 28px)}}

/* O player ocupa o mesmo centro visual da carta */
.video-stage{position:relative;padding:max(20px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow:hidden}.video-stage.visible{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;place-items:center;gap:0}.video-head{position:absolute;z-index:2;top:max(18px,3svh);left:max(18px,4vw);right:max(18px,4vw);text-align:center;pointer-events:none}.video-head .eyebrow{margin-bottom:6px}.video-head h2{font-size:clamp(1.4rem,3vw,2.5rem);line-height:1.05;margin:0}.video-stage video{grid-area:1/1;width:min(960px,92vw);height:auto;max-height:calc(100svh - 150px);object-fit:contain;margin:0;box-shadow:0 24px 80px #000}

@media(max-width:760px){.video-stage.visible{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;place-items:center}.video-head{top:max(14px,env(safe-area-inset-top));left:16px;right:16px}.video-head h2{font-size:clamp(1.3rem,6vw,2rem)}.video-stage video{grid-area:1/1;width:min(94vw,720px);max-height:calc(100svh - 132px)}}

@media(max-width:900px) and (orientation:landscape){.video-stage{padding:12px max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left))}.video-stage.visible{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;place-items:center}.video-head{top:10px;left:14px;right:auto;text-align:left;max-width:26vw}.video-head .eyebrow{display:none}.video-head h2{font-size:clamp(1rem,2.8vw,1.55rem)}.video-stage video{grid-area:1/1;width:auto;max-width:88vw;max-height:calc(100svh - 24px)}}

/* Toda a experiência acontece dentro da viewport, sem rolagem */
html.gift-locked,html.gift-locked body{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}.gift-locked .gift-page{position:fixed;inset:0;width:100%;height:100dvh;min-height:0;overflow:hidden}.gift-locked .gift-intro{height:100dvh;min-height:0}.gift-locked .video-stage.visible{position:fixed;z-index:5;inset:0;width:100%;height:100dvh;min-height:0;overflow:hidden}

/* Envelope fechado usado como convite para abrir */
.gift-intro h1{font-size:clamp(2.4rem,7vw,5.5rem);margin:12px auto}.invitation{margin-bottom:10px}.envelope-trigger{display:grid;justify-items:center;gap:14px;margin-top:14px;padding:10px 22px;border:0;background:transparent;color:#f7f3eb;cursor:pointer}.closed-envelope{position:relative;display:block;width:clamp(150px,20vw,205px);aspect-ratio:1.52;background:#c9ae7d;box-shadow:0 18px 50px #0009;overflow:hidden;animation:invite-shake 2s ease-in-out infinite;transform-origin:50% 80%}.closed-envelope::before,.closed-envelope::after{content:"";position:absolute;inset:0;z-index:2}.closed-envelope::before{background:linear-gradient(32deg,#d3bb8d 49.5%,transparent 50%) bottom left/100% 78% no-repeat}.closed-envelope::after{background:linear-gradient(148deg,transparent 49.5%,#b99b69 50%) left/50% 100% no-repeat,linear-gradient(212deg,transparent 49.5%,#c5a978 50%) right/50% 100% no-repeat}.closed-flap{position:absolute;inset:0 0 auto;height:60%;background:#ddc9a3;clip-path:polygon(0 0,100% 0,50% 100%);z-index:3}.closed-seal{position:absolute;z-index:4;left:50%;top:48%;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#a7844c;color:#f5ead8;transform:translate(-50%,-50%);font-size:.8rem;box-shadow:0 4px 12px #604b2f55}.trigger-label{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#c9b993}.envelope-trigger:hover .closed-envelope,.envelope-trigger:focus-visible .closed-envelope{filter:brightness(1.08);box-shadow:0 22px 60px #000}.envelope-trigger:focus-visible{outline:1px solid var(--gold);outline-offset:5px}@keyframes invite-shake{0%,68%,100%{transform:translateX(0) rotate(0)}72%{transform:translateX(-5px) rotate(-2deg)}76%{transform:translateX(5px) rotate(2deg)}80%{transform:translateX(-3px) rotate(-1deg)}84%{transform:translateX(3px) rotate(1deg)}88%{transform:translateX(0) rotate(0)}}

@media(max-width:760px){.gift-intro{justify-content:center;gap:0}.gift-intro .gift-mark{margin-bottom:8px}.gift-intro h1{font-size:clamp(2.1rem,10vw,3.5rem);margin:9px auto}.gift-intro .invitation{font-size:.9rem;margin-bottom:4px}.envelope-trigger{gap:11px;margin-top:8px}.closed-envelope{width:clamp(138px,42vw,175px)}}

/* Materiais, dobras e textura de papel */
.envelope{filter:drop-shadow(0 24px 28px #0008);transform:rotate(.15deg)}.envelope-back{border:1px solid #aa8a5c;background:radial-gradient(circle at 18% 22%,#fff3 0 1px,transparent 2px),radial-gradient(circle at 76% 65%,#6f4e2418 0 1px,transparent 2px),repeating-linear-gradient(96deg,#fff0 0 7px,#fff1 8px 9px,#0000 10px 16px),linear-gradient(145deg,#d8c193,#b49564);box-shadow:inset 0 8px 18px #6d4d2526}.envelope-back::after{content:"";position:absolute;left:3%;right:3%;top:4%;height:2px;background:linear-gradient(90deg,transparent,#795c374f,transparent);box-shadow:0 3px 8px #5b402641}.envelope-front{border:1px solid #a98858;background:linear-gradient(150deg,transparent 49.5%,#b79767 50%,#c9aa77 100%) left/50% 100% no-repeat,linear-gradient(210deg,transparent 49.5%,#d0b683 50%,#b99866 100%) right/50% 100% no-repeat,linear-gradient(30deg,#d7bf8f 0,#bea06e 49.5%,transparent 50%) bottom/100% 70% no-repeat;filter:drop-shadow(0 -2px 2px #60421f24)}.envelope-front::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(8deg,#fff0 0 9px,#fff1 10px 11px,#5e40190a 12px 13px);mix-blend-mode:soft-light;pointer-events:none}.envelope-front::after{content:"";position:absolute;inset:0;background:linear-gradient(31deg,transparent 49.6%,#72512d35 50%,transparent 50.5%),linear-gradient(-31deg,transparent 49.6%,#fff4 50%,transparent 50.5%);pointer-events:none}.flap{border-top:1px solid #ead9b8;background:radial-gradient(circle at 48% 30%,#fff4,transparent 42%),repeating-linear-gradient(92deg,#fff0 0 8px,#fff1 9px 10px),linear-gradient(155deg,#e2cfaa,#bea173);filter:drop-shadow(0 3px 3px #65462242);backface-visibility:hidden}.letter{overflow:hidden;border:1px solid #d7cbb8;background:radial-gradient(circle at 8% 12%,#b78a5120,transparent 19%),radial-gradient(circle at 92% 88%,#ad7d4214,transparent 22%),repeating-linear-gradient(0deg,#fff0 0 19px,#9e8b6e0d 20px 21px),linear-gradient(105deg,#f8f3e9,#eee4d3 48%,#f8f2e7);box-shadow:0 8px 18px #5d40254a,inset 0 0 28px #8b663019;text-shadow:0 1px #fff}.letter::before{content:"";position:absolute;inset:10px;border:1px solid #a98a5830;box-shadow:inset 0 0 0 3px #fff3;pointer-events:none}.letter::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(98deg,transparent 0 13px,#6c51220a 14px 15px);mix-blend-mode:multiply;pointer-events:none}.letter span,.letter b{position:relative;z-index:1}.letter b{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 36% 28%,#d7ba79,#9e7840 70%);color:#f7ead3;box-shadow:0 3px 7px #61451f52,inset 0 1px 2px #fff6}

.closed-envelope{border:1px solid #9c7c50;background:radial-gradient(circle at 16% 18%,#fff3 0 1px,transparent 2px),repeating-linear-gradient(96deg,#fff0 0 8px,#fff1 9px 10px),linear-gradient(145deg,#d7bf91,#b49361);box-shadow:0 18px 50px #0009,inset 0 0 18px #63431d24}.closed-envelope::before{background:linear-gradient(32deg,#d6bd8b 0,#b99866 49.5%,transparent 50%) bottom left/100% 78% no-repeat;filter:drop-shadow(0 -1px 1px #67492233)}.closed-envelope::after{background:linear-gradient(148deg,transparent 49.4%,#b18f5e 50%,#caab77 100%) left/50% 100% no-repeat,linear-gradient(212deg,transparent 49.4%,#d3b987 50%,#b28f5f 100%) right/50% 100% no-repeat}.closed-flap{border-top:1px solid #eee0c4;background:radial-gradient(circle at 50% 18%,#fff5,transparent 48%),repeating-linear-gradient(95deg,#fff0 0 8px,#fff1 9px 10px),linear-gradient(155deg,#e3d0aa,#bea073);filter:drop-shadow(0 3px 3px #63452145)}.closed-seal{background:radial-gradient(circle at 34% 28%,#d0ae6d,#9c743b 68%,#765328);border:1px solid #e0c07f66;box-shadow:0 4px 12px #604b2f77,inset 0 1px 2px #ffe9b288,inset 0 -2px 3px #56381566}

@keyframes letter{0%{transform:translateY(0) rotate(0)}100%{transform:translateY(-52%) rotate(-.45deg);height:120%}}

/* Evita que a borda da frente do envelope atravesse a folha aberta */
.envelope-front{border-top:0;filter:none}
.envelope-front::after{display:none}

@media(hover:none) and (pointer:coarse){button,a,[role="button"]{-webkit-tap-highlight-color:transparent;outline:none}button:focus,a:focus,[role="button"]:focus{outline:none}}

/* Ações do histórico */
.gift-row{grid-template-columns:1fr 110px 150px}.gift-actions{display:grid;gap:8px}.gift-actions form{margin:0}.copy,.qr-download,.delete-gift{width:100%;border:1px solid var(--ink);background:transparent;padding:.72rem .6rem;cursor:pointer;text-align:center;text-decoration:none;color:var(--ink);font-size:.78rem}.copy:hover,.qr-download:hover{background:var(--ink);color:#fff}.delete-gift{border-color:#a64b3c;color:#8f3928}.delete-gift:hover{background:#8f3928;color:#fff}
@media(max-width:760px){.gift-row{grid-template-columns:minmax(0,1fr) 82px;gap:18px}.gift-actions{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:430px){.gift-actions{grid-template-columns:1fr}.gift-actions .copy{grid-column:auto}}
