[hidden]{display:none!important}
*,*::before,*::after{box-sizing:border-box}
body{margin:0}
img{max-width:100%}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/barlow-condensed-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/barlow-condensed-latin-700-normal.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/barlow-condensed-latin-800-normal.woff2) format('woff2')}
@font-face{font-family:'Figtree';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/figtree-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Figtree';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/figtree-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Figtree';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/figtree-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Figtree';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/figtree-latin-700-normal.woff2) format('woff2')}

/* Layout : appli mobile — en-tête marin, contenu par onglet, barre d'onglets en bas ; sur grand écran, carte + liste côte à côte */
:root{
  --ink:#10284a; --ink-2:#3c5374; --muted:#6b7d95;
  --bg:#f3f6f8; --surface:#ffffff; --line:#dbe3ea;
  --sea:#b9d6e2; --sea-deep:#8fbccd; --land:#eef2ee; --road:#e2e6e1;
  --accent:#f2b705; --accent-ink:#1d1600; --brand:#14457d;
  --good:#1f8a5b; --live:#d4452b;
  --f-display:"Barlow Condensed","Arial Narrow",Arial,sans-serif;
  --f-body:"Figtree",system-ui,-apple-system,"Segoe UI",sans-serif;
  --r:14px; --ml:inline; --md:none;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --ink:#e6edf5; --ink-2:#b4c2d4; --muted:#8597ad;
  --bg:#0c1726; --surface:#132238; --line:#22364f;
  --sea:#123d55; --sea-deep:#1a5372; --land:#1a2a3d; --road:#22344a;
  --accent:#f5c22b; --accent-ink:#1d1600; --brand:#6aa3e0;
  --good:#4cc08a; --live:#f0735b; --ml:none; --md:inline; color-scheme:dark}}
:root[data-theme="dark"]{
  --ink:#e6edf5; --ink-2:#b4c2d4; --muted:#8597ad;
  --bg:#0c1726; --surface:#132238; --line:#22364f;
  --sea:#123d55; --sea-deep:#1a5372; --land:#1a2a3d; --road:#22344a;
  --accent:#f5c22b; --accent-ink:#1d1600; --brand:#6aa3e0;
  --good:#4cc08a; --live:#f0735b; --ml:none; --md:inline; color-scheme:dark}

*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.45;margin:0}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
a{color:var(--brand)}

.app{min-height:100%;display:flex;flex-direction:column;padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}

/* En-tête */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:#10284a}
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:#10284a;color:#fff;
  padding-block:12px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.top-in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:12px}
.logo{width:38px;height:38px;flex:none}
.brand-name{font-family:var(--f-display);font-weight:800;font-size:24px;letter-spacing:.01em;line-height:1;text-transform:uppercase}
.brand-sub{font-size:12px;opacity:.75;letter-spacing:.04em}
.proto{margin-left:auto;font-size:11px;letter-spacing:.06em;text-transform:uppercase;background:rgba(255,255,255,.12);padding:4px 8px;border-radius:99px;white-space:nowrap}
.top-nav{display:none;gap:4px;margin-left:24px}
.top-nav button{background:none;border:0;color:#fff;opacity:.7;font-family:var(--f-display);font-weight:600;font-size:18px;letter-spacing:.03em;text-transform:uppercase;padding:6px 12px;border-radius:8px;cursor:pointer}
.top-nav button[aria-current="true"]{opacity:1;background:rgba(255,255,255,.12);box-shadow:inset 0 -3px 0 var(--accent)}

main{flex:1;width:100%;max-width:1180px;margin:0 auto;padding-block:16px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.view-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
h1{font-family:var(--f-display);font-weight:800;font-size:30px;line-height:1;margin:0;text-transform:uppercase;letter-spacing:.01em;text-wrap:balance}
.count{color:var(--muted);font-size:13px}

/* Puces de filtre */
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px}
.chip .dot{width:9px;height:9px;border-radius:50%}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* Carte */
.map-layout{display:grid;gap:16px}
@media (min-width:900px){.map-layout{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}}
.map-wrap{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:var(--sea);touch-action:none}
.map-wrap svg{display:block;width:100%;height:auto;aspect-ratio:5/3.4;max-width:100%;cursor:grab;user-select:none}
.map-wrap svg.dragging{cursor:grabbing}
.map-tools{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px}
.mbtn{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:var(--surface);font-size:20px;font-weight:700;cursor:pointer;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.locate{position:absolute;left:10px;top:10px;border:0;background:var(--accent);color:var(--accent-ink);font-weight:700;font-size:13px;padding:9px 12px;border-radius:10px;cursor:pointer;display:flex;gap:6px;align-items:center;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.map-hint{position:absolute;left:10px;bottom:10px;right:10px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:13px;box-shadow:0 2px 8px rgba(0,0,0,.15)}
.water{fill:var(--sea)} .water-deep{fill:var(--sea-deep)}
.land{fill:var(--land)} .road{stroke:var(--road);fill:none;stroke-linecap:round}
.river{stroke:var(--sea);fill:none;stroke-linecap:round}
.qlabel{fill:var(--muted);font:600 13px var(--f-body);letter-spacing:.08em;text-transform:uppercase;pointer-events:none}
.sealabel{fill:var(--ink-2);opacity:.55;font:italic 600 18px var(--f-body);letter-spacing:.2em;pointer-events:none}
.scale text{fill:var(--ink-2);font:600 11px var(--f-body)}
.scale line{stroke:var(--ink-2);stroke-width:2}
.marker{cursor:pointer}
.marker circle.pin{stroke:var(--surface);stroke-width:3}
.marker text{fill:#fff;font:800 13px var(--f-display);pointer-events:none}
.marker.sel circle.halo{fill:var(--accent);opacity:.45}
.me circle{fill:var(--brand)} .me .ring{fill:var(--brand);opacity:.2}

.list{display:flex;flex-direction:column;gap:10px}
.asso{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;text-align:left;width:100%}
.asso[aria-current="true"]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.badge{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:#fff;font-family:var(--f-display);font-weight:800;font-size:17px}
.asso h3{margin:0;font-size:15px;font-weight:700;line-height:1.25}
.meta{color:var(--muted);font-size:13px}
.dist{font-family:var(--f-display);font-weight:700;font-size:17px;font-variant-numeric:tabular-nums;color:var(--brand);white-space:nowrap}

.detail{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.detail h2{margin:0;font-family:var(--f-display);font-size:26px;font-weight:800;line-height:1.05;text-transform:uppercase;text-wrap:balance}
.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;font-size:14px}
.kv dt{color:var(--muted)} .kv dd{margin:0}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px;font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;color:var(--ink);display:inline-flex;gap:6px;align-items:center}
.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.mini-ev{border-top:1px solid var(--line);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.mini-ev button{background:none;border:0;padding:0;text-align:left;cursor:pointer;color:var(--brand);font-weight:600}
.label{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:700}

/* Actualités */
.feed{display:grid;gap:14px;max-width:760px}
.post{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:8px}
.post-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tag{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:6px}
.tag.res{background:color-mix(in srgb,var(--good) 16%,transparent);color:var(--good)}
.tag.ann{background:color-mix(in srgb,var(--accent) 28%,transparent);color:var(--ink)}
.tag.off{background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand)}
.post h3{margin:0;font-size:18px;line-height:1.25;text-wrap:balance}
.post p{margin:0;color:var(--ink-2);max-width:65ch}
.score{display:flex;align-items:center;gap:14px;background:var(--bg);border-radius:10px;padding:10px 14px;flex-wrap:wrap}
.score .team{font-weight:600;font-size:14px;flex:1;min-width:0}
.score .team.r{text-align:right}
.score .num{font-family:var(--f-display);font-weight:800;font-size:30px;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.podium{font-family:var(--f-display);font-weight:800;font-size:22px;color:var(--brand)}
.post-foot{display:flex;gap:12px;align-items:center;font-size:13px;color:var(--muted);flex-wrap:wrap}
.link-btn{background:none;border:0;padding:0;color:var(--brand);font-weight:600;cursor:pointer;font-size:13px}

/* Agenda */
.search{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px;font:inherit;color:var(--ink);margin-bottom:10px}
.agenda{display:flex;flex-direction:column;gap:22px;max-width:860px}
.month{font-family:var(--f-display);font-weight:800;font-size:20px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;border-bottom:2px solid var(--line);padding-bottom:4px}
.ev{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:10px}
.date{border-radius:10px;background:var(--ink);color:var(--bg);text-align:center;padding:6px 0;align-self:start}
.date .d{font-family:var(--f-display);font-weight:800;font-size:30px;line-height:1}
.date .m{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:700}
.date .w{font-size:11px;opacity:.75}
.ev h3{margin:0 0 4px;font-size:17px;line-height:1.25;text-wrap:balance}
.ev p{margin:6px 0 10px;color:var(--ink-2);max-width:65ch}
.ev .row{display:flex;gap:6px 14px;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}
.empty{padding:28px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:var(--r)}

/* Barre du bas */
nav.bottom{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--surface);border-top:1px solid var(--line);display:flex;
  padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
nav.bottom button{flex:1;border:0;background:none;padding:10px 4px 12px;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
nav.bottom svg{width:24px;height:24px}
nav.bottom button[aria-current="true"]{color:var(--ink)}
nav.bottom button[aria-current="true"] svg{color:var(--brand)}
@media (min-width:900px){nav.bottom{display:none}.app{padding-bottom:0}.top-nav{display:flex}}

.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(86px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);padding:10px 14px;border-radius:10px;font-size:14px;max-width:min(92vw,440px);z-index:20;box-shadow:0 6px 18px rgba(0,0,0,.25)}
@media (prefers-reduced-motion:no-preference){.post,.ev,.asso{transition:box-shadow .15s,border-color .15s}}
/* Espace associations */
.tag.club{background:color-mix(in srgb,var(--ink-2) 14%,transparent);color:var(--ink-2)}
.seg{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:16px;overflow-x:auto;max-width:100%;width:max-content}
.seg button{border:0;background:none;padding:8px 14px;border-radius:9px;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap;color:var(--ink-2);display:flex;gap:6px;align-items:center}
.seg button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.pill-n{font-size:11px;font-weight:700;background:var(--accent);color:var(--accent-ink);border-radius:99px;padding:1px 7px;font-variant-numeric:tabular-nums}
.pill-n:empty{display:none}
.notice{border-radius:12px;padding:12px 14px;margin-bottom:16px;font-size:14px;background:color-mix(in srgb,var(--brand) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);max-width:860px}
.notice.ok{background:color-mix(in srgb,var(--good) 12%,var(--surface));border-color:color-mix(in srgb,var(--good) 40%,transparent)}
.notice.warn{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-color:color-mix(in srgb,var(--accent) 50%,transparent)}
.pub-layout{display:grid;gap:20px}
@media (min-width:900px){.pub-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}.preview{position:sticky;top:calc(80px + env(safe-area-inset-top,0px))}}
form#reqForm{display:flex;flex-direction:column;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{font-family:var(--f-display);font-weight:700;font-size:19px;text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px;padding:0}
.type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tcard{position:relative;display:flex;flex-direction:column;gap:2px;border:1.5px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;background:var(--bg)}
.tcard input{position:absolute;opacity:0;pointer-events:none}
.tcard .tt{font-weight:700;font-size:14px;line-height:1.25}
.tcard .th{font-size:12px;color:var(--muted)}
.tcard:has(input:checked){border-color:var(--ink);background:var(--surface);box-shadow:inset 0 -3px 0 var(--accent)}
.tcard:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 12px}
.field{display:flex;flex-direction:column;gap:5px;grid-column:1/-1;min-width:0}
.field.half{grid-column:auto}
.field label{font-size:13px;font-weight:600;color:var(--ink-2)}
.req{color:var(--live)}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:10px 12px;font:inherit}
.field textarea{resize:vertical;min-height:96px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--live)}
.cnt{font-size:12px;color:var(--muted);align-self:flex-end;font-variant-numeric:tabular-nums}
.err{font-size:13px;color:var(--live);font-weight:600}
.block{border-top:1px solid var(--line);padding-top:16px}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-2);cursor:pointer}
.check input{width:18px;height:18px;margin-top:2px;flex:none;accent-color:var(--brand)}
.form-foot{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn.big{padding:12px 18px;font-size:15px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.preview .label{display:block;margin-bottom:8px}
.preview .post,.preview .ev{margin:0;pointer-events:none}
.preview .ghost{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r);padding:18px;color:var(--ink-2)}
.req-list{display:flex;flex-direction:column;gap:12px;max-width:860px}
.reqc{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.reqc-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.reqc h3{margin:0;font-size:17px;line-height:1.25}
.st{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:99px;margin-left:auto}
.st.attente{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink)}
.st.publiee{background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good)}
.st.refusee{background:color-mix(in srgb,var(--live) 16%,transparent);color:var(--live)}
.st.traitee{background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand)}
.who{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;font-size:14px;background:var(--bg);border-radius:10px;padding:10px 12px}
.who dt{color:var(--muted)} .who dd{margin:0;user-select:all;overflow-wrap:anywhere}
.msg{white-space:pre-wrap;margin:0;color:var(--ink-2);max-width:65ch}
.note{font-size:14px;border-left:3px solid var(--line);padding-left:10px;color:var(--ink-2)}
.inline-refuse{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.inline-refuse input{flex:1;min-width:180px;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:8px 10px;font:inherit}
.btn.danger{background:var(--live);border-color:var(--live);color:#fff}
.btn.ok{background:var(--good);border-color:var(--good);color:#fff}
@media (max-width:520px){.type-grid{grid-template-columns:minmax(0,1fr)}.fields{grid-template-columns:minmax(0,1fr)}.field.half{grid-column:1/-1}nav.bottom button{font-size:11px}}
/* Espace associations */
.tag.club{background:color-mix(in srgb,var(--ink-2) 14%,transparent);color:var(--ink-2)}
.seg{display:flex;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:4px;margin-bottom:16px;overflow-x:auto;max-width:100%;width:max-content}
.seg button{border:0;background:none;padding:8px 14px;border-radius:9px;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap;color:var(--ink-2);display:flex;gap:6px;align-items:center}
.seg button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.pill-n{font-size:11px;font-weight:700;background:var(--accent);color:var(--accent-ink);border-radius:99px;padding:1px 7px;font-variant-numeric:tabular-nums}
.pill-n:empty{display:none}
.notice{border-radius:12px;padding:12px 14px;margin-bottom:16px;font-size:14px;background:color-mix(in srgb,var(--brand) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--brand) 30%,transparent);max-width:860px}
.notice.ok{background:color-mix(in srgb,var(--good) 12%,var(--surface));border-color:color-mix(in srgb,var(--good) 40%,transparent)}
.notice.warn{background:color-mix(in srgb,var(--accent) 18%,var(--surface));border-color:color-mix(in srgb,var(--accent) 50%,transparent)}
.pub-layout{display:grid;gap:20px}
@media (min-width:900px){.pub-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:start}.preview{position:sticky;top:calc(80px + env(safe-area-inset-top,0px))}}
form#reqForm{display:flex;flex-direction:column;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{font-family:var(--f-display);font-weight:700;font-size:19px;text-transform:uppercase;letter-spacing:.03em;margin-bottom:10px;padding:0}
.type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.tcard{position:relative;display:flex;flex-direction:column;gap:2px;border:1.5px solid var(--line);border-radius:12px;padding:12px;cursor:pointer;background:var(--bg)}
.tcard input{position:absolute;opacity:0;pointer-events:none}
.tcard .tt{font-weight:700;font-size:14px;line-height:1.25}
.tcard .th{font-size:12px;color:var(--muted)}
.tcard:has(input:checked){border-color:var(--ink);background:var(--surface);box-shadow:inset 0 -3px 0 var(--accent)}
.tcard:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 12px}
.field{display:flex;flex-direction:column;gap:5px;grid-column:1/-1;min-width:0}
.field.half{grid-column:auto}
.field label{font-size:13px;font-weight:600;color:var(--ink-2)}
.req{color:var(--live)}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:10px 12px;font:inherit}
.field textarea{resize:vertical;min-height:96px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 25%,transparent)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:var(--live)}
.cnt{font-size:12px;color:var(--muted);align-self:flex-end;font-variant-numeric:tabular-nums}
.err{font-size:13px;color:var(--live);font-weight:600}
.block{border-top:1px solid var(--line);padding-top:16px}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-2);cursor:pointer}
.check input{width:18px;height:18px;margin-top:2px;flex:none;accent-color:var(--brand)}
.form-foot{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn.big{padding:12px 18px;font-size:15px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.preview .label{display:block;margin-bottom:8px}
.preview .post,.preview .ev{margin:0;pointer-events:none}
.preview .ghost{background:var(--surface);border:1px dashed var(--line);border-radius:var(--r);padding:18px;color:var(--ink-2)}
.req-list{display:flex;flex-direction:column;gap:12px;max-width:860px}
.reqc{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.reqc-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.reqc h3{margin:0;font-size:17px;line-height:1.25}
.st{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:99px;margin-left:auto}
.st.attente{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink)}
.st.publiee{background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good)}
.st.refusee{background:color-mix(in srgb,var(--live) 16%,transparent);color:var(--live)}
.st.traitee{background:color-mix(in srgb,var(--brand) 16%,transparent);color:var(--brand)}
.who{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 12px;font-size:14px;background:var(--bg);border-radius:10px;padding:10px 12px}
.who dt{color:var(--muted)} .who dd{margin:0;user-select:all;overflow-wrap:anywhere}
.msg{white-space:pre-wrap;margin:0;color:var(--ink-2);max-width:65ch}
.note{font-size:14px;border-left:3px solid var(--line);padding-left:10px;color:var(--ink-2)}
.inline-refuse{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.inline-refuse input{flex:1;min-width:180px;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:8px 10px;font:inherit}
.btn.danger{background:var(--live);border-color:var(--live);color:#fff}
.btn.ok{background:var(--good);border-color:var(--good);color:#fff}
@media (max-width:520px){.type-grid{grid-template-columns:minmax(0,1fr)}.fields{grid-template-columns:minmax(0,1fr)}.field.half{grid-column:1/-1}nav.bottom button{font-size:11px}}

.qlabel{fill:var(--ink-2);font:700 10px var(--f-body);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;paint-order:stroke;stroke:var(--land);stroke-width:3px;stroke-linejoin:round;opacity:.85}
.sealabel{font-size:13px}
.tcard.wide{grid-column:1/-1}
.locate{white-space:nowrap}
@media (max-width:560px){.proto{display:none}}
.disc-list{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}
details.disc{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--bg)}
details.disc summary{cursor:pointer;font-weight:600;font-size:14px}
details.disc ul{margin:6px 0 0;padding-left:18px;font-size:13px;color:var(--ink-2)}
details.disc p{margin:6px 0 0}
.src{font-size:12px;color:var(--muted);margin-top:16px;max-width:860px}

/* ---- Application déployée ---- */
html{-webkit-text-size-adjust:100%}
:root{padding-top:env(safe-area-inset-top,0px)}
.app{min-height:100vh}
#leaflet{height:min(62vh,560px);width:100%;background:var(--sea);z-index:0}
@media (max-width:899px){#leaflet{height:52vh}}
.map-wrap{touch-action:auto}
.map-wrap .locate,.map-wrap .map-hint{z-index:500}
.leaflet-container{font-family:var(--f-body)}
.leaflet-control-attribution{font-size:10px}
.pin-ic{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;color:#fff;font:800 12px var(--f-display);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35)}
.pin-ic.sel{outline:4px solid color-mix(in srgb,var(--accent) 70%,transparent);transform:scale(1.25)}
.me-ic{width:16px;height:16px;border-radius:50%;background:#1d6fd8;border:3px solid #fff;box-shadow:0 0 0 8px rgba(29,111,216,.2)}
:root[data-theme="dark"] .leaflet-tile-pane{filter:invert(1) hue-rotate(185deg) brightness(.85) contrast(.9)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .leaflet-tile-pane{filter:invert(1) hue-rotate(185deg) brightness(.85) contrast(.9)}}
footer.site{border-top:1px solid var(--line);margin-top:24px;padding-block:20px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));color:var(--muted);font-size:13px}
footer.site .in{max-width:1180px;margin:0 auto;display:flex;gap:8px 20px;flex-wrap:wrap}
footer.site a{color:var(--ink-2)}
.hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}
.install{border:0;background:var(--accent);color:var(--accent-ink);font-weight:700;border-radius:99px;padding:6px 12px;cursor:pointer;margin-left:auto;font-size:13px}
.offline{background:var(--accent);color:var(--accent-ink);text-align:center;font-size:13px;font-weight:600;padding:6px}
