:root{--cream:#f6f0e7;--paper:#fffcf7;--ink:#322c28;--muted:#82796e;--border:#ded5c7;--sage:#6e7966;--sage-dark:#4d5d4c;--rose:#c5a49a;--danger:#a34f50;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Georgia,'Times New Roman',serif;font-size:16px}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.grain{position:fixed;inset:0;pointer-events:none;opacity:.15;background-image:radial-gradient(#b7a996 .45px,transparent .45px);background-size:8px 8px;z-index:-1}.topbar{height:80px;display:flex;justify-content:space-between;align-items:center;padding:0 max(5vw,24px);border-bottom:1px solid var(--border);background:rgba(246,240,231,.94);position:relative;z-index:2}.brand{font-family:Arial,sans-serif;letter-spacing:.24em;font-size:12px;font-weight:700;display:flex;align-items:center;gap:11px}.brand-icon{font-size:25px;color:var(--sage)}nav{display:flex;gap:25px;align-items:center}nav a,.link-button{font:13px Arial,sans-serif;letter-spacing:.025em}.link-button{border:0;background:none;color:var(--ink)}.hero{min-height:580px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:68px 22px 80px;background:radial-gradient(ellipse at 50% 25%,#fffaf3 0%,transparent 68%)}.floral{font-size:48px;color:var(--sage);margin-bottom:15px}.eyebrow{font:11px Arial,sans-serif;letter-spacing:.23em;color:var(--sage);font-weight:700;text-transform:uppercase;line-height:1.6}.hero h1{font-size:clamp(48px,7vw,92px);font-weight:400;line-height:1.09;letter-spacing:-.045em;margin:16px 0}.hero h1 em{color:var(--sage);font-weight:400}.hero-sub{max-width:590px;color:var(--muted);font-size:18px;line-height:1.7;margin:12px auto 30px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.btn{border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:15px;min-height:48px;padding:12px 22px;font:13px Arial,sans-serif;font-weight:600;letter-spacing:.02em;border-radius:6px;transition:background .15s}.btn.primary{background:var(--sage-dark);color:white}.btn.primary:hover{background:#354633}.btn.outline{border-color:var(--sage);background:transparent;color:var(--sage-dark)}.btn.outline:hover{background:#eae9df}.btn.danger{background:#a75555;color:white}.btn.small{min-height:37px;padding:8px 13px;font-size:12px}.btn:disabled{opacity:.45;cursor:not-allowed}.hero-date{margin-top:55px;color:#968e80;font-size:14px;letter-spacing:.14em}.panel-section,.album-section{padding:80px max(5vw,20px);scroll-margin-top:20px}.panel-section{background:var(--paper)}.section-heading{text-align:center;margin-bottom:36px}.section-heading h2{font-size:clamp(35px,5vw,56px);font-weight:400;margin:12px 0}.section-heading>p:last-child{color:var(--muted);font-size:17px;line-height:1.5}.upload-panel{background:#fff;max-width:825px;margin:0 auto;padding:30px;box-shadow:0 12px 55px #4234260b;border:1px solid #e9e1d6;border-radius:var(--radius)}.dropzone{border:1.5px dashed #b4b9a9;background:#f9faf6;border-radius:12px;min-height:190px;padding:30px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:11px;text-align:center;cursor:pointer}.dropzone.drag{background:#e8eee5;border-color:var(--sage)}.dropzone strong{font-size:21px;font-weight:400}.dropzone span:not(.drop-icon),.dropzone small{font:13px Arial,sans-serif;color:var(--muted)}.dropzone small{font-size:11px}.drop-icon{display:grid;place-items:center;border:1px solid #bbc2b5;color:var(--sage);border-radius:100%;width:43px;height:43px;font:30px Arial,sans-serif}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:25px 0}label{display:block;font-size:15px}label span{color:#999185}input[type=text],input[type=password]{background:white;border:1px solid #d8d0c3;border-radius:5px;width:100%;padding:14px;margin-top:9px;outline:none;font-family:Arial,sans-serif;font-size:14px;color:var(--ink)}input:focus{border-color:var(--sage)}.submit{width:100%}.small-note{font:11px/1.6 Arial,sans-serif;color:#91877c;text-align:center;margin:18px 0 0}.file-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.file-chip{background:#f1f2eb;border-radius:5px;padding:8px 11px;font:12px Arial,sans-serif;max-width:100%;overflow-wrap:anywhere}.progress-wrap{margin-top:18px}.progress-track{height:8px;background:#e5e5de;border-radius:20px;overflow:hidden}.progress-bar{height:100%;background:var(--sage);width:0;transition:width .15s}#progress-text{font:12px Arial,sans-serif;color:var(--muted)}.album-section{min-height:450px}.album-toolbar{display:flex;max-width:1190px;margin:0 auto 25px;justify-content:space-between;align-items:center;gap:10px;font:13px Arial,sans-serif;color:var(--muted)}.album-grid{max-width:1190px;margin:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.album-card{position:relative;overflow:hidden;border-radius:9px;aspect-ratio:4/5;background:#e9dfd1;border:0;padding:0;cursor:pointer}.album-card img,.album-card video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}.album-card:hover img{transform:scale(1.04)}.video-badge,.file-badge{position:absolute;top:12px;right:12px;background:#322c28ba;color:white;padding:5px 10px;border-radius:25px;font:11px Arial,sans-serif}.photo-fallback{height:100%;display:grid;place-items:center;font-size:14px;color:#5c5a54}.album-credit{position:absolute;bottom:0;left:0;right:0;padding:33px 12px 13px;background:linear-gradient(transparent,#1818158a);color:white;text-align:left;font:12px Arial,sans-serif}.center{text-align:center;margin:30px}.empty{text-align:center;color:var(--muted);padding:45px 12px}.gate-section{padding:80px 20px}.gate-box{max-width:490px;margin:0 auto;background:var(--paper);border:1px solid var(--border);padding:45px;text-align:center;border-radius:var(--radius);box-shadow:0 14px 48px #352a1f0a}.gate-box h2,.gate-box h1{font-size:39px;font-weight:400;margin:12px 0}.gate-box>p:not(.eyebrow){line-height:1.7;color:var(--muted)}.gate-box form{text-align:left;margin-top:30px}.gate-box .btn{width:100%;margin-top:16px}.gate-icon{font-size:45px;color:var(--sage)}.form-message{font:13px Arial,sans-serif;color:var(--danger);min-height:17px}footer{padding:28px max(5vw,24px);display:flex;justify-content:space-between;border-top:1px solid var(--border);color:#948b7d;font:12px Arial,sans-serif}dialog{border:0;padding:20px;background:#252522;color:white;max-width:min(94vw,1180px);max-height:95vh;border-radius:12px}dialog::backdrop{background:#151714e8}#lightbox-content{display:grid;place-items:center;min-width:min(80vw,250px)}#lightbox-content img,#lightbox-content video{max-width:85vw;max-height:77vh;object-fit:contain}.close-lightbox{position:absolute;top:8px;right:13px;background:#ffffff22;border:0;color:white;border-radius:50%;font-size:24px;width:35px;height:35px}.lightbox-meta{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:12px;font:13px Arial,sans-serif}.lightbox-meta .btn{color:white;border-color:#aeb5a7}.toast{position:fixed;right:20px;bottom:24px;background:#354a39;color:white;padding:15px 20px;border-radius:8px;font:14px Arial,sans-serif;box-shadow:0 8px 22px #0002;opacity:0;transform:translateY(12px);pointer-events:none;transition:.25s;z-index:50}.toast.show{opacity:1;transform:translateY(0)}.admin-layout{max-width:1300px;margin:55px auto;padding:0 22px;min-height:60vh}.admin-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.admin-head h1{font-size:50px;font-weight:400;margin:6px 0 30px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:10px 0 36px}.stats>div{border:1px solid var(--border);background:var(--paper);padding:22px;display:flex;flex-direction:column;gap:9px}.stats strong{font:40px Georgia,serif;font-weight:400}.stats span{font:12px Arial,sans-serif;color:var(--muted)}.admin-tools{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:25px}.tabs{display:flex;gap:4px;background:#e8e3da;padding:4px;border-radius:7px}.tabs button{font:12px Arial,sans-serif;background:none;border:0;padding:10px 14px;border-radius:4px}.tabs button.active{background:white;color:var(--sage-dark);box-shadow:0 1px 4px #0001}.bulk{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.admin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.admin-item{border:1px solid var(--border);background:var(--paper);border-radius:9px;overflow:hidden}.admin-visual{width:100%;aspect-ratio:4/3;background:#e7e3da;display:block;border:0;padding:0;position:relative;cursor:pointer}.admin-visual img,.admin-visual video{width:100%;height:100%;object-fit:cover}.admin-meta{padding:13px}.admin-meta p{margin:5px 0;color:var(--muted);font:12px/1.5 Arial,sans-serif;overflow-wrap:anywhere}.admin-meta strong{font:14px Arial,sans-serif}.admin-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:13px}.admin-actions button{font:12px Arial,sans-serif;border:1px solid var(--border);border-radius:4px;background:white;padding:7px 9px}.admin-actions .approve{background:#e4eee0;color:#345638}.admin-actions .reject{background:#f6e8e5;color:#8c3a3d}.select-media{display:flex;align-items:center;gap:8px;padding:0 0 7px;font:12px Arial,sans-serif}.slideshow-body{background:#202a24;color:#f9f6ef;height:100vh;overflow:hidden}.slide-frame{height:100vh;display:flex;flex-direction:column;padding:2vh 3vw;background:radial-gradient(ellipse at center,#344139,#1d2823 80%)}.slide-top{display:flex;justify-content:space-between;align-items:center;font:13px Arial,sans-serif;letter-spacing:.2em;color:#e9e6db}.slide-fullscreen{color:#e9e6db;border:1px solid #ffffff55;background:none;padding:8px 12px;border-radius:5px;font:12px Arial,sans-serif;letter-spacing:0}.slide-stage{position:relative;flex:1;min-height:0;display:grid;place-items:center;overflow:hidden;margin:2vh auto;width:100%;border-radius:12px;background:#152019}.slide-stage #slide-media{width:100%;height:100%;display:grid;place-items:center}.slide-stage img,.slide-stage video{width:100%;height:100%;object-fit:contain}.slide-placeholder{text-align:center;font-size:clamp(24px,4vw,48px);color:#d6cfc1}.slide-placeholder span{display:block;font-size:80px;margin-top:20px}.slide-overlay{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#111d1ada);padding:70px 35px 28px;display:flex;justify-content:space-between;align-items:end;pointer-events:none}.slide-eyebrow{font:10px Arial,sans-serif;letter-spacing:.3em;color:#d4c8b4}.slide-overlay h2{font-weight:400;font-size:clamp(25px,3vw,45px);margin:7px 0}.slide-overlay p{font:14px Arial,sans-serif;margin:3px 0;color:#dfdfd5}.slide-counter{font:13px Arial,sans-serif;color:#ddd}.slide-bottom{text-align:center;margin:0;font:12px Arial,sans-serif;letter-spacing:.1em;color:#bbbeb4}.slide-gate{margin:auto;text-align:center;max-width:500px}.slide-gate h1{font-size:46px;font-weight:400}.slide-gate p{color:#d9ddd3;line-height:1.5}.slide-gate input{margin:10px 0 15px}.slide-gate form{display:flex;flex-direction:column;align-items:stretch}#slide-message{color:#f3c6c5}@media(max-width:900px){.album-grid,.admin-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){.topbar{height:65px;padding:0 15px}.brand{font-size:10px;letter-spacing:.08em}.brand-icon{font-size:20px}nav{gap:11px}nav a,.link-button{font-size:11px}.hero{min-height:550px;padding:50px 20px}.hero-sub{font-size:16px}.hero-date{margin-top:35px}.hero-actions{flex-direction:column;width:100%;max-width:330px}.hero-actions .btn{width:100%}.panel-section,.album-section{padding:55px 15px}.upload-panel{padding:15px}.form-grid{grid-template-columns:1fr;gap:12px}.album-grid,.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.album-card{aspect-ratio:3/4}.gate-box{padding:28px 20px}.stats{gap:7px}.stats>div{padding:12px}.stats strong{font-size:30px}.admin-head h1{font-size:37px}.admin-head{align-items:start}.admin-layout{margin:30px auto}.admin-tools{flex-direction:column}.tabs{width:fit-content}.slide-frame{padding:12px}.slide-stage{margin:12px 0}.slide-overlay{padding:70px 15px 20px}.slide-top{font-size:10px}}

[hidden]{display:none!important}

/* Galerie : navigation tactile et clavier */
#lightbox{position:relative;overflow-x:hidden;width:min(94vw,1180px);box-sizing:border-box}
.lightbox-viewer{position:relative;display:flex;align-items:center;justify-content:center;min-height:min(55vh,420px)}
#lightbox-content{touch-action:pan-y;user-select:none;-webkit-user-select:none}
#lightbox-content img,#lightbox-content video{max-width:calc(94vw - 70px);max-height:74vh}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:45px;height:58px;display:grid;place-items:center;border:1px solid #ffffff55;border-radius:8px;background:#181b18b8;color:white;font:38px/1 Georgia,serif;cursor:pointer;z-index:2}
.lightbox-nav:hover,.lightbox-nav:focus-visible{background:#4c5a4b;outline:2px solid #e5e8dc;outline-offset:2px}
.lightbox-prev{left:0}.lightbox-next{right:0}
.lightbox-counter{text-align:center;font:12px Arial,sans-serif;color:#c7c8c2;margin-top:8px}
@media(max-width:650px){#lightbox{padding:12px;width:96vw;max-width:96vw}.lightbox-nav{width:34px;height:46px;font-size:30px}.lightbox-viewer{min-height:40vh}#lightbox-content img,#lightbox-content video{max-width:calc(96vw - 70px);max-height:72vh}.lightbox-meta{flex-wrap:wrap}}

/* V1.4 : visionneuse toujours centree dans la fenetre visible, meme si
   l'album a ete deroule jusqu'en bas sur mobile. */
#lightbox[open]{
 position:fixed;
 inset:0;
 margin:auto;
 width:min(96vw,1180px);
 max-width:96vw;
 max-height:calc(100vh - 20px);
 max-height:calc(100dvh - 20px);
 overflow:hidden;
 display:flex;
 flex-direction:column;
 padding:12px;
 z-index:1000;
}
#lightbox .lightbox-viewer{flex:1 1 auto;min-height:0;overflow:hidden}
#lightbox #lightbox-content{min-height:0;min-width:0;max-width:100%;max-height:100%;overflow:hidden}
#lightbox #lightbox-content img,#lightbox #lightbox-content video{
 display:block;
 max-width:calc(96vw - 78px);
 max-height:calc(100vh - 120px);
 max-height:calc(100dvh - 120px);
 width:auto;
 height:auto;
 object-fit:contain;
}
#lightbox .lightbox-meta{flex:0 0 auto;min-height:0}
#lightbox .lightbox-counter{flex:0 0 auto}
@media(max-width:650px){
 #lightbox[open]{width:100vw;max-width:100vw;max-height:100dvh;height:100dvh;border-radius:0;padding:16px 12px max(12px,env(safe-area-inset-bottom))}
 #lightbox #lightbox-content img,#lightbox #lightbox-content video{max-width:calc(100vw - 80px);max-height:calc(100dvh - 132px)}
 #lightbox .close-lightbox{top:max(8px,env(safe-area-inset-top));z-index:3}
}

/* V1.5 : visionneuse indépendante du défilement de la page (iOS/Android/PC). */
#lightbox[hidden]{display:none!important}
#lightbox:not([hidden]){
 position:fixed!important;
 inset:0!important;
 margin:0!important;
 z-index:2147483640;
 background:rgba(14,18,15,.97);
 border:0;
 border-radius:0;
 padding:calc(15px + env(safe-area-inset-top)) 12px calc(12px + env(safe-area-inset-bottom));
 width:100vw!important;
 max-width:100vw!important;
 height:100vh!important;
 height:100dvh!important;
 max-height:100dvh!important;
 display:flex!important;
 flex-direction:column;
 justify-content:center;
 box-sizing:border-box;
 overflow:hidden;
 overscroll-behavior:contain;
}
#lightbox:not([hidden]) .lightbox-viewer{flex:1 1 auto;min-height:0;width:100%;}
#lightbox:not([hidden]) #lightbox-content{display:grid;place-items:center;min-width:0;min-height:0;width:100%;height:100%;}
#lightbox:not([hidden]) #lightbox-content img,
#lightbox:not([hidden]) #lightbox-content video{
 width:auto;height:auto;max-width:calc(100vw - 88px);
 max-height:calc(100dvh - 145px);object-fit:contain;
}
#lightbox:not([hidden]) .close-lightbox{position:absolute;top:calc(8px + env(safe-area-inset-top));right:12px;z-index:5}
#lightbox:not([hidden]) .lightbox-meta{width:100%;flex:0 0 auto}
#lightbox:not([hidden]) .lightbox-nav{z-index:3}
body.lightbox-open{overflow:hidden!important}
