:root{
  --bg:#f3f8f8; --panel:#ffffff; --ink:#1f3536; --muted:#54706f;
  --accent:#00797d; --accent-brand:#019ca1; --accent-light:#e3f5f6;
  --accent2:#c4006c; --accent2-light:#fde6f1;
  --warn:#8a5d00; --warn-bg:#fdf3e0;
  --danger:#b03f2f; --danger-bg:#fbe9e6; --border:#d3e3e4; --ok:#2f7d4f;
  --nav-h:62px;
  --safe-b:env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box;}
[hidden]{display:none !important;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font-family:'Segoe UI', system-ui, -apple-system, Roboto, Helvetica, Arial, sans-serif;
  font-size:15px; line-height:1.45;
}
h2{font-size:1.3rem; margin:0 0 14px; color:var(--accent);}
h3{font-size:1rem; margin:0 0 10px;}
p{margin:0 0 10px;}

.visually-hidden{position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap;}

/* ---------- En-tête ---------- */
.appbar{
  display:flex; align-items:center; gap:12px;
  padding:8px 16px; background:var(--panel); border-bottom:1px solid var(--border);
  padding-top:calc(8px + env(safe-area-inset-top, 0px));
}
.appbar img{height:46px; width:auto; display:block;}
.appbar h1{font-size:1.05rem; margin:0; line-height:1.2;}
.appbar p{margin:0; font-size:.8rem; color:var(--muted);}
.appbar-text{min-width:0;}
#appbarInfo{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}

/* ---------- Structure et navigation ---------- */
.shell{display:block;}
main{padding:16px; padding-bottom:calc(var(--nav-h) + var(--safe-b) + 24px); min-width:0;}

.nav{
  position:fixed; inset:auto 0 0 0; z-index:20; display:flex;
  height:calc(var(--nav-h) + var(--safe-b)); padding-bottom:var(--safe-b);
  background:var(--panel); border-top:1px solid var(--border);
}
.nav button{
  position:relative; flex:1; min-width:0; border:none; background:none; cursor:pointer;
  color:var(--muted); font:inherit; font-size:.7rem; font-weight:600;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  padding:4px 2px;
}
.nav svg{width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round;}
.nav button[aria-current="page"]{color:var(--accent);}
.nav button[aria-current="page"] svg{stroke-width:2.3;}
.nav button[aria-current="page"]::before{
  content:""; position:absolute; top:0; left:22%; right:22%; height:3px; border-radius:0 0 3px 3px; background:var(--accent);
}
.badge{
  position:absolute; top:5px; left:calc(50% + 7px);
  min-width:17px; height:17px; padding:0 4px; border-radius:9px;
  background:var(--danger); color:#fff; font-size:.66rem; line-height:17px; text-align:center;
}

@media (min-width:900px){
  .shell{display:grid; grid-template-columns:190px minmax(0,1fr); align-items:start;}
  main{padding:22px 26px 40px;}
  .nav{
    position:sticky; top:0; inset:auto; height:auto; min-height:calc(100vh - 63px);
    flex-direction:column; gap:2px; padding:12px 10px;
    border-top:none; border-right:1px solid var(--border);
  }
  .nav button{
    flex:none; flex-direction:row; justify-content:flex-start; gap:10px;
    padding:10px 12px; font-size:.92rem; border-radius:8px;
  }
  .nav button:hover{background:var(--accent-light);}
  .nav button[aria-current="page"]{background:var(--accent-light);}
  .nav button[aria-current="page"]::before{display:none;}
  .badge{position:static; margin-left:auto;}
}

/* ---------- Panneaux et formulaires ---------- */
.panel{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:16px; margin-bottom:14px;}
label{font-weight:600; font-size:.85rem; display:block; margin-bottom:4px;}
input[type=text], input[type=number], input[type=search], select, textarea{
  width:100%; padding:9px 10px; border:1px solid #b5cbcc; border-radius:7px;
  background:#fff; color:var(--ink); font:inherit; font-size:16px; min-height:42px;
}
textarea{resize:vertical; display:block; margin-bottom:8px;}
:focus-visible{outline:2px solid var(--accent); outline-offset:1px;}

