/* OH MY'PROD — espaces privés (équipe & mariés) */
body.app{background:var(--ivory);min-height:100svh;font-size:1rem;line-height:1.6}
.app [hidden]{display:none!important}
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:calc(12px + env(safe-area-inset-top,0px)) 5vw 12px;background:rgba(247,243,236,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.topbar .wm{font-size:1.45rem;color:var(--espresso)}
.topbar .where{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:#8f6f3e;font-weight:500;margin-left:14px;white-space:nowrap}
.topbar .l{display:flex;align-items:baseline;min-width:0}
.topbar .r{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tab{background:none;border:0;font:500 .74rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);padding:10px 12px;cursor:pointer;border-bottom:1px solid transparent;text-decoration:none}
.tab:hover{color:var(--espresso)}
.tab.on{color:var(--espresso);border-color:var(--champ)}
@media(max-width:760px){.topbar{flex-wrap:wrap}.topbar .where{display:none}.topbar .r{width:100%;justify-content:space-between}.tab{padding:8px 6px;font-size:.68rem;letter-spacing:.12em}}

.page{max-width:76rem;margin:0 auto;padding:5vh 5vw 12vh}
.page h1{font-size:clamp(2.2rem,5vw,3.4rem)}
.page h2{font-size:clamp(1.7rem,3.4vw,2.3rem)}
.muted{color:var(--taupe)}
.small{font-size:.86rem}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:2rem}
.app .btn{padding:12px 22px;font-size:.72rem}
.app .btn.sm{padding:8px 14px;font-size:.66rem}
.app .btn.ghost{border-color:var(--line)}
.app .btn.danger{color:#a2513a;border-color:rgba(162,81,58,.35)}
.app .btn.danger:hover{background:#a2513a;color:#fff;border-color:#a2513a}
.app .btn:disabled{opacity:.5;cursor:wait}
.link{background:none;border:0;padding:0;font:inherit;color:#8f6f3e;text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* formulaires */
.app form{display:block;max-width:none;margin:0}
.fld{display:block;margin-bottom:16px}
.fld>span{display:block;font-size:.7rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe);margin-bottom:4px}
.app input,.app select,.app textarea{width:100%;background:#fffdf9;border:1px solid var(--line);border-radius:2px;color:var(--espresso);font:inherit;font-size:1rem;padding:11px 12px;margin:0;outline:0}
.app input:focus,.app select:focus,.app textarea:focus{border-color:var(--champ);box-shadow:0 0 0 3px rgba(176,141,87,.15)}
.app input[type=checkbox]{width:auto}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0 18px}
@media(max-width:640px){.grid2,.grid3{grid-template-columns:1fr}}
.full{grid-column:1/-1}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 18px}
.chips label{cursor:pointer;position:relative}
.chips input{position:absolute;opacity:0;width:1px;height:1px}
.chips span{display:inline-block;border:1px solid var(--line);padding:8px 14px;font-size:.86rem;letter-spacing:.04em;transition:.25s;background:#fffdf9}
.chips input:checked+span{border-color:var(--champ);background:var(--champ);color:#fff}
.chips input:focus-visible+span{outline:2px solid var(--champ2);outline-offset:2px}
.msg{min-height:1.4em;font-size:.88rem;margin:6px 0 0}
.msg.bad{color:#a2513a}.msg.ok{color:#5b7a4a}

/* connexion */
.auth{min-height:100svh;display:grid;grid-template-columns:1.05fr 1fr}
.auth .side{position:relative;background:url("/.netlify/images?url=/fond.png&w=1400&fm=webp&q=72") center 60%/cover;color:var(--ivory);display:flex;flex-direction:column;justify-content:flex-end;padding:7vh 6vw}
.auth .side::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(30,22,16,.2),rgba(30,22,16,.7))}
.auth .side>*{position:relative}
.auth .side h1{font-size:clamp(2.4rem,4.6vw,4rem)}
.auth .side em{color:var(--champ2)}
.auth .side p{max-width:26rem;margin-top:1rem;color:rgba(247,243,236,.9)}
.auth .main{display:flex;flex-direction:column;justify-content:center;padding:calc(40px + env(safe-area-inset-top,0px)) 8vw 40px;max-width:36rem;width:100%;margin:auto}
.auth .main .wm{font-size:1.8rem;margin-bottom:6vh;color:var(--espresso)}
.auth h2{font-size:2.4rem;margin-bottom:.4rem}
.auth .main>p{color:var(--taupe);margin-bottom:2rem}
.auth .btn{width:100%;margin-top:8px}
.pw{position:relative}
.pw button{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;font:500 .66rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--taupe);cursor:pointer;padding:8px}
@media(max-width:820px){.auth{grid-template-columns:1fr}.auth .side{min-height:34vh;padding:5vh 6vw}.auth .main{margin:0 auto}.auth .main .wm{display:none}}

/* agenda */
.agenda{display:grid;grid-template-columns:minmax(0,1fr) 20rem;gap:32px;align-items:start}
@media(max-width:1000px){.agenda{grid-template-columns:1fr}}
.calhead{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.calhead h2{text-transform:capitalize}
.calnav{display:flex;gap:4px}
.calnav button{background:none;border:1px solid var(--line);width:40px;height:40px;cursor:pointer;font-size:1.1rem;color:var(--espresso)}
.calnav button.today{width:auto;padding:0 14px;font:500 .68rem var(--sans);letter-spacing:.16em;text-transform:uppercase}
.calnav button:hover{border-color:var(--champ)}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);background:#fffdf9}
.cal .dow{font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe);padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--sand);text-align:center}
.cal .day{min-height:112px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;cursor:pointer;position:relative;transition:background .2s;text-align:left;background:none;font:inherit;color:inherit;display:flex;flex-direction:column;gap:3px;border-top:0;border-left:0}
.cal .day:hover{background:#faf6ef}
.cal .day.out{color:rgba(95,85,76,.45);background:rgba(237,229,216,.25)}
.cal .day.sel{box-shadow:inset 0 0 0 2px var(--champ)}
.cal .num{font-size:.82rem;font-weight:500;width:26px;height:26px;display:grid;place-items:center;border-radius:50%}
.cal .day.today .num{background:var(--espresso);color:var(--ivory)}
.ev{display:block;font-size:.74rem;line-height:1.3;padding:3px 6px;border-left:3px solid var(--champ);background:rgba(176,141,87,.14);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:1px}
.ev.rdv{border-color:var(--espresso);background:rgba(43,36,32,.07)}
.ev.autre{border-color:#8a9a83;background:rgba(138,154,131,.15)}
.ev.option{border-style:dashed;opacity:.85}
.more{font-size:.7rem;color:var(--taupe)}
.dots{display:none;gap:3px}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--champ)}
.dots i.rdv{background:var(--espresso)}.dots i.autre{background:#8a9a83}
@media(max-width:640px){.cal .day{min-height:58px;align-items:center}.cal .day .ev,.cal .day .more{display:none}.dots{display:flex}.cal .dow{padding:6px 0;letter-spacing:.06em}}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:12px;font-size:.78rem;color:var(--taupe)}
.legend span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:6px;vertical-align:-1px;background:var(--champ)}
.legend .rdv::before{background:var(--espresso)}.legend .autre::before{background:#8a9a83}
.legend .opt::before{background:none;border:1px dashed var(--champ)}

.side h3{font-size:1.5rem;margin-bottom:.8rem}
.side+.side{margin-top:2.4rem}
.list{list-style:none;border-top:1px solid var(--line)}
.list li{border-bottom:1px solid var(--line)}
.list button.item{width:100%;text-align:left;background:none;border:0;font:inherit;color:inherit;padding:12px 4px;cursor:pointer;display:grid;grid-template-columns:52px 1fr;gap:12px;align-items:center}
.list button.item:hover{background:#faf6ef}
.list .d{text-align:center;line-height:1.05;font-family:var(--serif)}
.list .d b{display:block;font-size:1.6rem;font-weight:500}
.list .d small{font-family:var(--sans);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe)}
.list .t{font-weight:500;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .s{font-size:.82rem;color:var(--taupe);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag{display:inline-block;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;padding:2px 7px;border:1px solid var(--line);color:var(--taupe);margin-right:4px;vertical-align:1px}
.tag.mariage{border-color:var(--champ2);color:#8f6f3e}
.empty{padding:22px 4px;color:var(--taupe);font-style:italic;font-family:var(--serif);font-size:1.15rem}

/* panneau de prestation */
.sheet{position:fixed;inset:0;z-index:80;display:flex;justify-content:flex-end;background:rgba(30,22,16,.35);opacity:0;pointer-events:none;transition:opacity .3s}
.sheet.open{opacity:1;pointer-events:auto}
.sheet .panel{width:min(46rem,100%);height:100%;background:var(--ivory);overflow-y:auto;transform:translateX(30px);transition:transform .35s ease;display:flex;flex-direction:column;overscroll-behavior:contain}
.sheet.open .panel{transform:none}
.panel header{position:sticky;top:0;z-index:2;background:var(--ivory);padding:calc(18px + env(safe-area-inset-top,0px)) 28px 0;border-bottom:1px solid var(--line)}
.panel header .top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.panel header h2{font-size:1.9rem;line-height:1.1}
.panel header .when{color:var(--taupe);font-size:.9rem;margin-top:4px}
.panel .x{background:none;border:1px solid var(--line);width:40px;height:40px;font-size:1.3rem;cursor:pointer;flex:none;color:var(--espresso)}
.panel .tabs{display:flex;gap:4px;margin-top:14px;overflow-x:auto}
.panel .body{padding:26px 28px 60px;flex:1}
@media(max-width:640px){.panel header{padding-inline:18px}.panel .body{padding-inline:18px}}
.actions{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;padding-top:18px;border-top:1px solid var(--line)}
.usb{border:1px solid var(--line);background:#fffdf9;padding:14px 16px;margin-bottom:18px}
.usb label.chk{display:flex;gap:10px;align-items:center;cursor:pointer;font-weight:500}
.usb .fld{margin:12px 0 0}
.maps{font-size:.82rem;margin:-10px 0 16px;display:inline-block;color:#8f6f3e}

.notes textarea{min-height:52vh;font-family:var(--sans);line-height:1.7;resize:vertical}
.notes .bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.saved{font-size:.78rem;color:var(--taupe)}

.drop{border:1px dashed var(--champ);background:rgba(176,141,87,.06);padding:26px;text-align:center;cursor:pointer;transition:background .2s;display:block}
.drop:hover,.drop.over{background:rgba(176,141,87,.14)}
.drop b{font-family:var(--serif);font-size:1.35rem;font-weight:500;display:block}
.drop input{display:none}
.progress{margin-top:12px;font-size:.86rem}
.progress div{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px dotted var(--line)}
.mems{list-style:none;margin-top:18px;border-top:1px solid var(--line)}
.mems li{display:grid;grid-template-columns:56px 1fr auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.mems .th{width:56px;height:56px;background:var(--sand) center/cover;display:grid;place-items:center;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--taupe)}
.mems .nm{min-width:0}
.mems .nm a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;font-weight:500}
.mems .nm small{color:var(--taupe)}
.box{border:1px solid var(--line);background:#fffdf9;padding:18px 18px 4px;margin-top:22px}
.box h4{font-family:var(--serif);font-size:1.3rem;font-weight:500;margin-bottom:12px}
.cred{background:var(--espresso);color:var(--ivory);padding:16px 18px;margin:14px 0;font-size:.92rem}
.cred code{font-size:1rem;color:var(--champ2)}
.cred button{margin-top:10px;color:var(--ivory)}

/* tableau des comptes */
.table{width:100%;border-collapse:collapse;font-size:.92rem}
.table th{text-align:left;font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe);font-weight:500;padding:10px 8px;border-bottom:1px solid var(--line)}
.table td{padding:12px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.table td.act{text-align:right;white-space:nowrap}
@media(max-width:700px){.table thead{display:none}.table tr{display:block;border-bottom:1px solid var(--line);padding:10px 0}.table td{display:block;border:0;padding:2px 0}.table td.act{text-align:left;padding-top:8px}}
.cols{display:grid;grid-template-columns:minmax(0,1fr) 22rem;gap:40px;align-items:start}
@media(max-width:1000px){.cols{grid-template-columns:1fr}}

/* espace mariés */
.welcome{text-align:center;padding:calc(60px + env(safe-area-inset-top,0px)) 6vw 6vh;position:relative}
.welcome h1{font-size:clamp(2.8rem,7vw,5.2rem)}
.welcome .meta{display:flex;gap:8px 26px;justify-content:center;flex-wrap:wrap;margin-top:1.6rem;font-size:.76rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#8f6f3e}
.welcome p{max-width:32rem;margin:1.2rem auto 0;color:var(--taupe)}
.preview{background:var(--espresso);color:var(--ivory);text-align:center;font-size:.82rem;padding:8px 5vw}
.preview a{color:var(--champ2)}
.block{padding:6vh 5vw;max-width:76rem;margin:auto}
.block>h2{text-align:center;margin-bottom:.4rem}
.block>.muted{text-align:center;margin-bottom:2.6rem}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.gal button{border:0;padding:0;background:var(--sand);aspect-ratio:1;overflow:hidden;cursor:zoom-in;display:block}
.gal img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.2s ease}
.gal button:hover img{transform:scale(1.05)}
@media(max-width:520px){.gal{grid-template-columns:repeat(3,1fr);gap:4px}}
.films{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.film{background:#fffdf9;border:1px solid var(--line);padding:26px 24px;display:flex;flex-direction:column;gap:10px}
.film video{width:100%;background:#000;display:block;margin-bottom:6px}
.film h3{font-size:1.6rem}
.film .k{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#8f6f3e;font-weight:500}
.film .btn{align-self:flex-start;margin-top:auto}
.usbcard{max-width:40rem;margin:0 auto;background:var(--sand);padding:34px 30px;text-align:center}
.usbcard h3{font-size:1.9rem;margin-bottom:.4rem}
.usbcard .st{display:inline-block;margin-top:14px;font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;font-weight:500;padding:7px 14px;border:1px solid var(--champ);color:#8f6f3e}
.usbcard .st.done{background:var(--champ);color:#fff}
.soonbox{text-align:center;max-width:34rem;margin:0 auto;padding:7vh 0}
.soonbox h2{margin-bottom:1rem}
.soonbox svg{width:54px;margin-bottom:1.2rem}

.lb{position:fixed;inset:0;z-index:90;background:rgba(20,15,11,.94);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s}
.lb.open{opacity:1;pointer-events:auto}
.lb img{max-width:92vw;max-height:84vh;object-fit:contain}
.lb .ctl{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));right:14px;display:flex;gap:8px}
.lb .ctl a,.lb .ctl button,.lb .nav{background:rgba(247,243,236,.12);border:0;color:#fff;font:500 .7rem var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:11px 14px;cursor:pointer;text-decoration:none}
.lb .nav{position:absolute;top:50%;transform:translateY(-50%);font-size:1.6rem;padding:14px 16px;letter-spacing:0}
.lb .prev{left:10px}.lb .next{right:10px}
.lb .count{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:rgba(255,255,255,.7);font-size:.8rem;letter-spacing:.14em}

.dialog{position:fixed;inset:0;z-index:95;background:rgba(30,22,16,.4);display:grid;place-items:center;padding:20px}
.dialog .in{background:var(--ivory);width:min(26rem,100%);padding:28px}
.dialog h3{font-size:1.7rem;margin-bottom:1rem}
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:var(--espresso);color:var(--ivory);padding:12px 20px;font-size:.88rem;z-index:99;opacity:0;transition:.3s;pointer-events:none;max-width:90vw}
.toast.on{opacity:1;transform:translate(-50%,0)}
.loading{padding:10vh 0;text-align:center;color:var(--taupe);font-family:var(--serif);font-style:italic;font-size:1.3rem}

/* barre d'onglets plus fournie */
@media(max-width:1100px){.topbar{flex-wrap:wrap}.topbar .r:not(.mainnav){width:100%;flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;scrollbar-width:none;-webkit-overflow-scrolling:touch}.topbar .r:not(.mainnav)::-webkit-scrollbar{display:none}.topbar .r:not(.mainnav) .tab{flex:none}}
.chipbtn{background:#fffdf9;border:1px solid var(--line);padding:9px 16px;font:500 .78rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--taupe);cursor:pointer;transition:.2s}
.chipbtn:hover{border-color:var(--champ);color:var(--espresso)}
.chipbtn.on{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.notice{border-left:3px solid var(--champ);background:rgba(176,141,87,.1);padding:14px 18px;margin-bottom:20px;font-size:.94rem}

/* outils */
.toolnav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.toolcard{background:#fffdf9;border:1px solid var(--line);padding:24px 24px 18px;margin-bottom:22px}
.toolcard h3{font-size:1.6rem}
.toolh{font-family:var(--serif);font-size:1.4rem;font-weight:500;margin:8px 0 12px;text-transform:none}
.tools2{gap:0 22px;align-items:start}
.result{background:var(--sand);padding:14px 16px;font-size:.98rem;line-height:1.7}
.result b{font-weight:600;color:var(--espresso)}
.suns{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
@media(max-width:900px){.suns{grid-template-columns:repeat(3,1fr)}}
@media(max-width:480px){.suns{grid-template-columns:repeat(2,1fr)}}
.sunb{background:var(--sand);padding:10px 12px}
.sunb.gold{background:rgba(176,141,87,.2)}
.sunb small{display:block;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe)}
.sunb b{font-family:var(--serif);font-size:1.3rem;font-weight:500}
.tscroll{overflow-x:auto;margin-top:16px}
.table.wx td,.table.wx th{padding:7px 8px;white-space:nowrap}
@media(max-width:700px){.table.wx thead{display:table-header-group}.table.wx tr{display:table-row}.table.wx td{display:table-cell;border-bottom:1px solid var(--line)}}
.fly{display:inline-block;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;font-weight:500}
.fly.ok{background:rgba(91,122,74,.15);color:#47633a}.fly.mid{background:rgba(201,149,60,.18);color:#87601f}.fly.bad{background:rgba(162,81,58,.15);color:#a2513a}
.links{list-style:none;margin:14px 0}
.links li{padding:8px 0;border-bottom:1px solid var(--line)}
.links a{color:#8f6f3e;text-decoration:none;font-weight:500}
.rules{background:var(--sand);padding:14px 16px;margin-top:10px;font-size:.92rem}
.rules ul{margin:6px 0 8px 18px}
.checkcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;margin-top:14px}
.checkcols h4{font-family:var(--serif);font-weight:500;font-size:1.3rem;margin-bottom:6px}
.checklist{list-style:none}
.checklist li{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:6px 0;border-bottom:1px dotted var(--line)}
.checklist label{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:.94rem}
.checklist input{margin-top:5px;accent-color:var(--champ)}
.checklist input:checked+span{text-decoration:line-through;color:var(--taupe)}
.rm{background:none;border:0;color:var(--taupe);font-size:1.1rem;cursor:pointer;padding:0 4px;line-height:1}
.rm:hover{color:#a2513a}
.addit{display:flex;gap:6px;margin-top:8px}
.addit input{padding:7px 10px;font-size:.9rem}

/* fichiers */
.drive{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:28px;align-items:start}
@media(max-width:800px){.drive{grid-template-columns:1fr}.folders{display:flex;overflow-x:auto;gap:6px}.folders .fold{flex:none;width:auto}}
.fold{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;padding:9px 12px;font:inherit;font-size:.94rem;color:var(--espresso);cursor:pointer}
.fold small{color:var(--taupe)}
.fold:hover{background:#faf6ef}
.fold.on{border-color:var(--champ);background:#fffdf9;font-weight:500}
.dfiles li{grid-template-columns:56px minmax(0,1fr) auto}
.dfiles .nm b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}
@media(max-width:640px){.dfiles li{grid-template-columns:44px minmax(0,1fr)}.dfiles li>.row{grid-column:1/-1}.dfiles .th{width:44px;height:44px}}

/* factures */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media(max-width:640px){.kpis{grid-template-columns:1fr}}
.kpis div{background:#fffdf9;border:1px solid var(--line);padding:16px 18px}
.kpis small{display:block;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe)}
.kpis b{font-family:var(--serif);font-size:2rem;font-weight:500}
.st{display:inline-block;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;padding:3px 8px;border:1px solid var(--line);color:var(--taupe);font-weight:500}
.st.envoyee{border-color:var(--champ2);color:#8f6f3e}.st.payee,.st.accepte{background:rgba(91,122,74,.15);border-color:transparent;color:#47633a}
.st.annulee,.st.refuse{background:rgba(162,81,58,.12);border-color:transparent;color:#a2513a}
.docform{background:#fffdf9;border:1px solid var(--line);padding:24px}
.lines .lh,.lines .li{display:grid;grid-template-columns:minmax(0,1fr) 76px 120px 120px 28px;gap:8px;align-items:start}
.lines .lh{font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);padding:0 0 6px}
.lines .li{padding:5px 0}
.lines textarea{resize:vertical;min-height:44px}
.lines .lt{padding-top:12px;text-align:right;font-weight:500}
@media(max-width:640px){.lines .lh{display:none}.lines .li{grid-template-columns:1fr 1fr 28px;border-bottom:1px solid var(--line);padding-bottom:10px}.lines .li textarea{grid-column:1/-1}.lines .lt{grid-column:1/3;text-align:left;padding-top:0}}
.tot{margin:6px 0 20px auto;max-width:20rem}
.tot div,.dtot div{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--line)}
.tot .big,.dtot .big{font-size:1.1rem}
.tot .big b,.dtot .big b{font-family:var(--serif);font-size:1.5rem;font-weight:600}
.dialog .in.wide{width:min(40rem,100%);max-height:92vh;overflow-y:auto}

/* assistant */
.chat{display:grid;grid-template-columns:16rem minmax(0,1fr);gap:26px;height:calc(100svh - 150px);min-height:460px}
@media(max-width:860px){.chat{grid-template-columns:1fr;height:auto}.threads ul{display:flex;overflow-x:auto;gap:6px}.threads li{flex:none;max-width:14rem}}
.threads ul{list-style:none;margin-top:14px;overflow-y:auto;max-height:calc(100% - 60px)}
.threads button{display:block;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;padding:9px 10px;font:inherit;font-size:.9rem;color:var(--espresso);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.threads button small{display:block;font-size:.72rem;color:var(--taupe)}
.threads button:hover{background:#faf6ef}
.threads button.on{border-color:var(--champ);background:#fffdf9}
.convo{display:flex;flex-direction:column;background:#fffdf9;border:1px solid var(--line);min-height:0}
@media(max-width:860px){.convo{min-height:70svh}}
.msgs{flex:1;overflow-y:auto;padding:24px clamp(14px,3vw,34px)}
.cm{margin-bottom:20px;display:flex;flex-direction:column}
.cm.u{align-items:flex-end}
.cm.u .bub{background:var(--espresso);color:var(--ivory);padding:11px 16px;max-width:80%;font-size:.96rem}
.cm.a{align-items:flex-start;max-width:46rem}
.acts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.acts span,.acts a{font-size:.74rem;padding:4px 10px;background:var(--sand);color:var(--taupe);text-decoration:none}
.acts a{background:rgba(176,141,87,.18);color:#7d5f33;font-weight:500}
.md{font-size:.98rem;line-height:1.7}
.md p{margin:0 0 .7em}.md h4{font-family:var(--serif);font-size:1.35rem;font-weight:500;margin:1em 0 .3em}
.md ul,.md ol{margin:0 0 .8em 1.3em}.md li{margin:.2em 0}
.md code{background:var(--sand);padding:1px 5px;font-size:.88em}
.md a{color:#8f6f3e}
.md hr{border:0;border-top:1px solid var(--line);margin:1em 0}
.srcs{margin-top:6px;font-size:.84rem;color:var(--taupe)}
.srcs summary{cursor:pointer;font-weight:500}
.srcs ol{margin:6px 0 0 1.4em}.srcs a{color:#8f6f3e}
.typing{display:flex;align-items:center;gap:4px;color:var(--taupe);font-size:.88rem}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--champ);animation:blink 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
.typing span{margin-left:6px}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
.msgerr{color:#a2513a;font-size:.92rem}
.composer{display:flex;gap:10px;align-items:flex-end;padding:14px;border-top:1px solid var(--line)}
.composer textarea{resize:none;max-height:220px;line-height:1.5}
.composer.busy textarea{opacity:.6}
.hello{text-align:center;max-width:40rem;margin:4vh auto}
.hello svg{width:46px;margin-bottom:10px}
.hello h2{margin-bottom:.5rem}
.ideas{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-top:24px;text-align:left}
.ideas button{background:var(--ivory);border:1px solid var(--line);padding:14px;cursor:pointer;font:inherit;color:inherit;text-align:left;transition:.2s}
.ideas button:hover{border-color:var(--champ)}
.ideas b{display:block;font-weight:500;margin-bottom:4px}
.ideas span{font-size:.82rem;color:var(--taupe);line-height:1.45;display:block}

/* facture imprimable */
body.doc{background:#e9e3d8}
.printbar{display:flex;justify-content:space-between;align-items:center;gap:12px;max-width:52rem;margin:0 auto;padding:calc(16px + env(safe-area-inset-top,0px)) 16px 16px}
.sheetdoc{position:relative;background:#fff;max-width:52rem;margin:0 auto 6vh;padding:56px 56px 40px;box-shadow:0 10px 40px rgba(43,36,32,.12);font-size:.92rem;line-height:1.55;overflow:hidden}
@media(max-width:640px){.sheetdoc{padding:28px 20px}}
.wmark{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%) rotate(-24deg);font-family:var(--serif);font-size:7rem;color:rgba(162,81,58,.1);pointer-events:none;white-space:nowrap}
.dh{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap;margin-bottom:28px}
.dh .wm{font-size:2rem}
.co{margin-top:12px;color:var(--taupe);font-size:.86rem}
.co b{color:var(--espresso)}
.dt{text-align:right}
.dt h1{font-size:2.6rem;letter-spacing:.02em}
.client{margin-top:18px;text-align:left;border:1px solid var(--line);padding:12px 16px;min-width:15rem}
.client small{display:block;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe)}
.ev{margin-bottom:14px;color:var(--taupe)}
.dl{width:100%;border-collapse:collapse;margin-bottom:16px}
.dl th{text-align:left;font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);font-weight:500;padding:9px 8px;border-bottom:2px solid var(--espresso)}
.dl td{padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.dl th:not(:first-child),.dl td:not(:first-child){text-align:right;white-space:nowrap}
.dtot{margin-left:auto;max-width:18rem}
.mention{margin-top:16px;font-style:italic}
.notes,.terms{margin-top:16px}
.sign{margin-top:30px;display:flex;justify-content:flex-end}
.sign div{border:1px solid var(--line);padding:12px 16px;width:18rem;height:110px;font-size:.84rem;color:var(--taupe)}
.legal{margin-top:34px;padding-top:12px;border-top:1px solid var(--line);font-size:.74rem;color:var(--taupe)}
@media print{
  @page{size:A4;margin:14mm}
  body.doc{background:#fff}
  .printbar{display:none}
  .sheetdoc{box-shadow:none;margin:0;padding:0;max-width:none}
  .wmark{position:fixed}
}
.app form.grid2,.app form.grid3{display:grid}
.drive>section,.app section.convo{padding:0}
.sheetdoc footer.legal{background:none;color:var(--taupe);text-align:left;padding:12px 0 0}
.tot b,.dtot b,.kpis b,.sunb b{font-variant-numeric:lining-nums}
.app form.composer,.app form.addit{display:flex}
.topbar nav.r{position:static;inset:auto;padding:0;background:none;color:inherit;z-index:auto;border:0;backdrop-filter:none}

/* talkie-walkie */
.radio-how ol{padding-left:1.2rem;margin:.4rem 0 1rem}
.radio-how li{margin-bottom:.4rem}
.app select{max-width:100%}
.radio{position:fixed;inset:0;z-index:100;background:radial-gradient(120% 80% at 50% 30%,#3a302a 0%,#1d1814 70%);color:var(--ivory);display:flex;flex-direction:column;align-items:center;padding:calc(16px + env(safe-area-inset-top,0px)) 6vw calc(20px + env(safe-area-inset-bottom,0px));user-select:none;-webkit-user-select:none;touch-action:manipulation}
.radio .rtop{width:100%;max-width:34rem;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.radio .rlabel{display:block;font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--champ2)}
.radio .rtop b{font-family:var(--serif);font-weight:500;font-size:1.7rem;line-height:1.15;display:block}
.radio .rquit{background:none;border:1px solid rgba(247,243,236,.3);color:var(--ivory);font:500 .7rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:10px 14px;cursor:pointer}
.radio .rstatus{margin-top:4vh;font-size:1.05rem;min-height:1.6em;text-align:center;color:rgba(247,243,236,.85)}
.radio .rstatus.ok::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:#7fbf7a;margin-right:8px;vertical-align:1px}
.radio .rstatus.talk{color:var(--champ2);font-weight:500}
.radio .rstatus.bad{color:#f0a68f}
.ptt{margin:auto 0;width:min(72vw,20rem);aspect-ratio:1;border-radius:50%;border:2px solid rgba(217,194,154,.55);background:radial-gradient(circle at 50% 35%,#c9a468,#8a6a3a);color:#fff;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;box-shadow:0 0 0 14px rgba(176,141,87,.12),0 20px 50px rgba(0,0,0,.45);transition:transform .12s,box-shadow .2s,background .2s;-webkit-tap-highlight-color:transparent;touch-action:none}
.ptt .pi{width:34px;height:52px;border:4px solid #fff;border-radius:18px;position:relative}
.ptt .pi::after{content:"";position:absolute;left:50%;bottom:-18px;width:4px;height:12px;background:#fff;transform:translateX(-50%)}
.ptt .pl{font:500 .78rem/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;max-width:70%;text-align:center}
.ptt.on{transform:scale(.96);background:radial-gradient(circle at 50% 35%,#e07a5a,#a2513a);box-shadow:0 0 0 22px rgba(224,122,90,.18),0 0 0 44px rgba(224,122,90,.08),0 12px 30px rgba(0,0,0,.4)}
.radio .rbottom{width:100%;max-width:34rem;display:flex;flex-wrap:wrap;gap:14px 22px;justify-content:center;align-items:center;font-size:.86rem;color:rgba(247,243,236,.8)}
.radio .rswitch{display:flex;align-items:center;gap:6px;cursor:pointer}
.radio .rvol{display:flex;align-items:center;gap:8px}
.radio .rvol input{width:8rem;accent-color:var(--champ)}
.radio.rpending{z-index:101;justify-content:space-between}
.radio.rpending .ptt{margin:auto 0}
/* déplacements */
.tripstop{display:grid;grid-template-columns:28px minmax(0,1fr) minmax(0,1.6fr) auto;gap:0 14px;align-items:center}
.tripstop .tnum{font:600 .9rem var(--sans);color:#8f6f3e;width:26px;height:26px;border:1px solid var(--champ);border-radius:50%;display:grid;place-items:center;margin-top:6px}
.tripstop .tmv{display:flex;gap:10px;font-size:1.1rem;margin-top:6px}
.tripstop .tmv .link{text-decoration:none}.tripstop .tmv .link[disabled]{opacity:.3;cursor:default}
.table.trip td{white-space:normal}.table.trip tr.tot td{border-top:1px solid var(--espresso)}
@media(max-width:640px){.tripstop{grid-template-columns:28px minmax(0,1fr) auto}.tripstop .fld:nth-of-type(2){grid-column:2/3}.tripstop .tmv{grid-row:1;grid-column:3}}
/* choix du rôle de l'équipe */
.rolepick{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:1.4rem 0 .6rem}
.rolebtn{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:20px 18px;border:1px solid var(--line);background:var(--ivory);cursor:pointer;font:inherit;color:inherit;transition:border-color .2s,background .2s}
.rolebtn b{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600}
.rolebtn span{font-size:.8rem;color:var(--taupe)}
.rolebtn:hover,.rolebtn:focus-visible{border-color:var(--champ2);background:#fff}
.rolebtn.last{border-color:var(--champ2)}
.rolebtn:last-child:nth-child(odd){grid-column:1/-1}
.rolebtn:disabled{opacity:.6;cursor:wait}
@media (max-width:420px){.rolepick{grid-template-columns:1fr}}

/* demandes de devis des futurs mariés */
.tbadge{display:inline-block;min-width:1.5em;margin-left:6px;padding:2px 5px;border-radius:999px;background:#a2513a;color:#fff;font-size:.62rem;letter-spacing:0;line-height:1.2;text-align:center;vertical-align:1px}
.qlist{display:grid;gap:16px}
.qcard{background:#fffdf9;border:1px solid var(--line);padding:18px 20px;transition:box-shadow .3s,border-color .3s}
.qcard.new{border-left:3px solid var(--champ)}
.qcard.focus{box-shadow:0 0 0 2px var(--champ2)}
.qcard header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}
.qcard h3{font-family:var(--serif);font-size:1.5rem;font-weight:500;line-height:1.2}
.qcard select{font:inherit;font-size:.85rem;padding:6px 8px;border:1px solid var(--line);background:#fff;color:var(--espresso)}
.qcard dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 20px;margin:0 0 12px}
.qcard dt{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);font-weight:500}
.qcard dd{margin:0;overflow-wrap:anywhere}
.qcard dd a{color:#8f6f3e}
.qcard .busy,.qcard .free{display:block;font-size:.8rem;margin-top:2px}
.qcard .busy{color:#a2513a}.qcard .free{color:#47633a}
.qcard blockquote{margin:0 0 14px;padding:10px 14px;border-left:2px solid var(--line);font-family:var(--serif);font-size:1.1rem;font-style:italic;color:var(--espresso)}
.qcard .row{margin-bottom:4px}
@media(max-width:640px){.qcard dl{grid-template-columns:1fr}.qcard header{flex-direction:column}}

/* galeries du site public */
.gcols{margin-top:22px}
.gcols #gAdd .box{margin-top:0;position:sticky;top:90px}
.glist{display:grid;gap:14px;margin-top:12px}
.gcard{display:grid;grid-template-columns:150px minmax(0,1fr);gap:18px;background:#fffdf9;border:1px solid var(--line);padding:14px;transition:opacity .3s}
.gcard.off{opacity:.6}
.gcard .fld{margin-bottom:10px}
.gcard textarea,.gadd textarea{resize:vertical}
.gth{position:relative;width:150px;aspect-ratio:4/5;background:var(--sand) center/cover no-repeat;display:grid;place-items:center;font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--taupe);text-align:center}
.gth.vid{aspect-ratio:16/9;background-color:#2b2420;color:#e9dcc6}
.gno{position:absolute;top:6px;left:6px;min-width:22px;height:22px;padding:0 5px;display:grid;place-items:center;background:rgba(30,22,16,.75);color:#fff;font-size:.7rem;letter-spacing:0}
.gacts{gap:8px}
.gsp{flex:1}
.gmini{padding:9px 14px!important;font-size:.7rem!important}
.gmini:disabled{opacity:.4;cursor:default}
.gchk{display:flex;gap:8px;align-items:center;font-size:.88rem;margin-bottom:12px;cursor:pointer}
.gacts .gchk{margin:0}
@media(max-width:700px){.gcard{grid-template-columns:1fr}.gth{width:100%;max-height:220px;aspect-ratio:16/9}}
@media(max-width:1000px){.gcols #gAdd{order:-1}.gcols #gAdd .box{position:static}}

/* discussions */
.dchat{height:calc(100svh - 230px)}
.dchat .threads ul{margin-top:0;max-height:100%}
.threads .dn{display:flex;align-items:center;gap:4px;overflow:hidden;text-overflow:ellipsis}
.threads button.unread .dn{font-weight:600}
.threads .dout{color:#a2513a}
.dnone{padding:9px 10px;line-height:1.5}
.dhead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px clamp(14px,3vw,24px);border-bottom:1px solid var(--line)}
.dhead:empty{display:none}
.dhead h3{font-family:var(--serif);font-size:1.45rem;font-weight:500;line-height:1.2}
.dhead p{margin-top:2px}
.dm{display:flex;flex-direction:column;align-items:flex-start;margin-top:14px;max-width:min(36rem,86%)}
.dm.cont{margin-top:4px}
.dm.me{align-items:flex-end;margin-left:auto}
.dwho{font-size:.76rem;font-weight:500;color:var(--taupe);margin:0 0 3px 2px}
.dwho .tag{margin-left:6px}
.dbub{background:var(--sand);padding:9px 14px;font-size:.96rem;line-height:1.5;overflow-wrap:anywhere;white-space:normal}
.dm.me .dbub{background:var(--espresso);color:var(--ivory)}
.dbub a{color:inherit;text-decoration:underline}
.dmeta{font-size:.68rem;color:var(--taupe);margin:3px 2px 0;opacity:.75}
.dmeta .link{font-size:inherit;opacity:0;transition:.2s}
.dm:hover .dmeta .link,.dm:focus-within .dmeta .link{opacity:1}
@media(hover:none){.dmeta .link{opacity:1}}
.dday{text-align:center;margin:22px 0 6px;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe)}
.dday span{background:#fffdf9;padding:0 10px}
.dacc{max-height:42vh;overflow-y:auto;border:1px solid var(--line);background:#fffdf9}
.dacc .table td,.dacc .table th{padding:8px 10px}
.dacc label.chk,.dialog label.chk{display:inline-flex;gap:6px;align-items:center;cursor:pointer;font-size:.88rem;margin-right:14px}
.dmembers{list-style:none;max-height:50vh;overflow-y:auto}
.dmembers li{padding:8px 0;border-bottom:1px solid var(--line)}
@media(max-width:860px){.dchat{height:auto}.dchat .convo{height:72svh}}

/* équipe de la presta & check-lists */
.crewpick{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px}
.crewpick label{cursor:pointer;position:relative}
.crewpick input{position:absolute;opacity:0;width:1px;height:1px}
.crewpick span{display:inline-flex;flex-direction:column;border:1px solid var(--line);padding:8px 14px;font-size:.88rem;background:#fffdf9;transition:.2s;min-width:8rem}
.crewpick small{font-size:.7rem;letter-spacing:.06em;color:var(--taupe)}
.crewpick input:checked+span{border-color:var(--champ);background:var(--champ);color:#fff}
.crewpick input:checked+span small{color:rgba(255,255,255,.85)}
.crewpick input:focus-visible+span{outline:2px solid var(--champ2);outline-offset:2px}
.crewprog{list-style:none;margin:10px 0 0;font-size:.86rem}
.crewprog li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dotted var(--line)}
.crewprog .muted{white-space:nowrap}
.cknav{display:flex;gap:8px;flex-wrap:wrap;margin:26px 0 6px}
.ckbar{height:6px;background:var(--line);margin:10px 0 4px;overflow:hidden}
.ckbar i{display:block;height:100%;background:var(--champ);transition:width .3s}
.ckhead{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ckhead .rm{font-size:.95rem}
.ckfoot{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:14px}
.ckfoot form{display:flex;gap:6px}
.ckfoot input{padding:7px 10px;font-size:.9rem}
.list .ckp{font-size:.74rem;color:var(--taupe);display:block;margin-top:2px}
.list .ckp b{color:#8f6f3e;font-weight:500}
.ckalert{border:1px solid var(--champ);background:#fbf5ea;padding:10px 14px;margin:0 0 18px;font-size:.88rem;display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}

/* ---------- photos de profil ---------- */
.av{--s:38px;width:var(--s);height:var(--s);flex:none;border-radius:50%;overflow:hidden;display:inline-grid;place-items:center;background:#fffdf9;border:1px solid var(--line);vertical-align:middle;position:relative}
.av img{width:100%;height:100%;object-fit:cover;display:block}
.av.ini{background:hsl(var(--h,28) 38% 46%);border-color:transparent;color:#fff;font:600 calc(var(--s)*.38)/1 var(--sans);letter-spacing:.02em}
.av.xs{--s:20px;margin-right:6px}.av.sm{--s:28px}.av.xl{--s:96px}
.whoc{display:flex;align-items:center;gap:10px}
.dwho{display:flex;align-items:center}
.crewpick span{position:relative;padding-left:48px!important}
.crewpick span .av{position:absolute;left:10px;top:50%;transform:translateY(-50%)}
.dialog .in.profile{width:min(32rem,100%)}
.pf-top{display:flex;gap:20px;align-items:flex-start;margin-bottom:1rem;flex-wrap:wrap}
.pf-stage{position:relative;width:160px;height:160px;flex:none;border-radius:50%;overflow:hidden;background:repeating-conic-gradient(#e9e2d6 0 25%,#fffdf9 0 50%) 50%/16px 16px;box-shadow:0 0 0 1px var(--line),0 8px 24px rgba(43,36,32,.12)}
.pf-stage canvas{width:100%;height:100%;display:block;cursor:grab;touch-action:none}
.pf-stage canvas:active{cursor:grabbing}
.pf-empty{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.pf-empty:empty{display:none}
.pf-empty .av.xl{--s:160px;border:0}
.pf-ctl{flex:1;min-width:12rem;display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.pf-adj{display:flex;flex-direction:column;gap:10px;width:100%}
.pf-mode{display:flex;gap:6px;flex-wrap:wrap}
.pchip{border:1px solid var(--line);background:#fffdf9;padding:6px 10px;font:500 .72rem/1 var(--sans);letter-spacing:.06em;cursor:pointer}
.pchip.on{background:var(--espresso);border-color:var(--espresso);color:var(--ivory)}
.pf-zoom{display:flex;align-items:center;gap:8px;font-size:.82rem;width:100%}
.pf-zoom input{flex:1;accent-color:var(--champ)}
.pf-bg{display:flex;align-items:center;gap:6px}
.pf-bg .sw{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);cursor:pointer;padding:0}
.pf-bg .sw.on{outline:2px solid var(--champ);outline-offset:2px}
@media(max-width:480px){.pf-top{flex-direction:column;align-items:center}.pf-ctl{align-items:stretch;width:100%}}

/* ---------- talkie : liste des membres connectés ---------- */
.radio-cols{grid-template-columns:minmax(0,1fr) 18rem;max-width:66rem}
.radio-who h4{margin:0 0 .6rem}
.radio-who{align-self:start;position:sticky;top:90px}
.rlist{list-style:none;margin:0;padding:0}
.rlist .rgroup{font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--taupe);margin:10px 0 4px}
.rlist .rgroup:first-child{margin-top:0}
.rrow{display:flex;align-items:center;gap:10px;padding:7px 0;flex-wrap:wrap;position:relative}
.rrow .rn{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.rrow .rn b{font-weight:500;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rrow .rn em{font-style:normal;opacity:.6;font-weight:400}
.rrow .rn small{font-size:.72rem;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rempty{font-size:.85rem;opacity:.65;padding:6px 0}
.rrow .av{transition:box-shadow .2s}
.rrow.talk .av{box-shadow:0 0 0 2px #1d1814,0 0 0 4px var(--champ2);animation:rpulse 1s ease-in-out infinite}
.rlist.light .rrow.talk .av{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--champ)}
.rrow.muted .rn small{color:#f0a68f;opacity:1}
.rlist.light .rrow.muted .rn small{color:#b4533a}
.rrow.lmuted .av{opacity:.5}
@keyframes rpulse{50%{box-shadow:0 0 0 2px #1d1814,0 0 0 7px rgba(217,194,154,.55)}}
@media(prefers-reduced-motion:reduce){.rrow.talk .av{animation:none}}
.racts{display:flex;gap:4px}
.ric{width:32px;height:32px;border-radius:50%;border:1px solid rgba(247,243,236,.22);background:none;color:inherit;display:grid;place-items:center;cursor:pointer;padding:0}
.ric svg{width:17px;height:17px}
.ric.on{background:#a2513a;border-color:#a2513a;color:#fff}
.ric:focus-visible,.rmenu button:focus-visible{outline:2px solid var(--champ2);outline-offset:2px}
.rmenu{width:100%;display:flex;flex-direction:column;gap:4px;padding:6px 0 4px 48px}
.rmenu button{background:rgba(247,243,236,.08);border:1px solid rgba(247,243,236,.18);color:var(--ivory);text-align:left;padding:9px 12px;font:500 .78rem/1.2 var(--sans);cursor:pointer}
.rmenu button.bad{color:#f0a68f}

.radio{flex-direction:row;align-items:stretch;padding:0}
.radio .rmain{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;padding:calc(16px + env(safe-area-inset-top,0px)) 6vw calc(20px + env(safe-area-inset-bottom,0px))}
.radio.rpending{flex-direction:column;align-items:center;padding:calc(16px + env(safe-area-inset-top,0px)) 6vw calc(20px + env(safe-area-inset-bottom,0px))}
.radio .rtopbtns{display:flex;gap:8px;align-items:center}
.radio .rmembers-btn{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 6px}
.rstack{display:inline-flex}
.rstack .av{--s:24px;border:2px solid #2b2420;margin-left:-8px}
.rstack .av:first-child{margin-left:0}
.rstack:empty{display:none}
.radio .rspeaker{min-height:0;display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:2vh;transition:opacity .2s;opacity:0}
.radio .rspeaker.on{opacity:1}
.radio .rspeaker .av.xl{--s:clamp(64px,13vh,104px);margin:0 -6px;border:3px solid #1d1814}
.radio .rspeaker .av.talk{box-shadow:0 0 0 3px var(--champ2),0 0 30px rgba(217,194,154,.35)}
.radio .rspeaker span:last-child{font-size:.86rem;color:var(--champ2)}
.radio .rspeaker:not(.on){height:0;overflow:hidden;margin:0}
.ptt.off{background:radial-gradient(circle at 50% 35%,#6d635a,#3d3530);border-color:rgba(247,243,236,.2);box-shadow:0 0 0 14px rgba(247,243,236,.05),0 20px 50px rgba(0,0,0,.45)}
.radio .roff{margin:auto 0;text-align:center;max-width:22rem;display:flex;flex-direction:column;gap:16px;align-items:center;color:rgba(247,243,236,.85)}
.radio .rquit.gold{background:var(--champ);border-color:var(--champ);color:#fff}
.rside{width:19rem;flex:none;background:rgba(0,0,0,.22);border-left:1px solid rgba(247,243,236,.1);padding:calc(18px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;overflow-y:auto;user-select:text;-webkit-user-select:text}
.rside-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.rside-h b{font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--champ2);font-weight:500}
.rside-h.sub{margin-top:16px}
.rside .rclose{display:none;background:none;border:0;color:var(--ivory);font-size:1.6rem;line-height:1;cursor:pointer;padding:4px 8px}
.rside .rlist .rrow{border-bottom:1px solid rgba(247,243,236,.08)}
.rself{margin-top:auto;padding-top:16px;display:flex;flex-direction:column;gap:8px}
.rself .rquit{width:100%}
.radio .rmembers-btn{display:none}
@media(max-width:860px){
  .radio .rmembers-btn{display:inline-flex}
  .rside{position:absolute;top:0;right:0;bottom:0;width:min(20rem,86vw);background:#1d1814;box-shadow:-20px 0 50px rgba(0,0,0,.5);transform:translateX(102%);transition:transform .25s ease;z-index:2}
  .radio.side .rside{transform:none}
  .rside .rclose{display:block}
  .radio-cols{grid-template-columns:1fr}
  .radio-who{position:static}
}

/* ---------- navigation du tableau de bord ---------- */
.mainnav{display:flex;align-items:center;gap:2px;flex:1;justify-content:center;min-width:0}
.mainnav .navpri,.mainnav .navsec{display:flex;align-items:center;gap:2px}
.mainnav .tab{letter-spacing:.12em;padding:10px 9px;display:inline-flex;align-items:center;white-space:nowrap}
.mainnav .ti{display:none;width:20px;height:20px}
.mainnav .more{display:none}
.acct{position:relative;flex:none}
.acctbtn{display:flex;align-items:center;gap:8px;background:none;border:1px solid var(--line);border-radius:999px;padding:4px 10px 4px 4px;cursor:pointer;font:500 .8rem/1 var(--sans);color:var(--espresso);max-width:14rem}
.acctbtn:hover,.acctbtn[aria-expanded="true"]{border-color:var(--champ)}
.acctbtn .an{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acctbtn .chev{width:12px;height:12px;flex:none;opacity:.6}
#meAv{display:inline-flex}#meAv:empty{display:none}
.acctmenu{position:absolute;right:0;top:calc(100% + 8px);width:16rem;background:#fffdf9;border:1px solid var(--line);box-shadow:0 18px 40px rgba(43,36,32,.16);padding:6px;z-index:60;display:flex;flex-direction:column}
.acctmenu .am-head{display:flex;gap:10px;align-items:center;padding:10px 10px 12px;border-bottom:1px solid var(--line);margin-bottom:4px}
.acctmenu .am-head span{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.acctmenu .am-head b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acctmenu .am-head small{font-size:.74rem;color:var(--taupe)}
.acctmenu button,.acctmenu a{background:none;border:0;text-align:left;padding:10px 10px;font:400 .9rem/1.3 var(--sans);color:var(--espresso);cursor:pointer;text-decoration:none}
.acctmenu button:hover,.acctmenu a:hover,.acctmenu button:focus-visible,.acctmenu a:focus-visible{background:var(--sand);outline:none}
.acctmenu .bad{color:#a2513a;border-top:1px solid var(--line);margin-top:4px}
.notifbar{display:flex;align-items:center;gap:12px;padding:10px 5vw;background:var(--sand);border-bottom:1px solid var(--line);font-size:.86rem;color:var(--espresso)}
.notifbar span{flex:1}
.notifbar .x{background:none;border:0;font-size:1.4rem;line-height:1;color:var(--taupe);cursor:pointer;padding:0 4px}
details.radio-how summary{cursor:pointer;font-weight:500;list-style:none;display:flex;justify-content:space-between;align-items:center}
details.radio-how summary::-webkit-details-marker{display:none}
details.radio-how summary::after{content:"+";font-size:1.3rem;color:var(--champ);line-height:1}
details.radio-how[open] summary::after{content:"–"}
details.radio-how[open] summary{margin-bottom:.6rem}
@media(min-width:1181px) and (max-width:1320px){.mainnav .tab{letter-spacing:.08em;padding:10px 6px;font-size:.68rem}.topbar .where{display:none}}
@media(max-width:1180px){
  body.app:has(.mainnav){padding-bottom:calc(66px + env(safe-area-inset-bottom,0px))}
  body.app:has(.mainnav) .toast{bottom:calc(80px + env(safe-area-inset-bottom,0px))}
  .topbar:has(.mainnav){flex-wrap:nowrap}
  .topbar:has(.mainnav){backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(247,243,236,.97)}
  .topbar nav.mainnav{position:fixed;left:0;right:0;bottom:0;z-index:45;background:rgba(247,243,236,.97);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom,0px));display:block}
  .mainnav .navpri{display:grid;grid-template-columns:repeat(5,1fr);gap:0}
  .mainnav .navpri .tab{flex-direction:column;gap:4px;padding:7px 2px 6px;font-size:.58rem;letter-spacing:.08em;border:0;position:relative;justify-content:center}
  .mainnav .navpri .tab.on{color:#8f6f3e}
  .mainnav .navpri .tab.on .ti{transform:translateY(-1px)}
  .mainnav .ti{display:block}
  .mainnav .more{display:inline-flex}
  .mainnav .navpri .tbadge{position:absolute;top:2px;left:calc(50% + 6px);margin:0}
  .mainnav .navsec{position:absolute;right:8px;bottom:calc(100% + 8px);width:min(20rem,calc(100vw - 16px));background:#fffdf9;border:1px solid var(--line);box-shadow:0 -10px 40px rgba(43,36,32,.16);padding:8px;display:grid;grid-template-columns:1fr 1fr;gap:4px;opacity:0;transform:translateY(8px);pointer-events:none;transition:.18s}
  .mainnav.open .navsec{opacity:1;transform:none;pointer-events:auto}
  .mainnav .navsec .tab{gap:10px;padding:14px 12px;font-size:.66rem;border:0;justify-content:flex-start}
  .mainnav .navsec .tab.on{background:var(--sand)}
  .acctbtn .an,.acctbtn .chev{display:none}
  .acctbtn{padding:3px}
  #meAv .av{--s:32px}
  .topbar .where{display:inline}
}
@media(prefers-reduced-motion:reduce){.mainnav .navsec{transition:none}}
/* gestion des rôles (super admin) */
.rmtabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin:1.2rem 0 1rem}
.rmtabs button{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 16px;font:inherit;font-size:.85rem;letter-spacing:.06em;color:var(--taupe);cursor:pointer}
.rmtabs button.on{color:var(--espresso);border-bottom-color:var(--champ)}
.rmrow{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line)}
.rmord{display:flex;flex-direction:column;gap:6px;padding-top:20px}
.rmord .btn{padding:4px 10px;min-width:0}
.rmf{flex:1;min-width:0;display:grid;grid-template-columns:1fr 1.6fr;gap:0 12px}
.rmf .fld{margin-bottom:8px}
.rmmeta{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:10px}
.rmnew{margin-top:1.4rem}
.rmnew h4{margin-bottom:.8rem}
.rmwho .table td{vertical-align:middle}
.rmwho select{font-size:.9rem;padding:8px 10px}
@media(max-width:640px){.rmf{grid-template-columns:1fr}}
