/* ================================================================
   HomeFit App v7 — css/community.css (F4)
   Community, sportmaatjes, groepen, melden/blokkeren, huisregels, coach-moderatie.
   Laadt ná app.css (tokens + gedeelde componenten van F1). Eigen klassen: .cm-*
   Bestaande community-klassen (.pcard .ph .pimg .krow .kchip .kbtn .frow-p .upbtns
   .subpills .spill .gfilter .gchip .cmp-grid .vgl-band) worden hier overschreven.
   Kleuren/maten enkel via tokens; de enkele #fff is tekst-op-gevulde-knop (thema-onafhankelijk).
   ================================================================ */

/* ---- fallbacks met nul-specificiteit: app.css (F1) wint altijd ---- */
:where(.chip){display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-2xs,11px);font-weight:800;letter-spacing:.02em;border-radius:999px;padding:3px 9px;border:1px solid var(--line);color:var(--ink3);background:var(--card);white-space:nowrap;line-height:1.4}
:where(.chip.orange){color:var(--orange-text,var(--orange-d));border-color:var(--orange-line);background:var(--orange-soft)}
:where(.chip.blue){color:var(--blue);border-color:var(--blue-line,var(--line));background:var(--blue-soft)}
:where(.chip.good){color:var(--good);border-color:var(--good-line,var(--line));background:var(--good-soft)}
:where(.chip.bad){color:var(--bad);border-color:var(--bad-line,var(--line));background:var(--bad-soft)}
:where(.chip.warn){color:var(--warn,var(--orange-d));border-color:var(--warn-line,var(--orange-line));background:var(--warn-soft,var(--orange-soft))}
:where(.chip.purple){color:var(--purple,var(--navy));border-color:var(--purple-line,var(--line));background:var(--purple-soft,var(--bg))}
:where(.chip.navy){color:var(--navy);border-color:var(--line);background:var(--bg)}
:where(.chip.muted){color:var(--ink3);border-color:var(--line);background:var(--bg)}
:where(.grow){flex:1;min-width:0}
:where(.mt-2){margin-top:var(--s2,8px)}
:where(.mt-3){margin-top:var(--s3,12px)}
:where(.center){text-align:center}
:where(.sp){flex:1}
:where(.btn.busy){opacity:.6;pointer-events:none}
.chip .ico{flex:none}