.btn{
  display:inline-flex; align-items:center; justify-content:center; text-align:center;
  background:var(--accent); color:#fff; border:1px solid var(--accent);
  padding:10px 16px; min-height:44px; border-radius:8px; cursor:pointer;
  font:inherit; font-size:.92rem; font-weight:600; margin:0;
}
.btn:hover{filter:brightness(.93);}
.btn:disabled{opacity:.45; cursor:not-allowed; filter:none;}
.btn.secondary{background:#fff; color:var(--accent); border-color:var(--accent);}
.btn.secondary:hover{background:var(--accent-light); filter:none;}
.btn.danger{background:#fff; color:var(--danger); border-color:var(--danger);}
.btn.danger:hover{background:var(--danger-bg); filter:none;}
.btn.small{padding:6px 10px; min-height:36px; font-size:.82rem;}
.iconbtn{
  width:42px; height:42px; flex:none; border:1px solid var(--border); border-radius:8px;
  background:#fff; color:var(--danger); cursor:pointer; font-size:1rem; line-height:1;
}
.iconbtn:hover{background:var(--danger-bg);}

.filebtn{margin:0; cursor:pointer; width:100%;}
input.visually-hidden:focus-visible + *, .filebtn:focus-within{outline:2px solid var(--accent); outline-offset:1px;}

.fields{display:grid; gap:12px; margin-bottom:10px;}
.fields > div{min-width:0;}
.fields .filebtn{font-weight:600;}
.inline{display:flex; gap:8px;}
.inline select{flex:1; min-width:0;}
.stack{display:grid; gap:8px;}
.hint{color:var(--muted); font-size:.84rem; margin:8px 0 0;}
.panel > .hint:first-of-type{margin-top:0; margin-bottom:10px;}
.status{font-size:.88rem; margin:8px 0 0;}
.status:empty{display:none;}
.status.error{color:var(--danger); font-weight:600;}
.check{display:flex; align-items:center; gap:8px; font-weight:600; min-height:42px; margin:0;}
.check input{width:20px; height:20px; accent-color:var(--accent);}

@media (min-width:760px){
  .fields{grid-template-columns:repeat(2,minmax(0,1fr)); align-items:end;}
  .stack{max-width:520px;}
}

/* ---------- Tableaux ---------- */
table{border-collapse:separate; border-spacing:0; width:100%; font-size:.84rem; background:#fff;}
th, td{border-right:1px solid var(--border); border-bottom:1px solid var(--border); padding:5px 7px; text-align:center;}
th{background:var(--accent); color:#fff; font-weight:600; position:sticky; top:0; z-index:2;}
.left{text-align:left;}
.tablewrap{overflow:auto; border:1px solid var(--border); border-radius:8px; max-height:calc(100vh - 280px); min-height:240px; background:#fff;}
.tablewrap.auto{max-height:none; min-height:0;}
.stickycol{position:sticky; left:0; z-index:1; background:#fff; white-space:nowrap;}
th.stickycol{z-index:3; background:var(--accent);}
td.comment{min-width:200px; text-align:left;}
tr.flag-comment > td{background:var(--warn-bg);}
tr.flag-unknown > td{background:var(--danger-bg);}
tr.flag-comment > td.stickycol{background:var(--warn-bg);}
tr.flag-unknown > td.stickycol{background:var(--danger-bg);}
.ok{color:var(--ok); font-weight:600;}
.over{color:var(--danger); font-weight:700;}
.grouptag{font-weight:700; color:var(--accent2);}
.dash-cell{font-weight:700; font-size:.95rem;}
.subline{display:block; font-size:.76rem; font-weight:400; color:var(--muted);}
.subline.merge-alert{color:var(--warn); font-weight:600;}

select.cell{
  width:auto; min-width:58px; min-height:32px; padding:3px 4px; font-size:.82rem;
  border:1px solid rgba(31,53,54,.25); text-align:center; background-color:transparent;
}
select.groupsel{width:auto; min-width:120px; min-height:32px; padding:3px 6px; font-size:.82rem; border-color:rgba(31,53,54,.25);}

/* ---------- Liste des enfants ---------- */
.filters{display:grid; gap:10px; margin-bottom:8px;}
.count{font-size:.85rem; color:var(--muted); margin:6px 0;}
.legend{font-size:.84rem; margin-bottom:10px;}
.legend summary{cursor:pointer; font-weight:600; padding:6px 0; color:var(--accent);}
.legend-row{display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px; margin-bottom:6px;}
.legend-item{display:inline-flex; align-items:center; gap:5px;}
.swatch{display:inline-block; width:26px; height:16px; border:1px solid var(--border); border-radius:3px;}

@media (min-width:760px){
  .filters{grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) auto; align-items:end;}
}

.cards{display:grid; gap:10px;}
.card{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:12px; border-left-width:5px;}
.card.flag-comment{border-left-color:#e0a83a;}
.card.flag-unknown{border-left-color:var(--danger);}
.card-head{display:flex; justify-content:space-between; gap:10px; align-items:baseline;}
.card-name{font-weight:700; font-size:1rem; overflow-wrap:anywhere;}
.card-age{color:var(--muted); font-size:.85rem; white-space:nowrap;}
.card-sub{color:var(--muted); font-size:.82rem; margin:0 0 8px; overflow-wrap:anywhere;}
.card label{font-size:.76rem; margin-bottom:2px; font-weight:600;}
.card-group{margin-bottom:10px;}
.card-days{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;}
.card-days select{width:100%; padding:6px 4px; font-size:15px; min-height:42px; text-align:left;}
.card-group select{width:100%; min-height:42px; font-size:16px;}
.card-note{font-size:.85rem; border-radius:6px; padding:7px 9px; margin:10px 0 0; overflow-wrap:anywhere;}
.card-note.warn{background:var(--warn-bg);}
.card-note.bad{background:var(--danger-bg); color:var(--danger); font-weight:600;}
.card-note.info{background:var(--bg);}
.contact{display:flex; flex-wrap:wrap; gap:8px; margin-top:10px;}

/* ---------- Effectifs ---------- */
.tiles{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-bottom:12px;}
.tile{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:10px;}
.tile b{display:block; font-size:1.4rem; line-height:1.1;}
.tile span{font-size:.76rem; color:var(--muted);}
.tile.bad b{color:var(--danger);}
.dashcard{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:12px; margin-bottom:10px;}
.dashcard h3{margin:0; color:var(--accent2);}
.dashcard .meta{font-size:.8rem; color:var(--muted); margin:2px 0 8px; overflow-wrap:anywhere;}
.dayline{display:grid; grid-template-columns:minmax(0,1fr) auto auto; gap:12px; align-items:center; padding:7px 0; border-top:1px solid var(--border); font-size:.88rem;}
.dayline .n{font-weight:700; text-align:right;}
.dayline .a{text-align:right; min-width:92px;}
th.day{white-space:nowrap;}

/* ---------- Lignes éditables ---------- */
.editrow{display:grid; gap:8px; padding:10px 0; border-bottom:1px solid var(--border);}
.editrow:first-child{padding-top:0;}
.editrow label{font-size:.76rem; margin-bottom:2px;}
.editrow.anim{grid-template-columns:minmax(0,1fr) auto; align-items:end;}
.editrow.anim .span-name{grid-column:1 / -1;}
.editrow.group{grid-template-columns:repeat(4,minmax(0,1fr)) auto; align-items:end;}
.editrow.group .span-name{grid-column:1 / -1;}
#animList:empty{display:none;}
#animList, #ageGroupList{margin-bottom:12px;}
.pill{display:inline-block; background:var(--accent-light); color:var(--accent); border-radius:6px; padding:3px 9px; font-size:.82rem; margin:2px 0;}
.pill.off{background:#eef2f2; color:var(--muted);}
.presence-row{display:grid; grid-template-columns:minmax(0,1fr) 92px; gap:8px; align-items:center; padding:7px 8px; border-bottom:1px solid var(--border); font-size:.86rem;}
.presence-row.unknown{background:var(--danger-bg); grid-template-columns:minmax(0,1fr) 92px auto;}
.presence-row span{overflow-wrap:anywhere;}
.presence-row input{min-height:38px; padding:5px 8px;}
#presenceDetails summary{cursor:pointer; font-weight:600; color:var(--accent); padding:6px 0;}

@media (min-width:760px){
  .editrow.anim{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;}
  .editrow.anim .span-name{grid-column:auto;}
  .editrow.group{grid-template-columns:minmax(0,2fr) repeat(4,minmax(70px,1fr)) auto;}
  .editrow.group .span-name{grid-column:auto;}
}

/* ---------- Planning et import des animateurs ---------- */
.animgrid input{min-width:170px; min-height:36px; padding:5px 8px; font-size:.88rem;}
.animgrid select[data-field]{min-width:150px; min-height:36px; padding:5px 8px; font-size:.88rem;}
.animgrid .iconbtn{width:34px; height:34px;}
.animgrid td{vertical-align:middle;}
#animReview{margin-top:12px;}
.review-box{border:1px solid var(--accent); border-radius:10px; padding:14px; background:#fbfefe;}
.review-box h4{margin:14px 0 6px; font-size:.92rem;}
.review-box h4:first-child{margin-top:0;}
.review-msg{margin:0 0 6px; padding:7px 9px; border-radius:6px; font-size:.86rem;}
.review-msg.ok{background:var(--accent-light);}
.review-msg.warn{background:var(--warn-bg);}
.review-msg.bad{background:var(--danger-bg); color:var(--danger); font-weight:600;}
.review-fields{display:grid; gap:10px; margin-bottom:8px;}
.mapping select{min-width:130px; min-height:34px; padding:3px 6px; font-size:.82rem;}
.mapping td{white-space:nowrap; max-width:190px; overflow:hidden; text-overflow:ellipsis; color:var(--muted); font-size:.78rem;}
.mapping th{position:static; background:var(--accent-light); color:var(--ink);}
.mapping td.role{overflow:visible; max-width:none;}
.review-row{display:grid; grid-template-columns:minmax(0,1fr) minmax(150px,220px); gap:8px; align-items:center; padding:5px 0; border-bottom:1px solid var(--border); font-size:.86rem;}
.review-row select{min-height:36px; padding:4px 8px; font-size:.86rem;}
.review-actions{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:12px;}
@media (min-width:760px){
  .review-fields{grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto; align-items:end;}
}

/* ---------- Accueil des familles ---------- */
.fam-results{display:grid; gap:6px; margin-top:6px;}
.fam-result{
  display:flex; justify-content:space-between; gap:12px; align-items:center; width:100%; text-align:left;
  background:#fff; border:1px solid var(--border); border-radius:8px; padding:9px 12px; cursor:pointer; font:inherit;
}
.fam-result:hover, .fam-result.current{border-color:var(--accent); background:var(--accent-light);}
.fam-result small{color:var(--muted);}
.fam-head{display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 16px; align-items:baseline; margin-bottom:8px;}
.fam-head h3{margin:0; font-size:1.1rem;}
.fam-contact{color:var(--muted); font-size:.86rem;}
.pill.done{background:#e4f3ea; color:var(--ok); font-weight:600;}
.plan th.day{min-width:92px;}
.plan td.pcell{min-width:92px; padding:6px 4px;}
.plan td.pcell.changed{outline:2px solid var(--accent2); outline-offset:-2px;}
.plan td.pcell.full{background:#e4e8e8; color:#6b7778;}
.plan td.pcell input[type=checkbox]{width:22px; height:22px; accent-color:var(--accent); cursor:pointer; margin:0;}
.plan td.pcell input:disabled, .plan td.pcell select:disabled{cursor:not-allowed; opacity:.55;}
.plan td.pcell select{width:100%; min-height:34px; padding:3px; font-size:.8rem;}
.pleft{display:block; font-size:.72rem; margin-top:3px; color:var(--muted);}
.pleft.none{color:var(--danger); font-weight:600;}
.plan tr.note td{background:var(--warn-bg); text-align:left; font-size:.84rem; white-space:normal;}
.summary-title{cursor:pointer; font-weight:600; color:var(--accent);}
#accueilPlaces{margin-top:10px;}
.places-table td.full{background:#e4e8e8; color:var(--danger); font-weight:700;}
.save-actions{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:12px;}
.unsaved{color:var(--accent2); font-weight:600; font-size:.88rem;}

/* ---------- Tableaux de répartition par glisser-déposer ---------- */
.view-head{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:8px 16px; margin-bottom:14px;}
.view-head h2{margin:0;}
.segmented{display:inline-flex; border:1px solid var(--accent); border-radius:8px; overflow:hidden;}
.segmented button{border:none; background:#fff; color:var(--accent); font:inherit; font-size:.86rem; font-weight:600; padding:7px 14px; cursor:pointer;}
.segmented button + button{border-left:1px solid var(--accent);}
.segmented button[aria-pressed="true"]{background:var(--accent); color:#fff;}
.board-tools{display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin-bottom:8px;}
.board-tools > div{min-width:200px;}
.board-hint{margin:0 0 10px;}
.board{display:grid; grid-auto-flow:column; grid-auto-columns:minmax(205px,1fr); gap:10px; overflow-x:auto; padding-bottom:6px; align-items:start;}
.bcol{background:#eaf2f2; border:2px solid transparent; border-radius:10px; display:flex; flex-direction:column; max-height:calc(100vh - 270px); min-height:220px; min-width:0;}
.bcol.over{border-color:var(--accent); background:var(--accent-light);}
.bcol.pool{background:#f0f0ea;}
.bcol-head{user-select:none; -webkit-user-select:none; padding:9px 10px 7px; border-bottom:1px solid var(--border); background:inherit; border-radius:10px 10px 0 0;}
.bcol-title{font-weight:700; color:var(--ink); overflow-wrap:anywhere; display:flex; align-items:center; gap:7px;}
.bcol-dot{width:11px; height:11px; border-radius:50%; flex:none; border:1px solid rgba(0,0,0,.2);}
.bcol-meta{font-size:.78rem; color:var(--muted); margin-top:2px;}
.bcol-state{font-size:.8rem; margin-top:4px; font-weight:600;}
.bcol-state.good{color:var(--ok);}
.bcol-state.bad{color:var(--danger);}
.bcol-body{padding:7px; overflow-y:auto; display:grid; gap:6px; align-content:start; flex:1; min-height:70px;}
.bcol-empty{font-size:.8rem; color:var(--muted); text-align:center; padding:14px 6px; border:1px dashed #a9c4c5; border-radius:7px;}
.bars{display:flex; gap:1px; height:24px; align-items:flex-end; margin-top:6px;}
.bars i{flex:1; min-width:1px; background:var(--accent-brand); border-radius:1px 1px 0 0; min-height:2px;}
.bars i.bad{background:var(--danger);}
.bars i.zero{background:#c9d6d6;}
.bars i.sel{outline:1px solid var(--ink);}
.bcard{background:#fff; border:1px solid var(--border); border-radius:7px; padding:6px 8px; cursor:grab; user-select:none; -webkit-user-select:none; font-size:.84rem;}
.bcard:hover{border-color:var(--accent); box-shadow:0 1px 4px rgba(0,0,0,.1);}
.bcard.dim{opacity:.42;}
.bcard.dragging{opacity:.3;}
.bcard.ghost{position:fixed; z-index:60; pointer-events:none; cursor:grabbing; box-shadow:0 8px 22px rgba(0,0,0,.3); transform:rotate(1.5deg); margin:0;}
.bcard-top{display:flex; justify-content:space-between; gap:6px; align-items:baseline;}
.bcard-name{font-weight:600; overflow-wrap:anywhere;}
.bcard-age{color:var(--muted); font-size:.76rem; white-space:nowrap;}
.bcard-flags{display:flex; flex-wrap:wrap; gap:3px; margin-top:3px;}
.flag{font-size:.68rem; font-weight:600; border-radius:4px; padding:0 5px; background:var(--warn-bg); color:var(--warn);}
.flag.bad{background:var(--danger-bg); color:var(--danger);}
.flag.info{background:#e6eef0; color:var(--muted);}
.strip{display:flex; gap:1px; margin-top:5px;}
.strip > *{flex:1; min-width:1px; height:7px; border:none; padding:0; background:#e3e8e8; border-radius:1px;}
.strip .s-full{background:var(--accent-brand);}
.strip .s-half{background:repeating-linear-gradient(45deg, var(--accent-brand) 0 2px, #bfe3e4 2px 4px);}
.strip .s-m{background:linear-gradient(90deg, var(--accent-brand) 50%, #e3e8e8 50%);}
.strip .s-am{background:linear-gradient(90deg, #e3e8e8 50%, var(--accent-brand) 50%);}
.bars i.gap{margin-right:3px;}
.slot-line{display:block; white-space:nowrap;}
.slot-tag{font-size:.7rem; font-weight:400; color:var(--muted);}
.plan td.pcell{min-width:112px;}
.strip .s-other{outline:1px solid var(--accent2); outline-offset:-1px;}
.strip.big > *{height:14px; cursor:pointer;}
.strip.big > *:hover{outline:2px solid var(--ink); outline-offset:-1px;}
.bcard-del{border:none; background:none; color:var(--muted); cursor:pointer; font-size:.8rem; padding:0 2px; line-height:1;}
.bcard-del:hover{color:var(--danger);}
.carry{background:var(--accent-light); border:1px solid var(--accent); border-radius:10px; padding:12px 14px; margin-bottom:12px; font-size:.9rem;}
.carry-actions{display:flex; flex-wrap:wrap; gap:8px; margin-top:8px;}
.add-panel summary{padding:2px 0;}
.add-grid{display:grid; gap:18px; margin-top:12px;}
.add-grid h3{font-size:.92rem;}
@media (min-width:900px){ .add-grid{grid-template-columns:repeat(3,minmax(0,1fr));} }
.model-row{max-width:260px; margin-bottom:10px;}

select.exception{display:block; width:100%; min-width:92px; min-height:28px; margin-top:3px; padding:1px 3px; font-size:.72rem; border-color:rgba(31,53,54,.25);}

/* ---------- Bulles de remarques et fratries ---------- */
.bubble{
  position:relative; display:block; width:100%; text-align:left; margin:7px 0 3px; padding:5px 8px;
  background:var(--warn-bg); border:1px solid #edd9a9; border-radius:9px; color:#5c4300;
  font:inherit; font-size:.77rem; line-height:1.3; cursor:pointer; overflow-wrap:anywhere;
  display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:5; overflow:hidden;
}
.bubble.open{display:block; overflow:visible;}
.bubble.static{cursor:default; font-size:.88rem; padding:8px 11px;}
.bubble::before{
  content:""; position:absolute; top:-5px; left:12px; width:8px; height:8px;
  background:var(--warn-bg); border-left:1px solid #edd9a9; border-top:1px solid #edd9a9; transform:rotate(45deg);
}
.bubble:not(.open)::before{display:none;}
.fam-notes{display:grid; gap:6px; margin:0 0 12px;}
.sibs{display:flex; flex-wrap:wrap; gap:3px; margin-top:5px;}
.sib-link{border:1px solid #e9b6d2; background:var(--accent2-light); color:var(--accent2); border-radius:9px; font:inherit; font-size:.7rem; font-weight:600; padding:0 6px; cursor:pointer; overflow-wrap:anywhere; text-align:left;}
.sib-link:hover{background:#f9d3e6;}
.bcard.sib-on{border-color:var(--accent2); box-shadow:0 0 0 1px var(--accent2);}
.bcard.pulse{outline:3px solid var(--accent2); outline-offset:1px;}

/* ---------- Ajout à la permanence ---------- */
.search-foot{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:6px 12px; margin:6px 0;}
.search-foot .count{margin:0;}
.new-grid{display:grid; gap:10px; margin-bottom:12px;}
.new-child{display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,1.2fr) 74px minmax(0,1.1fr) auto; gap:8px; align-items:end; margin-bottom:8px;}
.new-note{margin-top:12px;}
@media (min-width:760px){ .new-grid{grid-template-columns:repeat(4,minmax(0,1fr));} }

/* ---------- Reprise d'un fichier retravaillé ---------- */
#reworkReview{margin-top:12px;}
.change-list{margin:4px 0 0; padding-left:18px; font-size:.84rem; max-height:220px; overflow:auto;}
.review-counts{display:grid; grid-template-columns:repeat(auto-fit,minmax(115px,1fr)); gap:8px; margin:8px 0;}

/* ---------- Propositions d'ajustement ---------- */
.head-actions{display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center;}
.adjust-tools{display:flex; flex-wrap:wrap; gap:10px 16px; align-items:flex-end; margin-bottom:12px;}
.adjust-tools > div{min-width:170px;}
.proposals{display:grid; gap:12px; grid-template-columns:repeat(auto-fit,minmax(250px,1fr));}
.proposal{border:1px solid var(--border); border-radius:10px; padding:12px; background:#fbfefe; display:flex; flex-direction:column; min-width:0;}
.proposal h4{margin:0 0 3px; font-size:.96rem;}
.proposal-why{font-size:.8rem; color:var(--muted); margin:0 0 8px;}
.metric-list{display:grid; gap:2px; font-size:.82rem; margin-bottom:8px;}
.metric-list b{font-weight:700;}
.metric-list .better{color:var(--ok);}
.metric-list .worse{color:var(--danger);}
.move-list{display:grid; gap:4px; max-height:250px; overflow:auto; margin-bottom:10px; flex:1; align-content:start;}
.move{display:grid; grid-template-columns:auto minmax(0,1fr); gap:7px; font-size:.82rem; font-weight:400; margin:0; align-items:start; padding:3px 2px;}
.move input{width:17px; height:17px; margin-top:1px; accent-color:var(--accent);}
.move small{display:block; color:var(--muted); font-size:.74rem;}

/* ---------- Permanences et bénévoles ---------- */
.perm-bar{display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; margin-bottom:12px;}
.perm-bar > div{min-width:220px; flex:0 1 300px;}
.perm-bar select{min-height:38px; padding:5px 8px; font-size:.9rem;}
.perm-add{display:grid; gap:8px; grid-template-columns:repeat(auto-fit,minmax(125px,1fr)); align-items:end; margin-bottom:10px;}
.vol-add{display:flex; gap:8px; align-items:end; flex-wrap:wrap; margin-bottom:10px;}
.vol-add > div{flex:1 1 180px;}
.progress-bar{height:9px; border-radius:5px; background:#e3e8e8; overflow:hidden; margin:6px 0 10px;}
.progress-bar i{display:block; height:100%; background:var(--accent-brand);}
.bcard .bcard-sub{color:var(--muted); font-size:.74rem;}

.pill.warn-pill{background:var(--warn-bg); color:var(--warn);}

/* ---------- Guide de démarrage ---------- */
.step{display:grid; grid-template-columns:30px minmax(0,1fr) auto; gap:10px; align-items:center; padding:9px 4px; border-bottom:1px solid var(--border);}
.step:last-child{border-bottom:none;}
.step-mark{width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.82rem; background:#e3e8e8; color:var(--muted);}
.step.done .step-mark{background:#e4f3ea; color:var(--ok);}
.step.next .step-mark{background:var(--accent); color:#fff;}
.step.next{background:var(--accent-light); border-radius:8px;}
.step-title{font-weight:600;}
.step-detail{font-size:.83rem; color:var(--muted);}
.appbar-saved{margin:0 0 0 auto; font-size:.76rem; color:var(--muted); white-space:nowrap;}
.toast-action{background:none; border:1px solid #fff; color:#fff; border-radius:5px; font:inherit; font-size:.82rem; font-weight:700; padding:2px 8px; margin-left:8px; cursor:pointer;}

/* ---------- États ---------- */
.empty{background:var(--panel); border:1px dashed #a9c4c5; border-radius:10px; padding:28px 18px; text-align:center;}
.empty p{color:var(--muted);}

.toast{
  position:fixed; z-index:40; left:16px; right:16px; bottom:calc(var(--nav-h) + var(--safe-b) + 12px);
  max-width:560px; margin:auto; background:var(--ink); color:#fff;
  border-radius:8px; padding:11px 14px; font-size:.9rem; box-shadow:0 4px 14px rgba(0,0,0,.25);
}
.updatebar{
  position:fixed; z-index:30; left:12px; right:12px; bottom:calc(var(--nav-h) + var(--safe-b) + 10px);
  max-width:560px; margin:auto; display:flex; align-items:center; justify-content:space-between; gap:12px;
  background:var(--panel); border:1px solid var(--accent); border-radius:10px; padding:8px 12px; font-size:.88rem;
  box-shadow:0 4px 14px rgba(0,0,0,.15);
}
@media (min-width:900px){
  .toast, .updatebar{bottom:18px;}
}
@media (prefers-reduced-motion:no-preference){
  .toast{animation:rise .16s ease-out;}
  @keyframes rise{from{transform:translateY(6px); opacity:0;} to{transform:none; opacity:1;}}
}
