/* Amui — thème « pareu » : aplats de couleur, vagues, stickers. Polices embarquées. */
@font-face{font-family:"Fredoka";font-weight:400;font-display:swap;src:url(fonts/fredoka-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Fredoka";font-weight:600;font-display:swap;src:url(fonts/fredoka-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Fredoka";font-weight:700;font-display:swap;src:url(fonts/fredoka-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Fredoka";font-weight:600;font-display:swap;unicode-range:U+0100-02BA,U+1E00-1EFF;src:url(fonts/fredoka-latin-ext-600-normal.woff2) format("woff2")}
@font-face{font-family:"Fredoka";font-weight:700;font-display:swap;unicode-range:U+0100-02BA,U+1E00-1EFF;src:url(fonts/fredoka-latin-ext-700-normal.woff2) format("woff2")}
@font-face{font-family:"Nunito";font-weight:400;font-display:swap;src:url(fonts/nunito-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Nunito";font-weight:600;font-display:swap;src:url(fonts/nunito-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Nunito";font-weight:700;font-display:swap;src:url(fonts/nunito-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"Nunito";font-weight:400;font-display:swap;unicode-range:U+0100-02BA,U+1E00-1EFF;src:url(fonts/nunito-latin-ext-400-normal.woff2) format("woff2")}
@font-face{font-family:"Nunito";font-weight:700;font-display:swap;unicode-range:U+0100-02BA,U+1E00-1EFF;src:url(fonts/nunito-latin-ext-700-normal.woff2) format("woff2")}

:root{
  --lagon:#19C3C9; --lagon-deep:#0E9BA3; --hibiscus:#FF4F6A; --mangue:#FFC233; --nuit:#0E2A47; --nuit-2:#1F3F63;
  --ecume:#FFFDF7; --sable:#FFF4DE; --brume:#E4F7F7; --vert:#3DBE6C; --violet:#8A6CFF;
  --ink:var(--nuit); --muted:#5B6B7D; --line:#E6EAF0;
  --display:"Fredoka","Nunito",system-ui,sans-serif; --body:"Nunito",system-ui,sans-serif;
  --quiz:var(--violet); --photo:var(--hibiscus); --activity:var(--lagon-deep); --eco:var(--vert); --contest:var(--mangue); --dailyquiz:var(--nuit-2);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ecume);color:var(--ink);font:16px/1.5 var(--body);padding-bottom:calc(92px + env(safe-area-inset-bottom))}
a{color:var(--lagon-deep)}
h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.01em;margin:0}
h1{font-size:2rem;line-height:1.05}
h2{font-size:1.35rem;line-height:1.1;margin:1.6rem 0 .7rem;display:flex;align-items:baseline;gap:.5rem}
h2.muted-h{color:var(--muted);font-weight:600;font-size:1.1rem}
.count{font:600 .85rem var(--display);background:var(--nuit);color:#fff;border-radius:999px;padding:.1em .6em;transform:rotate(-6deg);display:inline-block}
.more{margin-left:auto;font:600 .9rem var(--body);color:var(--hibiscus);text-decoration:none}
.muted{color:var(--muted)} .small{font-size:.86rem} .hint{color:var(--muted);font-size:.92rem;margin:.5rem 0;line-height:1.45}
.lead{font-size:1.1rem;color:var(--nuit-2);margin:.4rem 0 0}
code{background:var(--sable);padding:.05em .35em;border-radius:6px;font-size:.92em}

/* ---------- bandeau + vague ---------- */
.top{background:var(--lagon);color:#fff;padding:.75rem 1.1rem .55rem;position:relative}
.top .inner{max-width:640px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:.8rem}
.brand{font:700 1.55rem/1 var(--display);color:#fff;text-decoration:none;display:flex;align-items:center;gap:.35rem}
.brand .logo{display:inline-block;width:1.1em;height:1.1em;border-radius:50%;background:var(--mangue);box-shadow:inset -0.25em -0.25em 0 var(--hibiscus)}
.who{font:600 .85rem var(--body);color:#fff;opacity:.95;white-space:nowrap} .who a{color:#fff;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.brands{display:none}
.wave{display:block;width:100%;height:22px;background:var(--lagon);-webkit-mask:radial-gradient(14px 14px at 14px 0,#0000 98%,#000) -14px 0/28px 100%;mask:radial-gradient(14px 14px at 14px 0,#0000 98%,#000) -14px 0/28px 100%;transform:scaleY(-1);margin-bottom:-6px}
.wave.flip{transform:none}

.wrap{max-width:640px;margin:0 auto;padding:.4rem 1.1rem 1rem}
.wrap.wide{max-width:980px}

.flashes{max-width:640px;margin:.6rem auto 0;padding:0 1.1rem}
.flash{padding:.75rem 1rem;border-radius:16px;margin:.4rem 0;font-weight:600;background:var(--nuit);color:#fff}
.flash.error{background:var(--hibiscus)}

/* ---------- héros semaine + bouées ---------- */
.weekbar{background:var(--lagon);color:#fff;margin:-.4rem -1.1rem 0;padding:.5rem 1.1rem 3.9rem;position:relative}
.weekbar::after{content:"";position:absolute;left:0;right:0;bottom:-21px;height:22px;background:var(--lagon);-webkit-mask:radial-gradient(14px 14px at 14px 0,#0000 98%,#000) -14px 0/28px 100%;mask:radial-gradient(14px 14px at 14px 0,#0000 98%,#000) -14px 0/28px 100%;transform:scaleY(-1)}
.tagline{font:600 .8rem var(--display);text-transform:uppercase;letter-spacing:.08em;color:var(--mangue);margin-bottom:.6rem}
.wk-n{font:600 .95rem var(--display);opacity:.9}
.wk-n span{opacity:.75}
.wk-t strong{display:block;font:700 2.3rem/1 var(--display);margin:.1rem 0 .3rem;letter-spacing:-.02em}
.wk-t .muted{color:#fff;opacity:.92;display:block;max-width:90%}
.scoreboard{display:flex;justify-content:space-between;gap:.5rem;margin:-2.2rem 0 .4rem;position:relative;z-index:1;padding:0 .2rem}
.scoreboard.one{justify-content:center;margin:.8rem 0 1rem}
.stat{width:31%;aspect-ratio:1;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:var(--nuit);background:var(--mangue);box-shadow:0 10px 0 -4px rgba(14,42,71,.18);transform:rotate(-4deg)}
.stat:nth-child(2){background:var(--hibiscus);color:#fff;transform:rotate(3deg) translateY(.35rem)}
.stat:nth-child(3){background:#fff;transform:rotate(-2deg);box-shadow:0 10px 0 -4px rgba(14,42,71,.18),inset 0 0 0 3px var(--nuit)}
.scoreboard.one .stat{width:40%;transform:none}
.stat .num{font:700 2rem/1 var(--display)} .stat .num sup{font-size:.5em;vertical-align:top}
.stat .lbl{font:600 .72rem/1.1 var(--body);margin-top:.25rem;max-width:80%}
@media (max-width:360px){.stat .num{font-size:1.6rem}.stat .lbl{font-size:.65rem}}

/* ---------- hero inscription ---------- */
.hero{text-align:center;padding:1.4rem 0 .6rem}
.hero.small{padding:.6rem 0 .2rem}
.hero-logo{display:none}
.hero h1{font-size:3.4rem;color:var(--nuit)}
.hero h1::after{content:"";display:block;width:4.5rem;height:.5rem;margin:.35rem auto 0;border-radius:999px;background:linear-gradient(90deg,var(--lagon),var(--mangue),var(--hibiscus))}
.hero .lead{font-size:1.05rem;color:var(--nuit-2);max-width:32ch;margin:.9rem auto 0}
.brandline{display:flex;align-items:center;justify-content:center;gap:1.1rem;margin:1.4rem 0 .4rem}
.brandline img{height:34px;width:auto}
.brandline .x{font:600 1rem var(--display);color:var(--muted)}

/* ---------- formulaires ---------- */
.form label{display:block;margin:.8rem 0 .3rem;font-weight:700;font-size:.95rem;color:var(--nuit)}
.form input:not([type=radio]):not([type=checkbox]):not([type=file]),.form select,.form textarea{
  display:block;width:100%;margin-top:.3rem;padding:.8rem .95rem;font:inherit;font-size:1rem;color:var(--ink);
  background:#fff;border:2.5px solid var(--nuit);border-radius:14px;box-shadow:3px 3px 0 var(--nuit)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--lagon);box-shadow:3px 3px 0 var(--lagon)}
.form .check{display:flex;gap:.55rem;align-items:center;font-weight:600}
.form .check input{width:1.2rem;height:1.2rem;margin:0;accent-color:var(--hibiscus)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.7rem 1.2rem;border-radius:999px;border:2.5px solid var(--nuit);
  background:#fff;color:var(--nuit);font:700 1rem var(--display);text-decoration:none;cursor:pointer;white-space:nowrap;box-shadow:3px 3px 0 var(--nuit);transition:transform .08s,box-shadow .08s}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--nuit)}
.btn.primary{background:var(--hibiscus);color:#fff}
.btn.big{width:100%;padding:1rem;font-size:1.15rem;margin-top:1rem}
.btn.small{padding:.4rem .8rem;font-size:.85rem;box-shadow:2px 2px 0 var(--nuit)}
.btn.ghost{background:transparent;box-shadow:none;border-color:transparent;text-decoration:underline;text-underline-offset:3px}
.btn.danger{color:var(--hibiscus)} .btn.warnbtn{background:var(--mangue)}
.link{background:none;border:0;padding:0;color:var(--lagon-deep);font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.link.danger{color:var(--hibiscus)}
.back{text-decoration:none;font-weight:700;color:var(--muted)}
.right{text-align:right;margin-top:.6rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem} .span2{grid-column:1/-1}
.grid3f{display:grid;grid-template-columns:repeat(3,1fr);gap:0 .7rem}
@media (max-width:600px){.grid2,.grid3f{grid-template-columns:1fr}}
fieldset{border:2px dashed var(--line);border-radius:14px;padding:.2rem 1rem .8rem;margin:.6rem 0}
legend{font:700 .95rem var(--display);padding:0 .4rem;color:var(--muted)}
.tiny{width:4.5rem !important;display:inline-block !important;padding:.3rem .5rem !important;box-shadow:none !important}

/* ---------- liste des défis ---------- */
.grouplbl{font:600 .95rem var(--display);color:var(--hibiscus);margin:1rem 0 .2rem}
.missions{display:flex;flex-direction:column}
.mission{display:flex;align-items:center;gap:.9rem;padding:.8rem 0;border-bottom:2px dotted var(--line);text-decoration:none;color:var(--ink)}
.mission:last-child{border-bottom:0}
.icon{font-size:1.35rem;width:2.9rem;height:2.9rem;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none;background:var(--brume)}
.mission.type-quiz .icon{background:#EDE8FF} .mission.type-photo .icon{background:#FFE3E8} .mission.type-activity .icon{background:#D6F3F4}
.mission.type-eco .icon{background:#DFF5E6} .mission.type-contest .icon{background:#FFF1C9} .mission.type-dailyquiz .icon{background:#D4F5F6}
.icon.big{width:3.6rem;height:3.6rem;font-size:1.8rem}
.grow{flex:1;min-width:0}
.mission strong{display:block;font:600 1.1rem/1.15 var(--display);color:var(--nuit)}
.meta{display:block;font-size:.84rem;color:var(--muted);margin-top:.1rem}
.pts{font:700 1rem var(--display);color:var(--nuit);background:var(--mangue);border-radius:10px;padding:.2em .55em;transform:rotate(5deg);flex:none}
.pts.pending{background:var(--line);color:var(--muted)}
.missions.done .mission{opacity:.6} .missions.done .pts{background:var(--brume);transform:none}

.card{background:#fff;border:2.5px solid var(--nuit);border-radius:18px;padding:1rem;box-shadow:4px 4px 0 var(--nuit);margin:.7rem 0}
.card.empty{text-align:center;color:var(--muted);padding:1.6rem 1rem;border-style:dashed;box-shadow:none}

/* ---------- page défi ---------- */
.mission-detail{border:0;box-shadow:none;padding:0;background:transparent}
.mission-detail .mhead{display:flex;gap:.9rem;align-items:center;margin:.3rem 0 .6rem}
.mission-detail h1{font-size:1.7rem}
.desc{font-size:1.08rem;line-height:1.5}
.donebox{background:var(--brume);border-radius:18px;padding:1rem;text-align:center;font-weight:700;color:var(--nuit)}
.preview{display:block;max-width:100%;border-radius:14px;margin:.7rem auto 0;border:3px solid #fff;box-shadow:0 6px 0 -2px rgba(14,42,71,.15)}
.options{display:flex;flex-direction:column;gap:.55rem;margin:.6rem 0}
.opt{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;border:2.5px solid var(--nuit);border-radius:14px;font:600 1rem var(--body) !important;margin:0 !important;cursor:pointer;background:#fff;color:var(--nuit) !important;box-shadow:3px 3px 0 var(--nuit)}
.opt input{width:1.25rem;height:1.25rem;margin:0;accent-color:var(--hibiscus)}
.opt:has(input:checked){background:var(--mangue)}
.filebtn{display:block;border:2.5px dashed var(--nuit);border-radius:16px;padding:1.2rem;text-align:center;cursor:pointer;margin:.8rem 0 !important;background:var(--sable);font:700 1rem var(--display)}
.filebtn input{position:absolute;opacity:0;width:0;height:0}
details summary{cursor:pointer;list-style:none} details summary::-webkit-details-marker{display:none}

/* ---------- classement ---------- */
.rank{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.45rem}
.rank li{display:flex;align-items:center;gap:.7rem;padding:.65rem .5rem;border-bottom:2px dotted var(--line)}
.rank.big li{padding:.9rem .6rem}
.rank li.mine{background:var(--sable);border-radius:14px;border-bottom-color:transparent}
.rank strong{font:700 1.35rem var(--display);color:var(--nuit)}
.pos{width:2rem;height:2rem;border-radius:50%;background:var(--nuit);color:#fff;font:700 1rem var(--display);display:flex;align-items:center;justify-content:center;flex:none}
.rank li:nth-child(1) .pos{background:var(--mangue);color:var(--nuit)} .rank li:nth-child(2) .pos{background:#D9DEE6;color:var(--nuit)} .rank li:nth-child(3) .pos{background:#E8B089;color:var(--nuit)}
.dot{width:.8rem;height:.8rem;border-radius:50%;flex:none;display:inline-block}
.tag{font:700 .72rem var(--display);background:var(--lagon);color:#fff;border-radius:999px;padding:.2em .65em;display:inline-block;transform:rotate(-3deg)}
.tag.off{background:var(--line);color:var(--muted);transform:none} .tag.on{background:var(--vert)}

/* ---------- équipes ---------- */
.teamlist{display:flex;flex-direction:column;gap:.5rem}
.teamrow{display:flex;align-items:center;gap:.7rem;background:#fff;border:2.5px solid var(--nuit);border-radius:16px;padding:.75rem .9rem;margin:0;box-shadow:3px 3px 0 var(--nuit)}
.teamrow.mine{background:var(--sable)}

/* ---------- mur : polaroids ---------- */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;padding:.3rem .2rem}
.thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block;border:4px solid #fff;box-shadow:0 5px 0 -2px rgba(14,42,71,.18);transform:rotate(-3deg)}
.thumb:nth-child(2n) img{transform:rotate(2deg)} .thumb:nth-child(3n) img{transform:rotate(-1deg)}
.wallgrid{display:flex;flex-direction:column;gap:1.3rem;padding:.6rem .3rem}
.post{margin:0;background:#fff;padding:.7rem .7rem 1rem;box-shadow:0 8px 0 -3px rgba(14,42,71,.18),0 0 0 1px var(--line);transform:rotate(-1.5deg)}
.post:nth-child(2n){transform:rotate(1.5deg)}
.post img{width:100%;display:block;max-height:70vh;object-fit:cover}
.post figcaption{padding:.7rem .2rem 0;font-family:var(--body)}
.post figcaption strong{font:700 1.05rem var(--display)}

/* ---------- historique ---------- */
.hist{list-style:none;padding:0;margin:0}
.hist li{display:flex;align-items:center;gap:.7rem;padding:.6rem .2rem;border-bottom:2px dotted var(--line)}
.hist li.status-rejected{opacity:.55} .hist li.status-pending strong{color:var(--muted)}
.hist strong{font:700 1.1rem var(--display)}

/* ---------- barre d'onglets flottante ---------- */
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(.8rem + env(safe-area-inset-bottom));width:min(92%,480px);display:flex;background:var(--nuit);border-radius:999px;padding:.45rem .4rem;box-shadow:0 10px 24px -8px rgba(14,42,71,.45);z-index:10}
.tabbar a{flex:1;text-align:center;text-decoration:none;color:#A9B8CC;font:600 .68rem var(--display);display:flex;flex-direction:column;align-items:center;gap:.05rem;padding:.3rem 0;border-radius:999px}
.tabbar a span{font-size:1.35rem;line-height:1.1}
.tabbar a.on{color:var(--nuit);background:var(--mangue)}

/* ---------- pied de page marques ---------- */
.foot{max-width:640px;margin:1.6rem auto 0;padding:0 1.1rem;display:flex;align-items:center;justify-content:center;gap:.9rem;color:var(--muted);font-size:.8rem}
.foot img{height:22px;width:auto;opacity:.85}

/* ---------- admin ---------- */
.rowhead{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}
.actions{display:flex;gap:.5rem;flex-wrap:wrap}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.9rem}
.chcard{text-decoration:none;color:inherit;display:block}
.kpis{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:.5rem;font-size:.9rem} .kpis .warn{color:var(--hibiscus);font-weight:700}
.invite{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap;background:var(--mangue)}
.invite .code{font:700 2.4rem/1 var(--display);letter-spacing:.12em;color:var(--nuit)}
.addrow{display:flex;gap:.4rem;flex-wrap:wrap;margin:.3rem 0 .6rem}
.tbl{width:100%;border-collapse:collapse;background:#fff;border:2px solid var(--nuit);border-radius:14px;overflow:hidden;font-size:.92rem}
.tbl th,.tbl td{padding:.55rem .7rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl th{font:700 .85rem var(--display);color:var(--nuit);background:var(--brume)}
.tbl tr:last-child td{border-bottom:0} .tbl tr.inactive{opacity:.55}
.inline{display:inline-flex;gap:.4rem;align-items:center;margin:0}
.inline select{padding:.3rem .4rem;font:inherit;border-radius:8px;border:2px solid var(--line);background:#fff;color:var(--ink)}
.bare{border:0;border-bottom:2px dashed var(--line);background:transparent;font:inherit;color:var(--ink);padding:.15rem .2rem;width:11rem}
.modgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.9rem}
.modcard{padding:0;overflow:hidden}
.modcard img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}
.modcard .body{padding:.8rem .9rem;display:flex;flex-direction:column;gap:.3rem}
.modactions{display:flex;gap:.4rem;align-items:center;margin-top:.4rem;flex-wrap:wrap}
.weekgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.4rem .8rem}
.weekgrid label.cur{color:var(--hibiscus)}
details.curweek{border-color:var(--lagon);box-shadow:4px 4px 0 var(--lagon)}
.nowrap{white-space:nowrap}
@media (max-width:600px){.tbl{display:block;overflow-x:auto}}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}

/* équipes : membres */
.teamd{width:100%} .teamd summary{display:flex;align-items:center;gap:.7rem;cursor:pointer}
.mates{display:flex;flex-wrap:wrap;gap:.35rem;padding:.6rem 0 .2rem 2.7rem}
.mate{font:600 .85rem var(--body);background:#fff;border:2px solid var(--line);border-radius:999px;padding:.15em .7em}
.mate.me{border-color:var(--nuit);background:var(--mangue)}
.mates-line{margin:.2rem 0 .4rem;color:var(--nuit-2);font-size:.95rem;text-align:center}
.mates-line strong{font-family:var(--display)}

.namebox{background:var(--sable);font-size:.95rem}
.namerow{display:flex;gap:.5rem;margin-top:.6rem;align-items:stretch}
.namerow input{margin:0 !important;flex:1}
.namerow .btn{flex:none}

.modthumb img{width:64px;height:64px;object-fit:cover;border-radius:12px;border:2px solid var(--nuit);display:block}
.hist li{align-items:flex-start}

.prize{text-align:center;background:var(--sable);border:3px solid var(--nuit);border-radius:22px;padding:.9rem 1rem;margin:.4rem 0 1rem;box-shadow:5px 5px 0 var(--mangue)}
.prize-k{font:700 1rem var(--display);color:var(--nuit)}
.prize img{display:block;margin:.6rem auto 0;max-height:70px;max-width:220px;object-fit:contain}

.social{margin-top:.6rem;border-top:2px dashed var(--line);padding-top:.5rem}
.like{background:#fff;border:2px solid var(--nuit);border-radius:999px;padding:.25rem .8rem;font:700 .95rem var(--display);color:var(--nuit);cursor:pointer;box-shadow:2px 2px 0 var(--nuit)}
.like.on{background:var(--hibiscus);color:#fff;border-color:var(--hibiscus);box-shadow:2px 2px 0 var(--nuit)}
.comments{list-style:none;margin:.6rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.comments li{background:var(--sable);border-radius:14px;padding:.4rem .7rem;font-size:.95rem;line-height:1.3}
.comments li strong{font-family:var(--display);color:var(--lagon)}
.comments li form{float:right}
.commentrow{display:flex;gap:.4rem;margin-top:.6rem}
.commentrow input{flex:1;min-width:0;border:2px solid var(--nuit);border-radius:999px;padding:.45rem .9rem;font:inherit}

.pick2{display:flex;flex-direction:column;gap:.5rem;margin:.4rem 0 .8rem}
.pick2 .filebtn{margin:0 !important;padding:.9rem}
.filebtn.alt{background:#fff;border-style:solid}