/* ---- subtabs (pills) ---- */
.cm-pills{display:flex;gap:var(--s2,8px);margin:2px 0 var(--s4,16px);overflow-x:auto;flex-wrap:nowrap;padding:2px 2px 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.cm-pills::-webkit-scrollbar{display:none}
.cm-pills .spill{
  flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 16px;border-radius:999px;
  border:1.5px solid var(--line);background:var(--card);color:var(--ink2);font-weight:700;font-size:var(--fs-s,13px);
  cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .15s;position:relative;
}
.cm-pills .spill .ico{flex:none}
.cm-pills .spill:hover{border-color:var(--ink3);color:var(--ink)}
.cm-pills .spill:active{transform:scale(.97)}
.cm-pills .spill.on{background:var(--accent-fill);border-color:var(--orange-line);color:var(--on-accent)}
.cm-cnt{
  display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;
  background:var(--orange);color:#fff;font-size:var(--fs-2xs,11px);font-weight:800;line-height:1;vertical-align:middle;
}
.cm-pills .spill.on .cm-cnt{background:var(--card);color:var(--orange-text,var(--orange-d))}
h2 .cm-cnt{margin-left:4px}

/* ---- icoonknop (44px, transparant) ---- */
.cm-ib{
  appearance:none;border:0;background:transparent;color:var(--ink3);width:44px;height:44px;border-radius:var(--r-s,12px);
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none;margin:-6px 0;
  transition:background .15s,color .15s,transform .15s;
}
.cm-ib:hover{background:var(--bg);color:var(--ink)}
.cm-ib:active{transform:scale(.92)}
.modal .mf .cm-ib{margin:0}

/* ---- fotokaart ---- */
.pgrid{display:block}
@media(min-width:760px){
  .pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--s4,16px);align-items:start}
  .pgrid .pcard{margin-bottom:0}
}
.pcard{padding:0;overflow:hidden;margin-bottom:var(--s4,16px);border-radius:var(--r-l,22px)}
.pcard .ph{display:flex;align-items:center;gap:var(--s3,12px);padding:12px 12px 6px 16px}
.pcard .ph .av{width:40px;height:40px;font-size:14px;border-radius:13px}
.pcard .ph .nm{font-weight:800;font-size:var(--fs-m,15px);line-height:1.3;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcard .ph .sub{font-size:var(--fs-xs,12px);color:var(--ink3)}
.cm-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px}
.pcard .cm-vis{font-size:var(--fs-2xs,11px);padding:2px 8px}
.cm-emo{font-size:13px;line-height:1}
.cm-imgwrap{position:relative;background:var(--bg);overflow:hidden}
.pimg{width:100%;max-height:560px;object-fit:cover;display:block;background:var(--bg);transition:filter .3s,transform .3s}
.pcard.cm-blur .pimg{filter:blur(18px) saturate(.6);transform:scale(1.04)}
.pcard.cm-blur.cm-show .pimg{filter:none;transform:none}
.cm-reveal{
  position:absolute;left:50%;bottom:12px;transform:translateX(-50%);display:inline-flex;align-items:center;gap:6px;
  min-height:40px;padding:0 14px;border-radius:999px;border:0;background:var(--navy);color:#fff;font-weight:700;
  font-size:var(--fs-s,13px);cursor:pointer;box-shadow:var(--shadow-lg);transition:transform .15s;
}
.cm-reveal:active{transform:translateX(-50%) scale(.96)}
.cm-reveal .cm-reveal-off{display:none}
.pcard.cm-show .cm-reveal .cm-reveal-on{display:none}
.pcard.cm-show .cm-reveal .cm-reveal-off{display:inline-flex;align-items:center;gap:6px}
.cm-reveal span{display:inline-flex;align-items:center;gap:6px}
.pcard.cm-hidden{border-color:var(--warn-line,var(--orange-line))}
.pcap{padding:12px 16px 4px;font-size:var(--fs-m,15px);line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}

/* moderatie- en statusbalk op een foto */
.cm-mod{
  margin:10px 16px 0;border:1px solid var(--warn-line,var(--orange-line));background:var(--warn-soft,var(--orange-soft));
  border-radius:var(--r-s,12px);padding:10px 12px;font-size:var(--fs-s,13px);color:var(--ink);line-height:1.5;
}
.cm-mod-info{border-color:var(--blue-line,var(--line));background:var(--blue-soft)}
.cm-modtxt{display:flex;gap:8px;align-items:flex-start}
.cm-modtxt .ico{flex:none;margin-top:3px;color:var(--warn,var(--orange-d))}
.cm-mod-info .cm-modtxt .ico{color:var(--blue)}
.cm-modbtns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.cm-modbtns .btn{min-height:40px}

/* kudos */
.krow{display:flex;gap:6px;flex-wrap:wrap;padding:10px 16px 14px;align-items:center}
.kchip{
  display:inline-flex;align-items:center;gap:4px;font-size:var(--fs-xs,12px);font-weight:700;border-radius:999px;padding:5px 11px;
  background:var(--bg);border:1px solid var(--line);color:var(--ink2);animation:kpop .3s ease-out both;
}
.kbtn{
  display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-radius:999px;
  border:1.5px solid var(--orange-line);background:var(--orange-soft);color:var(--orange-text,var(--orange-d));
  font-weight:800;font-size:var(--fs-xs,12px);cursor:pointer;transition:background .15s,transform .15s;
}
.kbtn:hover{border-color:var(--orange)}
.kbtn:active{transform:scale(.94)}
.kbtn .ico{flex:none}
.cm-kbtn-s{min-width:44px;padding:0 12px}

