
:root { --background:#f8f7ef; --foreground:#303826; --primary:#495b37; --primary-foreground:#fffef8; --border:#c5cbb5; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--background); color:var(--foreground); font-family:Arial,Helvetica,sans-serif; }
button { font:inherit; }
.page-shell { min-height:100svh; position:relative; overflow:hidden; background:radial-gradient(circle at 50% 0,#fffef9 0,#f8f7ef 64%,#edf0e3 100%); padding:28px 20px 42px; }
.page-shell:before { content:""; position:absolute; inset:15px; border:1px solid rgba(93,112,70,.24); pointer-events:none; }
.ornament { position:absolute; width:230px; height:230px; border:1px solid rgba(103,121,79,.25); border-radius:50%; pointer-events:none; }
.ornament:after { content:""; position:absolute; inset:17px; border:1px solid rgba(103,121,79,.15); border-radius:50%; }
.ornament-left { top:-125px; left:-120px; }.ornament-right { bottom:-145px; right:-110px; }
.invitation { width:min(100%,590px); margin:auto; position:relative; z-index:1; text-align:center; }
.eyebrow { display:flex; align-items:center; justify-content:center; gap:13px; color:#64784b; letter-spacing:.24em; font-size:.72rem; font-weight:700; margin:3px auto 15px; }
.rule { display:block; width:33px; height:1px; background:#a9b695; }
.pretitle { color:#657d4a; font-family:Georgia,serif; font-size:1.05rem; font-style:italic; margin:0 0 5px; }
h1 { font:normal clamp(2.8rem,10vw,5.2rem)/1.05 Georgia,'Times New Roman',serif; letter-spacing:-.055em; margin:0 auto 7px; max-width:580px; }
.ampersand { font-style:italic; font-size:.82em; color:#768a5d; font-weight:normal; }
.celebration { margin:0 auto 15px; font:italic 1.1rem Georgia,serif; color:#657d4a; }
.photo-pair { position:relative; display:grid; grid-template-columns:1fr 1fr; grid-template-rows:minmax(0,1fr); gap:10px; height:clamp(175px,39vw,300px); margin:0 auto 32px; }
.couple-photo { display:block; min-width:0; min-height:0; width:100%; height:100%; object-fit:cover; border-radius:16px; border:3px solid #fffef8; box-shadow:0 12px 30px rgba(40,56,29,.12); }
.photo-one { object-position:center 34%; }.photo-two { object-position:center 26%; }
.daisies { position:absolute; bottom:-36px; width:clamp(105px,26vw,170px); height:auto; pointer-events:none; filter:drop-shadow(0 5px 4px rgba(30,42,22,.13)); }
.daisies-left { left:-36px; }.daisies-right { right:-36px; transform:scaleX(-1); }
.verse { margin:25px auto 7px; padding:0 14px; max-width:480px; color:#455b35; }
.verse p { font:italic 1.17rem/1.43 Georgia,serif; margin:0 0 7px; }
.verse cite { font:700 .74rem Arial,Helvetica,sans-serif; text-transform:uppercase; letter-spacing:.18em; color:#738663; }
.upload-card { background:rgba(255,255,251,.92); border:1px solid #cbd4bd; border-radius:22px; box-shadow:0 14px 44px rgba(44,63,35,.08); padding:21px 23px 20px; scroll-margin-top:20px; }
h2 { font:normal 1.55rem/1.2 Georgia,serif; margin:0 0 9px; text-align:center; }
.upload-card p { color:#586451; font-size:.95rem; line-height:1.45; max-width:410px; margin:0 auto 13px; }
.primary-button,.send-button { width:100%; min-height:54px; border:0; background:#495b37; color:white; cursor:pointer; display:flex; justify-content:center; align-items:center; gap:10px; font-weight:700; letter-spacing:.02em; border-radius:999px; box-shadow:0 5px 14px rgba(54,74,39,.17); transition:background .2s,transform .2s,box-shadow .2s; }
.primary-button:hover,.send-button:hover { background:#5d7047; transform:translateY(-1px); }
button:focus-visible { outline:3px solid #879b6b; outline-offset:3px; }
button:disabled { opacity:.65; cursor:wait; transform:none; }
.selection { margin:15px auto 0; border-top:1px solid #d9dfcd; padding-top:14px; font-size:.92rem; color:#495b37; }
.selection .send-button { margin-top:10px; background:#667951; min-height:48px; }
.upload-card .success { margin:16px auto 0; display:flex; align-items:center; justify-content:center; gap:7px; color:#426a55; font-weight:700; }
.upload-card .error { margin:15px auto 0; color:#a52f43; font-weight:700; }
.upload-card small { display:block; margin-top:12px; color:#687362; font-size:.8rem; line-height:1.4; }
.closing { margin:15px 0 0; font:italic 1rem Georgia,serif; color:#53683c; }.closing span { font-style:normal; font-size:1.3rem; vertical-align:-.06em; }
.spin { animation:spin 1s linear infinite; } @keyframes spin { to { transform:rotate(360deg); } }
@media (min-width:760px) { .page-shell { display:grid; place-items:center; padding:35px 24px; } .invitation { padding:12px 0; } }
@media (max-width:380px) { .page-shell { padding:25px 19px 40px; } .upload-card { padding:18px 15px; } h1 { font-size:2.75rem; } .photo-pair { gap:6px; } h2 { font-size:1.35rem; } .daisies-left { left:-27px; }.daisies-right { right:-27px; } }
@media (prefers-reduced-motion:reduce) { *,*:before,*:after { scroll-behavior:auto!important; animation-duration:.01ms!important; transition-duration:.01ms!important; } }

/* Painel privado */
.album-page { min-height:100svh; padding:24px 20px 84px; background:radial-gradient(circle at 8% 0%,#fffdf6 0,#f4f5ed 46%,#eef1e7 100%); color:#293426; font-family:Arial,Helvetica,sans-serif; }
.album-wrap { max-width:1080px; margin:0 auto; }
.admin-nav { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:0 0 22px; }
.album-back { display:inline-flex; align-items:center; gap:8px; min-height:42px; color:#455b38; text-decoration:none; font-size:.89rem; font-weight:700; }
.album-back span { font-size:1.3rem; line-height:1; }
.private-label { display:inline-flex; align-items:center; gap:8px; border:1px solid #d9dfcd; background:#fffefa; border-radius:999px; padding:10px 14px; color:#63745a; font-size:.76rem; font-weight:700; white-space:nowrap; }
.private-dot { display:block; width:7px; height:7px; border-radius:50%; background:#85a06f; box-shadow:0 0 0 4px #edf3e8; }
.admin-hero { position:relative; min-height:250px; overflow:hidden; display:flex; justify-content:space-between; align-items:flex-start; gap:22px; padding:43px 48px; border-radius:32px; background:linear-gradient(120deg,#35472d,#536c43 74%,#647950); color:#fffdf6; box-shadow:0 22px 45px rgba(40,58,32,.18); }
.admin-hero:after { content:""; position:absolute; right:-22px; bottom:-90px; width:260px; height:240px; background:url('/assets/margaridas.png') center/contain no-repeat; opacity:.65; pointer-events:none; }
.hero-content,.hero-logout { position:relative; z-index:1; }
.hero-kicker { margin:0 0 19px; color:#dce6cf; font-size:.72rem; font-weight:700; letter-spacing:.2em; }
.hero-kicker span { font-family:Georgia,serif; font-style:italic; }
.admin-hero h1 { margin:0 0 11px; max-width:none; font:normal clamp(2.65rem,6vw,4.35rem)/1.05 Georgia,serif; letter-spacing:-.045em; }
.admin-hero h1 em { color:#dfe9d1; font-weight:normal; }
.admin-hero p:last-child { margin:0; max-width:420px; color:#e8efe1; line-height:1.5; font-size:.94rem; }
.album-exit { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:42px; padding:0 16px; color:#fffdf6; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.44); border-radius:999px; font:700 .79rem Arial,sans-serif; white-space:nowrap; cursor:pointer; backdrop-filter:blur(8px); }
.album-exit:hover { background:rgba(255,255,255,.22); }
.admin-overview { position:relative; display:flex; align-items:center; gap:15px; margin:-31px 25px 34px; padding:17px 24px; min-height:83px; background:#fffefa; border:1px solid #e1e6d9; border-radius:22px; box-shadow:0 14px 35px rgba(46,63,38,.09); }
.overview-icon { display:grid; place-items:center; flex:none; width:46px; height:46px; border-radius:15px; background:#ecf1e5; color:#627c50; font-size:1.7rem; }
.admin-overview strong { display:block; color:#344930; font:normal 1.6rem/1 Georgia,serif; }
.admin-overview span { display:block; color:#5c6e53; font-size:.79rem; font-weight:700; white-space:nowrap; }
.admin-overview p { margin:0 0 0 auto; color:#66715f; font-size:.85rem; }
.notice { margin:0 0 20px; padding:14px 18px; border-radius:14px; background:#e6f0e1; color:#355032; font-weight:700; }
.admin-add { margin:0 0 47px; padding:30px 34px 33px; border:1px solid #dce3d4; border-radius:28px; background:#fffefa; box-shadow:0 13px 35px rgba(49,67,40,.055); }
.section-heading { display:flex; justify-content:space-between; align-items:center; gap:15px; }
.section-kicker { margin:0 0 7px; color:#779064; letter-spacing:.18em; font-size:.68rem; font-weight:800; }
.section-heading h2 { margin:0; text-align:left; color:#2e3b2b; font:normal clamp(1.65rem,4vw,2.15rem)/1.12 Georgia,serif; letter-spacing:-.025em; }
.heading-flower { display:grid; place-items:center; width:42px; height:42px; border-radius:50%; background:#eef2e9; color:#81966e; font-size:1.75rem; }
.section-desc { margin:12px 0 24px; color:#687464; font-size:.91rem; line-height:1.5; }
.admin-upload-form { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:18px; align-items:end; }
.upload-field { min-width:0; }
.file-picker { display:flex; align-items:center; gap:13px; min-height:88px; padding:16px; border:1.5px dashed #9dad8f; border-radius:17px; background:#f6f8f2; cursor:pointer; transition:border-color .2s,background .2s; }
.file-picker:hover,.upload-field:focus-within .file-picker { background:#edf2e8; border-color:#536c43; }
.file-picker-icon { display:grid; place-items:center; flex:none; width:46px; height:46px; border-radius:13px; background:#e4ebdc; color:#4b6540; font-size:1.8rem; font-weight:300; }
.file-picker-copy { min-width:0; display:grid; gap:4px; }
.file-picker-copy strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:#34482f; font-size:.9rem; }
.file-picker-copy small { color:#74826f; font-size:.73rem; }
.file-picker-arrow { margin-left:auto; color:#718767; font-size:1.25rem; }
.visually-hidden-file { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.caption-field label,.caption-edit label { display:block; margin-bottom:9px; color:#40543a; font-size:.84rem; font-weight:700; }
.caption-field label span { color:#899487; font-weight:400; }
.caption-field input,.caption-edit input { display:block; width:100%; height:50px; padding:0 15px; background:white; border:1px solid #c9d4c0; border-radius:13px; color:#2d382a; font:inherit; outline:none; }
.caption-field input:focus,.caption-edit input:focus { border-color:#607951; box-shadow:0 0 0 3px #e8f0e2; }
.admin-upload-form > .primary-button { grid-column:1/-1; justify-self:end; width:auto; min-width:220px; padding:0 23px; min-height:51px; gap:22px; }
.photos-section { padding:0 2px; }
.photo-section-heading { margin-bottom:19px; }
.photo-count { display:inline-grid; vertical-align:middle; place-items:center; min-width:32px; height:32px; padding:0 9px; margin-left:5px; border-radius:100px; background:#e4ecdd; color:#455d38; font:700 .85rem Arial,sans-serif; }
.download-all { display:inline-flex; align-items:center; justify-content:center; min-height:43px; padding:0 17px; border:1px solid #b7c8aa; border-radius:999px; color:#3f5b34; background:#f9fbf5; font-size:.83rem; font-weight:700; text-decoration:none; white-space:nowrap; }
.download-all:hover { background:#e8f0e1; }
.download-all span { margin-left:4px; font-size:.7rem; opacity:.7; }
.album-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.album-photo { overflow:hidden; border:1px solid #dce3d4; border-radius:23px; background:#fffefa; box-shadow:0 13px 34px rgba(48,66,39,.07); }
.photo-preview { position:relative; display:block; overflow:hidden; background:#e8ebe3; }
.photo-preview img { display:block; width:100%; height:245px; object-fit:cover; transition:transform .25s; }
.photo-preview:hover img { transform:scale(1.035); }
.view-photo { position:absolute; bottom:12px; right:12px; padding:8px 11px; border-radius:999px; background:rgba(255,254,250,.92); color:#34492e; font-size:.72rem; font-weight:700; }
.album-photo-body { padding:18px; }
.photo-meta { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.source-badge { padding:7px 10px; border-radius:999px; background:#eaf0e5; color:#4a6440; font-size:.71rem; font-weight:700; }
.photo-meta time { color:#828d7d; font-size:.72rem; }
.caption-edit-row { display:flex; gap:7px; }
.caption-edit input { min-width:0; height:43px; padding:0 11px; font-size:.83rem; }
.small-button { display:inline-flex; align-items:center; justify-content:center; min-height:42px; padding:0 14px; border:0; border-radius:12px; background:#4a603c; color:#fff; font:700 .79rem Arial,sans-serif; text-decoration:none; white-space:nowrap; cursor:pointer; }
.small-button:hover { filter:brightness(1.08); }
.photo-actions { display:flex; gap:9px; justify-content:space-between; padding-top:15px; margin-top:17px; border-top:1px solid #edf0e8; }
.photo-actions form { margin:0; }
.small-button.secondary { background:#ebf0e6; color:#405b35; }
.small-button.danger { background:#fcf0ed; color:#9a493e; }
.album-empty { padding:60px 25px; text-align:center; border:1.5px dashed #bdcbb2; border-radius:25px; background:#fafbf7; }
.empty-flower { color:#819d70; font-size:2.5rem; }
.album-empty h3 { font:normal 1.5rem Georgia,serif; margin:10px 0 6px; }
.album-empty p { color:#6b7965; margin:0; }
.album-login { position:relative; overflow:hidden; width:min(100%,480px); margin:clamp(36px,9vh,90px) auto 0; padding:42px; border:1px solid #dce3d4; border-radius:30px; background:#fffefa; box-shadow:0 22px 60px rgba(44,60,34,.12); }
.album-login:before { content:""; position:absolute; right:-60px; top:-70px; width:175px; height:175px; background:url('/assets/margaridas.png') center/contain no-repeat; opacity:.55; pointer-events:none; }
.login-mark { display:grid; place-items:center; width:66px; height:66px; margin-bottom:24px; border-radius:20px; background:#4b603d; color:#fffefa; font:normal 1.2rem Georgia,serif; box-shadow:0 8px 16px rgba(55,75,44,.2); }
.login-mark span { color:#d7e6c9; font-style:italic; }
.album-kicker { margin:0 0 9px; color:#789062; font-size:.7rem; font-weight:800; letter-spacing:.2em; }
.album-login h1 { margin:0 0 12px; font:normal clamp(2.3rem,7vw,3.2rem)/1.07 Georgia,serif; letter-spacing:-.04em; }
.album-login h1 em { color:#6c8459; font-weight:normal; }
.album-login > p:not(.album-kicker):not(.album-error) { color:#687463; line-height:1.5; margin:0; }
.album-login form { margin-top:30px; }
.album-login label { display:block; margin-bottom:9px; color:#40543a; font-size:.85rem; font-weight:700; }
.album-login input { display:block; width:100%; height:53px; padding:0 16px; border:1px solid #c9d4c0; border-radius:14px; background:white; font:inherit; }
.album-login button { margin-top:17px; justify-content:space-between; padding:0 22px; }
.album-error { margin:18px 0 0; color:#9c3b42; font-weight:700; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
[hidden] { display:none!important; }
.status { min-height:0; margin:10px auto 0!important; }
.status:empty { display:none; }
.status.success { color:#426a55; font-weight:700; }
.status.error { color:#a52f43; font-weight:700; }
@media(max-width:850px) { .album-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .admin-overview p { display:none; } }
@media(max-width:600px) {
  .album-page { padding:16px 16px 70px; }
  .admin-nav { margin-bottom:16px; }
  .private-label { padding:9px 11px; font-size:.7rem; }
  .admin-hero { min-height:230px; display:block; padding:30px 24px 65px; border-radius:26px; }
  .admin-hero:after { width:170px; height:170px; right:-48px; bottom:-36px; opacity:.43; }
  .hero-kicker { font-size:.62rem; margin-bottom:17px; }
  .admin-hero h1 { font-size:2.8rem; }
  .admin-hero p:last-child { font-size:.84rem; padding-right:25px; }
  .hero-logout { margin-top:21px; }
  .album-exit { min-height:38px; font-size:.74rem; }
  .admin-overview { margin:-24px 12px 28px; min-height:73px; padding:13px 16px; border-radius:18px; }
  .admin-add { padding:24px 20px 22px; border-radius:24px; margin-bottom:38px; }
  .section-desc { font-size:.84rem; margin:12px 0 20px; }
  .admin-upload-form { grid-template-columns:1fr; gap:16px; }
  .admin-upload-form > .primary-button { grid-column:1; justify-self:stretch; width:100%; }
  .album-grid { grid-template-columns:1fr; gap:17px; }
  .photo-section-heading { align-items:end; }
  .download-all { min-height:39px; padding:0 11px; font-size:.75rem; }
  .download-all span { display:none; }
  .photo-preview img { height:275px; }
  .album-photo-body { padding:18px; }
  .album-login { margin-top:35px; padding:32px 24px; border-radius:25px; }
}
@media(max-width:355px) { .admin-hero h1 { font-size:2.4rem; }.private-label { font-size:.63rem; }.album-back { font-size:.8rem; }.photo-preview img { height:230px; } }
