:root{--wine:#4b0712;--red:#7e0c20;--gold:#d8b56a;--paper:#f4e8d0;--ink:#f9f1e8;--muted:#cbbbc0;--card:#250c13}*{box-sizing:border-box}body{margin:0;background:#13070b;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}button,input,textarea{font:inherit}.hidden{display:none!important}.intro{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:38px 22px;background:radial-gradient(circle at 50% 35%,#861326 0,#4c0712 34%,#18070c 75%);position:relative;overflow:hidden}.intro:after{content:"";position:absolute;width:560px;height:560px;border:1px solid #d8b56a22;border-radius:50%}.intro>*{z-index:1}.intro-logo{width:132px;border-radius:30px;box-shadow:0 20px 70px #0008}.eyebrow,.gold{color:var(--gold);letter-spacing:.22em;font-size:11px;font-weight:800}.intro h1{font-family:Georgia,serif;font-size:clamp(44px,8vw,78px);margin:16px 0 8px}.intro h1 span{color:var(--gold);font-weight:400}.introline{font-family:Georgia,serif;color:#e6d9d9;font-size:19px;line-height:1.6}.intro-time{margin:18px 0 24px;padding:14px 28px;border-top:1px solid #d8b56a55;border-bottom:1px solid #d8b56a55}.intro-time small{display:block;color:#bdaeb2}.intro-time b{display:block;color:var(--gold);margin-top:4px}button{border:0;border-radius:999px;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;padding:14px 20px;font-weight:850;cursor:pointer;box-shadow:0 8px 25px #0004}main{max-width:1180px;margin:auto;padding:24px}header{display:flex;justify-content:space-between;align-items:center;padding:12px 0 30px}header small,.section-title small{color:var(--gold);letter-spacing:.14em;font-weight:800}header h2{margin:5px 0;font-family:Georgia,serif;font-size:30px}header img{width:54px;border-radius:15px}.hero{min-height:460px;border:1px solid #d8b56a35;border-radius:32px;padding:clamp(28px,5vw,58px);background:radial-gradient(circle at 80% 30%,#80152a66,transparent 38%),linear-gradient(135deg,#3b0b16,#1b0a10);display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;overflow:hidden}.date{color:var(--gold);text-transform:capitalize}.hero h1{font:52px/1.05 Georgia,serif;margin:10px 0}.hero-copy>p:not(.date){color:var(--muted);font-size:18px;line-height:1.6}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}.ghost,.mini{background:transparent;color:var(--gold);border:1px solid #d8b56a55;box-shadow:none}.mini{padding:9px 13px;font-size:12px}.book{height:260px;display:flex;align-items:center;justify-content:center;perspective:900px;filter:drop-shadow(0 25px 25px #0008)}.page{width:48%;height:220px;background:linear-gradient(90deg,#d6c29b,#fff3d8);color:#3a251a;padding:26px 20px}.left{border-radius:14px 2px 2px 14px;transform:rotateY(8deg);transform-origin:right}.right{border-radius:2px 14px 14px 2px;transform:rotateY(-8deg);transform-origin:left;text-align:center}.page small{color:#8d6b35;font-weight:900;letter-spacing:.14em}.page p{font:18px/1.5 Georgia,serif}.right span{display:block;font:74px Georgia,serif;color:#b1843c}.timeline{padding:54px 8px}.section-title{display:flex;justify-content:space-between;align-items:end}.section-title h3{font:34px Georgia,serif;margin:4px 0}.life-line{display:flex;align-items:center;margin:30px 0 10px}.track{height:2px;background:linear-gradient(90deg,var(--gold),#8d5b65);flex:3}.future{height:2px;border-top:2px dotted #8d5b65;flex:1}.point{width:14px;height:14px;border-radius:50%;background:var(--gold);box-shadow:0 0 18px #d8b56a}.life-line b{font:30px Georgia;color:var(--gold);margin-left:10px}.labels{display:flex;justify-content:space-between;color:#ad9da2;font-size:12px}.timeline>p{text-align:center;color:var(--muted)}.timeline>p strong{color:var(--gold);font:24px Georgia,serif}.surprise{border:1px solid #d8b56a44;background:linear-gradient(100deg,#39101a,#200b11);border-radius:22px;padding:22px 26px;display:flex;align-items:center;gap:20px;cursor:pointer}.surprise>div{font-size:32px;color:var(--gold)}.surprise p{display:flex;flex-direction:column;flex:1;margin:0}.surprise small{color:var(--gold);font-size:10px;letter-spacing:.16em}.surprise b{font:24px Georgia,serif;margin:3px 0}.surprise span{color:var(--muted)}.surprise>strong{font-size:28px;color:var(--gold)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:28px 0}.grid article{min-height:170px;padding:24px;border:1px solid #ffffff10;background:linear-gradient(145deg,#271017,#190a0f);border-radius:22px;cursor:pointer;transition:.2s}.grid article:hover{transform:translateY(-3px);border-color:#d8b56a55}.grid article>span{font-size:25px}.grid h3{font:24px Georgia,serif;margin:18px 0 5px}.grid p{color:var(--muted);line-height:1.5;margin:0}.locked{opacity:.7}.promise{margin:30px 0;min-height:280px;border-radius:30px;background:radial-gradient(circle at 20%,#7e0c2055,transparent 35%),#1d0a10;display:flex;align-items:center;justify-content:center;gap:36px;text-align:left}.promise img{width:120px;border-radius:28px}.promise small{color:var(--gold);letter-spacing:.2em}.promise h2{font:38px Georgia,serif;margin:8px 0}.promise em{color:var(--gold);font-style:normal}.promise p{color:var(--muted)}footer{text-align:center;color:#8e7e83;padding:28px}.modal{position:fixed;inset:0;background:#090306dd;display:flex;align-items:flex-end;justify-content:center;z-index:9;backdrop-filter:blur(8px)}.sheet{width:min(680px,100%);background:#211016;border:1px solid #d8b56a44;border-radius:28px 28px 0 0;padding:34px;position:relative;box-shadow:0 -30px 90px #000}.sheet h2{font:34px Georgia,serif}.x{position:absolute;right:20px;top:18px;background:#ffffff0c;color:white;padding:8px 13px;box-shadow:none}.muted{color:var(--muted);line-height:1.6}textarea,input{width:100%;border:1px solid #ffffff18;border-radius:16px;background:#12080c;color:white;padding:16px;margin:12px 0;outline:none}textarea{min-height:150px;resize:vertical}.sheet>button:not(.x){width:100%;margin-top:10px}.memory-card,.names{border:1px solid #d8b56a44;border-radius:18px;padding:22px;margin:18px 0;background:#15090d;font:20px/1.6 Georgia,serif;color:#ead6aa}.names{text-align:center;font-size:24px}.family-line{text-align:center;color:var(--muted);font-family:Georgia,serif;line-height:1.7}@media(max-width:760px){main{padding:16px}.hero{grid-template-columns:1fr;padding:28px 20px}.hero h1{font-size:42px}.book{height:220px}.page{height:190px;padding:18px 12px}.grid{grid-template-columns:1fr 1fr}.section-title{align-items:start;gap:10px}.section-title h3{font-size:28px}.promise{flex-direction:column;text-align:center;padding:35px 20px}.promise h2{font-size:31px}}@media(max-width:430px){.grid{grid-template-columns:1fr}.book{transform:scale(.92)}.intro-logo{width:110px}}
/* V2 */
.intro-step{display:none;z-index:2;max-width:850px;animation:cinemaIn .9s ease both}.intro-step.active{display:block}.big-number{font:clamp(82px,16vw,180px)/1 Georgia,serif;color:var(--gold);text-shadow:0 0 45px #d8b56a44}.mini-book{margin:auto;width:120px;height:100px;border:2px solid var(--gold);border-radius:8px 8px 36px 36px;display:grid;place-items:center;font:72px Georgia,serif;color:var(--gold);box-shadow:0 20px 60px #0008}.skip{position:absolute;bottom:22px;background:transparent;color:#aa979d;box-shadow:none;font-size:12px}.stars{position:absolute;inset:0;background-image:radial-gradient(#e9cf8f99 1px,transparent 1px);background-size:46px 46px;opacity:.12;animation:drift 18s linear infinite}.tabs{position:sticky;top:10px;z-index:4;display:flex;gap:6px;padding:6px;margin:0 0 18px;background:#16090dcc;border:1px solid #ffffff10;border-radius:999px;backdrop-filter:blur(14px);overflow:auto}.tabs button{white-space:nowrap;flex:1;background:transparent;color:#c8b8bd;box-shadow:none;padding:10px 15px}.tabs button.active{background:#ffffff0c;color:var(--gold)}.view{display:none;min-height:55vh}.active-view{display:block;animation:cinemaIn .45s ease}.story-list{display:grid;gap:16px;margin:26px 0 50px}.story-item{display:grid;grid-template-columns:120px 1fr;gap:22px;padding:22px;border-left:1px solid #d8b56a66;background:linear-gradient(90deg,#2b0d16aa,transparent);border-radius:0 18px 18px 0}.story-date{color:var(--gold);font:17px Georgia,serif}.story-item h4{font:25px Georgia,serif;margin:0 0 6px}.story-item p{color:var(--muted);margin:0;line-height:1.6}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:24px 0 50px}.photo-card{aspect-ratio:1;overflow:hidden;border-radius:18px;border:1px solid #ffffff14;position:relative;background:#241017}.photo-card img{width:100%;height:100%;object-fit:cover;transition:.3s}.photo-card:hover img{transform:scale(1.04)}.photo-card button{position:absolute;right:8px;top:8px;padding:5px 9px;background:#12080caa;color:white;box-shadow:none}.upload{display:inline-block;cursor:pointer}.upload input{display:none}.wish-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0 50px}.wish-card{padding:24px;min-height:130px;border:1px solid #d8b56a33;border-radius:20px;background:#211017;font:21px Georgia,serif}.double-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px}.double-wrap textarea{min-height:180px}.who{color:var(--gold);font-weight:800}.future-line{height:2px;border-top:2px dotted #8d5b65;flex:1}@keyframes cinemaIn{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}@keyframes drift{to{background-position:46px 46px}}@media(max-width:760px){.photo-grid{grid-template-columns:repeat(2,1fr)}.story-item{grid-template-columns:1fr;gap:5px}.wish-list{grid-template-columns:1fr}.double-wrap{grid-template-columns:1fr}.tabs button{flex:0 0 auto}}

/* V3 — Cadeau final */
.secret-card{position:relative;overflow:hidden;background:linear-gradient(145deg,#25040a,#5d0917);border:1px solid rgba(220,181,91,.35);border-radius:28px;padding:28px;margin:26px 0;box-shadow:0 24px 80px rgba(0,0,0,.28)}
.secret-card:after{content:'K';position:absolute;right:-8px;bottom:-50px;font:190px Georgia,serif;color:rgba(220,181,91,.05)}
.secret-card h3{font:32px Georgia,serif;margin:8px 0}.secret-card p{max-width:680px;line-height:1.7}.secret-card button{margin-top:8px}
.year-ago{display:flex;gap:18px;align-items:center;background:rgba(255,255,255,.035);border:1px solid rgba(220,181,91,.2);padding:18px;border-radius:22px;margin:20px 0}.year-ago .stamp{min-width:76px;height:76px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(220,181,91,.45);font:26px Georgia;color:#dcb55b}.year-ago p{margin:0;line-height:1.55}
.capsule-list{display:grid;gap:12px}.capsule-item{padding:16px 18px;border:1px solid rgba(220,181,91,.22);border-radius:18px;background:rgba(255,255,255,.025)}.capsule-item b{display:block;margin-bottom:5px}.capsule-item.open{cursor:pointer}.capsule-item.locked-cap{opacity:.72}
.reveal-letter{font:20px Georgia,serif;line-height:1.85;padding:22px 4px}.reveal-letter:first-letter{font-size:54px;color:#dcb55b;float:left;line-height:.8;padding-right:8px}.seal{font-size:44px;margin:10px 0;color:#dcb55b}
.bottom-nav{display:none}
@media(max-width:720px){main{padding-bottom:88px}.tabs{display:none}.bottom-nav{position:fixed;z-index:30;left:10px;right:10px;bottom:10px;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(25,3,8,.92);backdrop-filter:blur(18px);border:1px solid rgba(220,181,91,.24);border-radius:22px;padding:8px;box-shadow:0 18px 60px #000}.bottom-nav button{background:none;border:0;color:#cbbdc0;padding:9px 3px;font-size:11px}.bottom-nav button span{display:block;font-size:20px;color:#dcb55b;margin-bottom:3px}.bottom-nav button.active{color:#fff}.secret-card h3{font-size:27px}.year-ago{align-items:flex-start}.hero{padding-top:24px}}
.cloud-pill{border:1px solid rgba(212,175,55,.35);background:rgba(255,255,255,.04);color:#e8cf7a;border-radius:999px;padding:.55rem .8rem;font-size:.72rem;white-space:nowrap}.invite{font-size:2.2rem!important;letter-spacing:.18em;margin:1rem 0}
.k-messages{display:flex;flex-direction:column;gap:10px;max-height:48vh;overflow:auto;margin:18px 0}.k-msg{align-self:flex-start;max-width:86%;padding:12px 14px;border-radius:16px;background:rgba(255,255,255,.07);display:flex;flex-direction:column;gap:8px}.k-msg.mine{align-self:flex-end;background:rgba(212,175,55,.14)}.k-msg button{font-size:.75rem;padding:7px 10px}.k-msg small{opacity:.7}.k-compose textarea{min-height:78px}.k-compose button{width:100%}

/* V4 — accès cadeau + calendrier vivant */
.access-gate{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 50% 25%,#7e0c20,#2a080f 48%,#0e0508);display:grid;place-items:center;padding:22px}.gate-card{width:min(520px,100%);text-align:center;padding:38px 28px;border:1px solid #d8b56a55;border-radius:30px;background:#19090ee8;box-shadow:0 35px 120px #000a}.gate-card img{width:110px;height:110px;object-fit:cover;border-radius:25px;margin-bottom:18px}.gate-card small{display:block;color:var(--gold);letter-spacing:.2em}.gate-card h1{font:38px/1.12 Georgia,serif}.gate-card p{color:var(--muted);line-height:1.6}.gate-error{min-height:24px;color:#efb0b0!important}.cal-toolbar{display:flex;justify-content:center;align-items:center;gap:18px;margin:25px 0 12px}.cal-toolbar button{padding:8px 14px}.cal-toolbar b{min-width:220px;text-align:center;font:25px Georgia,serif;text-transform:capitalize}.cal-modes{display:flex;justify-content:center;gap:7px;margin-bottom:20px}.cal-modes button{background:#ffffff08;color:#cdbfc3;box-shadow:none;padding:9px 14px}.cal-modes button.active{background:#d8b56a;color:#32140b}.weekheads,.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.weekheads span{text-align:center;color:#a9979d;font-size:12px;padding:7px}.day-cell{position:relative;min-height:95px;border-radius:16px;background:#211017;color:#f8ecef;border:1px solid #ffffff10;box-shadow:none;text-align:left;align-items:flex-start;padding:12px}.day-cell b{font:22px Georgia,serif}.today-cell{border-color:#d8b56a}.cal-dot{position:absolute;right:9px;bottom:9px;color:#d8b56a}.year-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.month-card{min-height:115px;border-radius:18px;background:#211017;color:#fff;border:1px solid #ffffff10;box-shadow:none;text-align:left}.month-card b{display:block;font:23px Georgia,serif;text-transform:capitalize}.month-card span{display:block;color:#b9a9ae;margin-top:12px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.week-day{min-height:220px;border-radius:18px;background:#211017;color:#fff;border:1px solid #ffffff10;box-shadow:none;text-align:left;display:flex;flex-direction:column;gap:10px}.week-day>b{font:30px Georgia}.week-day span{font-size:11px;color:#e3ca86}.week-day .empty{color:#8f7f84}.day-page{max-width:760px;margin:20px auto;padding:30px;border-radius:26px;background:#211017;border:1px solid #d8b56a33}.day-page h2{font:34px Georgia,serif}.bottom-nav{grid-template-columns:repeat(5,1fr)!important}
@media(max-width:720px){.year-grid{grid-template-columns:repeat(2,1fr)}.day-cell{min-height:68px;padding:8px}.week-grid{grid-template-columns:1fr}.week-day{min-height:110px}.cal-toolbar b{min-width:160px;font-size:19px}.bottom-nav button{font-size:9px}}

/* V5 — récit fondateur */
.story-intro .intro-step{max-width:980px}.story-word{font-family:Georgia,serif;font-size:clamp(3.5rem,12vw,8rem);font-style:italic;color:#e5c37a;line-height:1;margin:18px 0}.insta-strip{display:flex;justify-content:center;gap:10px;margin:24px auto 4px;max-width:680px}.insta-strip img{width:31%;max-height:230px;object-fit:cover;object-position:top;border-radius:18px;border:1px solid rgba(229,195,122,.3);box-shadow:0 15px 45px rgba(0,0,0,.35)}.meeting-step em{color:#e5c37a;font-style:italic}.meeting-photos{display:flex;gap:12px;justify-content:center;margin:18px auto;max-width:560px}.meeting-photos img{width:48%;height:190px;object-fit:cover;border-radius:20px;border:1px solid rgba(229,195,122,.35)}.story-line{display:flex;align-items:center;justify-content:center;gap:10px;margin:32px auto 0;max-width:760px;color:#e5c37a;font-size:.78rem;letter-spacing:.08em}.story-line i{height:1px;flex:1;background:linear-gradient(90deg,#8d672e,#e5c37a)}.story-line i.future{background:linear-gradient(90deg,#e5c37a,transparent)}.story-line b{white-space:nowrap;color:#fff}.story-line strong{font-size:1.6rem}.story-intro .skip{opacity:.55}@media(max-width:620px){.insta-strip img:nth-child(3){display:none}.insta-strip img{width:47%;max-height:180px}.meeting-photos img{height:145px}.story-line{gap:5px;font-size:.58rem}.story-intro .introline{font-size:.96rem}}

/* V5.1 — récit fondateur visible même avec Supabase connecté */
.story-list{display:flex;flex-direction:column;gap:28px}
.story-chapter{display:grid;grid-template-columns:150px 1fr;gap:28px;padding:30px;border:1px solid rgba(214,166,74,.28);border-radius:24px;background:linear-gradient(135deg,rgba(255,255,255,.025),rgba(214,166,74,.025));position:relative;overflow:hidden}
.story-chapter:before{content:"";position:absolute;left:164px;top:0;bottom:0;width:1px;background:linear-gradient(transparent,rgba(214,166,74,.38),transparent)}
.story-chapter .story-date{font-size:.82rem;letter-spacing:.08em;color:#d8a94d;text-transform:uppercase;padding-top:7px}
.story-chapter-body small{color:#d8a94d;letter-spacing:.16em;font-weight:700}
.story-chapter-body h3{font-family:Georgia,serif;font-size:2rem;margin:8px 0 12px;color:#fff4e6}
.story-chapter-body p{font-family:Georgia,serif;font-size:1.1rem;line-height:1.75;color:#e8d9d4;max-width:850px}
.story-media{display:flex;gap:12px;margin-top:20px;overflow-x:auto;padding-bottom:6px}
.story-media img{height:260px;max-width:240px;object-fit:cover;border-radius:18px;border:1px solid rgba(214,166,74,.3);box-shadow:0 16px 40px rgba(0,0,0,.28)}
.story-media.duo img{height:330px;max-width:46%}
.story-hero{border-color:rgba(214,166,74,.62);box-shadow:0 0 55px rgba(214,166,74,.08)}
.story-hero .story-chapter-body h3{font-size:2.35rem;color:#ffd87a}
@media(max-width:700px){.story-chapter{grid-template-columns:1fr;gap:8px;padding:22px}.story-chapter:before{display:none}.story-chapter-body h3{font-size:1.55rem}.story-media img{height:210px}.story-media.duo img{height:230px;max-width:48%}}

/* V5.3 — histoire fondée sur les vrais mots */
.story-chapter blockquote{margin:16px 0;padding:18px 20px;border-left:3px solid var(--gold);background:#ffffff08;border-radius:0 16px 16px 0;font:20px/1.55 Georgia,serif;color:#f4e8d0}.story-chapter blockquote cite{display:block;margin-top:8px;color:var(--gold);font:700 11px/1.3 Inter,sans-serif;letter-spacing:.12em;text-transform:uppercase}.photo-card.dated{position:relative;padding-bottom:34px}.photo-date{position:absolute;left:10px;bottom:9px;font-size:11px;color:var(--gold);font-weight:800}.restore-wa{margin:8px 0 16px}.cal-dot{min-width:20px}

/* V6 — Prendre soin de nous + Escapades */
.care-card,.escape-hub{margin:26px 0;border:1px solid #d8b56a3d;border-radius:28px;padding:28px;background:radial-gradient(circle at 90% 10%,#7e0c2038,transparent 35%),linear-gradient(145deg,#271017,#18090e)}
.care-card h3,.escape-hub h3{font:32px Georgia,serif;margin:6px 0 8px}.care-card>p,.escape-hub>p{color:var(--muted);line-height:1.6;max-width:760px}.care-actions,.escape-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.care-actions button,.escape-actions button{box-shadow:none}.care-note{margin-top:18px;padding:14px 16px;border-left:2px solid var(--gold);background:#ffffff08;color:#e9ddd2;border-radius:0 14px 14px 0;font:16px/1.5 Georgia,serif}.intent-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:16px 0}.intent-grid button{background:#ffffff08;color:#f6ece7;border:1px solid #ffffff12;box-shadow:none;text-align:left}.intent-grid button:hover{border-color:#d8b56a66}.soft-rule{font-size:13px;color:#b8a7ac;margin-top:16px}.escape-empty{text-align:center;padding:34px 20px;border:1px dashed #d8b56a45;border-radius:22px;margin:18px 0;background:#13080c80}.escape-empty .big{font-size:38px}.escape-empty b{display:block;font:26px Georgia,serif;margin:10px}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}.game-card{padding:20px;border-radius:20px;border:1px solid #ffffff12;background:#ffffff07;cursor:pointer}.game-card b{display:block;font:21px Georgia,serif;margin:8px 0}.game-card span{color:var(--muted);font-size:13px;line-height:1.45}.two-key{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0;font-size:22px}.two-key i{height:1px;width:38px;background:var(--gold);opacity:.5}.wheel-demo{width:210px;height:210px;border-radius:50%;margin:20px auto;display:grid;place-items:center;border:7px solid #d8b56a;background:conic-gradient(#7e0c20 0 60deg,#d8b56a 60deg 120deg,#4b0712 120deg 180deg,#b78542 180deg 240deg,#650c1d 240deg 300deg,#e0c27c 300deg);box-shadow:0 15px 50px #0008}.wheel-demo:after{content:'K';width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:#1b0910;color:var(--gold);font:38px Georgia,serif;border:2px solid var(--gold)}.sim-status{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.sim-status div{padding:13px;border:1px solid #ffffff14;border-radius:14px;text-align:center}.sim-status .ready{border-color:#d8b56a66;color:#ead092}.kindness-line{text-align:center;color:#d6c7cb;font:17px Georgia,serif;margin:18px 0}.future-faith{color:var(--gold);font-family:Georgia,serif}.sender-mourad{border-left:3px solid #d8b56a}.sender-karima{border-left:3px solid #a86983}
@media(max-width:760px){.game-grid{grid-template-columns:1fr}.intent-grid{grid-template-columns:1fr}.care-card,.escape-hub{padding:22px 18px}.sim-status{grid-template-columns:1fr}}

/* V7 — bande-son & liens partagés */
.soundtrack-feature{margin:28px 0;padding:24px;border:1px solid rgba(202,164,89,.28);border-radius:22px;background:linear-gradient(145deg,rgba(90,7,22,.7),rgba(20,7,12,.88))}.soundtrack-feature h3{font-size:1.5rem;margin:.4rem 0}.shared-stats{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;margin:18px 0;padding:14px;border-radius:16px;background:rgba(255,255,255,.04)}.shared-stats b{color:#d7b66a;font-size:1.2rem}.shared-filters{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.shared-list{display:grid;gap:12px;max-height:58vh;overflow:auto;padding-right:4px}.shared-card{padding:15px;border-radius:16px;background:rgba(255,255,255,.045);border-left:4px solid #c59a55}.shared-card.from-karima{border-left-color:#d789a8}.shared-card.from-mourad{border-left-color:#7aa7d9}.shared-top{display:flex;justify-content:space-between;gap:12px}.shared-top span,.shared-by{font-size:.76rem;opacity:.72}.shared-by{margin-top:5px;letter-spacing:.05em}.from-karima .shared-by{color:#efabc5}.from-mourad .shared-by{color:#9bc6f3}.shared-context{font-size:.88rem;line-height:1.45;opacity:.9}.shared-actions{display:flex;gap:8px;flex-wrap:wrap}.shared-actions a,.shared-actions button{font-size:.78rem;padding:9px 11px;border-radius:10px}.shared-actions a{background:#d0aa5c;color:#24060d;text-decoration:none;font-weight:700}@media(max-width:650px){.shared-card{padding:13px}.shared-context{font-size:.82rem}}

/* V8 — anniversaires */
.birthday-hub{margin:28px 0;padding:24px;border:1px solid rgba(184,143,68,.35);border-radius:24px;background:linear-gradient(145deg,rgba(83,7,20,.92),rgba(30,5,10,.96))}.birthday-hub h3{margin:.35rem 0 1rem}.birthday-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.birthday-grid article{padding:18px;border-radius:18px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:10px}.birthday-grid article span{font-size:.76rem;letter-spacing:.14em;color:#d6b36a}.birthday-grid article b{font-size:1.08rem}.birthday-grid button{margin-top:4px}.birthday-upload{display:block;margin:12px 0}.birthday-upload input{display:none}@media(max-width:640px){.birthday-grid{grid-template-columns:1fr}}
/* V9 — album maîtrisé par le couple */
.album-filters{display:flex;gap:8px;overflow:auto;margin:14px 0 18px;padding-bottom:4px}.album-filters button,.photo-tools button{border:1px solid rgba(181,143,69,.28);background:rgba(255,255,255,.04);color:inherit;border-radius:999px;padding:8px 12px;white-space:nowrap}.album-filters button.active{background:#b58f45;color:#180d0f}.v9-photo{overflow:hidden}.photo-frame{height:210px;overflow:hidden;border-radius:16px;background:#130b0d}.photo-frame img{width:100%;height:100%;object-fit:cover;transition:.25s}.photo-info{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:10px 4px 5px}.photo-info small{opacity:.7}.sender-mourad{color:#d8b56a}.sender-karima{color:#e8a6b5}.photo-tools{display:flex;gap:6px;flex-wrap:wrap;padding:4px 0 12px}.photo-tools button{font-size:12px;padding:6px 9px}.presentation-editor{margin:16px 0}.presentation-photo{height:300px;max-width:520px;border-radius:22px;overflow:hidden;background:linear-gradient(135deg,rgba(181,143,69,.12),rgba(91,15,30,.18));display:grid;place-items:center;position:relative;border:1px solid rgba(181,143,69,.25)}.presentation-photo>img{width:100%;height:100%;object-fit:cover}.edit-float{position:absolute;right:12px;bottom:12px;border:0;border-radius:999px;padding:9px 12px;background:rgba(20,10,12,.82);color:white}.picker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;max-height:60vh;overflow:auto}.picker-photo{padding:0;border:2px solid transparent;background:none;color:inherit;text-align:left}.picker-photo.selected{border-color:#b58f45}.picker-photo img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.picker-photo span{display:block;font-size:10px;padding:4px}.adjust-preview{height:360px;overflow:hidden;border-radius:18px;background:#111;margin:14px 0}.adjust-preview img{width:100%;height:100%;object-fit:cover}.sheet label{display:block;margin:12px 0}.sheet input[type=range]{width:100%}@media(max-width:650px){.picker-grid{grid-template-columns:repeat(2,1fr)}.presentation-photo{height:250px}}
/* V10 — caméra KADIARY */
.gallery-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.camera-action{cursor:pointer}.capture-preview{margin:16px 0;border-radius:18px;overflow:hidden;background:#120b0b;max-height:52vh}.capture-preview img{display:block;width:100%;max-height:52vh;object-fit:contain}.capture-actions{display:flex;gap:10px;flex-wrap:wrap}.capture-actions button{flex:1;min-width:150px}
@media(max-width:640px){.gallery-actions{width:100%;justify-content:stretch}.gallery-actions .upload{flex:1;text-align:center}.capture-actions{flex-direction:column}}
/* V11 — Les portes de ma vie */
.door-chip{margin-top:6px;border:1px solid rgba(199,163,90,.35);background:rgba(255,255,255,.035);color:#ead9b0;border-radius:999px;padding:6px 10px;font-size:11px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.door-settings{width:34px;height:34px;border-radius:50%;padding:0;font-size:20px;background:transparent;border:1px solid rgba(255,255,255,.12)}.doors-list{display:grid;gap:10px;margin:18px 0}.door-card{width:100%;display:grid;grid-template-columns:42px 1fr 18px;gap:10px;align-items:center;text-align:left;padding:14px;border-radius:18px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.09)}.door-card.selected{border-color:rgba(199,163,90,.6)}.door-card>span{font-size:25px}.door-card div{display:flex;flex-direction:column;gap:2px}.door-card small{font-size:9px;letter-spacing:.12em;color:#bfa46d}.door-card b{color:#fff}.door-card em{font-style:normal;font-size:11px;color:#9c978f}.door-card i{font-style:normal}.door-types{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:18px 0}.door-types button{min-height:58px;border-radius:16px}.invite{user-select:all;letter-spacing:.18em}

/* V12 — transmission enfant */
.door-date-label{display:block;margin:14px 0 6px;font-size:.82rem;color:var(--muted,#b9aaa3)}.door-date-label span{opacity:.65}
/* V13 — Mes KADIARY */
.gift-doors{margin:22px 0 14px}.gift-doors>.gold{display:block;margin:0 0 10px}.door-card.dormant{border-style:dashed;opacity:.94;background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(185,142,65,.06))}.privacy-note{font-size:.78rem;opacity:.62;text-align:center;margin:14px 8px 0}
/* V14 */
.gift-door-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0}.gift-door{min-height:260px;border-radius:28px;border:1px solid #d8b56a55;background:linear-gradient(160deg,#32101a,#16090d);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:24px;box-shadow:0 20px 55px #0005}.gift-door>span{font-size:50px;margin-bottom:18px}.gift-door small{color:#d8b56a;letter-spacing:.13em}.gift-door b{display:block;font:32px Georgia,serif;margin:8px}.gift-door em{font-style:normal;color:#cdbfc3}.gift-door.dormant{border-style:dashed;background:linear-gradient(160deg,#211017,#10080b)}.gift-lead{font:24px Georgia,serif}.gift-note{color:#cdbfc3;font:17px Georgia,serif}.gift-empty-symbol{font-size:64px;text-align:center;margin:20px}.photo-remove-x{position:absolute!important;right:9px!important;top:9px!important;bottom:auto!important;width:34px;height:34px;padding:0!important;border-radius:50%!important;background:#16090de6!important;color:#fff!important;border:1px solid #fff6!important;font-size:22px!important;z-index:5}.v9-photo{position:relative}.cal-thumb-wrap{position:absolute;left:7px;bottom:7px;width:44px;height:34px;border-radius:8px;overflow:hidden;border:1px solid #d8b56a88}.cal-thumb{width:100%;height:100%;object-fit:cover}.cal-thumb-wrap i{position:absolute;right:2px;bottom:2px;background:#12080cdd;color:#fff;border-radius:7px;padding:1px 4px;font-size:9px}.cal-lightbox{text-align:center}.cal-lightbox>img{max-width:100%;max-height:65vh;border-radius:18px;object-fit:contain}.cal-photo-x{position:absolute;right:16px;top:12px;border-radius:50%;padding:7px 12px}.cal-photo-meta{display:flex;justify-content:space-between;gap:10px;margin:12px 0}.cal-photo-nav{display:flex;justify-content:center;align-items:center;gap:20px}.cal-day-photos{margin:18px 0}.cal-day-photos>div{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:8px 0}.cal-day-photos button{padding:0;background:none;box-shadow:none}.cal-day-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.wheel-city-list{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.wheel-city-list span{padding:8px 10px 8px 14px;border:1px solid #d8b56a55;border-radius:999px;background:#ffffff08}.wheel-city-list span button{padding:2px 6px;margin-left:5px;background:none;box-shadow:none;color:#fff}.wheel-city-list em{color:#9f8d93}.wheel-add{display:flex;gap:8px}.wheel-add input{margin:0}.dynamic-wheel{width:250px;height:250px;border-radius:50%;margin:24px auto;position:relative;border:7px solid #d8b56a;background:conic-gradient(#6d1021,#d8b56a,#43101a,#b77b3f,#6d1021);box-shadow:0 18px 55px #0008}.dynamic-wheel>b{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#17090d;color:#d8b56a;font:34px Georgia,serif}.dynamic-wheel span{position:absolute;left:50%;top:50%;transform:rotate(calc(360deg / var(--n) * var(--i))) translateY(-103px) rotate(calc(-360deg / var(--n) * var(--i)));transform-origin:0 0;font-size:10px;font-weight:800;max-width:70px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;text-shadow:0 1px 3px #000}.cal-dot{right:7px;top:7px;bottom:auto}@media(max-width:700px){.gift-door-grid{grid-template-columns:1fr}.gift-door{min-height:175px}.cal-day-photos>div{grid-template-columns:repeat(3,1fr)}.wheel-add{flex-direction:column}}
/* V15 — vraie racine cadeau + navigation */
.gift-root-v15{position:fixed;inset:0;z-index:800;background:radial-gradient(circle at 50% 0,#641323 0,#250a11 43%,#0e0608 100%);overflow:auto;color:#fff;padding:env(safe-area-inset-top) 18px env(safe-area-inset-bottom)}
.gift-root-v15.hidden{display:none}.gift-root-inner{max-width:920px;margin:auto;text-align:center;padding:34px 0 80px}.gift-root-logo{width:74px;border-radius:20px;margin:0 auto 15px}.gift-root-inner>small{color:#d8b56a;letter-spacing:.16em}.gift-root-inner h1{font:clamp(36px,7vw,68px)/1.05 Georgia,serif;margin:14px 0}.gift-root-inner h1 em{color:#e2bf72}.gift-root-inner>p{color:#cbbbc0;max-width:620px;margin:0 auto 26px;line-height:1.6}.gift-root-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.gift-root-doors>button{min-height:300px;border:1px solid #d8b56a55;border-radius:28px;background:linear-gradient(165deg,#3a111c,#16090d);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 20px 55px #0006}.gift-root-doors span{font-size:54px}.gift-root-doors small{color:#d8b56a;letter-spacing:.14em;margin-top:15px}.gift-root-doors b{font:32px Georgia,serif;margin:8px}.gift-root-doors em{font-style:normal;color:#cdbfc3}.create-door-v15{margin-top:22px}.root-nav-v15{display:flex;justify-content:space-between;gap:10px;margin:0 0 12px}.root-nav-v15 button,.view-back-v15,.modal-back-v15{background:transparent!important;color:#d8b56a!important;border:1px solid #d8b56a55!important;box-shadow:none!important;padding:9px 12px!important;border-radius:999px!important}.view-back-v15{margin:0 0 14px}.today-gift-v15{margin:20px 0 28px;padding:24px;border:1px solid #d8b56a55;border-radius:24px;background:linear-gradient(145deg,#2d0c15,#16090d)}.today-gift-v15>small{color:#d8b56a;letter-spacing:.13em}.today-gift-v15 h3{font:34px Georgia,serif;color:#f1d28a;margin:10px 0 16px}.today-gift-v15 p{font:17px/1.7 Georgia,serif;color:#f2e7e9}.intro-photo-edit-v15{background:transparent!important;border:1px solid #d8b56a77!important;color:#e5c37a!important;box-shadow:none!important;padding:8px 12px!important;margin:0 auto 10px!important}.intro-picker-v15{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:55vh;overflow:auto;margin:14px 0}.intro-picker-v15 button{padding:3px;background:#16090d;border:2px solid transparent;box-shadow:none}.intro-picker-v15 button.selected{border-color:#d8b56a}.intro-picker-v15 img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.intro-picker-v15 small{display:block;font-size:9px;color:#d8b56a;padding:3px}.photo-remove-x{position:static!important;width:auto!important;height:auto!important;border-radius:999px!important;font-size:12px!important;background:rgba(255,255,255,.04)!important;color:inherit!important;border:1px solid rgba(181,143,69,.28)!important;padding:6px 9px!important}.bottom-nav.hidden{display:none!important}
@media(max-width:700px){.gift-root-doors{grid-template-columns:1fr}.gift-root-doors>button{min-height:170px}.gift-root-inner{padding-top:24px}.intro-picker-v15{grid-template-columns:repeat(2,1fr)}.root-nav-v15{position:sticky;top:5px;z-index:20;background:#16090dcc;padding:5px;border-radius:999px;backdrop-filter:blur(12px)}.today-gift-v15{padding:18px}.today-gift-v15 p{font-size:16px}}

/* ---------- V16 ---------- */
.modal{z-index:900}
#gateBody input{margin:8px 0}
#gateBody button{width:100%;margin-top:10px}
#gateBody button:disabled{opacity:.55}
.gate-switch{font-size:14px}
.logout-v16{display:block;margin:26px auto 10px;background:transparent!important;color:#a99399!important;box-shadow:none!important;font-size:13px;font-weight:600;text-decoration:underline}
.k-toast{position:fixed;left:50%;bottom:96px;transform:translate(-50%,20px);opacity:0;z-index:1000;padding:10px 18px;border-radius:999px;font-size:14px;font-weight:700;background:#1c0d12ee;border:1px solid #d8b56a77;color:#f1d58e;transition:.3s;pointer-events:none}
.k-toast.bad{color:#f3b3b3;border-color:#f3b3b377}
.k-toast.show{opacity:1;transform:translate(-50%,0)}
.v9-photo{aspect-ratio:auto!important}
.v9-photo .photo-tools button{position:static!important}
.day-cell b{position:relative;z-index:3}
@media(max-width:720px){.day-cell{min-height:66px;padding:6px}.day-cell b{font-size:17px;text-shadow:0 1px 4px #000}.cal-thumb-wrap{width:32px;height:26px;left:4px;bottom:4px}.cal-dot{font-size:11px}}

/* ---------- V17 : une maison commune pour toutes les portes ---------- */
body.door-generic .couple-only{display:none!important}
body.door-solo .shared-only{display:none!important}
.join-v17{display:block;margin:12px auto 0}
.invite-v17{width:100%;margin-top:10px}
.story-empty-v17{text-align:center}

.sound-textoff,.sound-remove{background:transparent!important;box-shadow:none!important;color:#b9a3a9!important;font-size:12px!important;font-weight:600!important;padding:6px 2px!important;text-decoration:underline}
.sound-remove{display:block;margin-top:8px}
.sound-restore{width:100%;margin:6px 0 12px}

/* Nos deux regards */
.regard-list{display:grid;gap:10px;margin-top:16px}
.regard-item{display:flex;flex-direction:column;align-items:flex-start;text-align:left;background:#15090d!important;color:#fff!important;border:1px solid #d8b56a44!important;border-radius:18px!important;box-shadow:none!important;padding:14px 16px!important;width:100%}
.regard-item small{color:#d8b56a;font-size:12px}.regard-item b{font:21px Georgia,serif;margin:3px 0}.regard-item em{font-style:normal;color:#cbbbc0;font-size:13px}
.regard-item.todo{border-color:#d8b56a!important}
.regard-label{display:block;color:#d8b56a;font-size:12px;letter-spacing:.12em;margin-top:10px}
.regard-reveal{text-align:center;color:#d8b56a;font:18px Georgia,serif;margin:10px 0}
.regard-text{white-space:pre-wrap;font-size:18px}
.regard-notice{display:grid;gap:8px;margin:0 0 14px}
.regard-notice button{text-align:left;background:linear-gradient(135deg,#3b0b16,#1b0a10)!important;color:#f1d58e!important;border:1px solid #d8b56a77!important;border-radius:16px!important;padding:14px 16px!important;box-shadow:none!important}
.grid article{position:relative}.regard-badge{position:absolute;top:14px;right:16px;background:#d8b56a;color:#32140b;border-radius:999px;min-width:24px;height:24px;display:grid;place-items:center;font-style:normal;font-weight:900;font-size:13px}

/* Escapades */
.trip-help{margin:4px 0 14px}
.trip-list{display:grid;gap:14px;margin:10px 0 40px}
.trip-card{border:1px solid #d8b56a44;border-radius:22px;padding:18px;background:linear-gradient(145deg,#271017,#190a0f)}
.trip-card.now{border-color:#d8b56a;box-shadow:0 0 0 1px #d8b56a55,0 12px 40px #0006}
.trip-card.done{opacity:.92}
.trip-top{display:flex;justify-content:space-between;color:#d8b56a;font-size:12px;letter-spacing:.1em}
.trip-top span{font-weight:800}
.trip-card h4{font:30px Georgia,serif;margin:6px 0 2px}
.trip-dates{color:#cbbbc0;margin:0 0 6px}.trip-note{color:#e6d9d9;white-space:pre-wrap}
.trip-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.trip-actions button{padding:10px 14px;font-size:13px}
.trip-del{background:transparent!important;color:#a99399!important;box-shadow:none!important;text-decoration:underline;font-weight:600!important}
.trip-ok{color:#9fd8a0;font-size:13px;align-self:center}
.trip-types{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.trip-types label{border:1px solid #d8b56a44;border-radius:999px;padding:8px 12px;color:#e6d9d9}.trip-types input{width:auto;margin:0 4px 0 0}
.trip-empty{text-align:center}.trip-empty button{margin-top:12px}
.ideas-list{display:grid;gap:8px;margin:14px 0}.ideas-list a{display:block;padding:14px 16px;border:1px solid #d8b56a44;border-radius:16px;color:#f1d58e;text-decoration:none;background:#15090d}
/* Entre nous */
.kept-list{display:grid;gap:12px;margin-top:16px}.kept-msg{border-left:2px solid #d8b56a;background:#15090d;border-radius:0 16px 16px 0;padding:14px 16px}
.kept-msg small{color:#d8b56a;font-size:12px}.kept-msg p{font:19px/1.55 Georgia,serif;white-space:pre-wrap;margin:6px 0}
.kept-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.kept-actions button{padding:8px 12px;font-size:12px}.kept-actions a{color:#f1d58e;font-size:13px}
/* Voyage dans le temps */
.voyage{text-align:center;animation:cinemaIn .8s ease both}
.voyage-since{font:22px Georgia,serif;color:#e6d9d9;margin:14px 0 2px}.voyage-since b{color:#d8b56a;font-weight:400}
.voyage-date{font:30px/1.15 Georgia,serif;text-transform:capitalize;margin-bottom:14px}
.voyage-photos{display:grid;gap:8px;margin:10px 0}.voyage-photos.n2{grid-template-columns:1fr 1fr}.voyage-photos.n3{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr}
.voyage-photos img{width:100%;height:100%;min-height:120px;max-height:320px;object-fit:cover;border-radius:18px;animation:cinemaIn 1.1s ease both}
.voyage-photos.n3 img:first-child{grid-row:span 2}
.voyage-word{text-align:left;margin:12px 0;padding:14px 16px;border-left:2px solid #d8b56a;background:#15090d;border-radius:0 14px 14px 0;font:19px/1.55 Georgia,serif;color:#ead6aa;white-space:pre-wrap}
.voyage-word small{display:block;color:#d8b56a;font:12px Inter,sans-serif;letter-spacing:.1em;margin-bottom:4px}
.voyage-caption,.voyage-more{color:#cbbbc0}

/* Vidéos & retrait */
.play-badge{position:absolute;inset:0;display:grid;place-items:center;font-size:42px;color:#fff;text-shadow:0 2px 12px #000;pointer-events:none}
.photo-frame{position:relative}
.media-video{width:100%;max-height:65vh;border-radius:18px;background:#000}
.media-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}
.del-forever{color:#f3b3b3!important}
/* Notre monde */
.globe-open-btn{display:block;margin:10px auto 18px}
#globeV17{position:fixed;inset:0;z-index:950;background:#05020a;color:#fff;display:flex;flex-direction:column}
#globeV17.hidden{display:none}
.globe-head{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;padding:calc(env(safe-area-inset-top) + 16px) 18px 10px;background:linear-gradient(#05020aee,#05020a00)}
.globe-head small{color:#d8b56a;letter-spacing:.2em;font-size:11px;font-weight:800}.globe-head h2{font:28px Georgia,serif;margin:4px 0}.globe-head p{margin:0;color:#cbbbc0;font-size:14px}
.globe-x{background:#ffffff14!important;color:#fff!important;box-shadow:none!important;padding:8px 14px!important}
#globeCanvas{position:absolute;inset:0}
.globe-actions{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 16px);z-index:3;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding:0 12px}
.globe-card{position:absolute;left:12px;right:12px;bottom:calc(env(safe-area-inset-bottom) + 84px);z-index:4;max-width:520px;margin:auto;background:#1b0b10f2;border:1px solid #d8b56a77;border-radius:22px;padding:18px;box-shadow:0 20px 60px #000;max-height:55vh;overflow:auto}
.globe-card small{color:#d8b56a;letter-spacing:.14em;font-size:11px;font-weight:800}.globe-card h3{font:28px Georgia,serif;margin:4px 0}.globe-card p{color:#e6d9d9;margin:4px 0}
.globe-card-x{position:absolute;right:12px;top:10px;background:transparent!important;color:#fff!important;box-shadow:none!important;padding:4px 10px!important}
.globe-note{white-space:pre-wrap;font-family:Georgia,serif}
.globe-photos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:10px}.globe-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}
.pin-row{display:flex;gap:8px}.pin-row input{margin:0}.pin-choice{display:block;width:100%;text-align:left;margin:6px 0;background:#15090d!important;color:#f1d58e!important;border:1px solid #d8b56a44!important;box-shadow:none!important;border-radius:14px!important;font-weight:600}

/* Choix de date au toucher */
.kdp{margin:10px 0}
.kdp-btn{width:100%;text-align:left;background:#12080c!important;color:#fff!important;border:1px solid #ffffff22!important;border-radius:16px!important;box-shadow:none!important;padding:15px 16px!important;font-weight:500!important;text-transform:none}
.kdp-btn b{color:#f1d58e;font-weight:700}.kdp-btn span{color:#a99399}
.kdp.open .kdp-btn{border-color:#d8b56a!important}
.kdp-cal{margin-top:8px;background:#15090d;border:1px solid #d8b56a55;border-radius:18px;padding:12px}
.kdp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.kdp-head b{font:20px Georgia,serif;text-transform:capitalize;cursor:pointer}
.kdp-head button{width:42px;height:42px;padding:0!important;border-radius:50%!important}
.kdp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.kdp-grid i{font-style:normal;color:#a99399;font-size:12px;padding:4px 0}
.kdp-grid button{aspect-ratio:1;padding:0!important;border-radius:12px!important;background:#ffffff08!important;color:#fff!important;box-shadow:none!important;font-weight:600!important;font-size:16px}
.kdp-grid button.today{outline:1px solid #d8b56a}
.kdp-grid button.sel{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important}
.kdp-grid button:disabled{opacity:.22}
.kdp-years{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kdp-years button{background:#ffffff08!important;color:#fff!important;box-shadow:none!important}.kdp-years button.today{outline:1px solid #d8b56a}

.rel-select{width:100%;margin:8px 0;padding:15px 16px;border-radius:16px;background:#12080c;color:#fff;border:1px solid #d8b56a77;font-size:17px;appearance:auto}
.rel-select optgroup{color:#d8b56a}.rel-select option{color:#111}
.rel-info{font-size:16px}

.rel-modes{display:grid;gap:8px;margin:8px 0}
.rel-mode{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:start;border:1px solid #d8b56a44;border-radius:16px;padding:12px 14px;background:#15090d}
.rel-mode input{width:auto;margin:4px 0 0;grid-row:span 2}.rel-mode b{color:#f1d58e}.rel-mode span{color:#cbbbc0;font-size:14px}
.rel-mode:has(input:checked){border-color:#d8b56a}
.rel-mode{display:block;position:relative;padding-left:44px}
.rel-mode input{position:absolute;left:14px;top:14px;margin:0}
.rel-mode b{display:block;margin-bottom:3px}.rel-mode span{display:block}

/* Envoyer une invitation */
.share-inv{margin:14px 0;border:1px solid #d8b56a44;border-radius:18px;padding:14px;background:#15090d}
.share-title{margin:0 0 10px;color:#d8b56a;font-size:12px;letter-spacing:.14em;font-weight:800;text-transform:uppercase}
.share-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}
.share-row button{padding:12px 8px!important;font-size:14px}
.share-wa{background:linear-gradient(135deg,#2fd06b,#1a9e4c)!important;color:#fff!important}
.share-sms{background:linear-gradient(135deg,#4aa3ff,#2466c9)!important;color:#fff!important}
.share-mail{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important}
.share-more{background:#ffffff14!important;color:#fff!important}
.share-preview{margin-top:10px;color:#cbbbc0}.share-preview summary{cursor:pointer;font-size:13px}
.share-preview pre{white-space:pre-wrap;font:14px/1.5 Inter,sans-serif;color:#e6d9d9;background:#0e0508;border-radius:12px;padding:12px;margin-top:8px}
input[type=range]{accent-color:#d8b56a;padding:0;height:36px;border:0;background:transparent}

/* Photo de la porte */
.door-avatar{display:block;width:96px;height:96px;border-radius:50%;overflow:hidden;margin:0 auto 14px;border:2px solid #d8b56a;box-shadow:0 0 0 5px #d8b56a22,0 12px 30px #0008}
.door-avatar img{width:100%;height:100%;object-fit:cover;display:block}
.door-avatar.small{width:52px;height:52px;margin:0;border-width:2px;box-shadow:0 0 0 3px #d8b56a22}
.door-avatar.empty{display:grid;place-items:center;background:#15090d;font-size:22px}
.door-avatar-btn{background:transparent!important;box-shadow:none!important;padding:0!important;margin:0 0 8px;border-radius:50%!important}
.avatar-preview{width:220px;height:220px;border-radius:50%;overflow:hidden;margin:14px auto;border:3px solid #d8b56a;background:#15090d;display:grid;place-items:center;color:#a99399;text-align:center;padding:0}
.avatar-preview img{width:100%;height:100%}
.avatar-upload{display:block;text-align:center;margin:10px 0}
.avatar-pick{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;max-height:280px;overflow:auto;margin:8px 0}
.avatar-pick button{padding:0!important;background:none!important;box-shadow:none!important;border-radius:10px!important;overflow:hidden;aspect-ratio:1}
.avatar-pick img{width:100%;height:100%;object-fit:cover}

/* Nos plus beaux mots */
.mots-analyse{border-left:2px solid #d8b56a;padding:4px 0 4px 16px;margin:10px 0 16px}.mots-analyse p{font:18px/1.6 Georgia,serif;color:#ead6aa;margin:0 0 10px}
.mots-filters{display:flex;gap:6px;overflow-x:auto;padding:4px 0 8px;scrollbar-width:none}.mots-filters button{white-space:nowrap;padding:9px 13px!important;font-size:13px;background:#ffffff0a!important;color:#e6d9d9!important;box-shadow:none!important}.mots-filters button.on{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important}
.mots-count{color:#a99399;font-size:13px}.linkish{background:none!important;box-shadow:none!important;padding:0!important;color:#f1d58e!important;text-decoration:underline;font-weight:600!important;font-size:13px}
.mots-list{display:grid;gap:14px}
.mot{border:1px solid #d8b56a33;border-radius:20px;padding:16px;background:#15090d}.mot.fort{border-color:#d8b56a;box-shadow:0 0 0 1px #d8b56a33}
.mot-top{display:flex;justify-content:space-between;gap:8px;color:#d8b56a;font-size:12px}.mot-top small{text-transform:capitalize}.mot-who{font-weight:800;letter-spacing:.12em}
.mot.from-k .mot-who{color:#ffb3c7}
.mot h4{font:23px Georgia,serif;margin:8px 0 6px}
.mot-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.mot-tags i{font-style:normal;font-size:11px;border:1px solid #d8b56a44;border-radius:999px;padding:3px 8px;color:#cbbbc0}.mot-tags .t5{color:#f1d58e;border-color:#d8b56a}.mot-tags .ti{color:#ffb3c7;border-color:#ffb3c766}
.mot-text{font:19px/1.6 Georgia,serif;white-space:pre-wrap;color:#f9f1e8;margin:6px 0}
.mot-more{background:none!important;box-shadow:none!important;color:#f1d58e!important;padding:0!important;text-decoration:underline;font-size:13px}
.mot-why{color:#a99399;font-size:13px;font-style:italic;margin:8px 0}
.mot-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.mot-actions button{padding:9px 12px!important;font-size:13px}.mot-actions button.in{background:#1f3b27!important;color:#b8f0c4!important}
.mots-entry{display:block;width:100%;text-align:left;margin:0 0 16px;background:linear-gradient(135deg,#3b0b16,#1b0a10)!important;color:#fff!important;border:1px solid #d8b56a77!important;border-radius:20px!important;padding:16px 18px!important}
.mots-entry b{display:block;font:22px Georgia,serif;color:#f1d58e;margin:4px 0}.mots-entry span{color:#cbbbc0;font-weight:500}
.mot-quote{white-space:pre-wrap}
.sheet{max-height:92dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}

/* Vos voix */
.voix-list{display:grid;gap:12px}.voix{border:1px solid #d8b56a33;border-radius:18px;padding:14px 16px;background:#15090d}
.voix-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline}.voix-top b{color:#f1d58e;font-size:13px;letter-spacing:.1em}.voix.from-k .voix-top b{color:#ffb3c7}.voix-top small{color:#a99399;font-size:12px}
.voix-ctx{color:#cbbbc0;font:15px/1.5 Georgia,serif;margin:8px 0;white-space:pre-wrap;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.voix-play{margin:4px 0}.voix-audio{width:100%;margin:6px 0}
.cal-voix{margin:14px 0}.cal-voix-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:8px 0;color:#e6d9d9}.cal-voix-row audio{width:100%}
.av-row{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.av-hint{text-align:center;margin:6px 0 0}.avatar-preview img{pointer-events:none;user-select:none}

/* Aujourd'hui : photo / vidéo */
.btn-like{display:inline-flex;align-items:center;gap:6px;cursor:pointer;border-radius:999px;padding:14px 20px;font-weight:850;background:transparent;color:var(--gold);border:1px solid #d8b56a77}
.btn-like input{display:none}
.today-media{margin-top:16px}.today-media small{display:block;color:#d8b56a;letter-spacing:.14em;font-size:11px;font-weight:800;margin-bottom:8px}
.today-media div{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.today-media button{flex:0 0 72px;height:72px;padding:0!important;border-radius:14px!important;overflow:hidden;background:#15090d!important;box-shadow:none!important;position:relative}
.today-media img{width:100%;height:100%;object-fit:cover}.today-media i{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-style:normal;text-shadow:0 1px 6px #000}

.intro-picker-v15{max-height:none!important;overflow:visible!important}.pick-bar-v19{position:sticky;bottom:calc(-34px);margin:0 -34px -34px;padding:12px 20px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#211016ee,#211016);border-top:1px solid #d8b56a44;display:flex;align-items:center;gap:12px;z-index:5;backdrop-filter:blur(8px)}.pick-bar-v19 p{margin:0;color:#d8b56a;font-weight:800;white-space:nowrap}.pick-bar-v19 button{flex:1;width:auto!important;margin:0!important}.pick-bar-v19 button:disabled{opacity:.4}
/* ===== V20 · Notre livre ===== */
.livre-choice{display:grid;gap:10px;margin:16px 0}.livre-choice label{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;padding:14px 16px;border:1px solid #d8b56a44;border-radius:18px;background:#15090d;cursor:pointer}.livre-choice input{width:auto;margin:0;grid-row:span 2}.livre-choice small{color:#bdaeb2}.livre-opts{display:flex;flex-wrap:wrap;gap:8px 16px;margin:14px 0}.livre-opts label{display:flex;align-items:center;gap:6px;margin:0}.livre-opts input{width:auto;margin:0}.err{color:#ff9b9b}
body.livre-open{overflow:hidden}
#livreV20{position:fixed;inset:0;z-index:1000;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#120609;color:#2b1a14;padding:0 0 60px}
.lv-bar{position:sticky;top:0;z-index:3;display:flex;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:#120609ee;backdrop-filter:blur(10px)}.lv-bar button{padding:10px 14px;font-size:14px}.lv-bar button:not(.lv-print){background:transparent;color:#d8b56a;border:1px solid #d8b56a55;box-shadow:none}.lv-bar .lv-print{margin-left:auto}
.lv-help{max-width:820px;margin:6px auto 10px;padding:0 16px;color:#cbbbc0;font-size:13px;line-height:1.5}.lv-help .mini{margin:3px}
.lv-book{max-width:820px;margin:0 auto;padding:0 12px;font-family:Georgia,'Times New Roman',serif}
.lv-book>section{background:#fffdf9;border-radius:6px;box-shadow:0 18px 50px #0007;margin:0 0 22px;padding:14mm 13mm;position:relative}
.lv-cover{padding:0!important;overflow:hidden}.lv-cover-in{min-height:250mm;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:radial-gradient(circle at 50% 35%,#8f1a2c 0,#5a0a17 45%,#2a060d 100%);color:#fbecd0;border:3mm solid #fffdf9;outline:1px solid #c9a24f;outline-offset:-7mm;padding:20mm}
.lv-cover small{letter-spacing:.5em;color:#e6c476;font:700 12px Inter,system-ui,sans-serif}.lv-avatar{width:70mm;height:70mm;border-radius:50%;overflow:hidden;border:2.5mm solid #e0bd6f;margin:14mm auto 10mm;box-shadow:0 10px 40px #0008}.lv-avatar img{width:100%;height:100%;object-fit:cover}
.lv-k{font:120px Georgia,serif;color:#e6c476;margin:10mm 0}.lv-cover h1{font:44px/1.1 Georgia,serif;margin:0 0 6px;color:#fff3dc}.lv-cover p{font-style:italic;font-size:22px;color:#e6c476;margin:0 0 12mm}.lv-cover span{font:600 13px Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#f2dcae;border-top:1px solid #e6c47677;padding-top:10px}
.lv-toc>small,.lv-head small,.lv-moments small,.lv-mots>small,.lv-ecrits>small{display:block;font:800 10.5px Inter,system-ui,sans-serif;letter-spacing:.24em;color:#a8792d}.lv-toc h2{font-size:32px;color:#6d0f1e;margin:6px 0 20px}
.lv-toc-row{display:grid;grid-template-columns:34px 1fr;gap:0 12px;padding:10px 0;border-bottom:1px dotted #c9a24f88}.lv-toc-row b{grid-row:span 2;font-size:26px;color:#b58f45}.lv-toc-row span{font-size:18px;color:#3b1a14}.lv-toc-row em{font:12px Inter,system-ui,sans-serif;color:#8a7466;font-style:normal}
.lv-stats{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.lv-stats div{flex:1;min-width:110px;text-align:center;padding:14px 8px;border-radius:14px;background:linear-gradient(145deg,#6d0f1e,#3e0810);color:#fbe9c6}.lv-stats b{display:block;font-size:28px;color:#f0cf7e}.lv-stats span{font:12px Inter,system-ui,sans-serif}
.lv-screen-tools{display:flex;gap:10px;align-items:center;margin:-6mm 0 6mm}.lv-screen-tools button{padding:7px 12px;font-size:12px;background:#f3e6cc;color:#6d0f1e;box-shadow:none;border:1px solid #d8b56a}.lv-screen-tools span{font:12px Inter,sans-serif;color:#a8792d}
.lv-head{text-align:center;margin-bottom:8mm}.lv-head h2{font:34px/1.15 Georgia,serif;color:#6d0f1e;margin:6px 0}.lv-head em{display:block;color:#7d6152;font-size:15px}.lv-dates{display:inline-block;margin-top:10px;font:700 11px Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#a8792d;border-top:1px solid #d8b56a;border-bottom:1px solid #d8b56a;padding:5px 12px}
.lv-hero{margin:0 0 8mm;break-inside:avoid}.lv-hero img{width:100%;height:95mm;object-fit:cover;border-radius:4px;display:block}.lv-hero figcaption,.lv-grid figcaption{font:11px Inter,system-ui,sans-serif;color:#8a7466;text-align:center;margin-top:4px}
.lv-text p{font-size:15.5px;line-height:1.72;text-align:justify;hyphens:auto;margin:0 0 12px;color:#2b1a14}.lv-first:first-letter{float:left;font-size:58px;line-height:.9;padding:4px 8px 0 0;color:#8f1a2c}
.lv-quote{margin:16px 6mm;padding:12px 16px;border-left:3px solid #c9a24f;background:#fbf2e2;border-radius:0 10px 10px 0;break-inside:avoid}.lv-quote p{font-style:italic;font-size:16px;line-height:1.55;color:#5a0a17;margin:0;white-space:pre-line}.lv-quote cite{display:block;margin-top:6px;font:normal 11.5px Inter,system-ui,sans-serif;color:#a8792d}
.lv-moments{margin:8mm 0;padding:12px 16px;border:1px solid #e3cf9f;border-radius:12px;break-inside:avoid}.lv-moments div{display:grid;grid-template-columns:90px 1fr;gap:10px;padding:5px 0;border-bottom:1px dotted #e3cf9f;font-size:14px}.lv-moments div:last-child{border:0}.lv-moments b{color:#8f1a2c;font:700 12px Inter,system-ui,sans-serif;padding-top:2px}
.lv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4mm;margin:8mm 0}.lv-grid figure{margin:0;break-inside:avoid}.lv-grid figure>div{aspect-ratio:1;overflow:hidden;border-radius:4px;background:#eee}.lv-grid img{width:100%;height:100%;object-fit:cover;display:block}
.lv-mots,.lv-ecrits{margin:8mm 0}.lv-ecrits article{padding:10px 0;border-bottom:1px dotted #e3cf9f;break-inside:avoid}.lv-ecrits b{color:#6d0f1e;font-size:15px}.lv-ecrits span{display:block;font:11px Inter,sans-serif;color:#a8792d}.lv-ecrits p{white-space:pre-line;font-size:14.5px;line-height:1.6;margin:6px 0 0}
.lv-end{text-align:center;padding:30mm 13mm!important}.lv-end p{font:italic 30px Georgia,serif;color:#6d0f1e}.lv-end small{font:12px Inter,sans-serif;color:#a8792d}
@media(max-width:600px){.lv-book>section{padding:22px 16px}.lv-cover-in{min-height:560px;padding:40px 18px;outline-offset:-12px}.lv-avatar{width:200px;height:200px}.lv-cover h1{font-size:34px}.lv-hero img{height:220px}.lv-grid{grid-template-columns:repeat(2,1fr)}.lv-text p{text-align:left}.lv-screen-tools{margin:0 0 14px}}
@media print{
 @page{size:A4;margin:12mm}
 html,body{background:#fff!important}
 body.livre-open>*:not(#livreV20){display:none!important}
 #livreV20{position:static;overflow:visible;background:#fff;padding:0}
 .lv-bar,.lv-help,.lv-screen-tools{display:none!important}
 .lv-book{max-width:none;padding:0}
 .lv-book>section{box-shadow:none;border-radius:0;margin:0;padding:0;break-after:page;page-break-after:always}
 .lv-book>section:last-child{break-after:auto}
 .lv-cover-in{min-height:270mm}
 *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 .lv-grid{grid-template-columns:repeat(3,1fr)}.lv-text p{text-align:justify}
}
body.livre-open .modal{z-index:1100}

.lv-head{display:block!important;padding:0!important;justify-content:initial}.lv-toc>small,.lv-mots>small,.lv-ecrits>small,.lv-moments>small{break-after:avoid;page-break-after:avoid}.lv-mots,.lv-ecrits{break-before:auto}.lv-bar button{white-space:nowrap}
@media(max-width:600px){.lv-bar button{padding:9px 11px;font-size:13px}}
.lv-pick button{position:relative;padding:0;background:none;border:3px solid transparent;border-radius:12px;box-shadow:none;color:inherit;overflow:hidden}.lv-pick button.selected{border-color:#d8b56a}.lv-pick img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.lv-pick i{position:absolute;top:6px;left:6px;min-width:26px;height:26px;border-radius:50%;background:#d8b56a;color:#2b140b;font:800 13px/26px Inter,sans-serif;font-style:normal;text-align:center}.lv-pick i:empty{display:none}.lv-pick span{display:block;font-size:10px;padding:4px;color:#cbbbc0}.lv-screen-tools{flex-wrap:wrap}
/* ===== V23 · Vendredi de la gratitude ===== */
.sunflower{width:64px;height:64px;flex:none}.sunflower .petal{fill:#f3c33d;stroke:#c98f16;stroke-width:1;transform-box:view-box;transform-origin:60px 60px}.sunflower .heart{fill:#6b3b12}.sunflower .seeds{fill:none;stroke:#3d1f08;stroke-width:5;stroke-dasharray:1 4}
.sunflower.open .petal,.grat-banner .sunflower .petal{animation:petal .9s cubic-bezier(.2,.9,.3,1.3) both}
@keyframes petal{from{opacity:0;scale:.2}to{opacity:1;scale:1}}
.grat-banner{display:flex;gap:16px;align-items:center;margin:0 0 16px;padding:18px 20px;border-radius:24px;border:1px solid #f3c33d66;background:radial-gradient(circle at 10% 50%,#f3c33d2e,transparent 45%),linear-gradient(135deg,#3a1a0c,#1d0a10)}
.grat-banner small{color:#f3c33d;letter-spacing:.18em;font-weight:800;font-size:11px}.grat-banner b{display:block;font:20px/1.3 Georgia,serif;color:#fff1cf;margin:4px 0}.grat-banner span{display:block;color:#e2cfae;margin-bottom:10px}.grat-banner button{padding:10px 16px;background:linear-gradient(135deg,#f7d56b,#d99a1f)}
.grat-head{text-align:center}.grat-head .sunflower{width:90px;height:90px;margin:0 auto;display:block}.grat-head h2{font-size:26px!important;margin:6px 0 14px}
.grat-write{padding:16px;border-radius:20px;background:#2a130c;border:1px solid #f3c33d44;margin-bottom:20px}.grat-write small{color:#f3c33d;font-weight:800;letter-spacing:.08em}.grat-write textarea{min-height:110px}
.grat-day{margin:0 0 18px}.grat-day>small{display:block;color:#d8b56a;letter-spacing:.1em;font-weight:800;font-size:11px;text-transform:uppercase;margin-bottom:8px}
.grat-item{padding:14px 16px;border-radius:18px;background:#15090d;border:1px solid #ffffff14;margin:0 0 8px}.grat-item.me{border-color:#f3c33d44;background:#1f0f0c}.grat-item b{color:#f3c33d}.grat-item p{white-space:pre-line;font:16px/1.6 Georgia,serif;color:#f2e7e9;margin:6px 0 0}.grat-item p.long{max-height:10.5em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 60%,transparent)}.grat-item em{display:block;font-size:11px;color:#9f8f94;margin-top:6px;font-style:normal}
@media(max-width:600px){.grat-banner{align-items:flex-start}.grat-banner .sunflower{width:52px;height:52px}.grat-banner b{font-size:18px}}
.lv-tome{display:block;font:italic 20px Georgia,serif;color:#e6c476;letter-spacing:.1em;margin:0 0 6px}

.intro-nav{position:absolute;top:calc(12px + env(safe-area-inset-top));left:12px;right:12px;display:flex;justify-content:space-between;z-index:3}.intro-nav button{background:transparent;color:#d8b56a;border:1px solid #d8b56a55;box-shadow:none;padding:8px 12px;font-size:13px}
.week-day .cal-thumb-wrap{display:block;margin:4px auto}
.globe-head{flex-wrap:wrap}.globe-back{order:-1;flex-basis:100%;max-width:max-content;margin-bottom:6px}
.album-order{margin:-6px 0 14px}
.point.meet{width:22px;height:22px;display:grid;place-items:center;font-size:12px;line-height:1;color:#4b0712;background:#f1d58e}
.labels-v25{display:grid!important;grid-template-columns:repeat(4,1fr);gap:6px}.labels-v25 span{text-align:center;line-height:1.35}.labels-v25 span:first-child{text-align:left}.labels-v25 span:last-child{text-align:right}.labels-v25 b{display:block;color:#d8b56a;font-weight:700}
.day-tools-v25{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}.day-tools-v25 button{flex:1 1 auto;padding:11px 14px;font-size:14px}
.day-files-v25{display:flex;flex-direction:column;gap:6px;margin:12px 0}.day-files-v25 button{text-align:left;padding:10px 14px;font-size:14px;width:100%}
/* ================= V26 — plus simple, plus magique ================= */
body.v26 .tabs{display:none!important}
body.v26 #today>.grid,body.v26 #today .secret-card,body.v26 #today .timeline.v26-old,body.v26 #story .soundtrack-feature,body.v26 #today .hero .actions,body.v26 .year-ago.v26-empty{display:none!important}
body.v26 #capsuleShelf{margin-top:26px}
/* onglets */
.bottom-nav{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
.bottom-nav button{display:flex!important;flex-direction:column;align-items:center;gap:3px;background:none!important;box-shadow:none!important;color:#9f8f94!important;padding:6px 2px!important;font-size:10.5px!important;font-weight:700;border-radius:18px!important;position:relative;transition:color .3s}
.bottom-nav button.active{color:#f1d58e!important}
.bottom-nav button.active::before{content:"";position:absolute;inset:2px 10%;border-radius:16px;background:#f1d58e14;animation:tab26 .45s cubic-bezier(.3,1.5,.5,1)}
@keyframes tab26{from{transform:scale(.6);opacity:0}}
.view.active-view{animation:view26 .45s cubic-bezier(.2,.8,.2,1)}
@keyframes view26{from{opacity:0;transform:translateY(10px)}}
/* trésors */
#tresors .fam26{margin:20px 0 6px}#tresors .fam26>small{display:block;color:#cbbbc0;letter-spacing:.2em;font-size:11px;font-weight:800;margin:0 0 10px}
.tiles26{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media(min-width:760px){.tiles26{grid-template-columns:repeat(4,minmax(0,1fr))}}
.t26{position:relative;overflow:hidden;min-height:96px;border-radius:22px!important;padding:14px!important;text-align:left;display:flex!important;flex-direction:column;justify-content:space-between;gap:8px;background:linear-gradient(150deg,#2f0f18,#170910)!important;border:1px solid #d8b56a44!important;color:#f9f1e8!important;box-shadow:none!important;opacity:0;transform:translateY(14px) scale(.97);animation:in26 .6s cubic-bezier(.2,.9,.2,1) forwards}
.t26:nth-child(2){animation-delay:.06s}.t26:nth-child(3){animation-delay:.12s}.t26:nth-child(4){animation-delay:.18s}
.t26 b{font:600 19px Georgia,serif}.t26 span{font-size:11.5px;color:#cbbbc0;line-height:1.35}
.t26::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,#fff6d62e 50%,transparent 65%);transform:translateX(-120%);animation:sweep26 6s ease-in-out infinite}
.t26.t26-locked{opacity:.65}
@keyframes in26{to{opacity:1;transform:none}}
@keyframes sweep26{0%,62%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
/* bouton ＋ */
#fab26{display:none}
body[data-view="today"] #app:not(.hidden)~#fab26{display:block}
body.lire26-open #fab26,body.locked26 #fab26{display:none!important}
.fab26-btn{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom));width:66px;height:66px;margin-left:-33px;border-radius:50%!important;padding:0!important;display:flex;align-items:center;justify-content:center;z-index:60;background:radial-gradient(circle at 35% 30%,#fff1c4,#d8b56a 55%,#a8792d)!important;box-shadow:0 10px 30px #000a;animation:pulse26 2.6s ease-out infinite;transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
#fab26.open .fab26-btn{transform:rotate(135deg);animation:none}
@keyframes pulse26{0%{box-shadow:0 0 0 0 #f1d58e88,0 10px 30px #000a}80%{box-shadow:0 0 0 20px #f1d58e00,0 10px 30px #000a}100%{box-shadow:0 0 0 0 #f1d58e00,0 10px 30px #000a}}
.fab26-veil{position:fixed;inset:0;z-index:58;background:radial-gradient(circle at 50% 92%,#3b0812ee,#0d0407f2 70%);opacity:0;pointer-events:none;transition:opacity .35s}
#fab26.open .fab26-veil{opacity:1;pointer-events:auto}
.fab26-items{position:fixed;left:50%;bottom:calc(117px + env(safe-area-inset-bottom));width:0;height:0;z-index:59}
.fab26-item{position:absolute;left:0;top:0;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%!important;padding:0!important;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#2a1016!important;border:1px solid #f1d58e!important;color:#f9f1e8!important;font-size:9px!important;font-weight:800;box-shadow:0 8px 22px #000a!important;opacity:0;transform:translate(0,0) scale(.2);pointer-events:none;transition:transform .55s cubic-bezier(.3,1.5,.5,1),opacity .25s}
#fab26.open .fab26-item{opacity:1;pointer-events:auto;transform:translate(var(--x),var(--y)) scale(1)}
/* souvenir du jour */
#today .surprise{position:relative;overflow:hidden;isolation:isolate}
#today .surprise .kb26{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;opacity:.55;animation:kb26 18s ease-in-out infinite alternate}
#today .surprise.has-photo::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#1d0a10f0 20%,#1d0a1066)}
@keyframes kb26{from{transform:scale(1.05)}to{transform:scale(1.22) translate(-10px,-8px)}}
/* le fil d'or */
.fil26{margin:8px 0 26px}
.fil26-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:14px}.fil26-head small{color:#d8b56a;letter-spacing:.24em;font-weight:800;font-size:10.5px;flex-basis:100%}.fil26-head p{margin:0;color:#e8dccf;flex:1}.fil26-head p strong{color:#f1d58e;font:30px Georgia,serif}
.fil26-line{position:relative;padding-left:44px;display:flex;flex-direction:column;gap:14px}
.fil26-thread{position:absolute;left:13px;top:6px;bottom:10px;width:2px;background:linear-gradient(#f1d58e,#d8b56a 75%,#d8b56a00);transform-origin:top;transform:scaleY(0);animation:draw26 2.8s cubic-bezier(.6,0,.2,1) .2s forwards}
@keyframes draw26{to{transform:scaleY(1)}}
.fil26-step{position:relative}
.fil26-node{position:absolute;left:-44px;top:10px;width:28px;height:28px;border-radius:50%;background:#12060a;border:2px solid #f1d58e;box-shadow:0 0 16px #f1d58e88;display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(.4);animation:pop26 .6s cubic-bezier(.3,1.6,.5,1) forwards;animation-delay:calc(.4s + var(--i)*.45s)}
.fil26-node span{width:10px;height:10px;border-radius:50%;background:#f1d58e}
@keyframes pop26{to{opacity:1;transform:none}}
.fil26-card{padding:14px 16px;border-radius:20px;background:#1d0b11;border:1px solid #ffffff14;opacity:0;transform:translateX(16px);animation:slide26 .75s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(.55s + var(--i)*.45s)}
.fil26-step.meet .fil26-card{border-color:#f1d58e88}
@keyframes slide26{to{opacity:1;transform:none}}
.fil26-card small{color:#d8b56a;letter-spacing:.18em;font-weight:800;font-size:10px}.fil26-card b{display:block;font:600 22px Georgia,serif;margin:4px 0 2px}.fil26-card span{color:#cbbbc0;font-size:13.5px}
.fil26-meet{position:relative;height:58px;display:flex;align-items:center;justify-content:center;margin-top:6px}
.fil26-meet i{position:absolute;border-radius:50%}
.fil26-meet .a{width:14px;height:14px;background:#8fb0d9;box-shadow:0 0 14px #8fb0d9;animation:goA26 3.6s cubic-bezier(.6,0,.3,1) infinite}
.fil26-meet .b{width:14px;height:14px;background:#e8a6b5;box-shadow:0 0 14px #e8a6b5;animation:goB26 3.6s cubic-bezier(.6,0,.3,1) infinite}
.fil26-meet .ring{width:30px;height:30px;border:2px solid #f1d58e;animation:ring26 3.6s ease-out infinite}
.fil26-meet .heart{position:absolute;animation:beat26 3.6s ease infinite}
@keyframes goA26{0%{transform:translateX(-60px)}55%,100%{transform:translateX(-7px)}}
@keyframes goB26{0%{transform:translateX(60px)}55%,100%{transform:translateX(7px)}}
@keyframes beat26{0%,50%{transform:scale(0);opacity:0}62%{transform:scale(1.35);opacity:1}75%,100%{transform:scale(1);opacity:1}}
@keyframes ring26{0%,55%{transform:scale(.3);opacity:0}60%{opacity:.9}100%{transform:scale(2.6);opacity:0}}
/* lecture d'un message */
.lire26{position:fixed;inset:0;z-index:1200;background:#0d0407;color:#f9f1e8;display:flex;flex-direction:column;opacity:0;transition:opacity .5s}
.lire26.in{opacity:1}
.lire26-bg{position:absolute;inset:-20px;overflow:hidden;background:radial-gradient(circle at 70% 25%,#c46a4a 0%,#6b1424 35%,#1a060b 75%)}
.lire26-bg img{width:100%;height:100%;object-fit:cover;opacity:.45;animation:kb26 20s ease-in-out infinite alternate}
.lire26-veil{position:absolute;inset:0;background:linear-gradient(#0d040733,#0d0407ee 70%)}
.lire26-bar{position:relative;z-index:2;display:flex;justify-content:space-between;gap:10px;padding:calc(14px + env(safe-area-inset-top)) 18px 0}
.nav26{background:#12060acc!important;color:#d8b56a!important;border:1px solid #d8b56a66!important;box-shadow:none!important;padding:10px 15px!important;font-size:13px!important}
.lire26-scroll{position:relative;z-index:1;flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:9vh 28px 150px;max-width:640px;margin:0 auto;width:100%;box-sizing:border-box}
.lire26-date,.lire26-who{display:block;color:#d8b56a;letter-spacing:.24em;font-weight:800;font-size:11px}.lire26-who{margin-top:10px;color:#f1d58e}
.lire26-text{margin:18px 0 0;font:500 clamp(28px,8.4vw,42px)/1.2 Georgia,'Cormorant Garamond',serif;white-space:pre-line}
.lire26.long .lire26-text{font-size:clamp(20px,5.4vw,26px);line-height:1.5}
.w26{display:inline;color:#ffffff30;transition:color .5s,text-shadow .8s}
.w26.lit{color:#f9f1e8;text-shadow:0 0 0 transparent;animation:lit26 .9s ease}
@keyframes lit26{0%{color:#fff6d6;text-shadow:0 0 18px #f1d58e}100%{color:#f9f1e8;text-shadow:0 0 0 transparent}}
.lire26-sig{margin-top:18px}.lire26-sig path{stroke-dasharray:420;stroke-dashoffset:420}
.lire26.done .lire26-sig path{animation:sig26 2s ease forwards}
@keyframes sig26{to{stroke-dashoffset:0}}
.lire26-player{position:absolute;z-index:2;left:16px;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));max-width:600px;margin:0 auto;padding:14px 18px;border-radius:28px;background:#1a0a0fe6;border:1px solid #d8b56a44;display:flex;align-items:center;gap:16px;backdrop-filter:blur(10px)}
.lire26-play{width:62px;height:62px;flex:none;border-radius:50%!important;padding:0!important;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 35% 30%,#fff1c4,#d8b56a 60%,#a8792d)!important}
.lire26.playing .lire26-play{animation:pulse26 2s ease-out infinite}
.lire26-wave{flex:1;display:flex;flex-direction:column;gap:8px}.lire26-wave b{font-size:14px}
.bars26{display:flex;align-items:flex-end;gap:3px;height:30px}.bars26 i{width:4px;height:var(--h);border-radius:3px;background:#d8b56a;transform-origin:bottom;transform:scaleY(.25)}
.lire26.playing .bars26 i{animation:wave26 .9s ease-in-out infinite alternate;animation-delay:var(--d)}
@keyframes wave26{to{transform:scaleY(1)}}
.lire26-novoice{flex:1;font-size:13px;color:#cbbbc0}
body.lire26-open{overflow:hidden}
.mot-actions .lire26-btn,.lire26-btn{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important}
/* enregistreur */
.rec26{display:flex;flex-direction:column;align-items:center;gap:12px;margin:18px 0}
.rec26-btn{width:96px;height:96px;border-radius:50%!important;padding:0!important;display:flex;align-items:center;justify-content:center}
.rec26-btn.on{background:radial-gradient(circle,#ff9b9b,#c0392b)!important;animation:pulse26 1.4s ease-out infinite}
#rec26After audio{width:100%;margin:8px 0}.rec26-file{display:block;text-align:center;margin-top:10px}.rec26-file input{display:none}
/* Mes KADIARY : le K s'écrit, les portes s'ouvrent */
#giftRootV15{position:relative}
.v26-hide{display:none!important}
.k26{display:block;margin:0 auto 12px;filter:drop-shadow(0 10px 30px #8f1a2c88)}
.k26-ink{stroke-dasharray:900;stroke-dashoffset:900;animation:ink26 2.4s cubic-bezier(.6,0,.2,1) .15s forwards}
.k26-fill{opacity:0;animation:fillk26 1s ease 2.1s forwards}
@keyframes ink26{to{stroke-dashoffset:0}}@keyframes fillk26{to{opacity:1}}
.dust26{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.dust26 i{position:absolute;border-radius:50%;background:#f1d58e;box-shadow:0 0 10px 2px #f1d58e88;opacity:0;animation:rise26 linear infinite}
@keyframes rise26{0%{transform:translateY(0) scale(.6);opacity:0}15%{opacity:.9}100%{transform:translateY(-70vh) scale(1.2);opacity:0}}
.gift-root-inner{position:relative;z-index:1}
.door26{position:relative;overflow:hidden;opacity:0;transform:translateY(18px);animation:in26 .8s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(.9s + var(--i)*.15s);transform-origin:left center;transition:transform .62s cubic-bezier(.7,0,.2,1),box-shadow .62s}
.door26.opening{transform:perspective(900px) rotateY(-28deg) scale(.98);box-shadow:30px 0 60px #000c}
.door26-light{position:absolute;inset:-40%;pointer-events:none;background:radial-gradient(circle at 15% 50%,#fff6d6 0,#f1d58e55 18%,transparent 50%);opacity:0;transition:opacity .5s}
.door26.opening .door26-light{opacity:1}
.bio26{margin-top:10px;display:inline-flex;align-items:center;gap:8px;font-size:13px!important}
/* verrou Face ID */
#lock26{position:fixed;inset:0;z-index:5000;background:radial-gradient(circle at 50% 30%,#5a0c1c 0%,#22060d 45%,#0d0407 80%);color:#f9f1e8;display:flex;align-items:center;justify-content:center;transition:opacity .8s}
#lock26.opened{opacity:0;pointer-events:none}
.lock26-in{width:min(360px,88vw);display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}
.lock26-in h1{margin:10px 0 0;font:500 30px Georgia,serif}.lock26-in p{margin:0;color:#cbbbc0;font-size:14px;min-height:2.6em}
.lock26-seal{position:relative;width:150px;height:150px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 35% 30%,#b3263e,#6b0f20 60%,#3b0812);box-shadow:0 20px 60px #000c,inset 0 0 0 6px #8f1a2c;animation:float26 4s ease-in-out infinite}
@keyframes float26{50%{transform:translateY(-6px)}}
.lock26-scan,.lock26-line{display:none;position:absolute}
#lock26.scanning .lock26-scan{display:block;inset:-10px;border-radius:50%;border:3px solid transparent;border-top-color:#f1d58e;animation:spin26 1.2s linear infinite}
#lock26.scanning .lock26-line{display:block;left:30px;right:30px;height:2px;background:#f1d58e;box-shadow:0 0 12px #f1d58e;animation:scanl26 1.1s ease-in-out infinite alternate}
@keyframes spin26{to{transform:rotate(360deg)}}@keyframes scanl26{from{transform:translateY(-34px)}to{transform:translateY(34px)}}
#lock26.opened .lock26-seal{animation:open26 .9s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes open26{to{transform:scale(2.4);opacity:0;filter:blur(6px)}}
.lock26-go{width:100%;margin-top:18px;display:flex!important;align-items:center;justify-content:center;gap:10px;height:56px}
.lock26-pw{background:none!important;box-shadow:none!important;color:#d8b56a!important;font-size:13px!important}
@media (prefers-reduced-motion: reduce){.k26-ink,.k26-fill,.fil26-thread,.fil26-node,.fil26-card,.t26,.door26{animation:none!important;opacity:1!important;transform:none!important;stroke-dashoffset:0!important}.dust26,.t26::after,.fil26-meet i,.fab26-btn{animation:none!important}}
.bottom-nav button span{display:block;font-size:10.5px!important;color:inherit!important;margin:0!important;white-space:nowrap;letter-spacing:0}
.bottom-nav button svg{position:relative}
body.v26 #today{padding-bottom:110px}
.grat-att{margin:10px 0 12px;border:1px solid #f3c33d44;border-radius:16px;background:#1d0d0a;overflow:hidden}
.grat-att summary{cursor:pointer;list-style:none;padding:13px 16px;font-weight:700;font-size:14px;color:#f3c33d}
.grat-att summary::-webkit-details-marker{display:none}
.grat-att summary::after{content:"›";float:right;transition:transform .3s;font-size:18px;line-height:1}
.grat-att[open] summary::after{transform:rotate(90deg)}
.grat-att[open]>*:not(summary){animation:view26 .35s ease}
.grat-att-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 12px 12px}
.grat-att-btns button{padding:11px 10px!important;font-size:14px!important}
.grat-link{display:flex;gap:8px;padding:0 12px 12px}.grat-link input{margin:0;flex:1;padding:12px}.grat-link button{padding:10px 14px}
.grat-att-list{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 12px}.grat-att-list:empty{display:none}
.grat-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 6px 6px 10px;border-radius:999px;background:#2a1410;border:1px solid #f3c33d55;font-size:12.5px}
.grat-chip button{width:24px;height:24px;padding:0!important;border-radius:50%!important;background:#ffffff14!important;color:#f9f1e8!important;box-shadow:none!important;font-size:14px!important;line-height:1}
.grat-atts{margin:2px 0 10px;padding:10px 12px;border-radius:16px;background:#15090d;border:1px dashed #f3c33d44}.grat-atts small{color:#cbbbc0;font-size:11px}
.grat-atts>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.grat-thumb{position:relative;width:72px;height:72px;padding:0!important;border-radius:12px!important;overflow:hidden;box-shadow:none!important;background:#000!important}
.grat-thumb img{width:100%;height:100%;object-fit:cover}.grat-thumb i{position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-style:normal;font-size:20px;background:#0005}
.grat-link-a{display:inline-block;padding:8px 12px;border-radius:999px;border:1px solid #f3c33d55;color:#f3c33d;text-decoration:none;font-size:13px}
.grat-file{padding:8px 12px!important;font-size:13px!important}

/* ===== V27 — Accueil « le cœur de KADIARY » ===== */
.acc27{display:none}
body.acc27-on .acc27{display:block}
body.acc27-on[data-view="today"] #app>header,body.acc27-on[data-view="today"] #rootNavV15,body.acc27-on #today .hero,body.acc27-on #today .promise,body.acc27-on[data-view="today"] #app>footer{display:none!important}
body.acc27-on[data-view="today"] #fab26:not(.open) .fab26-btn{display:none!important}
.acc27{position:relative;margin:0 0 18px;overflow-x:clip;padding:calc(6px + env(safe-area-inset-top)) 0 0;text-align:center;color:#f9f1e8;font-family:'Manrope',system-ui,sans-serif}
.acc27::before{content:"";position:absolute;left:0;right:0;top:-60px;height:560px;z-index:-1;background:radial-gradient(circle at 50% 32%,#5a0c1caa 0%,#26070f55 45%,transparent 75%);pointer-events:none}
.acc27-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.acc27-home{height:44px;padding:0 16px!important;border-radius:999px!important;border:1px solid #d8b56a55!important;background:#12060acc!important;color:#d8b56a!important;display:inline-flex!important;align-items:center;gap:8px;font:700 13px 'Manrope',system-ui,sans-serif!important;box-shadow:none!important;width:auto!important;margin:0!important}
.acc27-right{display:flex;align-items:center;gap:8px}
.acc27-sync{width:30px;height:44px;padding:0!important;border:none!important;background:none!important;box-shadow:none!important;display:flex!important;align-items:center;justify-content:center;margin:0!important;min-width:0!important}
.acc27-sync i{width:9px;height:9px;border-radius:50%;background:#7fd6a0;box-shadow:0 0 8px #7fd6a0}
.acc27-sync.off i{background:#e0a458;box-shadow:0 0 8px #e0a458}
.acc27-avatar{width:44px;height:44px;padding:0!important;border-radius:50%!important;border:2px solid #f1d58e!important;background:#3b1220!important;overflow:hidden;display:flex!important;align-items:center;justify-content:center;margin:0!important;min-width:0!important;box-shadow:none!important}
.acc27-avatar>*{width:100%!important;height:100%!important;border:none!important;margin:0!important;border-radius:50%!important}
.acc27-more{width:36px;height:44px;padding:0!important;border:none!important;background:none!important;color:#d8b56a!important;font-size:22px!important;box-shadow:none!important;margin:0!important;min-width:0!important}
.acc27-logo{position:relative;width:170px;height:170px;margin:14px auto 0}
.acc27-k{position:absolute!important;inset:0;padding:0!important;margin:0!important;border:none!important;border-radius:40px!important;overflow:hidden;background:#8a0d12!important;cursor:pointer;width:auto!important;animation:acc27beat 1.3s ease-in-out infinite,acc27glow 1.3s ease-in-out infinite}
.acc27-k img{width:100%;height:100%;display:block}
.acc27-shine{position:absolute;top:-20%;bottom:-20%;left:0;width:40%;background:linear-gradient(90deg,transparent,#fff6d699,transparent);animation:acc27shine 4.5s ease-in-out infinite;pointer-events:none}
.acc27-wave{position:absolute;inset:0;border-radius:42px;border:2px solid #f1d58e;animation:acc27wave 1.3s ease-out infinite;pointer-events:none}
.acc27-wave.w2{border-width:1px;border-color:#f1d58e88;animation-delay:.16s}
.acc27-burst{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#fff6d6,#f1d58e66 45%,transparent 70%);opacity:0;pointer-events:none;z-index:2}
.acc27-burst.go{animation:acc27burst .9s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes acc27beat{0%{transform:scale(1)}12%{transform:scale(1.09)}24%{transform:scale(.99)}38%{transform:scale(1.05)}60%,100%{transform:scale(1)}}
@keyframes acc27glow{0%,60%,100%{box-shadow:0 20px 50px #000c,0 0 30px #f1d58e33}12%{box-shadow:0 20px 50px #000c,0 0 70px #f1d58eaa}38%{box-shadow:0 20px 50px #000c,0 0 50px #f1d58e77}}
@keyframes acc27wave{0%{transform:scale(.9);opacity:.8}70%,100%{transform:scale(1.7);opacity:0}}
@keyframes acc27shine{0%,55%{transform:translateX(-160%) skewX(-18deg)}85%,100%{transform:translateX(220%) skewX(-18deg)}}
@keyframes acc27burst{from{transform:scale(.7);opacity:1}to{transform:scale(2.8);opacity:0}}
.acc27-names{margin:26px 0 0;font-family:'Cormorant Garamond',Georgia,serif;font-weight:500;font-size:clamp(38px,12.5vw,50px);line-height:1;color:#f9f1e8;letter-spacing:-.01em}
.acc27-names .amp{color:#f1d58e;font-style:italic}
.acc27-names span,.acc27-lbl,.acc27-labels span{display:inline-block}
.acc27.play .acc27-names span,.acc27.play .acc27-lbl,.acc27.play .acc27-labels span{opacity:0;animation:acc27write 1s cubic-bezier(.2,.8,.2,1) var(--d,0s) forwards}
@keyframes acc27write{from{opacity:0;transform:translateY(12px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
.acc27-fil{margin:20px auto 0;max-width:350px}
.acc27-lbl{margin:0;font-size:11px;letter-spacing:.22em;font-weight:800;color:#d8b56a}
.acc27-fil svg{display:block;width:100%;height:auto;margin-top:6px;overflow:visible}
.acc27-fil .virt{stroke-dasharray:2 5;animation:acc27march14 1.2s linear infinite}
@keyframes acc27march14{to{stroke-dashoffset:-14}}
.acc27-fil .future{stroke-dasharray:3 6;animation:acc27march18 1.4s linear infinite}
@keyframes acc27march18{to{stroke-dashoffset:-18}}
.acc27-fil .inf{stroke-dasharray:40 140;animation:acc27inf 3s linear infinite}
@keyframes acc27inf{to{stroke-dashoffset:-180}}
.acc27-fil .draw{stroke-dasharray:90;stroke-dashoffset:0}
.acc27.play .acc27-fil .draw{stroke-dashoffset:90;animation:acc27draw 1.2s cubic-bezier(.6,0,.2,1) 2.3s forwards}
@keyframes acc27draw{to{stroke-dashoffset:0}}
.acc27-fil .pop,.acc27-fil .hb,.acc27-fil .ring,.acc27-fil .now{transform-box:fill-box;transform-origin:center}
.acc27.play .acc27-fil .pop{opacity:0;animation:acc27pop .7s cubic-bezier(.3,1.6,.5,1) var(--d,0s) forwards}
@keyframes acc27pop{from{opacity:0;transform:scale(0)}to{opacity:1;transform:none}}
.acc27-fil .hb{animation:acc27beat 1.3s ease-in-out infinite;filter:drop-shadow(0 0 8px #f1d58e)}
.acc27-fil .ring{animation:acc27ring 1.3s ease-out infinite}
@keyframes acc27ring{0%{transform:scale(.6);opacity:.9}70%,100%{transform:scale(2.4);opacity:0}}
.acc27-fil .now{animation:acc27now 2s ease-in-out infinite}
@keyframes acc27now{50%{transform:scale(1.5);opacity:.6}}
.acc27-fil .spark{filter:drop-shadow(0 0 8px #f1d58e)}
.acc27-labels{position:relative;height:36px;font-size:10px;line-height:1.3;color:#cbbbc0}
.acc27-labels span{position:absolute;top:0;white-space:nowrap}
.acc27-labels b{display:block;font-weight:800}
.acc27-labels .l1{left:0;text-align:left;width:27%}.acc27-labels .l1 b{color:#8fb0d9}
.acc27-labels .l2{left:29.5%;width:27%;text-align:center}.acc27-labels .l2 b{color:#f1d58e}
.acc27-labels .l3{left:56%;width:21%;text-align:center}.acc27-labels .l3 b{color:#f9f1e8}
.acc27-labels .l4{right:0;width:19%;text-align:right}.acc27-labels .l4 b{color:#f1d58e}
.acc27-card{margin:24px 0 0;padding:20px;border-radius:28px;background:#1d0b11e6;border:1px solid #d8b56a44;display:flex;align-items:center;gap:16px;text-align:left}
.acc27.play .acc27-card{opacity:0;animation:acc27write 1s cubic-bezier(.2,.8,.2,1) 3.4s forwards}
.acc27-card-txt{flex:1;min-width:0}
.acc27-card small{font-size:11px;letter-spacing:.2em;font-weight:800;color:#d8b56a}
.acc27-card b{display:block;margin-top:6px;font-family:'Cormorant Garamond',Georgia,serif;font-size:25px;font-weight:600;line-height:1.1;color:#f9f1e8}
.acc27-card span{font-size:13px;color:#cbbbc0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.acc27-plus{width:64px!important;height:64px;flex:none;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:radial-gradient(circle at 35% 30%,#fff1c4,#d8b56a 60%,#a8792d)!important;display:flex!important;align-items:center;justify-content:center;animation:acc27plus 2.6s ease-in-out infinite;min-width:0!important}
@keyframes acc27plus{0%,100%{box-shadow:0 14px 30px #000a}50%{box-shadow:0 0 0 10px #f1d58e22,0 14px 30px #000a}}
.acc27-media #todayMedia{margin-top:14px}
@media (prefers-reduced-motion: reduce){.acc27 *,.acc27.play *{animation:none!important;opacity:1!important;filter:none!important}.acc27-fil .draw{stroke-dashoffset:0!important}.acc27-fil .spark{display:none}}

/* ===== V27 — Ouvrir une porte : à deux / en groupe ===== */
.p27-sec{margin:16px 0 8px;font-size:12px;color:#cbbbc0}.p27-sec b{color:#d8b56a;letter-spacing:.16em;font-size:11px}
.p27-grid{display:grid;gap:8px}
.p27-card{display:flex!important;align-items:center;gap:14px;text-align:left;width:100%;padding:14px 16px!important;border-radius:18px!important;background:#1d0b11!important;border:1px solid #d8b56a44!important;color:#f9f1e8!important;margin:0!important;box-shadow:none!important}
.p27-card:active{transform:scale(.98)}
.p27-ic{font-size:26px;width:36px;text-align:center;flex:none}
.p27-card b{display:block;font-size:16px;color:#f9f1e8}.p27-card small{display:block;font-size:12.5px;color:#cbbbc0;font-weight:500;margin-top:2px;letter-spacing:0}
.p27-chips{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 6px}
.p27-chips button{width:auto!important;height:40px;padding:0 14px!important;margin:0!important;border-radius:999px!important;border:1px solid #ffffff26!important;background:#1d0b11!important;color:#f9f1e8!important;font-size:13.5px!important;font-weight:700;box-shadow:none!important}
.p27-chips button.on{background:#f1d58e!important;color:#32140b!important;border-color:#f1d58e!important}
.p27-modes{display:grid;gap:8px;margin:4px 0 8px}
.p27-mode{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:start;border:1px solid #ffffff22;border-radius:16px;padding:12px 14px;background:#160a0e;cursor:pointer}
.p27-mode input{width:auto;margin:4px 0 0;grid-row:span 2;accent-color:#d8b56a}.p27-mode b{color:#f9f1e8}.p27-mode span{color:#cbbbc0;font-size:13.5px}
.p27-mode:has(input:checked){border:2px solid #f1d58e;background:#2a1016}
.p27-info{font-size:14px}
.p27-two{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 4px}
.p27-two button{display:flex!important;flex-direction:column;align-items:flex-start;text-align:left;gap:3px;width:100%!important;margin:0!important;padding:12px!important;border-radius:16px!important;background:#160a0e!important;border:1px solid #ffffff22!important;color:#f9f1e8!important;box-shadow:none!important}
.p27-two button.on{border:2px solid #f1d58e!important;background:#2a1016!important}
.p27-two b{font-size:14px}.p27-two small{font-size:12px;color:#cbbbc0;font-weight:500;letter-spacing:0}
.p27-mems{display:grid;gap:8px}
.p27-mem{display:flex;align-items:center;gap:12px;padding:8px 6px 8px 10px;border-radius:16px;background:#1d0b11;border:1px solid #ffffff12}
.p27-av{width:38px;height:38px;flex:none;border-radius:50%;background:linear-gradient(135deg,#7a1124,#3b0812);display:flex;align-items:center;justify-content:center;font-family:'Cormorant Garamond',Georgia,serif;font-size:19px;font-weight:600;color:#fff6e6}
.p27-mt{flex:1;min-width:0;display:flex;flex-direction:column;text-align:left}.p27-mt b{font-size:15px;color:#f9f1e8}.p27-mt i{font-style:normal;color:#cbbbc0;font-size:13px}.p27-mt small{font-size:12px;color:#cbbbc0}
.p27-how{font-size:12px;font-weight:700;color:#cbbbc0;margin-top:2px}.p27-how.code{color:#8fd1a8}.p27-how.garde{color:#e8c58a}
.p27-x{width:44px!important;height:44px;flex:none;margin:0!important;padding:0!important;border:none!important;background:none!important;color:#9f8f94!important;font-size:22px!important;box-shadow:none!important}
.p27-addbtn{width:100%;margin-top:8px!important;height:50px;border-radius:16px!important;border:1.5px dashed #d8b56a88!important;background:none!important;color:#f1d58e!important;font-weight:800;box-shadow:none!important}
.p27-addform{margin-top:10px;padding:14px;border-radius:18px;background:#1a0a0f;border:1px solid #d8b56a55}
.p27-addrow{display:grid;grid-template-columns:1fr auto;gap:8px}.p27-addrow button{margin:0!important}
.p27-note{text-align:center;font-size:13px;margin-top:6px}
.p27-home{margin-top:6px}
.p27-key{padding:14px;border-radius:20px;background:#1d0b11;border:1px solid #d8b56a44;margin:10px 0;display:grid;gap:10px}
.p27-keyhead{display:flex;align-items:center;gap:12px}
.p27-code{font-weight:800;font-size:19px;letter-spacing:.12em;color:#f1d58e}
.p27-keybtns{display:grid;grid-template-columns:1fr auto;gap:8px}.p27-keybtns button{margin:0!important}
.p27-settings{margin:12px 0}
.p27-link{display:grid;gap:6px;padding:10px 12px;border-radius:14px;background:#12080c;border:1px solid #ffffff1a;text-align:left}
.p27-link small{font-size:11.5px;color:#cbbbc0}
.p27-link a{font-size:13px;font-weight:700;color:#f1d58e;word-break:break-all;text-decoration:underline}
.p27-linkbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}.p27-linkbtns button{margin:0!important;height:42px;font-size:13px!important}
.p27-key>button{margin:0!important}
.p27-sendlab{font-size:12px;color:#cbbbc0;text-align:left}
.p27-send{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.p27-send button{margin:0!important;height:46px;padding:0!important;font-size:14px!important}
.p27-title{white-space:nowrap;font-size:clamp(22px,7.2vw,32px)!important;line-height:1.15}
.modal-back-v15+small.gold{display:block;margin-top:14px}
/* V27.3 — l'écran « Pour qui est cette porte ? » s'anime */
.p27-door{position:relative;width:132px;height:142px;margin:4px auto 2px}
.p27-door svg{position:relative;z-index:1;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 10px 24px #000a)}
.p27-leaf{transform-box:fill-box;animation:p27leaf 5s cubic-bezier(.5,0,.3,1) .6s infinite}
.p27-leaf.l{transform-origin:left center}.p27-leaf.r{transform-origin:right center}
@keyframes p27leaf{0%,12%,88%,100%{transform:scaleX(1)}38%,62%{transform:scaleX(.42)}}
.p27-light{animation:p27light 5s ease-in-out .6s infinite}
@keyframes p27light{0%,12%,88%,100%{filter:brightness(.8)}38%,62%{filter:brightness(1.25)}}
.p27-spill{opacity:.15;transform-box:fill-box;transform-origin:center;animation:p27spill 5s ease-in-out .6s infinite}
@keyframes p27spill{0%,12%,88%,100%{opacity:.12;transform:scaleX(.4)}38%,62%{opacity:.55;transform:scaleX(1)}}
.p27-door i{position:absolute;left:50%;bottom:16px;width:4px;height:4px;border-radius:50%;background:#fff1c4;box-shadow:0 0 8px #f1d58e;opacity:0;animation:p27mote 5s linear calc(.9s + var(--k)*.55s) infinite}
.p27-door i:nth-child(odd){margin-left:-18px}.p27-door i:nth-child(3n){margin-left:14px}.p27-door i:nth-child(4n){margin-left:-6px}
@keyframes p27mote{0%{opacity:0;transform:translateY(0)}20%{opacity:.95}100%{opacity:0;transform:translateY(-120px) translateX(calc((var(--k) - 4)*6px))}}
.p27-door.open .p27-leaf{animation:p27burst .45s cubic-bezier(.3,0,.2,1) forwards}
@keyframes p27burst{to{transform:scaleX(.05)}}
.p27-door.open .p27-spill{animation:none;opacity:.8;transform:scaleX(1.3);transition:.4s}
.p27-anim .p27-fade{opacity:0;animation:p27in .7s cubic-bezier(.2,.8,.2,1) var(--d,0s) forwards}
.p27-anim .p27-card{position:relative;overflow:hidden;opacity:0;animation:p27in .7s cubic-bezier(.2,.8,.2,1) calc(.55s + var(--i)*.12s) forwards;transition:transform .2s,border-color .2s,box-shadow .2s}
@keyframes p27in{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:none}}
.p27-anim .p27-card::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,#fff6d62e 50%,transparent 65%);transform:translateX(-120%);animation:p27sweep 6s ease-in-out calc(2s + var(--i)*.35s) infinite;pointer-events:none}
@keyframes p27sweep{0%,70%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.p27-anim .p27-ic{display:inline-block;animation:p27bob 3.2s ease-in-out calc(var(--i)*.3s) infinite}
@keyframes p27bob{50%{transform:translateY(-3px) scale(1.06)}}
.p27-anim .p27-card:hover{border-color:#f1d58e!important;box-shadow:0 0 0 1px #f1d58e55,0 10px 30px #0008!important}
.p27-anim .p27-card.go{border-color:#f1d58e!important;box-shadow:0 0 30px #f1d58e88!important;transform:scale(1.03)}
.p27-anim .p27-card.go::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 50%,#fff6d6aa,transparent 60%);animation:p27flash .42s ease-out forwards;pointer-events:none}
@keyframes p27flash{from{opacity:0}40%{opacity:1}to{opacity:0}}
@media (prefers-reduced-motion: reduce){.p27-anim *,.p27-door *{animation:none!important;opacity:1!important}.p27-door i{display:none}}
/* ===== V27.4 — Ajouter un membre : 3 étapes ===== */
.p27-over{position:fixed;inset:0;z-index:1300;display:flex;align-items:flex-end;justify-content:center}
.p27-veil{position:absolute;inset:0;background:#0d0407c4;animation:p27fadeI .35s ease both}
@keyframes p27fadeI{from{opacity:0}}
.p27-sh{position:relative;width:100%;max-width:520px;max-height:92vh;overflow:auto;border-radius:30px 30px 0 0;background:linear-gradient(#1f0b11,#14070b);border-top:1px solid #d8b56a66;padding:12px 20px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:0 -20px 60px #000a;animation:p27up .55s cubic-bezier(.2,.8,.2,1) both;color:#f9f1e8}
@keyframes p27up{from{transform:translateY(100%)}}
.p27-grab{width:44px;height:5px;border-radius:3px;background:#ffffff33;margin-bottom:8px;flex:none}
.p27-sh-top{width:100%;display:grid;grid-template-columns:44px 1fr 44px;align-items:center}
.p27-sh-top small{font-size:11px;letter-spacing:.22em;font-weight:800;color:#d8b56a}
.p27-close{width:44px!important;height:44px;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:#ffffff10!important;color:#cbbbc0!important;font-size:22px!important;box-shadow:none!important}
.p27-prog{position:relative;width:270px;margin:12px 0 16px;display:flex;justify-content:space-between;flex:none}
.p27-prog .line,.p27-prog .fill{position:absolute;left:35px;top:17px;height:2px}
.p27-prog .line{right:35px;background:#ffffff1f}
.p27-prog .fill{max-width:calc(100% - 70px);background:linear-gradient(90deg,#f1d58e,#d8b56a);box-shadow:0 0 10px #f1d58e;transition:width .7s cubic-bezier(.6,0,.2,1)}
.p27-dot{position:relative;z-index:1;width:70px;display:flex;flex-direction:column;align-items:center;gap:6px}
.p27-dot b{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;background:#1d0b11;border:2px solid #ffffff2a;color:#cbbbc0;transition:.4s}
.p27-dot span{font-size:11px;font-weight:700;color:#9f8f94}
.p27-dot.on b{border-color:#f1d58e;color:#f1d58e;animation:p27ping 1.6s ease-out infinite}.p27-dot.on span{color:#f1d58e}
.p27-dot.done b{background:#f1d58e;border-color:#f1d58e;color:#32140b;animation:p27pop .5s cubic-bezier(.3,1.6,.5,1)}.p27-dot.done span{color:#f9f1e8}
@keyframes p27ping{0%{box-shadow:0 0 0 0 #f1d58e66,0 0 18px #f1d58e88}100%{box-shadow:0 0 0 14px #f1d58e00,0 0 18px #f1d58e88}}
@keyframes p27pop{from{transform:scale(0)}}
.p27-steps{width:100%;display:flex;flex-direction:column;gap:10px}
.p27-s{width:100%;border-radius:22px;border:1px solid #ffffff14;background:#170a0e;display:flex;flex-direction:column;align-items:center;gap:12px;padding:14px;margin:0!important;box-shadow:none!important;color:#8a7a80!important}
.p27-s .p27-sh-h{display:flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:14px}
.p27-s .p27-sh-h i{font-style:normal;width:24px;height:24px;border-radius:50%;border:1.5px solid #ffffff30;display:flex;align-items:center;justify-content:center;font-size:12px;flex:none}
.p27-s.active{border:2px solid #f1d58e;background:radial-gradient(circle at 50% 0%,#3a1219,#1d0b11 70%);padding:16px 16px 20px;animation:p27stepIn .5s cubic-bezier(.2,.8,.2,1) both,p27glow 2.4s ease-in-out .5s infinite}
.p27-s.active .p27-sh-h{color:#f1d58e;font-size:11px;letter-spacing:.2em;font-weight:800}
@keyframes p27stepIn{from{opacity:0;transform:translateY(10px) scale(.98)}}
@keyframes p27glow{0%,100%{box-shadow:0 0 0 6px #f1d58e14,0 18px 40px #000a}50%{box-shadow:0 0 0 10px #f1d58e10,0 0 34px #f1d58e33,0 18px 40px #000a}}
.p27-s.done{border-color:#d8b56a55!important;background:#1d0b11!important;color:#f9f1e8!important;width:100%;height:auto;cursor:pointer}
.p27-s.done .p27-sh-h{font-size:15px}.p27-s.done .p27-sh-h i{background:#f1d58e;border-color:#f1d58e;color:#32140b;animation:p27pop .5s cubic-bezier(.3,1.6,.5,1)}
.p27-s.done em{font-style:normal;color:#cbbbc0;font-weight:500;font-size:12px}
.p27-mini{width:26px;height:26px;border-radius:50%;object-fit:cover;border:1.5px solid #f1d58e}
.p27-q{font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;font-weight:500;line-height:1.1;color:#f9f1e8}
.p27-big{width:100%!important;height:58px;margin:0!important;border-radius:18px!important;border:1.5px solid #f1d58e88!important;background:#0f0609!important;color:#f9f1e8!important;text-align:center;font:700 19px 'Manrope',system-ui,sans-serif!important;box-shadow:none!important}
input.p27-big::placeholder{color:#6f5f65;font-weight:600}
.p27-next{height:52px;padding:0 30px!important;margin:0!important;width:auto!important;border-radius:999px!important}
.p27-next:disabled{opacity:.35}
.p27-sel{width:100%}
.p27-selv{display:flex!important;align-items:center;justify-content:center;gap:10px;font-size:17px!important}.p27-selv small{color:#f1d58e;font-size:14px}
.p27-menu{margin-top:8px;max-height:0;overflow:hidden;border-radius:18px;background:#0f0609;border:1px solid transparent;transition:max-height .5s cubic-bezier(.2,.8,.2,1),border-color .3s}
.p27-sel.open .p27-menu{max-height:46vh;overflow:auto;border-color:#f1d58e44}
.p27-menu p{margin:0;padding:10px 0 4px;font-size:10px;letter-spacing:.2em;font-weight:800;color:#d8b56a}
.p27-menu button{display:block;width:100%!important;height:44px;margin:0!important;border:none!important;border-radius:0!important;background:none!important;color:#f9f1e8!important;font:700 15px 'Manrope',system-ui,sans-serif!important;box-shadow:none!important}
.p27-menu button.sel{background:#f1d58e22!important;color:#f1d58e!important}
.p27-gold{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;border:none!important;font-size:16px!important}
.p27-sendb{width:100%;display:grid;gap:10px}
.p27-ways{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:0;overflow:hidden;opacity:0;transition:all .5s cubic-bezier(.2,.8,.2,1)}
.p27-sendb.open .p27-ways{max-height:110px;opacity:1}
.p27-ways button{height:74px;margin:0!important;padding:0!important;border-radius:18px!important;border:2px solid transparent!important;color:#fff!important;font:800 13px 'Manrope',system-ui,sans-serif!important;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:4px;box-shadow:none!important;transition:.35s}
.p27-ways button span{font-size:20px}
.w-wa{background:linear-gradient(135deg,#2fd06b,#1a9e4c)!important}.w-sms{background:linear-gradient(135deg,#4aa3ff,#2a6fd6)!important}.w-mail{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important}
.p27-ways button.sel{border-color:#fff!important;box-shadow:0 0 0 4px #ffffff33,0 0 24px #ffffff55!important;transform:scale(1.05)}
.p27-hint{margin:0;font-size:12.5px;color:#cbbbc0;line-height:1.4}
.p27-later{width:auto!important;margin:0!important;border:none!important;background:none!important;box-shadow:none!important;color:#cbbbc0!important;font-size:13px!important;text-decoration:underline;text-underline-offset:3px;padding:6px!important}
.p27-pet{width:120px;height:120px;border-radius:50%;object-fit:cover;border:3px solid #f1d58e;box-shadow:0 0 34px #f1d58e66;animation:p27pop .6s cubic-bezier(.3,1.6,.5,1)}
.p27-pet.empty{display:flex;align-items:center;justify-content:center;font-size:48px;background:#0f0609;border-style:dashed;box-shadow:none;animation:p27bob 3s ease-in-out infinite}
.p27-two-b{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.p27-two-b button{margin:0!important;height:50px;padding:0 8px!important;font-size:14px!important}
.p27-arr{width:100%;display:flex;flex-direction:column;gap:6px;font-size:13px;color:#cbbbc0;text-align:center}.p27-arr input{text-align:center;margin:0}
.p27-add{width:100%!important;height:60px;margin:14px 0 0!important;border-radius:999px!important;font-size:17px!important;position:relative;overflow:hidden;opacity:.35;flex:none}
.p27-add.ready{opacity:1;animation:p27ready 1.8s ease-out infinite}
.p27-add.ready::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,#fff6d688 50%,transparent 65%);animation:p27sweep2 2.4s ease-in-out infinite}
@keyframes p27ready{0%{box-shadow:0 0 0 0 #f1d58e66}100%{box-shadow:0 0 0 16px #f1d58e00}}
@keyframes p27sweep2{0%{transform:translateX(-120%)}60%,100%{transform:translateX(120%)}}
.p27-over.landing .p27-sh{transition:transform .45s cubic-bezier(.6,0,.4,1),opacity .45s;transform:translateY(30px) scale(.95);opacity:0}
.p27-over.landing .p27-veil{background:#0d0407f2}
.p27-land{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:0 30px;color:#f9f1e8;pointer-events:none;animation:p27fadeI .3s ease .35s both}
.p27-land .av{width:110px;height:110px;border-radius:50%;object-fit:cover;background:linear-gradient(135deg,#7d4f8a,#3a1f44);display:flex;align-items:center;justify-content:center;font-family:'Cormorant Garamond',Georgia,serif;font-size:56px;font-weight:600;border:3px solid #f1d58e;box-shadow:0 0 50px #f1d58e88;animation:p27landA 1s cubic-bezier(.3,1.5,.5,1) .35s both}
@keyframes p27landA{from{transform:scale(0) rotate(-20deg)}}
.p27-land .ring{position:absolute;width:110px;height:110px;border-radius:50%;border:2px solid #f1d58e;top:calc(50% - 125px);animation:p27ringA 1.4s ease-out .4s infinite}
@keyframes p27ringA{from{transform:scale(1);opacity:.9}to{transform:scale(2.4);opacity:0}}
.p27-land h3{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-weight:500;font-size:30px}
.p27-land .chip{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:#2fd06b22;border:1px solid #2fd06b88;color:#8fe0ae;font-weight:800;font-size:14px}
.p27-land .chip.garde{background:#e8c58a22;border-color:#e8c58a88;color:#f1d58e}
.p27-land .spark{position:absolute;width:6px;height:6px;border-radius:50%;background:#f1d58e;box-shadow:0 0 10px #f1d58e;left:50%;top:calc(50% - 70px);animation:p27spark 1.2s cubic-bezier(.2,.8,.2,1) .45s forwards}
@keyframes p27spark{to{transform:translate(var(--x),var(--y)) scale(.3);opacity:0}}
img.p27-av{object-fit:cover;border:2px solid #f1d58e}
.p27-av.pet{background:linear-gradient(135deg,#5a4a2a,#2a2010);font-size:18px}
.p27-how.pet{color:#f1d58e}
.p27-mem.new{animation:p27memIn .8s cubic-bezier(.3,1.4,.5,1) both;border-color:#f1d58e88}
@keyframes p27memIn{from{opacity:0;transform:translateY(-14px) scale(.9)}}
.p27-sendbig{width:100%;margin:0!important;height:54px;border-radius:999px!important;border:none!important;color:#fff!important;font-weight:800;font-size:15px!important}
.p27-other summary{cursor:pointer;color:#cbbbc0;font-size:13px;padding:6px 0;text-align:center}
.p27-other[open]{display:grid;gap:8px}
.p27-petban{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:14px 16px;border-radius:20px;background:linear-gradient(135deg,#3a2a12,#1d0b11);border:1px solid #f1d58e66;color:#f9f1e8}
.p27-petban span{font-size:28px;animation:p27bob 2.4s ease-in-out infinite}.p27-petban p{margin:0;font-size:14px}
@media (prefers-reduced-motion: reduce){.p27-over *{animation:none!important;transition:none!important}}
.p27-sh>*,.p27-steps>*,.p27-s>*,.p27-sel>*{flex-shrink:0}
/* V27.4 — « Pour qui est cette porte ? » en page entière, tout visible sans descendre */
#modal.p27-full{align-items:stretch;background:#0d0407;backdrop-filter:none}
#modal.p27-full .sheet{width:100%;max-width:none;height:100dvh;max-height:100dvh;border:none;border-radius:0;box-shadow:none;padding:calc(12px + env(safe-area-inset-top)) 18px calc(12px + env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 12%,#4a0c18 0%,#1a070c 50%,#0d0407 100%);overflow-y:auto;display:flex;flex-direction:column}
#modal.p27-full .x{display:none}
#modal.p27-full .modal-back-v15{align-self:flex-start;width:auto!important;margin:0!important}
#modal.p27-full .p27-anim{flex:1;display:flex;flex-direction:column;max-width:520px;width:100%;margin:0 auto;text-align:center}
#modal.p27-full .p27-door{width:76px;height:82px;margin:0 auto}
#modal.p27-full .modal-back-v15+div small.gold,#modal.p27-full .p27-anim>small.gold{display:block;margin-top:6px;font-size:10.5px}
#modal.p27-full .p27-title{margin:4px 0 2px;font-size:clamp(24px,7.4vw,32px)!important}
#modal.p27-full .p27-sec{margin:12px 0 7px;text-align:center}
#modal.p27-full .p27-grid.g3{grid-template-columns:repeat(3,1fr)}
#modal.p27-full .p27-grid.g2{grid-template-columns:repeat(2,1fr)}
#modal.p27-full .p27-grid.g3 .p27-card,#modal.p27-full .p27-grid.g2 .p27-card{flex-direction:column;justify-content:center;text-align:center;gap:6px;padding:12px 6px!important;min-height:104px}
#modal.p27-full .p27-grid.g3 .p27-card b,#modal.p27-full .p27-grid.g2 .p27-card b{font-size:14.5px}
#modal.p27-full .p27-grid.g3 .p27-card small,#modal.p27-full .p27-grid.g2 .p27-card small{font-size:11.5px;line-height:1.25}
#modal.p27-full .p27-grid:not(.g2):not(.g3) .p27-card{justify-content:center;padding:10px 14px!important}
#modal.p27-full .p27-ic{font-size:26px;width:auto}
/* V27.5 — toutes les pages « ouvrir une porte » en page entière : Précédent / Suivant */
#modal.p27-full .p27-page{flex:1;display:flex;flex-direction:column;max-width:520px;width:100%;margin:0 auto;text-align:center;padding-bottom:8px}
#modal.p27-full .p27-page>small.gold{display:block;margin-top:4px}
#modal.p27-full .sheet>small.gold{display:block}
#modal.p27-full .sheet>*{max-width:520px;margin-left:auto;margin-right:auto;width:100%}
.p27-c{text-align:center;margin:4px 0 14px}
.p27-nav{position:sticky;bottom:calc(-12px - env(safe-area-inset-bottom));margin-top:auto;padding:14px 0 calc(12px + env(safe-area-inset-bottom));display:grid;grid-template-columns:auto 1fr;gap:10px;background:linear-gradient(transparent,#0d0407 30%);z-index:2}
.p27-nav button{margin:0!important;height:56px;border-radius:999px!important}
.p27-prev{width:auto!important;padding:0 18px!important;color:#d8b56a!important;border:1px solid #d8b56a66!important;background:#12060acc!important;box-shadow:none!important}
.p27-suiv{width:100%!important;font-size:16px!important;font-weight:800}
.p27-suiv:disabled{opacity:.35}
.p27-gprog{margin:12px auto 16px}
.p27-glow{animation:p27glow 2.4s ease-in-out infinite;border-color:#f1d58e!important}
.p27-count{display:flex;align-items:center;justify-content:center;gap:26px;margin:10px 0 18px}
.p27-count button{width:64px!important;height:64px;margin:0!important;padding:0!important;border-radius:50%!important;font-size:32px!important;font-weight:400;background:#1d0b11!important;color:#f1d58e!important;border:2px solid #d8b56a88!important;box-shadow:none!important}
.p27-count b{font-family:'Cormorant Garamond',Georgia,serif;font-size:84px;font-weight:500;color:#f1d58e;min-width:80px;line-height:1;text-shadow:0 0 30px #f1d58e66;animation:p27pop .4s cubic-bezier(.3,1.6,.5,1)}
.p27-bubbles{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;min-height:60px}
.p27-bubbles span{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#7a1124,#3b0812);border:2px solid #f1d58e88;font-weight:800;color:#fff6e6;animation:p27pop .5s cubic-bezier(.3,1.6,.5,1) calc(var(--i)*.05s) both}
.p27-rows{display:grid;gap:12px;text-align:left}
.p27-row{display:grid;gap:8px;padding:14px;border-radius:20px;background:#170a0e;border:1px solid #ffffff18;transition:.3s}
.p27-row.active{border:2px solid #f1d58e;background:radial-gradient(circle at 50% 0%,#3a1219,#1d0b11 70%);animation:p27glow 2.4s ease-in-out infinite}
.p27-row.ok{border-color:#d8b56a66;background:#1d0b11}
.p27-rowh{display:flex;align-items:center;gap:10px;min-height:40px}
.p27-rowh b{flex:1;min-width:0;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f9f1e8}
.p27-badge{flex:none;font-size:12px;font-weight:800;padding:6px 10px;border-radius:999px;white-space:nowrap}
.p27-badge.yes{background:#2fd06b22;border:1px solid #2fd06b88;color:#8fe0ae}
.p27-badge.no{background:#ffffff10;border:1px solid #ffffff2a;color:#cbbbc0}
.p27-badge.pet{background:#e8c58a22;border:1px solid #e8c58a88;color:#f1d58e}
.p27-pick{width:100%;height:50px;margin:0!important;border-radius:14px!important;border:1px solid #ffffff26!important;background:#0f0609!important;color:#f9f1e8!important;font:600 15px 'Manrope',system-ui,sans-serif!important;padding:0 14px!important;text-align:center;text-align-last:center}
.p27-row.active .p27-pick{border-color:#f1d58e88!important}
.p27-sendsel{color:#8fe0ae!important}.p27-sendsel.no{color:#cbbbc0!important}
/* le volet « ajouter un membre » devient aussi une page entière */
.p27-over{align-items:stretch}
.p27-sh{max-width:none;height:100dvh;max-height:100dvh;border-radius:0;border:none;padding-top:calc(12px + env(safe-area-inset-top));background:radial-gradient(circle at 50% 10%,#4a0c18 0%,#1a070c 50%,#0d0407 100%)}
.p27-sh>*{width:100%;max-width:520px}
.p27-grab{display:none}
.p27-sh-top{grid-template-columns:auto 1fr auto}
.p27-sh-top .p27-prev{height:44px;margin:0!important}
.p27-add{margin-top:auto!important}
/* V27.5 — suivi des invitations */
.p27-invs{margin:12px 0;display:grid;gap:8px}
.p27-invrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;border-radius:16px;background:#1d0b11;border:1px solid #ffffff14}
.p27-invrow.late{border-color:#e0a45888;background:#2a1410}
.p27-inv{font-size:12px;font-weight:800;margin-top:2px}.p27-inv.ok{color:#8fe0ae}.p27-inv.wait{color:#cbbbc0}.p27-inv.late{color:#f0b27a}
.p27-invbtns{display:flex;gap:8px;margin-left:auto}.p27-invbtns button{width:auto!important;margin:0!important;height:40px;padding:0 14px!important;font-size:13px!important}
.p27-notice{position:fixed;left:12px;right:12px;top:calc(12px + env(safe-area-inset-top));z-index:1400;max-width:520px;margin:0 auto;padding:16px;border-radius:22px;background:linear-gradient(135deg,#3a1410,#1d0b11);border:1.5px solid #e0a458;box-shadow:0 20px 50px #000c,0 0 30px #e0a45844;color:#f9f1e8;animation:p27drop .6s cubic-bezier(.3,1.4,.5,1) both}
@keyframes p27drop{from{transform:translateY(-130%);opacity:0}}
.p27-nt{display:flex;align-items:center;gap:10px;margin-bottom:8px}.p27-nt span{font-size:24px;animation:p27bob 1.6s ease-in-out infinite}.p27-nt b{font-size:15px}
.p27-ni{padding:10px 0;border-top:1px solid #ffffff14}.p27-ni p{margin:0 0 8px;font-size:14px;color:#ead9c9}
.p27-ni .p27-invbtns{margin:0}
.p27-nlater{width:100%!important;margin:8px 0 0!important;height:40px;background:none!important;border:none!important;box-shadow:none!important;color:#cbbbc0!important;font-size:13px!important;text-decoration:underline}
#modal.p27-full #modalContent{flex:1;display:flex;flex-direction:column;width:100%}
.p27-suiv{white-space:nowrap;font-size:15px!important}
.p27-prev{white-space:nowrap}

/* ===== V27.6 — L'ouverture d'une nouvelle porte : famille (arche-arbre), à deux (le cœur), journal secret (le cadenas) ===== */




.o27{--gold:#f1d58e;--gold2:#d8b56a;--ink:#f9f1e8;--mut:#cbbbc0;position:fixed;inset:0;z-index:2100;overflow:hidden;background:radial-gradient(circle at 50% 40%,#2a0a14,#0b0308 70%);color:#f9f1e8;font-family:'Manrope',system-ui,sans-serif;transition:opacity .5s}
.o27.o27-out{opacity:0}
.o27-in{position:absolute;left:50%;top:50%;width:390px;height:844px;margin:-422px 0 0 -195px;transform-origin:center}
.o27 *{box-sizing:border-box}
.o27 h1,.o27 h2{color:#f9f1e8}
.o27-pass{position:absolute;right:16px;top:calc(14px + env(safe-area-inset-top));z-index:9;background:none!important;border:none!important;box-shadow:none!important;color:#8a7a80!important;font:700 13px 'Manrope',sans-serif!important;padding:10px!important;width:auto!important;margin:0!important}
.o27-top{position:absolute;top:58px;left:0;right:0;text-align:center;z-index:5;transition:opacity .6s}
.o27-top small{font-size:11px;letter-spacing:.26em;font-weight:800;color:var(--gold2)}
.o27-top h1{margin:8px 0 0;font-family:'Cormorant Garamond',serif;font-weight:500;font-size:34px}
.o27.o27-go .o27-top{opacity:.0}
.o27-stage{position:absolute;inset:0}
/* étoiles */
.o27-star{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.6;animation:o27k-tw 3s ease-in-out infinite}@keyframes o27k-tw{50%{opacity:.1}}
/* glisser la clé */
.o27-slide{position:absolute;left:30px;right:30px;bottom:70px;height:68px;border-radius:999px;background:#160910;border:1.5px solid #d8b56a66;z-index:6;overflow:hidden;transition:opacity .5s,transform .5s;box-shadow:inset 0 0 20px #000}
.o27-slide .o27-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-left:50px;font-weight:800;font-size:15px;color:transparent;background:linear-gradient(90deg,#8a6a3a 0%,#fff6d6 50%,#8a6a3a 100%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:o27k-sh 2.2s linear infinite}@keyframes o27k-sh{from{background-position:200% 0}to{background-position:0 0}}
.o27-slide .o27-trail{position:absolute;left:0;top:0;bottom:0;width:68px;border-radius:999px;background:linear-gradient(90deg,#f1d58e22,#f1d58e66)}
.o27-knob{position:absolute;left:4px;top:4px;width:60px;height:60px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff1c4,#d8b56a 60%,#a8792d);box-shadow:0 6px 18px #000a,0 0 18px #f1d58e66;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none;animation:o27k-nudge 2.4s ease-in-out infinite}@keyframes o27k-nudge{0%,70%,100%{transform:translateX(0)}80%{transform:translateX(14px)}90%{transform:translateX(0)}}
.o27-knob.o27-drag{animation:none}
.o27.o27-go .o27-slide{opacity:0;transform:translateY(20px);pointer-events:none}
.o27-skip{position:absolute;bottom:26px;left:0;right:0;text-align:center;font-size:12px;color:#8a7a80;z-index:6;opacity:0;transition:opacity .5s}
.o27.o27-go .o27-skip{opacity:1}
.o27-final{position:absolute;left:0;right:0;bottom:120px;text-align:center;z-index:7;opacity:0;transform:translateY(16px);transition:all .9s cubic-bezier(.2,.8,.2,1)}
.o27-final small{font-size:11px;letter-spacing:.3em;font-weight:800;color:var(--gold)}
.o27-final h2{margin:8px 0 0;font-family:'Cormorant Garamond',serif;font-weight:500;font-size:38px;text-shadow:0 0 30px #f1d58e88}
.o27-final.o27-show{opacity:1;transform:none}
.o27-flood{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,#fff6d6,#f1d58e88 30%,transparent 65%);opacity:0;pointer-events:none;z-index:4;transition:opacity 1.2s}
.o27-flood.o27-show{opacity:.85}

/* ===== FAMILLE : l'arche-arbre et ses lanternes ===== */
.o27-arch{position:absolute;left:50%;top:150px;width:360px;margin-left:-180px;z-index:3}
.o27-arch svg{width:100%;overflow:visible}
.o27-br{fill:none;stroke:url(#o27gold);stroke-width:7;stroke-linecap:round;stroke-dasharray:var(--l);stroke-dashoffset:var(--l);filter:drop-shadow(0 0 6px #f1d58e88)}
.o27-tw{fill:none;stroke:#d8b56a;stroke-width:3;stroke-linecap:round;stroke-dasharray:90;stroke-dashoffset:90}
.o27.o27-go .o27-br{animation:o27k-draw 1.6s cubic-bezier(.6,0,.3,1) .2s forwards}
.o27.o27-go .o27-tw{animation:o27k-draw .5s ease forwards}@keyframes o27k-draw{to{stroke-dashoffset:0}}
.o27-lant{opacity:0;transform-box:fill-box;transform-origin:center}
.o27-lant.o27-on{animation:o27k-bloom .8s cubic-bezier(.3,1.6,.5,1) forwards}@keyframes o27k-bloom{0%{opacity:0;transform:scale(0)}100%{opacity:1;transform:scale(1)}}
.o27-lant .o27-halo{fill:#ffcf70;opacity:.55;filter:url(#o27bl)}
.o27-lant .o27-ring{fill:#2a0d14;stroke:#f1d58e;stroke-width:3}
.o27-lant .o27-ini{font:600 22px 'Cormorant Garamond',serif;fill:#fff6e6;text-anchor:middle;dominant-baseline:central}
.o27-lant .o27-nm{font:800 12px 'Manrope',sans-serif;fill:#f9f1e8;text-anchor:middle}
.o27-lant.o27-on .o27-halo{animation:o27k-hal 2.4s ease-in-out .8s infinite}@keyframes o27k-hal{50%{opacity:.85}}
.o27-leaf{fill:#d8b56a;opacity:0;transform-box:fill-box;transform-origin:center}
.o27.o27-go .o27-leaf{animation:o27k-lf .6s ease forwards}@keyframes o27k-lf{from{opacity:0;transform:scale(0) rotate(-40deg)}to{opacity:.8;transform:none}}
.o27-dl{fill:#5a0c1c;stroke:#d8b56a;stroke-width:2;transform-box:fill-box;transition:transform 1.4s cubic-bezier(.6,0,.2,1)}
.o27-dl.o27-l{transform-origin:left center}.o27-dl.o27-r{transform-origin:right center}
.o27-arch.o27-open .o27-dl.o27-l{transform:perspective(500px) rotateY(-95deg)}
.o27-arch.o27-open .o27-dl.o27-r{transform:perspective(500px) rotateY(95deg)}
.o27-inner{fill:url(#o27lite);opacity:.25;transition:opacity 1.2s}
.o27-arch.o27-open .o27-inner{opacity:1}
.o27-fall{position:absolute;width:6px;height:6px;border-radius:50% 0;background:#f1d58e;opacity:0;z-index:2}
.o27.o27-go .o27-fall{animation:o27k-fall 3s linear var(--d) infinite}@keyframes o27k-fall{0%{opacity:0;transform:translate(0,0) rotate(0)}15%{opacity:.8}100%{opacity:0;transform:translate(var(--x),300px) rotate(360deg)}}

/* ===== AMOUR : deux lumières qui se cherchent ===== */
.o27-light{position:absolute;width:22px;height:22px;border-radius:50%;top:400px;z-index:3}
.o27-light.o27-b{left:60px;background:#8fb0d9;box-shadow:0 0 30px 8px #8fb0d9}
.o27-light.o27-p{right:60px;background:#e8a6b5;box-shadow:0 0 30px 8px #e8a6b5}
.o27-light span{position:absolute;top:30px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;font-weight:700;color:var(--mut);transition:opacity .4s}
.o27.o27-go .o27-light span{opacity:0}
.o27.o27-go .o27-light.o27-b{animation:o27k-lb 2.2s cubic-bezier(.6,0,.4,1) forwards}
.o27.o27-go .o27-light.o27-p{animation:o27k-lp 2.2s cubic-bezier(.6,0,.4,1) forwards}@keyframes o27k-lb{30%{transform:translate(60px,-90px)}65%{transform:translate(100px,40px)}100%{transform:translate(124px,-10px);opacity:0}}@keyframes o27k-lp{30%{transform:translate(-60px,90px)}65%{transform:translate(-100px,-40px)}100%{transform:translate(-124px,-10px);opacity:0}}
.o27-trail-b,.o27-trail-p{position:absolute;inset:0;pointer-events:none}
.o27-burst{position:absolute;left:50%;top:400px;width:40px;height:40px;margin:-9px 0 0 -20px;border-radius:50%;background:radial-gradient(circle,#fff,#f1d58e 40%,transparent 70%);opacity:0;z-index:3}
.o27.o27-go .o27-burst{animation:o27k-bu 1s ease-out 2.05s forwards}@keyframes o27k-bu{0%{opacity:1;transform:scale(.4)}100%{opacity:0;transform:scale(9)}}
.o27-heart{position:absolute;left:50%;top:300px;width:220px;margin-left:-110px;z-index:3}
.o27-heart path{fill:none;stroke:var(--gold);stroke-width:3;stroke-dasharray:700;stroke-dashoffset:700;filter:drop-shadow(0 0 10px #f1d58e)}
.o27.o27-go .o27-heart path{animation:o27k-dh 1.4s ease-in-out 2.2s forwards}@keyframes o27k-dh{to{stroke-dashoffset:0}}
.o27-heart .o27-fillh{fill:#f1d58e;stroke:none;opacity:0;transform-box:fill-box;transform-origin:center}
.o27.o27-go .o27-heart .o27-fillh{animation:o27k-fh 1.6s ease 3.3s forwards}@keyframes o27k-fh{0%{opacity:0}20%{opacity:.95;transform:scale(1)}35%{transform:scale(1.12)}50%{transform:scale(1)}65%{transform:scale(1.07)}80%,100%{opacity:0;transform:scale(1.8)}}
.o27-spark{position:absolute;left:50%;top:400px;width:5px;height:5px;border-radius:50%;background:#fff1c4;box-shadow:0 0 10px #f1d58e;opacity:0;z-index:3}
.o27.o27-go .o27-spark{animation:o27k-sp 1.4s cubic-bezier(.2,.8,.2,1) 2.1s forwards}@keyframes o27k-sp{0%{opacity:1;transform:rotate(var(--a)) translateX(0)}100%{opacity:0;transform:rotate(var(--a)) translateX(var(--r))}}

/* ===== JOURNAL SECRET : la sangle, le cadenas, puis le sceau ===== */
.o27-book{position:absolute;left:50%;top:230px;width:230px;height:300px;margin-left:-115px;perspective:1000px}
.o27-cover{position:absolute;inset:0;border-radius:6px 16px 16px 6px;background:linear-gradient(135deg,#6b1424,#3b0812);border:2px solid #b88a3e;box-shadow:0 30px 60px #000c,inset 12px 0 0 #2a050c;transform-origin:left center;transition:transform 1.6s cubic-bezier(.6,0,.2,1);z-index:2}
.o27-cover .o27-frame{position:absolute;inset:16px 16px 16px 26px;border:1px solid #d8b56a66;border-radius:4px 10px 10px 4px}
.o27-cover .o27-corner{position:absolute;width:22px;height:22px;border:2px solid #d8b56a;opacity:.8}
.o27-cover .o27-c1{top:10px;left:20px;border-right:none;border-bottom:none}.o27-cover .o27-c2{top:10px;right:10px;border-left:none;border-bottom:none}.o27-cover .o27-c3{bottom:10px;left:20px;border-right:none;border-top:none}.o27-cover .o27-c4{bottom:10px;right:10px;border-left:none;border-top:none}
.o27-cover .o27-ttl{position:absolute;left:26px;right:16px;top:50px;text-align:center;font:italic 500 22px 'Cormorant Garamond',serif;color:#e8c58a;letter-spacing:.04em}
.o27-cover .o27-spot{position:absolute;left:50%;top:150px;width:96px;height:96px;margin:-48px 0 0 -43px;border-radius:50%;border:1px dashed #d8b56a55}
.o27-page{position:absolute;inset:6px 8px 6px 4px;border-radius:4px 12px 12px 4px;background:linear-gradient(90deg,#e9dcc0,#f6ecd6);box-shadow:inset 8px 0 14px #0003;display:flex;align-items:center;justify-content:center;font-family:'Cormorant Garamond',serif;font-style:italic;font-size:21px;color:#5a3a20;text-align:center;padding:24px}
.o27-book.o27-open .o27-cover{transform:rotateY(-160deg)}
.o27-book.o27-open .o27-cover>*{opacity:0;transition:opacity .3s .35s}
.o27-strap{position:absolute;left:-8px;right:-8px;top:128px;height:44px;border-radius:8px;background:linear-gradient(180deg,#4a0a16,#2a050c);border:2px solid #b88a3e;box-shadow:0 6px 14px #0008;z-index:3}
.o27.o27-go .o27-strap{animation:o27k-svan 1s ease 1s forwards}@keyframes o27k-svan{to{opacity:0;filter:blur(6px) brightness(1.6);transform:scaleX(1.05)}}
.o27-lock{position:absolute;left:50%;top:104px;width:64px;margin-left:-28px;z-index:4;transition:transform .6s cubic-bezier(.6,0,.4,1) 1.4s,opacity .5s 1.9s;animation:o27k-lglow 1.6s ease-in-out infinite}@keyframes o27k-lglow{50%{filter:drop-shadow(0 0 10px #fff1c4) drop-shadow(0 0 22px #f1d58e) brightness(1.25)}}@keyframes o27k-lglow2{0%,100%{filter:drop-shadow(0 0 8px #f1d58e)}50%{filter:drop-shadow(0 0 26px #fff6d6) brightness(1.6)}}
.o27-glint{position:absolute;width:14px;height:14px;z-index:5;pointer-events:none;opacity:0;background:radial-gradient(circle,#fff 0 18%,transparent 20%),linear-gradient(0deg,transparent 45%,#fff 50%,transparent 55%),linear-gradient(90deg,transparent 45%,#fff 50%,transparent 55%);animation:o27k-glint 1.6s ease-in-out infinite}@keyframes o27k-glint{0%,100%{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(45deg)}}
.o27-lock .o27-sh{transform-box:fill-box;transform-origin:right bottom;transition:transform .45s cubic-bezier(.3,1.6,.5,1) .9s}

.o27.o27-go .o27-lock{animation:o27k-vanish 1.1s ease-in .5s forwards!important}@keyframes o27k-vanish{0%{opacity:1;filter:drop-shadow(0 0 10px #f1d58e) brightness(1)}45%{opacity:1;transform:scale(1.15);filter:drop-shadow(0 0 30px #fff6d6) brightness(1.9)}100%{opacity:0;transform:scale(1.5);filter:blur(10px) brightness(2.5)}}
.o27.o27-go .o27-glint{animation:none;opacity:0;transition:opacity .4s 1s}
.o27-key{position:absolute;right:-150px;top:140px;width:96px;z-index:5;opacity:0;transform:scaleX(-1)}
.o27.o27-go .o27-key{animation:o27k-kin .7s cubic-bezier(.3,1.2,.5,1) forwards,o27k-kturn .35s ease .72s forwards,o27k-kout .4s ease 1.25s forwards}@keyframes o27k-kin{from{opacity:0;transform:scaleX(-1) translateX(-40px)}to{opacity:1;transform:scaleX(-1) translateX(92px)}}@keyframes o27k-kturn{from{opacity:1;transform:scaleX(-1) translateX(92px) rotateX(0)}to{opacity:1;transform:scaleX(-1) translateX(92px) rotateX(90deg)}}@keyframes o27k-kout{to{opacity:0;transform:scaleX(-1) translateX(92px) rotateX(90deg)}}
.o27-seal{position:absolute;left:50%;top:-140px;width:110px;height:110px;margin-left:-50px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#d4384e,#8f1a2c 60%,#5a0c1c);box-shadow:0 10px 30px #000c,inset 0 0 0 6px #a01d32;display:flex;align-items:center;justify-content:center;z-index:5;opacity:0}
.o27-seal svg{width:46px}
.o27.o27-go .o27-seal{animation:o27k-stamp .6s cubic-bezier(.5,0,.3,1.4) 2.1s forwards}@keyframes o27k-stamp{from{opacity:0;transform:translateY(-80px) scale(1.8)}to{opacity:1;transform:translateY(465px) scale(.82)}}
.o27-ring2{position:absolute;left:50%;top:375px;width:90px;height:90px;margin:-45px 0 0 -42px;border-radius:50%;border:2px solid #f1d58e;opacity:0;z-index:4}
.o27.o27-go .o27-ring2{animation:o27k-r2 1.2s ease-out 1s forwards}@keyframes o27k-r2{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(3)}}
.o27-crack{position:absolute;left:50%;top:375px;width:6px;height:6px;margin:-3px;border-radius:50%;background:#fff1c4;box-shadow:0 0 10px #f1d58e;opacity:0;z-index:5}
.o27.o27-go .o27-crack{animation:o27k-sp 1.6s cubic-bezier(.2,.8,.2,1) var(--dl,1s) forwards}
/* V27.7 — capsules : qui pourra l'ouvrir */
.c27-who{margin:6px 0 4px}
.c27-chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0}
.c27-chips button{width:auto!important;margin:0!important;height:44px;padding:0 14px 0 8px!important;border-radius:999px!important;border:1px solid #ffffff26!important;background:#1d0b11!important;color:#f9f1e8!important;font-size:14px!important;font-weight:700;box-shadow:none!important;display:inline-flex!important;align-items:center;gap:8px;transition:.25s}
.c27-chips button i{font-style:normal;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#7a1124,#3b0812);font-family:'Cormorant Garamond',Georgia,serif;font-size:15px}
.c27-chips .c27-all{padding:0 14px!important}
.c27-chips button.on{background:#f1d58e!important;color:#32140b!important;border-color:#f1d58e!important;transform:scale(1.03)}
.c27-chips button.on i{background:#32140b;color:#f1d58e}
.c27-hint{margin:6px 0 0;font-size:13px;color:#cbbbc0;line-height:1.4}
.c27-for{display:block;margin-top:4px;font-size:12px;font-weight:800;color:#f1d58e}
/* V27.7 — roue du week-end en groupe + anniversaires de chacun */
.g27-ideas{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 0}
.g27-ideas>span{display:inline-flex;align-items:center;gap:4px;padding:7px 10px;border-radius:999px;background:#1d0b11;border:1px solid #ffffff22;font-size:13px;font-weight:700}
.g27-ideas i{font-style:normal;color:#d8b56a;font-weight:600}
.g27-ideas button{width:24px!important;height:24px;margin:0 0 0 2px!important;padding:0!important;border-radius:50%!important;background:#ffffff14!important;color:#cbbbc0!important;box-shadow:none!important;border:none!important;font-size:14px!important;line-height:1}
.g27-keys{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:4px 0 10px}
.g27-keys span{padding:7px 12px;border-radius:999px;font-size:12.5px;font-weight:800}
.g27-keys .ok{background:#2fd06b22;border:1px solid #2fd06b88;color:#8fe0ae}
.g27-keys .wait{background:#ffffff10;border:1px solid #ffffff2a;color:#cbbbc0;animation:p27ping 1.8s ease-out infinite}
.g27-wait{text-align:center;color:#8fe0ae;font-weight:700;font-size:14px}
.g27-err{color:#f0a0a0;font-size:13px;text-align:center;min-height:1em}
.g27-result{margin:6px 0 10px;padding:14px;border-radius:18px;background:radial-gradient(circle at 50% 0%,#3a1219,#1d0b11 70%);border:1px solid #f1d58e88;text-align:center}
.g27-result small{font-size:10.5px;letter-spacing:.2em;font-weight:800;color:#d8b56a}.g27-result b{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:30px;margin:4px 0 8px}
.g27-pick{font-size:44px!important;text-shadow:0 0 26px #f1d58e88;animation:p27pop .7s cubic-bezier(.3,1.6,.5,1)}
.g27-bd{display:grid;gap:8px;margin-top:10px}
.g27-bdrow{display:grid;grid-template-columns:auto 1fr;gap:8px 12px;align-items:center;padding:12px;border-radius:18px;background:#1d0b11;border:1px solid #ffffff14}
.g27-bdrow.set{border-color:#d8b56a66}
.g27-bdrow>.kdp,.g27-bdrow>input[type=date],.g27-bdrow>.g27-cap{grid-column:1/-1;margin:0!important}
.g27-av{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#7a1124,#3b0812);border:2px solid #f1d58e;font-family:'Cormorant Garamond',Georgia,serif;font-size:20px;color:#fff6e6}
.g27-bdt b{display:block;font-size:16px}.g27-bdt small{color:#f1d58e;font-weight:700;font-size:13px}.g27-bdt input{margin:0 0 4px!important;height:42px}
.g27-ic{font-size:24px}
.g27-bdban{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:14px 16px;border-radius:20px;background:linear-gradient(135deg,#4a1a2a,#1d0b11);border:1px solid #f1d58e88;color:#f9f1e8}
.g27-bdban span{font-size:30px;animation:p27bob 2.2s ease-in-out infinite}.g27-bdban p{margin:0;font-size:14px}
/* V27.7 — corrections : rien ne se superpose, tout centré */
.g27-wait{display:flex;flex-direction:column;align-items:center;gap:4px;margin:6px 0 10px;padding:14px 16px;border-radius:18px;background:#2fd06b14;border:1px solid #2fd06b66;text-align:center}
.g27-wait b{color:#8fe0ae;font-size:15px}.g27-wait span{color:#cbbbc0;font-size:13.5px;line-height:1.4}
.g27-res{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding-top:6px}
.g27-res .future-faith{text-align:center}
.g27-go{width:100%!important;max-width:340px;margin:10px auto 0!important}
.g27-again{width:auto!important;margin:4px auto 0!important;padding:8px 16px!important;background:none!important;border:none!important;box-shadow:none!important;color:#cbbbc0!important;font-size:13px!important;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.g27-bdrow{grid-template-columns:44px 1fr;align-items:start}
.g27-bdrow>.g27-av{grid-row:1}
.g27-bdt{display:flex;flex-direction:column;gap:2px;min-width:0}
.g27-bdt input{width:100%}
.g27-bdrow>input[type=date]+.kdp,.g27-bdrow>.kdp{grid-column:1/-1;margin:2px 0 0!important}
.g27-bdrow>.g27-cap{grid-column:1/-1;width:100%!important;margin:2px 0 0!important}
.g27-bdrow.saved{animation:p27memIn .7s cubic-bezier(.3,1.4,.5,1);border-color:#f1d58e}
.g27-keys{margin-bottom:6px}
/* V27.9 — La voix du souvenir */
.sv27{position:fixed;inset:0;z-index:1050;background:#0d0407;color:#f9f1e8;overflow:hidden;animation:p27fadeI .4s ease both}
body.sv27-open .bottom-nav,body.sv27-open #fab26{display:none!important}
.sv27-bg{position:absolute;inset:-30px}
.sv27-bg img{width:100%;height:100%;object-fit:cover;animation:sv27kb 16s ease-in-out infinite alternate}
@keyframes sv27kb{from{transform:scale(1.04)}to{transform:scale(1.16) translate(-12px,-16px)}}
.sv27-veil{position:absolute;inset:0;background:linear-gradient(#0d040766,#0d040700 25%,#0d040700 40%,#0d0407f0 78%)}
.sv27-bar{position:absolute;top:calc(12px + env(safe-area-inset-top));left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;z-index:2}
.sv27-bar span{padding:8px 14px;border-radius:999px;background:#12060acc;border:1px solid #d8b56a66;color:#d8b56a;font-size:13px;font-weight:700}
.sv27-bottom{position:absolute;left:16px;right:16px;bottom:calc(18px + env(safe-area-inset-bottom));max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:10px;z-index:2}
.sv27-who{font-size:11px;letter-spacing:.22em;font-weight:800;color:#f1d58e;text-shadow:0 1px 6px #000}
.sv27-cap{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;line-height:1.2;text-shadow:0 2px 10px #000}
.sv27-cap:empty{display:none}
.sv27-invite{margin:0;font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;line-height:1.25;text-shadow:0 2px 10px #000}
.sv27-player{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:26px;background:#1a0a0fe6;border:1px solid #d8b56a55}
.sv27-play{position:relative;width:60px!important;height:60px;flex:none;margin:0!important;padding:0!important;border-radius:50%!important;border:none!important;background:radial-gradient(circle at 35% 30%,#fff1c4,#d8b56a 60%,#a8792d)!important;display:flex!important;align-items:center;justify-content:center;box-shadow:none!important}
.sv27.playing .sv27-play::before{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid #f1d58e;animation:p27ringA 1.8s ease-out infinite}
.sv27-wave{flex:1;display:flex;align-items:flex-end;gap:3px;height:34px;overflow:hidden}
.sv27-wave i{width:4px;flex:none;border-radius:3px;background:#d8b56a;transform-origin:bottom;transform:scaleY(.3)}
.sv27.playing .sv27-wave i{animation:sv27w .9s ease-in-out infinite alternate}
@keyframes sv27w{from{transform:scaleY(.3)}to{transform:scaleY(1)}}
.sv27-player b{font-size:13px;min-width:34px;text-align:right}
.sv27-voices{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.sv27-voices button{width:auto!important;margin:0!important;height:40px;padding:0 14px!important;border-radius:999px!important;background:#ffffff14!important;border:1px solid #ffffff2a!important;color:#f9f1e8!important;font-size:13px!important;font-weight:700;box-shadow:none!important}
.sv27-voices button.on{background:#f1d58e!important;color:#32140b!important;border-color:#f1d58e!important}
.sv27-voices .sv27-add{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;border:none!important}
.sv27-tools{display:flex;justify-content:center;gap:14px}
.sv27-tools button{width:auto!important;margin:0!important;padding:6px 8px!important;background:none!important;border:none!important;box-shadow:none!important;color:#cbbbc0!important;font-size:13px!important;text-decoration:underline;text-underline-offset:3px}
.sv27-badge{position:absolute;right:6px;bottom:6px;width:30px;height:30px;border-radius:50%;background:#f1d58e;color:#32140b;display:flex;align-items:center;justify-content:center;font-size:15px;z-index:2;animation:sv27ping 1.8s ease-out infinite;pointer-events:none}
@keyframes sv27ping{0%{box-shadow:0 0 0 0 #f1d58e88}100%{box-shadow:0 0 0 10px #f1d58e00}}
.photo-frame{position:relative}
.sv27-calbtn{width:100%;margin-top:10px!important}
.sv27-calbtn small{font-weight:600;opacity:.8}
@media (prefers-reduced-motion: reduce){.sv27-bg img,.sv27-wave i,.sv27-badge{animation:none!important}}
/* ===== V28 — Remplir notre porte ===== */
.i28-page{flex:1;display:flex;flex-direction:column;max-width:520px;width:100%;margin:0 auto;padding-bottom:8px}
.i28-page>small.gold{display:block;text-align:center;margin-top:4px}
.i28-nav{display:flex;justify-content:space-between;margin-bottom:8px}.i28-nav button{height:44px;margin:0!important}
.i28-srcs{display:grid;gap:8px;margin-top:6px}
.i28-src{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:0!important;padding:12px 14px!important;border-radius:18px!important;background:#1d0b11!important;border:1px solid #d8b56a44!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important;animation:p27rise2 .6s cubic-bezier(.2,.8,.2,1) both}
.i28-src:nth-child(2){animation-delay:.08s}.i28-src:nth-child(3){animation-delay:.16s}
@keyframes p27rise2{from{opacity:0;transform:translateY(12px)}}
.i28-ic{width:44px;height:44px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;font-size:22px}
.i28-src b{display:block;font-size:15px}.i28-src small{display:block;font-size:12px;color:#cbbbc0;font-weight:500;letter-spacing:0}
.i28-pill{margin-left:auto;flex:none;font-style:normal;font-size:10.5px;font-weight:800;padding:5px 9px;border-radius:999px;white-space:nowrap}
.i28-pill.g{background:#2fd06b22;color:#8fe0ae;border:1px solid #2fd06b66}.i28-pill.o{background:#e0a45822;color:#f0c08a;border:1px solid #e0a45866}
.i28-drop{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:14px;padding:18px;border-radius:22px;border:2px dashed #f1d58e88;text-align:center;background:#f1d58e0a;cursor:pointer;animation:i28glow 2.4s ease-in-out infinite}
@keyframes i28glow{50%{box-shadow:0 0 26px #f1d58e33;border-color:#f1d58e}}
.i28-drop b{font-size:16px;color:#f1d58e}.i28-drop span{font-size:12px;color:#cbbbc0}.i28-drop input{display:none}
.i28-drive{margin:10px 0 0;font-size:12.5px;color:#cbbbc0;text-align:center;line-height:1.45}
.i28-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.i28-stats div{padding:10px;border-radius:16px;background:#1d0b11;border:1px solid #ffffff14;text-align:center}
.i28-stats b{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:28px;color:#f1d58e}.i28-stats span{font-size:11px;color:#cbbbc0}
.i28-stats .warn{border-color:#e0a45888}.i28-stats .warn b{color:#f0c08a}
.i28-months{display:grid;gap:8px;margin-top:12px}
.i28-month{padding:10px 12px;border-radius:16px;background:#1d0b11;border:1px solid #ffffff12}.i28-month small{font-size:11px;font-weight:800;letter-spacing:.14em;color:#d8b56a}
.i28-thumbs{display:flex;gap:4px;margin-top:6px;align-items:center}
.i28-thumbs img,.i28-thumbs .i28-vid{width:42px;height:42px;border-radius:8px;object-fit:cover;flex:none;animation:i28fly .7s cubic-bezier(.3,1.3,.5,1) both}
@keyframes i28fly{from{opacity:0;transform:translateY(-30px) scale(.6)}}
.i28-vid{display:flex;align-items:center;justify-content:center;background:#3b0812;color:#f1d58e}
.i28-more{font-size:12px;font-weight:800;color:#cbbbc0;margin-left:4px}
.i28-bar{height:10px;border-radius:999px;background:#ffffff14;overflow:hidden;margin-top:18px}.i28-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#d8b56a,#fff1c4);box-shadow:0 0 10px #f1d58e;transition:width .3s}
.i28-count{text-align:center;font-weight:800;margin-top:8px}
.i28-fly{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin-top:16px}.i28-fly img{width:52px;height:52px;border-radius:10px;object-fit:cover;animation:i28fly .7s cubic-bezier(.3,1.3,.5,1) both}
.i28-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}
.i28-cell{position:relative;aspect-ratio:1;width:100%!important;margin:0!important;padding:0!important;border-radius:12px!important;overflow:hidden;border:none!important;background:#1d0b11!important;box-shadow:none!important}
.i28-cell img{width:100%;height:100%;object-fit:cover;display:block}
.i28-cell.sel{outline:3px solid #f1d58e;outline-offset:-3px}
.i28-cell.sel::after{content:"✓";position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;background:#f1d58e;color:#32140b;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:13px}
.i28-sug{margin-top:12px;padding:12px;border-radius:18px;background:radial-gradient(circle at 50% 0%,#3a1219,#1d0b11 70%);border:2px solid #f1d58e;transition:.3s}
.i28-sug.off{opacity:.5;border-color:#d8b56a44}
.i28-sug p{margin:0 0 8px;font-size:13px;color:#cbbbc0}.i28-why{margin:8px 0 0!important;font-size:11.5px!important}
.i28-chips{display:flex;flex-wrap:wrap;gap:6px}
.i28-chips button,.i28-pick{width:auto!important;margin:0!important;height:42px;padding:0 14px!important;border-radius:999px!important;display:inline-flex!important;align-items:center;font-size:13.5px!important;font-weight:800;cursor:pointer}
.i28-chips button{background:#f1d58e!important;color:#32140b!important;border:none!important}
.i28-pick{background:#1d0b11;border:1px solid #ffffff2a;color:#f9f1e8;position:relative}
.i28-pickrow{margin-top:8px}.i28-pickrow .kdp{margin:0}
.i28-later{margin-top:10px!important}
.i28-tabs{display:flex;gap:6px;margin-top:10px;padding:4px;border-radius:999px;background:#1d0b11;border:1px solid #ffffff14}
.i28-tabs button{flex:1;width:auto!important;margin:0!important;height:38px;border-radius:999px!important;background:none!important;border:none!important;box-shadow:none!important;color:#cbbbc0!important;font-weight:800}
.i28-tabs button.on{background:#f1d58e!important;color:#32140b!important}
.i28-step{display:flex;gap:12px;align-items:flex-start;margin-top:10px;padding:12px;border-radius:18px;background:#1d0b11;border:1px solid #ffffff14;animation:p27rise2 .6s both}
.i28-num{width:30px;height:30px;border-radius:50%;flex:none;background:#f1d58e;color:#32140b;font-weight:800;display:flex;align-items:center;justify-content:center}
.i28-step>div{flex:1}.i28-step b{display:block;font-size:14px}.i28-step small{display:block;font-size:12.5px;color:#cbbbc0}
.i28-mock{margin-top:8px;padding:9px 12px;border-radius:12px;background:#f2f2f7;color:#111;font:600 13px -apple-system,system-ui,sans-serif;display:flex;justify-content:space-between;outline:2px solid #2fd06b;box-shadow:0 0 14px #2fd06b88;animation:i28pulse 1.6s infinite}
.i28-mock i{font-style:normal;color:#999}
@keyframes i28pulse{50%{box-shadow:0 0 22px #2fd06bcc}}
.i28-spin{width:54px;height:54px;margin:30px auto 10px;border-radius:50%;border:4px solid #ffffff1a;border-top-color:#f1d58e;animation:i28rot 1s linear infinite}
@keyframes i28rot{to{transform:rotate(360deg)}}
.i28-convs{display:grid;gap:8px;margin-top:8px}
.i28-conv{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:0!important;padding:12px!important;border-radius:16px!important;background:#1d0b11!important;border:1px solid #ffffff14!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important}
.i28-conv b{display:block;font-size:15px}.i28-conv small{display:block;font-size:12px;color:#cbbbc0;font-weight:500}.i28-conv i{margin-left:auto;font-style:normal;color:#d8b56a;font-size:20px}
.i28-safe{margin-top:10px;padding:10px 12px;border-radius:14px;background:#2fd06b14;border:1px solid #2fd06b55;font-size:12.5px;color:#bfe9cf;line-height:1.4}
.i28-q{margin:12px 0 2px;font-weight:800;font-size:14px}
.i28-keep{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:8px 0 0!important;padding:11px 14px!important;border-radius:16px!important;background:#1d0b11!important;border:1px solid #ffffff12!important;color:#f9f1e8!important;box-shadow:none!important;text-align:left}
.i28-keep b{flex:1;font-size:14px}.i28-keep span{color:#cbbbc0;font-size:12px;font-weight:600}
.i28-sw{width:46px;height:28px;border-radius:999px;background:#2fd06b;position:relative;flex:none;transition:.25s}.i28-sw::after{content:"";position:absolute;right:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.25s}
.i28-sw.off{background:#ffffff26}.i28-sw.off::after{right:21px}
.i28-done{text-align:center}.i28-star{font-size:56px;color:#f1d58e;margin-top:30px;text-shadow:0 0 30px #f1d58e;animation:p27pop .7s cubic-bezier(.3,1.6,.5,1)}
.i28-chat{margin:10px 0;padding:10px 12px;border-radius:16px;background:#1d0b11;border:1px solid #d8b56a44}
.i28-chat summary{cursor:pointer;font-weight:800;color:#f1d58e}
.i28-msg{padding:6px 0;border-top:1px solid #ffffff10}.i28-msg small{color:#cbbbc0;font-size:11.5px}.i28-msg p{margin:2px 0 0;font-size:14px;white-space:pre-wrap}
.i28-fill{margin-top:10px!important}
.i28-t{white-space:normal!important;text-align:center;font-size:clamp(24px,7.4vw,32px)!important;line-height:1.1}
.sheet label.i28-drop{display:flex!important;flex-direction:column;align-items:center;gap:4px;margin:14px 0 0}
.i28-drop b,.i28-drop span{display:block}
.p27-nav{grid-template-columns:auto minmax(0,1fr)!important}.p27-nav .p27-prev{padding:0 14px!important}.p27-nav .p27-suiv{overflow:hidden;text-overflow:ellipsis;padding:0 12px!important}
.p27-nav .p27-suiv{font-size:14px!important}.p27-nav .p27-prev{font-size:13px!important}
/* V28.1 — Snapchat / TikTok */
.i28-tt{background:#111!important;color:#fff!important;font-weight:800;font-size:22px!important;text-shadow:-2px -1px 0 #25f4ee,2px 1px 0 #fe2c55}
.i28-allrow{justify-content:center;margin:4px 0 10px}
.i28-month2{gap:10px!important}
.i28-month2 b{flex:none;min-width:118px;text-align:left}
.i28-mth{display:flex;gap:4px;flex:1;min-width:0;align-items:center}
.i28-mth img{width:30px;height:30px;border-radius:8px;object-fit:cover;animation:p27rise2 .5s both}
.i28-mth em{font-style:normal;color:#d8b56a;font-size:12px}
.i28-snapmem{border-color:#fffc0066!important;background:linear-gradient(135deg,#2a2608,#1d0b11)!important}
.i28-allrow button:last-child{background:transparent!important;color:#f1d58e!important;border:1px solid #d8b56a66!important}
.i28-stats.two{grid-template-columns:1fr 1fr!important}
/* ===== V28.2 — Calendrier vivant compact ===== */
#calendar.c28 .cal-toolbar{margin:14px 0 10px;gap:10px}
#calendar.c28 .cal-toolbar button{width:40px;height:40px;padding:0!important;border-radius:50%}
#calendar.c28 .cal-toolbar b{min-width:0;flex:1;font-size:22px;white-space:nowrap}
#calendar.c28 .cal-modes{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:4px;margin:0 0 14px;border-radius:999px;background:#ffffff0a;border:1px solid #ffffff12}
#calendar.c28 .cal-modes button{height:38px;padding:0!important;margin:0!important;border-radius:999px;font-size:14px;background:transparent;transition:background .3s,color .3s}
#calendar.c28 .cal-modes button.active{background:linear-gradient(135deg,#f1d58e,#c99a4e);color:#32140b;box-shadow:0 4px 16px #d8b56a44}
#calendarBody.c28-l{animation:c28l .35s ease}#calendarBody.c28-r{animation:c28r .35s ease}
@keyframes c28l{from{opacity:.3;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes c28r{from{opacity:.3;transform:translateX(-28px)}to{opacity:1;transform:none}}
.c28-heads,.c28-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.c28-heads span{text-align:center;font-size:11px;font-weight:800;letter-spacing:.08em;color:#a9979d;padding:2px 0 6px}
.c28-void{aspect-ratio:1}
.c28-d{position:relative;aspect-ratio:1;width:100%!important;min-height:0!important;margin:0!important;padding:0!important;border-radius:12px!important;overflow:hidden;background:#211017!important;border:1px solid #ffffff0d!important;box-shadow:none!important;color:#f8ecef!important;display:block!important;animation:c28in .45s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i)*12ms)}
@keyframes c28in{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.c28-d b{position:absolute;left:6px;top:4px;font:600 15px Georgia,serif;z-index:2}
.c28-d img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.1)}
.c28-d.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,#0009,#0000 55%);z-index:1}
.c28-d.ph b{text-shadow:0 1px 4px #000}
.c28-d i{position:absolute;right:3px;bottom:2px;font-style:normal;font-size:11px;z-index:2;line-height:1}
.c28-d em{position:absolute;right:3px;top:3px;z-index:2;font-style:normal;font-size:9px;font-weight:800;background:#12080cd9;color:#f1d58e;border-radius:6px;padding:1px 4px}
.c28-d.ev:not(.ph){background:linear-gradient(160deg,#3a1520,#211017)!important;border-color:#d8b56a44!important}
.c28-d.fut:not(.ev):not(.ph){opacity:.5}
.c28-d.today{border:2px solid #f1d58e!important;box-shadow:0 0 0 0 #f1d58e66!important;animation:c28in .45s both,c28glow 2.4s ease-out 1s infinite}
@keyframes c28glow{0%{box-shadow:0 0 0 0 #f1d58e77}100%{box-shadow:0 0 0 8px #f1d58e00}}
.c28-sum{display:flex;justify-content:space-between;align-items:baseline;margin:16px 2px 8px}
.c28-sum small{font-size:11px;font-weight:800;letter-spacing:.2em;color:#d8b56a}.c28-sum span{font-size:12px;color:#cbbbc0;font-weight:600}
.c28-ribbon{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x mandatory;padding:2px 2px 10px;margin:0 -2px;scrollbar-width:none}
.c28-ribbon::-webkit-scrollbar{display:none}
.c28-card{flex:0 0 138px;scroll-snap-align:start;display:flex!important;flex-direction:column;align-items:flex-start;gap:6px;margin:0!important;padding:10px 12px!important;border-radius:16px!important;background:#1d0b11!important;border:1px solid #d8b56a33!important;box-shadow:none!important;color:#f9f1e8!important;text-align:left;min-height:84px}
.c28-card small{font-size:11px;font-weight:800;color:#d8b56a;letter-spacing:.05em}
.c28-card b{font-size:13px;line-height:1.3;font-weight:700;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.c28-card b i{font-style:normal;margin-right:5px}
.c28-empty{text-align:center;color:#a9979d;font-size:13px;margin:18px 10px}
/* Semaine */
.c28-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-bottom:6px}
.c28-w{position:relative;overflow:hidden;aspect-ratio:.72;width:100%!important;min-height:0!important;margin:0!important;padding:6px 0!important;border-radius:16px!important;background:#211017!important;border:1px solid #ffffff10!important;box-shadow:none!important;color:#f8ecef!important;display:flex!important;flex-direction:column;align-items:center;justify-content:space-between}
.c28-w>*{position:relative;z-index:2}
.c28-w img{position:absolute!important;inset:0;width:100%;height:100%;object-fit:cover;z-index:0!important}
.c28-w.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(#000a,#0002 45%,#000a);z-index:1}
.c28-w small{font-size:10px;font-weight:800;color:#cbbbc0;letter-spacing:.08em}
.c28-w b{font:600 20px Georgia,serif;text-shadow:0 1px 4px #000}
.c28-w i{font-style:normal;font-size:11px;min-height:13px;color:#8f7f84}
.c28-w.full:not(.ph){background:linear-gradient(170deg,#3a1520,#211017)!important;border-color:#d8b56a55!important}
.c28-w.today{border:2px solid #f1d58e!important;animation:c28glow 2.4s ease-out infinite}
.c28-w.mini{aspect-ratio:auto;height:62px}
.c28-w.mini b{font-size:17px}.c28-w.mini i{color:#d8b56a}
.c28-w.sel{background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important}
.c28-w.sel small,.c28-w.sel i{color:#32140b}.c28-w.sel b{text-shadow:none}
.c28-fil{display:flex;flex-direction:column;gap:6px}
.c28-row{display:flex!important;align-items:center;gap:10px;width:100%!important;margin:0!important;padding:8px 10px!important;border-radius:16px!important;background:#1d0b11!important;border:1px solid #ffffff12!important;box-shadow:none!important;color:#f9f1e8!important;text-align:left;animation:p27rise2 .5s both}
.c28-date{flex:none;width:44px;height:48px;border-radius:12px;background:#2a1018;display:flex;flex-direction:column;align-items:center;justify-content:center}
.c28-date small{font-size:9.5px;font-weight:800;color:#cbbbc0}.c28-date b{font:600 19px Georgia,serif;line-height:1}
.c28-date.today{background:linear-gradient(135deg,#f1d58e,#c99a4e);color:#32140b}.c28-date.today small{color:#32140b}
.c28-what{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.c28-what span{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.c28-what span i{font-style:normal;margin-right:6px}.c28-what .more{color:#a9979d;font-weight:600;font-size:12px}
.c28-pics{flex:none;display:flex}.c28-pics img{width:34px;height:34px;border-radius:9px;object-fit:cover;border:2px solid #1d0b11;margin-left:-12px}
.c28-pics img:first-child{margin-left:0}
/* Année */
.c28-year{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.c28-m{position:relative;overflow:hidden;display:flex!important;flex-direction:column;align-items:stretch;gap:5px;width:100%!important;min-height:0!important;margin:0!important;padding:8px 8px 7px!important;border-radius:16px!important;background:#1d0b11!important;border:1px solid #ffffff12!important;box-shadow:none!important;color:#f9f1e8!important;text-align:left;animation:c28in .5s both}
.c28-m>*{position:relative;z-index:1}
.c28-m img{position:absolute!important;inset:0;width:100%;height:100%;object-fit:cover;opacity:.28;filter:blur(1px);z-index:0!important}
.c28-m b{font:600 15px Georgia,serif}
.c28-m small{font-size:10.5px;font-weight:700;color:#d8b56a}
.c28-m.calm small{color:#6f5f64}
.c28-sky{display:grid;grid-template-columns:repeat(7,1fr);gap:2.5px}
.c28-sky i{aspect-ratio:1;border-radius:50%;background:#ffffff14}
.c28-sky i.v{background:none}
.c28-sky i.l1{background:#d8b56a;box-shadow:0 0 4px #f1d58e}
.c28-sky i.l3{background:#fff4cf;box-shadow:0 0 6px #f1d58e,0 0 2px #fff}
.c28-sky i.t{outline:1.5px solid #ff8a9a;outline-offset:1px}
#calendar.c28 .cal-toolbar b{text-transform:none}
.c28-card small i{font-style:normal;margin-right:6px;font-size:14px}
.c28-strip .c28-w.sel{background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;border-color:#f1d58e!important;color:#32140b!important}
.c28-strip .c28-w.sel small,.c28-strip .c28-w.sel i,.c28-strip .c28-w.sel b{color:#32140b!important;text-shadow:none}
/* ===== V28.3 — Vidéos de 15 secondes ===== */
html.v15-lock,html.v15-lock body{overflow:hidden}
#v15{position:fixed;inset:0;z-index:2147483000;background:radial-gradient(circle at 50% 0%,#4a0c18,#160609 55%,#0d0407);color:#f9f1e8;display:flex;justify-content:center;animation:v15in .35s ease}
@keyframes v15in{from{opacity:0}to{opacity:1}}
.v15-page{width:100%;max-width:520px;height:100%;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom));gap:10px;overflow:hidden}
.v15-page.center{justify-content:center;align-items:center;text-align:center}
.v15-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.v15-ghost{height:42px;padding:0 16px!important;margin:0!important;width:auto!important;border-radius:999px!important;background:#12060acc!important;border:1px solid #d8b56a66!important;color:#d8b56a!important;font-weight:800;font-size:14px;box-shadow:none!important}
.v15-pill{padding:8px 12px;border-radius:999px;background:#ffffff12;border:1px solid #ffffff22;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}
.v15-k{font-size:11px;letter-spacing:.22em;font-weight:800;color:#d8b56a;text-align:center;margin-top:4px}
.v15-h{margin:0;text-align:center;font:500 28px 'Cormorant Garamond',Georgia,serif}
.v15-stage{position:relative;flex:1;min-height:0;border-radius:22px;overflow:hidden;background:#000;border:1px solid #d8b56a44}
.v15-stage video{width:100%;height:100%;object-fit:contain;background:#000}
.v15-badge{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);padding:6px 12px;border-radius:999px;background:#12060acc;color:#f1d58e;font-weight:800;font-size:13px;font-variant-numeric:tabular-nums}
.v15-strip{position:relative;height:64px;border-radius:14px;overflow:hidden;background:#1d0b11;touch-action:none;flex:none}
.v15-strip.off{opacity:.4;pointer-events:none}
.v15-frames{position:absolute;inset:0;display:grid;grid-template-columns:repeat(8,1fr)}
.v15-frames canvas{width:100%;height:100%;object-fit:cover;animation:v15in .4s both;filter:brightness(.6)}
.v15-win{position:absolute;top:0;bottom:0;left:0;border:3px solid #f1d58e;border-radius:12px;box-shadow:0 0 0 999px #0d040799,0 0 18px #f1d58e88;cursor:grab;transition:box-shadow .2s}
.v15-win.drag{cursor:grabbing;box-shadow:0 0 0 999px #0d0407b3,0 0 26px #f1d58e}
.v15-win i{position:absolute;top:50%;width:6px;height:26px;margin-top:-13px;border-radius:3px;background:#f1d58e}
.v15-win i:first-child{left:-5px}.v15-win i:last-child{right:-5px}
.v15-hint{margin:0;text-align:center;color:#cbbbc0;font-size:13px}
.v15-go{height:56px;width:100%!important;margin:0!important;border-radius:999px!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;font-weight:800;font-size:16px;flex:none}
.v15-go:disabled{opacity:.8}
.v15-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.v15-ring circle{fill:none;stroke-width:6}
.v15-ring .bg{stroke:#ffffff22}
.v15-ring .fg{stroke:#f1d58e;stroke-linecap:round;stroke-dasharray:289;stroke-dashoffset:289;transition:stroke-dashoffset .12s linear}
.v15-prep{position:absolute;left:50%;top:50%;width:110px;height:110px;margin:-55px 0 0 -55px;border-radius:50%;background:#0d0407b3;display:flex;align-items:center;justify-content:center}
.v15-prep b{font-size:20px;font-weight:800;color:#f1d58e;font-variant-numeric:tabular-nums}
.v15-prep.big{position:relative;left:auto;top:auto;margin:20px auto;width:150px;height:150px}
.v15-cam{position:relative;flex:1;min-height:0;border-radius:24px;overflow:hidden;background:#000}
.v15-cam video{width:100%;height:100%;object-fit:cover}
.v15-cam video.mirror{transform:scaleX(-1)}
.v15-rec-dot{position:absolute;top:12px;left:50%;transform:translateX(-50%);padding:5px 12px;border-radius:999px;background:#c2283f;color:#fff;font-size:12px;font-weight:800;letter-spacing:.1em;opacity:0;transition:opacity .2s}
.rec .v15-rec-dot{opacity:1;animation:v15blink 1s steps(2) infinite}
@keyframes v15blink{50%{opacity:.45}}
.v15-ctrl{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;flex:none;padding:4px 0}
.v15-shoot{position:relative;width:88px!important;height:88px;padding:0!important;margin:0!important;border-radius:50%!important;background:transparent!important;border:none!important;box-shadow:none!important}
.v15-shoot i{position:absolute;inset:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ff6b7d,#c2283f 60%,#7a1124);transition:inset .25s,border-radius .25s}
.rec .v15-shoot i{inset:28px;border-radius:9px}
.v15-flip{justify-self:end;width:52px!important;height:52px;padding:0!important;margin:0!important;border-radius:50%!important;background:#ffffff14!important;border:1px solid #ffffff2a!important;color:#fff!important;font-size:24px;box-shadow:none!important}
.rec .v15-flip{opacity:.3}
/* ===== V29 — Le journal secret (porte « Rien que moi » uniquement) ===== */
body.door-me #today>*:not(#j29Home){display:none!important}
body.door-me #tresors>*:not(#j29Tre){display:none!important}
#j29Home,#j29Tre{display:none}
body.door-me #j29Home,body.door-me #j29Tre{display:block}
html.j29-lock,html.j29-lock body{overflow:hidden}
.j29L{position:fixed;inset:0;z-index:2147482000;overflow-y:auto;overflow-x:hidden;color:#f9f1e8;background:radial-gradient(circle at 50% 0%,#3a0c26,#14060f 55%,#0b0409);animation:j29in .35s ease;-webkit-overflow-scrolling:touch}
.j29L.night{background:radial-gradient(ellipse at 50% 0%,#1d2150,#0b0d24 55%,#05060f)}
.j29L.fade{animation:j29out .65s ease forwards}
@keyframes j29in{from{opacity:0}to{opacity:1}}@keyframes j29out{to{opacity:0;transform:scale(1.04)}}
.j29-k{display:block;font-size:10.5px;letter-spacing:.24em;font-weight:800;color:#d8b56a}
.j29-k.c,.j29-h.c,.j29-sub.c{text-align:center}
.j29-h{margin:6px 0 0;font:500 30px/1.15 'Cormorant Garamond',Georgia,serif;color:#f9f1e8}
.j29-sub{color:#cbbbc0;font-size:13.5px;line-height:1.5;margin:8px 0 0}
.j29-mini{color:#f1d58e;font:italic 500 18px/1.35 'Cormorant Garamond',Georgia,serif;max-width:320px;margin:18px auto 0;text-align:center}
.j29-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.j29-pill{display:inline-flex;align-items:center;gap:6px;height:42px;padding:0 15px!important;margin:0!important;width:auto!important;border-radius:999px!important;background:#12060acc!important;border:1px solid #d8b56a66!important;color:#d8b56a!important;font-weight:800;font-size:13.5px;box-shadow:none!important;white-space:nowrap}
.j29-yr{background:none!important;border:none!important;box-shadow:none!important;color:#f1d58e!important;font-size:18px;padding:0 6px!important;margin:0!important;width:auto!important}
.j29-yr:disabled{opacity:.25}
.j29-go{display:flex;align-items:center;justify-content:center;width:100%!important;height:56px;margin:16px 0 0!important;border-radius:999px!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;font-weight:800;font-size:16px;box-shadow:0 10px 30px #d8b56a33!important}
.j29-go:disabled{opacity:.45}
.j29-go.fire{background:linear-gradient(135deg,#ffb347,#e2461b)!important;color:#fff!important;box-shadow:0 10px 30px #e2461b55!important}
.j29-link{display:block;margin:14px auto 0!important;background:none!important;border:none!important;box-shadow:none!important;color:#cbbbc0!important;font-size:13.5px;font-weight:700;text-decoration:underline;width:auto!important}
.j29-input{width:100%;height:52px;margin-top:16px;border-radius:16px;border:1px solid #d8b56a55;background:#1d0b14;color:#f9f1e8;padding:0 16px;font-size:16px}
.j29-err{color:#ff8a9a;min-height:18px;font-size:13px;margin:8px 0 0}
/* code */
.j29-lockpage{min-height:100%;display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 18px max(22px,env(safe-area-inset-bottom));max-width:520px;margin:0 auto}
.j29-lockpage.center{justify-content:center;align-items:center;text-align:center}
.j29-lockwrap{text-align:center;margin-top:4vh}
.j29-lockbox{position:relative;width:110px;height:128px;margin:0 auto 22px}
.j29-locksvg{width:100%;height:100%;filter:drop-shadow(0 0 22px #f1d58e88);overflow:visible}
.j29-locksvg .sh{transition:transform .7s cubic-bezier(.3,1.6,.5,1);transform-origin:90px 62px}
.j29-lockbox.open .sh{transform:translateY(-16px) rotate(28deg)}
.j29-lockbox.open .j29-locksvg{animation:j29glow 1s ease}
@keyframes j29glow{50%{filter:drop-shadow(0 0 48px #fff3c0)}}
.j29-spark{position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:#fff6d6;box-shadow:0 0 10px #f1d58e,0 0 20px #f1d58e;transform:translate(var(--x),var(--y));animation:j29tw 2.2s ease-in-out var(--d) infinite}
@keyframes j29tw{0%,100%{opacity:.15;transform:translate(var(--x),var(--y)) scale(.6)}50%{opacity:1;transform:translate(var(--x),var(--y)) scale(1.3)}}
.j29-lockbox.open .j29-spark{animation:j29burst .9s ease-out forwards}
@keyframes j29burst{from{opacity:1}to{opacity:0;transform:translate(calc(var(--x)*2),calc(var(--y)*2)) scale(1.8)}}
.j29-dots{display:flex;gap:18px;justify-content:center;margin:24px 0 0}
.j29-dots i{width:16px;height:16px;border-radius:50%;border:2px solid #d8b56a;transition:all .2s}
.j29-dots i.on{background:#f1d58e;box-shadow:0 0 12px #f1d58e;transform:scale(1.1)}
.j29-dots.bad i{border-color:#ff6b7d;background:#ff6b7d55}
.j29-dots.shake{animation:j29shake .45s}
@keyframes j29shake{20%,60%{transform:translateX(-10px)}40%,80%{transform:translateX(10px)}}
.j29-pad{display:grid;grid-template-columns:repeat(3,72px);justify-content:center;gap:14px 26px;margin-top:auto;padding-top:28px;transition:opacity .4s,transform .4s}
.j29-pad.gone{opacity:0;transform:translateY(30px)}
.j29-pad button{width:72px!important;height:72px;padding:0!important;margin:0!important;border-radius:50%!important;background:#ffffff0d!important;border:1px solid #ffffff1c!important;color:#f9f1e8!important;font:500 30px 'Cormorant Garamond',Georgia,serif;box-shadow:none!important}
.j29-pad button:active{background:#d8b56a44!important}
.j29-pad button.s{background:none!important;border:none!important;font:800 13px Manrope,sans-serif;color:#d8b56a!important}
/* accueil du journal */
#j29Home{padding:6px 0 30px}
.j29-hello{margin:6px 2px 12px}
.j29-mot{margin:0 0 14px;padding:14px 16px;border-radius:20px;background:linear-gradient(135deg,#2a1020,#1a0a12);border:1px solid #d8b56a44;animation:p27rise2 .6s both}
.j29-mot small{font-size:10px;letter-spacing:.2em;font-weight:800;color:#d8b56a}.j29-mot p{margin:6px 0 0;font:500 19px/1.35 'Cormorant Garamond',Georgia,serif;color:#f9f1e8}
.j29-paper{position:relative;display:block;width:100%;text-align:left;border-radius:24px!important;background:linear-gradient(#fbf3e2,#f1e3c6)!important;color:#3a1a12!important;padding:20px 20px 18px 30px!important;margin:0!important;box-shadow:0 24px 60px #000a,inset 0 0 0 1px #fff8!important;overflow:hidden;border:none!important}
.j29-paper::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(#0000 0 33px,#c9a77a44 33px 34px);background-position:0 12px;pointer-events:none}
.j29-paper::after{content:"";position:absolute;left:20px;top:0;bottom:0;width:1px;background:#e0898466;pointer-events:none}
.j29-paper>*{position:relative}
.j29-date{display:block;font:800 10.5px Manrope,sans-serif;letter-spacing:.2em;color:#a8792d}
.j29-q{display:block;font:600 23px/1.18 'Cormorant Garamond',Georgia,serif;color:#3a1a12;margin-top:6px}
.j29-hand{font-family:'Caveat','Segoe Print','Bradley Hand',cursive;font-size:24px;line-height:34px;color:#2a2160}
.j29-excerpt{display:block;margin-top:10px}
.j29-placeholder{display:block;margin-top:14px;color:#2a216066}
.j29-kept{display:block;margin-top:10px;font:800 12px Manrope,sans-serif;color:#2f7a4f}
.j29-home-paper{animation:p27rise2 .6s .08s both}
.j29-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.j29-tile{display:flex!important;flex-direction:column;align-items:flex-start;gap:4px;width:100%!important;margin:0!important;padding:14px!important;border-radius:20px!important;background:#1d0b14!important;border:1px solid #d8b56a33!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important;min-height:108px;position:relative;overflow:hidden;animation:p27rise2 .6s both}
.j29-tile span{font-size:24px}.j29-tile b{font:600 18px/1.15 'Cormorant Garamond',Georgia,serif;margin-top:4px}.j29-tile small{font-size:11.5px;color:#cbbbc0;font-weight:600}
.j29-tile.burn{background:radial-gradient(circle at 100% 100%,#5a1a08,#1d0b14 70%)!important;border-color:#ff7a1855!important}
.j29-tile.sky{background:radial-gradient(circle at 70% 20%,#26306a,#0f1130 75%)!important;border-color:#8ea2ff44!important}
.j29-tile.sky::after{content:"✦  ·  ✧ ·   ✦";position:absolute;right:10px;top:10px;color:#fff6;font-size:11px;letter-spacing:2px}
.j29-ago{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:12px 0 0!important;padding:14px 16px!important;border-radius:20px!important;background:linear-gradient(135deg,#3a1520,#1d0b14)!important;border:1px solid #d8b56a44!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important}
.j29-ago>span{font-size:26px}.j29-ago small{font-size:10px;letter-spacing:.18em;font-weight:800;color:#d8b56a}.j29-ago p{margin:4px 0 0;font:italic 500 17px/1.3 'Cormorant Garamond',Georgia,serif}
.j29-strip{margin-top:14px;padding:12px 14px;border-radius:18px;background:#ffffff08;border:1px solid #ffffff10}
.j29-strip>div{display:grid;grid-template-columns:repeat(14,1fr);gap:5px;margin-top:8px}
.j29-strip i{aspect-ratio:1;border-radius:50%;background:#ffffff14}
.j29-protect{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:12px 0 0!important;padding:12px 14px!important;border-radius:18px!important;background:#1d0b14!important;border:1px dashed #d8b56a77!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important}
.j29-protect>span:first-child{font-size:24px}.j29-protect b{display:block;font-size:14px}.j29-protect small{color:#cbbbc0;font-size:12px}.j29-protect i{margin-left:auto;color:#d8b56a;font-style:normal;font-size:20px}
.j29-nudge{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:16px 0 0!important;padding:13px 15px!important;border-radius:20px!important;background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important;text-align:left;border:none!important;box-shadow:0 14px 34px #0008!important}
.j29-nudge .door{width:38px;height:48px;border-radius:20px 20px 5px 5px;background:#32140b;flex:none;position:relative}
.j29-nudge .door::after{content:"";position:absolute;right:8px;top:26px;width:5px;height:5px;border-radius:50%;background:#f1d58e}
.j29-nudge b{display:block;font-size:14px}.j29-nudge small{font-size:12px;font-weight:600}
.j29-nudge.small{margin-top:18px!important}
/* page du soir */
.j29-edpage{max-width:560px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 14px max(26px,env(safe-area-inset-bottom));min-height:100%}
.j29-paper.ed{padding:20px 18px 18px 32px!important;min-height:52vh}
.j29-paper.ed.read{min-height:40vh}
.j29-edhead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.j29-mic{flex:none;width:46px!important;height:46px;padding:0!important;margin:-4px -4px 0 0!important;border-radius:50%!important;border:none!important;background:radial-gradient(circle at 35% 30%,#ff8a9a,#c2283f)!important;font-size:20px;box-shadow:0 6px 18px #c2283f66!important}
.j29-mic.on{animation:j29pulse 1.2s ease-out infinite}
@keyframes j29pulse{0%{box-shadow:0 0 0 0 #ff6b7daa}100%{box-shadow:0 0 0 16px #ff6b7d00}}
.j29-other{background:none!important;border:none!important;box-shadow:none!important;color:#a8792d!important;font:800 12px Manrope,sans-serif;padding:4px 0!important;margin:4px 0 0!important;width:auto!important}
.j29-ta{display:block;width:100%;min-height:34vh;margin-top:8px;border:none;background:transparent;resize:none;outline:none;padding:0;box-shadow:none}
.j29-ta::placeholder{color:#2a216055}
.j29-vchip{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;padding:8px 12px!important;border-radius:999px!important;background:#3a1a1214!important;border:1px solid #a8792d55!important;color:#3a1a12!important;font:800 12.5px Manrope,sans-serif;width:auto!important;box-shadow:none!important}
.j29-vchip.rec{color:#c2283f!important}
.j29-vchip button{background:#3a1a12!important;color:#f1d58e!important;border:none!important;border-radius:999px!important;padding:4px 10px!important;margin:0!important;font-size:11.5px;width:auto!important;box-shadow:none!important}
.j29-grat{margin-top:12px}
.j29-gratbtn{background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;width:auto!important;color:#a8792d!important;font:800 13px Manrope,sans-serif}
.j29-gratin{display:none;flex-direction:column}
.j29-grat.open .j29-gratin{display:flex}
.j29-gratin input{border:none;border-bottom:1px dashed #a8792d66;background:transparent;outline:none;height:34px;padding:0;margin:0;width:100%;box-shadow:none;border-radius:0}
.j29-moods{margin-top:12px;padding:12px;border-radius:22px;background:#1d0b14e6;border:1px solid #d8b56a44}
.j29-moods>div{display:flex;justify-content:space-between;margin-top:8px}
.j29-m{display:flex!important;flex-direction:column;align-items:center;gap:5px;background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;width:auto!important;color:#cbbbc0!important;font:700 10.5px Manrope,sans-serif}
.j29-m i{width:40px;height:40px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff8,var(--c) 60%);transition:transform .25s}
.j29-m.on{color:var(--c)!important}.j29-m.on i{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 18px var(--c);transform:scale(1.08)}
.j29-readtxt{margin-top:12px;white-space:normal}
.j29-gratread{margin-top:14px}.j29-gratread small{font:800 10.5px Manrope,sans-serif;letter-spacing:.18em;color:#a8792d}.j29-gratread p{margin:0}
/* rituel */
.j29-rit{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 22px;max-width:520px;margin:0 auto;position:relative}
.j29-ritpaper{width:240px;height:160px;border-radius:18px;background:linear-gradient(#fbf3e2,#f1e3c6);padding:14px 16px;overflow:hidden;box-shadow:0 0 0 #0000;animation:j29close 2.2s cubic-bezier(.6,.05,.3,1) forwards;transform-origin:50% 100%}
.j29-ritpaper .j29-hand{font-size:16px;line-height:22px;display:block;animation:j29ink 1.2s ease forwards}
@keyframes j29ink{50%{color:#4a3ad0;text-shadow:0 0 12px #8f7dff}100%{color:#2a2160}}
@keyframes j29close{0%{transform:none;opacity:1}45%{transform:none;box-shadow:0 0 50px var(--mc)}100%{transform:perspective(600px) rotateX(85deg) scale(.4);opacity:0}}
.j29-ritmoon{font-size:54px;margin-top:-90px;opacity:0;animation:j29rise .9s 1.9s ease forwards;filter:drop-shadow(0 0 22px var(--mc))}
.j29-ritmsg{opacity:0;animation:j29rise .9s 2.3s ease forwards;width:100%}
@keyframes j29rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.j29-ritmot{font:500 24px/1.3 'Cormorant Garamond',Georgia,serif;color:#f9f1e8;margin:10px 0 0}
.j29-ritlock{width:44px;height:52px;margin:18px auto 0}
.j29-locksvg.closing .sh{animation:j29shut 1s 3.2s cubic-bezier(.3,1.6,.5,1) both}
@keyframes j29shut{from{transform:translateY(-14px)}to{transform:none}}
/* brûler */
.j29-burnzone{position:relative;border-radius:24px}
.j29-paper.burnp{min-height:48vh}
.j29-paper.burnp.ember .j29-ta{animation:j29ember 1.2s ease forwards}
@keyframes j29ember{to{color:#b5300c;text-shadow:0 0 10px #ff7a18}}
.j29-fire{position:absolute;inset:0;border-radius:24px;pointer-events:none;mix-blend-mode:screen;filter:blur(1.5px)}
.j29-ash{position:absolute;width:var(--s);height:var(--s);border-radius:50%;background:var(--c);box-shadow:0 0 6px var(--c);pointer-events:none;animation:j29ash 2.2s ease-out forwards}
@keyframes j29ash{to{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
.j29-embers{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.j29-embers i{position:absolute;bottom:-10px;left:var(--x);width:5px;height:5px;border-radius:50%;background:#ffb347;box-shadow:0 0 8px #ff7a18;animation:j29up 4s linear var(--d) infinite}
@keyframes j29up{to{transform:translateY(-110vh) translateX(30px);opacity:0}}
/* ciel */
.j29-skypage{max-width:560px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 14px 26px}
.j29-sky{position:relative;height:min(62vh,560px);margin-top:12px;border-radius:24px;overflow:hidden;background:radial-gradient(ellipse at 50% 120%,#2b2f6b55,#0000 60%)}
.j29-bgstars i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:var(--o);animation:j29blink 3s ease-in-out var(--d) infinite}
@keyframes j29blink{50%{opacity:.05}}
.j29-const{position:absolute;inset:0;width:100%;height:100%}
.j29-const polyline{fill:none;stroke:#cfd8ff55;stroke-width:.25;stroke-dasharray:1 .8;vector-effect:non-scaling-stroke;stroke-width:1}
.j29-star{position:absolute;width:var(--s)!important;height:var(--s);padding:0!important;margin:0!important;transform:translate(-50%,-50%);border-radius:50%!important;border:none!important;background:radial-gradient(circle,#fff 0 25%,var(--c) 60%)!important;box-shadow:0 0 8px var(--c),0 0 18px var(--c)!important;opacity:0;animation:j29star .8s var(--d) ease-out forwards,j29tw2 3.5s calc(var(--d) + .8s) ease-in-out infinite}
.j29-star::before{content:"";position:absolute;inset:-7px}
@keyframes j29star{from{opacity:0;transform:translate(-50%,-50%) scale(3)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes j29tw2{50%{box-shadow:0 0 4px var(--c),0 0 10px var(--c)}}
.j29-mlab{position:absolute;transform:translateX(-50%);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:#cfd8ff66;font-weight:800}
.j29-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-top:12px;font-size:11.5px;font-weight:700;color:#cbbbc0}
.j29-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}
/* année en couleurs */
.j29-story{max-width:560px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:max(14px,env(safe-area-inset-top)) 16px 24px}
.j29-bars-top{display:flex;gap:4px;margin-bottom:10px}
.j29-bars-top i{flex:1;height:3px;border-radius:3px;background:#ffffff2a;overflow:hidden;position:relative}
.j29-bars-top i.done{background:#f1d58e}
.j29-bars-top i.now::after{content:"";position:absolute;inset:0;background:#f1d58e;transform-origin:left;animation:j29bar 6.5s linear forwards}
@keyframes j29bar{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.j29-stwrap{flex:1;display:flex;align-items:center;justify-content:center}
.j29-st{width:100%;text-align:center;animation:j29rise .6s ease both}
.j29-yrbig{font:500 110px/1 'Cormorant Garamond',Georgia,serif;color:#f9f1e8;margin-bottom:10px}
.j29-yrbig.grad{background:linear-gradient(90deg,#f6b73c,#e77a9a,#7d6fb3,#5fb3a8,#f6b73c);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:j29grad 6s linear infinite}
@keyframes j29grad{to{background-position:300% 0}}
.j29-ygrid{margin-top:16px;display:flex;flex-direction:column;gap:5px}
.j29-yrow{display:grid;grid-template-columns:30px repeat(31,1fr);gap:2px;align-items:center}
.j29-yrow span{font-size:9.5px;color:#a9979d;font-weight:800;text-align:left}
.j29-yrow i{aspect-ratio:1;border-radius:50%;background:#ffffff14;animation:j29pop .4s var(--d) both}
@keyframes j29pop{from{transform:scale(0)}to{transform:scale(1)}}
.j29-orb{width:130px;height:130px;margin:0 auto 18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:52px;background:radial-gradient(circle at 35% 30%,#fff8,var(--c) 62%);box-shadow:0 0 60px var(--c);animation:j29breath 3s ease-in-out infinite}
@keyframes j29breath{50%{transform:scale(1.06);box-shadow:0 0 90px var(--c)}}
.j29-bars{margin-top:18px;display:flex;flex-direction:column;gap:8px}
.j29-bars div{display:grid;grid-template-columns:78px 1fr 28px;gap:8px;align-items:center;font-size:12px;font-weight:700;color:#cbbbc0;text-align:left}
.j29-bars i{height:10px;border-radius:999px;width:var(--w);min-width:4px;animation:j29grow 1s ease both}
@keyframes j29grow{from{width:0}}
.j29-word{font:600 64px/1.1 'Cormorant Garamond',Georgia,serif;margin:18px 0 6px;background:linear-gradient(135deg,#fff1c4,#d8b56a);-webkit-background-clip:text;background-clip:text;color:transparent;word-break:break-word}
.j29-paper.mini{margin-top:16px!important;padding:16px 18px 16px 30px!important}
.j29-quote{font:italic 500 22px/1.3 'Cormorant Garamond',Georgia,serif;margin:14px 0 0}
.j29-card{width:min(78%,320px);border-radius:16px;margin:14px auto 0;display:block;box-shadow:0 20px 50px #000a;min-height:200px;background:#160612}
/* lettres */
.j29-envs{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.j29-env{display:flex!important;align-items:center;gap:14px;width:100%!important;margin:0!important;padding:12px 14px!important;border-radius:18px!important;background:#1d0b14!important;border:1px solid #d8b56a33!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important}
.j29-env.ready{border-color:#f1d58e!important;box-shadow:0 0 22px #f1d58e44!important;animation:j29breath2 2.4s ease-in-out infinite}
@keyframes j29breath2{50%{box-shadow:0 0 34px #f1d58e77}}
.j29-env b{display:block;font-size:14.5px}.j29-env small{color:#cbbbc0;font-size:12px}
.j29-envbox{position:relative;flex:none;width:58px;height:40px;border-radius:6px;background:linear-gradient(#f4e6c8,#e2cc9e);overflow:hidden}
.j29-envbox::before{content:"";position:absolute;left:0;right:0;top:0;height:24px;background:linear-gradient(160deg,#e9d6ad 50%,#0000 50%),linear-gradient(200deg,#e9d6ad 50%,#0000 50%);background-size:50% 100%;background-repeat:no-repeat;background-position:left,right}
.j29-env.opened .j29-envbox{opacity:.55}
.j29-seal{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#e0505c,#a3141f 60%,#6b0a12);box-shadow:0 3px 8px #0007,inset 0 0 0 4px #c0262f,inset 0 0 0 6px #8c111a;display:flex;align-items:center;justify-content:center;z-index:2}
.j29-seal b{font:700 22px Georgia,serif;color:#ffd0c8;text-shadow:0 -1px 0 #6b0a12}
.j29-seal.sm{width:22px;height:22px;margin:-11px;box-shadow:0 2px 4px #0007,inset 0 0 0 2px #c0262f}.j29-seal.sm b{font-size:11px}
.j29-envbig{position:relative;width:240px;height:160px;margin:0 auto 24px;border-radius:12px;background:linear-gradient(#f4e6c8,#e2cc9e);box-shadow:0 20px 50px #000a}
.j29-envbig::before{content:"";position:absolute;left:0;right:0;top:0;height:96px;background:linear-gradient(160deg,#e9d6ad 50%,#0000 50%),linear-gradient(200deg,#e9d6ad 50%,#0000 50%);background-size:50% 100%;background-repeat:no-repeat;background-position:left,right;filter:drop-shadow(0 2px 2px #0002)}
.j29-envbig .j29-seal{width:64px;height:64px;margin:-32px;top:60%}.j29-envbig .j29-seal b{font-size:30px}
.j29-envbig.ready{animation:j29breath2 2.4s ease-in-out infinite}
.j29-sealbtn{position:absolute;left:50%;top:60%;width:80px!important;height:80px;margin:-40px!important;padding:0!important;border-radius:50%!important;background:none!important;border:none!important;box-shadow:none!important;z-index:3}
.j29-sealbtn .j29-seal{top:50%}
.j29-envbig.crack .j29-seal{animation:j29crack 1.2s ease forwards}
.j29-envbig.crack .j29-seal::before,.j29-envbig.crack .j29-seal::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;box-shadow:inherit}
@keyframes j29crack{0%{transform:scale(1)}20%{transform:scale(1.15) rotate(-6deg)}40%{transform:scale(1) rotate(6deg);clip-path:polygon(0 0,52% 0,40% 45%,58% 60%,46% 100%,0 100%)}100%{transform:translate(-40px,140px) rotate(-60deg);opacity:0;clip-path:polygon(0 0,52% 0,40% 45%,58% 60%,46% 100%,0 100%)}}
.j29-envbig .j29-seal.drop{animation:j29drop .7s 1.1s cubic-bezier(.3,1.5,.5,1) both}
@keyframes j29drop{from{transform:scale(2.6);opacity:0}to{transform:scale(1);opacity:1}}
.j29-fold{position:relative;width:240px;height:170px;margin:0 auto 26px}
.j29-foldpaper{position:absolute;left:20px;right:20px;top:-80px;height:200px;border-radius:10px;background:repeating-linear-gradient(#fbf3e2 0 22px,#e8d4b0 22px 23px);box-shadow:0 10px 30px #0008;transform-origin:50% 100%;animation:j29fold 1.1s ease forwards}
@keyframes j29fold{60%{transform:translateY(40px) scaleY(.6)}100%{transform:translateY(120px) scaleY(.15);opacity:0}}
.j29-fold .j29-envbig{position:absolute;bottom:0;left:0;margin:0}
.j29-paper.letter.unfold{animation:j29unfold .9s ease both;transform-origin:50% 0}
@keyframes j29unfold{from{transform:perspective(700px) rotateX(-70deg);opacity:0}to{transform:none;opacity:1}}
.j29-chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:8px}
.j29-chips button{height:40px;padding:0 14px!important;margin:0!important;width:auto!important;border-radius:999px!important;background:#ffffff0d!important;border:1px solid #d8b56a55!important;color:#f1d58e!important;font-weight:800;font-size:13px;box-shadow:none!important}
.j29-chips button.on{background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important}
.j29-chips input{height:40px;border-radius:999px;border:1px solid #d8b56a55;background:#1d0b14;color:#f9f1e8;padding:0 12px;width:auto;margin:0}
/* listes */
.j29-list{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.j29-gcard{display:block!important;width:100%!important;margin:0!important;text-align:left;padding:12px 16px!important;border-radius:18px!important;background:linear-gradient(#fbf3e2,#f1e3c6)!important;color:#3a1a12!important;border:none!important;box-shadow:0 10px 26px #0007!important}
.j29-gcard small{font:800 10.5px Manrope,sans-serif;letter-spacing:.15em;color:#a8792d}.j29-gcard p{margin:0;font-size:21px;line-height:28px}
.j29-vcard{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:18px;background:#1d0b14;border:1px solid #d8b56a33}
.j29-play{flex:none;width:46px!important;height:46px;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important;font-size:16px;box-shadow:none!important}
.j29-vtxt{flex:1;min-width:0;text-align:left;background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;color:#f9f1e8!important}
.j29-vtxt b{display:block;font-size:14px}.j29-vtxt small{display:block;color:#cbbbc0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* trésors */
#j29Tre .j29-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
#j29Tre .j29-ago{margin-top:10px!important}
/* calendrier des humeurs */
body.door-me .c28-d.j29-mood:not(.ph),body.door-me .c28-w.j29-mood:not(.ph){border-color:transparent!important;color:#fff!important}
body.door-me .c28-d.j29-mood.ph,body.door-me .c28-w.j29-mood.ph{box-shadow:inset 0 0 0 3px var(--mc)!important}
.j29-calpage{margin:10px 0 14px!important;cursor:pointer}
.j29-calpage .j29-hand{font-size:20px;line-height:28px}
body.door-me #fab26{display:none!important}
body.door-me #j29Home{padding-bottom:110px}
.j29-sky{height:auto!important;aspect-ratio:1;max-height:none}
.j29-galaxy{position:absolute;inset:8%;border-radius:50%;background:radial-gradient(circle,#f1d58e22,#7d6fb322 35%,#0000 70%);animation:j29spin 120s linear infinite}
@keyframes j29spin{to{transform:rotate(360deg)}}
.j29-dust i{position:absolute;width:2px;height:2px;margin:-1px;border-radius:50%;background:#cfd8ff33}
.j29-star.now{outline:2px solid #fff;outline-offset:3px}
.j29-lockpage{position:relative}
.j29-lockpage.center>.j29-top{position:absolute;top:max(16px,env(safe-area-inset-top));left:18px;right:18px}
.j29-today{margin:0 0 12px;padding:12px 12px 10px;border-radius:22px;background:#1d0b14;border:1px solid #d8b56a44;animation:p27rise2 .6s both}
.j29-tmoods{display:flex;justify-content:space-between;margin-top:10px}
.j29-tmoods .j29-m i{display:flex;align-items:center;justify-content:center;font-style:normal;font-size:18px;width:46px;height:46px}
.j29-tmoods .j29-m.pop i{animation:j29popm .6s cubic-bezier(.3,1.6,.5,1)}
@keyframes j29popm{0%{transform:scale(.7)}60%{transform:scale(1.25)}100%{transform:scale(1.08)}}
.j29-tmsg{margin:10px 2px 2px;text-align:center;font:italic 500 17px/1.3 'Cormorant Garamond',Georgia,serif;color:#f1d58e;animation:j29rise .6s ease both}
/* ===== V29.2 — Petites promesses & liste de vie (journal uniquement) ===== */
.j29-prom{margin:0 0 12px;padding:12px 12px 10px;border-radius:22px;background:linear-gradient(160deg,#21101a,#140810);border:1px solid #d8b56a44;animation:p27rise2 .6s both}
.j29-promtop{display:flex;justify-content:space-between;align-items:center;gap:8px}
.j29-dreamlink{background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;width:auto!important;color:#cfd8ff!important;font:800 12px Manrope,sans-serif;white-space:nowrap}
.j29-promin{display:flex;gap:12px;align-items:flex-start;margin-top:10px}
.j29-jar{position:relative;flex:none;width:78px;height:104px}
.j29-jar .lid{position:absolute;left:16px;right:16px;top:0;height:12px;border-radius:5px;background:linear-gradient(#e4c27a,#a8792d);box-shadow:0 3px 6px #0008;z-index:2}
.j29-jar .glass{position:absolute;left:4px;right:4px;top:9px;bottom:0;border-radius:18px 18px 26px 26px;background:linear-gradient(90deg,#ffffff12,#ffffff03 35%,#ffffff02 70%,#ffffff16);border:1.5px solid #ffffff38;box-shadow:inset 0 -18px 30px #f1d58e14;overflow:hidden}
.j29-jar .glass::before{content:"";position:absolute;left:8px;top:10px;width:5px;height:50px;border-radius:5px;background:linear-gradient(#ffffff44,#fff0)}
.j29-fly{position:absolute;left:var(--x);top:var(--y);width:10px;height:10px;margin:-5px;border-radius:50%;background:radial-gradient(circle,#fffbe0 0 25%,#f1d58e 55%,#f1d58e00 75%);box-shadow:0 0 12px 4px #f1d58e88}
.j29-fly.off{background:radial-gradient(circle,#6b5a4a 0 35%,#0000 70%);box-shadow:none;opacity:.7;animation:none!important}
.j29-fly.f0{animation:j29f0 5s ease-in-out var(--d) infinite}.j29-fly.f1{animation:j29f1 6s ease-in-out var(--d) infinite}.j29-fly.f2{animation:j29f2 4.5s ease-in-out var(--d) infinite}
@keyframes j29f0{25%{transform:translate(12px,-14px)}50%{transform:translate(-6px,-24px);opacity:.6}75%{transform:translate(-14px,-6px)}}
@keyframes j29f1{30%{transform:translate(-12px,10px);opacity:.7}60%{transform:translate(10px,18px)}}
@keyframes j29f2{20%{transform:translate(8px,12px)}55%{transform:translate(14px,-10px);opacity:.65}80%{transform:translate(-8px,-4px)}}
.j29-fly.mini{position:relative;display:inline-block;left:auto;top:auto;margin:0 3px;vertical-align:middle;animation:j29f2 3s ease-in-out infinite}
.j29-plist{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.j29-pi{position:relative;display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:14px;background:#ffffff08;border:1px solid #ffffff10;transition:opacity .6s,transform .6s}
.j29-pi.leaving,.j29-wait.leaving{opacity:.15;transform:translateX(30px)}
.j29-pdot{flex:none;width:22px!important;height:22px;padding:0!important;margin:0!important;border-radius:50%!important;border:2px solid #d8b56a88!important;background:transparent!important;box-shadow:none!important}
.j29-pi.done .j29-pdot{border:none!important;background:radial-gradient(circle,#fffbe0 0 25%,#f1d58e 60%)!important;box-shadow:0 0 12px #f1d58e!important}
.j29-ptxt{flex:1;min-width:0;text-align:left;background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;color:#f9f1e8!important}
.j29-ptxt b{display:block;font-size:13.5px;line-height:1.25}.j29-pi.done .j29-ptxt b{color:#f1d58e}
.j29-ptxt small{display:block;font-size:10.5px;color:#cbbbc0;font-weight:600}
.j29-pdoor{flex:none;max-width:84px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:3px 8px!important;margin:0!important;width:auto!important;border-radius:999px!important;background:#f1d58e!important;color:#32140b!important;border:none!important;font:800 10px Manrope,sans-serif;box-shadow:none!important}
.j29-pleaf{flex:none;width:28px!important;height:28px;padding:0!important;margin:0!important;border-radius:50%!important;background:#ffffff0a!important;border:none!important;box-shadow:none!important;font-size:13px;opacity:.75}
.j29-padd{display:flex;gap:6px;align-items:center}
.j29-padd input{flex:1;min-width:0;height:38px;margin:0;border-radius:12px;border:1px dashed #d8b56a66;background:#ffffff06;color:#f9f1e8;padding:0 10px;font-size:13.5px}
.j29-padd select{flex:none;max-width:86px;height:38px;margin:0;border-radius:12px;border:1px solid #d8b56a44;background:#1d0b14;color:#f1d58e;font-size:11px;padding:0 4px}
.j29-padd button{flex:none;width:38px!important;height:38px;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important;font-weight:800;font-size:18px;box-shadow:none!important}
.j29-pnote{margin:10px 2px 0;text-align:center;font:italic 15.5px/1.3 'Cormorant Garamond',Georgia,serif;color:#f1d58e}
.j29-leaf{position:absolute;right:20px;top:50%;font-style:normal;font-size:16px;pointer-events:none;animation:j29leaf 1.1s ease-out var(--d) forwards}
@keyframes j29leaf{to{transform:translate(var(--dx),var(--dy)) rotate(var(--r));opacity:0}}
.j29-wait{position:relative;margin:0 0 10px;padding:14px;border-radius:20px;background:linear-gradient(135deg,#2a1020,#1a0a12);border:1px solid #d8b56a44;text-align:center;transition:opacity .6s,transform .6s}
.j29-wait b{display:block;font:500 20px/1.25 'Cormorant Garamond',Georgia,serif;margin-top:6px}
.j29-wait span{display:block;color:#cbbbc0;font-size:12px;margin-top:4px}
.j29-wbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.j29-wbtns button{height:44px;padding:0 8px!important;margin:0!important;width:100%!important;border-radius:999px!important;font-weight:800;font-size:12.5px;box-shadow:none!important}
.j29-wkeep{background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;border:none!important}
.j29-wkeep:disabled{opacity:.4}
.j29-wgo{background:transparent!important;border:1px solid #d8b56a66!important;color:#f1d58e!important}
.j29-ritfly{margin:14px 0 0;color:#f1d58e;font-weight:700;font-size:14px}
/* la lumière d'une promesse tenue */
.j29L.glowl{background:radial-gradient(circle at 50% 40%,#3a1a10,#14060f 60%,#0b0409)}
.j29-glow{position:relative;min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 24px;overflow:hidden}
.j29-rays{position:absolute;left:50%;top:38%;width:0;height:0}
.j29-rays i{position:absolute;left:-1px;top:0;width:2px;height:150px;transform-origin:50% 0;transform:rotate(var(--r)) scaleY(0);background:linear-gradient(#f1d58e,#0000);animation:j29ray 1.6s ease-out forwards}
@keyframes j29ray{40%{transform:rotate(var(--r)) scaleY(1);opacity:1}100%{transform:rotate(var(--r)) scaleY(1.2);opacity:.25}}
.j29-burst{position:absolute;left:50%;top:38%;width:260px;height:260px;margin:-130px;border-radius:50%;background:radial-gradient(circle,#fff6d0 0 6%,#f1d58e 12%,#f1d58e44 30%,#0000 62%);animation:j29bst 1.4s ease-out both}
.j29-burst.star{background:radial-gradient(circle,#fff 0 6%,#cfd8ff 14%,#8ea2ff44 32%,#0000 62%)}
@keyframes j29bst{from{transform:scale(.1);opacity:0}50%{transform:scale(1.15);opacity:1}to{transform:scale(1)}}
.j29-mote{position:absolute;left:50%;top:38%;width:5px;height:5px;border-radius:50%;background:#f1d58e;box-shadow:0 0 8px #f1d58e;animation:j29mote 1.8s var(--d) ease-out forwards}
@keyframes j29mote{from{transform:rotate(var(--a)) translateY(0);opacity:1}to{transform:rotate(var(--a)) translateY(-150px);opacity:0}}
.j29-glowtxt{position:relative;margin-top:44vh;animation:j29rise .7s .5s ease both}
.j29-gq{font:500 25px/1.3 'Cormorant Garamond',Georgia,serif;margin:8px 0 0}
.j29-gs{font:italic 500 19px/1.35 'Cormorant Garamond',Georgia,serif;color:#f1d58e;margin:8px 0 0}
.j29-gchip{display:inline-block;margin-top:14px;padding:8px 14px;border-radius:999px;background:#ffffff12;border:1px solid #ffffff22;font-weight:800;font-size:13px}
/* liste de vie */
.j29-constel{position:relative;height:170px;margin:12px 0 0;border-radius:22px;overflow:hidden;background:radial-gradient(ellipse at 50% 100%,#2b2f6b66,#0000 70%)}
.j29-constel>i{position:absolute;width:2px;height:2px;border-radius:50%;background:#fff;opacity:.35}
.j29-constel svg{position:absolute;inset:0;width:100%;height:100%}
.j29-constel polyline{fill:none;stroke:#f1d58e99;stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}
.j29-dstar{position:absolute;width:9px!important;height:9px;padding:0!important;margin:-4.5px!important;border-radius:50%!important;border:none!important;background:#8ea2ff55!important;box-shadow:none!important}
.j29-dstar::before{content:"";position:absolute;inset:-12px}
.j29-dstar.lit{width:13px!important;height:13px;margin:-6.5px!important;background:radial-gradient(circle,#fff 0 25%,#f1d58e 60%)!important;box-shadow:0 0 16px #f1d58e!important;animation:j29tw2 3s ease-in-out infinite}
.j29-dlist{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.j29-dream{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:0!important;padding:11px 14px!important;border-radius:18px!important;background:#121638cc!important;border:1px solid #8ea2ff33!important;color:#f9f1e8!important;text-align:left;box-shadow:none!important}
.j29-dream .st{flex:none;width:28px;text-align:center;font-size:20px;color:#8ea2ff77}
.j29-dream.done{background:linear-gradient(135deg,#2a2a5e,#3a2a3a)!important;border-color:#f1d58e88!important}
.j29-dream.done .st{color:#fff4cf;text-shadow:0 0 12px #f1d58e,0 0 24px #f1d58e}
.j29-dream b{display:block;font-size:14.5px}.j29-dream small{display:block;color:#aab4e8;font-size:11.5px;font-weight:600}.j29-dream.done small{color:#f1d58e}
.j29-dthumb{margin-left:auto;flex:none;width:40px;height:40px;border-radius:10px;object-fit:cover;box-shadow:0 0 0 2px #f1d58e;background:#2a2a5e}
.j29-dadd{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.j29-dadd input{flex:1 1 180px;min-width:0;height:46px;margin:0;border-radius:14px;border:1px dashed #8ea2ff66;background:#12163888;color:#f9f1e8;padding:0 12px;font-size:14px}
.j29-dadd select{height:46px;margin:0;border-radius:14px;border:1px solid #8ea2ff44;background:#121638;color:#cfd8ff;font-size:12px;max-width:130px}
.j29-dadd button{height:46px;padding:0 14px!important;margin:0!important;width:auto!important;border-radius:999px!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#c99a4e)!important;color:#32140b!important;font-weight:800;box-shadow:none!important}
.j29-bigstar{font-size:84px;line-height:1;text-align:center;margin:30px 0 12px;color:#fff4cf;text-shadow:0 0 30px #f1d58e,0 0 60px #f1d58e}
.j29-bigstar.pale{color:#8ea2ff88;text-shadow:0 0 20px #8ea2ff44}
.j29-bigstar.ignite{position:absolute;left:50%;top:38%;margin:-46px 0 0 -40px;animation:j29ign 1.6s ease-out both}
@keyframes j29ign{0%{color:#8ea2ff66;text-shadow:none;transform:scale(.6)}50%{transform:scale(1.35)}100%{transform:scale(1)}}
.j29-dphoto{display:block;width:100%;max-height:46vh;object-fit:cover;border-radius:20px;margin-top:18px;box-shadow:0 0 0 2px #f1d58e,0 20px 50px #000a}
.j29-dform{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.j29-dform label{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:16px;background:#121638aa;border:1px solid #8ea2ff33;font-weight:700;font-size:14px;color:#cfd8ff}
.j29-dform input{height:38px;margin:0;border-radius:10px;border:1px solid #8ea2ff44;background:#0b0d24;color:#f9f1e8;padding:0 8px;width:auto}
.j29-dbtn{height:48px;width:100%!important;margin:0!important;border-radius:999px!important;background:#121638aa!important;border:1px solid #8ea2ff55!important;color:#cfd8ff!important;font-weight:800;font-size:14px;box-shadow:none!important}
.j29-dbtn.ok{border-color:#f1d58e!important;color:#f1d58e!important}.j29-dbtn.rec{border-color:#ff6b7d!important;color:#ff8a9a!important;animation:j29pulse 1.2s infinite}
.j29-dreamstar{position:absolute;transform:translate(-50%,-50%);width:auto!important;padding:0!important;margin:0!important;background:none!important;border:none!important;box-shadow:none!important;font-size:18px;color:#fff4cf;text-shadow:0 0 10px #f1d58e,0 0 20px #f1d58e;animation:j29tw2 3s ease-in-out infinite;z-index:2}
.j29-padd{flex-wrap:wrap}
.j29-padd input{flex:1 1 100%}
.j29-padd select{flex:1 1 auto;max-width:none}
/* V29.3 — La photo qui raconte : la photo entière, sans recadrage */
.sv27-bg img{filter:blur(26px) brightness(.42) saturate(1.2);transform:scale(1.15);animation:none!important}
.sv27-full{position:absolute;left:10px;right:10px;top:64px;bottom:var(--svb,240px);display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1}
.sv27-full img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:18px;box-shadow:0 20px 60px #000c;animation:sv27in .7s ease both}
@keyframes sv27in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.sv27-bar,.sv27-bottom{z-index:2}
#lock26{z-index:2147483600!important}
/* iPhone : un champ en dessous de 16px fait zoomer l'écran au toucher */
.j29-padd input,.j29-padd select,.j29-dadd input,.j29-dadd select,.j29-chips input,.j29-dform input,.j29-input{font-size:16px!important}
/* V29.4 — finitions de l'audit */
body[data-door-kind="family"] #tresors button.t26[onclick^="doublePage"],body[data-door-kind="friend"] #tresors button.t26[onclick^="doublePage"]{display:none!important}
#tresors .fam26.a29-empty{display:none!important}
.globe-x{position:absolute!important;right:18px;top:calc(env(safe-area-inset-top) + 16px)}
/* ===== V30 — L'accueil public ===== */
html.w30-lock,html.w30-lock body{overflow:hidden}
#w30{position:fixed;inset:0;z-index:2147481000;overflow-y:auto;overflow-x:hidden;color:#f9f1e8;text-align:center;background:radial-gradient(circle at 50% 18%,#6e0d22,#2a0710 48%,#0d0407 85%);animation:w30in .4s ease;-webkit-overflow-scrolling:touch}
#w30.peek{background:#0d0407}
@keyframes w30in{from{opacity:0}to{opacity:1}}
#w30>div{max-width:480px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 18px max(26px,env(safe-area-inset-bottom));min-height:100%;position:relative}
.w30-k{display:block;font-size:10.5px;letter-spacing:.24em;font-weight:800;color:#d8b56a}
.w30-k.soft{color:#fff9;margin-top:6px}
.w30-h1{margin:8px 0 0;font:500 33px/1.12 Georgia,serif;color:#f9f1e8}.w30-h1 em{color:#f1d58e}.w30-h1.sm{font-size:29px}
.w30-sub{color:#d9c9cd;font-size:14px;line-height:1.5;margin:8px 10px 0}
.w30-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;position:relative;z-index:4}
.w30-pill{display:inline-flex;align-items:center;height:40px;padding:0 14px!important;margin:0!important;width:auto!important;border-radius:999px!important;background:#12060acc!important;border:1px solid #d8b56a66!important;color:#d8b56a!important;font-weight:800;font-size:13px;box-shadow:none!important;white-space:nowrap}
.w30-go{display:flex!important;align-items:center;justify-content:center;width:100%!important;height:56px;margin:16px 0 0!important;border-radius:999px!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;font-weight:800;font-size:16px;box-shadow:0 12px 34px #d8b56a44!important}
.w30-go:disabled{opacity:.6}
.w30-ghost{display:flex!important;align-items:center;justify-content:center;width:100%!important;height:50px;margin:10px 0 0!important;border-radius:999px!important;background:transparent!important;border:1px solid #d8b56a66!important;color:#f1d58e!important;font-weight:800;font-size:14.5px;box-shadow:none!important}
.w30-links,.w30-login{margin:14px 0 0;font-size:13.5px;color:#cbbbc0}
.w30-links button,.w30-login button{background:none!important;border:none!important;box-shadow:none!important;padding:0!important;margin:0!important;width:auto!important;color:#f1d58e!important;font-weight:800;text-decoration:underline;font-size:13.5px}
/* accueil */
.w30-logo{position:relative;width:104px;height:104px;margin:22px auto 14px}
.w30-logo img{position:relative;width:100%;height:100%;border-radius:26px;animation:acc27beat 2.4s ease-in-out infinite;box-shadow:0 18px 50px #0009}
.w30-halo{position:absolute;inset:-40px;border-radius:50%;background:radial-gradient(circle,#f1d58e33,#0000 65%);animation:w30pulse 2.4s ease-in-out infinite}
@keyframes w30pulse{12%{transform:scale(1.12);opacity:1}60%{transform:scale(1);opacity:.6}}
.w30-voice{display:inline-flex!important;align-items:center;gap:10px;margin:14px auto 0!important;padding:7px 14px 7px 7px!important;width:auto!important;border-radius:999px!important;background:#ffffff10!important;border:1px solid #d8b56a55!important;color:#f1d58e!important;font-size:12.5px;font-weight:700;box-shadow:none!important}
.w30-voice i{flex:none;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#f1d58e,#bd8b3e);display:flex;align-items:center;justify-content:center;color:#32140b;font-style:normal;font-size:12px}
.w30-voice.small{margin-top:12px!important}
.w30-wave{display:flex;gap:2px;align-items:center;height:28px}
.w30-wave s{display:block;width:3px;border-radius:2px;background:#f1d58e;text-decoration:none;transform-origin:center}
.w30-wave.on s,.w30-voice.on .w30-wave s{animation:w30w .8s ease-in-out infinite alternate}
@keyframes w30w{from{transform:scaleY(.35)}to{transform:scaleY(1)}}
.w30-wave.big{flex:1;height:44px;gap:3px}.w30-wave.big s{width:4px}
.w30-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px;margin:18px 0 0}
.w30-door{position:relative;display:flex!important;flex-direction:column;align-items:center;justify-content:flex-end;height:148px;width:100%!important;margin:0!important;padding:0 4px 12px!important;border-radius:60px 60px 14px 14px!important;background:linear-gradient(170deg,#3a0f1c,#16070c)!important;border:1.5px solid #d8b56a66!important;color:#f9f1e8!important;box-shadow:none!important;overflow:hidden;animation:p27rise2 .6s var(--d) both}
.w30-door .em{position:absolute;top:20px;font-size:26px}
.w30-door .hole{position:absolute;top:62px;width:16px;height:28px;animation:w30shine 2.6s ease-in-out infinite;animation-delay:var(--d)}
.w30-door .hole::before{content:"";position:absolute;left:2px;top:0;width:12px;height:12px;border-radius:50%;background:#ffe9a8;box-shadow:0 0 16px 6px #f1d58e99}
.w30-door .hole::after{content:"";position:absolute;left:5px;top:9px;width:6px;height:16px;background:#ffe9a8;clip-path:polygon(20% 0,80% 0,100% 100%,0 100%);box-shadow:0 0 12px #f1d58e}
@keyframes w30shine{50%{filter:brightness(1.5) drop-shadow(0 0 8px #fff3c0)}}
.w30-door b{font-size:13px;font-weight:800}.w30-door small{font-size:10px;color:#cbbbc0;font-weight:700}
.w30-door.free{border-color:#f1d58e!important;box-shadow:0 0 26px #f1d58e44!important}
.w30-door .tag{position:absolute;bottom:44px;font-size:9px;font-weight:800;color:#32140b;background:#f1d58e;border-radius:999px;padding:2px 7px}
.w30-door:active{transform:scale(.97)}
.w30-hint{margin:12px 0 0;font-size:12.5px;color:#f1d58e;font-weight:700}
/* l'histoire */
.w30-story{text-align:left}
.w30-story .w30-k{margin-top:10vh}
.w30-words{font:500 24px/1.42 Georgia,serif;margin:16px 0 0}
.w30-words span{color:#ffffff38;transition:color .35s,text-shadow .35s}
.w30-words span.on{color:#f9f1e8}.w30-words span.now{text-shadow:0 0 14px #f1d58e}
.w30-words.fin{font-style:italic;font-size:20px;margin-top:18px}.w30-words.fin span.on{color:#f1d58e}
.w30-player{display:flex;align-items:center;gap:14px;margin-top:26px;padding:14px;border-radius:24px;background:#1a0a0fe6;border:1px solid #d8b56a55}
.w30-play{flex:none;width:54px!important;height:54px;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;font-weight:800;font-size:16px;box-shadow:none!important}
/* la serrure */
.w30-peek{padding:0!important;max-width:none!important;height:100vh;height:100dvh;min-height:640px;overflow:hidden}
.w30-peek>.w30-top{position:absolute;top:max(16px,env(safe-area-inset-top));left:16px;right:16px}
.w30-scene{position:absolute;left:0;right:0;top:0;height:min(500px,62vh);background:radial-gradient(circle at 50% 30%,#4a1426,#14060a 70%);display:flex;flex-direction:column;align-items:center;padding-top:150px;gap:10px;animation:w30zoom 1.4s cubic-bezier(.2,.8,.2,1) both}
@keyframes w30zoom{from{transform:scale(1.25);filter:blur(3px)}to{transform:none;filter:none}}
.w30-wood{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:2;animation:w30door .9s ease both}
@keyframes w30door{from{opacity:0;transform:scale(1.4)}to{opacity:1;transform:none}}
.w30-glow{position:absolute;left:50%;top:236px;width:220px;height:220px;margin:-110px;border-radius:50%;box-shadow:0 0 70px 24px #f1d58e44;z-index:2;pointer-events:none;animation:w30pulse 3s ease-in-out infinite}
.w30-text{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:40px 20px max(22px,env(safe-area-inset-bottom));background:linear-gradient(#0d040700,#0d0407 26%);max-width:480px;margin:0 auto}
.w30-text h2{margin:0;font:500 26px/1.2 Georgia,serif}.w30-text h2 em{color:#f1d58e}
.w30-text>p{margin:10px 0 0;color:#d9c9cd;font-size:13.5px;line-height:1.5}
.w30-said{display:none;margin:10px 0 0!important;font:italic 16px/1.4 Georgia,serif!important}
.w30-said.show{display:block}.w30-said span{color:#ffffff30;transition:color .3s}.w30-said span.on{color:#f1d58e}
.w30-price{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:12px}
.w30-price b{font:700 30px Georgia,serif;color:#f1d58e}.w30-price span{font-size:12px;color:#cbbbc0;text-align:left;line-height:1.35}.w30-price em{color:#f1d58e;font-style:normal;font-weight:800}
.w30-paper{width:200px;border-radius:14px;background:linear-gradient(#fbf3e2,#f1e3c6);color:#2a2160;padding:14px;font:italic 18px/1.3 Georgia,serif;text-align:left;box-shadow:0 0 40px #f1d58e66;animation:p27rise2 .8s .3s both}
.w30-spiral{position:relative;width:240px;height:200px}
.w30-spiral i{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c);animation:w30pop .5s var(--d) both}
@keyframes w30pop{from{transform:scale(0);opacity:0}to{transform:none;opacity:1}}
.w30-mos{display:grid;grid-template-columns:repeat(5,40px);gap:4px}
.w30-mos i{height:40px;border-radius:8px;background:linear-gradient(135deg,var(--c),#2a0c14);animation:w30pop .5s var(--d) both}
.w30-polas{position:relative;width:220px;height:150px}
.w30-polas i{position:absolute;left:calc(50% - 50px);top:10px;width:100px;height:116px;border-radius:6px;background:#fff;padding:6px 6px 24px;transform:rotate(var(--r)) translateX(calc(var(--r)*5));box-shadow:0 10px 24px #0009;animation:w30pop .6s var(--d) both}
.w30-polas i::after{content:"";display:block;width:100%;height:100%;border-radius:3px;background:linear-gradient(135deg,var(--c),#2a0c14)}
.w30-chip{padding:7px 12px;border-radius:999px;background:#f1d58e;color:#32140b;font-weight:800;font-size:12px;animation:p27rise2 .6s 1s both}
.w30-key{font-size:60px;filter:drop-shadow(0 0 22px #f1d58e);animation:w30swing 3s ease-in-out infinite}
@keyframes w30swing{50%{transform:rotate(-14deg)}}
.w30-bubbles{display:flex;flex-direction:column;gap:6px;width:230px}
.w30-bubbles span{align-self:flex-start;padding:7px 11px;border-radius:14px 14px 14px 4px;background:#ffffff1c;font-size:12.5px;font-weight:600;animation:p27rise2 .5s var(--d) both}
.w30-bubbles span.r{align-self:flex-end;border-radius:14px 14px 4px 14px;background:#f1d58e;color:#32140b}
.w30-paws{position:relative;width:240px;height:170px}
.w30-paws i{position:absolute;font-style:normal;font-size:20px;animation:w30pop .4s var(--d) both}
/* prix */
.w30-prices .w30-k{margin-top:4px}
.w30-plans{display:flex;flex-direction:column;gap:8px;margin-top:14px;text-align:left}
.w30-plan{display:flex!important;align-items:center;gap:12px;width:100%!important;margin:0!important;padding:11px 14px!important;border-radius:18px!important;background:#1d0b11!important;border:1px solid #d8b56a33!important;color:#f9f1e8!important;box-shadow:none!important;text-align:left}
.w30-plan .ic{font-size:22px;width:30px;text-align:center;flex:none}.w30-plan b{display:block;font-size:14.5px}.w30-plan small{display:block;font-size:11.5px;color:#cbbbc0;font-weight:600}
.w30-plan .pr{margin-left:auto;text-align:right;font:700 20px Georgia,serif;color:#f1d58e;white-space:nowrap}.w30-plan .pr small{font:700 10px Manrope,sans-serif;color:#cbbbc0}
.w30-plan.best{background:linear-gradient(135deg,#3a1520,#1d0b11)!important;border-color:#f1d58e!important;box-shadow:0 0 24px #f1d58e33!important}
.w30-plan .rib{display:inline-block;font-style:normal;font-size:9.5px;font-weight:800;color:#32140b;background:#f1d58e;border-radius:999px;padding:2px 8px;margin-bottom:3px}
.w30-note{margin:14px 4px 0;font-size:12.5px;color:#cbbbc0;line-height:1.5}.w30-note b{color:#f1d58e}
/* compte */
.w30-lock{font-size:46px;margin-top:6vh;filter:drop-shadow(0 0 18px #f1d58e88)}
.w30-form{display:flex;flex-direction:column;gap:12px;margin-top:18px;text-align:left}
.w30-form input{width:100%;height:54px;margin:0;border-radius:16px;border:1px solid #ffffff26;background:#12060a;color:#f9f1e8;padding:0 16px;font-size:16px}
.w30-form input:focus{border-color:#d8b56a;outline:none}
.w30-err{min-height:16px;margin:0;color:#ff8a9a;font-size:13px}
.w30-safe{padding:12px 14px;border-radius:16px;background:#1c2a1f88;border:1px solid #3c7a5299;color:#cfe9d6;font-size:12.5px;line-height:1.45}
.w30-back{margin-top:10px!important}
@media (max-height:760px){.w30-text>p:not(.w30-said){display:none}.w30-text h2{font-size:22px}.w30-text{padding-top:24px}.w30-said{font-size:14.5px!important}.w30-price{margin-top:8px}.w30-text .w30-go{height:52px;margin-top:10px!important}}
/* V30.1 — « Tout a commencé par un seul mot » */
.w30-lines{margin-top:6vh}
.w30-line{font:500 23px/1.38 Georgia,serif;margin:0}
.w30-line.gap{margin-bottom:18px}
.w30-line.em{font-style:italic;font-size:26px}
.w30-line span{color:#ffffff30;transition:color .4s,text-shadow .4s}
.w30-line span.on{color:#f9f1e8}.w30-line.em span.on{color:#f1d58e}
.w30-line span.now{text-shadow:0 0 16px #f1d58e}
.w30-first{max-height:0;opacity:0;overflow:hidden;transition:max-height .8s ease,opacity .8s ease,margin .8s;margin-top:0}
.w30-first.show{max-height:200px;opacity:1;margin-top:22px}
.w30-first label{display:block;font:italic 17px Georgia,serif;color:#f1d58e;margin-bottom:10px}
.w30-wordrow{display:flex;gap:8px}
.w30-wordrow input{flex:1;min-width:0;height:58px;margin:0;border-radius:18px;border:1.5px solid #d8b56a99;background:#12060a;color:#fff4cf;padding:0 18px;font:500 22px Georgia,serif;box-shadow:0 0 0 0 #f1d58e55;animation:w30glowin 2.2s ease-in-out infinite}
.w30-wordrow input:focus{outline:none;border-color:#f1d58e}
@keyframes w30glowin{50%{box-shadow:0 0 22px 2px #f1d58e44}}
.w30-wordrow button{flex:none;width:58px!important;height:58px;padding:0!important;margin:0!important;border-radius:50%!important;border:none!important;background:linear-gradient(135deg,#f1d58e,#bd8b3e)!important;color:#32140b!important;font-size:22px;box-shadow:0 8px 24px #d8b56a55!important}
.w30-player{transition:opacity .5s}
.w30-keep{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;position:relative}
.w30-flyword{position:absolute;top:30%;left:0;right:0;font:italic 500 44px Georgia,serif;color:#fff4cf;text-shadow:0 0 30px #f1d58e,0 0 60px #f1d58e;animation:w30fly 2.4s cubic-bezier(.5,0,.3,1) forwards;z-index:3}
@keyframes w30fly{0%{transform:scale(.6);opacity:0}25%{transform:scale(1.15);opacity:1}55%{transform:scale(1);opacity:1}100%{transform:translateY(150px) scale(.15);opacity:0}}
.w30-smalldoor{position:relative;width:90px;height:120px;margin-top:20vh;border-radius:45px 45px 8px 8px;background:linear-gradient(170deg,#3a0f1c,#16070c);border:2px solid #f1d58e;box-shadow:0 0 30px #f1d58e55;perspective:400px;animation:p27rise2 .6s both}
.w30-smalldoor .leaf{position:absolute;inset:4px;border-radius:41px 41px 6px 6px;background:linear-gradient(170deg,#5a1424,#2a0a12);transform-origin:left center;animation:w30shut 2.6s ease forwards}
@keyframes w30shut{0%,40%{transform:rotateY(-75deg)}75%{transform:rotateY(-75deg)}100%{transform:rotateY(0)}}
.w30-smalldoor .hole{position:absolute;left:50%;top:52px;width:10px;height:18px;margin-left:-5px;border-radius:5px 5px 2px 2px;background:#ffe9a8;box-shadow:0 0 14px #f1d58e;opacity:0;animation:w30pop .4s 2.5s forwards}
.w30-kept{opacity:0;animation:p27rise2 .8s 2.7s forwards;width:100%;margin-top:22px}
.w30-keep{justify-content:center;padding-top:40px!important}
.w30-smalldoor{margin-top:120px}
.w30-flyword{top:calc(50% - 300px)}
@keyframes w30rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.w30-kept{animation:w30rise .8s 2.7s forwards!important}

/* ===== V31 — l'histoire racontée, version cinéma ===== */
.w31-cv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}
.w31-mic{display:flex;flex-direction:column;align-items:center;min-height:100vh;min-height:100dvh}
.w31-mic>*{position:relative;z-index:1}
.w31-mic .w30-top{align-self:stretch}
.w31-micwrap{position:relative;width:200px;height:220px;margin:6vh auto 6px;display:flex;align-items:center;justify-content:center}
.w31-micsvg{width:96px;filter:drop-shadow(0 0 26px #f1d58e88) drop-shadow(0 18px 30px #000a);animation:w31float 4s ease-in-out infinite}
.w31-micwrap .ring{position:absolute;left:50%;top:42%;width:120px;height:120px;margin:-60px;border-radius:50%;border:1.5px solid #f1d58e;opacity:0;animation:w31ring 3.2s ease-out infinite}
.w31-micwrap .r2{animation-delay:1.05s}.w31-micwrap .r3{animation-delay:2.1s}
@keyframes w31ring{0%{transform:scale(.6);opacity:.7}100%{transform:scale(2.1);opacity:0}}
@keyframes w31float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.w31-mic .w30-h1{font-size:34px;margin-top:10px}
.w31-playbig{margin:30px auto 0;display:flex;align-items:center;gap:14px;height:66px;padding:0 26px 0 10px;border-radius:999px;border:0;background:linear-gradient(135deg,#f6dc95,#bd8b3e);color:#32140b;font:800 17px Manrope,sans-serif;box-shadow:0 14px 40px #d8b56a55,0 0 0 6px #f1d58e22;animation:w31beat 2.4s ease-in-out infinite}
.w31-playbig i{width:48px;height:48px;border-radius:50%;background:#32140b;color:#f1d58e;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:18px;padding-left:3px}
.w31-playbig b{font-weight:700;opacity:.7;font-size:14px}
@keyframes w31beat{0%,100%{box-shadow:0 14px 40px #d8b56a55,0 0 0 6px #f1d58e22}50%{box-shadow:0 14px 40px #d8b56a77,0 0 0 14px #f1d58e11}}
.w31-sound{margin-top:16px;color:#cbbbc0;font-size:13px}

#w30>.w31-film{position:fixed;inset:0;max-width:none;padding:0;overflow:hidden;transition:background 1.6s}
.w31-film{background:radial-gradient(circle at 50% 36%,#6e0d22,#2a0710 50%,#0a0306 88%)}
.w31-film.a4:not(.a5){background:radial-gradient(circle at 50% 36%,#2a2428,#141014 55%,#050405 90%)}
.w31-film.a5{background:radial-gradient(circle at 50% 36%,#7a1426,#2e0811 50%,#0a0306 88%)}
.w31-film.a9{background:radial-gradient(circle at 50% 38%,#8a2a1e,#3a0d12 50%,#0a0306 88%)}
.w31-top{position:absolute;z-index:5;left:0;right:0;top:0;display:flex;justify-content:space-between;align-items:center;padding:max(16px,env(safe-area-inset-top)) 16px 0}
.w31-skip{border:0;background:none;color:#cbbbc0;font:700 14px Manrope,sans-serif;padding:10px 4px}
.w31-film.fin .w31-skip{visibility:hidden}

.w31-stage{position:absolute;left:0;right:0;top:9%;height:52%;z-index:1}
.w31-stage>*{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity 1s,transform 1.4s cubic-bezier(.2,.8,.2,1)}
/* 0 · un seul mot */
.m-bub{width:96px;height:52px;border-radius:26px 26px 26px 8px;background:linear-gradient(135deg,#f6dc95,#c8954a);display:flex;align-items:center;justify-content:center;gap:7px;box-shadow:0 0 40px #f1d58e88;transform:translate(-50%,-50%) scale(.3)}
.m-bub s{width:9px;height:9px;border-radius:50%;background:#4a1d0c;animation:w31dot 1.2s infinite}
.m-bub s:nth-child(2){animation-delay:.2s}.m-bub s:nth-child(3){animation-delay:.4s}
@keyframes w31dot{0%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
.a0 .m-bub{opacity:1;transform:translate(-50%,-50%) scale(1.25)}
/* 1 · envoyé */
.a1 .m-bub{opacity:0;transform:translate(110px,-230px) scale(.35) rotate(-14deg);transition:transform 1.8s cubic-bezier(.6,0,.4,1),opacity 1.6s .5s}
.m-sent{font:700 12px Manrope,sans-serif;letter-spacing:.2em;color:#f1d58e;text-transform:uppercase}
.a1 .m-sent{opacity:1;transition-delay:.9s}.a2 .m-sent{opacity:0;transition-delay:0s}
/* 2 · des mois à s'écrire */
.m-cloud{width:300px;height:380px}
.m-cloud i{position:absolute;left:50%;top:50%;width:var(--w);height:22px;border-radius:12px;background:#f9f1e8d9;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(.4);opacity:0;transition:transform 1.3s cubic-bezier(.2,.8,.2,1),opacity .8s}
.m-cloud i.r{background:linear-gradient(135deg,#f6dc95,#c8954a)}
.a2 .m-cloud{opacity:1}
.a2 .m-cloud i{opacity:1;transform:translate(calc(-50% + var(--x)),calc(-50% + var(--y))) scale(1);transition-delay:var(--d)}
.m-moon{width:44px;height:44px;border-radius:50%;box-shadow:inset -12px 4px 0 #f6dc95;top:4%;left:84%}
.a2 .m-moon{opacity:1;animation:w31moon 4s linear infinite}
@keyframes w31moon{0%{transform:translate(-50%,-50%) rotate(0)}50%{box-shadow:inset 0 0 0 30px #f6dc95}100%{transform:translate(-50%,-50%) rotate(0)}}
/* 3 · tout tient dans un téléphone */
.m-phone{width:128px;height:244px;border-radius:26px;border:3px solid #f1d58e;background:#14060acc;box-shadow:0 0 50px #f1d58e44;transform:translate(-50%,-50%) scale(1.25)}
.m-phone .notch{position:absolute;left:50%;top:9px;width:40px;height:10px;margin-left:-20px;border-radius:6px;background:#f1d58e55}
.a3 .m-moon{opacity:0}
.a3 .m-phone{opacity:1;transform:translate(-50%,-50%) scale(1)}
.a3 .m-cloud i{transform:translate(calc(-50% + var(--x)*.38),calc(-50% + var(--y)*.55)) scale(.42);transition-delay:calc(var(--d)*.5)}
/* 4 · ça se perd */
.m-phone .crack{position:absolute;inset:0;opacity:0;background:linear-gradient(62deg,#0000 48%,#fff9 49%,#0000 50%),linear-gradient(-30deg,#0000 55%,#fff7 56%,#0000 57%),linear-gradient(15deg,#0000 30%,#fff6 31%,#0000 32%);border-radius:22px}
.a4 .m-phone{animation:w31fall 2.6s cubic-bezier(.5,0,.75,0) .5s forwards;border-color:#999;box-shadow:none}
.a4 .m-phone .crack{opacity:1;transition:opacity .1s .45s}
.a4 .m-cloud{animation:w31fall 2.6s cubic-bezier(.5,0,.75,0) .5s forwards}
.a4 .m-cloud i{background:#999!important}
@keyframes w31fall{0%{transform:translate(-50%,-50%) rotate(0)}12%{transform:translate(-52%,-50%) rotate(-4deg)}20%{transform:translate(-48%,-50%) rotate(3deg)}100%{transform:translate(-50%,160%) rotate(28deg);opacity:0}}
.a5 .m-phone,.a5 .m-cloud{opacity:0!important;animation:none;transition:none}
/* 5 · une histoire, jamais */
.m-burst{width:60px;height:60px;border-radius:50%;background:radial-gradient(circle,#fff6d8,#f1d58e 40%,#f1d58e00 70%)}
.a5 .m-burst{animation:w31burst 2.6s ease-out forwards}
@keyframes w31burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}15%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(9)}}
/* 6 · un endroit où rien ne s'efface : la porte se dessine */
.m-door{width:150px;height:230px}
.a6 .m-door{opacity:1}
.w31-doorsvg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 10px #f1d58e)}
.w31-doorsvg path{stroke-dasharray:760;stroke-dashoffset:760;transition:stroke-dashoffset 3s ease}
.a6 .w31-doorsvg path{stroke-dashoffset:0}
.m-in{position:absolute;left:8px;right:8px;top:15px;bottom:4px;border-radius:67px 67px 0 0;background:radial-gradient(circle at 50% 55%,#fff1c4,#f1d58e 30%,#c8954a 60%,#5a1d0c);opacity:.18;transition:opacity 1.2s}
/* 7 · le premier mot derrière la porte */
.m-orb{position:absolute;left:50%;top:56%;width:22px;height:22px;margin:-11px;border-radius:50%;background:#fff6d8;box-shadow:0 0 22px 8px #f1d58e;opacity:0;transform:translate(0,-260px) scale(.4);transition:transform 2s cubic-bezier(.2,.8,.2,1),opacity .8s}
.a7 .m-orb{opacity:1;transform:none}
.m-leaf{position:absolute;left:8px;right:8px;top:15px;bottom:4px;border-radius:67px 67px 0 0;background:repeating-linear-gradient(90deg,#3a1a0b 0 18px,#2e1408 18px 36px);box-shadow:inset 0 0 0 2px #f1d58e55;opacity:0;transform-origin:left center;transition:opacity 1.2s 1.8s,transform 2.2s cubic-bezier(.3,.7,.2,1)}
.m-leaf .hole{position:absolute;left:50%;top:56%;width:12px;height:22px;margin:-11px -6px;background:#0a0306;border-radius:6px 6px 2px 2px;transition:background .6s,box-shadow .6s}
.a7 .m-leaf{opacity:1}
/* 8 · la clé */
.m-key{position:absolute;left:50%;top:56%;font-size:38px;margin:-22px;opacity:0;transform:translate(0,200px) rotate(-90deg);transition:transform 1.6s cubic-bezier(.2,.8,.2,1),opacity .6s;filter:drop-shadow(0 0 12px #f1d58e)}
.a8 .m-key{opacity:1;transform:translate(14px,6px) rotate(-90deg);animation:w31turn .6s 1.7s forwards}
@keyframes w31turn{to{transform:translate(14px,6px) rotate(0)}}
.a8 .m-leaf .hole{background:#f1d58e;box-shadow:0 0 18px #f1d58e;transition-delay:2.2s}
.a8 .m-door{animation:w31glow 1.4s 2.2s}
@keyframes w31glow{50%{filter:drop-shadow(0 0 30px #f1d58e)}}
/* 9 · et vous… la porte s'ouvre */
.a9 .m-key{opacity:0;transition:opacity .5s}
.a9 .m-leaf{transform:perspective(500px) rotateY(-82deg);transition-delay:0s;transition-duration:.5s,2.2s}
.a9 .m-in{opacity:1}
.a9 .m-door{transform:translate(-50%,-50%) scale(1.15)}
.a9 .m-orb{transform:scale(1.8)}
.fin .m-door{opacity:1}

/* les phrases, au moment où elles sont dites */
.w31-text{position:absolute;z-index:2;left:24px;right:24px;top:62%;height:130px}
.w31-text p{position:absolute;left:0;right:0;top:0;margin:0;font:500 27px/1.3 Georgia,serif;text-align:center;animation:w31in .9s cubic-bezier(.2,.8,.2,1) both}
.w31-text p.em{font-style:italic;font-size:31px}
.w31-text p.q{font-size:28px}
.w31-text p.gone{animation:w31out .8s ease forwards}
@keyframes w31in{from{opacity:0;transform:translateY(22px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
@keyframes w31out{to{opacity:0;transform:translateY(-26px);filter:blur(6px)}}
.w31-text span{color:#ffffff38;transition:color .35s,text-shadow .35s}
.w31-text span.on{color:#f9f1e8}.w31-text .em span.on,.w31-text .q span.on{color:#f1d58e}
.w31-text span.hot{text-shadow:0 0 18px #f1d58e}
.w31-ctrl{position:absolute;z-index:3;left:22px;right:22px;bottom:max(34px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:14px;transition:opacity .6s}
.w31-pp{width:50px;height:50px;flex:none;border-radius:50%;border:1px solid #d8b56a88;background:#1a0a0fcc;color:#f1d58e;font-size:15px}
.w31-bar{flex:1;height:3px;border-radius:3px;background:#ffffff22;overflow:hidden}
.w31-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#c8954a,#f6dc95);box-shadow:0 0 10px #f1d58e}
.w31-film.paused .w31-stage *{animation-play-state:paused!important}
.w31-end{position:absolute;z-index:4;left:22px;right:22px;bottom:max(26px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;opacity:0;pointer-events:none;transform:translateY(20px);transition:opacity .9s .6s,transform .9s .6s}
.fin .w31-end{opacity:1;pointer-events:auto;transform:none}
.fin .w31-ctrl{opacity:0;pointer-events:none}
.fin .w31-stage{top:6%;height:44%}
.fin .w31-text{top:50%}
.w31-end .w30-go,.w31-end .w30-ghost{margin:0!important;width:100%!important}
.w31-end .w30-go.hide{display:none!important}
.w31-word{display:none!important}.w31-word.show{display:flex!important;animation:w31in .6s both}
.w31-again{border:0;background:none;color:#cbbbc0;font:700 13.5px Manrope,sans-serif;padding:6px}
@media (max-height:700px){.w31-text p{font-size:23px}.w31-text p.em{font-size:26px}.w31-stage{top:8%;height:48%}.w31-text{top:58%}}
/* V31 · « des mois à s'écrire » : une vraie conversation, aux couleurs KADIARY */
.m-chat{width:300px;height:360px;overflow:hidden;-webkit-mask:linear-gradient(#0000,#000 22%,#000 92%,#0000);mask:linear-gradient(#0000,#000 22%,#000 92%,#0000)}
.m-chat .feed{position:absolute;left:0;right:0;top:250px;display:flex;flex-direction:column;gap:6px;padding:0 6px}
.a2 .m-chat .feed{animation:w31feed 5.2s cubic-bezier(.4,0,.3,1) forwards}
@keyframes w31feed{to{transform:translateY(-520px)}}
.m-chat em{align-self:center;font:800 9.5px Manrope,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#d8b56a;background:#1a0a0fcc;border:1px solid #d8b56a44;padding:4px 10px;border-radius:999px;margin:6px 0 2px;opacity:0}
.m-chat i{position:relative;max-width:76%;padding:7px 11px 16px;border-radius:16px;font:500 14px/1.3 Manrope,sans-serif;font-style:normal;text-align:left;opacity:0;transform:translateY(10px) scale(.96)}
.m-chat i.l{align-self:flex-start;background:#f9f1e8;color:#2a0f14;border-bottom-left-radius:5px}
.m-chat i.r{align-self:flex-end;background:linear-gradient(135deg,#f1d58e,#c8954a);color:#32140b;border-bottom-right-radius:5px}
.m-chat i small{position:absolute;right:9px;bottom:3px;font-size:9.5px;opacity:.6;font-weight:700}
.m-chat i small b{color:#7a1426;opacity:1}
.a2 .m-chat i,.a2 .m-chat em{opacity:1;transform:none;transition:opacity .35s var(--d),transform .45s var(--d)}
/* le fil entre dans le téléphone */
.a3 .m-chat{transform:translate(-50%,-50%) scale(.36);-webkit-mask:none;mask:none;height:600px}
.a3 .m-chat .feed{animation:none;transform:translateY(-300px)}
.a4 .m-chat i,.a4 .m-chat em{background:#888!important;color:#444!important;border-color:#666!important}
.m-chat i{left:auto;top:auto;width:auto;height:auto}
.a3 .m-chat i{transform:none}
.a4 .m-chat{animation:w31fallS 2.6s cubic-bezier(.5,0,.75,0) .5s forwards}
@keyframes w31fallS{0%{transform:translate(-50%,-50%) scale(.36)}12%{transform:translate(-52%,-50%) scale(.36) rotate(-4deg)}20%{transform:translate(-48%,-50%) scale(.36) rotate(3deg)}100%{transform:translate(-50%,80%) scale(.36) rotate(28deg);opacity:0}}
.w31-stage{pointer-events:none}
@media (max-height:700px){.a2:not(.a3) .m-chat{transform:translate(-50%,-50%) scale(.78)}}

/* ===== V32 — notifications ===== */
.n32{display:flex;align-items:center;gap:12px;margin:14px 0 4px;padding:14px;border-radius:20px;background:linear-gradient(135deg,#2a0c14,#1a080d);border:1px solid #d8b56a55;text-align:left;color:#f9f1e8}
.n32 b{display:block;font-size:15px;color:#f1d58e}
.n32 small{display:block;font-size:12.5px;line-height:1.4;color:#cbbbc0;margin-top:2px}
.n32>div{flex:1;min-width:0}
.n32-bell{width:44px;height:44px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:21px;background:#f1d58e1f;border:1px solid #d8b56a66}
.n32.off .n32-bell,.n32.ios-install .n32-bell{animation:n32ring 2.6s ease-in-out infinite}
@keyframes n32ring{0%,70%,100%{transform:rotate(0)}75%{transform:rotate(14deg)}80%{transform:rotate(-12deg)}85%{transform:rotate(8deg)}90%{transform:rotate(-4deg)}}
.n32-go{flex:none;height:42px;padding:0 16px;border-radius:999px;border:0;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;font-weight:800;font-size:14px}
.n32-off{flex:none;border:1px solid #d8b56a55;background:none;color:#cbbbc0;border-radius:999px;height:36px;padding:0 12px;font-size:12.5px;font-weight:700}
.n32.on{background:#14231a;border-color:#3c7a5266}.n32.on b{color:#bfe6c9}
.n32-steps{text-align:left;margin:14px 0;padding-left:22px;line-height:1.9}
.n32-ic{display:inline-block;padding:0 6px;border:1px solid #d8b56a66;border-radius:6px}

/* ===== V33.1 — barre de progression de l'envoi des photos ===== */
.up331{position:fixed;inset:0;z-index:2147482000;display:flex;align-items:center;justify-content:center;padding:24px;background:#0d0407cc;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.up331-card{width:100%;max-width:360px;padding:26px 22px;border-radius:26px;background:linear-gradient(160deg,#2a0c14,#14060a);border:1px solid #d8b56a66;text-align:center;color:#f9f1e8;box-shadow:0 20px 60px #000a}
.up331-card small{display:block;letter-spacing:.2em;font-weight:800;font-size:11px}
.up331-card b{display:block;font:500 30px Georgia,serif;margin:12px 0 16px}
.up331-bar{height:10px;border-radius:10px;background:#ffffff1a;overflow:hidden}
.up331-bar i{display:block;height:100%;width:0;border-radius:10px;background:linear-gradient(90deg,#c8954a,#f6dc95);box-shadow:0 0 14px #f1d58e;transition:width .35s ease}
.up331-card p{margin:14px 0 0;color:#cbbbc0;font-size:13.5px;line-height:1.45}
.up331-card button{margin-top:18px;width:100%;height:52px;border:0;border-radius:999px;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;font-weight:800;font-size:16px}
.up331-star{display:block;font-size:34px;color:#f1d58e}

/* ===== V34 — police Caveat hébergée avec le site (plus aucun appel à Google Fonts) ===== */
@font-face{font-family:'Caveat';font-style:normal;font-weight:500;font-display:swap;src:url(vendor/fonts/caveat-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Caveat';font-style:normal;font-weight:600;font-display:swap;src:url(vendor/fonts/caveat-latin-600-normal.woff2) format('woff2')}
/* V34 — liens légaux */
.l34-foot{margin:26px auto 8px;text-align:center;font-size:12.5px;line-height:1.9;color:#bfaeb3}
.l34-foot a{color:#d9c9cd;text-decoration:underline;text-underline-offset:2px}
.l34-foot span{letter-spacing:.12em;font-size:11px;text-transform:uppercase;color:#9f8f94}.l34-foot b{color:#f1d58e}
.l34-ok{margin:10px 4px 0;font-size:12.5px;line-height:1.5;color:#bfaeb3;text-align:center}
.l34-ok a{color:#f1d58e}
/* V34.1 — chargement en cours */
.ld341-spin{display:block;width:46px;height:46px;margin:0 auto 14px;border-radius:50%;border:3px solid #f1d58e33;border-top-color:#f1d58e;animation:ld341 0.9s linear infinite}
@keyframes ld341{to{transform:rotate(360deg)}}

/* ===== V34.2 — accueil : histoire cachée pour l'instant, connexion rapide ===== */
#w30 .w30-voice:not(.small){display:none!important}
.wk342-top{display:flex;justify-content:flex-end;margin:-4px 0 -30px}
.wk342-doors{display:flex;justify-content:center;gap:9px;margin:4px 0 14px}
.wk342-doors span{position:relative;width:38px;height:48px;border-radius:19px 19px 6px 6px;border:1.5px solid #d8b56a55;background:linear-gradient(#2a0c14,#14060a);display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(8px);animation:wk342in .6s var(--d) forwards}
.wk342-doors i{font-style:normal;font-size:16px;filter:grayscale(1) brightness(.7);animation:wk342on .5s calc(var(--d) + .5s) forwards}
.wk342-doors b{position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 #f1d58e00;animation:wk342glow .8s calc(var(--d) + .5s) forwards}
@keyframes wk342in{to{opacity:1;transform:none}}
@keyframes wk342on{to{filter:none}}
@keyframes wk342glow{50%{box-shadow:0 0 22px #f1d58e88}to{box-shadow:0 0 10px #f1d58e33;border:1px solid #f1d58e}}
/* ===== V34.2 — changer la date ===== */
.pd342-ph{margin:10px auto 6px;width:150px;height:150px;border-radius:18px;overflow:hidden;background:#14060a;display:flex;align-items:center;justify-content:center;border:1px solid #d8b56a44}
.pd342-ph img{width:100%;height:100%;object-fit:cover}.pd342-vid{font-size:40px;color:#f1d58e}
.pd342-now{text-align:center}.pd342-now small{color:#bfaeb3}
.pd342-err{color:#ff9b9b;min-height:1em;text-align:center;margin:6px 0}
/* ===== V34.6 — mot de passe oublié ===== */
.a346-forgot{margin-top:4px!important;background:none!important;border:0!important;color:#d9c9cd!important;text-decoration:underline;font-size:14px!important;box-shadow:none!important}
.a346-sent{font-size:40px;text-align:center;margin:6px 0}
.a346{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:22px;background:radial-gradient(circle at 50% 20%,#6e0d22,#2a0710 50%,#0d0407 88%);color:#f9f1e8;text-align:center}
.a346-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:12px}
.a346-logo{width:86px;height:86px;border-radius:22px;margin:0 auto 6px;box-shadow:0 0 40px #e3262f55}
.a346-card small{letter-spacing:.2em;font-weight:800;font-size:11px}
.a346-card h1{font:500 30px/1.15 Georgia,serif;margin:4px 0 8px}
.a346-card input{height:54px;border-radius:16px;border:1px solid #d8b56a55;background:#12060a;color:#f9f1e8;padding:0 16px;font-size:16px}
.a346-card button{height:56px;border-radius:999px;border:0;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;font-weight:800;font-size:16px}
.a346-err{color:#ff9b9b;min-height:1em;margin:0;font-size:14px}.a346-ok{font-size:40px;color:#f1d58e}
/* V34.6 — la page de connexion défile si l'écran est petit (tous les boutons restent accessibles) */
#accessGate{overflow-y:auto!important;-webkit-overflow-scrolling:touch}
#accessGate:not(.hidden){display:flex!important;flex-direction:column}
#accessGate .gate-card{margin:auto!important;flex:none}   /* centré quand il y a la place, jamais coupé en haut quand l'écran est petit */
#accessGate .wk342-doors{margin:0 0 8px}

/* ===== V35 — activer une porte, codes d'accès, espace créateur ===== */
.pw35{position:fixed;inset:0;z-index:2147482500;overflow-y:auto;-webkit-overflow-scrolling:touch;background:radial-gradient(circle at 50% 18%,#6e0d22,#2a0710 50%,#0d0407 88%);color:#f9f1e8;text-align:center;animation:w30in .35s ease}
.pw35-in{max-width:460px;margin:0 auto;padding:max(16px,env(safe-area-inset-top)) 18px max(28px,env(safe-area-inset-bottom))}
.pw35-top{display:flex;justify-content:space-between;gap:8px}
.pw35-pill{height:40px;padding:0 15px;border-radius:999px;border:1px solid #d8b56a66;color:#f1d58e;font-weight:800;font-size:13.5px;background:#12060acc}
.pw35-door{width:92px;height:118px;margin:16px auto 4px;border-radius:46px 46px 10px 10px;background:linear-gradient(#5a1020,#2a0812);border:2px solid #f1d58e;box-shadow:0 0 40px #f1d58e55;display:flex;align-items:center;justify-content:center;font-size:40px}
.pw35-door.small{width:80px;height:100px;font-size:34px}
.pw35-k{display:block;letter-spacing:.22em;font-weight:800;font-size:11px;color:#d8b56a;margin-top:14px}
.pw35-h{font:500 30px/1.15 Georgia,serif;margin:8px 0 6px}.pw35-h em{color:#f1d58e}
.pw35-sub{color:#d9c9cd;font-size:14px;line-height:1.5;margin:4px 6px}.pw35-sub a{color:#f1d58e}
.pw35-opt{width:100%;margin-top:12px;padding:15px;border-radius:22px;background:#1d0a10;border:1px solid #d8b56a55;color:#f9f1e8;text-align:left;display:flex;align-items:center;gap:12px;font:inherit}
.pw35-opt.sel{border:2px solid #f1d58e;box-shadow:0 0 24px #f1d58e33}
.pw35-opt .r{width:22px;height:22px;border-radius:50%;border:2px solid #d8b56a;flex:none;position:relative}
.pw35-opt.sel .r::after{content:"";position:absolute;inset:4px;border-radius:50%;background:#f1d58e}
.pw35-opt .t{flex:1;min-width:0}.pw35-opt b{display:block;font-size:15.5px}.pw35-opt small{color:#cbbbc0;font-size:12.5px}
.pw35-opt .p{text-align:right;font:600 22px Georgia,serif;color:#f1d58e;white-space:nowrap}.pw35-opt .p small{display:block;font:700 10.5px sans-serif;color:#cbbbc0}
.pw35-tag{display:inline-block;margin-left:4px;padding:2px 7px;border-radius:999px;background:#f1d58e;color:#32140b;font-size:10px;font-weight:800;font-style:normal;vertical-align:2px}
.pw35-law{display:flex;gap:10px;align-items:flex-start;text-align:left;margin:14px 2px 0;font-size:12.5px;line-height:1.45;color:#d9c9cd}
.pw35-law input{width:20px;height:20px;flex:none;margin-top:1px;accent-color:#f1d58e}.pw35-law a{color:#f1d58e}
.pw35-go{width:100%;margin-top:14px;height:56px;border:0;border-radius:999px;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;font-weight:800;font-size:16px;box-shadow:0 12px 34px #d8b56a44}
.pw35-go:disabled{opacity:.45;box-shadow:none}
.pw35-secure{margin-top:8px;font-size:11.5px;color:#bfaeb3}
.pw35-err{color:#ff9b9b;min-height:1em;font-size:13.5px;margin:8px 0 0}
.pw35-or{margin:14px 0 8px;font-size:12px;color:#9f8f94;letter-spacing:.15em}
.pw35-ghost{width:100%;height:50px;border-radius:999px;border:1px solid #d8b56a66;background:none;color:#f1d58e;font-weight:800;font-size:14.5px}
.pw35-code{display:flex;gap:8px;margin-top:22px}
.pw35-code input{flex:1;min-width:0;height:54px;border-radius:16px;border:1px solid #d8b56a77;background:#12060a;color:#f9f1e8;padding:0 14px;font:600 17px ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase}
.pw35-code button{width:54px;height:54px;border-radius:50%;border:0;background:linear-gradient(135deg,#f1d58e,#bd8b3e);color:#32140b;font-weight:900;font-size:18px}
.pw35-hint{font-size:12.5px;color:#bfaeb3;margin-top:10px}
.pw35-burst{position:relative;width:170px;height:170px;margin:34px auto 0}
.pw35-burst .d{position:absolute;inset:30px 40px 10px;border-radius:46px 46px 10px 10px;background:radial-gradient(circle at 50% 60%,#fff1c4,#f1d58e 40%,#c8954a);box-shadow:0 0 70px #f1d58eaa;animation:pw35glow 2.4s ease-in-out infinite}
.pw35-burst i{position:absolute;left:50%;top:55%;width:6px;height:6px;margin:-3px;border-radius:50%;background:#f6dc95;box-shadow:0 0 8px #f1d58e;opacity:0;animation:pw35spark 1.6s var(--d) ease-out infinite}
@keyframes pw35spark{0%{opacity:0;transform:rotate(var(--a)) translateY(0)}30%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-95px)}}
@keyframes pw35glow{50%{box-shadow:0 0 100px #f1d58ecc}}
.pw35-mini{display:flex;justify-content:center;gap:7px;margin:18px 0}
.pw35-mini span{width:40px;height:50px;border-radius:20px 20px 6px 6px;border:1.5px solid #f1d58e;background:linear-gradient(#5a1020,#2a0812);display:flex;align-items:center;justify-content:center;font-size:17px;box-shadow:0 0 14px #f1d58e55}
.pw35-gift{display:inline-block;margin-top:4px;padding:8px 14px;border-radius:999px;background:#14231a;border:1px solid #3c7a5299;color:#bfe6c9;font-size:13px;font-weight:700}
.pw35-spin{width:40px;height:40px;border-radius:50%;border:3px solid #f1d58e33;border-top-color:#f1d58e;animation:ld341 .9s linear infinite}
.k35-home{display:flex;flex-direction:column;align-items:center;gap:8px;margin:18px 0 0}
.k35-admin{height:46px;padding:0 18px;border-radius:999px;border:1px solid #f1d58e;background:#2a0c14;color:#f1d58e;font-weight:800;font-size:14px;box-shadow:0 0 18px #f1d58e33}
.k35-codelink{border:0;background:none;color:#d9c9cd;text-decoration:underline;font-size:13.5px;padding:6px}
.k35-sum{display:flex;gap:8px;margin-top:12px}.k35-sum div{flex:1;padding:10px;border-radius:14px;background:#ffffff0a;border:1px solid #ffffff14}.k35-sum b{display:block;font:600 22px Georgia,serif;color:#f1d58e}.k35-sum span{font-size:11px;color:#cbbbc0}
.k35-new{margin-top:14px;padding:14px;border-radius:20px;background:#1d0a10;border:1px solid #d8b56a55;text-align:left}
.k35-new label{font-size:12px;color:#cbbbc0;font-weight:700}
.k35-new input{width:100%;margin-top:6px;height:48px;border-radius:14px;border:1px solid #d8b56a55;background:#12060a;color:#f9f1e8;padding:0 12px;font-size:16px}
.k35-new .pw35-go{height:50px;font-size:15px;margin-top:10px}
.k35-made{margin-top:10px;padding:12px;border-radius:16px;background:#14231a;border:1px solid #3c7a5299}
.k35-made b{font:700 19px ui-monospace,monospace;letter-spacing:.06em;color:#bfe6c9}.k35-made small{display:block;color:#a9cdb3;font-size:12px;margin-top:2px}
.k35-sh{display:flex;gap:8px;margin-top:8px}.k35-sh button{flex:1;height:40px;border:0;border-radius:999px;background:#25d366;color:#08310f;font-weight:800;font-size:13px}.k35-sh button.c{background:#f1d58e;color:#32140b}
.k35-list{margin-top:16px;text-align:left}
.k35-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid #ffffff14}
.k35-row>div{flex:1;min-width:0}.k35-row b{display:block;font-size:14px}.k35-row code{font-size:12.5px;color:#d9c9cd}.k35-row small{display:block;font-size:11px;color:#9f8f94}
.k35-acts{display:flex;gap:6px;align-items:center}
.k35-st{font-size:11px;font-weight:800;padding:6px 10px;border-radius:999px;white-space:nowrap;border:1px solid transparent}
.k35-st.f{background:#f1d58e22;color:#f1d58e;border-color:#f1d58e66}.k35-st.u{background:#14231a;color:#bfe6c9;border-color:#3c7a5299}.k35-st.x{background:#ffffff10;color:#9f8f94}
.k35-off{width:32px;height:32px;border-radius:50%;border:1px solid #ffffff22;background:none;color:#cbbbc0;font-size:15px}