/* ---- uploadkaart ---- */
.cm-upcard{margin-bottom:var(--s4,16px);padding:18px}
.cm-uphead{display:flex;gap:14px;align-items:flex-start;margin-bottom:14px}
.cm-upico{
  width:44px;height:44px;border-radius:14px;flex:none;display:flex;align-items:center;justify-content:center;
  background:var(--orange-soft);color:var(--orange-text,var(--orange-d));border:1px solid var(--orange-line);
}
.cm-uphead h2{font-size:var(--fs-l,18px)}
.cm-uphead p{margin-top:3px;line-height:1.5}
.cm-upbtns{display:flex;gap:10px}
.upbtn{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:76px;
  border:1.5px dashed var(--orange-line);background:var(--orange-soft);color:var(--orange-text,var(--orange-d));
  border-radius:var(--r,16px);font-weight:800;font-size:var(--fs-s,13px);cursor:pointer;text-align:center;position:relative;
  transition:border-color .2s,transform .15s,background .2s;
}
.upbtn:hover{border-color:var(--orange)}
.upbtn:active{transform:scale(.98)}
.upbtn:focus-within{outline:2px solid var(--orange);outline-offset:2px}
.cm-file{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}
.upprev{width:100%;max-height:340px;object-fit:contain;border-radius:var(--r,16px);margin-top:4px;background:var(--bg);border:1px solid var(--line)}
.cm-sharewrap[hidden]{display:none}

/* ---- groepsfilter ---- */
.cm-gfilter{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;margin-bottom:12px;scrollbar-width:none}
.cm-gfilter::-webkit-scrollbar{display:none}
.cm-gfilter .gchip{
  flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 14px;border-radius:999px;
  border:1.5px solid var(--line);background:var(--card);color:var(--ink2);font-size:var(--fs-s,13px);font-weight:700;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s;
}
.cm-gfilter .gchip.on{color:var(--orange-text,var(--orange-d));border-color:var(--orange-line);background:var(--orange-soft)}

/* ---- opmerkingsbalk (coach) ---- */
.cm-attn{align-items:center;gap:10px;font-weight:600}
.cm-attn .ico{flex:none;color:var(--orange-text,var(--orange-d))}
.cm-attn span:not(.sp){flex:1 1 200px;min-width:0}

/* ---- lijsten: maatjes, leden, groepen ---- */
.cm-card{margin-bottom:14px}
.cm-hrow{margin:0 0 10px;flex-wrap:wrap}
.cm-hrow h2{display:inline-flex;align-items:center;gap:8px}
.cm-hrow h2 .ico{color:var(--orange-text,var(--orange-d));flex:none}
.cm-h2s{font-size:var(--fs-m,15px)}
.cm-pending{border-color:var(--orange-line)}
.frow-p{display:flex;align-items:center;gap:10px;padding:8px 0;min-height:56px;border-bottom:1px dashed var(--line2)}
.frow-p:last-child{border-bottom:0}
.frow-p .av{width:40px;height:40px;font-size:14px;border-radius:13px}
.frow-p .nm{font-weight:800;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-m,15px)}
.frow-p .btn-sm{min-height:40px;flex:none;white-space:nowrap}
.frow-p .chip{flex:none}
.cm-grow .nm{display:block}
.cm-gav{
  width:44px;height:44px;border-radius:14px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--purple-line,var(--line));background:var(--purple-soft,var(--bg));color:var(--purple,var(--navy));
  font-size:20px;cursor:pointer;transition:transform .15s;padding:0;
}
.cm-gav:active{transform:scale(.94)}
.cm-gmain{
  flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;
  background:transparent;border:0;padding:4px 0;cursor:pointer;color:var(--ink);min-height:44px;justify-content:center;
  font-family:inherit;
}
.cm-gmain .nm{width:100%;font-size:var(--fs-m,15px)}
.cm-gmain .tiny{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cm-av-s{width:34px;height:34px;font-size:12px;border-radius:11px}
.cm-cheer{padding:4px 0;line-height:1.5}
.cm-dim{opacity:.65}
.lb-row{gap:10px}
.lb-row .cm-ib{margin:-6px -6px -6px 0}

/* ---- uitnodigingskaart ---- */
.cm-invite{
  display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:14px;
  background:var(--hero-bg);border-color:var(--hero-edge);color:var(--on-hero);
}
.cm-invite h2{color:var(--on-hero);font-size:var(--fs-l,18px)}
.cm-invite p{color:var(--hero-sub);margin-top:3px;line-height:1.5}
.cm-inv-ico{width:44px;height:44px;border-radius:14px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--orange-soft);border:1px solid var(--orange-line);color:var(--orange-text)}
.cm-invite .btn-p{flex:none}

/* ---- zoekveld maatjes ---- */
#cm-flist{margin-top:4px}
#cm-fsearch{-webkit-appearance:none;appearance:none}
#cm-fsearch::-webkit-search-decoration{-webkit-appearance:none}

/* ---- sheets / menu-opties ---- */
.ksheet{display:flex;flex-direction:column;gap:8px;padding:4px 0 8px}
.kopt{
  display:flex;align-items:center;gap:12px;width:100%;min-height:52px;text-align:left;
  border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:var(--r-s,12px);
  padding:12px 16px;font-size:var(--fs-m,15px);font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,transform .15s;
}
.kopt:hover{border-color:var(--orange-line);background:var(--orange-soft)}
.kopt:active{transform:scale(.985)}
.cm-opt .ico{flex:none;color:var(--ink3)}
.cm-opt:hover .ico{color:var(--orange-text,var(--orange-d))}
.cm-opt.danger{color:var(--bad);border-color:var(--bad-line,var(--line))}
.cm-opt.danger .ico,.cm-opt.danger:hover .ico{color:var(--bad)}
.cm-opt.danger:hover{background:var(--bad-soft);border-color:var(--bad)}
.cm-opt-static{cursor:default;color:var(--ink2);background:var(--bg)}
.cm-opt-static:hover{background:var(--bg);border-color:var(--line)}
.cm-sheetintro{margin-bottom:10px;line-height:1.5}

/* ---- huisregels & toestemmingsvinkje ---- */
.cm-rules{list-style:none;margin:12px 0 4px;padding:0;display:flex;flex-direction:column;gap:10px}
.cm-rules li{display:flex;gap:10px;align-items:flex-start;font-size:var(--fs-s,13px);line-height:1.5;color:var(--ink2)}
.cm-rules li .ico{flex:none;margin-top:2px;color:var(--orange-text,var(--orange-d))}
.cm-rules li b{color:var(--ink)}
.cm-check{
  display:flex;gap:12px;align-items:flex-start;margin-top:14px;padding:12px 14px;min-height:44px;
  border:1.5px solid var(--line);border-radius:var(--r-s,12px);background:var(--field);
  font-size:var(--fs-s,13px);line-height:1.5;color:var(--ink2);cursor:pointer;transition:border-color .15s,background .15s;
}
.cm-check b{color:var(--ink)}
.cm-check input{width:20px;height:20px;margin-top:1px;accent-color:var(--orange);flex:none;cursor:pointer}
.cm-check:has(input:checked){border-color:var(--orange-line);background:var(--orange-soft)}
.cm-check:has(input:focus-visible){outline:2px solid var(--orange);outline-offset:2px}
.cm-emoji-in{text-align:center;font-size:20px}
.cm-frow{grid-template-columns:90px 1fr}

/* ---- vergelijken ---- */
.cm-chart{height:190px}
.cmp-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;margin-top:8px}
.cmp-grid .lab{text-align:center;font-size:var(--fs-2xs,11px);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3)}
.cmp-grid .v{font-size:19px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;color:var(--navy)}
.cmp-grid .v.win{color:var(--orange-text,var(--orange-d))}
.vgl-band{display:flex;gap:10px}
.vgl-band .vfoto{flex:1;min-width:0}
.vgl-band img{width:100%;border-radius:var(--r,16px);border:1px solid var(--line);display:block}
.vgl-band .vlbl{font-size:var(--fs-2xs,11px);font-weight:800;color:var(--ink3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px;text-align:center}

/* ---- lege staat ---- */
.cm-empty{line-height:1.5}
.cm-empty .rex{height:96px;margin:0 auto 8px;display:block}
.cm-empty .btn{min-height:40px}

/* ---- coach: meldingen ---- */
.cm-h1{font-size:22px;flex:1;min-width:0}
.cm-page{margin-top:4px}
.cm-reports .cm-hrow{margin-top:0}
.cm-reports > .small{line-height:1.55}
.cm-replist{display:grid;gap:12px}
@media(min-width:900px){.cm-replist{grid-template-columns:1fr 1fr}}
.cm-rep{padding:14px 16px}
.cm-rep-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.cm-rep-body{display:flex;gap:12px;align-items:flex-start}
.cm-thumb{width:72px;height:72px;border-radius:var(--r-s,12px);overflow:hidden;border:1px solid var(--line);padding:0;background:var(--bg);cursor:pointer;flex:none}
.cm-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.cm-rep-ico{width:48px;height:48px;border-radius:14px;background:var(--bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink3);flex:none}
.cm-rep-l{font-size:var(--fs-s,13px);line-height:1.55;color:var(--ink2);overflow-wrap:anywhere}
.cm-rep-l b{color:var(--ink)}
.cm-k{display:inline-block;min-width:92px;font-size:var(--fs-2xs,11px);text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:var(--ink3)}
.cm-rep-done{opacity:.72}
.cm-done{margin-top:18px}
.cm-done summary{cursor:pointer;font-weight:700;color:var(--ink2);padding:10px 0;list-style:none;display:flex;align-items:center;gap:10px;min-height:44px}
.cm-done summary::-webkit-details-marker{display:none}
.cm-done summary::before{content:"";width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s;margin-left:4px;flex:none}
.cm-done[open] summary::before{transform:rotate(45deg)}
.cm-done .cm-replist{margin-top:6px}
.cm-light{width:100%;max-height:70dvh;object-fit:contain;border-radius:var(--r-s,12px);background:var(--bg);display:block}

/* ---- skeleton ---- */
.cm-sk{display:grid;gap:14px}
.cm-skcard{padding:14px 16px;display:grid;grid-template-columns:40px 1fr;gap:10px 12px;align-items:center}
.cm-skb{background:linear-gradient(90deg,var(--line2) 25%,var(--bg) 50%,var(--line2) 75%);background-size:200% 100%;animation:cmshimmer 1.4s linear infinite;border-radius:10px}
.cm-sk-av{width:40px;height:40px;border-radius:13px}
.cm-sk-l{height:14px;width:55%}
.cm-sk-img{grid-column:1/-1;height:180px;border-radius:14px}
@keyframes cmshimmer{from{background-position:200% 0}to{background-position:-200% 0}}

/* ---- focus & toegankelijkheid ---- */
.cm-pills .spill:focus-visible,.cm-ib:focus-visible,.cm-gav:focus-visible,.cm-gmain:focus-visible,.cm-thumb:focus-visible,
.cm-reveal:focus-visible,.kbtn:focus-visible,.kopt:focus-visible,.cm-gfilter .gchip:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* ---- minder beweging ---- */
@media (prefers-reduced-motion: reduce){
  .cm-skb{animation:none;background:var(--line2)}
  .kchip{animation:none}
  .cm-pills .spill,.cm-ib,.upbtn,.kbtn,.kopt,.cm-gav,.cm-reveal,.pimg,.cm-gfilter .gchip{transition:none}
}
